pax_global_header00006660000000000000000000000064124572247350014525gustar00rootroot0000000000000052 comment=7cda6e094cc5d45380fe4190e9c8cf333e496373 fg-fgrun/000077500000000000000000000000001245722473500126045ustar00rootroot00000000000000fg-fgrun/ABOUT-NLS000066400000000000000000002333401245722473500140400ustar00rootroot000000000000001 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. 1.1 Quick configuration advice ============================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias, message inheritance, automatic charset conversion or plural form handling) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need _not_ provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. 1.2 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. If not, the included GNU `gettext' library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is _not_ required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --disable-nls will, respectively, bypass any pre-existing `gettext' to use the internationalizing routines provided within this package, or else, _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might not be desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. The configuration process will not test for the `catgets' function and therefore it will not be used. The reason is that even an emulation of `gettext' on top of `catgets' could not provide all the extensions of the GNU `gettext' library. Internationalized packages usually have many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.3 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. 1.4 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `translation@iro.umontreal.ca' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.5 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of October 2006. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB eo +----------------------------------------------------+ GNUnet | [] | a2ps | [] [] [] [] [] | aegis | () | ant-phone | () | anubis | [] | ap-utils | | aspell | [] [] [] [] [] | bash | [] [] [] | batchelor | [] | bfd | | bibshelf | [] | binutils | [] | bison | [] [] | bison-runtime | | bluez-pin | [] [] [] [] [] | cflow | [] | clisp | [] [] | console-tools | [] [] | coreutils | [] [] [] | cpio | | cpplib | [] [] [] | cryptonit | [] | darkstat | [] () [] | dialog | [] [] [] [] [] [] | diffutils | [] [] [] [] [] [] | doodle | [] | e2fsprogs | [] [] | enscript | [] [] [] [] | error | [] [] [] [] | fetchmail | [] [] () [] | fileutils | [] [] | findutils | [] [] [] | flex | [] [] [] | fslint | [] | gas | | gawk | [] [] [] | gbiff | [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] | gimp-print | [] [] [] [] | gip | [] | gliv | [] | glunarclock | [] | gmult | [] [] | gnubiff | () | gnucash | () () [] | gnucash-glossary | [] () | gnuedu | | gnulib | [] [] [] [] [] [] | gnunet-gtk | | gnutls | | gpe-aerial | [] [] | gpe-beam | [] [] | gpe-calendar | | gpe-clock | [] [] | gpe-conf | [] [] | gpe-contacts | | gpe-edit | [] | gpe-filemanager | | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] | gpe-package | | gpe-sketchbook | [] [] | gpe-su | [] [] | gpe-taskmanager | [] [] | gpe-timesheet | [] | gpe-today | [] [] | gpe-todo | | gphoto2 | [] [] [] [] | gprof | [] [] | gpsdrive | () () | gramadoir | [] [] | grep | [] [] [] [] [] [] | gretl | | gsasl | | gss | | gst-plugins | [] [] [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] [] | gtick | () | gtkam | [] [] [] | gtkorphan | [] [] | gtkspell | [] [] [] [] | gutenprint | [] | hello | [] [] [] [] [] | id-utils | [] [] | impost | | indent | [] [] [] | iso_3166 | [] [] | iso_3166_2 | | iso_4217 | [] | iso_639 | [] [] | jpilot | [] | jtag | | jwhois | | kbd | [] [] [] [] | keytouch | | keytouch-editor | | keytouch-keyboa... | | latrine | () | ld | [] | leafpad | [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] | libextractor | [] | libgpewidget | [] [] [] | libgpg-error | [] | libgphoto2 | [] [] | libgphoto2_port | [] [] | libgsasl | | libiconv | [] [] | libidn | [] [] | lifelines | [] () | lilypond | [] | lingoteach | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | [] | make | [] [] | man-db | [] () [] [] | minicom | [] [] [] | mysecretdiary | [] [] | nano | [] [] [] | nano_1_0 | [] () [] [] | opcodes | [] | parted | | pilot-qof | [] | psmisc | [] | pwdutils | | python | | qof | | radius | [] | recode | [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] [] [] [] [] [] | sed | [] [] [] | sh-utils | [] [] | shared-mime-info | [] [] [] [] | sharutils | [] [] [] [] [] [] | shishi | | silky | | skencil | [] () | sketch | [] () | solfege | | soundtracker | [] [] | sp | [] | stardict | [] | system-tools-ba... | [] [] [] [] [] [] [] [] [] | tar | [] | texinfo | [] [] [] | textutils | [] [] [] | tin | () () | tp-robot | [] | tuxpaint | [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] [] | vorbis-tools | [] [] [] [] | wastesedge | () | wdiff | [] [] [] [] | wget | [] [] | xchat | [] [] [] [] [] [] | xkeyboard-config | | xpad | [] [] | +----------------------------------------------------+ af am ar az be bg bs ca cs cy da de el en en_GB eo 10 0 1 2 9 22 1 42 41 2 60 95 16 1 17 16 es et eu fa fi fr ga gl gu he hi hr hu id is it +--------------------------------------------------+ GNUnet | | a2ps | [] [] [] () | aegis | | ant-phone | [] | anubis | [] | ap-utils | [] [] | aspell | [] [] [] | bash | [] [] [] | batchelor | [] [] | bfd | [] | bibshelf | [] [] [] | binutils | [] [] [] | bison | [] [] [] [] [] [] | bison-runtime | [] [] [] [] [] | bluez-pin | [] [] [] [] [] | cflow | [] | clisp | [] [] | console-tools | | coreutils | [] [] [] [] [] [] | cpio | [] [] [] | cpplib | [] [] | cryptonit | [] | darkstat | [] () [] [] [] | dialog | [] [] [] [] [] [] [] [] | diffutils | [] [] [] [] [] [] [] [] [] | doodle | [] [] | e2fsprogs | [] [] [] | enscript | [] [] [] | error | [] [] [] [] [] | fetchmail | [] | fileutils | [] [] [] [] [] [] | findutils | [] [] [] [] | flex | [] [] [] | fslint | [] | gas | [] [] | gawk | [] [] [] [] | gbiff | [] | gcal | [] [] | gcc | [] | gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] | gip | [] [] [] | gliv | () | glunarclock | [] [] [] | gmult | [] [] [] | gnubiff | () () | gnucash | () () () | gnucash-glossary | [] [] | gnuedu | [] | gnulib | [] [] [] [] [] [] [] [] | gnunet-gtk | | gnutls | | gpe-aerial | [] [] | gpe-beam | [] [] | gpe-calendar | | gpe-clock | [] [] [] [] | gpe-conf | [] | gpe-contacts | [] [] | gpe-edit | [] [] [] [] | gpe-filemanager | [] | gpe-go | [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] [] [] [] | gpe-package | [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] | gphoto2 | [] [] [] [] [] | gprof | [] [] [] [] | gpsdrive | () () [] () | gramadoir | [] [] | grep | [] [] [] [] [] [] [] [] [] [] [] [] | gretl | [] [] [] | gsasl | [] [] | gss | [] | gst-plugins | [] [] [] | gst-plugins-base | [] [] | gst-plugins-good | [] [] [] | gstreamer | [] [] [] | gtick | [] | gtkam | [] [] [] [] | gtkorphan | [] [] | gtkspell | [] [] [] [] [] [] | gutenprint | [] | hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] [] | impost | [] [] | indent | [] [] [] [] [] [] [] [] [] [] | iso_3166 | [] [] [] | iso_3166_2 | [] | iso_4217 | [] [] [] [] | iso_639 | [] [] [] [] [] | jpilot | [] [] | jtag | [] | jwhois | [] [] [] [] [] | kbd | [] [] | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | latrine | [] [] [] | ld | [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] | libextractor | [] | libgpewidget | [] [] [] [] [] | libgpg-error | | libgphoto2 | [] [] [] | libgphoto2_port | [] [] | libgsasl | [] [] | libiconv | [] [] | libidn | [] [] | lifelines | () | lilypond | [] | lingoteach | [] [] [] | lynx | [] [] [] | m4 | [] [] [] [] | mailutils | [] [] | make | [] [] [] [] [] [] [] [] | man-db | () | minicom | [] [] [] [] | mysecretdiary | [] [] [] | nano | [] [] [] [] [] [] | nano_1_0 | [] [] [] [] [] | opcodes | [] [] [] [] | parted | [] [] [] [] | pilot-qof | | psmisc | [] [] [] | pwdutils | | python | | qof | [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] | sed | [] [] [] [] [] | sh-utils | [] [] [] [] [] [] [] | shared-mime-info | [] [] [] [] [] [] | sharutils | [] [] [] [] [] [] [] [] | shishi | | silky | [] | skencil | [] [] | sketch | [] [] | solfege | [] | soundtracker | [] [] [] | sp | [] | stardict | [] | system-tools-ba... | [] [] [] [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] | textutils | [] [] [] [] [] | tin | [] () | tp-robot | [] [] [] [] | tuxpaint | [] [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux | [] [] [] [] [] [] [] | vorbis-tools | [] [] | wastesedge | () | wdiff | [] [] [] [] [] [] [] [] | wget | [] [] [] [] [] [] [] [] | xchat | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | xpad | [] [] [] | +--------------------------------------------------+ es et eu fa fi fr ga gl gu he hi hr hu id is it 88 22 14 2 40 115 61 14 1 8 1 6 59 31 0 52 ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no +-------------------------------------------------+ GNUnet | | a2ps | () [] [] () | aegis | () | ant-phone | [] | anubis | [] [] [] | ap-utils | [] | aspell | [] [] | bash | [] | batchelor | [] [] | bfd | | bibshelf | [] | binutils | | bison | [] [] [] | bison-runtime | [] [] [] | bluez-pin | [] [] [] | cflow | | clisp | [] | console-tools | | coreutils | [] | cpio | | cpplib | [] | cryptonit | [] | darkstat | [] [] | dialog | [] [] | diffutils | [] [] [] | doodle | | e2fsprogs | [] | enscript | [] | error | [] | fetchmail | [] [] | fileutils | [] [] | findutils | [] | flex | [] [] | fslint | [] [] | gas | | gawk | [] [] | gbiff | [] | gcal | | gcc | | gettext-examples | [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] | gimp-print | [] [] | gip | [] [] | gliv | [] | glunarclock | [] [] | gmult | [] [] | gnubiff | | gnucash | () () | gnucash-glossary | [] | gnuedu | | gnulib | [] [] [] [] | gnunet-gtk | | gnutls | | gpe-aerial | [] | gpe-beam | [] | gpe-calendar | [] | gpe-clock | [] [] [] | gpe-conf | [] [] | gpe-contacts | [] | gpe-edit | [] [] [] | gpe-filemanager | [] [] | gpe-go | [] [] [] | gpe-login | [] [] [] | gpe-ownerinfo | [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] | gpe-today | [] [] | gpe-todo | [] | gphoto2 | [] [] | gprof | | gpsdrive | () () () | gramadoir | () | grep | [] [] [] [] | gretl | | gsasl | [] | gss | | gst-plugins | [] | gst-plugins-base | | gst-plugins-good | [] | gstreamer | [] | gtick | | gtkam | [] | gtkorphan | [] | gtkspell | [] [] | gutenprint | | hello | [] [] [] [] [] [] | id-utils | [] | impost | | indent | [] [] | iso_3166 | [] | iso_3166_2 | [] | iso_4217 | [] [] [] | iso_639 | [] [] | jpilot | () () () | jtag | | jwhois | [] | kbd | [] | keytouch | [] | keytouch-editor | | keytouch-keyboa... | | latrine | [] | ld | | leafpad | [] [] | libc | [] [] [] [] [] | libexif | | libextractor | | libgpewidget | [] | libgpg-error | | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | [] | libiconv | | libidn | [] [] | lifelines | [] | lilypond | | lingoteach | [] | lynx | [] [] | m4 | [] [] | mailutils | | make | [] [] [] | man-db | () | minicom | [] | mysecretdiary | [] | nano | [] [] [] | nano_1_0 | [] [] [] | opcodes | [] | parted | [] [] | pilot-qof | | psmisc | [] [] [] | pwdutils | | python | | qof | | radius | | recode | [] | rpm | [] [] | screem | [] | scrollkeeper | [] [] [] [] | sed | [] [] | sh-utils | [] [] | shared-mime-info | [] [] [] [] [] | sharutils | [] [] | shishi | | silky | [] | skencil | | sketch | | solfege | | soundtracker | | sp | () | stardict | [] [] | system-tools-ba... | [] [] [] [] | tar | [] [] [] | texinfo | [] [] [] | textutils | [] [] [] | tin | | tp-robot | [] | tuxpaint | [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] | vorbis-tools | [] | wastesedge | [] | wdiff | [] [] | wget | [] [] | xchat | [] [] [] [] | xkeyboard-config | [] | xpad | [] [] [] | +-------------------------------------------------+ ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no 52 24 2 2 1 3 0 2 3 21 0 15 1 97 5 1 nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta +------------------------------------------------------+ GNUnet | | a2ps | () [] [] [] [] [] [] | aegis | () () | ant-phone | [] [] | anubis | [] [] [] | ap-utils | () | aspell | [] [] | bash | [] [] [] | batchelor | [] [] | bfd | | bibshelf | [] | binutils | [] [] | bison | [] [] [] [] [] | bison-runtime | [] [] [] [] | bluez-pin | [] [] [] [] [] [] [] [] [] | cflow | [] | clisp | [] | console-tools | [] | coreutils | [] [] [] [] | cpio | [] [] [] | cpplib | [] | cryptonit | [] [] | darkstat | [] [] [] [] [] [] | dialog | [] [] [] [] [] [] [] [] [] | diffutils | [] [] [] [] [] [] | doodle | [] [] | e2fsprogs | [] [] | enscript | [] [] [] [] [] | error | [] [] [] [] | fetchmail | [] [] [] | fileutils | [] [] [] [] [] | findutils | [] [] [] [] [] [] | flex | [] [] [] [] [] | fslint | [] [] [] [] | gas | | gawk | [] [] [] [] | gbiff | [] | gcal | [] | gcc | [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] [] | gimp-print | [] [] | gip | [] [] [] [] | gliv | [] [] [] [] | glunarclock | [] [] [] [] [] [] | gmult | [] [] [] [] | gnubiff | () | gnucash | () [] | gnucash-glossary | [] [] [] | gnuedu | | gnulib | [] [] [] [] [] | gnunet-gtk | [] | gnutls | [] [] | gpe-aerial | [] [] [] [] [] [] [] | gpe-beam | [] [] [] [] [] [] [] | gpe-calendar | [] | gpe-clock | [] [] [] [] [] [] [] [] | gpe-conf | [] [] [] [] [] [] [] | gpe-contacts | [] [] [] [] [] | gpe-edit | [] [] [] [] [] [] [] [] | gpe-filemanager | [] [] | gpe-go | [] [] [] [] [] [] | gpe-login | [] [] [] [] [] [] [] [] | gpe-ownerinfo | [] [] [] [] [] [] [] [] | gpe-package | [] [] | gpe-sketchbook | [] [] [] [] [] [] [] [] | gpe-su | [] [] [] [] [] [] [] [] | gpe-taskmanager | [] [] [] [] [] [] [] [] | gpe-timesheet | [] [] [] [] [] [] [] [] | gpe-today | [] [] [] [] [] [] [] [] | gpe-todo | [] [] [] [] | gphoto2 | [] [] [] [] [] | gprof | [] [] [] | gpsdrive | [] [] [] | gramadoir | [] [] | grep | [] [] [] [] [] [] [] [] | gretl | [] | gsasl | [] [] [] | gss | [] [] [] | gst-plugins | [] [] [] [] | gst-plugins-base | [] | gst-plugins-good | [] [] [] [] | gstreamer | [] [] [] | gtick | [] | gtkam | [] [] [] [] | gtkorphan | [] | gtkspell | [] [] [] [] [] [] [] [] | gutenprint | [] | hello | [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | impost | [] | indent | [] [] [] [] [] [] | iso_3166 | [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] [] [] [] | iso_639 | [] [] [] [] | jpilot | | jtag | [] | jwhois | [] [] [] [] | kbd | [] [] [] | keytouch | [] | keytouch-editor | [] | keytouch-keyboa... | [] | latrine | [] [] | ld | [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] | libextractor | [] [] | libgpewidget | [] [] [] [] [] [] [] | libgpg-error | [] [] | libgphoto2 | [] | libgphoto2_port | [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] | libidn | [] [] () | lifelines | [] [] | lilypond | | lingoteach | [] | lynx | [] [] [] | m4 | [] [] [] [] [] | mailutils | [] [] [] [] | make | [] [] [] [] | man-db | [] [] | minicom | [] [] [] [] [] | mysecretdiary | [] [] [] [] | nano | [] [] [] | nano_1_0 | [] [] [] [] | opcodes | [] [] | parted | [] | pilot-qof | [] | psmisc | [] [] | pwdutils | [] [] | python | | qof | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] | rpm | [] [] [] [] | screem | | scrollkeeper | [] [] [] [] [] [] [] | sed | [] [] [] [] [] [] [] [] [] | sh-utils | [] [] [] | shared-mime-info | [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] | silky | [] | skencil | [] [] [] | sketch | [] [] [] | solfege | [] | soundtracker | [] [] | sp | | stardict | [] [] [] | system-tools-ba... | [] [] [] [] [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] [] | tin | () | tp-robot | [] | tuxpaint | [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] [] | vorbis-tools | [] [] | wastesedge | | wdiff | [] [] [] [] [] [] | wget | [] [] [] [] | xchat | [] [] [] [] [] [] [] | xkeyboard-config | [] [] | xpad | [] [] [] | +------------------------------------------------------+ nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta 0 2 3 58 30 54 5 73 72 4 40 46 11 50 128 2 tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu +---------------------------------------------------+ GNUnet | [] | 2 a2ps | [] [] [] | 19 aegis | | 0 ant-phone | [] [] | 6 anubis | [] [] [] | 11 ap-utils | () [] | 4 aspell | [] [] [] | 15 bash | [] | 11 batchelor | [] [] | 9 bfd | | 1 bibshelf | [] | 7 binutils | [] [] [] | 9 bison | [] [] [] | 19 bison-runtime | [] [] [] | 15 bluez-pin | [] [] [] [] [] [] | 28 cflow | [] [] | 5 clisp | | 6 console-tools | [] [] | 5 coreutils | [] [] | 16 cpio | [] [] [] | 9 cpplib | [] [] [] [] | 11 cryptonit | | 5 darkstat | [] () () | 15 dialog | [] [] [] [] [] | 30 diffutils | [] [] [] [] | 28 doodle | [] | 6 e2fsprogs | [] [] | 10 enscript | [] [] [] | 16 error | [] [] [] [] | 18 fetchmail | [] [] | 12 fileutils | [] [] [] | 18 findutils | [] [] [] | 17 flex | [] [] | 15 fslint | [] | 9 gas | [] | 3 gawk | [] [] | 15 gbiff | [] | 5 gcal | [] | 5 gcc | [] [] [] | 6 gettext-examples | [] [] [] [] [] [] | 27 gettext-runtime | [] [] [] [] [] [] | 28 gettext-tools | [] [] [] [] [] | 19 gimp-print | [] [] | 12 gip | [] [] | 12 gliv | [] [] | 8 glunarclock | [] [] [] | 15 gmult | [] [] [] [] | 15 gnubiff | [] | 1 gnucash | () | 2 gnucash-glossary | [] [] | 9 gnuedu | [] | 2 gnulib | [] [] [] [] [] | 28 gnunet-gtk | | 1 gnutls | | 2 gpe-aerial | [] [] | 14 gpe-beam | [] [] | 14 gpe-calendar | [] | 3 gpe-clock | [] [] [] [] | 21 gpe-conf | [] [] | 14 gpe-contacts | [] [] | 10 gpe-edit | [] [] [] [] | 20 gpe-filemanager | [] | 6 gpe-go | [] [] | 15 gpe-login | [] [] [] [] [] | 21 gpe-ownerinfo | [] [] [] [] | 21 gpe-package | [] | 6 gpe-sketchbook | [] [] | 16 gpe-su | [] [] [] | 20 gpe-taskmanager | [] [] [] | 20 gpe-timesheet | [] [] [] [] | 18 gpe-today | [] [] [] [] [] | 21 gpe-todo | [] | 7 gphoto2 | [] [] [] [] | 20 gprof | [] [] | 11 gpsdrive | | 4 gramadoir | [] | 7 grep | [] [] [] [] | 34 gretl | | 4 gsasl | [] [] | 8 gss | [] | 5 gst-plugins | [] [] [] | 15 gst-plugins-base | [] [] [] | 9 gst-plugins-good | [] [] [] [] [] | 20 gstreamer | [] [] [] | 17 gtick | [] | 3 gtkam | [] | 13 gtkorphan | [] | 7 gtkspell | [] [] [] [] [] [] | 26 gutenprint | | 3 hello | [] [] [] [] [] | 37 id-utils | [] [] | 14 impost | [] | 4 indent | [] [] [] [] | 25 iso_3166 | [] [] [] [] | 16 iso_3166_2 | | 2 iso_4217 | [] [] | 14 iso_639 | [] | 14 jpilot | [] [] [] [] | 7 jtag | [] | 3 jwhois | [] [] [] | 13 kbd | [] [] | 12 keytouch | [] | 4 keytouch-editor | | 2 keytouch-keyboa... | [] | 3 latrine | [] [] | 8 ld | [] [] [] [] | 8 leafpad | [] [] [] [] | 23 libc | [] [] [] | 23 libexif | [] | 4 libextractor | [] | 5 libgpewidget | [] [] [] | 19 libgpg-error | [] | 4 libgphoto2 | [] | 8 libgphoto2_port | [] [] [] | 11 libgsasl | [] | 8 libiconv | [] | 7 libidn | [] [] | 10 lifelines | | 4 lilypond | | 2 lingoteach | [] | 6 lynx | [] [] [] | 15 m4 | [] [] [] | 18 mailutils | [] | 8 make | [] [] [] | 20 man-db | [] | 6 minicom | [] | 14 mysecretdiary | [] [] | 12 nano | [] [] | 17 nano_1_0 | [] [] [] | 18 opcodes | [] [] | 10 parted | [] [] [] | 10 pilot-qof | [] | 3 psmisc | [] | 10 pwdutils | [] | 3 python | | 0 qof | [] | 4 radius | [] | 6 recode | [] [] [] | 25 rpm | [] [] [] [] | 14 screem | [] | 2 scrollkeeper | [] [] [] [] | 26 sed | [] [] [] | 22 sh-utils | [] | 15 shared-mime-info | [] [] [] [] | 24 sharutils | [] [] [] | 23 shishi | | 1 silky | [] | 4 skencil | [] | 7 sketch | | 6 solfege | | 2 soundtracker | [] [] | 9 sp | [] | 3 stardict | [] [] [] [] | 11 system-tools-ba... | [] [] [] [] [] [] [] | 37 tar | [] [] [] [] | 20 texinfo | [] [] [] | 15 textutils | [] [] [] | 17 tin | | 1 tp-robot | [] [] [] | 10 tuxpaint | [] [] [] | 16 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux | [] [] [] | 20 vorbis-tools | [] [] | 11 wastesedge | | 1 wdiff | [] [] | 22 wget | [] [] [] | 19 xchat | [] [] [] [] | 29 xkeyboard-config | [] [] [] [] | 11 xpad | [] [] [] | 14 +---------------------------------------------------+ 77 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu 170 domains 0 1 1 77 39 0 136 10 1 48 5 54 0 2028 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If October 2006 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. 1.6 Using `gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `translation@iro.umontreal.ca' to make the `.pot' files available to the translation teams. fg-fgrun/AUTHORS000066400000000000000000000002571245722473500136600ustar00rootroot00000000000000Bernie Bright Original author. Frederic Bouvier Project admin, Contributed MSVC project and workspace files. fg-fgrun/CMakeLists.txt000066400000000000000000000217241245722473500153520ustar00rootroot00000000000000cmake_minimum_required(VERSION 2.6.4) include (CheckIncludeFile) include (CheckFunctionExists) project(fgrun) set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}") if(${CMAKE_VERSION} VERSION_GREATER 2.8.4) # use official include provided by latest CMake include(GNUInstallDirs) else(${CMAKE_VERSION} VERSION_GREATER 2.8.4) # backward compatibility: use our own module for older cmake versions include(OldGNUInstallDirs) endif(${CMAKE_VERSION} VERSION_GREATER 2.8.4) set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "add a postfix, usually d on windows") set(CMAKE_RELEASE_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows") set(CMAKE_RELWITHDEBINFO_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows") set(CMAKE_MINSIZEREL_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows") file(READ version versionFile) string(STRIP ${versionFile} FGRUN_VERSION) #packaging SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING") SET(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "FlightGear Launcher") SET(CPACK_PACKAGE_VENDOR "The FlightGear project") SET(CPACK_GENERATOR "TBZ2") SET(CPACK_INSTALL_CMAKE_PROJECTS ${CMAKE_CURRENT_BINARY_DIR};FGRun;ALL;/) # split version string into components, note CMAKE_MATCH_0 is the entire regexp match string(REGEX MATCH "([0-9]+)\\.([0-9]+)" CPACK_PACKAGE_VERSION ${FGRUN_VERSION} ) set(CPACK_PACKAGE_VERSION_MAJOR ${CMAKE_MATCH_1}) set(CPACK_PACKAGE_VERSION_MINOR ${CMAKE_MATCH_2}) message(STATUS "version is ${CPACK_PACKAGE_VERSION_MAJOR} dot ${CPACK_PACKAGE_VERSION_MINOR}") set(CPACK_SOURCE_GENERATOR TBZ2) set(CPACK_SOURCE_PACKAGE_FILE_NAME "fgrun-${FGRUN_VERSION}" CACHE INTERNAL "tarball basename") set(CPACK_SOURCE_IGNORE_FILES "\\\\.svn;Makefile.am;~$;${CPACK_SOURCE_IGNORE_FILES}") message(STATUS "ignoring: ${CPACK_SOURCE_IGNORE_FILES}") include (CPack) option(ENABLE_NLS "Set to ON to build fgrun with NLS support" ON) option(SIMGEAR_SHARED "Set to ON to dynamically link SimGear" OFF) option(SHARED_FLTK "Set to ON to dynamically link FLTK (requires that SimGear also be dynamically linked)" OFF) if (SHARED_FLTK AND NOT SIMGEAR_SHARED) message(FATAL_ERROR "Please do not use SHARED_FLTK without SIMGEAR_SHARED, as it will probably fail to compile") endif (SHARED_FLTK AND NOT SIMGEAR_SHARED) if (MSVC) GET_FILENAME_COMPONENT(PARENT_DIR ${PROJECT_SOURCE_DIR} PATH) if (CMAKE_CL_64) SET(TEST_3RDPARTY_DIR "${PARENT_DIR}/3rdparty.x64") else (CMAKE_CL_64) SET(TEST_3RDPARTY_DIR "${PARENT_DIR}/3rdparty") endif (CMAKE_CL_64) if (EXISTS ${TEST_3RDPARTY_DIR}) set(MSVC_3RDPARTY_ROOT ${PARENT_DIR} CACHE PATH "Location where the third-party dependencies are extracted") else (EXISTS ${TEST_3RDPARTY_DIR}) set(MSVC_3RDPARTY_ROOT NOT_FOUND CACHE PATH "Location where the third-party dependencies are extracted") endif (EXISTS ${TEST_3RDPARTY_DIR}) list(APPEND PLATFORM_LIBS "winmm.lib") else (MSVC) set(MSVC_3RDPARTY_ROOT NOT_FOUND CACHE PATH "Location where the third-party dependencies are extracted") endif (MSVC) if (MSVC AND MSVC_3RDPARTY_ROOT) message(STATUS "3rdparty files located in ${MSVC_3RDPARTY_ROOT}") set( OSG_MSVC "msvc" ) if (${MSVC_VERSION} EQUAL 1700) set( OSG_MSVC ${OSG_MSVC}110 ) elseif (${MSVC_VERSION} EQUAL 1600) set( OSG_MSVC ${OSG_MSVC}100 ) else (${MSVC_VERSION} EQUAL 1700) set( OSG_MSVC ${OSG_MSVC}90 ) endif (${MSVC_VERSION} EQUAL 1700) if (CMAKE_CL_64) set( OSG_MSVC ${OSG_MSVC}-64 ) set( MSVC_3RDPARTY_DIR 3rdParty.x64 ) else (CMAKE_CL_64) set( MSVC_3RDPARTY_DIR 3rdParty ) endif (CMAKE_CL_64) find_path(FLTK_DIR include/FL/Fl.H ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/fltk ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/fltk-1.3 ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR} ) list (APPEND CMAKE_PROGRAM_PATH ${FLTK_DIR}/bin) set (CMAKE_LIBRARY_PATH ${FLTK_DIR}/lib ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/lib ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/OpenScenegraph/lib ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/SimGear/lib ) set (CMAKE_INCLUDE_PATH ${FLTK_DIR}/include ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/include ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/OpenScenegraph/include ${MSVC_3RDPARTY_ROOT}/install/${OSG_MSVC}/SimGear/include) find_path(BOOST_ROOT boost/version.hpp ${MSVC_3RDPARTY_ROOT}/boost ${MSVC_3RDPARTY_ROOT}/boost_1_51_0 ${MSVC_3RDPARTY_ROOT}/boost_1_50_0 ${MSVC_3RDPARTY_ROOT}/boost_1_49_0 ${MSVC_3RDPARTY_ROOT}/boost_1_48_0 ${MSVC_3RDPARTY_ROOT}/boost_1_47_0 ${MSVC_3RDPARTY_ROOT}/boost_1_46_1 ${MSVC_3RDPARTY_ROOT}/boost_1_46_0 ${MSVC_3RDPARTY_ROOT}/boost_1_45_0 ${MSVC_3RDPARTY_ROOT}/boost_1_44_0 ) message(STATUS "BOOST_ROOT is ${BOOST_ROOT}") endif (MSVC AND MSVC_3RDPARTY_ROOT) if(WIN32) if(MSVC) set(MSVC_FLAGS "-DNOMINMAX -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D__CRT_NONSTDC_NO_WARNINGS") if (${MSVC_VERSION} GREATER 1599) set( MSVC_LD_FLAGS "/FORCE:MULTIPLE" ) endif (${MSVC_VERSION} GREATER 1599) endif(MSVC) set(NOMINMAX 1) set( WINSOCK_LIBRARY "ws2_32.lib" ) endif(WIN32) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS} -D_REENTRANT") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS} -D_REENTRANT") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MSVC_LD_FLAGS}") find_package(Boost REQUIRED) find_package(ZLIB REQUIRED) if (SHARED_FLTK) #see http://sources.debian.net/src/fltk1.3/1.3.2-4/README.CMake.txt lines 200-240 find_package(FLTK REQUIRED NO_MODULE) include(${FLTK_USE_FILE}) set(FLTK_LIBRARIES "fltk_forms_SHARED;fltk_gl_SHARED;fltk_images_SHARED;fltk_SHARED") else (SHARED_FLTK) find_package(FLTK REQUIRED) endif (SHARED_FLTK) find_package(OpenSceneGraph 2.8.1 REQUIRED osgText osgDB osgParticle osgUtil osgViewer osgGA) find_package(SimGear ${FGRUN_VERSION} REQUIRED) if (ENABLE_NLS) find_package(Gettext) endif (ENABLE_NLS) if (ENABLE_NLS AND GETTEXT_FOUND) if (MSVC) FIND_LIBRARY(INTL_LIBRARY NAMES intl HINTS PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 PATHS ~/Library/Frameworks /Library/Frameworks /usr/local /usr /opt ) if (NOT INTL_LIBRARY) set( ENABLE_NLS 0 ) endif (NOT INTL_LIBRARY) endif (MSVC) if (ENABLE_NLS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_NLS") endif (ENABLE_NLS) else (ENABLE_NLS AND GETTEXT_FOUND) set( INTL_LIBRARY "" ) endif (ENABLE_NLS AND GETTEXT_FOUND) check_include_file(unistd.h HAVE_UNISTD_H) check_include_file(stdlib.h HAVE_STDLIB_H) check_include_file(sys/wait.h HAVE_SYS_WAIT_H) check_include_file(termios.h HAVE_TERMIOS_H) check_include_file(pty.h HAVE_PTY_H) check_include_file(utmp.h HAVE_UTMP_H) check_include_file(fcntl.h HAVE_FCNTL_H) check_include_file(string.h HAVE_STRING_H) check_function_exists(openpty HAVE_OPENPTY) if (NOT HAVE_OPENPTY) unset( HAVE_OPENPTY CACHE ) set( CMAKE_REQUIRED_LIBRARIES util ) check_function_exists(openpty HAVE_OPENPTY) if (HAVE_OPENPTY) set( OPENPTY_LIBRARY util CACHE INTERNAL "" ) else (HAVE_OPENPTY) set( CMAKE_REQUIRED_LIBRARIES ) endif (HAVE_OPENPTY) endif (NOT HAVE_OPENPTY) check_function_exists(login_tty HAVE_LOGIN_TTY) check_function_exists(_getpty HAVE__GETPTY) if ( NOT ( HAVE_OPENPTY OR HAVE__GETPTY ) ) if (EXISTS /dev/ptmx) set(HAVE_DEV_PTMX) endif (EXISTS /dev/ptmx) if (EXISTS /dev/pts) set(HAVE_DEV_PTS) endif (EXISTS /dev/pts) endif ( NOT ( HAVE_OPENPTY OR HAVE__GETPTY ) ) if ( FLTK_FOUND ) if ( X11_Xinerama_FOUND ) message(STATUS "Found X11_Xinerama...") list(APPEND FLTK_LIBRARIES ${X11_Xinerama_LIB}) endif() if ( X11_Xft_FOUND ) message(STATUS "Found X11_Xft...") list(APPEND FLTK_LIBRARIES ${X11_Xft_LIB}) endif() if ( CMAKE_DL_LIBS ) list(APPEND FLTK_LIBRARIES ${CMAKE_DL_LIBS}) endif() set( CMAKE_REQUIRED_INCLUDES ${FLTK_INCLUDE_DIR} ) set( CMAKE_REQUIRED_LIBRARIES ${FLTK_LIBRARIES} ) message(STATUS "Using FLTK_LIBRARIES for fgrun: ${FLTK_LIBRARIES}") check_cxx_source_runs( "#include int main() { return Fl::version() >= 1.03 ? 0 : -1; } " HAVE_FLTK_1_3) if ( NOT HAVE_FLTK_1_3 ) message( SEND_ERROR "FLTK 1.3 is required" ) endif ( NOT HAVE_FLTK_1_3 ) endif ( FLTK_FOUND ) add_definitions(-DHAVE_CONFIG_H) include_directories(${PROJECT_BINARY_DIR}/src) include_directories(${CMAKE_HOME_DIRECTORY}/src) configure_file ( "${PROJECT_SOURCE_DIR}/src/config_cmake.h.in" "${PROJECT_BINARY_DIR}/src/config.h" ) include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR} ${SIMGEAR_INCLUDE_DIR} ${FLTK_INCLUDE_DIR}) add_subdirectory( src ) add_subdirectory( po ) fg-fgrun/CMakeModules/000077500000000000000000000000001245722473500151155ustar00rootroot00000000000000fg-fgrun/CMakeModules/FindSimGear.cmake000066400000000000000000000202641245722473500202530ustar00rootroot00000000000000# Locate SimGear # This module defines # SIMGEAR_CORE_LIBRARIES, a list of the core static libraries # SIMGEAR_LIBRARIES, a list of all the static libraries (core + scene) # SIMGEAR_FOUND, if false, do not try to link to SimGear # SIMGEAR_INCLUDE_DIR, where to find the headers # # $SIMGEAR_DIR is an environment variable that would # correspond to the ./configure --prefix=$SIMGEAR_DIR # used in building SimGear. # # Created by James Turner. This was influenced by the FindOpenAL.cmake module. #============================================================================= # Copyright 2005-2009 Kitware, Inc. # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. # # This software is distributed WITHOUT ANY WARRANTY; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the License for more information. #============================================================================= # (To distributed this file outside of CMake, substitute the full # License text for the above reference.) include(SelectLibraryConfigurations) macro(find_sg_library libName varName libs) set(libVarName "${varName}_LIBRARY") # do not cache the library check unset(${libVarName}_DEBUG CACHE) unset(${libVarName}_RELEASE CACHE) FIND_LIBRARY(${libVarName}_DEBUG NAMES ${libName}${CMAKE_DEBUG_POSTFIX} HINTS $ENV{SIMGEAR_DIR} PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR} libs64 libs libs/Win32 libs/Win64 PATHS ${ADDITIONAL_LIBRARY_PATHS} ) FIND_LIBRARY(${libVarName}_RELEASE NAMES ${libName}${CMAKE_RELEASE_POSTFIX} HINTS $ENV{SIMGEAR_DIR} PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR} libs64 libs libs/Win32 libs/Win64 PATHS ${ADDITIONAL_LIBRARY_PATHS} ) # message(STATUS "before: Simgear ${${libVarName}_RELEASE} ") # message(STATUS "before: Simgear ${${libVarName}_DEBUG} ") select_library_configurations( ${varName} ) # message(STATUS "after:Simgear ${${libVarName}_RELEASE} ") # message(STATUS "after:Simgear ${${libVarName}_DEBUG} ") set(componentLibRelease ${${libVarName}_RELEASE}) # message(STATUS "Simgear ${libVarName}_RELEASE ${componentLibRelease}") set(componentLibDebug ${${libVarName}_DEBUG}) # message(STATUS "Simgear ${libVarName}_DEBUG ${componentLibDebug}") if (NOT ${libVarName}_DEBUG) if (NOT ${libVarName}_RELEASE) #message(STATUS "found ${componentLib}") list(APPEND ${libs} ${componentLibRelease}) endif() else() list(APPEND ${libs} optimized ${componentLibRelease} debug ${componentLibDebug}) endif() endmacro() FIND_PATH(SIMGEAR_INCLUDE_DIR simgear/math/SGMath.hxx HINTS $ENV{SIMGEAR_DIR} PATH_SUFFIXES include PATHS ${ADDITIONAL_LIBRARY_PATHS} ) # make sure the simgear include directory exists if (NOT SIMGEAR_INCLUDE_DIR) message(FATAL_ERROR "Cannot find SimGear includes! (Forgot 'make install' for SimGear?) " "Compile & INSTALL SimGear before configuring FlightGear. " "When using non-standard locations, use 'SIMGEAR_DIR' to configure the SimGear location.") endif() message(STATUS "SimGear include directory: ${SIMGEAR_INCLUDE_DIR}") # read the simgear version header file, get the version file(READ ${SIMGEAR_INCLUDE_DIR}/simgear/version.h SG_VERSION_FILE) # make sure the simgear/version.h header exists if (NOT SG_VERSION_FILE) message(FATAL_ERROR "Found SimGear, but it does not contain a simgear/version.h include! " "SimGear installation is incomplete or mismatching.") endif() string(STRIP "${SG_VERSION_FILE}" SIMGEAR_DEFINE) string(REPLACE "#define SIMGEAR_VERSION " "" SIMGEAR_VERSION "${SIMGEAR_DEFINE}") if(NOT SIMGEAR_VERSION) message(FATAL_ERROR "Unable to find SimGear or simgear/version.h does not exist/is invalid. " "Make sure you have installed the SimGear ${SimGear_FIND_VERSION} includes. " "When using non-standard locations, please use 'SIMGEAR_DIR' " "to select the SimGear library location to be used.") endif() message(STATUS "found SimGear version: ${SIMGEAR_VERSION} (needed ${SimGear_FIND_VERSION})") if(NOT ${SIMGEAR_VERSION} VERSION_EQUAL ${SimGear_FIND_VERSION} AND NOT ${SIMGEAR_VERSION} VERSION_GREATER ${SimGear_FIND_VERSION} ) message(FATAL_ERROR "You have installed a mismatching SimGear version ${SIMGEAR_VERSION} " "instead of ${SimGear_FIND_VERSION} as required by FlightGear. " "When using multiple SimGear installations, please use 'SIMGEAR_DIR' " "to select the SimGear library location to be used.") endif() # dependent packages find_package(ZLIB REQUIRED) find_package(Threads REQUIRED) if(SIMGEAR_SHARED) message(STATUS "looking for shared Simgear libraries") find_sg_library(SimGearCore SIMGEAR_CORE SIMGEAR_CORE_LIBRARIES) find_sg_library(SimGearScene SIMGEAR_SCENE SIMGEAR_LIBRARIES) list(APPEND SIMGEAR_LIBRARIES ${SIMGEAR_CORE_LIBRARIES}) set(SIMGEAR_CORE_LIBRARY_DEPENDENCIES "") set(SIMGEAR_SCENE_LIBRARY_DEPENDENCIES "") # message(STATUS "core lib ${SIMGEAR_CORE_LIBRARIES}") # message(STATUS "all libs ${SIMGEAR_LIBRARIES}") else(SIMGEAR_SHARED) set(SIMGEAR_LIBRARIES "") # clear value set(SIMGEAR_CORE_LIBRARIES "") # clear value message(STATUS "looking for static SimGear libraries") find_sg_library(SimGearCore SIMGEAR_CORE SIMGEAR_CORE_LIBRARIES) find_sg_library(SimGearScene SIMGEAR_SCENE SIMGEAR_LIBRARIES) # again link order matters - scene libraries depend on core ones list(APPEND SIMGEAR_LIBRARIES ${SIMGEAR_CORE_LIBRARIES}) set(SIMGEAR_CORE_LIBRARY_DEPENDENCIES ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARY} ${LIBSVN_LIBRARIES} ${WINMM_LIBRARY}) set(SIMGEAR_SCENE_LIBRARY_DEPENDENCIES ${OPENAL_LIBRARY}) if(WIN32) list(APPEND SIMGEAR_CORE_LIBRARY_DEPENDENCIES ws2_32.lib) endif(WIN32) if(NOT MSVC) # basic timing routines on non windows systems, may be also cygwin?! check_library_exists(rt clock_gettime "" have_rt) if(have_rt) list(APPEND SIMGEAR_CORE_LIBRARY_DEPENDENCIES rt) endif(have_rt) endif(NOT MSVC) endif(SIMGEAR_SHARED) if((NOT SIMGEAR_CORE_LIBRARIES) OR (NOT SIMGEAR_LIBRARIES)) message(FATAL_ERROR "Cannot find SimGear libraries! (Forgot 'make install' for SimGear?) " "Compile & INSTALL SimGear before configuring FlightGear. " "When using non-standard locations, use 'SIMGEAR_DIR' to configure the SimGear location.") else() message(STATUS "found SimGear libraries") endif() # now we've found SimGear, try test-compiling using its includes include(CheckCXXSourceRuns) SET(CMAKE_REQUIRED_INCLUDES ${SIMGEAR_INCLUDE_DIR}) # clear cache, run a fresh compile test every time unset(SIMGEAR_COMPILE_TEST CACHE) # disable OSG dependencies for test-compiling set(CMAKE_REQUIRED_DEFINITIONS "-DNO_OPENSCENEGRAPH_INTERFACE") check_cxx_source_runs( "#include #include \"simgear/version.h\" #include \"simgear/math/SGMath.hxx\" #define xstr(s) str(s) #define str(s) #s #define MIN_MAJOR ${SimGear_FIND_VERSION_MAJOR} #define MIN_MINOR ${SimGear_FIND_VERSION_MINOR} #define MIN_MICRO ${SimGear_FIND_VERSION_PATCH} int main() { int major, minor, micro; /* printf(%d.%d.%d or greater, , MIN_MAJOR, MIN_MINOR, MIN_MICRO); */ printf(\"found %s ... \", xstr(SIMGEAR_VERSION)); sscanf( xstr(SIMGEAR_VERSION), \"%d.%d.%d\", &major, &minor, µ ); if ( (major < MIN_MAJOR) || ((major == MIN_MAJOR) && (minor < MIN_MINOR)) || ((major == MIN_MAJOR) && (minor == MIN_MINOR) && (micro < MIN_MICRO)) ) { return -1; } return 0; } " SIMGEAR_COMPILE_TEST) if(NOT SIMGEAR_COMPILE_TEST) message(FATAL_ERROR "Oops, you have installed SimGear includes, however test compiling failed. " "Try removing 'CMakeCache.txt' and reconfigure with 'cmake'.") endif() unset(CMAKE_REQUIRED_DEFINITIONS) include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(SimGear DEFAULT_MSG SIMGEAR_LIBRARIES SIMGEAR_CORE_LIBRARIES SIMGEAR_INCLUDE_DIR SIMGEAR_COMPILE_TEST) fg-fgrun/CMakeModules/OldGNUInstallDirs.cmake000066400000000000000000000155571245722473500213750ustar00rootroot00000000000000# - Define GNU standard installation directories # Provides install directory variables as defined for GNU software: # http://www.gnu.org/prep/standards/html_node/Directory-Variables.html # Inclusion of this module defines the following variables: # CMAKE_INSTALL_ - destination for files of a given type # CMAKE_INSTALL_FULL_ - corresponding absolute path # where is one of: # BINDIR - user executables (bin) # SBINDIR - system admin executables (sbin) # LIBEXECDIR - program executables (libexec) # SYSCONFDIR - read-only single-machine data (etc) # SHAREDSTATEDIR - modifiable architecture-independent data (com) # LOCALSTATEDIR - modifiable single-machine data (var) # LIBDIR - object code libraries (lib or lib64) # INCLUDEDIR - C header files (include) # OLDINCLUDEDIR - C header files for non-gcc (/usr/include) # DATAROOTDIR - read-only architecture-independent data root (share) # DATADIR - read-only architecture-independent data (DATAROOTDIR) # INFODIR - info documentation (DATAROOTDIR/info) # LOCALEDIR - locale-dependent data (DATAROOTDIR/locale) # MANDIR - man documentation (DATAROOTDIR/man) # DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME) # Each CMAKE_INSTALL_ value may be passed to the DESTINATION options of # install() commands for the corresponding file type. If the includer does # not define a value the above-shown default will be used and the value will # appear in the cache for editing by the user. # Each CMAKE_INSTALL_FULL_ value contains an absolute path constructed # from the corresponding destination by prepending (if necessary) the value # of CMAKE_INSTALL_PREFIX. #============================================================================= # Copyright 2011 Nikita Krupen'ko # Copyright 2011 Kitware, Inc. # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. # # This software is distributed WITHOUT ANY WARRANTY; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the License for more information. #============================================================================= # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) # Installation directories # if(NOT DEFINED CMAKE_INSTALL_BINDIR) set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)") endif() if(NOT DEFINED CMAKE_INSTALL_SBINDIR) set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)") endif() if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR) set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)") endif() if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR) set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)") endif() if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR) set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)") endif() if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR) set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)") endif() if(NOT DEFINED CMAKE_INSTALL_LIBDIR) set(_LIBDIR_DEFAULT "lib") # Override this default 'lib' with 'lib64' iff: # - we are on Linux system but NOT cross-compiling # - we are NOT on debian # - we are on a 64 bits system # reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf # Note that the future of multi-arch handling may be even # more complicated than that: http://wiki.debian.org/Multiarch if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT CMAKE_CROSSCOMPILING AND NOT EXISTS "/etc/debian_version") if(NOT DEFINED CMAKE_SIZEOF_VOID_P) message(AUTHOR_WARNING "Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. " "Please enable at least one language before including GNUInstallDirs.") else() if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") set(_LIBDIR_DEFAULT "lib64") endif() endif() endif() set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})") endif() if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR) set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)") endif() if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR) set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)") endif() if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR) set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)") endif() #----------------------------------------------------------------------------- # Values whose defaults are relative to DATAROOTDIR. Store empty values in # the cache and store the defaults in local variables if the cache values are # not set explicitly. This auto-updates the defaults as DATAROOTDIR changes. if(NOT CMAKE_INSTALL_DATADIR) set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)") set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}") endif() if(NOT CMAKE_INSTALL_INFODIR) set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)") set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info") endif() if(NOT CMAKE_INSTALL_LOCALEDIR) set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)") set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale") endif() if(NOT CMAKE_INSTALL_MANDIR) set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)") set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man") endif() if(NOT CMAKE_INSTALL_DOCDIR) set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)") set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}") endif() #----------------------------------------------------------------------------- mark_as_advanced( CMAKE_INSTALL_BINDIR CMAKE_INSTALL_SBINDIR CMAKE_INSTALL_LIBEXECDIR CMAKE_INSTALL_SYSCONFDIR CMAKE_INSTALL_SHAREDSTATEDIR CMAKE_INSTALL_LOCALSTATEDIR CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_OLDINCLUDEDIR CMAKE_INSTALL_DATAROOTDIR CMAKE_INSTALL_DATADIR CMAKE_INSTALL_INFODIR CMAKE_INSTALL_LOCALEDIR CMAKE_INSTALL_MANDIR CMAKE_INSTALL_DOCDIR ) # Result directories # foreach(dir BINDIR SBINDIR LIBEXECDIR SYSCONFDIR SHAREDSTATEDIR LOCALSTATEDIR LIBDIR INCLUDEDIR OLDINCLUDEDIR DATAROOTDIR DATADIR INFODIR LOCALEDIR MANDIR DOCDIR ) if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}}) set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}") else() set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}") endif() endforeach() fg-fgrun/CMakeModules/SelectLibraryConfigurations.cmake000066400000000000000000000077321245722473500236070ustar00rootroot00000000000000# select_library_configurations( basename ) # # This macro takes a library base name as an argument, and will choose good # values for basename_LIBRARY, basename_LIBRARIES, basename_LIBRARY_DEBUG, and # basename_LIBRARY_RELEASE depending on what has been found and set. If only # basename_LIBRARY_RELEASE is defined, basename_LIBRARY, basename_LIBRARY_DEBUG, # and basename_LIBRARY_RELEASE will be set to the release value. If only # basename_LIBRARY_DEBUG is defined, then basename_LIBRARY, # basename_LIBRARY_DEBUG and basename_LIBRARY_RELEASE will take the debug value. # # If the generator supports configuration types, then basename_LIBRARY and # basename_LIBRARIES will be set with debug and optimized flags specifying the # library to be used for the given configuration. If no build type has been set # or the generator in use does not support configuration types, then # basename_LIBRARY and basename_LIBRARIES will take only the release values. #============================================================================= # Copyright 2009 Kitware, Inc. # Copyright 2009 Will Dicharry # Copyright 2005-2009 Kitware, Inc. # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. # # This software is distributed WITHOUT ANY WARRANTY; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the License for more information. #============================================================================= # (To distributed this file outside of CMake, substitute the full # License text for the above reference.) # This macro was adapted from the FindQt4 CMake module and is maintained by Will # Dicharry . # Utility macro to check if one variable exists while another doesn't, and set # one that doesn't exist to the one that exists. macro( _set_library_name basename GOOD BAD ) if( ${basename}_LIBRARY_${GOOD} AND NOT ${basename}_LIBRARY_${BAD} ) set( ${basename}_LIBRARY_${BAD} ${${basename}_LIBRARY_${GOOD}} ) set( ${basename}_LIBRARY ${${basename}_LIBRARY_${GOOD}} ) set( ${basename}_LIBRARIES ${${basename}_LIBRARY_${GOOD}} ) endif( ${basename}_LIBRARY_${GOOD} AND NOT ${basename}_LIBRARY_${BAD} ) endmacro( _set_library_name ) macro( select_library_configurations basename ) # if only the release version was found, set the debug to be the release # version. _set_library_name( ${basename} RELEASE DEBUG ) # if only the debug version was found, set the release value to be the # debug value. _set_library_name( ${basename} DEBUG RELEASE ) if (${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE ) # if the generator supports configuration types or CMAKE_BUILD_TYPE # is set, then set optimized and debug options. if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) set( ${basename}_LIBRARY optimized ${${basename}_LIBRARY_RELEASE} debug ${${basename}_LIBRARY_DEBUG} ) set( ${basename}_LIBRARIES optimized ${${basename}_LIBRARY_RELEASE} debug ${${basename}_LIBRARY_DEBUG} ) else( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) # If there are no configuration types or build type, just use # the release version set( ${basename}_LIBRARY ${${basename}_LIBRARY_RELEASE} ) set( ${basename}_LIBRARIES ${${basename}_LIBRARY_RELEASE} ) endif( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) endif( ${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE ) set( ${basename}_LIBRARY ${${basename}_LIBRARY} CACHE FILEPATH "The ${basename} library" ) if( ${basename}_LIBRARY ) set( ${basename}_FOUND TRUE ) endif( ${basename}_LIBRARY ) mark_as_advanced( ${basename}_LIBRARY ${basename}_LIBRARY_RELEASE ${basename}_LIBRARY_DEBUG ) endmacro( select_library_configurations ) fg-fgrun/COPYING000066400000000000000000000431101245722473500136360ustar00rootroot00000000000000 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. fg-fgrun/ChangeLog000066400000000000000000000003121245722473500143520ustar00rootroot000000000000002008-01-06 gettextize * Makefile.am (ACLOCAL_AMFLAGS): New variable. (EXTRA_DIST): Add config.rpath, m4/ChangeLog. * configure.ac (AC_CONFIG_FILES): Add po/Makefile.in. fg-fgrun/NEWS000066400000000000000000000130201245722473500132770ustar00rootroot00000000000000* 1.7.0 (under development) * Display aircraft location on disk. Doesn't change directory precedence in FlightGear * Add a most recently used aircraft list to avoid browsing a long list of aircraft * Support MS VS2012 * Require FLTK 1.3 * 1.6.2 * Updated portugese translation * Improve initial configuration triggered by fgsetup by allowing multiple users * Add versioning to the initial configuration to cope with previous installations * Aircraft 3D preview made optional and controlled by a check box * Local multiplay option without a hostname * Add a checkbox to enable AI traffic (conditionned by AI models) * Updated german translation * Refresh aircraft list when fg_aircraft path list is changed * 1.6.1 * show aircraft rating * don't emit a --airport option if --carrier is specified * remove trailing slash on directories after selection in the dir browser * add an help icon to scenarii that displays description of scenario as tooltip * warning icons added in the directory page of the wizard * 1.6.0 * change to compile with old versions of OSG (needed to compile under freebsd) * new --materials-file in advanced section * fix white spaces in aircraft path * add Cmake build system * --fg-aircraft option support for fgfs and to display models in the aircraft browser * remove cache usage for aircraft models to lower memory requirements * make fgrun aware of the use-custom-scenery file layout for parking positions * fix network options in the advanced section * limit length of callsign to 8 and don't allow spaces * change terrasync directory selection in the wizard * enable disabled options in the advanced section * fix resizing of multiplayer options * remove plib dependency * 1.5.2 * compile under Win64 * add a field to configure a specific path for the terrasync executable ( which is only Win32 ) * --enable-ai-models is a prerequisite for --multiplay * allow spaces in --props: options * support XPlane 850 apt.dat format * add a button to deselect all selected scenarii. This should be an hint that many scenarii are selectable at once * add a prefetch button in the airport page to get scenery around a specific airport via terrasync before starting the simulator * 1.5.1 * start TerraSync automatically * drop pthreads dependency * set configured environment variables under Windows ( was already working under Unix ) * update tooltips * update translations * show all types of parking positions * 1.5.0 * use OpenSceneGraph to display aircrafts * locale support * es, pt, de, pl, nl, it & fr locale * display aircraft status and author * add --bpp option in the wizard * add frame throtling control in the wizard * vegetation control in the wizard * choose season * don't crash when restoring startup parameters * save and load options * support parking position for startup * seabases and heliports available in airport browser * explicit TerraSync option that not conflict with Atlas * 1.0.0 * Match the Flightgear version number * Don't complain about unsupported file type, just ignore them * Support of tag in animations and submodels to improve aircraft preview * Case unsensitive sort of aircraft in the preview list * 0.4.9 * Ordered aircraft list * Changed --aircraft-id to --aircraft * Fix --jpg-httpd option * Fix problem with space in path * Load aircraft submodels in the preview browser * Support scenarios without having to modify preferences.xml * Support the AV400 protocol * Use plib to browse aircrafts * Fix resizing bug * Migrated to Sourceforge SVN * 0.4.8 * Compiles and runs under Cygwin * --carrier and --parkpos options * 0.4.7 * New 'Defaults' button in the wizard to restore default settings * Improve airport search * 0.4.6 * New wizard page with most common options directly available * A modal window prevent multiple launch of fgfs * Read new fgfs airport format * Refresh airport list only on demand * Aircraft viewer preserve image aspect ratio and auto scale the view to the aircraft dimensions * Several fixes * 0.4.5 * Fixed win32 GL context bug. * Scanning for installed airports recognises new directory structure. * 0.4.4 * Fixed FlightGear --fullscreen typo. * Restore window size and position at start up. * Added enable-ai-models option. * Support new Scenery/Terrain directory structure. * Removed METAR button. * 0.4.3 * Maintain proper aspect ratio of aircraft preview window. * Added control to refresh airport and runway data. * Display aircraft description. * Smarter handling of aircraft aliases. * Fullscreen option at startup. * 0.4.2 * Support multiple scenery directories, * Fixed handling of generic I/O file option. * Support for new --random-wind and --proxy options. * Fixed properties output bug. * Display selected aircraft at startup. * 0.4.1 * Scan for installed airports in the background. * Cache installed airport codes. * Added a cloud page to the advanced disalog. * Saved airport is selected on startup. * 0.4.0 * New wizard style interface to make it easier for first time and infrequent users to get started. The original interface is now the advanced options interface. * Aircraft preview (requires plib, simgear and opengl). * New airport browser with incremental search facility. * runways.dat is loaded in the background. * New weather page in advanced dialog. * 0.3.3 * Not released. * 0.3.2 * Windows updates. * 0.3.1 * Use absolute pathnames on Windows. fg-fgrun/README000066400000000000000000000013341245722473500134650ustar00rootroot00000000000000FlightGear Launch Control is a graphical frontend for running FlightGear flight simulator, . This project is released under the terms of the GNU General Public License. See COPYING for details. Requirements: - FLTK-1.1.x with threads enabled. Tested with FLTK-1.1.6 and 1.1.7[1] but earlier versions should work. - Plib 1.8.4 or greater. - SimGear 0.3.10. - OpenGL or equivalent Cygwin users should ensure that their fltk library has been configured with at least the following flags : --enable-threads --enable-gl --enable-cygwin [1] under Linux, fltk 1.1.7 should be configured with the --disable-largefile option. Otherwise, the aircraft list will be empty. This requirement is only for 1.1.7 fg-fgrun/config.rpath000077500000000000000000000374441245722473500151300ustar00rootroot00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2006 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; darwin*) case $cc_basename in xlc*) wl='-Wl,' ;; esac ;; mingw* | pw32* | os2*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux*) case $cc_basename in icc* | ecc*) wl='-Wl,' ;; pgcc | pgf77 | pgf90) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; sco3.2v5*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) wl='-Wl,' ;; sysv4*MP*) ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we cannot use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; interix3*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; linux*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if test "$GCC" = yes ; then : else case $cc_basename in xlc*) ;; *) ld_shlibs=no ;; esac fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | kfreebsd*-gnu | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. libname_spec='lib$name' case "$host_os" in aix3*) ;; aix4* | aix5*) ;; amigaos*) ;; beos*) ;; bsdi[45]*) ;; cygwin* | mingw* | pw32*) shrext=.dll ;; darwin* | rhapsody*) shrext=.dylib ;; dgux*) ;; freebsd1*) ;; kfreebsd*-gnu) ;; freebsd* | dragonfly*) ;; gnu*) ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac ;; interix3*) ;; irix5* | irix6* | nonstopux*) case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux*) ;; knetbsd*-gnu) ;; netbsd*) ;; newsos6) ;; nto-qnx*) ;; openbsd*) ;; os2*) libname_spec='$name' shrext=.dll ;; osf3* | osf4* | osf5*) ;; solaris*) ;; sunos4*) ;; sysv4 | sysv4.3*) ;; sysv4*MP*) ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ;; uts4*) ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <= 1.1.0 autoconf2.5 Requires: fltk >= 1.1.0 Prefix: %{_prefix} %description fgrun is a graphical launcher for the FlightGear flight simulator. %prep rm -rf $RPM_BUILD_ROOT %setup -q %build %configure2_5x --program-prefix="" %make %install rm -rf $RPM_BUILD_ROOT %makeinstall %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %doc README COPYING %attr(755,root,root) %{_bindir}/%{name} %changelog * Tue Oct 28 2003 Bernie Bright 0.3.2-1mdk - first Mandrake package. # end of file fg-fgrun/flightgear.ico000066400000000000000000003134261245722473500154250ustar00rootroot00000000000000 hv Þ ˆ î  ¨v00 ¨%'@@ (BÆL€€ (îŽ(  ÿÿJþýÿJþýÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿJþýÿJþýÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿÿÿJþýÿJþýÿþøúÿÖ«‡ÿ¿~BÿÆNÿúïíÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿÿÿJþýÿJþýÿþøúÿÏœoÿ¿~Bÿ¿~BÿöéãÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿJþýÿJþýÿÿÿþøúÿÏœoÿ¿~Bÿ¿~BÿöéãÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿJþýÿJþýÿÿÿþøúÿÏœoÿ¿~Bÿ¿~BÿöéãÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿÿÿJþýÿJþýÿþøúÿÏœoÿ¿~Bÿ¿~BÿöéãÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿÿÿJþýÿJþýÿþøúÿÏœoÿ¿~Bÿ¿~Bÿ͘jÿÏœoÿÏœoÿÏœoÿâ©ÿþøúÿÿÿJþýÿJþýÿÿÿþøúÿÏœoÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÏœoÿþøúÿÿÿJþýÿJþýÿÿÿþøúÿÏœoÿ¿~Bÿ¿~BÿÚ³’ÿÞ»žÿÞ»žÿÞ»žÿîÙÌÿþøúÿJþýÿJþýÿÿÿJþýÿJþýÿþøúÿÏœoÿ¿~Bÿ¿~BÿöéãÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿÿÿJþýÿJþýÿþøúÿÏœoÿ¿~Bÿ¿~BÿèλÿîÙÌÿîÙÌÿîÙÌÿôåÝÿþøúÿÿÿJþýÿJþýÿÿÿþøúÿÏœoÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÁGÿþøúÿÿÿJþýÿJþýÿÿÿþøúÿÖ«‡ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÇXÿþøúÿJþýÿJþýÿÿÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿÿÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ(, ÿÿ??ÿJþýÿJþýÿ%~ÿÿÿ»¼ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿ??ÿJþýÿJþýÿ%~ÿÿÿ»¼ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ??ÿ??ÿ_^ÿ7¾¾ÿ7¾¾ÿ%~ÿ??ÿ??ÿªËÌÿþøúÿ÷êäÿîÙÌÿîÙÌÿøíéÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿ7¾¾ÿÿÿ%~ÿJþýÿJþýÿÑúûÿýö÷ÿĈQÿ¿~Bÿ¿~BÿÉ‘_ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿ7¾¾ÿÿÿ%~ÿJþýÿJþýÿÑúûÿüôôÿ¿~Bÿ¿~Bÿ¿~BÿÃ…Mÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ%~ÿ%~ÿ%~ÿ%~ÿ%~ÿ%~ÿ%~ÿ%~ÿ·ÛÜÿüôôÿ¿~Bÿ¿~Bÿ¿~BÿÃ…Mÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿ??ÿJþýÿJþýÿ%~ÿÿÿ»¼ÿüôôÿ¿~Bÿ¿~Bÿ¿~BÿÃ…Mÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿ??ÿJþýÿJþýÿ%~ÿÿÿ»¼ÿüôôÿ¿~Bÿ¿~Bÿ¿~BÿÃ…Mÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ7¾¾ÿ7¾¾ÿ.žžÿ??ÿ??ÿ%~ÿ7¾¾ÿ7¾¾ÿÄêëÿüôôÿ¿~Bÿ¿~Bÿ¿~BÿÃ…MÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿ7¾¾ÿÿÿ%~ÿJþýÿJþýÿÑúûÿüôôÿ¿~Bÿ¿~Bÿ¿~BÿÃ…Mÿüôôÿüôôÿüôôÿüôôÿüôôÿýö÷ÿþøúÿþøúÿJþýÿJþýÿ7¾¾ÿÿÿ%~ÿJþýÿJþýÿÑúûÿüôôÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÆNÿöèáÿþøúÿÿÿ??ÿJþýÿJþýÿ%~ÿÿÿ»¼ÿüôôÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿìÖÆÿþøúÿÿÿ??ÿJþýÿJþýÿ%~ÿÿÿ»¼ÿüôôÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÃ…Mÿõæßÿþøúÿ??ÿ??ÿ_^ÿ7¾¾ÿ7¾¾ÿ%~ÿ??ÿ??ÿªËÌÿüôôÿ¿~Bÿ¿~Bÿ¿~BÿÂ…LÿúðîÿúðîÿúðîÿúðîÿúðîÿüóóÿþøúÿþøúÿJþýÿJþýÿ7¾¾ÿÿÿ%~ÿJþýÿJþýÿÑúûÿüôôÿ¿~Bÿ¿~Bÿ¿~BÿÃ…MÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿ7¾¾ÿÿÿ%~ÿJþýÿJþýÿÑúûÿüôôÿ¿~Bÿ¿~Bÿ¿~BÿÃ…Mÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ%~ÿ%~ÿ%~ÿ%~ÿ%~ÿ%~ÿ%~ÿ%~ÿ·ÛÜÿüôôÿ¿~Bÿ¿~Bÿ¿~Bÿ¿CÿÉ‘^ÿÉ‘^ÿÉ‘^ÿÉ‘^ÿÉ‘^ÿÉ‘_ÿëÔÄÿþøúÿÿÿ??ÿJþýÿJþýÿ%~ÿÿÿ»¼ÿüôôÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÖ«‡ÿþøúÿÿÿ??ÿJþýÿJþýÿ%~ÿÿÿ»¼ÿýö÷ÿĈQÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÝ·™ÿþøúÿ7¾¾ÿ7¾¾ÿ.žžÿ??ÿ??ÿ$~ÿ6¿¾ÿ6¿¾ÿ¬ëìÿþøúÿ÷êäÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÚÍÿýö÷ÿþøúÿJþýÿJþýÿ7¾¾ÿÿÿ$ÿGÿþÿGÿþÿ®ûüÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿ7¾¾ÿÿÿ$ÿGÿþÿGÿþÿ®ûüÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ(0 ÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿÿÿÿJþýÿJþýÿJþýÿþøúÿüóóÿË•eÿ¿~Bÿ¿~BÿÉ‘_ÿúðîÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿÿÿÿJþýÿJþýÿJþýÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿòá×ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿÿÿÿJþýÿJþýÿJþýÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿòá×ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿòá×ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿòá×ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿòá×ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿÿÿÿJþýÿJþýÿJþýÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿòá×ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿÿÿÿJþýÿJþýÿJþýÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿìÕÅÿöéãÿöéãÿöéãÿöéãÿöéãÿûñðÿþøúÿþøúÿJþýÿJþýÿJþýÿÿÿÿJþýÿJþýÿJþýÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÇXÿûñðÿþøúÿÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿöéãÿþøúÿÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÆNÿúïíÿþøúÿÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿåȲÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿöéãÿþøúÿþøúÿJþýÿJþýÿJþýÿÿÿÿJþýÿJþýÿJþýÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿòá×ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿÿÿÿJþýÿJþýÿJþýÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿòá×ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿÿÿÿJþýÿJþýÿJþýÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿß¼ŸÿæÊµÿæÊµÿæÊµÿæÊµÿæÊµÿèλÿþ÷ùÿþøúÿÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿãëÿþøúÿÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿöéãÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿÿÿÿJþýÿJþýÿJþýÿÿÿÿþøúÿüóóÿË•eÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÁGÿîÙÌÿþøúÿJþýÿJþýÿJþýÿÿÿÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿÿÿÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿÿÿÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ( @ ÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿïÚÍÿÂ…Lÿ¿~Bÿ¿~Bÿ¿~BÿÇŽZÿúðîÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÖ«‡ÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿâ¨ÿûòñÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿâ¨ÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÂ…LÿïÚÍÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÖ«‡ÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿïÚÍÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÂ…LÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿÞ»žÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿþøúÿþøúÿöéãÿÇXÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÓ¤{ÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ(0` $ÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿÙ±ÿÀDÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÓ¥}ÿýö÷ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿòá×ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿêÒÀÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÜ·˜ÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿîÙÌÿïÛÏÿýö÷ÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿË”dÿýö÷ÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿïÛÏÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙÌÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÃ…MÿúðîÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÓ¤{ÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿÞ»žÿß½¡ÿõçàÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿæÊµÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÉ‘^ÿÏœoÿÏœoÿÏœoÿÏœoÿÏœoÿÏœoÿÏœoÿÏœoÿÏœoÿÏœoÿÏœoÿÏœoÿÓ¤{ÿñßÔÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÈ[ÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿîÙÌÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿòá×ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÃ…MÿþøúÿþøúÿþøúÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿÙ±ÿÀDÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÃ…MÿæÊµÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ(@€ @ÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿóâÚÿΜoÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÃ…Mÿß¼ŸÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿΜoÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿîÙËÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿΜoÿóâÚÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿΜoÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿΜoÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿΜoÿóâÚÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÞ»žÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿΜoÿóâÚÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿΜoÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿΜoÿ¿~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ÿΜoÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿóâÚÿΜoÿ¿~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ÿΜoÿóâÚÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ(€ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿüôôÿݸ™ÿÇŽ[ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÇŽ[ÿݸ™ÿüôôÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿüôôÿË•eÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿË•eÿüôôÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿݸ™ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿݸ™ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÇŽ[ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÇŽ[ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÇŽ[ÿݸ™ÿüôôÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿË•eÿüôôÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿݸ™ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÇŽ[ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÇŽ[ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿݸ™ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿË•eÿüôôÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÇŽ[ÿݸ™ÿüôôÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÇŽ[ÿݸ™ÿüôôÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿË•eÿüôôÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿݸ™ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿÇŽ[ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿ¿~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ÿ¿~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ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÇŽ[ÿ¿~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ÿ¿~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ÿÇŽ[ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿݸ™ÿ¿~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ÿ¿~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ÿݸ™ÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿüôôÿË•eÿ¿~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ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿË•eÿüôôÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿüôôÿݸ™ÿÇŽ[ÿ¿~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ÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~Bÿ¿~BÿÇŽ[ÿݸ™ÿüôôÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿJþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿGÿþÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿþøúÿfg-fgrun/msvc/000077500000000000000000000000001245722473500135545ustar00rootroot00000000000000fg-fgrun/msvc/9.0/000077500000000000000000000000001245722473500140625ustar00rootroot00000000000000fg-fgrun/msvc/9.0/fgrun.rc000066400000000000000000000035031245722473500155320ustar00rootroot00000000000000// Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Français (France) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) #ifdef _WIN32 LANGUAGE LANG_FRENCH, SUBLANG_FRENCH #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource1.h\0" END 2 TEXTINCLUDE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_ICON1 ICON "..\\..\\flightgear.ico" #endif // Français (France) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED fg-fgrun/msvc/9.0/fgrun.sln000066400000000000000000000041611245722473500157230ustar00rootroot00000000000000Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fgrun", "fgrun.vcproj", "{B25B33CB-2D7F-4D25-A73A-B05E86C48F7E}" ProjectSection(ProjectDependencies) = postProject {22540CD3-D3CA-4C86-A773-80AEEE3ACDED} = {22540CD3-D3CA-4C86-A773-80AEEE3ACDED} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimGear", "..\..\..\Simgear\projects\VC90\SimGear.vcproj", "{22540CD3-D3CA-4C86-A773-80AEEE3ACDED}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {B25B33CB-2D7F-4D25-A73A-B05E86C48F7E}.Debug|Win32.ActiveCfg = Debug|Win32 {B25B33CB-2D7F-4D25-A73A-B05E86C48F7E}.Debug|Win32.Build.0 = Debug|Win32 {B25B33CB-2D7F-4D25-A73A-B05E86C48F7E}.Debug|x64.ActiveCfg = Debug|x64 {B25B33CB-2D7F-4D25-A73A-B05E86C48F7E}.Debug|x64.Build.0 = Debug|x64 {B25B33CB-2D7F-4D25-A73A-B05E86C48F7E}.Release|Win32.ActiveCfg = Release|Win32 {B25B33CB-2D7F-4D25-A73A-B05E86C48F7E}.Release|Win32.Build.0 = Release|Win32 {B25B33CB-2D7F-4D25-A73A-B05E86C48F7E}.Release|x64.ActiveCfg = Release|x64 {B25B33CB-2D7F-4D25-A73A-B05E86C48F7E}.Release|x64.Build.0 = Release|x64 {22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Debug|Win32.ActiveCfg = Debug|Win32 {22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Debug|Win32.Build.0 = Debug|Win32 {22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Debug|x64.ActiveCfg = Debug|x64 {22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Debug|x64.Build.0 = Debug|x64 {22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Release|Win32.ActiveCfg = Release|Win32 {22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Release|Win32.Build.0 = Release|Win32 {22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Release|x64.ActiveCfg = Release|x64 {22540CD3-D3CA-4C86-A773-80AEEE3ACDED}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal fg-fgrun/msvc/9.0/fgrun.vcproj000066400000000000000000000641311245722473500164350ustar00rootroot00000000000000 fg-fgrun/msvc/9.0/fgrun64.rc000066400000000000000000000035051245722473500157060ustar00rootroot00000000000000// Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Français (France) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) #ifdef _WIN32 LANGUAGE LANG_FRENCH, SUBLANG_FRENCH #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource1.h\0" END 2 TEXTINCLUDE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_ICON1 ICON "..\\..\\flightgear64.ico" #endif // Français (France) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED fg-fgrun/msvc/9.0/resource.h000066400000000000000000000006341245722473500160650ustar00rootroot00000000000000//{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by fgrun.rc // Valeurs par défaut suivantes des nouveaux objets // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif fg-fgrun/po/000077500000000000000000000000001245722473500132225ustar00rootroot00000000000000fg-fgrun/po/.gitignore000066400000000000000000000000031245722473500152030ustar00rootroot00000000000000*~ fg-fgrun/po/CMakeLists.txt000066400000000000000000000002041245722473500157560ustar00rootroot00000000000000 if (ENABLE_NLS) gettext_create_translations( fgrun.pot ALL de.po es.po fr.po it.po ja.po nl.po pl.po pt.po) endif (ENABLE_NLS) fg-fgrun/po/de.po000066400000000000000000001031741245722473500141600ustar00rootroot00000000000000# German translations for fgrun package # German messages for fgrun. # Copyright (C) 2008 Frederic Bouvier # This file is distributed under the same license as the fgrun package. # Adrian , 2008. # HHS , 2008 # msgid "" msgstr "" "Project-Id-Version: fgrun 1.1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-03 02:20+0200\n" "PO-Revision-Date: 2008-01-30 16:00+0100\n" "Last-Translator: Adrian \n" "Language-Team: German\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CP1252\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/logwin.cxx:34 msgid "&Close" msgstr "S&chliessen" #: src/logwin.cxx:32 msgid "&File" msgstr "&Datei" #: src/logwin.cxx:33 msgid "&Save" msgstr "&Speichern" #: src/advanced.cxx:715 src/advanced.cxx:724 src/advanced.cxx:1467 msgid "..." msgstr "" #: src/advanced_funcs.cxx:145 msgid "2.0" msgstr "" #: src/advanced.cxx:1081 src/wizard.cxx:812 msgid "3D Clouds" msgstr "3D Wolken" #: src/wizard.cxx:643 msgid "3D Preview" msgstr "3D Vorschau" #: src/advanced_funcs.cxx:146 msgid "4.0" msgstr "" #: src/advanced_funcs.cxx:147 msgid "8.0" msgstr "" #: src/wizard.cxx:942 msgid ":" msgstr "" #: src/wizard_funcs.cxx:889 src/wizard_funcs.cxx:2449 #: src/AirportBrowser.cxx:470 src/fgfsrc.cxx:101 msgid "" msgstr "" #: src/wizard_funcs.cxx:225 #, c-format msgid "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

This program is released under the " "GNU General Public License (http://www.gnu.org/copyleft/gpl.html).

" "

Report bugs to http://sourceforge.net/projects/fgrun

" msgstr "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

Dieses Programm wird unter der GNU " "General Public License (http://www.gnu.org/copyleft/gpl.html) veröffentlicht." "

Bugs bitte an http://sourceforge.net/projects/fgrun melden

" #: src/wizard.cxx:599 msgid "@2>" msgstr "" #: src/wizard.cxx:588 msgid "@8>" msgstr "" #: src/advanced.cxx:1568 msgid "ADF:" msgstr "" #: src/advanced.cxx:867 msgid "AI Models" msgstr "AI Modelle" #: src/advanced.cxx:873 src/wizard.cxx:848 msgid "AI Traffic" msgstr "AI Flugverkehr" #: src/wizard.cxx:844 msgid "AI models" msgstr "AI Modelle" #: src/wizard_funcs.cxx:977 src/fgfsrc.cxx:61 msgid "Abort" msgstr "Abbrechen" #: src/fgfsrc.cxx:61 #, c-format msgid "About to overwrite %s." msgstr "Überschreibe %s." #: src/wizard_funcs.cxx:977 msgid "About to reset current parameters" msgstr "Setze den aktuellen Parameter zurück" #: src/wizard.cxx:562 msgid "Add a scenery directory" msgstr "Scenery-Verzeichnis hinzufügen" #: src/wizard.cxx:533 msgid "Add an aircraft directory" msgstr "Flugzeug-Verzeichnis hinzufügen" #: src/wizard.cxx:532 src/wizard.cxx:561 msgid "Add..." msgstr "Hinzufügen..." #: src/advanced.cxx:672 msgid "Advanced Options" msgstr "Erweiterte Optionen" #: src/wizard.cxx:747 msgid "Advanced..." msgstr "Erweitert..." #: src/wizard.cxx:523 msgid "Aircraft directories" msgstr "Flugzeug-Verzeichnisse" #: src/advanced.cxx:748 msgid "Aircraft:" msgstr "Flugzeug:" #: src/wizard.cxx:1097 msgid "Airport to fetch : " msgstr "Abzurufender Flugplatz:" #: src/advanced.cxx:740 msgid "Airport:" msgstr "Flughafen:" #: src/wizard.cxx:620 msgid "Airports Cache:" msgstr "Flugplatz-Cache:" #: src/advanced.cxx:995 msgid "Airspeed:" msgstr "Geschwindigkeit:" #: src/wizard.fl msgid "All airports" msgstr "" #: src/advanced.cxx:989 msgid "Altitude:" msgstr "Höhe:" #: src/wizard.cxx:1068 msgid "An error report has been generated in the file below :" msgstr "Ein Fehlerbericht wurde in folgende Datei geschrieben:" #: src/advanced.cxx:806 msgid "Anti-alias HUD" msgstr "HUD Kantenglättung" #: src/wizard.cxx:931 msgid "Atlas" msgstr "" #: src/wizard.cxx:692 msgid "Author(s) :" msgstr "Autor(en) :" #: src/advanced.cxx:812 src/wizard.cxx:864 msgid "Auto-coordination" msgstr "Auto-Koordination" #: src/wizard.cxx:659 #, fuzzy msgid "Available aircraft :" msgstr "Flugzeug:" #: src/advanced.cxx:1554 src/advanced_funcs.cxx:223 msgid "Avionics" msgstr "Avionik" #: src/advanced.cxx:1481 msgid "Baud Rate:" msgstr "Baudrate:" #: src/advanced.cxx:711 msgid "Browser:" msgstr "" #: src/wizard.cxx:954 msgid "Callsign :" msgstr "Kennung:" #: src/advanced.cxx:1355 msgid "Callsign:" msgstr "Kennung:" #: src/advanced.cxx:685 src/wizard.cxx:1085 msgid "Cancel" msgstr "Abbrechen" #: src/wizard.cxx:725 msgid "Carrier : " msgstr "Flugzeugträger :" #: src/wizard.cxx:721 msgid "Carrier Ops" msgstr "Flugzeugträger-Operationen" #: src/advanced.cxx:1819 msgid "Ceiling:" msgstr "Wolkendecke:" #: src/wizard.cxx:1007 msgid "" "Clear all selected options and return to the install situation. Useful if " "FGFS don't start anymore." msgstr "" "Alle Einstellungen zurücksetzen. Hilfreich, wenn FlightGear nicht mehr " "richtig startet." #: src/wizard.cxx:615 msgid "Clear the content of the airport cache" msgstr "Flugplatz-Cache löschen" #: src/advanced.cxx:1060 msgid "Climb rate:" msgstr "Steigrate:" #: src/advanced.cxx:965 msgid "Clock Freeze" msgstr "Uhr einfrieren" #: src/advanced.cxx:1075 src/advanced.cxx:1833 src/advanced_funcs.cxx:228 msgid "Clouds" msgstr "Wolken" #: src/Fl_OSG.cxx:188 msgid "Cockpit : " msgstr "" #: src/advanced.cxx:1177 src/wizard.cxx:817 msgid "Color depth (bits per pixel)" msgstr "Farbtiefe (Bits per pixel)" #: src/advanced.cxx:719 msgid "Config:" msgstr "Konfiguration:" #: src/advanced.cxx:892 msgid "Core Flight Dynamics Model" msgstr "Flugdynamikmodell" #: src/advanced.cxx:1865 msgid "Coverage:" msgstr "Bewölkung:" #: src/wizard.cxx:894 msgid "Ctrl-click to deselect a single item" msgstr "Ctrl-click um ein einzelnes Element abzuwählen" #: src/wizard.cxx:886 msgid "Ctrl-click to select or deselect a single item" msgstr "Ctrl-click um ein einzelnes Element an- oder abzuwählen" #: src/advanced.cxx:1601 msgid "DME:" msgstr "" #: src/advanced.cxx:1650 src/advanced_funcs.cxx:225 msgid "Debugging" msgstr "" #: src/advanced.cxx:1400 src/advanced.cxx:1628 src/advanced.cxx:1691 #: src/advanced.cxx:1724 src/advanced.cxx:1756 src/wizard.cxx:537 #: src/wizard.cxx:566 src/wizard.cxx:614 msgid "Delete" msgstr "Löschen" #: src/wizard.cxx:567 msgid "Delete a scenery directory" msgstr "Scenery-Verzeichnis löschen" #: src/wizard.cxx:538 msgid "Delete an aircraft directory" msgstr "Flugzeug-Verzeichnis löschen" #: src/wizard_funcs.cxx:1752 msgid "Description of " msgstr "Beschreibung von " #: src/wizard.cxx:893 msgid "Deselect all" msgstr "Alles abwählen" #: src/wizard_funcs.cxx:109 msgid "Development" msgstr "Entwicklung" #: src/advanced.cxx:1792 msgid "Direction wind is coming from." msgstr "Richtung, aus der der Wind kommt" #: src/advanced.cxx:1435 msgid "Direction:" msgstr "Richtung:" #: src/advanced.cxx:1127 msgid "Disabled" msgstr "Keiner" #: src/wizard.cxx:764 msgid "Display" msgstr "Bildschirm" #: src/wizard.fl msgid "Display all airports" msgstr "" #: src/wizard.fl msgid "Display only installed airports" msgstr "" #: src/advanced.cxx:767 msgid "Display splash screen at startup" msgstr "Startbild bei Programmstart anzeigen" #: src/advanced.cxx:827 msgid "Distance attenuation" msgstr "Abschwächung durch weite Entfernung" #: src/advanced.cxx:907 msgid "Do not attempt to trim the model" msgstr "Keine Trimmung des Modells versuchen" #: src/wizard_funcs.cxx:2685 msgid "Don't overwrite" msgstr "Nicht Überschreiben" #: src/wizard_funcs.cxx:113 msgid "Early development" msgstr "Frühe Entwicklung" #: src/wizard_funcs.cxx:105 msgid "Early production" msgstr "Frühe Fertigstellung" #: src/advanced.cxx:1851 msgid "Elevation(ft):" msgstr "Höhe (ft):" #: src/advanced.cxx:1076 msgid "Enable 2D (flat) cloud layers" msgstr "2D-Wolkenschichten (flach) An" #: src/advanced.cxx:1082 msgid "Enable 3D (volumetric) cloud layers" msgstr "3D-Wolken (volumetrisch) An" #: src/advanced.cxx:833 msgid "Enable 3D HUD" msgstr "3D-HUD An" #: src/advanced.cxx:868 msgid "Enable AI traffic" msgstr "Computergesteuerter Flugverkehr An" #: src/advanced.cxx:1302 msgid "Enable HTTP server" msgstr "HTTP-Server An" #: src/advanced.cxx:801 msgid "Enable Heads Up Display" msgstr "Heads-Up-Display An" #: src/advanced.cxx:807 msgid "Enable anti-aliased HUD" msgstr "Anti-aliased (kantengeglättetes) HUD An" #: src/advanced.cxx:813 msgid "Enable auto-coordinated turns." msgstr "Quer- und Seitenruderkoordination An" #: src/advanced.cxx:818 msgid "Enable celestial body growth illusion near the horizon" msgstr "Illusion grösserwerdender Himmelskörper in Horizontnähe An" #: src/advanced.cxx:823 msgid "Enable enhanced runway lighting" msgstr "Verfeinerte Startbahnbeleuchtung An" #: src/advanced.cxx:779 msgid "Enable extra mouse pointer" msgstr "Extra-Mauszeiger An" #: src/advanced.cxx:762 msgid "Enable full screen game mode" msgstr "Vollbildmodus An" #: src/advanced.cxx:1087 msgid "Enable full screen mode" msgstr "Vollbildmodus An" #: src/advanced.cxx:773 msgid "Enable introduction music during start up" msgstr "Intro-Musik bei Programmstart An" #: src/advanced.cxx:1319 msgid "Enable property server" msgstr "Property-Server An" #: src/advanced.cxx:784 msgid "Enable random scenery objects" msgstr "Automatisch generierte Scenery-Objekte An" #: src/advanced.cxx:828 msgid "Enable runway light distance attenuation" msgstr "Abschwächung der Startbahnbeleuchtung auf weite Entfernung An" #: src/advanced.cxx:1335 msgid "Enable screen shot HTTP server" msgstr "HTTP-Server für Screenshots An" #: src/advanced.cxx:1092 msgid "Enable sky blending" msgstr "Farbübergänge in Himmelszeichnung An" #: src/advanced.cxx:795 msgid "Enable sound effects" msgstr "Soundeffekte An" #: src/advanced.cxx:838 msgid "Enable specular reflections on textured objects" msgstr "Glanz auf texturierten Objekten An" #: src/advanced.cxx:789 msgid "Enable the instrument panel" msgstr "Instrumentenpanel anzeigen" #: src/advanced.cxx:1104 msgid "Enable wireframe drawing mode" msgstr "Drahtgitterdarstellung An" #: src/advanced.cxx:822 msgid "Enhanced lighting" msgstr "Verfeinerte Beleuchtung" #: src/wizard.cxx:789 msgid "Enhanced runway lighting" msgstr "Aufwändige Startbahnbeleuchtung" #: src/advanced.cxx:1738 src/advanced_funcs.cxx:226 msgid "Environment" msgstr "Umgebung" #: src/wizard.cxx:498 msgid "Executable path not set or invalid" msgstr "Programmpfad nicht gesetzt oder ungültig" #: src/advanced.cxx:728 src/wizard.cxx:484 msgid "Executable:" msgstr "Programm:" #: src/Fl_OSG.cxx:198 msgid "FDM : " msgstr "" #: src/advanced.cxx:891 msgid "FDM:" msgstr "" #: src/advanced.cxx:1466 msgid "FGCom built-in" msgstr "FGCom built-in" #: src/advanced.cxx:1472 msgid "FGCom standalone" msgstr "FGCom standalone" #: src/wizard.cxx:522 msgid "FG_AIRCRAFT:" msgstr "" #: src/wizard.cxx:516 msgid "FG_ROOT path invalid or not set" msgstr "FG_ROOT Pfad ungültig oder nicht gesetzt" #: src/advanced.cxx:732 src/wizard.cxx:502 msgid "FG_ROOT:" msgstr "" #: src/wizard.cxx:610 msgid "FG_SCENERY empty" msgstr "FG_SCENERY ist leer" #: src/advanced.cxx:736 src/wizard.cxx:551 msgid "FG_SCENERY:" msgstr "" #: src/advanced.cxx:1190 msgid "FOV:" msgstr "Gesichtsfeld:" #: src/advanced.cxx:1820 msgid "FT_ASL[:THICKNESS_FT]" msgstr "Fuß über Meereshöhe" #: src/advanced.cxx:842 msgid "Failures" msgstr "Ausfälle" #: src/advanced.cxx:1132 msgid "Fastest" msgstr "Schnellster" #: src/advanced.cxx:757 src/wizard.cxx:832 src/advanced_funcs.cxx:215 msgid "Features" msgstr "Funktionen" #: src/advanced.cxx:1824 msgid "Fetch real weather" msgstr "Echtes Wetter abrufen" #: src/advanced.cxx:1191 msgid "Field of View angle" msgstr "Winkel des Gesichtsfeldes" #: src/advanced.cxx:1461 msgid "File:" msgstr "Datei:" #: src/wizard_funcs.cxx:2685 #, c-format msgid "Filename \"%s\" already exists." msgstr "Dateiname \"%s\" existiert bereits" #: src/advanced.cxx:1044 msgid "Fix:" msgstr "" #: src/advanced.cxx:1117 msgid "Flat" msgstr "Hart" #: src/advanced.cxx:886 src/advanced_funcs.cxx:216 msgid "Flight Model" msgstr "Flugmodell" #: src/wizard.cxx:474 msgid "FlightGear Wizard" msgstr "" #: src/wizard.cxx:1032 msgid "FlightGear has been started" msgstr "FlightGear ist gestarted" #: src/wizard.cxx:1029 msgid "FlightGear running..." msgstr "FlightGear läuft..." #: src/wizard.cxx:1052 msgid "Flightgear crashed..." msgstr "FlightGear ist abgestürzt..." #: src/wizard.cxx:1054 msgid "Flightgear encountered an unexpected failure" msgstr "FlightGear ist auf eine unerwartete Fehlfunktion gestoßen" #: src/advanced.cxx:1124 msgid "Fog" msgstr "Nebel" #: src/wizard.cxx:798 msgid "Framerate limiter :" msgstr "Bildfrequenzbegrenzer" #: src/advanced.cxx:951 src/advanced.cxx:956 src/advanced_funcs.cxx:217 msgid "Freeze" msgstr "Einfrieren" #: src/advanced.cxx:961 msgid "Fuel Freeze" msgstr "Kein Treibstoffverbrauch" #: src/advanced.cxx:1086 src/wizard.cxx:781 msgid "Full Screen" msgstr "Vollbild" #: src/wizard.cxx:621 msgid "Full path to the airport cache" msgstr "Vollständiger Pfadname zum Flugplatz-Cache" #: src/wizard.cxx:485 src/wizard.cxx:492 msgid "Full pathname to FlightGear executable" msgstr "Vollständiger Pfadname zum FlightGear-Programm" #: src/wizard.cxx:626 src/wizard.cxx:633 msgid "Full pathname to Terrasync executable" msgstr "Vollständiger Pfadname zum Terrasync-Programm" #: src/advanced.cxx:761 msgid "Game Mode" msgstr "Vollbildmodus" #: src/advanced.cxx:696 src/advanced_funcs.cxx:214 msgid "General" msgstr "Allgemein" #: src/advanced.cxx:1524 msgid "Generic:" msgstr "Generisch:" #: src/advanced.cxx:1145 msgid "Geometry:" msgstr "Abmessungen:" #: src/advanced.cxx:1056 msgid "Glide slope:" msgstr "Gleitpfad:" #: src/advanced.cxx:1308 msgid "HTTP server port" msgstr "HTTP-Server-Port" #: src/advanced.cxx:800 msgid "HUD" msgstr "" #: src/advanced.cxx:1013 src/advanced.cxx:1791 msgid "Heading:" msgstr "Richtung:" #: src/advanced.cxx:817 src/wizard.cxx:785 msgid "Horizon effect" msgstr "Horizonteffekt" #: src/wizard.cxx:937 msgid "Hostname" msgstr "" #: src/wizard.cxx:936 src/wizard.cxx:958 msgid "Hostname :" msgstr "" #: src/advanced.cxx:1492 msgid "Hostname:" msgstr "" #: src/advanced.cxx:832 msgid "Hud-3D" msgstr "HUD 3D" #: src/advanced.cxx:1450 msgid "Hz:" msgstr "" #: src/AirportTable.cxx:121 msgid "ICAO Id" msgstr "ICAO ID" #: src/advanced.cxx:938 msgid "In Air" msgstr "In der Luft" #: src/advanced.cxx:974 src/advanced_funcs.cxx:218 msgid "Initial Position" msgstr "Anfangsposition" #: src/advanced.cxx:1014 msgid "Initial aircraft heading (yaw) angle 0 to 360 degrees" msgstr "Richtung des Flugzeugs (Gieren) von 0 bis 360 Grad" #: src/advanced.cxx:996 msgid "Initial airspeed in knots" msgstr "Luftgeschwindigkeit in Knoten" #: src/advanced.cxx:990 msgid "Initial altitude in feet" msgstr "Anfangshöhe in Fuss" #: src/advanced.cxx:985 msgid "Initial latitude, south is negative" msgstr "Breitengrad, Negativwert für Süd" #: src/advanced.cxx:980 msgid "Initial longitude, west is negative" msgstr "Längengrad, Negativwert für West" #: src/advanced.cxx:1029 msgid "Initial pitch angle (Theta)" msgstr "Steigwinkel (Theta)" #: src/advanced.cxx:1021 msgid "Initial roll angle, (Phi)" msgstr "Rollwinkel (Phi)" #: src/advanced.cxx:1151 msgid "Initial visibility distance" msgstr "Sichtweite zu Beginn" #: src/wizard.cxx:965 msgid "Input port number" msgstr "Input-Portnummer" #: src/advanced.cxx:1382 src/advanced_funcs.cxx:222 msgid "Input/Output" msgstr "Ein-/Ausgabe" #: src/wizard.fl msgid "Installed airports" msgstr "" #: src/advanced.cxx:1588 msgid "Internal" msgstr "Intern" #: src/advanced.cxx:772 msgid "Intro Music" msgstr "Intro-Musik" #: src/advanced.cxx:707 msgid "Language:" msgstr "Sprache:" #: src/advanced.cxx:984 msgid "Latitude:" msgstr "Breitengrad" #: src/advanced.cxx:1837 msgid "Layer:" msgstr "Schicht:" #: src/wizard.cxx:1017 msgid "Load" msgstr "Laden" #: src/wizard.cxx:1018 msgid "Load a previously saved configuration" msgstr "Laden einer gespeicherten Konfiguration" #: src/wizard_funcs.cxx:2590 msgid "Load settings from..." msgstr "Lade Einstellungen von..." #: src/wizard.cxx:698 #, fuzzy msgid "Location :" msgstr "Auflösung :" #: src/advanced.cxx:1656 msgid "Log Level:" msgstr "Log-Level:" #: src/wizard_funcs.cxx:469 msgid "Log Window" msgstr "Log-Fenster" #: src/advanced.cxx:979 msgid "Longitude:" msgstr "Längengrad:" #: src/advanced.cxx:1207 msgid "Materials file:" msgstr "Szenerie Materialien-Datei:" #: src/advanced.cxx:1419 msgid "Medium:" msgstr "" #: src/wizard.cxx:875 msgid "Menu auto-visibility" msgstr "Auto-Sichtweite" #: src/advanced.cxx:1157 msgid "Meters" msgstr "Meter" #: src/advanced.cxx:1164 msgid "Miles" msgstr "Meilen" #: src/Fl_OSG.cxx:183 msgid "Model : " msgstr "Modell : " #: src/advanced.cxx:912 msgid "Model Hz:" msgstr "Hz-Rate:" #: src/wizard_funcs.cxx:749 #, c-format msgid "Model not found: '%s'" msgstr "Modell nicht gefunden: '%s'" #: src/advanced.cxx:778 msgid "Mouse Pointer" msgstr "Mauszeiger" #: src/wizard.cxx:600 msgid "Move scenery directory down" msgstr "Scenery-Verzeichnis nach unten schieben" #: src/wizard.cxx:589 msgid "Move scenery directory up" msgstr "Scenery-Verzeichnis nach oben schieben" #: src/advanced.cxx:1359 msgid "Multiplay 1:" msgstr "" #: src/advanced.cxx:1364 msgid "Multiplay 2:" msgstr "" #: src/wizard.cxx:949 msgid "Multiplayer" msgstr "" #: src/advanced.cxx:1350 msgid "Multiplayer Options" msgstr "Multiplayer-Optionen" #: src/advanced.cxx:1040 msgid "NDB:" msgstr "" #: src/AirportTable.cxx:121 msgid "Name" msgstr "" #: src/advanced.cxx:1576 msgid "Nav1" msgstr "" #: src/advanced.cxx:1559 msgid "Nav1:" msgstr "" #: src/advanced.cxx:1582 msgid "Nav2" msgstr "" #: src/advanced.cxx:1564 msgid "Nav2:" msgstr "" #: src/advanced.cxx:1296 src/advanced_funcs.cxx:221 msgid "Network" msgstr "Netzwerk" #: src/advanced.cxx:1396 src/advanced.cxx:1642 src/advanced.cxx:1687 #: src/advanced.cxx:1720 src/advanced.cxx:1752 msgid "New" msgstr "Neu" #: src/wizard.cxx:995 src/wizard_funcs.cxx:407 src/wizard_funcs.cxx:958 #: src/wizard_funcs.cxx:1802 src/wizard_funcs.cxx:1811 msgid "Next" msgstr "Weiter" #: src/advanced.cxx:1137 msgid "Nicest" msgstr "Schönster" #: src/Fl_OSG.cxx:207 msgid "No Rating" msgstr "Ohne Bewertung" #: src/advanced.cxx:906 msgid "No Trim" msgstr "Keine Trimmung" #: src/wizard_funcs.cxx:1755 msgid "Not set" msgstr "Nicht gesetzt" #: src/advanced.cxx:688 src/wizard.cxx:1064 src/wizard.cxx:1089 msgid "OK" msgstr "" #: src/advanced.cxx:1252 msgid "Offset (+/-) from real time" msgstr "Unterschied (+/-) von Realzeit" #: src/advanced.cxx:931 msgid "On Ground" msgstr "Am Boden" #: src/wizard.cxx:728 msgid "Only valid if carrier is set. For airport parking, use the list above." msgstr "" "Funktioniert nur, wenn der Flugzeugträger gewählt ist. Für Flughafen-" "Parkpositionen benutze die Liste darüber" #: src/main.cxx:162 #, fuzzy, c-format msgid "" "Options are:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " --version=\n" " -f, --fullscreen\n" "%s" msgstr "" "Optionen sind:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " -f, --fullscreen\n" "%s" #: src/wizard.cxx:969 msgid "Output port number" msgstr "Output-Portnummer" #: src/wizard_funcs.cxx:2685 src/fgfsrc.cxx:61 msgid "Overwrite" msgstr "Überschreiben" #: src/advanced.cxx:788 msgid "Panel" msgstr "Instrumentenbrett" #: src/wizard.cxx:727 msgid "Park pos :" msgstr "Parkposition :" #: src/AirportBrowser.cxx:89 msgid "Parking" msgstr "Parkpositionen" #: src/advanced.cxx:720 msgid "Path to additional XML properties file" msgstr "Pfad zu zusätzlicher XML-Property-Datei" #: src/wizard.cxx:959 msgid "Peer hostname" msgstr "Peer-Hostname" #: src/advanced.cxx:1028 msgid "Pitch:" msgstr "Steigwinkel:" #: src/wizard.cxx:1072 msgid "Please send this error report to the Flightgear development team" msgstr "Bitte sende diesen Fehlerbericht an das FlightGear-Entwicklerteam" #: src/wizard.cxx:1037 msgid "Please wait..." msgstr "Bitte warten..." #: src/advanced.cxx:1475 src/advanced.cxx:1498 msgid "Port:" msgstr "" #: src/wizard.cxx:1082 msgid "Prefetch Scenery" msgstr "Szenerie vorladen" #: src/wizard.cxx:991 msgid "Prev" msgstr "Zurück" #: src/wizard.cxx:670 msgid "Preview" msgstr "Vorschau" #: src/advanced.cxx:1612 src/advanced_funcs.cxx:224 msgid "Properties" msgstr "Einstellungen" #: src/wizard_funcs.cxx:790 msgid "Property '/sim/model/path' not found" msgstr "Property '/sim/model/path' nicht gefunden" #: src/advanced.cxx:1325 msgid "Property server port" msgstr "Property-Server-Port" #: src/advanced.cxx:1633 msgid "Property:" msgstr "" #: src/advanced.cxx:1405 msgid "Protocol:" msgstr "Protokoll:" #: src/advanced.cxx:1373 msgid "Proxy:" msgstr "" #: src/wizard.cxx:999 msgid "Quit" msgstr "Beenden" #: src/advanced.cxx:783 msgid "Random Objects" msgstr "Zufällige Objekte" #: src/advanced.cxx:877 msgid "Random Trees" msgstr "3D-Wälder darstellen" #: src/advanced.cxx:1806 msgid "Random Winds" msgstr "Zufällige Winde" #: src/wizard.cxx:836 msgid "Random objects" msgstr "Zufällige Objekte" #: src/wizard.cxx:840 msgid "Random trees" msgstr "Zufällige Bäume" #: src/Fl_OSG.cxx:205 msgid "Rating" msgstr "Bewertung" # Adjust horizontal position of stars #: src/Fl_OSG.cxx:179 msgid "RatingPos" msgstr "65" #: src/wizard.cxx:860 msgid "Real weather fetch" msgstr "Echtes Wetter" #: src/wizard.cxx:651 #, fuzzy msgid "Recently used aircraft :" msgstr "Flugzeug auswählen" #: src/AirportBrowser.cxx:96 msgid "Refresh" msgstr "Neu laden" #: src/AirportBrowser.cxx:99 msgid "Reload airports" msgstr "Landeplätze neu laden" #: src/advanced.cxx:1070 src/advanced_funcs.cxx:219 msgid "Rendering" msgstr "Rendering" #: src/advanced.cxx:1534 msgid "Repeat" msgstr "Neustart" #: src/wizard_funcs.cxx:977 msgid "Reset" msgstr "Neustart" #: src/wizard.cxx:768 msgid "Resolution :" msgstr "Auflösung :" #: src/wizard.cxx:1006 msgid "Restore default settings" msgstr "Zurücksetzen" #: src/advanced.cxx:1020 msgid "Roll:" msgstr "Rollen:" #: src/wizard_funcs.cxx:950 msgid "Run" msgstr "Starten" #: src/advanced.cxx:922 msgid "Run FDM faster than real time" msgstr "Betreibe FDM schneller als Echtzeit" #: src/advanced.cxx:913 msgid "Run the FDM at this rate (iterations per second)" msgstr "FDM in dieser Hertz-Rate betreiben (Iterationen pro Sekunde)" #: src/advanced.cxx:744 msgid "Runway:" msgstr "Startbahn:" #: src/AirportBrowser.cxx:84 msgid "Runways" msgstr "Rollbahn" #: src/wizard.cxx:1012 msgid "Save As..." msgstr "Speichern als" #: src/wizard.cxx:1013 msgid "Save current configuration to a file" msgstr "Aktuelle Konfiguration als Datei speichern" #: src/logwin.cxx:99 msgid "Save file as?" msgstr "Speichern unter" #: src/wizard_funcs.cxx:2681 msgid "Save settings as..." msgstr "Speichere Einstellungen als..." #: src/wizard.cxx:881 msgid "Scenarios" msgstr "Szenario" #: src/wizard.cxx:736 msgid "Scenery Prefetch" msgstr "Szenerie vorladen" #: src/wizard.cxx:552 msgid "Scenery directories" msgstr "Scenery-Verzeichnisse" #: src/advanced.cxx:1341 msgid "Screen shot HTTP server port" msgstr "HTTP-Server-Port für Screenshots" #: src/wizard.cxx:868 msgid "Season :" msgstr "Jahreszeit" #: src/wizard_funcs.cxx:1347 msgid "Select FG_AIRCRAFT directory" msgstr "FG_ROOT-Verzeichnis auswählen" #: src/wizard_funcs.cxx:1072 msgid "Select FG_ROOT directory" msgstr "FG_ROOT-Verzeichnis auswählen" #: src/wizard_funcs.cxx:1421 msgid "Select FG_SCENERY directory" msgstr "FG_SCENERY-Verzeichnis auswählen" #: src/wizard_funcs.cxx:992 msgid "Select FlightGear executable" msgstr "FightGear-Programm auswählen" #: src/wizard.cxx:477 msgid "Select Paths" msgstr "Pfade auswählen" #: src/wizard_funcs.cxx:1531 msgid "Select Terrasync executable" msgstr "Terrasync-Programmpfad auswählen" #: src/wizard.cxx:704 msgid "Select a location" msgstr "Startplatz auswählen" #: src/advanced_funcs.cxx:293 msgid "Select a preferences file" msgstr "Preferences-Datei auswählen" #: src/wizard_funcs.cxx:1766 src/wizard_funcs.cxx:1770 #: src/wizard_funcs.cxx:2284 msgid "Select a scenario to display its description" msgstr "Szenario auswählen, um Beschreibung zu sehen" #: src/wizard.cxx:640 msgid "Select an aircraft" msgstr "Flugzeug auswählen" #: src/advanced_funcs.cxx:238 msgid "Select browser" msgstr "Browser auswählen" #: src/io.cxx:301 msgid "Select file" msgstr "Datei auswählen" #: src/wizard.cxx:576 msgid "Select the line in the FG_SCENERY list that is the TerraSync directory." msgstr "" "Zeile in der FG_SCENERY Liste auswählen, die als TerraSync Verzeichnis " "genutzt wird." #: src/advanced.cxx:1560 msgid "Set the NAV1 radio frequency, optionally preceded by a radial" msgstr "Funkfrequenz von NAV1, voreingestelltes Radial ist optional" #: src/advanced.cxx:1199 msgid "Set the maximum degree of anisotropy in texture filtering" msgstr "Maximaler Grad der Anisotropie der Textur-Filterung" #: src/advanced.cxx:1108 msgid "Shading" msgstr "Schattierungen" #: src/wizard.cxx:753 msgid "Show command line" msgstr "Kommandozeile anzeigen" #: src/advanced.cxx:1091 msgid "Sky Blend" msgstr "Farbübergänge" #: src/advanced.cxx:1111 msgid "Smooth" msgstr "Weich" #: src/advanced.cxx:794 msgid "Sound" msgstr "" #: src/advanced.cxx:1871 msgid "Span (m):" msgstr "Spannweite (m):" #: src/advanced.cxx:1158 msgid "Specify visibilty in meters" msgstr "Sichtweite in Metern angeben" #: src/advanced.cxx:1165 msgid "Specify visiblity in miles" msgstr "Sichtweite in Meilen angeben" #: src/advanced.cxx:837 src/wizard.cxx:794 msgid "Specular highlight" msgstr "Glanz" #: src/advanced.cxx:1799 msgid "Speed (kts):" msgstr "Knoten:" #: src/advanced.cxx:921 msgid "Speed:" msgstr "Geschwindigkeit:" #: src/advanced.cxx:766 msgid "Splash Screen" msgstr "Startbild" #: src/advanced.cxx:932 msgid "Start at ground level" msgstr "Am Boden starten" #: src/advanced.cxx:1239 msgid "Start date gmt" msgstr "Startzeit in GMT" #: src/advanced.cxx:1245 msgid "Start date lat" msgstr "Startzeit Breitengrad" #: src/advanced.cxx:1233 msgid "Start date sys" msgstr "Systemstartzeit" #: src/advanced.cxx:939 msgid "Start in the air" msgstr "In der Luft starten" #: src/advanced.cxx:957 msgid "Start paused" msgstr "Im Pause-Modus starten" #: src/wizard.cxx:690 msgid "Status :" msgstr "" #: src/advanced.cxx:1227 msgid "Synchronize simulation time with local time" msgstr "Simulationszeit an Ortszeit anpassen" #: src/advanced.cxx:1219 msgid "Synchronize simulation time with real time" msgstr "Simulationszeit an Realzeit anpassen" #: src/Fl_OSG.cxx:193 msgid "Systems : " msgstr "Systeme : " #: src/advanced.cxx:1507 msgid "TCP" msgstr "" #: src/wizard.cxx:910 msgid "TerraSync" msgstr "" #: src/wizard.cxx:575 msgid "TerraSync directory" msgstr "TerraSync-Verzeichnisse" #: src/wizard_funcs.cxx:1799 msgid "TerraSync directory not set" msgstr "TerraSync Verzeichnis ist nicht gesetzt" #: src/wizard_funcs.cxx:1808 msgid "TerraSync executable not set" msgstr "TerraSync-Programmpfad ist nicht gesetzt" #: src/wizard_funcs.cxx:2779 msgid "TerraSync must be configured" msgstr "TerraSync muss konfiguriert werden" #: src/wizard.cxx:625 msgid "Terrasync exe:" msgstr "Terrasync Programmpfad:" #: src/advanced.cxx:1198 msgid "Texture filtering:" msgstr "Textur-Filterung" #: src/advanced.cxx:1097 msgid "Textures" msgstr "Texturen" #: src/advanced.cxx:1858 msgid "Thickness (ft):" msgstr "Schichtdicke (ft):" #: src/advanced.cxx:1213 src/advanced_funcs.cxx:220 msgid "Time" msgstr "Zeit" #: src/advanced.cxx:1226 msgid "Time match local" msgstr "Ortszeitanpassung" #: src/advanced.cxx:1218 msgid "Time match real" msgstr "Realzeitanpassung" #: src/advanced.cxx:1279 msgid "Time of day" msgstr "Tageszeit" #: src/wizard.cxx:852 msgid "Time of day :" msgstr "Tageszeit :" #: src/wizard.cxx:1040 msgid "To change aircraft, exit FlightGear and return to this launcher" msgstr "Um das Flugzeug zu wechseln, FG beenden und hierhin zurückkehren" #: src/wizard.cxx:799 msgid "Too much framerate hurts the smoothness of the simulation" msgstr "Zu hohe Bildfrequenz beeinträchtigt eine ruhige Simulation" #: src/advanced.cxx:1671 msgid "Trace Read Properties" msgstr "Lese-Properties protokollieren" #: src/advanced.cxx:1704 msgid "Trace Write Properties" msgstr "Schreib-Properties zurückverfolgen" #: src/advanced.cxx:1879 msgid "Transition (ft):" msgstr "Übergang (ft):" #: src/advanced.cxx:1813 msgid "Turbulence" msgstr "Turbulenzen" #: src/advanced.cxx:1514 msgid "UDP" msgstr "" #: src/wizard_funcs.cxx:1323 #, c-format msgid "" "Unable to delete '%s':\n" "%s" msgstr "" "Kann '%s' nicht löschen:\n" "%s" #: src/wizard_funcs.cxx:1234 src/wizard_funcs.cxx:1235 #: src/wizard_funcs.cxx:1237 msgid "Unknown" msgstr "Unbekannt" #: src/wizard_funcs.cxx:2773 #, c-format msgid "Unknown airport : '%s'" msgstr "Unbekannter Flugplatz: '%s'" #: src/wizard.cxx:790 msgid "Use with caution. It may drop your framerate dramatically" msgstr "Vorsicht, kann die Bildrate stark verschlechtern" #: src/advanced.cxx:1036 msgid "VOR:" msgstr "" #: src/advanced.cxx:1679 src/advanced.cxx:1712 src/advanced.cxx:1761 msgid "Value:" msgstr "Wert:" #: src/advanced.cxx:1172 msgid "View Offset:" msgstr "Sehrichtung:" #: src/wizard.cxx:695 msgid "Viewer" msgstr "Betrachter" #: src/advanced.cxx:1150 msgid "Visibility:" msgstr "Sichtweite:" #: src/wizard.cxx:1058 msgid "We are sorry for this inconvenience." msgstr "Wir entschuldigen uns für die Unanehmlichkeit." #: src/advanced.cxx:1770 src/advanced_funcs.cxx:227 msgid "Weather" msgstr "Wetter" #: src/advanced.cxx:1778 msgid "Wind Direction" msgstr "Windrichtung" #: src/advanced.cxx:1800 msgid "Wind speed (kts)" msgstr "Windgeschwindigkeit (Knoten)" #: src/advanced.cxx:1146 src/wizard.cxx:769 msgid "Window geometry, WxH" msgstr "Fensterabmessung BxH" #: src/advanced.cxx:1103 msgid "Wireframe" msgstr "Drahtgitter" #: src/advanced_funcs.cxx:294 msgid "XML Files(*.xml)" msgstr "XML-Dateien(*.xml)" #: src/wizard_funcs.cxx:86 src/advanced_funcs.cxx:110 msgid "afternoon" msgstr "Nachmittag" #: src/advanced_funcs.cxx:122 msgid "alert" msgstr "Alarm" #: src/wizard_funcs.cxx:107 msgid "alpha" msgstr "Alpha-Stadium" #: src/wizard_funcs.cxx:106 msgid "beta" msgstr "Beta-Stadium" #: src/wizard.cxx:816 msgid "bpp :" msgstr "Bit/Pixel:" # #: src/advanced.cxx:1176 msgid "bpp:" msgstr "Bit/Pixel:" #: src/advanced_funcs.cxx:128 msgid "broken" msgstr "Durchbrochen" #: src/advanced_funcs.cxx:118 msgid "bulk" msgstr "Ausführlich" #: src/advanced.cxx:1814 msgid "calm (0.0) to severe (1.0)" msgstr "Ruhig (0.0) bis schwer (1.0)" #: src/advanced.cxx:1285 msgid "choice:" msgstr "Auswahl:" #: src/advanced_funcs.cxx:131 msgid "cirrus" msgstr "Cirrus" #: src/advanced_funcs.cxx:132 msgid "clear" msgstr "Wolkenlos" #: src/wizard_funcs.cxx:83 src/advanced_funcs.cxx:107 msgid "dawn" msgstr "Tagesanbruch" #: src/advanced_funcs.cxx:119 msgid "debug" msgstr "Debug" #: src/wizard_funcs.cxx:112 msgid "devel" msgstr "Entwicklung" #: src/wizard_funcs.cxx:110 msgid "developement" msgstr "Entwicklung" #: src/wizard_funcs.cxx:111 msgid "development" msgstr "Entwicklung" #: src/wizard_funcs.cxx:87 src/advanced_funcs.cxx:111 msgid "dusk" msgstr "Abenddämmerung" #: src/wizard_funcs.cxx:108 msgid "early alpha" msgstr "Frühes Alpha-Stadium" #: src/wizard_funcs.cxx:104 msgid "early production" msgstr "Frühe Fertigstellung" #: src/wizard_funcs.cxx:103 msgid "early-production" msgstr "Frühe Fertigstellung" #: src/wizard_funcs.cxx:88 src/advanced_funcs.cxx:112 msgid "evening" msgstr "Abend" #: src/wizard_funcs.cxx:114 msgid "experimental" msgstr "Experimentell" #: src/advanced_funcs.cxx:130 msgid "few" msgstr "Vereinzelt" #: src/AirportBrowser.cxx:571 msgid "gzopen error" msgstr "gzopen Fehler" #: src/advanced_funcs.cxx:148 msgid "highest filtering" msgstr "Höchste Filterung" #: src/advanced.cxx:1301 msgid "httpd" msgstr "" #: src/wizard.cxx:964 msgid "in :" msgstr "" #: src/advanced_funcs.cxx:120 msgid "info" msgstr "Info" #: src/advanced.cxx:1360 msgid "in|out,hz,address,port" msgstr "" #: src/advanced_funcs.cxx:137 msgid "joystick" msgstr "Joystick" #: src/advanced.cxx:1334 msgid "jpg-httpd" msgstr "" #: src/advanced_funcs.cxx:138 msgid "keyboard" msgstr "Tastatur" #: src/wizard_funcs.cxx:89 src/advanced_funcs.cxx:113 msgid "midnight" msgstr "Mitternacht" #: src/wizard_funcs.cxx:84 src/advanced_funcs.cxx:108 msgid "morning" msgstr "Morgen" #: src/advanced_funcs.cxx:139 msgid "mouse" msgstr "Maus" #: src/advanced_funcs.cxx:144 msgid "no filtering" msgstr "Keine Filterung" #: src/wizard_funcs.cxx:85 src/advanced_funcs.cxx:109 msgid "noon" msgstr "Mittag" #: src/advanced.cxx:1052 msgid "offset azimuth:" msgstr "Azimuth dazu:" #: src/advanced.cxx:1048 msgid "offset distance:" msgstr "Abstand dazu:" #: src/wizard.cxx:968 msgid "out :" msgstr "" #: src/advanced_funcs.cxx:127 msgid "overcast" msgstr "Bedeckt" #: src/advanced.cxx:847 msgid "pitot" msgstr "Staurohre" #: src/wizard_funcs.cxx:102 msgid "production" msgstr "Fertigstellung" #: src/advanced.cxx:1634 msgid "prop=value" msgstr "prop=wert" #: src/advanced.cxx:1318 msgid "props" msgstr "" #: src/wizard.cxx:503 src/wizard.cxx:510 msgid "root data path" msgstr "Wurzelverzeichnis von \"data\" " #: src/advanced_funcs.cxx:129 msgid "scattered" msgstr "Aufgelockert" # soll das pilot oder pivot heissen? #: src/advanced.cxx:852 msgid "static" msgstr "Atmosphärisch" #: src/wizard_funcs.cxx:94 msgid "summer" msgstr "Sommer" #: src/advanced.cxx:857 msgid "system" msgstr "System" #: src/advanced.cxx:1001 msgid "uBody:" msgstr "" #: src/advanced.cxx:1005 msgid "vBody:" msgstr "" #: src/advanced.cxx:862 msgid "vacuum" msgstr "Vakuum" #: src/advanced.cxx:1009 msgid "wBody" msgstr "" #: src/advanced_funcs.cxx:121 msgid "warn" msgstr "Warnung" #: src/wizard_funcs.cxx:95 msgid "winter" msgstr "Winter" #~ msgid "Not ready for Rembrandt" #~ msgstr "Keine Rembrandt Unterstützung" #~ msgid "Ready for Rembrandt" #~ msgstr "Rembrandt Unterstützung" fg-fgrun/po/es.po000066400000000000000000001075451245722473500142050ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Frederic Bouvier # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # Daniel Jorge Hernandez Rivero, daniel.hernandez104@estudiantes.ulpgc.es, 2008-09. # Xavier Del Campo Romero, nitusdarkthief@hotmail.com, 2008-09. #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-03 02:20+0200\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=CP1252\n" "Content-Transfer-Encoding: 8bit\n" #: src/logwin.cxx:34 msgid "&Close" msgstr "&Cerrar" #: src/logwin.cxx:32 msgid "&File" msgstr "&Fichero" #: src/logwin.cxx:33 msgid "&Save" msgstr "&Guardar" #: src/advanced.cxx:715 src/advanced.cxx:724 src/advanced.cxx:1467 msgid "..." msgstr "..." #: src/advanced_funcs.cxx:145 msgid "2.0" msgstr "2.0" #: src/advanced.cxx:1081 src/wizard.cxx:812 msgid "3D Clouds" msgstr "Nubes en 3D" #: src/wizard.cxx:643 #, fuzzy msgid "3D Preview" msgstr "Vista previa" #: src/advanced_funcs.cxx:146 msgid "4.0" msgstr "4.0" #: src/advanced_funcs.cxx:147 msgid "8.0" msgstr "8.0" #: src/wizard.cxx:942 msgid ":" msgstr ":" #: src/wizard_funcs.cxx:889 src/wizard_funcs.cxx:2449 #: src/AirportBrowser.cxx:470 src/fgfsrc.cxx:101 msgid "" msgstr "" #: src/wizard_funcs.cxx:225 #, c-format msgid "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

This program is released under the " "GNU General Public License (http://www.gnu.org/copyleft/gpl.html).

" "

Report bugs to http://sourceforge.net/projects/fgrun

" msgstr "" " Control de lanzamiento FlightGear %s " "

Consola FlightGear %s

Este programa está publicado bajo " "la Licencia Pública General GNU (http://www.gnu.org/copyleft/gpl.html).

" "

Informadnos sobre bugs en http://sourceforge.net/projects/fgrun

" #: src/wizard.cxx:599 msgid "@2>" msgstr "@2>" #: src/wizard.cxx:588 msgid "@8>" msgstr "@8>" #: src/advanced.cxx:1568 msgid "ADF:" msgstr "ADF:" #: src/advanced.cxx:867 #, fuzzy msgid "AI Models" msgstr "Modelos IA" #: src/advanced.cxx:873 src/wizard.cxx:848 msgid "AI Traffic" msgstr "Tráfico IA" #: src/wizard.cxx:844 msgid "AI models" msgstr "Modelos IA" #: src/wizard_funcs.cxx:977 src/fgfsrc.cxx:61 msgid "Abort" msgstr "Abortar" #: src/fgfsrc.cxx:61 #, c-format msgid "About to overwrite %s." msgstr "A punto de sobrescribir %s." #: src/wizard_funcs.cxx:977 msgid "About to reset current parameters" msgstr "A punto de restaurar los parametros actuales" #: src/wizard.cxx:562 msgid "Add a scenery directory" msgstr "Añadir un directorio de escenarios" #: src/wizard.cxx:533 #, fuzzy msgid "Add an aircraft directory" msgstr "Añadir un directorio de escenarios" #: src/wizard.cxx:532 src/wizard.cxx:561 msgid "Add..." msgstr "Añadir..." #: src/advanced.cxx:672 msgid "Advanced Options" msgstr "Opciones Avanzadas" #: src/wizard.cxx:747 msgid "Advanced..." msgstr "Avanzado..." #: src/wizard.cxx:523 #, fuzzy msgid "Aircraft directories" msgstr "Directorios de escenarios" #: src/advanced.cxx:748 msgid "Aircraft:" msgstr "Avión:" #: src/wizard.cxx:1097 #, fuzzy msgid "Airport to fetch : " msgstr "Caché de aeropuertos:" #: src/advanced.cxx:740 msgid "Airport:" msgstr "Aeropuerto:" #: src/wizard.cxx:620 msgid "Airports Cache:" msgstr "Caché de aeropuertos:" #: src/advanced.cxx:995 msgid "Airspeed:" msgstr "Velocidad:" #: src/wizard.fl msgid "All airports" msgstr "" #: src/advanced.cxx:989 msgid "Altitude:" msgstr "Altitud:" #: src/wizard.cxx:1068 msgid "An error report has been generated in the file below :" msgstr "Un informe de error ha sido creado en el siguiente archivo:" #: src/advanced.cxx:806 msgid "Anti-alias HUD" msgstr "Eliminar bordes HUD" #: src/wizard.cxx:931 msgid "Atlas" msgstr "Atlas" #: src/wizard.cxx:692 msgid "Author(s) :" msgstr "Autor(es) :" #: src/advanced.cxx:812 src/wizard.cxx:864 msgid "Auto-coordination" msgstr "Coordinación entre mando y pedales" #: src/wizard.cxx:659 #, fuzzy msgid "Available aircraft :" msgstr "Avión:" #: src/advanced.cxx:1554 src/advanced_funcs.cxx:223 msgid "Avionics" msgstr "Aviónica" #: src/advanced.cxx:1481 msgid "Baud Rate:" msgstr "Ratio de Baudios:" #: src/advanced.cxx:711 msgid "Browser:" msgstr "Buscador:" #: src/wizard.cxx:954 msgid "Callsign :" msgstr "Matrícula :" #: src/advanced.cxx:1355 msgid "Callsign:" msgstr "Matrícula:" #: src/advanced.cxx:685 src/wizard.cxx:1085 msgid "Cancel" msgstr "Cancelar" #: src/wizard.cxx:725 msgid "Carrier : " msgstr "Portaaviones : " #: src/wizard.cxx:721 msgid "Carrier Ops" msgstr "Portaaviones Ops" #: src/advanced.cxx:1819 msgid "Ceiling:" msgstr "Techo:" #: src/wizard.cxx:1007 msgid "" "Clear all selected options and return to the install situation. Useful if " "FGFS don't start anymore." msgstr "" #: src/wizard.cxx:615 msgid "Clear the content of the airport cache" msgstr "" #: src/advanced.cxx:1060 msgid "Climb rate:" msgstr "Actitud de ascenso:" #: src/advanced.cxx:965 msgid "Clock Freeze" msgstr "Pausar el Reloj" #: src/advanced.cxx:1075 src/advanced.cxx:1833 src/advanced_funcs.cxx:228 msgid "Clouds" msgstr "Nubes" #: src/Fl_OSG.cxx:188 msgid "Cockpit : " msgstr "" #: src/advanced.cxx:1177 src/wizard.cxx:817 msgid "Color depth (bits per pixel)" msgstr "Profundidad del color (bits por píxel)" #: src/advanced.cxx:719 msgid "Config:" msgstr "Configuración:" #: src/advanced.cxx:892 msgid "Core Flight Dynamics Model" msgstr "Core Flight Dynamics Model" #: src/advanced.cxx:1865 msgid "Coverage:" msgstr "Cobertura:" #: src/wizard.cxx:894 msgid "Ctrl-click to deselect a single item" msgstr "" #: src/wizard.cxx:886 msgid "Ctrl-click to select or deselect a single item" msgstr "" #: src/advanced.cxx:1601 msgid "DME:" msgstr "DME:" #: src/advanced.cxx:1650 src/advanced_funcs.cxx:225 msgid "Debugging" msgstr "Debugging" #: src/advanced.cxx:1400 src/advanced.cxx:1628 src/advanced.cxx:1691 #: src/advanced.cxx:1724 src/advanced.cxx:1756 src/wizard.cxx:537 #: src/wizard.cxx:566 src/wizard.cxx:614 msgid "Delete" msgstr "Borrar" #: src/wizard.cxx:567 msgid "Delete a scenery directory" msgstr "Borrar un directorio de escenarios" #: src/wizard.cxx:538 #, fuzzy msgid "Delete an aircraft directory" msgstr "Borrar un directorio de escenarios" #: src/wizard_funcs.cxx:1752 msgid "Description of " msgstr "Descripcion de" #: src/wizard.cxx:893 msgid "Deselect all" msgstr "" #: src/wizard_funcs.cxx:109 msgid "Development" msgstr "Desarrollo" #: src/advanced.cxx:1792 msgid "Direction wind is coming from." msgstr "Dirección desde donde viene el viento." #: src/advanced.cxx:1435 msgid "Direction:" msgstr "Dirección:" #: src/advanced.cxx:1127 msgid "Disabled" msgstr "Desactivada" #: src/wizard.cxx:764 msgid "Display" msgstr "Visualizar" #: src/wizard.fl msgid "Display all airports" msgstr "" #: src/wizard.fl msgid "Display only installed airports" msgstr "" #: src/advanced.cxx:767 msgid "Display splash screen at startup" msgstr "Muestra un dibujo del avión o del simulador mientras FlightGear carga" #: src/advanced.cxx:827 msgid "Distance attenuation" msgstr "Atenuación de la vista" #: src/advanced.cxx:907 msgid "Do not attempt to trim the model" msgstr "No intente nivelar el modelo" #: src/wizard_funcs.cxx:2685 #, fuzzy msgid "Don't overwrite" msgstr "No sobrescribir" #: src/wizard_funcs.cxx:113 msgid "Early development" msgstr "Desarrollo primerizo" #: src/wizard_funcs.cxx:105 msgid "Early production" msgstr "Realizacion primeriza" #: src/advanced.cxx:1851 msgid "Elevation(ft):" msgstr "Elevación(pies):" #: src/advanced.cxx:1076 msgid "Enable 2D (flat) cloud layers" msgstr "Activar nubes 2D planas" #: src/advanced.cxx:1082 msgid "Enable 3D (volumetric) cloud layers" msgstr "Activar nubes en 3D con volumen" #: src/advanced.cxx:833 msgid "Enable 3D HUD" msgstr "Activar HUD en 3D" #: src/advanced.cxx:868 msgid "Enable AI traffic" msgstr "Activar tráfico IA" #: src/advanced.cxx:1302 msgid "Enable HTTP server" msgstr "Permitir servidor HTTP" #: src/advanced.cxx:801 msgid "Enable Heads Up Display" msgstr "Activar HUD" #: src/advanced.cxx:807 msgid "Enable anti-aliased HUD" msgstr "Activar HUD eliminando bordes serrados" #: src/advanced.cxx:813 msgid "Enable auto-coordinated turns." msgstr "Activar coordinación entre mando y pedales" #: src/advanced.cxx:818 msgid "Enable celestial body growth illusion near the horizon" msgstr "Crea un efecto de horizonte en el cielo" #: src/advanced.cxx:823 msgid "Enable enhanced runway lighting" msgstr "Activa las luces en las pistas" #: src/advanced.cxx:779 msgid "Enable extra mouse pointer" msgstr "Activar puntero de ratón extra" #: src/advanced.cxx:762 msgid "Enable full screen game mode" msgstr "Ejecuta el simulador a pantalla completa" #: src/advanced.cxx:1087 msgid "Enable full screen mode" msgstr "Arranca FlightGear en pantalla completa" #: src/advanced.cxx:773 msgid "Enable introduction music during start up" msgstr "Activar música al comenzar" #: src/advanced.cxx:1319 msgid "Enable property server" msgstr "Activar el servidor de propiedad" #: src/advanced.cxx:784 msgid "Enable random scenery objects" msgstr "Activa objetos aleatorios como edificios o animales" #: src/advanced.cxx:828 msgid "Enable runway light distance attenuation" msgstr "Crea un efecto borroso en las luces de las pistas con la distancia" #: src/advanced.cxx:1335 msgid "Enable screen shot HTTP server" msgstr "Permitir capturar el servidor HTTP" #: src/advanced.cxx:1092 msgid "Enable sky blending" msgstr "Crea un gradiente del cielo para dar mayor realismo" #: src/advanced.cxx:795 msgid "Enable sound effects" msgstr "Activar efectos de sonidos" #: src/advanced.cxx:838 msgid "Enable specular reflections on textured objects" msgstr "Activa un brillo especular sobre el suelo y otros objetos" #: src/advanced.cxx:789 msgid "Enable the instrument panel" msgstr "Activa el panel 2D" #: src/advanced.cxx:1104 msgid "Enable wireframe drawing mode" msgstr "Activa el modo Wireframe (modo de alambre)" #: src/advanced.cxx:822 msgid "Enhanced lighting" msgstr "Activar iluminación" #: src/wizard.cxx:789 msgid "Enhanced runway lighting" msgstr "Reforzar la iluminación de la pista" #: src/advanced.cxx:1738 src/advanced_funcs.cxx:226 msgid "Environment" msgstr "Ambiente" #: src/wizard.cxx:498 msgid "Executable path not set or invalid" msgstr "" #: src/advanced.cxx:728 src/wizard.cxx:484 msgid "Executable:" msgstr "Programa ejecutable:" #: src/Fl_OSG.cxx:198 #, fuzzy msgid "FDM : " msgstr "FDM:" #: src/advanced.cxx:891 msgid "FDM:" msgstr "FDM:" #: src/advanced.cxx:1466 msgid "FGCom built-in" msgstr "FGCom built-in" #: src/advanced.cxx:1472 msgid "FGCom standalone" msgstr "FGCom standalone" #: src/wizard.cxx:522 msgid "FG_AIRCRAFT:" msgstr "" #: src/wizard.cxx:516 msgid "FG_ROOT path invalid or not set" msgstr "" #: src/advanced.cxx:732 src/wizard.cxx:502 msgid "FG_ROOT:" msgstr "FG_INICIO" #: src/wizard.cxx:610 #, fuzzy msgid "FG_SCENERY empty" msgstr "FG_ESCENARIO" #: src/advanced.cxx:736 src/wizard.cxx:551 msgid "FG_SCENERY:" msgstr "FG_ESCENARIO" #: src/advanced.cxx:1190 msgid "FOV:" msgstr "FOV:" #: src/advanced.cxx:1820 msgid "FT_ASL[:THICKNESS_FT]" msgstr "FT_ASL[:THICKNESS_FT]" #: src/advanced.cxx:842 msgid "Failures" msgstr "Fallos" #: src/advanced.cxx:1132 msgid "Fastest" msgstr "La más rápida" #: src/advanced.cxx:757 src/wizard.cxx:832 src/advanced_funcs.cxx:215 msgid "Features" msgstr "Opciones adicionales:" #: src/advanced.cxx:1824 msgid "Fetch real weather" msgstr "Utilizar meteorología real" #: src/advanced.cxx:1191 msgid "Field of View angle" msgstr "Ajuste del ángulo de la vista" #: src/advanced.cxx:1461 msgid "File:" msgstr "Archivo:" #: src/wizard_funcs.cxx:2685 #, c-format msgid "Filename \"%s\" already exists." msgstr "El archivo \"%s\" ya existe." #: src/advanced.cxx:1044 msgid "Fix:" msgstr "FIX:" #: src/advanced.cxx:1117 msgid "Flat" msgstr "Plano" #: src/advanced.cxx:886 src/advanced_funcs.cxx:216 msgid "Flight Model" msgstr "Modelo de Vuelo" #: src/wizard.cxx:474 msgid "FlightGear Wizard" msgstr "FlightGear Wizard" #: src/wizard.cxx:1032 msgid "FlightGear has been started" msgstr "FlightGear está en marcha" #: src/wizard.cxx:1029 msgid "FlightGear running..." msgstr "FlightGear ejecutándose..." #: src/wizard.cxx:1052 msgid "Flightgear crashed..." msgstr "FlightGear se ha cerrado..." #: src/wizard.cxx:1054 msgid "Flightgear encountered an unexpected failure" msgstr "FlightGear ha encontrado un error inesperado" #: src/advanced.cxx:1124 msgid "Fog" msgstr "Niebla" #: src/wizard.cxx:798 msgid "Framerate limiter :" msgstr "Limitador de fotogramas por segundo :" #: src/advanced.cxx:951 src/advanced.cxx:956 src/advanced_funcs.cxx:217 msgid "Freeze" msgstr "Pausar" #: src/advanced.cxx:961 msgid "Fuel Freeze" msgstr "Combustible Ilimitado" #: src/advanced.cxx:1086 src/wizard.cxx:781 msgid "Full Screen" msgstr "Pantalla completa" #: src/wizard.cxx:621 #, fuzzy msgid "Full path to the airport cache" msgstr "Ruta completa hacia el programa FlightGear" #: src/wizard.cxx:485 src/wizard.cxx:492 msgid "Full pathname to FlightGear executable" msgstr "Ruta completa hacia el programa FlightGear" #: src/wizard.cxx:626 src/wizard.cxx:633 #, fuzzy msgid "Full pathname to Terrasync executable" msgstr "Ruta completa hacia el programa FlightGear" #: src/advanced.cxx:761 msgid "Game Mode" msgstr "Pantalla Completa" #: src/advanced.cxx:696 src/advanced_funcs.cxx:214 msgid "General" msgstr "General" #: src/advanced.cxx:1524 msgid "Generic:" msgstr "Genérico:" #: src/advanced.cxx:1145 msgid "Geometry:" msgstr "Geometría" #: src/advanced.cxx:1056 msgid "Glide slope:" msgstr "Glide slope" #: src/advanced.cxx:1308 msgid "HTTP server port" msgstr "Puerto del servidor HTTP" #: src/advanced.cxx:800 msgid "HUD" msgstr "HUD" #: src/advanced.cxx:1013 src/advanced.cxx:1791 msgid "Heading:" msgstr "Rumbo:" #: src/advanced.cxx:817 src/wizard.cxx:785 msgid "Horizon effect" msgstr "Efecto en el horizonte" #: src/wizard.cxx:937 msgid "Hostname" msgstr "Dirección del servidor" #: src/wizard.cxx:936 src/wizard.cxx:958 msgid "Hostname :" msgstr "Dirección del servidor :" #: src/advanced.cxx:1492 msgid "Hostname:" msgstr "Dirección del servidor:" #: src/advanced.cxx:832 msgid "Hud-3D" msgstr "HUD-3D" #: src/advanced.cxx:1450 msgid "Hz:" msgstr "Hz:" #: src/AirportTable.cxx:121 msgid "ICAO Id" msgstr "ID ICAO" #: src/advanced.cxx:938 msgid "In Air" msgstr "En el Aire" #: src/advanced.cxx:974 src/advanced_funcs.cxx:218 msgid "Initial Position" msgstr "Posición Inicial" #: src/advanced.cxx:1014 msgid "Initial aircraft heading (yaw) angle 0 to 360 degrees" msgstr "Escoge el rumbo inicial del avión de 0 a 360 grados" #: src/advanced.cxx:996 msgid "Initial airspeed in knots" msgstr "Escoge la velocidad aérea inicial en nudos" #: src/advanced.cxx:990 msgid "Initial altitude in feet" msgstr "Altitud inicial en pies" #: src/advanced.cxx:985 msgid "Initial latitude, south is negative" msgstr "Latitud inicial. El hemisferio sur es negativo" #: src/advanced.cxx:980 msgid "Initial longitude, west is negative" msgstr "Longitud inicial. El oeste es negativo" #: src/advanced.cxx:1029 msgid "Initial pitch angle (Theta)" msgstr "Ángulo inicial del pitch (Theta)" #: src/advanced.cxx:1021 msgid "Initial roll angle, (Phi)" msgstr "Angulo de roll inicial, (Phi)" #: src/advanced.cxx:1151 msgid "Initial visibility distance" msgstr "Visibilidad inicial:" #: src/wizard.cxx:965 msgid "Input port number" msgstr "Número del puerto de entrada" #: src/advanced.cxx:1382 src/advanced_funcs.cxx:222 msgid "Input/Output" msgstr "Entrada/Salida" #: src/wizard.fl msgid "Installed airports" msgstr "" #: src/advanced.cxx:1588 msgid "Internal" msgstr "Interno" #: src/advanced.cxx:772 msgid "Intro Music" msgstr "Música de Introducción" #: src/advanced.cxx:707 msgid "Language:" msgstr "Idioma:" #: src/advanced.cxx:984 msgid "Latitude:" msgstr "Latitud:" #: src/advanced.cxx:1837 msgid "Layer:" msgstr "Capa:" #: src/wizard.cxx:1017 msgid "Load" msgstr "Cargar" #: src/wizard.cxx:1018 msgid "Load a previously saved configuration" msgstr "" #: src/wizard_funcs.cxx:2590 msgid "Load settings from..." msgstr "Cargar datos de..." #: src/wizard.cxx:698 #, fuzzy msgid "Location :" msgstr "Resolución :" #: src/advanced.cxx:1656 msgid "Log Level:" msgstr "Nivel de Log:" #: src/wizard_funcs.cxx:469 msgid "Log Window" msgstr "Ventana de Informes" #: src/advanced.cxx:979 msgid "Longitude:" msgstr "Longitud:" #: src/advanced.cxx:1207 msgid "Materials file:" msgstr "" #: src/advanced.cxx:1419 msgid "Medium:" msgstr "Medio:" #: src/wizard.cxx:875 msgid "Menu auto-visibility" msgstr "" #: src/advanced.cxx:1157 msgid "Meters" msgstr "Metros" #: src/advanced.cxx:1164 msgid "Miles" msgstr "Millas" #: src/Fl_OSG.cxx:183 #, fuzzy msgid "Model : " msgstr "Hz en Modelo:" #: src/advanced.cxx:912 msgid "Model Hz:" msgstr "Hz en Modelo:" #: src/wizard_funcs.cxx:749 #, c-format msgid "Model not found: '%s'" msgstr "Modelo no encontrado: '%s'" #: src/advanced.cxx:778 msgid "Mouse Pointer" msgstr "Puntero del Ratón" #: src/wizard.cxx:600 #, fuzzy msgid "Move scenery directory down" msgstr "Añadir un directorio de escenarios" #: src/wizard.cxx:589 #, fuzzy msgid "Move scenery directory up" msgstr "Añadir un directorio de escenarios" #: src/advanced.cxx:1359 msgid "Multiplay 1:" msgstr "Multijuego 1:" #: src/advanced.cxx:1364 msgid "Multiplay 2:" msgstr "Multijuego 2:" #: src/wizard.cxx:949 msgid "Multiplayer" msgstr "Multijugador" #: src/advanced.cxx:1350 msgid "Multiplayer Options" msgstr "Opciones del Modo Multijugador" #: src/advanced.cxx:1040 msgid "NDB:" msgstr "NDB:" #: src/AirportTable.cxx:121 msgid "Name" msgstr "Nombre" #: src/advanced.cxx:1576 msgid "Nav1" msgstr "Nav1" #: src/advanced.cxx:1559 msgid "Nav1:" msgstr "Nav1:" #: src/advanced.cxx:1582 msgid "Nav2" msgstr "Nav2" #: src/advanced.cxx:1564 msgid "Nav2:" msgstr "Nav2:" #: src/advanced.cxx:1296 src/advanced_funcs.cxx:221 msgid "Network" msgstr "Red" #: src/advanced.cxx:1396 src/advanced.cxx:1642 src/advanced.cxx:1687 #: src/advanced.cxx:1720 src/advanced.cxx:1752 msgid "New" msgstr "Nuevo" #: src/wizard.cxx:995 src/wizard_funcs.cxx:407 src/wizard_funcs.cxx:958 #: src/wizard_funcs.cxx:1802 src/wizard_funcs.cxx:1811 msgid "Next" msgstr "Siguiente" #: src/advanced.cxx:1137 msgid "Nicest" msgstr "La mejor" #: src/Fl_OSG.cxx:207 #, fuzzy msgid "No Rating" msgstr "Sombreado" #: src/advanced.cxx:906 msgid "No Trim" msgstr "No Nivelar" #: src/wizard_funcs.cxx:1755 msgid "Not set" msgstr "" #: src/advanced.cxx:688 src/wizard.cxx:1064 src/wizard.cxx:1089 msgid "OK" msgstr "De acuerdo" #: src/advanced.cxx:1252 msgid "Offset (+/-) from real time" msgstr "Desplazamiento (+/-) sobre la hora real" #: src/advanced.cxx:931 msgid "On Ground" msgstr "En Tierra" #: src/wizard.cxx:728 msgid "Only valid if carrier is set. For airport parking, use the list above." msgstr "" "Sólo válido si el portaaviones está activado. Para seleccionar el parking en " "un aeropuerto, por favor, utilice la lista de arriba." #: src/main.cxx:162 #, fuzzy, c-format msgid "" "Options are:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " --version=\n" " -f, --fullscreen\n" "%s" msgstr "" "Las opciones son:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " -f, --fullscreen\n" "%s" #: src/wizard.cxx:969 msgid "Output port number" msgstr "Número del puerto de salida" #: src/wizard_funcs.cxx:2685 src/fgfsrc.cxx:61 msgid "Overwrite" msgstr "Sobrescribir" #: src/advanced.cxx:788 msgid "Panel" msgstr "Panel 2D" #: src/wizard.cxx:727 msgid "Park pos :" msgstr "Parking :" #: src/AirportBrowser.cxx:89 msgid "Parking" msgstr "Parking" #: src/advanced.cxx:720 msgid "Path to additional XML properties file" msgstr "Ruta hacia el archivo adicional XML de las propiedades" #: src/wizard.cxx:959 msgid "Peer hostname" msgstr "Buscar la dirección del servidor" #: src/advanced.cxx:1028 msgid "Pitch:" msgstr "Pitch:" #: src/wizard.cxx:1072 msgid "Please send this error report to the Flightgear development team" msgstr "Por favor, envía este informe de error al equipo técnico de Flightgear" #: src/wizard.cxx:1037 msgid "Please wait..." msgstr "Espera, por favor..." #: src/advanced.cxx:1475 src/advanced.cxx:1498 msgid "Port:" msgstr "Puerto:" #: src/wizard.cxx:1082 msgid "Prefetch Scenery" msgstr "" #: src/wizard.cxx:991 msgid "Prev" msgstr "Anterior" #: src/wizard.cxx:670 msgid "Preview" msgstr "Vista previa" #: src/advanced.cxx:1612 src/advanced_funcs.cxx:224 msgid "Properties" msgstr "Propiedades" #: src/wizard_funcs.cxx:790 msgid "Property '/sim/model/path' not found" msgstr "Propiedad '/sim/model/path' no encontrada" #: src/advanced.cxx:1325 msgid "Property server port" msgstr "Propiedad del puerto del servidor" #: src/advanced.cxx:1633 msgid "Property:" msgstr "Propiedad" #: src/advanced.cxx:1405 msgid "Protocol:" msgstr "Protocolo:" #: src/advanced.cxx:1373 msgid "Proxy:" msgstr "Proxy:" #: src/wizard.cxx:999 msgid "Quit" msgstr "Salir" #: src/advanced.cxx:783 msgid "Random Objects" msgstr "Objetos Aleatorios" #: src/advanced.cxx:877 msgid "Random Trees" msgstr "Bosques aleatorios" #: src/advanced.cxx:1806 msgid "Random Winds" msgstr "Vientos al Azar" #: src/wizard.cxx:836 msgid "Random objects" msgstr "Generador de objetos aleatorios" #: src/wizard.cxx:840 msgid "Random trees" msgstr "Generador de bosques aleatorios" #: src/Fl_OSG.cxx:205 #, fuzzy msgid "Rating" msgstr "Sombreado" # Adjust horizontal position of stars #: src/Fl_OSG.cxx:179 msgid "RatingPos" msgstr "65" #: src/wizard.cxx:860 msgid "Real weather fetch" msgstr "Utilizar meteorología real" #: src/wizard.cxx:651 #, fuzzy msgid "Recently used aircraft :" msgstr "Seleccionar un avión" #: src/AirportBrowser.cxx:96 msgid "Refresh" msgstr "Actualizar" #: src/AirportBrowser.cxx:99 msgid "Reload airports" msgstr "Actualizar base de datos de aeropuertos" #: src/advanced.cxx:1070 src/advanced_funcs.cxx:219 msgid "Rendering" msgstr "Opciones gráficas" #: src/advanced.cxx:1534 #, fuzzy msgid "Repeat" msgstr "Reiniciar" #: src/wizard_funcs.cxx:977 msgid "Reset" msgstr "Reiniciar" #: src/wizard.cxx:768 msgid "Resolution :" msgstr "Resolución :" #: src/wizard.cxx:1006 msgid "Restore default settings" msgstr "Por defecto" #: src/advanced.cxx:1020 msgid "Roll:" msgstr "Roll:" #: src/wizard_funcs.cxx:950 msgid "Run" msgstr "Ejecutar" #: src/advanced.cxx:922 msgid "Run FDM faster than real time" msgstr "Arrancar FDM más rápido de lo normal" #: src/advanced.cxx:913 msgid "Run the FDM at this rate (iterations per second)" msgstr "Arrancar el FDM en este rendimiento (Ips)" #: src/advanced.cxx:744 msgid "Runway:" msgstr "Pista:" #: src/AirportBrowser.cxx:84 msgid "Runways" msgstr "Pistas" #: src/wizard.cxx:1012 msgid "Save As..." msgstr "Guardar como..." #: src/wizard.cxx:1013 msgid "Save current configuration to a file" msgstr "" #: src/logwin.cxx:99 msgid "Save file as?" msgstr "Guardar como..." #: src/wizard_funcs.cxx:2681 msgid "Save settings as..." msgstr "Guardar datos como..." #: src/wizard.cxx:881 msgid "Scenarios" msgstr "Escenarios" #: src/wizard.cxx:736 #, fuzzy msgid "Scenery Prefetch" msgstr "Directorios de escenarios" #: src/wizard.cxx:552 msgid "Scenery directories" msgstr "Directorios de escenarios" #: src/advanced.cxx:1341 msgid "Screen shot HTTP server port" msgstr "Capturar el puerto del servidor HTTP" #: src/wizard.cxx:868 #, fuzzy msgid "Season :" msgstr "Estación del año :" #: src/wizard_funcs.cxx:1347 #, fuzzy msgid "Select FG_AIRCRAFT directory" msgstr "Selecciona el directorio FG_INICIO" #: src/wizard_funcs.cxx:1072 msgid "Select FG_ROOT directory" msgstr "Selecciona el directorio FG_INICIO" #: src/wizard_funcs.cxx:1421 msgid "Select FG_SCENERY directory" msgstr "Seleccionar directorio FG_ESCENARIOS" #: src/wizard_funcs.cxx:992 msgid "Select FlightGear executable" msgstr "Selecciona el programa ejecutable de FlightGear" #: src/wizard.cxx:477 msgid "Select Paths" msgstr "Seleccionar Rutas" #: src/wizard_funcs.cxx:1531 #, fuzzy msgid "Select Terrasync executable" msgstr "Selecciona el programa ejecutable de FlightGear" #: src/wizard.cxx:704 msgid "Select a location" msgstr "Seleccionar un lugar" #: src/advanced_funcs.cxx:293 msgid "Select a preferences file" msgstr "Seleccionar un fichero de preferencias" #: src/wizard_funcs.cxx:1766 src/wizard_funcs.cxx:1770 #: src/wizard_funcs.cxx:2284 msgid "Select a scenario to display its description" msgstr "" #: src/wizard.cxx:640 msgid "Select an aircraft" msgstr "Seleccionar un avión" #: src/advanced_funcs.cxx:238 msgid "Select browser" msgstr "Seleccionar navegador" #: src/io.cxx:301 #, fuzzy msgid "Select file" msgstr "Seleccionar fichero de protocolo" #: src/wizard.cxx:576 msgid "Select the line in the FG_SCENERY list that is the TerraSync directory." msgstr "" #: src/advanced.cxx:1560 msgid "Set the NAV1 radio frequency, optionally preceded by a radial" msgstr "" "Ajustar la frecuencia de radio NAV1, opcionalmente precedida por un radial" #: src/advanced.cxx:1199 msgid "Set the maximum degree of anisotropy in texture filtering" msgstr "Ajusta el máximo grado de anisotropía en el filtraje de texturas" #: src/advanced.cxx:1108 msgid "Shading" msgstr "Sombreado" #: src/wizard.cxx:753 msgid "Show command line" msgstr "Mostrar línea de comandos" #: src/advanced.cxx:1091 msgid "Sky Blend" msgstr "Gradiente en el Cielo" #: src/advanced.cxx:1111 msgid "Smooth" msgstr "Suave" #: src/advanced.cxx:794 msgid "Sound" msgstr "Sonido" #: src/advanced.cxx:1871 msgid "Span (m):" msgstr "Envergadura (m):" #: src/advanced.cxx:1158 msgid "Specify visibilty in meters" msgstr "Especificar visibilidad en metros" #: src/advanced.cxx:1165 msgid "Specify visiblity in miles" msgstr "Especificar visibilidad en millas" #: src/advanced.cxx:837 src/wizard.cxx:794 msgid "Specular highlight" msgstr "Brillo especular" #: src/advanced.cxx:1799 msgid "Speed (kts):" msgstr "Velocidad (nudos):" #: src/advanced.cxx:921 msgid "Speed:" msgstr "Velocidad:" #: src/advanced.cxx:766 msgid "Splash Screen" msgstr "Dibujo de Portada" #: src/advanced.cxx:932 msgid "Start at ground level" msgstr "Empezar al nivel del suelo" #: src/advanced.cxx:1239 msgid "Start date gmt" msgstr "Empezar fecha GMT" #: src/advanced.cxx:1245 msgid "Start date lat" msgstr "Empezar fecha lat" #: src/advanced.cxx:1233 msgid "Start date sys" msgstr "Empezar fecha sys" #: src/advanced.cxx:939 msgid "Start in the air" msgstr "Comenzar en el aire" #: src/advanced.cxx:957 msgid "Start paused" msgstr "Comenzar el juego en pausa" #: src/wizard.cxx:690 msgid "Status :" msgstr "Estado :" #: src/advanced.cxx:1227 msgid "Synchronize simulation time with local time" msgstr "Sincronizar tiempo de simulación con la hora local" #: src/advanced.cxx:1219 msgid "Synchronize simulation time with real time" msgstr "Sincronizar tiempo de simulación con el real" #: src/Fl_OSG.cxx:193 #, fuzzy msgid "Systems : " msgstr "sistema" #: src/advanced.cxx:1507 msgid "TCP" msgstr "TCP" #: src/wizard.cxx:910 msgid "TerraSync" msgstr "TerraSync" #: src/wizard.cxx:575 #, fuzzy msgid "TerraSync directory" msgstr "TerraSync" #: src/wizard_funcs.cxx:1799 msgid "TerraSync directory not set" msgstr "" #: src/wizard_funcs.cxx:1808 msgid "TerraSync executable not set" msgstr "" #: src/wizard_funcs.cxx:2779 msgid "TerraSync must be configured" msgstr "" #: src/wizard.cxx:625 #, fuzzy msgid "Terrasync exe:" msgstr "TerraSync" #: src/advanced.cxx:1198 msgid "Texture filtering:" msgstr "Filtraje de texturas:" #: src/advanced.cxx:1097 msgid "Textures" msgstr "Texturas" #: src/advanced.cxx:1858 msgid "Thickness (ft):" msgstr "Grosor (pies):" #: src/advanced.cxx:1213 src/advanced_funcs.cxx:220 msgid "Time" msgstr "Tiempo" #: src/advanced.cxx:1226 msgid "Time match local" msgstr "Encajar con el horario local" #: src/advanced.cxx:1218 msgid "Time match real" msgstr "Encajar con el horario real" #: src/advanced.cxx:1279 msgid "Time of day" msgstr "Hora del día" #: src/wizard.cxx:852 msgid "Time of day :" msgstr "Hora del día :" #: src/wizard.cxx:1040 msgid "To change aircraft, exit FlightGear and return to this launcher" msgstr "" "Si quieres cambiar de avión, cierra FlightGear y vuelve a este programa" #: src/wizard.cxx:799 msgid "Too much framerate hurts the smoothness of the simulation" msgstr "Demasiados fotogramas por segundo dañan la suavidad de la simulación" #: src/advanced.cxx:1671 msgid "Trace Read Properties" msgstr "Localizar propiedades de lectura" #: src/advanced.cxx:1704 msgid "Trace Write Properties" msgstr "Trazar propiedades de escritura" #: src/advanced.cxx:1879 msgid "Transition (ft):" msgstr "Transicion (pies):" #: src/advanced.cxx:1813 msgid "Turbulence" msgstr "Turbulencias" #: src/advanced.cxx:1514 msgid "UDP" msgstr "UDP" #: src/wizard_funcs.cxx:1323 #, c-format msgid "" "Unable to delete '%s':\n" "%s" msgstr "" "Incapaz de borrar '%s':\n" "%s" #: src/wizard_funcs.cxx:1234 src/wizard_funcs.cxx:1235 #: src/wizard_funcs.cxx:1237 msgid "Unknown" msgstr "Desconocido" #: src/wizard_funcs.cxx:2773 #, c-format msgid "Unknown airport : '%s'" msgstr "" #: src/wizard.cxx:790 msgid "Use with caution. It may drop your framerate dramatically" msgstr "" "Utilizar con precaución. Podría disminuir el rendimiento del juego " "drásticamente" #: src/advanced.cxx:1036 msgid "VOR:" msgstr "VOR:" #: src/advanced.cxx:1679 src/advanced.cxx:1712 src/advanced.cxx:1761 msgid "Value:" msgstr "Valor:" #: src/advanced.cxx:1172 msgid "View Offset:" msgstr "Desplazamiento de la Vista:" #: src/wizard.cxx:695 msgid "Viewer" msgstr "" #: src/advanced.cxx:1150 msgid "Visibility:" msgstr "Visibilidad:" #: src/wizard.cxx:1058 msgid "We are sorry for this inconvenience." msgstr "Disculpa las molestias." #: src/advanced.cxx:1770 src/advanced_funcs.cxx:227 msgid "Weather" msgstr "Tiempo" #: src/advanced.cxx:1778 msgid "Wind Direction" msgstr "Dirección del viento" #: src/advanced.cxx:1800 msgid "Wind speed (kts)" msgstr "Velocidad del viento (nudos)" #: src/advanced.cxx:1146 src/wizard.cxx:769 msgid "Window geometry, WxH" msgstr "Window geometry, WxH" #: src/advanced.cxx:1103 msgid "Wireframe" msgstr "Wireframe" #: src/advanced_funcs.cxx:294 msgid "XML Files(*.xml)" msgstr "Archivos XML (*.xml)" #: src/wizard_funcs.cxx:86 src/advanced_funcs.cxx:110 #, fuzzy msgid "afternoon" msgstr "mediodía" #: src/advanced_funcs.cxx:122 msgid "alert" msgstr "alerta" #: src/wizard_funcs.cxx:107 msgid "alpha" msgstr "alfa" #: src/wizard_funcs.cxx:106 msgid "beta" msgstr "beta" #: src/wizard.cxx:816 msgid "bpp :" msgstr "bpp :" #: src/advanced.cxx:1176 msgid "bpp:" msgstr "bpp:" #: src/advanced_funcs.cxx:128 msgid "broken" msgstr "rotas" #: src/advanced_funcs.cxx:118 msgid "bulk" msgstr "volumen" #: src/advanced.cxx:1814 msgid "calm (0.0) to severe (1.0)" msgstr "calma (0.0) a severo (1.0)" #: src/advanced.cxx:1285 msgid "choice:" msgstr "elección:" #: src/advanced_funcs.cxx:131 msgid "cirrus" msgstr "cirro" #: src/advanced_funcs.cxx:132 msgid "clear" msgstr "claro" #: src/wizard_funcs.cxx:83 src/advanced_funcs.cxx:107 msgid "dawn" msgstr "alba" #: src/advanced_funcs.cxx:119 msgid "debug" msgstr "debug" #: src/wizard_funcs.cxx:112 msgid "devel" msgstr "devel" #: src/wizard_funcs.cxx:110 msgid "developement" msgstr "desarrollo" #: src/wizard_funcs.cxx:111 msgid "development" msgstr "desarrollo" #: src/wizard_funcs.cxx:87 src/advanced_funcs.cxx:111 msgid "dusk" msgstr "crepúsculo" #: src/wizard_funcs.cxx:108 msgid "early alpha" msgstr "alfa primeriza" #: src/wizard_funcs.cxx:104 msgid "early production" msgstr "versión primeriza" #: src/wizard_funcs.cxx:103 msgid "early-production" msgstr "versión primeriza" #: src/wizard_funcs.cxx:88 src/advanced_funcs.cxx:112 #, fuzzy msgid "evening" msgstr "Opciones gráficas" #: src/wizard_funcs.cxx:114 msgid "experimental" msgstr "experimental" #: src/advanced_funcs.cxx:130 msgid "few" msgstr "pocas" #: src/AirportBrowser.cxx:571 msgid "gzopen error" msgstr "error gzopen" #: src/advanced_funcs.cxx:148 msgid "highest filtering" msgstr "el filtro más potente" #: src/advanced.cxx:1301 msgid "httpd" msgstr "httpd" #: src/wizard.cxx:964 msgid "in :" msgstr "entrada :" #: src/advanced_funcs.cxx:120 msgid "info" msgstr "información" #: src/advanced.cxx:1360 msgid "in|out,hz,address,port" msgstr "entrada|salida,hz,dirección,puerto" #: src/advanced_funcs.cxx:137 msgid "joystick" msgstr "joystick" #: src/advanced.cxx:1334 msgid "jpg-httpd" msgstr "jpg-httpd" #: src/advanced_funcs.cxx:138 msgid "keyboard" msgstr "teclado" #: src/wizard_funcs.cxx:89 src/advanced_funcs.cxx:113 msgid "midnight" msgstr "medianoche" #: src/wizard_funcs.cxx:84 src/advanced_funcs.cxx:108 msgid "morning" msgstr "" #: src/advanced_funcs.cxx:139 msgid "mouse" msgstr "ratón" #: src/advanced_funcs.cxx:144 msgid "no filtering" msgstr "sin filtro" #: src/wizard_funcs.cxx:85 src/advanced_funcs.cxx:109 msgid "noon" msgstr "mediodía" #: src/advanced.cxx:1052 msgid "offset azimuth:" msgstr "desplazamiento del azimut:" #: src/advanced.cxx:1048 msgid "offset distance:" msgstr "desplazamiento de la distancia:" #: src/wizard.cxx:968 msgid "out :" msgstr "salida :" #: src/advanced_funcs.cxx:127 msgid "overcast" msgstr "nublado" #: src/advanced.cxx:847 msgid "pitot" msgstr "pitot" #: src/wizard_funcs.cxx:102 msgid "production" msgstr "realizacion" #: src/advanced.cxx:1634 msgid "prop=value" msgstr "prop=valor" #: src/advanced.cxx:1318 msgid "props" msgstr "props" #: src/wizard.cxx:503 src/wizard.cxx:510 msgid "root data path" msgstr "Ruta de los datos de raiz (root)" #: src/advanced_funcs.cxx:129 msgid "scattered" msgstr "dispersas" #: src/advanced.cxx:852 msgid "static" msgstr "estático" #: src/wizard_funcs.cxx:94 msgid "summer" msgstr "verano" #: src/advanced.cxx:857 msgid "system" msgstr "sistema" #: src/advanced.cxx:1001 msgid "uBody:" msgstr "uBody:" #: src/advanced.cxx:1005 msgid "vBody:" msgstr "vBody:" #: src/advanced.cxx:862 msgid "vacuum" msgstr "bomba" #: src/advanced.cxx:1009 msgid "wBody" msgstr "wBody" #: src/advanced_funcs.cxx:121 msgid "warn" msgstr "aviso" #: src/wizard_funcs.cxx:95 msgid "winter" msgstr "invierno" #~ msgid "0" #~ msgstr "0" #~ msgid "1" #~ msgstr "1" #~ msgid "1024x768" #~ msgstr "1024x768" #~ msgid "1280x1024" #~ msgstr "1280x1024" #~ msgid "1280x800" #~ msgstr "1280x800" #~ msgid "16" #~ msgstr "16" #~ msgid "1600x1200" #~ msgstr "1600x1200" #~ msgid "1680x1050" #~ msgstr "1680x1050" #~ msgid "1920x1200" #~ msgstr "1920x1200" #~ msgid "2" #~ msgstr "2" #~ msgid "24" #~ msgstr "24" #~ msgid "3" #~ msgstr "3" #~ msgid "32" #~ msgstr "32" #~ msgid "4" #~ msgstr "4" #~ msgid "800x600" #~ msgstr "800x600" #~ msgid "AV400" #~ msgstr "AV400" #, fuzzy #~ msgid "AV400Sim" #~ msgstr "AV400" #~ msgid "ada" #~ msgstr "ada" #, fuzzy #~ msgid "atcsim" #~ msgstr "larcsim" #~ msgid "atlas" #~ msgstr "atlas" #~ msgid "balloon" #~ msgstr "balloon" #~ msgid "bi" #~ msgstr "bi" #~ msgid "external" #~ msgstr "external" #~ msgid "file" #~ msgstr "archivo" #~ msgid "garmin" #~ msgstr "garmin" #~ msgid "generic" #~ msgstr "genérico" #~ msgid "in" #~ msgstr "entrada" #, fuzzy #~ msgid "joyclient" #~ msgstr "joy-client" #~ msgid "jsb" #~ msgstr "jsb" #~ msgid "jsclient" #~ msgstr "jsclient" #~ msgid "larcsim" #~ msgstr "larcsim" #~ msgid "magic" #~ msgstr "magic" #~ msgid "native" #~ msgstr "native" #~ msgid "native-ctrls" #~ msgstr "native-ctrls" #~ msgid "native-fdm" #~ msgstr "native-fdm" #~ msgid "native-gui" #~ msgstr "native-gui" #~ msgid "network" #~ msgstr "network" #~ msgid "nmea" #~ msgstr "nmea" #~ msgid "null" #~ msgstr "null" #~ msgid "opengc" #~ msgstr "opengc" #~ msgid "out" #~ msgstr "salida" #~ msgid "pve" #~ msgstr "pve" #~ msgid "ray" #~ msgstr "ray" #~ msgid "rul" #~ msgstr "rul" #~ msgid "serial" #~ msgstr "serial" #~ msgid "socket" #~ msgstr "socket" #, fuzzy #~ msgid "telnet" #~ msgstr "Borrar" #~ msgid "ufo" #~ msgstr "ufo" #~ msgid "yasim" #~ msgstr "yasim" fg-fgrun/po/fgrun.pot000066400000000000000000000647061245722473500151040ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Frederic Bouvier # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-03 02:20+0200\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=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: src/advanced.cxx:672 msgid "Advanced Options" msgstr "" #: src/advanced.cxx:685 src/wizard.cxx:1085 msgid "Cancel" msgstr "" #: src/advanced.cxx:688 src/wizard.cxx:1064 src/wizard.cxx:1089 msgid "OK" msgstr "" #: src/advanced.cxx:696 src/advanced_funcs.cxx:214 msgid "General" msgstr "" #: src/advanced.cxx:707 msgid "Language:" msgstr "" #: src/advanced.cxx:711 msgid "Browser:" msgstr "" #: src/advanced.cxx:715 src/advanced.cxx:724 src/advanced.cxx:1467 msgid "..." msgstr "" #: src/advanced.cxx:719 msgid "Config:" msgstr "" #: src/advanced.cxx:720 msgid "Path to additional XML properties file" msgstr "" #: src/advanced.cxx:728 src/wizard.cxx:484 msgid "Executable:" msgstr "" #: src/advanced.cxx:732 src/wizard.cxx:502 msgid "FG_ROOT:" msgstr "" #: src/advanced.cxx:736 src/wizard.cxx:551 msgid "FG_SCENERY:" msgstr "" #: src/advanced.cxx:740 msgid "Airport:" msgstr "" #: src/advanced.cxx:744 msgid "Runway:" msgstr "" #: src/advanced.cxx:748 msgid "Aircraft:" msgstr "" #: src/advanced.cxx:757 src/wizard.cxx:832 src/advanced_funcs.cxx:215 msgid "Features" msgstr "" #: src/advanced.cxx:761 msgid "Game Mode" msgstr "" #: src/advanced.cxx:762 msgid "Enable full screen game mode" msgstr "" #: src/advanced.cxx:766 msgid "Splash Screen" msgstr "" #: src/advanced.cxx:767 msgid "Display splash screen at startup" msgstr "" #: src/advanced.cxx:772 msgid "Intro Music" msgstr "" #: src/advanced.cxx:773 msgid "Enable introduction music during start up" msgstr "" #: src/advanced.cxx:778 msgid "Mouse Pointer" msgstr "" #: src/advanced.cxx:779 msgid "Enable extra mouse pointer" msgstr "" #: src/advanced.cxx:783 msgid "Random Objects" msgstr "" #: src/advanced.cxx:784 msgid "Enable random scenery objects" msgstr "" #: src/advanced.cxx:788 msgid "Panel" msgstr "" #: src/advanced.cxx:789 msgid "Enable the instrument panel" msgstr "" #: src/advanced.cxx:794 msgid "Sound" msgstr "" #: src/advanced.cxx:795 msgid "Enable sound effects" msgstr "" #: src/advanced.cxx:800 msgid "HUD" msgstr "" #: src/advanced.cxx:801 msgid "Enable Heads Up Display" msgstr "" #: src/advanced.cxx:806 msgid "Anti-alias HUD" msgstr "" #: src/advanced.cxx:807 msgid "Enable anti-aliased HUD" msgstr "" #: src/advanced.cxx:812 src/wizard.cxx:864 msgid "Auto-coordination" msgstr "" #: src/advanced.cxx:813 msgid "Enable auto-coordinated turns." msgstr "" #: src/advanced.cxx:817 src/wizard.cxx:785 msgid "Horizon effect" msgstr "" #: src/advanced.cxx:818 msgid "Enable celestial body growth illusion near the horizon" msgstr "" #: src/advanced.cxx:822 msgid "Enhanced lighting" msgstr "" #: src/advanced.cxx:823 msgid "Enable enhanced runway lighting" msgstr "" #: src/advanced.cxx:827 msgid "Distance attenuation" msgstr "" #: src/advanced.cxx:828 msgid "Enable runway light distance attenuation" msgstr "" #: src/advanced.cxx:832 msgid "Hud-3D" msgstr "" #: src/advanced.cxx:833 msgid "Enable 3D HUD" msgstr "" #: src/advanced.cxx:837 src/wizard.cxx:794 msgid "Specular highlight" msgstr "" #: src/advanced.cxx:838 msgid "Enable specular reflections on textured objects" msgstr "" #: src/advanced.cxx:842 msgid "Failures" msgstr "" #: src/advanced.cxx:847 msgid "pitot" msgstr "" #: src/advanced.cxx:852 msgid "static" msgstr "" #: src/advanced.cxx:857 msgid "system" msgstr "" #: src/advanced.cxx:862 msgid "vacuum" msgstr "" #: src/advanced.cxx:867 msgid "AI Models" msgstr "" #: src/advanced.cxx:868 msgid "Enable AI traffic" msgstr "" #: src/advanced.cxx:873 src/wizard.cxx:848 msgid "AI Traffic" msgstr "" #: src/advanced.cxx:877 msgid "Random Trees" msgstr "" #: src/advanced.cxx:886 src/advanced_funcs.cxx:216 msgid "Flight Model" msgstr "" #: src/advanced.cxx:891 msgid "FDM:" msgstr "" #: src/advanced.cxx:892 msgid "Core Flight Dynamics Model" msgstr "" #: src/advanced.cxx:906 msgid "No Trim" msgstr "" #: src/advanced.cxx:907 msgid "Do not attempt to trim the model" msgstr "" #: src/advanced.cxx:912 msgid "Model Hz:" msgstr "" #: src/advanced.cxx:913 msgid "Run the FDM at this rate (iterations per second)" msgstr "" #: src/advanced.cxx:921 msgid "Speed:" msgstr "" #: src/advanced.cxx:922 msgid "Run FDM faster than real time" msgstr "" #: src/advanced.cxx:931 msgid "On Ground" msgstr "" #: src/advanced.cxx:932 msgid "Start at ground level" msgstr "" #: src/advanced.cxx:938 msgid "In Air" msgstr "" #: src/advanced.cxx:939 msgid "Start in the air" msgstr "" #: src/advanced.cxx:951 src/advanced.cxx:956 src/advanced_funcs.cxx:217 msgid "Freeze" msgstr "" #: src/advanced.cxx:957 msgid "Start paused" msgstr "" #: src/advanced.cxx:961 msgid "Fuel Freeze" msgstr "" #: src/advanced.cxx:965 msgid "Clock Freeze" msgstr "" #: src/advanced.cxx:974 src/advanced_funcs.cxx:218 msgid "Initial Position" msgstr "" #: src/advanced.cxx:979 msgid "Longitude:" msgstr "" #: src/advanced.cxx:980 msgid "Initial longitude, west is negative" msgstr "" #: src/advanced.cxx:984 msgid "Latitude:" msgstr "" #: src/advanced.cxx:985 msgid "Initial latitude, south is negative" msgstr "" #: src/advanced.cxx:989 msgid "Altitude:" msgstr "" #: src/advanced.cxx:990 msgid "Initial altitude in feet" msgstr "" #: src/advanced.cxx:995 msgid "Airspeed:" msgstr "" #: src/advanced.cxx:996 msgid "Initial airspeed in knots" msgstr "" #: src/advanced.cxx:1001 msgid "uBody:" msgstr "" #: src/advanced.cxx:1005 msgid "vBody:" msgstr "" #: src/advanced.cxx:1009 msgid "wBody" msgstr "" #: src/advanced.cxx:1013 src/advanced.cxx:1791 msgid "Heading:" msgstr "" #: src/advanced.cxx:1014 msgid "Initial aircraft heading (yaw) angle 0 to 360 degrees" msgstr "" #: src/advanced.cxx:1020 msgid "Roll:" msgstr "" #: src/advanced.cxx:1021 msgid "Initial roll angle, (Phi)" msgstr "" #: src/advanced.cxx:1028 msgid "Pitch:" msgstr "" #: src/advanced.cxx:1029 msgid "Initial pitch angle (Theta)" msgstr "" #: src/advanced.cxx:1036 msgid "VOR:" msgstr "" #: src/advanced.cxx:1040 msgid "NDB:" msgstr "" #: src/advanced.cxx:1044 msgid "Fix:" msgstr "" #: src/advanced.cxx:1048 msgid "offset distance:" msgstr "" #: src/advanced.cxx:1052 msgid "offset azimuth:" msgstr "" #: src/advanced.cxx:1056 msgid "Glide slope:" msgstr "" #: src/advanced.cxx:1060 msgid "Climb rate:" msgstr "" #: src/advanced.cxx:1070 src/advanced_funcs.cxx:219 msgid "Rendering" msgstr "" #: src/advanced.cxx:1075 src/advanced.cxx:1833 src/advanced_funcs.cxx:228 msgid "Clouds" msgstr "" #: src/advanced.cxx:1076 msgid "Enable 2D (flat) cloud layers" msgstr "" #: src/advanced.cxx:1081 src/wizard.cxx:812 msgid "3D Clouds" msgstr "" #: src/advanced.cxx:1082 msgid "Enable 3D (volumetric) cloud layers" msgstr "" #: src/advanced.cxx:1086 src/wizard.cxx:781 msgid "Full Screen" msgstr "" #: src/advanced.cxx:1087 msgid "Enable full screen mode" msgstr "" #: src/advanced.cxx:1091 msgid "Sky Blend" msgstr "" #: src/advanced.cxx:1092 msgid "Enable sky blending" msgstr "" #: src/advanced.cxx:1097 msgid "Textures" msgstr "" #: src/advanced.cxx:1103 msgid "Wireframe" msgstr "" #: src/advanced.cxx:1104 msgid "Enable wireframe drawing mode" msgstr "" #: src/advanced.cxx:1108 msgid "Shading" msgstr "" #: src/advanced.cxx:1111 msgid "Smooth" msgstr "" #: src/advanced.cxx:1117 msgid "Flat" msgstr "" #: src/advanced.cxx:1124 msgid "Fog" msgstr "" #: src/advanced.cxx:1127 msgid "Disabled" msgstr "" #: src/advanced.cxx:1132 msgid "Fastest" msgstr "" #: src/advanced.cxx:1137 msgid "Nicest" msgstr "" #: src/advanced.cxx:1145 msgid "Geometry:" msgstr "" #: src/advanced.cxx:1146 src/wizard.cxx:769 msgid "Window geometry, WxH" msgstr "" #: src/advanced.cxx:1150 msgid "Visibility:" msgstr "" #: src/advanced.cxx:1151 msgid "Initial visibility distance" msgstr "" #: src/advanced.cxx:1157 msgid "Meters" msgstr "" #: src/advanced.cxx:1158 msgid "Specify visibilty in meters" msgstr "" #: src/advanced.cxx:1164 msgid "Miles" msgstr "" #: src/advanced.cxx:1165 msgid "Specify visiblity in miles" msgstr "" #: src/advanced.cxx:1172 msgid "View Offset:" msgstr "" #: src/advanced.cxx:1176 msgid "bpp:" msgstr "" #: src/advanced.cxx:1177 src/wizard.cxx:817 msgid "Color depth (bits per pixel)" msgstr "" #: src/advanced.cxx:1190 msgid "FOV:" msgstr "" #: src/advanced.cxx:1191 msgid "Field of View angle" msgstr "" #: src/advanced.cxx:1198 msgid "Texture filtering:" msgstr "" #: src/advanced.cxx:1199 msgid "Set the maximum degree of anisotropy in texture filtering" msgstr "" #: src/advanced.cxx:1207 msgid "Materials file:" msgstr "" #: src/advanced.cxx:1213 src/advanced_funcs.cxx:220 msgid "Time" msgstr "" #: src/advanced.cxx:1218 msgid "Time match real" msgstr "" #: src/advanced.cxx:1219 msgid "Synchronize simulation time with real time" msgstr "" #: src/advanced.cxx:1226 msgid "Time match local" msgstr "" #: src/advanced.cxx:1227 msgid "Synchronize simulation time with local time" msgstr "" #: src/advanced.cxx:1233 msgid "Start date sys" msgstr "" #: src/advanced.cxx:1239 msgid "Start date gmt" msgstr "" #: src/advanced.cxx:1245 msgid "Start date lat" msgstr "" #: src/advanced.cxx:1252 msgid "Offset (+/-) from real time" msgstr "" #: src/advanced.cxx:1279 msgid "Time of day" msgstr "" #: src/advanced.cxx:1285 msgid "choice:" msgstr "" #: src/advanced.cxx:1296 src/advanced_funcs.cxx:221 msgid "Network" msgstr "" #: src/advanced.cxx:1301 msgid "httpd" msgstr "" #: src/advanced.cxx:1302 msgid "Enable HTTP server" msgstr "" #: src/advanced.cxx:1308 msgid "HTTP server port" msgstr "" #: src/advanced.cxx:1318 msgid "props" msgstr "" #: src/advanced.cxx:1319 msgid "Enable property server" msgstr "" #: src/advanced.cxx:1325 msgid "Property server port" msgstr "" #: src/advanced.cxx:1334 msgid "jpg-httpd" msgstr "" #: src/advanced.cxx:1335 msgid "Enable screen shot HTTP server" msgstr "" #: src/advanced.cxx:1341 msgid "Screen shot HTTP server port" msgstr "" #: src/advanced.cxx:1350 msgid "Multiplayer Options" msgstr "" #: src/advanced.cxx:1355 msgid "Callsign:" msgstr "" #: src/advanced.cxx:1359 msgid "Multiplay 1:" msgstr "" #: src/advanced.cxx:1360 msgid "in|out,hz,address,port" msgstr "" #: src/advanced.cxx:1364 msgid "Multiplay 2:" msgstr "" #: src/advanced.cxx:1373 msgid "Proxy:" msgstr "" #: src/advanced.cxx:1382 src/advanced_funcs.cxx:222 msgid "Input/Output" msgstr "" #: src/advanced.cxx:1396 src/advanced.cxx:1642 src/advanced.cxx:1687 #: src/advanced.cxx:1720 src/advanced.cxx:1752 msgid "New" msgstr "" #: src/advanced.cxx:1400 src/advanced.cxx:1628 src/advanced.cxx:1691 #: src/advanced.cxx:1724 src/advanced.cxx:1756 src/wizard.cxx:537 #: src/wizard.cxx:566 src/wizard.cxx:614 msgid "Delete" msgstr "" #: src/advanced.cxx:1405 msgid "Protocol:" msgstr "" #: src/advanced.cxx:1419 msgid "Medium:" msgstr "" #: src/advanced.cxx:1435 msgid "Direction:" msgstr "" #: src/advanced.cxx:1450 msgid "Hz:" msgstr "" #: src/advanced.cxx:1461 msgid "File:" msgstr "" #: src/advanced.cxx:1475 src/advanced.cxx:1498 msgid "Port:" msgstr "" #: src/advanced.cxx:1481 msgid "Baud Rate:" msgstr "" #: src/advanced.cxx:1492 msgid "Hostname:" msgstr "" #: src/advanced.cxx:1507 msgid "TCP" msgstr "" #: src/advanced.cxx:1514 msgid "UDP" msgstr "" #: src/advanced.cxx:1524 msgid "Generic:" msgstr "" #: src/advanced.cxx:1534 msgid "Repeat" msgstr "" #: src/advanced.cxx:1554 src/advanced_funcs.cxx:223 msgid "Avionics" msgstr "" #: src/advanced.cxx:1559 msgid "Nav1:" msgstr "" #: src/advanced.cxx:1560 msgid "Set the NAV1 radio frequency, optionally preceded by a radial" msgstr "" #: src/advanced.cxx:1564 msgid "Nav2:" msgstr "" #: src/advanced.cxx:1568 msgid "ADF:" msgstr "" #: src/advanced.cxx:1576 msgid "Nav1" msgstr "" #: src/advanced.cxx:1582 msgid "Nav2" msgstr "" #: src/advanced.cxx:1588 msgid "Internal" msgstr "" #: src/advanced.cxx:1601 msgid "DME:" msgstr "" #: src/advanced.cxx:1612 src/advanced_funcs.cxx:224 msgid "Properties" msgstr "" #: src/advanced.cxx:1633 msgid "Property:" msgstr "" #: src/advanced.cxx:1634 msgid "prop=value" msgstr "" #: src/advanced.cxx:1650 src/advanced_funcs.cxx:225 msgid "Debugging" msgstr "" #: src/advanced.cxx:1656 msgid "Log Level:" msgstr "" #: src/advanced.cxx:1671 msgid "Trace Read Properties" msgstr "" #: src/advanced.cxx:1679 src/advanced.cxx:1712 src/advanced.cxx:1761 msgid "Value:" msgstr "" #: src/advanced.cxx:1704 msgid "Trace Write Properties" msgstr "" #: src/advanced.cxx:1738 src/advanced_funcs.cxx:226 msgid "Environment" msgstr "" #: src/advanced.cxx:1770 src/advanced_funcs.cxx:227 msgid "Weather" msgstr "" #: src/advanced.cxx:1778 msgid "Wind Direction" msgstr "" #: src/advanced.cxx:1792 msgid "Direction wind is coming from." msgstr "" #: src/advanced.cxx:1799 msgid "Speed (kts):" msgstr "" #: src/advanced.cxx:1800 msgid "Wind speed (kts)" msgstr "" #: src/advanced.cxx:1806 msgid "Random Winds" msgstr "" #: src/advanced.cxx:1813 msgid "Turbulence" msgstr "" #: src/advanced.cxx:1814 msgid "calm (0.0) to severe (1.0)" msgstr "" #: src/advanced.cxx:1819 msgid "Ceiling:" msgstr "" #: src/advanced.cxx:1820 msgid "FT_ASL[:THICKNESS_FT]" msgstr "" #: src/advanced.cxx:1824 msgid "Fetch real weather" msgstr "" #: src/advanced.cxx:1837 msgid "Layer:" msgstr "" #: src/advanced.cxx:1851 msgid "Elevation(ft):" msgstr "" #: src/advanced.cxx:1858 msgid "Thickness (ft):" msgstr "" #: src/advanced.cxx:1865 msgid "Coverage:" msgstr "" #: src/advanced.cxx:1871 msgid "Span (m):" msgstr "" #: src/advanced.cxx:1879 msgid "Transition (ft):" msgstr "" #: src/advanced.cxx:1466 msgid "FGCom built-in" msgstr "" #: src/advanced.cxx:1472 msgid "FGCom standalone" msgstr "" #: src/wizard.cxx:474 msgid "FlightGear Wizard" msgstr "" #: src/wizard.cxx:477 msgid "Select Paths" msgstr "" #: src/wizard.cxx:485 src/wizard.cxx:492 msgid "Full pathname to FlightGear executable" msgstr "" #: src/wizard.cxx:498 msgid "Executable path not set or invalid" msgstr "" #: src/wizard.cxx:503 src/wizard.cxx:510 msgid "root data path" msgstr "" #: src/wizard.cxx:516 msgid "FG_ROOT path invalid or not set" msgstr "" #: src/wizard.cxx:522 msgid "FG_AIRCRAFT:" msgstr "" #: src/wizard.cxx:523 msgid "Aircraft directories" msgstr "" #: src/wizard.cxx:532 src/wizard.cxx:561 msgid "Add..." msgstr "" #: src/wizard.cxx:533 msgid "Add an aircraft directory" msgstr "" #: src/wizard.cxx:538 msgid "Delete an aircraft directory" msgstr "" #: src/wizard.cxx:552 msgid "Scenery directories" msgstr "" #: src/wizard.cxx:562 msgid "Add a scenery directory" msgstr "" #: src/wizard.cxx:567 msgid "Delete a scenery directory" msgstr "" #: src/wizard.cxx:575 msgid "TerraSync directory" msgstr "" #: src/wizard.cxx:576 msgid "Select the line in the FG_SCENERY list that is the TerraSync directory." msgstr "" #: src/wizard.cxx:588 msgid "@8>" msgstr "" #: src/wizard.cxx:589 msgid "Move scenery directory up" msgstr "" #: src/wizard.cxx:599 msgid "@2>" msgstr "" #: src/wizard.cxx:600 msgid "Move scenery directory down" msgstr "" #: src/wizard.cxx:610 msgid "FG_SCENERY empty" msgstr "" #: src/wizard.cxx:615 msgid "Clear the content of the airport cache" msgstr "" #: src/wizard.cxx:620 msgid "Airports Cache:" msgstr "" #: src/wizard.cxx:621 msgid "Full path to the airport cache" msgstr "" #: src/wizard.cxx:625 msgid "Terrasync exe:" msgstr "" #: src/wizard.cxx:626 src/wizard.cxx:633 msgid "Full pathname to Terrasync executable" msgstr "" #: src/wizard.cxx:640 msgid "Select an aircraft" msgstr "" #: src/wizard.cxx:643 msgid "3D Preview" msgstr "" #: src/wizard.cxx:651 msgid "Recently used aircraft :" msgstr "" #: src/wizard.cxx:659 msgid "Available aircraft :" msgstr "" #: src/wizard.cxx:670 msgid "Preview" msgstr "" #: src/wizard.cxx:690 msgid "Status :" msgstr "" #: src/wizard.cxx:692 msgid "Author(s) :" msgstr "" #: src/wizard.cxx:695 msgid "Viewer" msgstr "" #: src/wizard.cxx:698 msgid "Location :" msgstr "" #: src/wizard.cxx:704 msgid "Select a location" msgstr "" #: src/wizard.cxx:721 msgid "Carrier Ops" msgstr "" #: src/wizard.cxx:725 msgid "Carrier : " msgstr "" #: src/wizard.cxx:727 msgid "Park pos :" msgstr "" #: src/wizard.cxx:728 msgid "Only valid if carrier is set. For airport parking, use the list above." msgstr "" #: src/wizard.cxx:736 msgid "Scenery Prefetch" msgstr "" #: src/wizard.cxx:747 msgid "Advanced..." msgstr "" #: src/wizard.cxx:753 msgid "Show command line" msgstr "" #: src/wizard.cxx:764 msgid "Display" msgstr "" #: src/wizard.cxx:768 msgid "Resolution :" msgstr "" #: src/wizard.cxx:789 msgid "Enhanced runway lighting" msgstr "" #: src/wizard.cxx:790 msgid "Use with caution. It may drop your framerate dramatically" msgstr "" #: src/wizard.cxx:798 msgid "Framerate limiter :" msgstr "" #: src/wizard.cxx:799 msgid "Too much framerate hurts the smoothness of the simulation" msgstr "" #: src/wizard.cxx:816 msgid "bpp :" msgstr "" #: src/wizard.cxx:836 msgid "Random objects" msgstr "" #: src/wizard.cxx:840 msgid "Random trees" msgstr "" #: src/wizard.cxx:844 msgid "AI models" msgstr "" #: src/wizard.cxx:852 msgid "Time of day :" msgstr "" #: src/wizard.cxx:860 msgid "Real weather fetch" msgstr "" #: src/wizard.cxx:868 msgid "Season :" msgstr "" #: src/wizard.cxx:875 msgid "Menu auto-visibility" msgstr "" #: src/wizard.cxx:881 msgid "Scenarios" msgstr "" #: src/wizard.cxx:886 msgid "Ctrl-click to select or deselect a single item" msgstr "" #: src/wizard.cxx:893 msgid "Deselect all" msgstr "" #: src/wizard.cxx:894 msgid "Ctrl-click to deselect a single item" msgstr "" #: src/wizard.cxx:910 msgid "TerraSync" msgstr "" #: src/wizard.cxx:931 msgid "Atlas" msgstr "" #: src/wizard.cxx:936 src/wizard.cxx:958 msgid "Hostname :" msgstr "" #: src/wizard.cxx:937 msgid "Hostname" msgstr "" #: src/wizard.cxx:942 msgid ":" msgstr "" #: src/wizard.cxx:949 msgid "Multiplayer" msgstr "" #: src/wizard.cxx:954 msgid "Callsign :" msgstr "" #: src/wizard.cxx:959 msgid "Peer hostname" msgstr "" #: src/wizard.cxx:964 msgid "in :" msgstr "" #: src/wizard.cxx:965 msgid "Input port number" msgstr "" #: src/wizard.cxx:968 msgid "out :" msgstr "" #: src/wizard.cxx:969 msgid "Output port number" msgstr "" #: src/wizard.cxx:991 msgid "Prev" msgstr "" #: src/wizard.cxx:995 src/wizard_funcs.cxx:407 src/wizard_funcs.cxx:958 #: src/wizard_funcs.cxx:1802 src/wizard_funcs.cxx:1811 msgid "Next" msgstr "" #: src/wizard.cxx:999 msgid "Quit" msgstr "" #: src/wizard.cxx:1006 msgid "Restore default settings" msgstr "" #: src/wizard.cxx:1007 msgid "" "Clear all selected options and return to the install situation. Useful if " "FGFS don't start anymore." msgstr "" #: src/wizard.cxx:1012 msgid "Save As..." msgstr "" #: src/wizard.cxx:1013 msgid "Save current configuration to a file" msgstr "" #: src/wizard.cxx:1017 msgid "Load" msgstr "" #: src/wizard.cxx:1018 msgid "Load a previously saved configuration" msgstr "" #: src/wizard.cxx:1029 msgid "FlightGear running..." msgstr "" #: src/wizard.cxx:1032 msgid "FlightGear has been started" msgstr "" #: src/wizard.cxx:1037 msgid "Please wait..." msgstr "" #: src/wizard.cxx:1040 msgid "To change aircraft, exit FlightGear and return to this launcher" msgstr "" #: src/wizard.cxx:1052 msgid "Flightgear crashed..." msgstr "" #: src/wizard.cxx:1054 msgid "Flightgear encountered an unexpected failure" msgstr "" #: src/wizard.cxx:1058 msgid "We are sorry for this inconvenience." msgstr "" #: src/wizard.cxx:1068 msgid "An error report has been generated in the file below :" msgstr "" #: src/wizard.cxx:1072 msgid "Please send this error report to the Flightgear development team" msgstr "" #: src/wizard.cxx:1082 msgid "Prefetch Scenery" msgstr "" #: src/wizard.cxx:1097 msgid "Airport to fetch : " msgstr "" #: src/wizard.fl msgid "All airports" msgstr "" #: src/wizard.fl msgid "Display all airports" msgstr "" #: src/wizard.fl msgid "Installed airports" msgstr "" #: src/wizard.fl msgid "Display only installed airports" msgstr "" #: src/wizard_funcs.cxx:83 src/advanced_funcs.cxx:107 msgid "dawn" msgstr "" #: src/wizard_funcs.cxx:84 src/advanced_funcs.cxx:108 msgid "morning" msgstr "" #: src/wizard_funcs.cxx:85 src/advanced_funcs.cxx:109 msgid "noon" msgstr "" #: src/wizard_funcs.cxx:86 src/advanced_funcs.cxx:110 msgid "afternoon" msgstr "" #: src/wizard_funcs.cxx:87 src/advanced_funcs.cxx:111 msgid "dusk" msgstr "" #: src/wizard_funcs.cxx:88 src/advanced_funcs.cxx:112 msgid "evening" msgstr "" #: src/wizard_funcs.cxx:89 src/advanced_funcs.cxx:113 msgid "midnight" msgstr "" #: src/wizard_funcs.cxx:94 msgid "summer" msgstr "" #: src/wizard_funcs.cxx:95 msgid "winter" msgstr "" #: src/wizard_funcs.cxx:102 msgid "production" msgstr "" #: src/wizard_funcs.cxx:103 msgid "early-production" msgstr "" #: src/wizard_funcs.cxx:104 msgid "early production" msgstr "" #: src/wizard_funcs.cxx:105 msgid "Early production" msgstr "" #: src/wizard_funcs.cxx:106 msgid "beta" msgstr "" #: src/wizard_funcs.cxx:107 msgid "alpha" msgstr "" #: src/wizard_funcs.cxx:108 msgid "early alpha" msgstr "" #: src/wizard_funcs.cxx:109 msgid "Development" msgstr "" #: src/wizard_funcs.cxx:110 msgid "developement" msgstr "" #: src/wizard_funcs.cxx:111 msgid "development" msgstr "" #: src/wizard_funcs.cxx:112 msgid "devel" msgstr "" #: src/wizard_funcs.cxx:113 msgid "Early development" msgstr "" #: src/wizard_funcs.cxx:114 msgid "experimental" msgstr "" #: src/wizard_funcs.cxx:225 #, possible-c-format msgid "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

This program is released under the " "GNU General Public License (http://www.gnu.org/copyleft/gpl.html).

" "

Report bugs to http://sourceforge.net/projects/fgrun

" msgstr "" #: src/wizard_funcs.cxx:469 msgid "Log Window" msgstr "" #: src/wizard_funcs.cxx:749 #, possible-c-format msgid "Model not found: '%s'" msgstr "" #: src/wizard_funcs.cxx:790 msgid "Property '/sim/model/path' not found" msgstr "" #: src/wizard_funcs.cxx:889 src/wizard_funcs.cxx:2449 #: src/AirportBrowser.cxx:470 src/fgfsrc.cxx:101 msgid "" msgstr "" #: src/wizard_funcs.cxx:950 msgid "Run" msgstr "" #: src/wizard_funcs.cxx:977 msgid "About to reset current parameters" msgstr "" #: src/wizard_funcs.cxx:977 src/fgfsrc.cxx:61 msgid "Abort" msgstr "" #: src/wizard_funcs.cxx:977 msgid "Reset" msgstr "" #: src/wizard_funcs.cxx:992 msgid "Select FlightGear executable" msgstr "" #: src/wizard_funcs.cxx:1072 msgid "Select FG_ROOT directory" msgstr "" #: src/wizard_funcs.cxx:1234 src/wizard_funcs.cxx:1235 #: src/wizard_funcs.cxx:1237 msgid "Unknown" msgstr "" #: src/wizard_funcs.cxx:1323 #, possible-c-format msgid "" "Unable to delete '%s':\n" "%s" msgstr "" #: src/wizard_funcs.cxx:1347 msgid "Select FG_AIRCRAFT directory" msgstr "" #: src/wizard_funcs.cxx:1421 msgid "Select FG_SCENERY directory" msgstr "" #: src/wizard_funcs.cxx:1531 msgid "Select Terrasync executable" msgstr "" #: src/wizard_funcs.cxx:1752 msgid "Description of " msgstr "" #: src/wizard_funcs.cxx:1755 msgid "Not set" msgstr "" #: src/wizard_funcs.cxx:1766 src/wizard_funcs.cxx:1770 #: src/wizard_funcs.cxx:2284 msgid "Select a scenario to display its description" msgstr "" #: src/wizard_funcs.cxx:1799 msgid "TerraSync directory not set" msgstr "" #: src/wizard_funcs.cxx:1808 msgid "TerraSync executable not set" msgstr "" #: src/wizard_funcs.cxx:2590 msgid "Load settings from..." msgstr "" #: src/wizard_funcs.cxx:2681 msgid "Save settings as..." msgstr "" #: src/wizard_funcs.cxx:2685 #, possible-c-format msgid "Filename \"%s\" already exists." msgstr "" #: src/wizard_funcs.cxx:2685 src/fgfsrc.cxx:61 msgid "Overwrite" msgstr "" #: src/wizard_funcs.cxx:2685 msgid "Don't overwrite" msgstr "" #: src/wizard_funcs.cxx:2773 #, possible-c-format msgid "Unknown airport : '%s'" msgstr "" #: src/wizard_funcs.cxx:2779 msgid "TerraSync must be configured" msgstr "" #: src/advanced_funcs.cxx:118 msgid "bulk" msgstr "" #: src/advanced_funcs.cxx:119 msgid "debug" msgstr "" #: src/advanced_funcs.cxx:120 msgid "info" msgstr "" #: src/advanced_funcs.cxx:121 msgid "warn" msgstr "" #: src/advanced_funcs.cxx:122 msgid "alert" msgstr "" #: src/advanced_funcs.cxx:127 msgid "overcast" msgstr "" #: src/advanced_funcs.cxx:128 msgid "broken" msgstr "" #: src/advanced_funcs.cxx:129 msgid "scattered" msgstr "" #: src/advanced_funcs.cxx:130 msgid "few" msgstr "" #: src/advanced_funcs.cxx:131 msgid "cirrus" msgstr "" #: src/advanced_funcs.cxx:132 msgid "clear" msgstr "" #: src/advanced_funcs.cxx:137 msgid "joystick" msgstr "" #: src/advanced_funcs.cxx:138 msgid "keyboard" msgstr "" #: src/advanced_funcs.cxx:139 msgid "mouse" msgstr "" #: src/advanced_funcs.cxx:144 msgid "no filtering" msgstr "" #: src/advanced_funcs.cxx:145 msgid "2.0" msgstr "" #: src/advanced_funcs.cxx:146 msgid "4.0" msgstr "" #: src/advanced_funcs.cxx:147 msgid "8.0" msgstr "" #: src/advanced_funcs.cxx:148 msgid "highest filtering" msgstr "" #: src/advanced_funcs.cxx:238 msgid "Select browser" msgstr "" #: src/advanced_funcs.cxx:293 msgid "Select a preferences file" msgstr "" #: src/advanced_funcs.cxx:294 msgid "XML Files(*.xml)" msgstr "" #: src/AirportBrowser.cxx:84 msgid "Runways" msgstr "" #: src/AirportBrowser.cxx:89 msgid "Parking" msgstr "" #: src/AirportBrowser.cxx:96 msgid "Refresh" msgstr "" #: src/AirportBrowser.cxx:99 msgid "Reload airports" msgstr "" #: src/AirportBrowser.cxx:571 msgid "gzopen error" msgstr "" #: src/AirportTable.cxx:121 msgid "ICAO Id" msgstr "" #: src/AirportTable.cxx:121 msgid "Name" msgstr "" #: src/fgfsrc.cxx:61 #, possible-c-format msgid "About to overwrite %s." msgstr "" #: src/logwin.cxx:32 msgid "&File" msgstr "" #: src/logwin.cxx:33 msgid "&Save" msgstr "" #: src/logwin.cxx:34 msgid "&Close" msgstr "" #: src/logwin.cxx:99 msgid "Save file as?" msgstr "" #: src/io.cxx:301 msgid "Select file" msgstr "" #: src/main.cxx:162 #, possible-c-format msgid "" "Options are:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " --version=\n" " -f, --fullscreen\n" "%s" msgstr "" #: src/Fl_OSG.cxx:179 msgid "RatingPos" msgstr "" #: src/Fl_OSG.cxx:183 msgid "Model : " msgstr "" #: src/Fl_OSG.cxx:188 msgid "Cockpit : " msgstr "" #: src/Fl_OSG.cxx:193 msgid "Systems : " msgstr "" #: src/Fl_OSG.cxx:198 msgid "FDM : " msgstr "" #: src/Fl_OSG.cxx:205 msgid "Rating" msgstr "" #: src/Fl_OSG.cxx:207 msgid "No Rating" msgstr "" fg-fgrun/po/fr.po000066400000000000000000001051761245722473500142030ustar00rootroot00000000000000# French translations for fgrun package # Traduction Française du package fgrun. # Copyright (C) 2008 Frederic Bouvier # This file is distributed under the same license as the fgrun package. # Frédéric Bouvier , 2008. # msgid "" msgstr "" "Project-Id-Version: fgrun 1.1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-03 02:20+0200\n" "PO-Revision-Date: 2008-01-05 19:05+0100\n" "Last-Translator: \n" "Language-Team: French\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CP1252\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/logwin.cxx:34 msgid "&Close" msgstr "Fer&mer" #: src/logwin.cxx:32 msgid "&File" msgstr "&Fichier" #: src/logwin.cxx:33 msgid "&Save" msgstr "&Sauver" #: src/advanced.cxx:715 src/advanced.cxx:724 src/advanced.cxx:1467 msgid "..." msgstr "..." #: src/advanced_funcs.cxx:145 msgid "2.0" msgstr "" #: src/advanced.cxx:1081 src/wizard.cxx:812 msgid "3D Clouds" msgstr "Nuages 3D" #: src/wizard.cxx:643 msgid "3D Preview" msgstr "Aperçu 3D" #: src/advanced_funcs.cxx:146 msgid "4.0" msgstr "" #: src/advanced_funcs.cxx:147 msgid "8.0" msgstr "" #: src/wizard.cxx:942 msgid ":" msgstr ":" #: src/wizard_funcs.cxx:889 src/wizard_funcs.cxx:2449 #: src/AirportBrowser.cxx:470 src/fgfsrc.cxx:101 msgid "" msgstr "" #: src/wizard_funcs.cxx:225 #, c-format msgid "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

This program is released under the " "GNU General Public License (http://www.gnu.org/copyleft/gpl.html).

" "

Report bugs to http://sourceforge.net/projects/fgrun

" msgstr "" " Lanceur FlightGear %s " "

Lanceur FlightGear %s

Ce programme est publié sous la licence " "publique générale (GPL) de GNU (http://www.gnu.org/copyleft/gpl.html).

" "

Signaler les bogues à http://sourceforge.net/projects/fgrun

" #: src/wizard.cxx:599 msgid "@2>" msgstr "" #: src/wizard.cxx:588 msgid "@8>" msgstr "" #: src/advanced.cxx:1568 msgid "ADF:" msgstr "" #: src/advanced.cxx:867 msgid "AI Models" msgstr "Modèles d'IA" #: src/advanced.cxx:873 src/wizard.cxx:848 msgid "AI Traffic" msgstr "Trafic d'IA" #: src/wizard.cxx:844 msgid "AI models" msgstr "Modèles d'IA" #: src/wizard_funcs.cxx:977 src/fgfsrc.cxx:61 msgid "Abort" msgstr "Abandonner" #: src/fgfsrc.cxx:61 #, c-format msgid "About to overwrite %s." msgstr "Prêt à écraser %s" #: src/wizard_funcs.cxx:977 msgid "About to reset current parameters" msgstr "Prêt à mettre à zéro les paramètres courants" #: src/wizard.cxx:562 msgid "Add a scenery directory" msgstr "Ajouter un répertoire de scène" #: src/wizard.cxx:533 msgid "Add an aircraft directory" msgstr "Ajouter un répertoire d'aéronef" #: src/wizard.cxx:532 src/wizard.cxx:561 msgid "Add..." msgstr "Ajouter..." #: src/advanced.cxx:672 msgid "Advanced Options" msgstr "Options avancées" #: src/wizard.cxx:747 msgid "Advanced..." msgstr "Avancé..." #: src/wizard.cxx:523 msgid "Aircraft directories" msgstr "Répertoires des aéronefs" #: src/advanced.cxx:748 msgid "Aircraft:" msgstr "Aéronef:" #: src/wizard.cxx:1097 msgid "Airport to fetch : " msgstr "Aéroport à récupérer : " #: src/advanced.cxx:740 msgid "Airport:" msgstr "Aéroport:" #: src/wizard.cxx:620 msgid "Airports Cache:" msgstr "" "Fichier cache \n" "des aéroports:" #: src/advanced.cxx:995 msgid "Airspeed:" msgstr "Vitesse:" #: src/wizard.fl msgid "All airports" msgstr "Tous les aéroports" #: src/advanced.cxx:989 msgid "Altitude:" msgstr "Altitude:" #: src/wizard.cxx:1068 msgid "An error report has been generated in the file below :" msgstr "Un rapport d'erreur a été généré dans le fichier suivant :" #: src/advanced.cxx:806 msgid "Anti-alias HUD" msgstr "Affichage lissé" #: src/wizard.cxx:931 msgid "Atlas" msgstr "Atlas" #: src/wizard.cxx:692 msgid "Author(s) :" msgstr "Auteur(s) :" #: src/advanced.cxx:812 src/wizard.cxx:864 msgid "Auto-coordination" msgstr "Auto-coordination" #: src/wizard.cxx:659 msgid "Available aircraft :" msgstr "Aéronefs disponibles :" #: src/advanced.cxx:1554 src/advanced_funcs.cxx:223 msgid "Avionics" msgstr "Avionique" #: src/advanced.cxx:1481 msgid "Baud Rate:" msgstr "Vitesse débit:" #: src/advanced.cxx:711 msgid "Browser:" msgstr "Navigateur:" #: src/wizard.cxx:954 msgid "Callsign :" msgstr "Indicatif :" #: src/advanced.cxx:1355 msgid "Callsign:" msgstr "Indicatif:" #: src/advanced.cxx:685 src/wizard.cxx:1085 msgid "Cancel" msgstr "Annuler" #: src/wizard.cxx:725 msgid "Carrier : " msgstr "Porte-avion : " #: src/wizard.cxx:721 msgid "Carrier Ops" msgstr "Porte-avions" #: src/advanced.cxx:1819 msgid "Ceiling:" msgstr "Plafond:" #: src/wizard.cxx:1007 msgid "" "Clear all selected options and return to the install situation. Useful if " "FGFS don't start anymore." msgstr "" "Efface toutes les options sélectionnées et revient à la situation de " "l'installation. Utile si FGFS ne démarre plus." #: src/wizard.cxx:615 msgid "Clear the content of the airport cache" msgstr "Effacer le contenu du cache d'aéroports" #: src/advanced.cxx:1060 msgid "Climb rate:" msgstr "Taux de montée:" #: src/advanced.cxx:965 msgid "Clock Freeze" msgstr "Horloge en pause" #: src/advanced.cxx:1075 src/advanced.cxx:1833 src/advanced_funcs.cxx:228 msgid "Clouds" msgstr "Nuages" #: src/Fl_OSG.cxx:188 msgid "Cockpit : " msgstr "Cockpit : " #: src/advanced.cxx:1177 src/wizard.cxx:817 msgid "Color depth (bits per pixel)" msgstr "Profondeur des couleurs (bits par pixels)" #: src/advanced.cxx:719 msgid "Config:" msgstr "Configuration:" #: src/advanced.cxx:892 msgid "Core Flight Dynamics Model" msgstr "Modèle de vol central" #: src/advanced.cxx:1865 msgid "Coverage:" msgstr "Couverture:" #: src/wizard.cxx:894 msgid "Ctrl-click to deselect a single item" msgstr "Ctrl-clic pour désélectionner une seule ligne" #: src/wizard.cxx:886 msgid "Ctrl-click to select or deselect a single item" msgstr "Ctrl-clic pour sélectionner ou désélectionner une seule ligne" #: src/advanced.cxx:1601 msgid "DME:" msgstr "" #: src/advanced.cxx:1650 src/advanced_funcs.cxx:225 msgid "Debugging" msgstr "Déboguage" #: src/advanced.cxx:1400 src/advanced.cxx:1628 src/advanced.cxx:1691 #: src/advanced.cxx:1724 src/advanced.cxx:1756 src/wizard.cxx:537 #: src/wizard.cxx:566 src/wizard.cxx:614 msgid "Delete" msgstr "Effacer" #: src/wizard.cxx:567 msgid "Delete a scenery directory" msgstr "Enlever un répertoire de scène" #: src/wizard.cxx:538 msgid "Delete an aircraft directory" msgstr "Enlever un répertoire d'aéronef" #: src/wizard_funcs.cxx:1752 msgid "Description of " msgstr "Description de " #: src/wizard.cxx:893 msgid "Deselect all" msgstr "Tout désélectionner" #: src/wizard_funcs.cxx:109 msgid "Development" msgstr "Développement" #: src/advanced.cxx:1792 msgid "Direction wind is coming from." msgstr "Direction d'où vient le vent" #: src/advanced.cxx:1435 msgid "Direction:" msgstr "Direction:" #: src/advanced.cxx:1127 msgid "Disabled" msgstr "Désactivé" #: src/wizard.cxx:764 msgid "Display" msgstr "Affichage" #: src/wizard.fl msgid "Display all airports" msgstr "Afficher tous les aéroports" #: src/wizard.fl msgid "Display only installed airports" msgstr "Afficher uniquement les aéroports installés" #: src/advanced.cxx:767 msgid "Display splash screen at startup" msgstr "Afficher l'écran d'accueil au démarrage" #: src/advanced.cxx:827 msgid "Distance attenuation" msgstr "Atténuation suivant la distance" #: src/advanced.cxx:907 msgid "Do not attempt to trim the model" msgstr "Ne pas ajuster le modèle" #: src/wizard_funcs.cxx:2685 msgid "Don't overwrite" msgstr "Ne pas écraser" #: src/wizard_funcs.cxx:113 msgid "Early development" msgstr "Début de développement" #: src/wizard_funcs.cxx:105 msgid "Early production" msgstr "Préproduction" #: src/advanced.cxx:1851 msgid "Elevation(ft):" msgstr "Altitude(ft):" #: src/advanced.cxx:1076 msgid "Enable 2D (flat) cloud layers" msgstr "Enclencher les couches nuageuses 2D (plates)" #: src/advanced.cxx:1082 msgid "Enable 3D (volumetric) cloud layers" msgstr "Enclencher les couches nuageuses 3D (volumétriques)" #: src/advanced.cxx:833 msgid "Enable 3D HUD" msgstr "Enclencher l'affichage Tête Haute 3D" #: src/advanced.cxx:868 msgid "Enable AI traffic" msgstr "Enclencher le trafic d'IA" #: src/advanced.cxx:1302 msgid "Enable HTTP server" msgstr "Enclencher le serveur HTTP" #: src/advanced.cxx:801 msgid "Enable Heads Up Display" msgstr "Enclencher l'affichage Tête Haute" #: src/advanced.cxx:807 msgid "Enable anti-aliased HUD" msgstr "Enclencher l'affichage Tête Haute lissé" #: src/advanced.cxx:813 msgid "Enable auto-coordinated turns." msgstr "Enclencher l'auto-coordination des virages" #: src/advanced.cxx:818 msgid "Enable celestial body growth illusion near the horizon" msgstr "Enclencher l'illusion de grossissement des corps célestes à l'horizon" #: src/advanced.cxx:823 msgid "Enable enhanced runway lighting" msgstr "Enclencher l'éclairage amélioré des pistes" #: src/advanced.cxx:779 msgid "Enable extra mouse pointer" msgstr "Enclencher le pointeur souris supplémentaire" #: src/advanced.cxx:762 msgid "Enable full screen game mode" msgstr "Enclencher le mode jeu plein écran" #: src/advanced.cxx:1087 msgid "Enable full screen mode" msgstr "Enclencher le mode plein écran" #: src/advanced.cxx:773 msgid "Enable introduction music during start up" msgstr "Enclencher la musique d'introduction au démarrage" #: src/advanced.cxx:1319 msgid "Enable property server" msgstr "Enclencher le serveur de propriétés" #: src/advanced.cxx:784 msgid "Enable random scenery objects" msgstr "Enclencher le objet aléatoire de scène" #: src/advanced.cxx:828 msgid "Enable runway light distance attenuation" msgstr "" "Enclencher l'atténuation de l'éclairage des pistes en fonction de la distance" #: src/advanced.cxx:1335 msgid "Enable screen shot HTTP server" msgstr "Enclencher le serveur HTTP d'image écran" #: src/advanced.cxx:1092 msgid "Enable sky blending" msgstr "Enclencher le dégradé du ciel" #: src/advanced.cxx:795 msgid "Enable sound effects" msgstr "Enclencher les effets sonores" #: src/advanced.cxx:838 msgid "Enable specular reflections on textured objects" msgstr "Enclencher les reflets spéculaires sur les objets texturés" #: src/advanced.cxx:789 msgid "Enable the instrument panel" msgstr "Enclencher le tableau de bord" #: src/advanced.cxx:1104 msgid "Enable wireframe drawing mode" msgstr "Enclencher le mode de dessin \"Fil de fer\"" #: src/advanced.cxx:822 msgid "Enhanced lighting" msgstr "Eclairage amélioré" #: src/wizard.cxx:789 msgid "Enhanced runway lighting" msgstr "Eclairage de piste amélioré" #: src/advanced.cxx:1738 src/advanced_funcs.cxx:226 msgid "Environment" msgstr "Environnement" #: src/wizard.cxx:498 msgid "Executable path not set or invalid" msgstr "Chemin vers l'exécutable FlightGear invalide ou non renseigné" #: src/advanced.cxx:728 src/wizard.cxx:484 msgid "Executable:" msgstr "Exécutable:" #: src/Fl_OSG.cxx:198 msgid "FDM : " msgstr "Modèle de vol :" #: src/advanced.cxx:891 msgid "FDM:" msgstr "Modèle de vol:" #: src/advanced.cxx:1466 msgid "FGCom built-in" msgstr "FGCom intégré" #: src/advanced.cxx:1472 msgid "FGCom standalone" msgstr "FGCom autonome" #: src/wizard.cxx:522 msgid "FG_AIRCRAFT:" msgstr "" #: src/wizard.cxx:516 msgid "FG_ROOT path invalid or not set" msgstr "Chemin FG_ROOT invalide ou non renseigné" #: src/advanced.cxx:732 src/wizard.cxx:502 msgid "FG_ROOT:" msgstr "FG_ROOT:" #: src/wizard.cxx:610 msgid "FG_SCENERY empty" msgstr "FG_SCENERY vide" #: src/advanced.cxx:736 src/wizard.cxx:551 msgid "FG_SCENERY:" msgstr "FG_SCENERY:" #: src/advanced.cxx:1190 msgid "FOV:" msgstr "Angle de vue:" #: src/advanced.cxx:1820 msgid "FT_ASL[:THICKNESS_FT]" msgstr "FT_ASL[:THICKNESS_FT]" #: src/advanced.cxx:842 msgid "Failures" msgstr "Pannes" #: src/advanced.cxx:1132 msgid "Fastest" msgstr "mode rapide" #: src/advanced.cxx:757 src/wizard.cxx:832 src/advanced_funcs.cxx:215 msgid "Features" msgstr "Caractéristiques" #: src/advanced.cxx:1824 msgid "Fetch real weather" msgstr "Météo réelle" #: src/advanced.cxx:1191 msgid "Field of View angle" msgstr "Angle de vue" #: src/advanced.cxx:1461 msgid "File:" msgstr "Fichier:" #: src/wizard_funcs.cxx:2685 #, c-format msgid "Filename \"%s\" already exists." msgstr "Le fichier \"%s\" existe déjà" #: src/advanced.cxx:1044 msgid "Fix:" msgstr "Fix:" #: src/advanced.cxx:1117 msgid "Flat" msgstr "plat" #: src/advanced.cxx:886 src/advanced_funcs.cxx:216 msgid "Flight Model" msgstr "Modèle de vol" #: src/wizard.cxx:474 msgid "FlightGear Wizard" msgstr "Assistant FlightGear" #: src/wizard.cxx:1032 msgid "FlightGear has been started" msgstr "FlighGear a été démarré" #: src/wizard.cxx:1029 msgid "FlightGear running..." msgstr "FlightGear en exécution..." #: src/wizard.cxx:1052 msgid "Flightgear crashed..." msgstr "Problème FlightGear..." #: src/wizard.cxx:1054 msgid "Flightgear encountered an unexpected failure" msgstr "Flightgear a rencontré une erreur inattendue" #: src/advanced.cxx:1124 msgid "Fog" msgstr "Brouillard" #: src/wizard.cxx:798 msgid "Framerate limiter :" msgstr "Limite fréquence écran :" #: src/advanced.cxx:951 src/advanced.cxx:956 src/advanced_funcs.cxx:217 msgid "Freeze" msgstr "Pause" #: src/advanced.cxx:961 msgid "Fuel Freeze" msgstr "Consommation carburant en pause" #: src/advanced.cxx:1086 src/wizard.cxx:781 msgid "Full Screen" msgstr "Plein écran" #: src/wizard.cxx:621 msgid "Full path to the airport cache" msgstr "Chemin complet vers le fichier cache des aéroports" #: src/wizard.cxx:485 src/wizard.cxx:492 msgid "Full pathname to FlightGear executable" msgstr "Chemin complet vers le programme exécutable FlightGear" #: src/wizard.cxx:626 src/wizard.cxx:633 msgid "Full pathname to Terrasync executable" msgstr "Chemin complet vers le programme exécutable Terrasync" #: src/advanced.cxx:761 msgid "Game Mode" msgstr "Mode de jeu" #: src/advanced.cxx:696 src/advanced_funcs.cxx:214 msgid "General" msgstr "Général" #: src/advanced.cxx:1524 msgid "Generic:" msgstr "Générique:" #: src/advanced.cxx:1145 msgid "Geometry:" msgstr "Géométrie:" #: src/advanced.cxx:1056 msgid "Glide slope:" msgstr "Pente de descente:" #: src/advanced.cxx:1308 msgid "HTTP server port" msgstr "Port du serveur HTTP" #: src/advanced.cxx:800 msgid "HUD" msgstr "Affichage Tête Haute" #: src/advanced.cxx:1013 src/advanced.cxx:1791 msgid "Heading:" msgstr "Cap:" #: src/advanced.cxx:817 src/wizard.cxx:785 msgid "Horizon effect" msgstr "Effet d'horizon" #: src/wizard.cxx:937 msgid "Hostname" msgstr "Machine hébergeant Atlas" #: src/wizard.cxx:936 src/wizard.cxx:958 msgid "Hostname :" msgstr "Serveur :" #: src/advanced.cxx:1492 msgid "Hostname:" msgstr "Serveur:" #: src/advanced.cxx:832 msgid "Hud-3D" msgstr "Affichage Tête Haute 3D" #: src/advanced.cxx:1450 msgid "Hz:" msgstr "Hz:" #: src/AirportTable.cxx:121 msgid "ICAO Id" msgstr "Code OACI" #: src/advanced.cxx:938 msgid "In Air" msgstr "En l'air" #: src/advanced.cxx:974 src/advanced_funcs.cxx:218 msgid "Initial Position" msgstr "Position initiale" #: src/advanced.cxx:1014 msgid "Initial aircraft heading (yaw) angle 0 to 360 degrees" msgstr "Cap initial de l'aéronef (lacet) " #: src/advanced.cxx:996 msgid "Initial airspeed in knots" msgstr "Vitesse initiale en noeuds" #: src/advanced.cxx:990 msgid "Initial altitude in feet" msgstr "Altitude initiale en pieds" #: src/advanced.cxx:985 msgid "Initial latitude, south is negative" msgstr "Latitude initiale, le sud est négatif" #: src/advanced.cxx:980 msgid "Initial longitude, west is negative" msgstr "Longitude initiale, l'ouest est négatif" #: src/advanced.cxx:1029 msgid "Initial pitch angle (Theta)" msgstr "Angle d'assiette initial (Theta)" #: src/advanced.cxx:1021 msgid "Initial roll angle, (Phi)" msgstr "Angle d'inclinaison initial (Phi)" #: src/advanced.cxx:1151 msgid "Initial visibility distance" msgstr "Distance initiale de visibilité" #: src/wizard.cxx:965 msgid "Input port number" msgstr "Numéro de port IP en entrée" #: src/advanced.cxx:1382 src/advanced_funcs.cxx:222 msgid "Input/Output" msgstr "Entrée/Sortie" #: src/wizard.fl msgid "Installed airports" msgstr "Aéroports installés" #: src/advanced.cxx:1588 msgid "Internal" msgstr "Interne" #: src/advanced.cxx:772 msgid "Intro Music" msgstr "Musique d'introduction" #: src/advanced.cxx:707 msgid "Language:" msgstr "Langue:" #: src/advanced.cxx:984 msgid "Latitude:" msgstr "Latitude:" #: src/advanced.cxx:1837 msgid "Layer:" msgstr "Couche:" #: src/wizard.cxx:1017 msgid "Load" msgstr "Charger" #: src/wizard.cxx:1018 msgid "Load a previously saved configuration" msgstr "Recharge une configuration sauvée" #: src/wizard_funcs.cxx:2590 msgid "Load settings from..." msgstr "Charger les paramètres..." #: src/wizard.cxx:698 msgid "Location :" msgstr "Emplacement :" #: src/advanced.cxx:1656 msgid "Log Level:" msgstr "" "Niveau de \n" "messages :" #: src/wizard_funcs.cxx:469 msgid "Log Window" msgstr "Fenêtre journal" #: src/advanced.cxx:979 msgid "Longitude:" msgstr "Longitude:" #: src/advanced.cxx:1207 msgid "Materials file:" msgstr "Fichier des matières:" #: src/advanced.cxx:1419 msgid "Medium:" msgstr "" #: src/wizard.cxx:875 msgid "Menu auto-visibility" msgstr "" #: src/advanced.cxx:1157 msgid "Meters" msgstr "Mètres" #: src/advanced.cxx:1164 msgid "Miles" msgstr "Milles nautiques" #: src/Fl_OSG.cxx:183 msgid "Model : " msgstr "Modèle :" #: src/advanced.cxx:912 msgid "Model Hz:" msgstr "" "Fréquence\n" "du modèle(Hz):" #: src/wizard_funcs.cxx:749 #, c-format msgid "Model not found: '%s'" msgstr "Modèle non trouvé : '%s'" #: src/advanced.cxx:778 msgid "Mouse Pointer" msgstr "Pointeur souris" #: src/wizard.cxx:600 msgid "Move scenery directory down" msgstr "Déplacer un répertoire de scène vers le bas" #: src/wizard.cxx:589 msgid "Move scenery directory up" msgstr "Déplacer un répertoire de scène vers le haut" #: src/advanced.cxx:1359 msgid "Multiplay 1:" msgstr "Joueur 1:" #: src/advanced.cxx:1364 msgid "Multiplay 2:" msgstr "Joueur 2:" #: src/wizard.cxx:949 msgid "Multiplayer" msgstr "Multijoueur" #: src/advanced.cxx:1350 msgid "Multiplayer Options" msgstr "Options multijoueur" #: src/advanced.cxx:1040 msgid "NDB:" msgstr "NDB:" #: src/AirportTable.cxx:121 msgid "Name" msgstr "Nom" #: src/advanced.cxx:1576 msgid "Nav1" msgstr "" #: src/advanced.cxx:1559 msgid "Nav1:" msgstr "" #: src/advanced.cxx:1582 msgid "Nav2" msgstr "" #: src/advanced.cxx:1564 msgid "Nav2:" msgstr "" #: src/advanced.cxx:1296 src/advanced_funcs.cxx:221 msgid "Network" msgstr "Réseau" #: src/advanced.cxx:1396 src/advanced.cxx:1642 src/advanced.cxx:1687 #: src/advanced.cxx:1720 src/advanced.cxx:1752 msgid "New" msgstr "Nouveau" #: src/wizard.cxx:995 src/wizard_funcs.cxx:407 src/wizard_funcs.cxx:958 #: src/wizard_funcs.cxx:1802 src/wizard_funcs.cxx:1811 msgid "Next" msgstr "Suivant" #: src/advanced.cxx:1137 msgid "Nicest" msgstr "mode réaliste" #: src/Fl_OSG.cxx:207 msgid "No Rating" msgstr "Pas de notation" #: src/advanced.cxx:906 msgid "No Trim" msgstr "Sans ajustage" #: src/wizard_funcs.cxx:1755 msgid "Not set" msgstr "Non renseignée" #: src/advanced.cxx:688 src/wizard.cxx:1064 src/wizard.cxx:1089 msgid "OK" msgstr "OK" #: src/advanced.cxx:1252 msgid "Offset (+/-) from real time" msgstr "Décalage (+/-) par rapport à l'heure réelle" #: src/advanced.cxx:931 msgid "On Ground" msgstr "Sur le sol" #: src/wizard.cxx:728 msgid "Only valid if carrier is set. For airport parking, use the list above." msgstr "" "Seulement utilisé si le porte-avion est spécifié.\n" "Pour un parking d'aéroport, utiliser la liste ci-dessus." #: src/main.cxx:162 #, c-format msgid "" "Options are:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " --version=\n" " -f, --fullscreen\n" "%s" msgstr "" "Les options sont:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " -f, --fullscreen\n" "%s" #: src/wizard.cxx:969 msgid "Output port number" msgstr "Numéro de port IP en sortie" #: src/wizard_funcs.cxx:2685 src/fgfsrc.cxx:61 msgid "Overwrite" msgstr "Ecraser" #: src/advanced.cxx:788 msgid "Panel" msgstr "Tableau de bord" #: src/wizard.cxx:727 msgid "Park pos :" msgstr "Position parking :" #: src/AirportBrowser.cxx:89 msgid "Parking" msgstr "Parking" #: src/advanced.cxx:720 msgid "Path to additional XML properties file" msgstr "Chemin vers un fichier XML de propriété additionnel" #: src/wizard.cxx:959 msgid "Peer hostname" msgstr "hôte partenaire" #: src/advanced.cxx:1028 msgid "Pitch:" msgstr "Assiette:" #: src/wizard.cxx:1072 msgid "Please send this error report to the Flightgear development team" msgstr "" "Merci d'envoyer ce rapport d'erreur à l'équipe de développement de Flightgear" #: src/wizard.cxx:1037 msgid "Please wait..." msgstr "Attendre SVP..." #: src/advanced.cxx:1475 src/advanced.cxx:1498 msgid "Port:" msgstr "Port:" #: src/wizard.cxx:1082 msgid "Prefetch Scenery" msgstr "Récupération de scènes" #: src/wizard.cxx:991 msgid "Prev" msgstr "Précédent" #: src/wizard.cxx:670 msgid "Preview" msgstr "Aperçu" #: src/advanced.cxx:1612 src/advanced_funcs.cxx:224 msgid "Properties" msgstr "Propriétés" #: src/wizard_funcs.cxx:790 msgid "Property '/sim/model/path' not found" msgstr "Propriété '/sim/model/path' non trouvée" #: src/advanced.cxx:1325 msgid "Property server port" msgstr "Port du serveur de propriétés" #: src/advanced.cxx:1633 msgid "Property:" msgstr "Propriété:" #: src/advanced.cxx:1405 msgid "Protocol:" msgstr "Protocole:" #: src/advanced.cxx:1373 msgid "Proxy:" msgstr "" #: src/wizard.cxx:999 msgid "Quit" msgstr "Quitter" #: src/advanced.cxx:783 msgid "Random Objects" msgstr "Objets aléatoires" #: src/advanced.cxx:877 msgid "Random Trees" msgstr "Arbres aléatoires" #: src/advanced.cxx:1806 msgid "Random Winds" msgstr "Vents aléatoires" #: src/wizard.cxx:836 msgid "Random objects" msgstr "Objets aléatoires" #: src/wizard.cxx:840 msgid "Random trees" msgstr "Arbres aléatoires" #: src/Fl_OSG.cxx:205 msgid "Rating" msgstr "Notation" # Adjust horizontal position of stars #: src/Fl_OSG.cxx:179 msgid "RatingPos" msgstr "35" #: src/wizard.cxx:860 msgid "Real weather fetch" msgstr "Météo réelle" #: src/wizard.cxx:651 msgid "Recently used aircraft :" msgstr "Aéronefs récemment utilisés :" #: src/AirportBrowser.cxx:96 msgid "Refresh" msgstr "Rafraîchir" #: src/AirportBrowser.cxx:99 msgid "Reload airports" msgstr "Recharger les aéroports" #: src/advanced.cxx:1070 src/advanced_funcs.cxx:219 msgid "Rendering" msgstr "Rendu graphique" #: src/advanced.cxx:1534 msgid "Repeat" msgstr "Répéter" #: src/wizard_funcs.cxx:977 msgid "Reset" msgstr "Remise à zéro" #: src/wizard.cxx:768 msgid "Resolution :" msgstr "Résolution :" #: src/wizard.cxx:1006 msgid "Restore default settings" msgstr "Remise à Zéro" #: src/advanced.cxx:1020 msgid "Roll:" msgstr "Inclinaison:" #: src/wizard_funcs.cxx:950 msgid "Run" msgstr "Lancer" #: src/advanced.cxx:922 msgid "Run FDM faster than real time" msgstr "Exécuter le modèle de vol plus rapidement que le temps réel" #: src/advanced.cxx:913 msgid "Run the FDM at this rate (iterations per second)" msgstr "Exécuter le modèle de vol à cette fréquence (itérations par secondes)" #: src/advanced.cxx:744 msgid "Runway:" msgstr "Piste:" #: src/AirportBrowser.cxx:84 msgid "Runways" msgstr "Pistes" #: src/wizard.cxx:1012 msgid "Save As..." msgstr "Sauver sous..." #: src/wizard.cxx:1013 msgid "Save current configuration to a file" msgstr "Sauve la configuration courante dans un fichier" #: src/logwin.cxx:99 msgid "Save file as?" msgstr "Sauver sous ?" #: src/wizard_funcs.cxx:2681 msgid "Save settings as..." msgstr "Sauver les paramètres sous..." #: src/wizard.cxx:881 msgid "Scenarios" msgstr "Scénarios" #: src/wizard.cxx:736 msgid "Scenery Prefetch" msgstr "Récupération de scènes" #: src/wizard.cxx:552 msgid "Scenery directories" msgstr "Répertoires de scènes" #: src/advanced.cxx:1341 msgid "Screen shot HTTP server port" msgstr "Port du serveur HTTP d'image JPEG" #: src/wizard.cxx:868 msgid "Season :" msgstr "Saison :" #: src/wizard_funcs.cxx:1347 msgid "Select FG_AIRCRAFT directory" msgstr "Choisir un répertoire FG_AIRCRAFT" #: src/wizard_funcs.cxx:1072 msgid "Select FG_ROOT directory" msgstr "Choisir le répertoire FG_ROOT" #: src/wizard_funcs.cxx:1421 msgid "Select FG_SCENERY directory" msgstr "Choisir un répertoire FG_SCENERY" #: src/wizard_funcs.cxx:992 msgid "Select FlightGear executable" msgstr "Choisir le fichier exécutable de FlightGear" #: src/wizard.cxx:477 msgid "Select Paths" msgstr "Choisir les chemins" #: src/wizard_funcs.cxx:1531 msgid "Select Terrasync executable" msgstr "Choisir le fichier exécutable de Terrasync" #: src/wizard.cxx:704 msgid "Select a location" msgstr "Choisir une position" #: src/advanced_funcs.cxx:293 msgid "Select a preferences file" msgstr "Choisir un fichier de préférence" #: src/wizard_funcs.cxx:1766 src/wizard_funcs.cxx:1770 #: src/wizard_funcs.cxx:2284 msgid "Select a scenario to display its description" msgstr "Sélectionner un scénario pour voir sa description" #: src/wizard.cxx:640 msgid "Select an aircraft" msgstr "Choisir un aéronef" #: src/advanced_funcs.cxx:238 msgid "Select browser" msgstr "Choisir un navigateur" #: src/io.cxx:301 msgid "Select file" msgstr "Choisir un fichier" #: src/wizard.cxx:576 msgid "Select the line in the FG_SCENERY list that is the TerraSync directory." msgstr "" "Sélectionner la ligne dans la liste FG_SCENERY qui représente le répertoire " "TerraSync." #: src/advanced.cxx:1560 msgid "Set the NAV1 radio frequency, optionally preceded by a radial" msgstr "Positionne la fréquence NAV1, optionnellement précédée par une radiale" #: src/advanced.cxx:1199 msgid "Set the maximum degree of anisotropy in texture filtering" msgstr "Règle le degré maximum d'anisotropie dans le filtrage des textures" #: src/advanced.cxx:1108 msgid "Shading" msgstr "Ombrage" #: src/wizard.cxx:753 msgid "Show command line" msgstr "Voir la ligne de commande" #: src/advanced.cxx:1091 msgid "Sky Blend" msgstr "Dégradé du ciel" #: src/advanced.cxx:1111 msgid "Smooth" msgstr "lissé" #: src/advanced.cxx:794 msgid "Sound" msgstr "Son" #: src/advanced.cxx:1871 msgid "Span (m):" msgstr "Etendue (m):" #: src/advanced.cxx:1158 msgid "Specify visibilty in meters" msgstr "Spécifier la visibilité en mètres" #: src/advanced.cxx:1165 msgid "Specify visiblity in miles" msgstr "Spécifier la visibilité en milles nautiques" #: src/advanced.cxx:837 src/wizard.cxx:794 msgid "Specular highlight" msgstr "Reflets spéculaires" #: src/advanced.cxx:1799 msgid "Speed (kts):" msgstr "Vitesse (mn):" #: src/advanced.cxx:921 msgid "Speed:" msgstr "Vitesse:" #: src/advanced.cxx:766 msgid "Splash Screen" msgstr "Ecran d'accueil" #: src/advanced.cxx:932 msgid "Start at ground level" msgstr "Démarrer sur le sol" #: src/advanced.cxx:1239 msgid "Start date gmt" msgstr "Démarrage avec heure GMT" #: src/advanced.cxx:1245 msgid "Start date lat" msgstr "Démarrage avec heure de la latitude" #: src/advanced.cxx:1233 msgid "Start date sys" msgstr "Démarrage avec heure système" #: src/advanced.cxx:939 msgid "Start in the air" msgstr "Démarrer en l'air" #: src/advanced.cxx:957 msgid "Start paused" msgstr "Démarrer en pause" #: src/wizard.cxx:690 msgid "Status :" msgstr "Statut :" #: src/advanced.cxx:1227 msgid "Synchronize simulation time with local time" msgstr "Synchroniser la simulation avec l'heure locale" #: src/advanced.cxx:1219 msgid "Synchronize simulation time with real time" msgstr "Synchroniser la simulation avec l'heure réelle" #: src/Fl_OSG.cxx:193 msgid "Systems : " msgstr "Systèmes :" #: src/advanced.cxx:1507 msgid "TCP" msgstr "TCP" #: src/wizard.cxx:910 msgid "TerraSync" msgstr "" #: src/wizard.cxx:575 msgid "TerraSync directory" msgstr "Répertoire TerraSync" #: src/wizard_funcs.cxx:1799 msgid "TerraSync directory not set" msgstr "Répertoire TerraSync non configuré" #: src/wizard_funcs.cxx:1808 msgid "TerraSync executable not set" msgstr "Exécutable TerraSync non configuré" #: src/wizard_funcs.cxx:2779 msgid "TerraSync must be configured" msgstr "TerraSync doit être configuré" #: src/wizard.cxx:625 msgid "Terrasync exe:" msgstr "Exécutable TerraSync:" #: src/advanced.cxx:1198 msgid "Texture filtering:" msgstr "Filtrage des textures:" #: src/advanced.cxx:1097 msgid "Textures" msgstr "Textures" #: src/advanced.cxx:1858 msgid "Thickness (ft):" msgstr "Epaisseur (ft):" #: src/advanced.cxx:1213 src/advanced_funcs.cxx:220 msgid "Time" msgstr "Heure" #: src/advanced.cxx:1226 msgid "Time match local" msgstr "Heure locale" #: src/advanced.cxx:1218 msgid "Time match real" msgstr "Heure réelle" #: src/advanced.cxx:1279 msgid "Time of day" msgstr "Heure du jour" #: src/wizard.cxx:852 msgid "Time of day :" msgstr "Heure de la journée :" #: src/wizard.cxx:1040 msgid "To change aircraft, exit FlightGear and return to this launcher" msgstr "" "Pour changer d'aéronef, sortir de FlightGear et revenir à cet assistant" #: src/wizard.cxx:799 msgid "Too much framerate hurts the smoothness of the simulation" msgstr "" "Pour limiter la vitesse de rafraîchissement de l'écran qui peut altérer les " "performances globales" #: src/advanced.cxx:1671 msgid "Trace Read Properties" msgstr "Tracer les propriétés lues" #: src/advanced.cxx:1704 msgid "Trace Write Properties" msgstr "Tracer les propriétés écrites" #: src/advanced.cxx:1879 msgid "Transition (ft):" msgstr "Transition (ft):" #: src/advanced.cxx:1813 msgid "Turbulence" msgstr "Turbulence" #: src/advanced.cxx:1514 msgid "UDP" msgstr "UDP" #: src/wizard_funcs.cxx:1323 #, c-format msgid "" "Unable to delete '%s':\n" "%s" msgstr "" "Impossible de supprimer '%s':\n" "%s" #: src/wizard_funcs.cxx:1234 src/wizard_funcs.cxx:1235 #: src/wizard_funcs.cxx:1237 msgid "Unknown" msgstr "Inconnu" #: src/wizard_funcs.cxx:2773 #, c-format msgid "Unknown airport : '%s'" msgstr "Aéroport inconnu : '%s'" #: src/wizard.cxx:790 msgid "Use with caution. It may drop your framerate dramatically" msgstr "" "Utiliser avec précautions. Cela peut ralentir significativement le taux de " "rafraichissement écran" #: src/advanced.cxx:1036 msgid "VOR:" msgstr "VOR:" #: src/advanced.cxx:1679 src/advanced.cxx:1712 src/advanced.cxx:1761 msgid "Value:" msgstr "Valeur:" #: src/advanced.cxx:1172 msgid "View Offset:" msgstr "Décalage de vision:" #: src/wizard.cxx:695 msgid "Viewer" msgstr "" #: src/advanced.cxx:1150 msgid "Visibility:" msgstr "Visibilité:" #: src/wizard.cxx:1058 msgid "We are sorry for this inconvenience." msgstr "Nous sommes désolés pour la gène occasionnée" #: src/advanced.cxx:1770 src/advanced_funcs.cxx:227 msgid "Weather" msgstr "Météo" #: src/advanced.cxx:1778 msgid "Wind Direction" msgstr "Direction du vent" #: src/advanced.cxx:1800 msgid "Wind speed (kts)" msgstr "Vitesse du vent (mn)" #: src/advanced.cxx:1146 src/wizard.cxx:769 msgid "Window geometry, WxH" msgstr "Taille de fenêtre, LxH" #: src/advanced.cxx:1103 msgid "Wireframe" msgstr "Fil de fer" #: src/advanced_funcs.cxx:294 msgid "XML Files(*.xml)" msgstr "Fichiers XML(*.xml)" #: src/wizard_funcs.cxx:86 src/advanced_funcs.cxx:110 msgid "afternoon" msgstr "après-midi" #: src/advanced_funcs.cxx:122 msgid "alert" msgstr "alerte" #: src/wizard_funcs.cxx:107 msgid "alpha" msgstr "Alpha" #: src/wizard_funcs.cxx:106 msgid "beta" msgstr "Béta" #: src/wizard.cxx:816 msgid "bpp :" msgstr "bpp :" #: src/advanced.cxx:1176 msgid "bpp:" msgstr "bpp:" #: src/advanced_funcs.cxx:128 msgid "broken" msgstr "fragmenté" #: src/advanced_funcs.cxx:118 msgid "bulk" msgstr "tout-venant" #: src/advanced.cxx:1814 msgid "calm (0.0) to severe (1.0)" msgstr "calme (0.0) à sévère (1.0)" #: src/advanced.cxx:1285 msgid "choice:" msgstr "Choix:" #: src/advanced_funcs.cxx:131 msgid "cirrus" msgstr "cirrus" #: src/advanced_funcs.cxx:132 msgid "clear" msgstr "ciel clair" #: src/wizard_funcs.cxx:83 src/advanced_funcs.cxx:107 msgid "dawn" msgstr "aurore" #: src/advanced_funcs.cxx:119 msgid "debug" msgstr "déboguage" #: src/wizard_funcs.cxx:112 msgid "devel" msgstr "Développement" #: src/wizard_funcs.cxx:110 msgid "developement" msgstr "Développement" #: src/wizard_funcs.cxx:111 msgid "development" msgstr "Développement" #: src/wizard_funcs.cxx:87 src/advanced_funcs.cxx:111 msgid "dusk" msgstr "crépuscule" #: src/wizard_funcs.cxx:108 msgid "early alpha" msgstr "Pré alpha" #: src/wizard_funcs.cxx:104 msgid "early production" msgstr "Préproduction" #: src/wizard_funcs.cxx:103 msgid "early-production" msgstr "Préproduction" #: src/wizard_funcs.cxx:88 src/advanced_funcs.cxx:112 msgid "evening" msgstr "soir" #: src/wizard_funcs.cxx:114 msgid "experimental" msgstr "Expérimental" #: src/advanced_funcs.cxx:130 msgid "few" msgstr "peu" #: src/AirportBrowser.cxx:571 msgid "gzopen error" msgstr "Erreur gzopen" #: src/advanced_funcs.cxx:148 msgid "highest filtering" msgstr "filtrage maxi" #: src/advanced.cxx:1301 msgid "httpd" msgstr "Serveur HTTP" #: src/wizard.cxx:964 msgid "in :" msgstr "entrée :" #: src/advanced_funcs.cxx:120 msgid "info" msgstr "information" #: src/advanced.cxx:1360 msgid "in|out,hz,address,port" msgstr "" #: src/advanced_funcs.cxx:137 msgid "joystick" msgstr "manette" #: src/advanced.cxx:1334 msgid "jpg-httpd" msgstr "" "Serveur HTTP\n" "de fichier JPEG" #: src/advanced_funcs.cxx:138 msgid "keyboard" msgstr "clavier" #: src/wizard_funcs.cxx:89 src/advanced_funcs.cxx:113 msgid "midnight" msgstr "minuit" #: src/wizard_funcs.cxx:84 src/advanced_funcs.cxx:108 msgid "morning" msgstr "matin" #: src/advanced_funcs.cxx:139 msgid "mouse" msgstr "souris" #: src/advanced_funcs.cxx:144 msgid "no filtering" msgstr "pas de filtrage" #: src/wizard_funcs.cxx:85 src/advanced_funcs.cxx:109 msgid "noon" msgstr "midi" #: src/advanced.cxx:1052 msgid "offset azimuth:" msgstr "Décalage d'azimut:" #: src/advanced.cxx:1048 msgid "offset distance:" msgstr "Décalage de distance:" #: src/wizard.cxx:968 msgid "out :" msgstr "sortie :" #: src/advanced_funcs.cxx:127 msgid "overcast" msgstr "couvert" #: src/advanced.cxx:847 msgid "pitot" msgstr "tube de pitot" #: src/wizard_funcs.cxx:102 msgid "production" msgstr "Production" #: src/advanced.cxx:1634 msgid "prop=value" msgstr "propriété=valeur" #: src/advanced.cxx:1318 msgid "props" msgstr "" #: src/wizard.cxx:503 src/wizard.cxx:510 msgid "root data path" msgstr "Chemin vers le sommet des données" #: src/advanced_funcs.cxx:129 msgid "scattered" msgstr "épars" #: src/advanced.cxx:852 msgid "static" msgstr "pression statique" #: src/wizard_funcs.cxx:94 msgid "summer" msgstr "été" #: src/advanced.cxx:857 msgid "system" msgstr "système" #: src/advanced.cxx:1001 msgid "uBody:" msgstr "" #: src/advanced.cxx:1005 msgid "vBody:" msgstr "" #: src/advanced.cxx:862 msgid "vacuum" msgstr "pompe à vide" #: src/advanced.cxx:1009 msgid "wBody" msgstr "" #: src/advanced_funcs.cxx:121 msgid "warn" msgstr "avertissement" #: src/wizard_funcs.cxx:95 msgid "winter" msgstr "hiver" #~ msgid "telnet" #~ msgstr "telnet" fg-fgrun/po/it.po000066400000000000000000001055271245722473500142100ustar00rootroot00000000000000# Italian translations for fgrun package. # Copyright (C) 2008 Frederic Bouvier # This file is distributed under the same license as the fgrun package. # Andrea Vezzali , 2008. # msgid "" msgstr "" "Project-Id-Version: fgrun 1.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-03 02:20+0200\n" "PO-Revision-Date: 2008-02-05 00:02+0100\n" "Last-Translator: Andrea Vezzali \n" "Language-Team: Italian\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/logwin.cxx:34 msgid "&Close" msgstr "&Chiudi" #: src/logwin.cxx:32 msgid "&File" msgstr "&File" #: src/logwin.cxx:33 msgid "&Save" msgstr "&Salva" #: src/advanced.cxx:715 src/advanced.cxx:724 src/advanced.cxx:1467 msgid "..." msgstr "..." #: src/advanced_funcs.cxx:145 msgid "2.0" msgstr "" #: src/advanced.cxx:1081 src/wizard.cxx:812 msgid "3D Clouds" msgstr "Nuvole 3D" #: src/wizard.cxx:643 #, fuzzy msgid "3D Preview" msgstr "Anteprima" #: src/advanced_funcs.cxx:146 msgid "4.0" msgstr "" #: src/advanced_funcs.cxx:147 msgid "8.0" msgstr "" #: src/wizard.cxx:942 msgid ":" msgstr ":" #: src/wizard_funcs.cxx:889 src/wizard_funcs.cxx:2449 #: src/AirportBrowser.cxx:470 src/fgfsrc.cxx:101 msgid "" msgstr "" #: src/wizard_funcs.cxx:225 #, c-format msgid "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

This program is released under the " "GNU General Public License (http://www.gnu.org/copyleft/gpl.html).

" "

Report bugs to http://sourceforge.net/projects/fgrun

" msgstr "" "· Programma di Avvio per FlightGear·%s····

Programma·di·Avvio·per·FlightGear·%s

··

Questo " "programma è rilasciato con licenza GNU·General·Public·License·(http://www." "gnu.org/copyleft/gpl.html).

··

Segnala gli Errori a·http://sourceforge." "net/projects/fgrun

·" #: src/wizard.cxx:599 msgid "@2>" msgstr "@2>" #: src/wizard.cxx:588 msgid "@8>" msgstr "@8>" #: src/advanced.cxx:1568 msgid "ADF:" msgstr "ADF:" #: src/advanced.cxx:867 #, fuzzy msgid "AI Models" msgstr "Modelli AI" #: src/advanced.cxx:873 src/wizard.cxx:848 msgid "AI Traffic" msgstr "Traffico AI" #: src/wizard.cxx:844 msgid "AI models" msgstr "Modelli AI" #: src/wizard_funcs.cxx:977 src/fgfsrc.cxx:61 msgid "Abort" msgstr "Annulla" #: src/fgfsrc.cxx:61 #, c-format msgid "About to overwrite %s." msgstr "Sto per sovrascrivere·%s." #: src/wizard_funcs.cxx:977 msgid "About to reset current parameters" msgstr "Sto per resettare i parametri correnti" #: src/wizard.cxx:562 msgid "Add a scenery directory" msgstr "Aggiungi una directory di scenari" #: src/wizard.cxx:533 #, fuzzy msgid "Add an aircraft directory" msgstr "Aggiungi una directory di scenari" #: src/wizard.cxx:532 src/wizard.cxx:561 msgid "Add..." msgstr "Aggiungi..." #: src/advanced.cxx:672 msgid "Advanced Options" msgstr "Opzioni Avanzate" #: src/wizard.cxx:747 msgid "Advanced..." msgstr "Avanzato..." #: src/wizard.cxx:523 #, fuzzy msgid "Aircraft directories" msgstr "Cartella Scenery" #: src/advanced.cxx:748 msgid "Aircraft:" msgstr "Aeromobile:" #: src/wizard.cxx:1097 #, fuzzy msgid "Airport to fetch : " msgstr "Cache Aeroporti:" #: src/advanced.cxx:740 msgid "Airport:" msgstr "Aeroporto:" #: src/wizard.cxx:620 msgid "Airports Cache:" msgstr "Cache Aeroporti:" #: src/advanced.cxx:995 msgid "Airspeed:" msgstr "Velocità dell'aria:" #: src/wizard.fl msgid "All airports" msgstr "" #: src/advanced.cxx:989 msgid "Altitude:" msgstr "Altitudine:" #: src/wizard.cxx:1068 msgid "An error report has been generated in the file below :" msgstr "" #: src/advanced.cxx:806 msgid "Anti-alias HUD" msgstr "Anti-alias HUD" #: src/wizard.cxx:931 msgid "Atlas" msgstr "Atlas" #: src/wizard.cxx:692 msgid "Author(s) :" msgstr "Autore(i) :" #: src/advanced.cxx:812 src/wizard.cxx:864 msgid "Auto-coordination" msgstr "Coordinazione automatica" #: src/wizard.cxx:659 #, fuzzy msgid "Available aircraft :" msgstr "Aeromobile:" #: src/advanced.cxx:1554 src/advanced_funcs.cxx:223 msgid "Avionics" msgstr "Avionica" #: src/advanced.cxx:1481 msgid "Baud Rate:" msgstr "Baud Rate:" #: src/advanced.cxx:711 msgid "Browser:" msgstr "Browser:" #: src/wizard.cxx:954 msgid "Callsign :" msgstr "Callsign :" #: src/advanced.cxx:1355 msgid "Callsign:" msgstr "Callsign:" #: src/advanced.cxx:685 src/wizard.cxx:1085 msgid "Cancel" msgstr "Annulla" #: src/wizard.cxx:725 msgid "Carrier : " msgstr "Carrier : " #: src/wizard.cxx:721 msgid "Carrier Ops" msgstr "Carrier Ops" #: src/advanced.cxx:1819 msgid "Ceiling:" msgstr "Base delle nubi:" #: src/wizard.cxx:1007 msgid "" "Clear all selected options and return to the install situation. Useful if " "FGFS don't start anymore." msgstr "" #: src/wizard.cxx:615 msgid "Clear the content of the airport cache" msgstr "" #: src/advanced.cxx:1060 msgid "Climb rate:" msgstr "Rateo di Salita:" #: src/advanced.cxx:965 msgid "Clock Freeze" msgstr "Congela orologio" #: src/advanced.cxx:1075 src/advanced.cxx:1833 src/advanced_funcs.cxx:228 msgid "Clouds" msgstr "Nuvole" #: src/Fl_OSG.cxx:188 msgid "Cockpit : " msgstr "" #: src/advanced.cxx:1177 src/wizard.cxx:817 msgid "Color depth (bits per pixel)" msgstr "Profondità colore (bits per pixel)" #: src/advanced.cxx:719 msgid "Config:" msgstr "Config:" #: src/advanced.cxx:892 msgid "Core Flight Dynamics Model" msgstr "Dinamica di volo del modello (FDM)" #: src/advanced.cxx:1865 msgid "Coverage:" msgstr "Copertura:" #: src/wizard.cxx:894 msgid "Ctrl-click to deselect a single item" msgstr "" #: src/wizard.cxx:886 msgid "Ctrl-click to select or deselect a single item" msgstr "" #: src/advanced.cxx:1601 msgid "DME:" msgstr "DME:" #: src/advanced.cxx:1650 src/advanced_funcs.cxx:225 msgid "Debugging" msgstr "Debugging" #: src/advanced.cxx:1400 src/advanced.cxx:1628 src/advanced.cxx:1691 #: src/advanced.cxx:1724 src/advanced.cxx:1756 src/wizard.cxx:537 #: src/wizard.cxx:566 src/wizard.cxx:614 msgid "Delete" msgstr "Cancella" #: src/wizard.cxx:567 msgid "Delete a scenery directory" msgstr "Elimina una directory di scenari" #: src/wizard.cxx:538 #, fuzzy msgid "Delete an aircraft directory" msgstr "Elimina una directory di scenari" #: src/wizard_funcs.cxx:1752 msgid "Description of " msgstr "Descrizione di " #: src/wizard.cxx:893 msgid "Deselect all" msgstr "" #: src/wizard_funcs.cxx:109 msgid "Development" msgstr "Sviluppo" #: src/advanced.cxx:1792 msgid "Direction wind is coming from." msgstr "Direzione dalla quale arriva il vento" #: src/advanced.cxx:1435 msgid "Direction:" msgstr "Direzione:" #: src/advanced.cxx:1127 msgid "Disabled" msgstr "Disabilitato" #: src/wizard.cxx:764 msgid "Display" msgstr "Schermo" #: src/wizard.fl msgid "Display all airports" msgstr "" #: src/wizard.fl msgid "Display only installed airports" msgstr "" #: src/advanced.cxx:767 msgid "Display splash screen at startup" msgstr "Visualizza schermata iniziale all'avvio" #: src/advanced.cxx:827 msgid "Distance attenuation" msgstr "Attenuazione distanza" #: src/advanced.cxx:907 msgid "Do not attempt to trim the model" msgstr "Non tentare di trimmare il modello" #: src/wizard_funcs.cxx:2685 #, fuzzy msgid "Don't overwrite" msgstr "Sovrascrivi" #: src/wizard_funcs.cxx:113 msgid "Early development" msgstr "Sviluppo iniziale" #: src/wizard_funcs.cxx:105 msgid "Early production" msgstr "Produzione iniziale" #: src/advanced.cxx:1851 msgid "Elevation(ft):" msgstr "Elevazione (ft):" #: src/advanced.cxx:1076 msgid "Enable 2D (flat) cloud layers" msgstr "Abilita strati di Nuvole 2D (piatti)" #: src/advanced.cxx:1082 msgid "Enable 3D (volumetric) cloud layers" msgstr "Abilita Strati di Nuvole 3D (Volumerici)" #: src/advanced.cxx:833 msgid "Enable 3D HUD" msgstr "Abilita 3D HUD" #: src/advanced.cxx:868 msgid "Enable AI traffic" msgstr "Abilita Traffico AI" #: src/advanced.cxx:1302 msgid "Enable HTTP server" msgstr "Abilita server HTTP" #: src/advanced.cxx:801 msgid "Enable Heads Up Display" msgstr "Abilita HUD (Heads Up Display)" #: src/advanced.cxx:807 msgid "Enable anti-aliased HUD" msgstr "Abilita anti-aliased HUD" #: src/advanced.cxx:813 msgid "Enable auto-coordinated turns." msgstr "Abilita virate auto-coordinate" #: src/advanced.cxx:818 msgid "Enable celestial body growth illusion near the horizon" msgstr "" "Abilita illusione aumento dimensione corpi celesti vicini all'orizzonte" #: src/advanced.cxx:823 msgid "Enable enhanced runway lighting" msgstr "Abilita luci pista aumentate" #: src/advanced.cxx:779 msgid "Enable extra mouse pointer" msgstr "Abilita puntatore del mouse aggiuntivo" #: src/advanced.cxx:762 msgid "Enable full screen game mode" msgstr "Abilita Game Mode a tutto schermo" #: src/advanced.cxx:1087 msgid "Enable full screen mode" msgstr "Abilita modalità tutto schermo" #: src/advanced.cxx:773 msgid "Enable introduction music during start up" msgstr "Abilita Musica introduttiva all'avvio" #: src/advanced.cxx:1319 msgid "Enable property server" msgstr "Abilita server proprietà" #: src/advanced.cxx:784 msgid "Enable random scenery objects" msgstr "Abilita oggetti scenario casuali" #: src/advanced.cxx:828 msgid "Enable runway light distance attenuation" msgstr "Abilita attenuazione distanza luci pista" #: src/advanced.cxx:1335 msgid "Enable screen shot HTTP server" msgstr "Abilita screen shot server HTTP" #: src/advanced.cxx:1092 msgid "Enable sky blending" msgstr "Abilita sky blending" #: src/advanced.cxx:795 msgid "Enable sound effects" msgstr "Abilita effetti audio" #: src/advanced.cxx:838 msgid "Enable specular reflections on textured objects" msgstr "Abilita riflessione speculare sugli oggetti testurizzati" #: src/advanced.cxx:789 msgid "Enable the instrument panel" msgstr "Abilita pannello strumenti" #: src/advanced.cxx:1104 msgid "Enable wireframe drawing mode" msgstr "Abilita modalità di disegno wireframe" #: src/advanced.cxx:822 msgid "Enhanced lighting" msgstr "Luci aumentate" #: src/wizard.cxx:789 msgid "Enhanced runway lighting" msgstr "Luci Pista aumentate" #: src/advanced.cxx:1738 src/advanced_funcs.cxx:226 msgid "Environment" msgstr "Ambiente" #: src/wizard.cxx:498 msgid "Executable path not set or invalid" msgstr "" #: src/advanced.cxx:728 src/wizard.cxx:484 msgid "Executable:" msgstr "Eseguibile:" #: src/Fl_OSG.cxx:198 #, fuzzy msgid "FDM : " msgstr "FDM:" #: src/advanced.cxx:891 msgid "FDM:" msgstr "FDM:" #: src/advanced.cxx:1466 msgid "FGCom built-in" msgstr "FGCom built-in" #: src/advanced.cxx:1472 msgid "FGCom standalone" msgstr "FGCom standalone" #: src/wizard.cxx:522 msgid "FG_AIRCRAFT:" msgstr "" #: src/wizard.cxx:516 msgid "FG_ROOT path invalid or not set" msgstr "" #: src/advanced.cxx:732 src/wizard.cxx:502 msgid "FG_ROOT:" msgstr "FG_ROOT:" #: src/wizard.cxx:610 #, fuzzy msgid "FG_SCENERY empty" msgstr "FG_SCENERY:" #: src/advanced.cxx:736 src/wizard.cxx:551 msgid "FG_SCENERY:" msgstr "FG_SCENERY:" #: src/advanced.cxx:1190 msgid "FOV:" msgstr "FOV:" #: src/advanced.cxx:1820 msgid "FT_ASL[:THICKNESS_FT]" msgstr "FT_ASL[:THICKNESS_FT]" #: src/advanced.cxx:842 msgid "Failures" msgstr "Guasti" #: src/advanced.cxx:1132 msgid "Fastest" msgstr "Più veloce" #: src/advanced.cxx:757 src/wizard.cxx:832 src/advanced_funcs.cxx:215 msgid "Features" msgstr "Caratteristiche" #: src/advanced.cxx:1824 msgid "Fetch real weather" msgstr "Scarica Meteo reale" #: src/advanced.cxx:1191 msgid "Field of View angle" msgstr "Angolo di visuale" #: src/advanced.cxx:1461 msgid "File:" msgstr "File:" #: src/wizard_funcs.cxx:2685 #, c-format msgid "Filename \"%s\" already exists." msgstr "" #: src/advanced.cxx:1044 msgid "Fix:" msgstr "Fix:" #: src/advanced.cxx:1117 msgid "Flat" msgstr "Flat" #: src/advanced.cxx:886 src/advanced_funcs.cxx:216 msgid "Flight Model" msgstr "Modello di volo" #: src/wizard.cxx:474 msgid "FlightGear Wizard" msgstr "FlightGear Wizard" #: src/wizard.cxx:1032 msgid "FlightGear has been started" msgstr "FlightGear è stato avviato" #: src/wizard.cxx:1029 msgid "FlightGear running..." msgstr "FlightGear avviato..." #: src/wizard.cxx:1052 #, fuzzy msgid "Flightgear crashed..." msgstr "FlightGear avviato..." #: src/wizard.cxx:1054 msgid "Flightgear encountered an unexpected failure" msgstr "" #: src/advanced.cxx:1124 msgid "Fog" msgstr "Nebbia" #: src/wizard.cxx:798 msgid "Framerate limiter :" msgstr "" #: src/advanced.cxx:951 src/advanced.cxx:956 src/advanced_funcs.cxx:217 msgid "Freeze" msgstr "Congela" #: src/advanced.cxx:961 msgid "Fuel Freeze" msgstr "Congela Carburante" #: src/advanced.cxx:1086 src/wizard.cxx:781 msgid "Full Screen" msgstr "Tutto schermo" #: src/wizard.cxx:621 #, fuzzy msgid "Full path to the airport cache" msgstr "Percorso completo per eseguibile di FlightGear" #: src/wizard.cxx:485 src/wizard.cxx:492 msgid "Full pathname to FlightGear executable" msgstr "Percorso completo per eseguibile di FlightGear" #: src/wizard.cxx:626 src/wizard.cxx:633 #, fuzzy msgid "Full pathname to Terrasync executable" msgstr "Percorso completo per eseguibile di FlightGear" #: src/advanced.cxx:761 msgid "Game Mode" msgstr "Game Mode" #: src/advanced.cxx:696 src/advanced_funcs.cxx:214 msgid "General" msgstr "Generale" #: src/advanced.cxx:1524 msgid "Generic:" msgstr "Generic:" #: src/advanced.cxx:1145 msgid "Geometry:" msgstr "Dimensioni:" #: src/advanced.cxx:1056 msgid "Glide slope:" msgstr "Percorso di discesa:" #: src/advanced.cxx:1308 msgid "HTTP server port" msgstr "Porta del server HTTP" #: src/advanced.cxx:800 msgid "HUD" msgstr "HUD" #: src/advanced.cxx:1013 src/advanced.cxx:1791 msgid "Heading:" msgstr "Heading:" #: src/advanced.cxx:817 src/wizard.cxx:785 msgid "Horizon effect" msgstr "Effetto Orizzonte" #: src/wizard.cxx:937 msgid "Hostname" msgstr "Hostname" #: src/wizard.cxx:936 src/wizard.cxx:958 msgid "Hostname :" msgstr "Hostname :" #: src/advanced.cxx:1492 msgid "Hostname:" msgstr "Hostname:" #: src/advanced.cxx:832 msgid "Hud-3D" msgstr "HUD-3D" #: src/advanced.cxx:1450 msgid "Hz:" msgstr "Hz:" #: src/AirportTable.cxx:121 msgid "ICAO Id" msgstr "ICAO·Id" #: src/advanced.cxx:938 msgid "In Air" msgstr "In Volo" #: src/advanced.cxx:974 src/advanced_funcs.cxx:218 msgid "Initial Position" msgstr "Posizione iniziale" #: src/advanced.cxx:1014 msgid "Initial aircraft heading (yaw) angle 0 to 360 degrees" msgstr "" "Angolo (yaw) di direzione (heading) iniziale dell'aeromobile (da 0 a 360 " "gradi)" #: src/advanced.cxx:996 msgid "Initial airspeed in knots" msgstr "Velocità dell'aria in nodi (knots)" #: src/advanced.cxx:990 msgid "Initial altitude in feet" msgstr "Altitudine iniziale in piedi (feet)" #: src/advanced.cxx:985 msgid "Initial latitude, south is negative" msgstr "Latitudine iniziale, Sud è negativo" #: src/advanced.cxx:980 msgid "Initial longitude, west is negative" msgstr "Longitudine Iniziale, Ovest è negativo" #: src/advanced.cxx:1029 msgid "Initial pitch angle (Theta)" msgstr "Angolo di beccheggio iniziale (Theta)" #: src/advanced.cxx:1021 msgid "Initial roll angle, (Phi)" msgstr "Angolo di rollio iniziale, (Phi)" #: src/advanced.cxx:1151 msgid "Initial visibility distance" msgstr "Visibilità iniziale (distanza)" #: src/wizard.cxx:965 msgid "Input port number" msgstr "Input port number" #: src/advanced.cxx:1382 src/advanced_funcs.cxx:222 msgid "Input/Output" msgstr "Input/Output" #: src/wizard.fl msgid "Installed airports" msgstr "" #: src/advanced.cxx:1588 msgid "Internal" msgstr "Interno" #: src/advanced.cxx:772 msgid "Intro Music" msgstr "Musica introduttiva" #: src/advanced.cxx:707 msgid "Language:" msgstr "Lingua:" #: src/advanced.cxx:984 msgid "Latitude:" msgstr "Latitudine:" #: src/advanced.cxx:1837 msgid "Layer:" msgstr "Strato:" #: src/wizard.cxx:1017 msgid "Load" msgstr "" #: src/wizard.cxx:1018 msgid "Load a previously saved configuration" msgstr "" #: src/wizard_funcs.cxx:2590 msgid "Load settings from..." msgstr "" #: src/wizard.cxx:698 #, fuzzy msgid "Location :" msgstr "Risoluzione :" #: src/advanced.cxx:1656 msgid "Log Level:" msgstr "Livello di Log:" #: src/wizard_funcs.cxx:469 msgid "Log Window" msgstr "Finestra di Log" #: src/advanced.cxx:979 msgid "Longitude:" msgstr "Longitudine:" #: src/advanced.cxx:1207 msgid "Materials file:" msgstr "" #: src/advanced.cxx:1419 msgid "Medium:" msgstr "Medio:" #: src/wizard.cxx:875 msgid "Menu auto-visibility" msgstr "" #: src/advanced.cxx:1157 msgid "Meters" msgstr "Metri" #: src/advanced.cxx:1164 msgid "Miles" msgstr "Miglia" #: src/Fl_OSG.cxx:183 #, fuzzy msgid "Model : " msgstr "Modello Hz:" #: src/advanced.cxx:912 msgid "Model Hz:" msgstr "Modello Hz:" #: src/wizard_funcs.cxx:749 #, c-format msgid "Model not found: '%s'" msgstr "Modello non trovato: '%s'" #: src/advanced.cxx:778 msgid "Mouse Pointer" msgstr "Puntatore del mouse" #: src/wizard.cxx:600 #, fuzzy msgid "Move scenery directory down" msgstr "Aggiungi una directory di scenari" #: src/wizard.cxx:589 #, fuzzy msgid "Move scenery directory up" msgstr "Aggiungi una directory di scenari" #: src/advanced.cxx:1359 msgid "Multiplay 1:" msgstr "Multiplay 1:" #: src/advanced.cxx:1364 msgid "Multiplay 2:" msgstr "Multiplay 2:" #: src/wizard.cxx:949 msgid "Multiplayer" msgstr "Multiplayer" #: src/advanced.cxx:1350 msgid "Multiplayer Options" msgstr "Opzioni Multiplayer" #: src/advanced.cxx:1040 msgid "NDB:" msgstr "NDB:" #: src/AirportTable.cxx:121 msgid "Name" msgstr "Nome" #: src/advanced.cxx:1576 msgid "Nav1" msgstr "Nav1" #: src/advanced.cxx:1559 msgid "Nav1:" msgstr "Nav1:" #: src/advanced.cxx:1582 msgid "Nav2" msgstr "Nav2" #: src/advanced.cxx:1564 msgid "Nav2:" msgstr "Nav2:" #: src/advanced.cxx:1296 src/advanced_funcs.cxx:221 msgid "Network" msgstr "Network" #: src/advanced.cxx:1396 src/advanced.cxx:1642 src/advanced.cxx:1687 #: src/advanced.cxx:1720 src/advanced.cxx:1752 msgid "New" msgstr "Nuovo" #: src/wizard.cxx:995 src/wizard_funcs.cxx:407 src/wizard_funcs.cxx:958 #: src/wizard_funcs.cxx:1802 src/wizard_funcs.cxx:1811 msgid "Next" msgstr "Successivo" #: src/advanced.cxx:1137 msgid "Nicest" msgstr "Miglire qualità" #: src/Fl_OSG.cxx:207 #, fuzzy msgid "No Rating" msgstr "Shading" #: src/advanced.cxx:906 msgid "No Trim" msgstr "No Trim" #: src/wizard_funcs.cxx:1755 msgid "Not set" msgstr "" #: src/advanced.cxx:688 src/wizard.cxx:1064 src/wizard.cxx:1089 msgid "OK" msgstr "Ok" #: src/advanced.cxx:1252 msgid "Offset (+/-) from real time" msgstr "Differenza·(+/-)·dal tempo reale" #: src/advanced.cxx:931 msgid "On Ground" msgstr "Al Suolo" #: src/wizard.cxx:728 msgid "Only valid if carrier is set. For airport parking, use the list above." msgstr "" #: src/main.cxx:162 #, fuzzy, c-format msgid "" "Options are:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " --version=\n" " -f, --fullscreen\n" "%s" msgstr "" "Le opzioni sono:\n" "·--silent\n" "·--fg-exe=\n" "·--fg-root=\n" "·--fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" "·-f,·--fullscreen\n" "%s" #: src/wizard.cxx:969 msgid "Output port number" msgstr "Output port number" #: src/wizard_funcs.cxx:2685 src/fgfsrc.cxx:61 msgid "Overwrite" msgstr "Sovrascrivi" #: src/advanced.cxx:788 msgid "Panel" msgstr "Pannello" #: src/wizard.cxx:727 msgid "Park pos :" msgstr "" "Posizione di \n" "Parcheggio:" #: src/AirportBrowser.cxx:89 #, fuzzy msgid "Parking" msgstr "garmin" #: src/advanced.cxx:720 msgid "Path to additional XML properties file" msgstr "Percorso per altri files XML di proprietà" #: src/wizard.cxx:959 msgid "Peer hostname" msgstr "Peer hostname" #: src/advanced.cxx:1028 msgid "Pitch:" msgstr "Beccheggio (Pitch):" #: src/wizard.cxx:1072 msgid "Please send this error report to the Flightgear development team" msgstr "" #: src/wizard.cxx:1037 msgid "Please wait..." msgstr "Attendere..." #: src/advanced.cxx:1475 src/advanced.cxx:1498 msgid "Port:" msgstr "Porta:" #: src/wizard.cxx:1082 msgid "Prefetch Scenery" msgstr "" #: src/wizard.cxx:991 msgid "Prev" msgstr "Precedente" #: src/wizard.cxx:670 msgid "Preview" msgstr "Anteprima" #: src/advanced.cxx:1612 src/advanced_funcs.cxx:224 msgid "Properties" msgstr "Proprietà" #: src/wizard_funcs.cxx:790 msgid "Property '/sim/model/path' not found" msgstr "Proprietà '/sim/model/path' non trovata" #: src/advanced.cxx:1325 msgid "Property server port" msgstr "Porta proprietà del server" #: src/advanced.cxx:1633 msgid "Property:" msgstr "Proprietà:" #: src/advanced.cxx:1405 msgid "Protocol:" msgstr "Protocollo:" #: src/advanced.cxx:1373 msgid "Proxy:" msgstr "Proxy:" #: src/wizard.cxx:999 msgid "Quit" msgstr "Esci" #: src/advanced.cxx:783 msgid "Random Objects" msgstr "Oggetti casuali" #: src/advanced.cxx:877 #, fuzzy msgid "Random Trees" msgstr "Oggetti casuali" #: src/advanced.cxx:1806 msgid "Random Winds" msgstr "Venti casuali" #: src/wizard.cxx:836 msgid "Random objects" msgstr "Oggetti casuali" #: src/wizard.cxx:840 #, fuzzy msgid "Random trees" msgstr "Oggetti casuali" #: src/Fl_OSG.cxx:205 #, fuzzy msgid "Rating" msgstr "Shading" # Adjust horizontal position of stars #: src/Fl_OSG.cxx:179 msgid "RatingPos" msgstr "65" #: src/wizard.cxx:860 msgid "Real weather fetch" msgstr "Scarica dati Meteo reali" #: src/wizard.cxx:651 #, fuzzy msgid "Recently used aircraft :" msgstr "Seleziona un Aeromobile" #: src/AirportBrowser.cxx:96 msgid "Refresh" msgstr "Aggiorna" #: src/AirportBrowser.cxx:99 msgid "Reload airports" msgstr "Ricarica Aeroporti" #: src/advanced.cxx:1070 src/advanced_funcs.cxx:219 msgid "Rendering" msgstr "Rendering" #: src/advanced.cxx:1534 #, fuzzy msgid "Repeat" msgstr "Azzera" #: src/wizard_funcs.cxx:977 msgid "Reset" msgstr "Azzera" #: src/wizard.cxx:768 msgid "Resolution :" msgstr "Risoluzione :" #: src/wizard.cxx:1006 msgid "Restore default settings" msgstr "Predefiniti" #: src/advanced.cxx:1020 msgid "Roll:" msgstr "Rollio:" #: src/wizard_funcs.cxx:950 msgid "Run" msgstr "Avvia" #: src/advanced.cxx:922 msgid "Run FDM faster than real time" msgstr "" "Esegui la dinamica di volo del modello (FDM) più velocemente del tempo reale" #: src/advanced.cxx:913 msgid "Run the FDM at this rate (iterations per second)" msgstr "" "Esegui la dinamica di volo del modello (FDM) a questo rateo (iterazioni per " "secondo)" #: src/advanced.cxx:744 msgid "Runway:" msgstr "Pista:" #: src/AirportBrowser.cxx:84 msgid "Runways" msgstr "Piste" #: src/wizard.cxx:1012 msgid "Save As..." msgstr "" #: src/wizard.cxx:1013 msgid "Save current configuration to a file" msgstr "" #: src/logwin.cxx:99 msgid "Save file as?" msgstr "Salva con nome..." #: src/wizard_funcs.cxx:2681 msgid "Save settings as..." msgstr "" #: src/wizard.cxx:881 #, fuzzy msgid "Scenarios" msgstr "Scenario:" #: src/wizard.cxx:736 #, fuzzy msgid "Scenery Prefetch" msgstr "Cartella Scenery" #: src/wizard.cxx:552 msgid "Scenery directories" msgstr "Cartella Scenery" #: src/advanced.cxx:1341 msgid "Screen shot HTTP server port" msgstr "Porta HTTP screen shot server" #: src/wizard.cxx:868 #, fuzzy msgid "Season :" msgstr "Stato:" #: src/wizard_funcs.cxx:1347 #, fuzzy msgid "Select FG_AIRCRAFT directory" msgstr "Seleziona la directory FG_ROOT" #: src/wizard_funcs.cxx:1072 msgid "Select FG_ROOT directory" msgstr "Seleziona la directory FG_ROOT" #: src/wizard_funcs.cxx:1421 msgid "Select FG_SCENERY directory" msgstr "Seleziona la directory FG_SCENERY" #: src/wizard_funcs.cxx:992 msgid "Select FlightGear executable" msgstr "Seleziona l'eseguibile di FlightGear" #: src/wizard.cxx:477 msgid "Select Paths" msgstr "Seleziona Percorsi" #: src/wizard_funcs.cxx:1531 #, fuzzy msgid "Select Terrasync executable" msgstr "Seleziona l'eseguibile di FlightGear" #: src/wizard.cxx:704 msgid "Select a location" msgstr "Seleziona una località" #: src/advanced_funcs.cxx:293 msgid "Select a preferences file" msgstr "Seleziona file delle preferenze" #: src/wizard_funcs.cxx:1766 src/wizard_funcs.cxx:1770 #: src/wizard_funcs.cxx:2284 msgid "Select a scenario to display its description" msgstr "" #: src/wizard.cxx:640 msgid "Select an aircraft" msgstr "Seleziona un Aeromobile" #: src/advanced_funcs.cxx:238 msgid "Select browser" msgstr "Seleziona browser" #: src/io.cxx:301 #, fuzzy msgid "Select file" msgstr "Seleziona file del protocollo" #: src/wizard.cxx:576 msgid "Select the line in the FG_SCENERY list that is the TerraSync directory." msgstr "" #: src/advanced.cxx:1560 msgid "Set the NAV1 radio frequency, optionally preceded by a radial" msgstr "" "Regola la frequenza della radio NAV1, opzionalmente preceduta da una radiale" #: src/advanced.cxx:1199 msgid "Set the maximum degree of anisotropy in texture filtering" msgstr "" #: src/advanced.cxx:1108 msgid "Shading" msgstr "Shading" #: src/wizard.cxx:753 msgid "Show command line" msgstr "Visualizza riga di comando" #: src/advanced.cxx:1091 msgid "Sky Blend" msgstr "Sky Blend" #: src/advanced.cxx:1111 msgid "Smooth" msgstr "Smooth" #: src/advanced.cxx:794 msgid "Sound" msgstr "Audio" #: src/advanced.cxx:1871 msgid "Span (m):" msgstr "Larghezza (m):" #: src/advanced.cxx:1158 msgid "Specify visibilty in meters" msgstr "Specifica visibilità in metri" #: src/advanced.cxx:1165 msgid "Specify visiblity in miles" msgstr "Specifica visibilità in miglia" #: src/advanced.cxx:837 src/wizard.cxx:794 msgid "Specular highlight" msgstr "Specular highlight" #: src/advanced.cxx:1799 msgid "Speed (kts):" msgstr "Velocità (kts):" #: src/advanced.cxx:921 msgid "Speed:" msgstr "Velocità:" #: src/advanced.cxx:766 msgid "Splash Screen" msgstr "Schermata Iniziale" #: src/advanced.cxx:932 msgid "Start at ground level" msgstr "Inizia a livello del suolo" #: src/advanced.cxx:1239 msgid "Start date gmt" msgstr "Inizia alla data e ora GMT" #: src/advanced.cxx:1245 msgid "Start date lat" msgstr "Inizia alla data della latitudine" #: src/advanced.cxx:1233 msgid "Start date sys" msgstr "Inizia alla data e ora del sistema" #: src/advanced.cxx:939 msgid "Start in the air" msgstr "Inizia in volo" #: src/advanced.cxx:957 msgid "Start paused" msgstr "Inizia in pausa" #: src/wizard.cxx:690 msgid "Status :" msgstr "Stato:" #: src/advanced.cxx:1227 msgid "Synchronize simulation time with local time" msgstr "Sincronizza il tempo della simulazione con quello locale" #: src/advanced.cxx:1219 msgid "Synchronize simulation time with real time" msgstr "Sincronizza il tempo della simulazione con quello reale" #: src/Fl_OSG.cxx:193 #, fuzzy msgid "Systems : " msgstr "Sistema" #: src/advanced.cxx:1507 msgid "TCP" msgstr "TCP" #: src/wizard.cxx:910 msgid "TerraSync" msgstr "" #: src/wizard.cxx:575 #, fuzzy msgid "TerraSync directory" msgstr "Cartella Scenery" #: src/wizard_funcs.cxx:1799 msgid "TerraSync directory not set" msgstr "" #: src/wizard_funcs.cxx:1808 msgid "TerraSync executable not set" msgstr "" #: src/wizard_funcs.cxx:2779 msgid "TerraSync must be configured" msgstr "" #: src/wizard.cxx:625 #, fuzzy msgid "Terrasync exe:" msgstr "Cartella Scenery" #: src/advanced.cxx:1198 msgid "Texture filtering:" msgstr "" #: src/advanced.cxx:1097 msgid "Textures" msgstr "Textures" #: src/advanced.cxx:1858 msgid "Thickness (ft):" msgstr "Spessore (ft):" #: src/advanced.cxx:1213 src/advanced_funcs.cxx:220 msgid "Time" msgstr "Tempo" #: src/advanced.cxx:1226 msgid "Time match local" msgstr "Il·tempo·corrisponde·a·quello·locale" #: src/advanced.cxx:1218 msgid "Time match real" msgstr "Il tempo corrisponde a quello reale" #: src/advanced.cxx:1279 msgid "Time of day" msgstr "Ora del giorno" #: src/wizard.cxx:852 msgid "Time of day :" msgstr "Ora del giorno:" #: src/wizard.cxx:1040 msgid "To change aircraft, exit FlightGear and return to this launcher" msgstr "" "Per cambiare aeromobile, uscire da FlightGear e ritornare a questo programma" #: src/wizard.cxx:799 msgid "Too much framerate hurts the smoothness of the simulation" msgstr "" #: src/advanced.cxx:1671 msgid "Trace Read Properties" msgstr "Proprietà di lettura della traccia" #: src/advanced.cxx:1704 msgid "Trace Write Properties" msgstr "Proprietà di scrittura della traccia" #: src/advanced.cxx:1879 msgid "Transition (ft):" msgstr "Transizione (ft):" #: src/advanced.cxx:1813 msgid "Turbulence" msgstr "Turbolenza" #: src/advanced.cxx:1514 msgid "UDP" msgstr "UDP" #: src/wizard_funcs.cxx:1323 #, c-format msgid "" "Unable to delete '%s':\n" "%s" msgstr "" "Impossibile eliminare·'%s':\n" "%s" #: src/wizard_funcs.cxx:1234 src/wizard_funcs.cxx:1235 #: src/wizard_funcs.cxx:1237 msgid "Unknown" msgstr "Sconosciuto" #: src/wizard_funcs.cxx:2773 #, c-format msgid "Unknown airport : '%s'" msgstr "" #: src/wizard.cxx:790 msgid "Use with caution. It may drop your framerate dramatically" msgstr "Utilizzare con cautela. Potrebbe drasticamente ridurre il framerate" #: src/advanced.cxx:1036 msgid "VOR:" msgstr "VOR:" #: src/advanced.cxx:1679 src/advanced.cxx:1712 src/advanced.cxx:1761 msgid "Value:" msgstr "Valore:" #: src/advanced.cxx:1172 msgid "View Offset:" msgstr "Vista sfalsata:" #: src/wizard.cxx:695 msgid "Viewer" msgstr "" #: src/advanced.cxx:1150 msgid "Visibility:" msgstr "Visibilità:" #: src/wizard.cxx:1058 msgid "We are sorry for this inconvenience." msgstr "" #: src/advanced.cxx:1770 src/advanced_funcs.cxx:227 msgid "Weather" msgstr "Meteo" #: src/advanced.cxx:1778 msgid "Wind Direction" msgstr "Direzione del vento" #: src/advanced.cxx:1800 msgid "Wind speed (kts)" msgstr "Velocità del vento (kts)" #: src/advanced.cxx:1146 src/wizard.cxx:769 msgid "Window geometry, WxH" msgstr "Dimensioni finestra, WxH" #: src/advanced.cxx:1103 msgid "Wireframe" msgstr "Wireframe" #: src/advanced_funcs.cxx:294 msgid "XML Files(*.xml)" msgstr "XML Files(*.xml)" #: src/wizard_funcs.cxx:86 src/advanced_funcs.cxx:110 #, fuzzy msgid "afternoon" msgstr "Giorno" #: src/advanced_funcs.cxx:122 msgid "alert" msgstr "alert" #: src/wizard_funcs.cxx:107 msgid "alpha" msgstr "alpha" #: src/wizard_funcs.cxx:106 msgid "beta" msgstr "beta" #: src/wizard.cxx:816 msgid "bpp :" msgstr "bpp :" #: src/advanced.cxx:1176 msgid "bpp:" msgstr "bpp:" #: src/advanced_funcs.cxx:128 msgid "broken" msgstr "Nuvoloso" #: src/advanced_funcs.cxx:118 msgid "bulk" msgstr "bulk" #: src/advanced.cxx:1814 msgid "calm (0.0) to severe (1.0)" msgstr "da nessuna (0.0) a severa (1.0)" #: src/advanced.cxx:1285 msgid "choice:" msgstr "Scelta:" #: src/advanced_funcs.cxx:131 msgid "cirrus" msgstr "Temporali" #: src/advanced_funcs.cxx:132 msgid "clear" msgstr "Sereno" #: src/wizard_funcs.cxx:83 src/advanced_funcs.cxx:107 msgid "dawn" msgstr "Alba" #: src/advanced_funcs.cxx:119 msgid "debug" msgstr "debug" #: src/wizard_funcs.cxx:112 msgid "devel" msgstr "Sviluppo" #: src/wizard_funcs.cxx:110 msgid "developement" msgstr "Sviluppo" #: src/wizard_funcs.cxx:111 msgid "development" msgstr "Sviluppo" #: src/wizard_funcs.cxx:87 src/advanced_funcs.cxx:111 msgid "dusk" msgstr "Tramonto" #: src/wizard_funcs.cxx:108 msgid "early alpha" msgstr "alpha iniziale" #: src/wizard_funcs.cxx:104 msgid "early production" msgstr "produzione iniziale" #: src/wizard_funcs.cxx:103 msgid "early-production" msgstr "produzione iniziale" #: src/wizard_funcs.cxx:88 src/advanced_funcs.cxx:112 #, fuzzy msgid "evening" msgstr "Rendering" #: src/wizard_funcs.cxx:114 msgid "experimental" msgstr "Sperimentale" #: src/advanced_funcs.cxx:130 msgid "few" msgstr "Velato" #: src/AirportBrowser.cxx:571 msgid "gzopen error" msgstr "gzopen·error" #: src/advanced_funcs.cxx:148 msgid "highest filtering" msgstr "" #: src/advanced.cxx:1301 msgid "httpd" msgstr "httpd" #: src/wizard.cxx:964 msgid "in :" msgstr "in :" #: src/advanced_funcs.cxx:120 msgid "info" msgstr "info" #: src/advanced.cxx:1360 msgid "in|out,hz,address,port" msgstr "in|out,hz,address,port" #: src/advanced_funcs.cxx:137 msgid "joystick" msgstr "joystick" #: src/advanced.cxx:1334 msgid "jpg-httpd" msgstr "jpg-httpd" #: src/advanced_funcs.cxx:138 msgid "keyboard" msgstr "Tastiera" #: src/wizard_funcs.cxx:89 src/advanced_funcs.cxx:113 msgid "midnight" msgstr "Mezzanotte" #: src/wizard_funcs.cxx:84 src/advanced_funcs.cxx:108 msgid "morning" msgstr "" #: src/advanced_funcs.cxx:139 msgid "mouse" msgstr "mouse" #: src/advanced_funcs.cxx:144 msgid "no filtering" msgstr "" #: src/wizard_funcs.cxx:85 src/advanced_funcs.cxx:109 msgid "noon" msgstr "Giorno" #: src/advanced.cxx:1052 msgid "offset azimuth:" msgstr "azimut di derivazione:" #: src/advanced.cxx:1048 msgid "offset distance:" msgstr "distanza di derivazione:" #: src/wizard.cxx:968 msgid "out :" msgstr "out :" #: src/advanced_funcs.cxx:127 msgid "overcast" msgstr "Coperto" #: src/advanced.cxx:847 msgid "pitot" msgstr "pitot" #: src/wizard_funcs.cxx:102 msgid "production" msgstr "produzione" #: src/advanced.cxx:1634 msgid "prop=value" msgstr "prop=valore" #: src/advanced.cxx:1318 msgid "props" msgstr "props" #: src/wizard.cxx:503 src/wizard.cxx:510 msgid "root data path" msgstr "Percorso della directory dei dati" #: src/advanced_funcs.cxx:129 msgid "scattered" msgstr "Poco nuvoloso" #: src/advanced.cxx:852 msgid "static" msgstr "static" #: src/wizard_funcs.cxx:94 msgid "summer" msgstr "" #: src/advanced.cxx:857 msgid "system" msgstr "Sistema" #: src/advanced.cxx:1001 msgid "uBody:" msgstr "uBody:" #: src/advanced.cxx:1005 msgid "vBody:" msgstr "vBody:" #: src/advanced.cxx:862 msgid "vacuum" msgstr "vuoto" #: src/advanced.cxx:1009 msgid "wBody" msgstr "wBody" #: src/advanced_funcs.cxx:121 msgid "warn" msgstr "warn" #: src/wizard_funcs.cxx:95 msgid "winter" msgstr "" #~ msgid "0" #~ msgstr "0" #~ msgid "1" #~ msgstr "1" #~ msgid "1024x768" #~ msgstr "1024x768" #~ msgid "1280x1024" #~ msgstr "1280x1024" #, fuzzy #~ msgid "1280x800" #~ msgstr "1280x1024" #~ msgid "16" #~ msgstr "16" #~ msgid "1600x1200" #~ msgstr "1600x1200" #, fuzzy #~ msgid "1680x1050" #~ msgstr "1600x1200" #, fuzzy #~ msgid "1920x1200" #~ msgstr "1600x1200" #~ msgid "2" #~ msgstr "2" #~ msgid "24" #~ msgstr "24" #~ msgid "3" #~ msgstr "3" #~ msgid "32" #~ msgstr "32" #~ msgid "4" #~ msgstr "4" #~ msgid "800x600" #~ msgstr "800x600" #~ msgid "AV400" #~ msgstr "AV400" #, fuzzy #~ msgid "AV400Sim" #~ msgstr "AV400" #~ msgid "ada" #~ msgstr "ada" #, fuzzy #~ msgid "atcsim" #~ msgstr "larcsim" #~ msgid "atlas" #~ msgstr "atlas" #~ msgid "balloon" #~ msgstr "balloon" #~ msgid "bi" #~ msgstr "bi" #~ msgid "external" #~ msgstr "external" #~ msgid "file" #~ msgstr "file" #~ msgid "garmin" #~ msgstr "garmin" #~ msgid "generic" #~ msgstr "generic" #~ msgid "in" #~ msgstr "in" #, fuzzy #~ msgid "joyclient" #~ msgstr "joy-client" #~ msgid "jsb" #~ msgstr "jsb" #~ msgid "jsclient" #~ msgstr "jsclient" #~ msgid "larcsim" #~ msgstr "larcsim" #~ msgid "magic" #~ msgstr "magic" #~ msgid "native" #~ msgstr "native" #~ msgid "native-ctrls" #~ msgstr "native-ctrls" #~ msgid "native-fdm" #~ msgstr "native-fdm" #~ msgid "native-gui" #~ msgstr "native-gui" #~ msgid "network" #~ msgstr "network" #~ msgid "nmea" #~ msgstr "nmea" #~ msgid "null" #~ msgstr "null" #~ msgid "opengc" #~ msgstr "opengc" #~ msgid "out" #~ msgstr "out" #~ msgid "pve" #~ msgstr "pve" #~ msgid "ray" #~ msgstr "ray" #~ msgid "rul" #~ msgstr "rul" #~ msgid "serial" #~ msgstr "serial" #~ msgid "socket" #~ msgstr "socket" #, fuzzy #~ msgid "telnet" #~ msgstr "Cancella" #~ msgid "ufo" #~ msgstr "ufo" #~ msgid "yasim" #~ msgstr "yasim" fg-fgrun/po/ja.po000066400000000000000000001114001245722473500141510ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Frederic Bouvier # This file is distributed under the same license as the PACKAGE package. # AOKI kiyohito , 2013. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-03 02:20+0200\n" "PO-Revision-Date: 2013-05-27 22:25+0900\n" "Last-Translator: AOKI kiyohito \n" "Language-Team: FlightGear.jpn.org\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Virtaal 0.7.1\n" #: src/logwin.cxx:34 msgid "&Close" msgstr "&é–‰ã˜ã‚‹" #: src/logwin.cxx:32 msgid "&File" msgstr "&ファイル" #: src/logwin.cxx:33 msgid "&Save" msgstr "&ä¿å­˜" #: src/advanced.cxx:715 src/advanced.cxx:724 src/advanced.cxx:1467 msgid "..." msgstr "" #: src/advanced_funcs.cxx:145 msgid "2.0" msgstr "" #: src/advanced.cxx:1081 src/wizard.cxx:812 msgid "3D Clouds" msgstr "立体的ãªé›²" #: src/wizard.cxx:643 msgid "3D Preview" msgstr "3Dプレビュー" #: src/advanced_funcs.cxx:146 msgid "4.0" msgstr "" #: src/advanced_funcs.cxx:147 msgid "8.0" msgstr "" #: src/wizard.cxx:942 msgid ":" msgstr ":" #: src/wizard_funcs.cxx:889 src/wizard_funcs.cxx:2449 #: src/AirportBrowser.cxx:470 src/fgfsrc.cxx:101 msgid "" msgstr "<デフォルト>" #: src/wizard_funcs.cxx:225 #, c-format msgid "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

This program is released under the " "GNU General Public License (http://www.gnu.org/copyleft/gpl.html).

" "

Report bugs to http://sourceforge.net/projects/fgrun

" msgstr "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

ã“ã®ãƒ—ログラム㯠GNU General " "Public License (http://www.gnu.org/copyleft/gpl.html) ã®ä¸‹ã§ãƒªãƒªãƒ¼ã‚¹ã•れã¦ã„" "ã¾ã™ã€‚

ãƒã‚°å ±å‘Šã¯ http://sourceforge.net/projects/fgrun

ã¸ãŠé¡˜ã„ã—" "ã¾ã™ã€‚ " #: src/wizard.cxx:599 msgid "@2>" msgstr "" #: src/wizard.cxx:588 msgid "@8>" msgstr "" #: src/advanced.cxx:1568 msgid "ADF:" msgstr "" #: src/advanced.cxx:867 msgid "AI Models" msgstr "AI モデル" #: src/advanced.cxx:873 src/wizard.cxx:848 msgid "AI Traffic" msgstr "AI トラフィック" #: src/wizard.cxx:844 msgid "AI models" msgstr "AI モデル" #: src/wizard_funcs.cxx:977 src/fgfsrc.cxx:61 msgid "Abort" msgstr "中止" #: src/fgfsrc.cxx:61 #, c-format msgid "About to overwrite %s." msgstr "%s を上書ãã—ã¾ã™" #: src/wizard_funcs.cxx:977 msgid "About to reset current parameters" msgstr "ç¾åœ¨ã®ãƒ‘ラメータをリセットã—ã¾ã™" #: src/wizard.cxx:562 msgid "Add a scenery directory" msgstr "シーナリーã®ãƒ•ォルダを追加ã—ã¾ã™" #: src/wizard.cxx:533 msgid "Add an aircraft directory" msgstr "航空機ã®ãƒ•ォルダを追加ã—ã¾ã™" #: src/wizard.cxx:532 src/wizard.cxx:561 msgid "Add..." msgstr "追加..." #: src/advanced.cxx:672 msgid "Advanced Options" msgstr "æ›´ãªã‚‹ã‚ªãƒ—ション" #: src/wizard.cxx:747 msgid "Advanced..." msgstr "詳細設定" #: src/wizard.cxx:523 msgid "Aircraft directories" msgstr "é¸æŠžæ¸ˆã¿ã®èˆªç©ºæ©Ÿã®ãƒ•ォルダã§ã™" #: src/advanced.cxx:748 msgid "Aircraft:" msgstr "航空機:" #: src/wizard.cxx:1097 msgid "Airport to fetch : " msgstr "空港を以下ã«ãƒ•ェッãƒã—ã¾ã™ : " #: src/advanced.cxx:740 msgid "Airport:" msgstr "空港:" #: src/wizard.cxx:620 msgid "Airports Cache:" msgstr "空港情報キャッシュ:" #: src/advanced.cxx:995 msgid "Airspeed:" msgstr "対気速度:" #: src/wizard.fl msgid "All airports" msgstr "å…¨ã¦ã®ç©ºæ¸¯" #: src/advanced.cxx:989 msgid "Altitude:" msgstr "高度:" #: src/wizard.cxx:1068 msgid "An error report has been generated in the file below :" msgstr "下記ã®ãƒ•ァイルã§ã‚¨ãƒ©ãƒ¼ãƒ¬ãƒãƒ¼ãƒˆã‚’生æˆã—ã¾ã™ :" #: src/advanced.cxx:806 msgid "Anti-alias HUD" msgstr "アンãƒã‚¨ã‚¤ãƒªã‚¢ã‚¹HUD" #: src/wizard.cxx:931 msgid "Atlas" msgstr "ナビゲーションマップ(Atlas)" #: src/wizard.cxx:692 msgid "Author(s) :" msgstr "開発者 :" #: src/advanced.cxx:812 src/wizard.cxx:864 msgid "Auto-coordination" msgstr "ラダーã®è‡ªå‹•åŒèª¿" #: src/wizard.cxx:659 msgid "Available aircraft :" msgstr "利用å¯èƒ½ãªèˆªç©ºæ©Ÿ :" #: src/advanced.cxx:1554 src/advanced_funcs.cxx:223 msgid "Avionics" msgstr "アビオニクス" #: src/advanced.cxx:1481 msgid "Baud Rate:" msgstr "ボーレート" #: src/advanced.cxx:711 msgid "Browser:" msgstr "ブラウザー:" #: src/wizard.cxx:954 msgid "Callsign :" msgstr "コールサイン :" #: src/advanced.cxx:1355 msgid "Callsign:" msgstr "コールサイン:" #: src/advanced.cxx:685 src/wizard.cxx:1085 msgid "Cancel" msgstr "キャンセル" #: src/wizard.cxx:725 msgid "Carrier : " msgstr "ç©ºæ¯ :" #: src/wizard.cxx:721 msgid "Carrier Ops" msgstr "空æ¯ã‹ã‚‰ã‚¹ã‚¿ãƒ¼ãƒˆ" #: src/advanced.cxx:1819 msgid "Ceiling:" msgstr "雲底高度" #: src/wizard.cxx:1007 msgid "" "Clear all selected options and return to the install situation. Useful if " "FGFS don't start anymore." msgstr "" "é¸æŠžã—ãŸå…¨ã¦ã®ã‚ªãƒ—ションをクリアã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å¾Œã®çŠ¶æ…‹ã«æˆ»ã—ã¾ã™ã€‚" "FlightGearãŒèµ·å‹•ã—ãªããªã£ãŸæ™‚ã«æœ‰ç”¨ã§ã™ã€‚" #: src/wizard.cxx:615 msgid "Clear the content of the airport cache" msgstr "空港キャッシュã®å†…容を空ã«ã™ã‚‹" #: src/advanced.cxx:1060 msgid "Climb rate:" msgstr "上昇率" #: src/advanced.cxx:965 msgid "Clock Freeze" msgstr "時計を止ã‚ã‚‹" #: src/advanced.cxx:1075 src/advanced.cxx:1833 src/advanced_funcs.cxx:228 msgid "Clouds" msgstr "雲" #: src/Fl_OSG.cxx:188 msgid "Cockpit : " msgstr "コックピット:" #: src/advanced.cxx:1177 src/wizard.cxx:817 msgid "Color depth (bits per pixel)" msgstr "色深度(ビット毎ピクセル)" #: src/advanced.cxx:719 msgid "Config:" msgstr "設定:" #: src/advanced.cxx:892 msgid "Core Flight Dynamics Model" msgstr "飛行力学モデルã®ã‚³ã‚¢ã‚’é¸æŠžã—ã¦ãã ã•ã„" #: src/advanced.cxx:1865 msgid "Coverage:" msgstr "雲é‡" #: src/wizard.cxx:894 msgid "Ctrl-click to deselect a single item" msgstr "Ctrlを押ã—ãªãŒã‚‰ã‚¯ãƒªãƒƒã‚¯ã§ãã®ã‚¢ã‚¤ãƒ†ãƒ ã ã‘を解除" #: src/wizard.cxx:886 msgid "Ctrl-click to select or deselect a single item" msgstr "Ctrlを押ã—ãªãŒã‚‰ã‚¯ãƒªãƒƒã‚¯ã§ãã®ã‚¢ã‚¤ãƒ†ãƒ ã ã‘ã‚’é¸æŠžor解除" #: src/advanced.cxx:1601 msgid "DME:" msgstr "" #: src/advanced.cxx:1650 src/advanced_funcs.cxx:225 msgid "Debugging" msgstr "デãƒãƒƒã‚°" #: src/advanced.cxx:1400 src/advanced.cxx:1628 src/advanced.cxx:1691 #: src/advanced.cxx:1724 src/advanced.cxx:1756 src/wizard.cxx:537 #: src/wizard.cxx:566 src/wizard.cxx:614 msgid "Delete" msgstr "削除" #: src/wizard.cxx:567 msgid "Delete a scenery directory" msgstr "シーナリーã®ãƒ•ォルダを削除ã—ã¾ã™" #: src/wizard.cxx:538 msgid "Delete an aircraft directory" msgstr "航空機ã®ãƒ•ォルダを削除ã—ã¾ã™" #: src/wizard_funcs.cxx:1752 msgid "Description of " msgstr "" #: src/wizard.cxx:893 msgid "Deselect all" msgstr "ã™ã¹ã¦é¸æŠžè§£é™¤" #: src/wizard_funcs.cxx:109 msgid "Development" msgstr "開発中" #: src/advanced.cxx:1792 msgid "Direction wind is coming from." msgstr "風ãŒã©ã®æ–¹å‘ã‹ã‚‰å¹ã„ã¦ãã‚‹ã‹æŒ‡å®šã—ã¦ãã ã•ã„。" #: src/advanced.cxx:1435 msgid "Direction:" msgstr "æ–¹å‘:" #: src/advanced.cxx:1127 msgid "Disabled" msgstr "無効" #: src/wizard.cxx:764 msgid "Display" msgstr "ディスプレイ" #: src/wizard.fl msgid "Display all airports" msgstr "å…¨ã¦ã®ç©ºæ¸¯ã‚’表示" #: src/wizard.fl msgid "Display only installed airports" msgstr "インストール済ã¿ã®ç©ºæ¸¯ã®ã¿è¡¨ç¤º" #: src/advanced.cxx:767 msgid "Display splash screen at startup" msgstr "スプラッシュスクリーンを起動時ã«è¡¨ç¤ºã™ã‚‹" #: src/advanced.cxx:827 msgid "Distance attenuation" msgstr "è·é›¢ã«ã‚ˆã‚‹æ¸›è¡°" #: src/advanced.cxx:907 msgid "Do not attempt to trim the model" msgstr "" "JSBSimã®åˆæœŸåŒ–ã®æ™‚ã«ãƒˆãƒªãƒ ã‚’å–りã¾ã›ã‚“\n" "(JSBSimã®ã¿æœ‰åй)" #: src/wizard_funcs.cxx:2685 msgid "Don't overwrite" msgstr "上書ãã—ãªã„" #: src/wizard_funcs.cxx:113 msgid "Early development" msgstr "é–‹ç™ºåˆæœŸ" #: src/wizard_funcs.cxx:105 msgid "Early production" msgstr "åˆæœŸè£½å“" #: src/advanced.cxx:1851 msgid "Elevation(ft):" msgstr "高度" #: src/advanced.cxx:1076 msgid "Enable 2D (flat) cloud layers" msgstr "2Dã®(å¹³ãŸã„)雲を有効ã«ã—ã¾ã™" #: src/advanced.cxx:1082 msgid "Enable 3D (volumetric) cloud layers" msgstr "3Dã®(立体的ãª)雲を有効ã«ã—ã¾ã™ã€‚" #: src/advanced.cxx:833 msgid "Enable 3D HUD" msgstr "3d HUDを有効ã«ã—ã¾ã™" #: src/advanced.cxx:868 msgid "Enable AI traffic" msgstr "AIトラフィックを有効ã«ã—ã¾ã™" #: src/advanced.cxx:1302 msgid "Enable HTTP server" msgstr "HTTPã§ã®ãƒ—ロパティツリーã®èª­ã¿æ›¸ãを許å¯ã—ã¾ã™" #: src/advanced.cxx:801 msgid "Enable Heads Up Display" msgstr "HUDを有効ã«ã—ã¾ã™" #: src/advanced.cxx:807 msgid "Enable anti-aliased HUD" msgstr "HUDã®ã‚¢ãƒ³ãƒã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’有効ã«ã—ã¾ã™" #: src/advanced.cxx:813 msgid "Enable auto-coordinated turns." msgstr "旋回時ã«ãƒ©ãƒ€ãƒ¼ã‚’自動ã§åŒèª¿ã—ã¾ã™" #: src/advanced.cxx:818 msgid "Enable celestial body growth illusion near the horizon" msgstr "水平線近ãã®åŠ¹æžœã‚’æœ‰åŠ¹ã«ã—ã¾ã™" #: src/advanced.cxx:823 msgid "Enable enhanced runway lighting" msgstr "滑走路ã®ç‡ˆç«ã‚’よりç¾å®Ÿçš„ã«ã—ã¾ã™" #: src/advanced.cxx:779 msgid "Enable extra mouse pointer" msgstr "" "外部マウスãƒã‚¤ãƒ³ã‚¿ã‚’有効ã«ã—ã¾ã™ã€‚\n" " å¤ã„Voodooベースã®ã‚«ãƒ¼ãƒ‰ã®ãƒ•ルスクリーンモードã§ä¾¿åˆ©ã§ã™" #: src/advanced.cxx:762 msgid "Enable full screen game mode" msgstr "フルスクリーン(ゲームモード)を有効ã«ã—ã¾ã™" #: src/advanced.cxx:1087 msgid "Enable full screen mode" msgstr "フルスクリーンを有効ã«ã—ã¾ã™" #: src/advanced.cxx:773 msgid "Enable introduction music during start up" msgstr "FlightGearã®èµ·å‹•時ã«ã‚µãƒ³ãƒ—ル音をå†ç”Ÿã•ã›ã¾ã™" #: src/advanced.cxx:1319 msgid "Enable property server" msgstr "åŒæ–¹å‘çš„ãªãƒ—ロパティマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã§ã®èª­ã¿æ›¸ãを許å¯ã—ã¾ã™" #: src/advanced.cxx:784 msgid "Enable random scenery objects" msgstr "シーナリー上ã«ãƒ©ãƒ³ãƒ€ãƒ ã«å»ºç‰©ã‚’é…ç½®ã—ã¾ã™" #: src/advanced.cxx:828 msgid "Enable runway light distance attenuation" msgstr "滑走路ã®ç‡ˆç«ã®æ¸›è¡°ã‚’有効ã«ã—ã¾ã™" #: src/advanced.cxx:1335 msgid "Enable screen shot HTTP server" msgstr "HTTPã§ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚·ãƒ§ãƒƒãƒˆã‚’é…ä¿¡ã—ã¾ã™" #: src/advanced.cxx:1092 msgid "Enable sky blending" msgstr "霧やã‹ã™ã¿ã‚’有効ã«ã—ã¾ã™" #: src/advanced.cxx:795 msgid "Enable sound effects" msgstr "音響効果を有効ã«ã—ã¾ã™" #: src/advanced.cxx:838 msgid "Enable specular reflections on textured objects" msgstr "テクスãƒãƒ£ãŒè²¼ã‚‰ã‚ŒãŸã‚ªãƒ–ジェクトã®å…‰ã®å射を有効ã«ã—ã¾ã™" #: src/advanced.cxx:789 msgid "Enable the instrument panel" msgstr "計器パãƒãƒ«ã‚’有効ã«ã—ã¾ã™" #: src/advanced.cxx:1104 msgid "Enable wireframe drawing mode" msgstr "ãƒ¯ã‚¤ãƒ¤ãƒ¼ãƒ•ãƒ¬ãƒ¼ãƒ ã§æç”»ã—ã¾ã™" #: src/advanced.cxx:822 msgid "Enhanced lighting" msgstr "ç¾å®Ÿçš„ãªç‡ˆç«" #: src/wizard.cxx:789 msgid "Enhanced runway lighting" msgstr "ç¾å®Ÿçš„ãªæ»‘èµ°è·¯ã®ç‡ˆç«" #: src/advanced.cxx:1738 src/advanced_funcs.cxx:226 msgid "Environment" msgstr "環境" #: src/wizard.cxx:498 msgid "Executable path not set or invalid" msgstr "実行ファイルã®ãƒ‘スãŒã‚»ãƒƒãƒˆã•れã¦ã„ãªã„ã‹ç„¡åйã§ã™" #: src/advanced.cxx:728 src/wizard.cxx:484 msgid "Executable:" msgstr "実行ファイル:" #: src/Fl_OSG.cxx:198 msgid "FDM : " msgstr "飛行力学モデル : " #: src/advanced.cxx:891 msgid "FDM:" msgstr "飛行力学モデル" #: src/advanced.cxx:1466 msgid "FGCom built-in" msgstr "ビルトイン版FGCom" #: src/advanced.cxx:1472 msgid "FGCom standalone" msgstr "スタンドアロン版FGCom" #: src/wizard.cxx:522 msgid "FG_AIRCRAFT:" msgstr "" #: src/wizard.cxx:516 msgid "FG_ROOT path invalid or not set" msgstr "FG_ROOT ã¸ã®ãƒ‘スãŒç„¡åйã‹ã€è¨­å®šã•れã¦ã„ã¾ã›ã‚“。" #: src/advanced.cxx:732 src/wizard.cxx:502 msgid "FG_ROOT:" msgstr "" #: src/wizard.cxx:610 msgid "FG_SCENERY empty" msgstr "" #: src/advanced.cxx:736 src/wizard.cxx:551 msgid "FG_SCENERY:" msgstr "" #: src/advanced.cxx:1190 msgid "FOV:" msgstr "視野" #: src/advanced.cxx:1820 msgid "FT_ASL[:THICKNESS_FT]" msgstr "海抜高度(ft)[:厚ã¿(ft)]" #: src/advanced.cxx:842 msgid "Failures" msgstr "æ•…éšœ" #: src/advanced.cxx:1132 msgid "Fastest" msgstr "高速" #: src/advanced.cxx:757 src/wizard.cxx:832 src/advanced_funcs.cxx:215 msgid "Features" msgstr "機能" #: src/advanced.cxx:1824 msgid "Fetch real weather" msgstr "ç¾å®Ÿã®å¤©å€™ã‚’使用" #: src/advanced.cxx:1191 msgid "Field of View angle" msgstr "視野角" #: src/advanced.cxx:1461 msgid "File:" msgstr "ファイル" #: src/wizard_funcs.cxx:2685 #, c-format msgid "Filename \"%s\" already exists." msgstr "\"%s\" ã¨ã„ã†ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚" #: src/advanced.cxx:1044 msgid "Fix:" msgstr "" #: src/advanced.cxx:1117 msgid "Flat" msgstr "フラット(高速)" #: src/advanced.cxx:886 src/advanced_funcs.cxx:216 msgid "Flight Model" msgstr "フライトモデル" #: src/wizard.cxx:474 msgid "FlightGear Wizard" msgstr "FlightGearウィザード" #: src/wizard.cxx:1032 msgid "FlightGear has been started" msgstr "FlightGearをスタートã—ã¦ã„ã¾ã™" #: src/wizard.cxx:1029 msgid "FlightGear running..." msgstr "FlightGearを実行ã—ã¦ã„ã¾ã™..." #: src/wizard.cxx:1052 msgid "Flightgear crashed..." msgstr "FlightGearãŒã‚¯ãƒ©ãƒƒã‚·ãƒ¥ã—ã¾ã—ãŸ..." #: src/wizard.cxx:1054 msgid "Flightgear encountered an unexpected failure" msgstr "FlightGearã§äºˆæœŸã—ãªã„トラブルãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: src/advanced.cxx:1124 msgid "Fog" msgstr "霧" #: src/wizard.cxx:798 msgid "Framerate limiter :" msgstr "フレームレートã®åˆ¶é™:" #: src/advanced.cxx:951 src/advanced.cxx:956 src/advanced_funcs.cxx:217 msgid "Freeze" msgstr "" #: src/advanced.cxx:961 msgid "Fuel Freeze" msgstr "燃料を消費ã—ãªã„" #: src/advanced.cxx:1086 src/wizard.cxx:781 msgid "Full Screen" msgstr "フルスクリーン" #: src/wizard.cxx:621 msgid "Full path to the airport cache" msgstr "空港キャッシュã¸ã®å®Œå…¨ãªãƒ‘スを入力ã—ã¦ãã ã•ã„。" #: src/wizard.cxx:485 src/wizard.cxx:492 msgid "Full pathname to FlightGear executable" msgstr "FlightGear実行ファイルã¸ã®å®Œå…¨ãªãƒ‘スを入力ã—ã¦ãã ã•ã„。" #: src/wizard.cxx:626 src/wizard.cxx:633 msgid "Full pathname to Terrasync executable" msgstr "Terrasyncã®å®Ÿè¡Œãƒ•ァイルã¸ã®å®Œå…¨ãªãƒ‘スを入力ã—ã¦ãã ã•ã„。" #: src/advanced.cxx:761 msgid "Game Mode" msgstr "フルスクリーン" #: src/advanced.cxx:696 src/advanced_funcs.cxx:214 msgid "General" msgstr "一般的ãªè¨­å®š" #: src/advanced.cxx:1524 msgid "Generic:" msgstr "" #: src/advanced.cxx:1145 msgid "Geometry:" msgstr "ç”»é¢ã‚µã‚¤ã‚º:" #: src/advanced.cxx:1056 msgid "Glide slope:" msgstr "グライドスロープ:" #: src/advanced.cxx:1308 msgid "HTTP server port" msgstr "HTTPサーãƒãƒ¼ã®ãƒãƒ¼ãƒˆç•ªå·ã‚’入力ã—ã¦ãã ã•ã„。" #: src/advanced.cxx:800 msgid "HUD" msgstr "" #: src/advanced.cxx:1013 src/advanced.cxx:1791 msgid "Heading:" msgstr "æ–¹å‘:" #: src/advanced.cxx:817 src/wizard.cxx:785 msgid "Horizon effect" msgstr "水平線ã®ã‚¨ãƒ•ェクト" #: src/wizard.cxx:937 msgid "Hostname" msgstr "ホストå" #: src/wizard.cxx:936 src/wizard.cxx:958 msgid "Hostname :" msgstr "ホストå :" #: src/advanced.cxx:1492 msgid "Hostname:" msgstr "ホストå:" #: src/advanced.cxx:832 msgid "Hud-3D" msgstr "3D HUD" #: src/advanced.cxx:1450 msgid "Hz:" msgstr "クロック:" #: src/AirportTable.cxx:121 msgid "ICAO Id" msgstr "ICAOコード" #: src/advanced.cxx:938 msgid "In Air" msgstr "空中" #: src/advanced.cxx:974 src/advanced_funcs.cxx:218 msgid "Initial Position" msgstr "åˆæœŸä½ç½®" #: src/advanced.cxx:1014 msgid "Initial aircraft heading (yaw) angle 0 to 360 degrees" msgstr "ã‚¹ã‚¿ãƒ¼ãƒˆæ™‚ã®æ©Ÿé¦–ã®è§’度(ヨー)ã‚’ 0度ã‹ã‚‰360åº¦ã§æŒ‡å®šã—ã¦ãã ã•ã„" #: src/advanced.cxx:996 msgid "Initial airspeed in knots" msgstr "スタート時ã®é€Ÿåº¦ã‚’ãƒŽãƒƒãƒˆã§æŒ‡å®šã—ã¦ãã ã•ã„" #: src/advanced.cxx:990 msgid "Initial altitude in feet" msgstr "スタート時ã®é«˜åº¦ã‚’ãƒ•ã‚£ãƒ¼ãƒˆã§æŒ‡å®šã—ã¦ãã ã•ã„" #: src/advanced.cxx:985 msgid "Initial latitude, south is negative" msgstr "スタート時ã®ç·¯åº¦ã‚’指定(å—åŠçƒã¯ãƒžã‚¤ãƒŠã‚¹)ã—ã¦ãã ã•ã„" #: src/advanced.cxx:980 msgid "Initial longitude, west is negative" msgstr "スタート時ã®çµŒåº¦ã‚’指定(西åŠçƒã¯ãƒžã‚¤ãƒŠã‚¹)ã—ã¦ãã ã•ã„" #: src/advanced.cxx:1029 msgid "Initial pitch angle (Theta)" msgstr "スタート時ã®ãƒ”ッãƒè§’(θ)を指定ã—ã¦ãã ã•ã„" #: src/advanced.cxx:1021 msgid "Initial roll angle, (Phi)" msgstr "スタート時ã®ãƒ­ãƒ¼ãƒ«è§’(Φ)を指定ã—ã¦ãã ã•ã„" #: src/advanced.cxx:1151 msgid "Initial visibility distance" msgstr "スタート時ã®è¦–程を指定ã—ã¦ãã ã•ã„" #: src/wizard.cxx:965 msgid "Input port number" msgstr "入力ãƒãƒ¼ãƒˆç•ªå·" #: src/advanced.cxx:1382 src/advanced_funcs.cxx:222 msgid "Input/Output" msgstr "入出力" #: src/wizard.fl msgid "Installed airports" msgstr "インストール済ã¿ã®ç©ºæ¸¯" #: src/advanced.cxx:1588 msgid "Internal" msgstr "" #: src/advanced.cxx:772 msgid "Intro Music" msgstr "サンプル音ã®å†ç”Ÿ" #: src/advanced.cxx:707 msgid "Language:" msgstr "言語:" #: src/advanced.cxx:984 msgid "Latitude:" msgstr "緯度:" #: src/advanced.cxx:1837 msgid "Layer:" msgstr "雲層:" #: src/wizard.cxx:1017 msgid "Load" msgstr "読ã¿è¾¼ã¿" #: src/wizard.cxx:1018 msgid "Load a previously saved configuration" msgstr "以å‰ã«ä¿å­˜ã—ãŸè¨­å®šã‚’読ã¿è¾¼ã¿ã¾ã™" #: src/wizard_funcs.cxx:2590 msgid "Load settings from..." msgstr "読ã¿è¾¼ã‚€è¨­å®šã‚’é¸æŠžã—ã¦ãã ã•ã„" #: src/wizard.cxx:698 msgid "Location :" msgstr "場所 :" #: src/advanced.cxx:1656 msgid "Log Level:" msgstr "ログレベル" #: src/wizard_funcs.cxx:469 msgid "Log Window" msgstr "ログウインドウ" #: src/advanced.cxx:979 msgid "Longitude:" msgstr "経度:" #: src/advanced.cxx:1207 msgid "Materials file:" msgstr "" #: src/advanced.cxx:1419 msgid "Medium:" msgstr "媒体:" #: src/wizard.cxx:875 msgid "Menu auto-visibility" msgstr "メニューを自動ã§éš ã™" #: src/advanced.cxx:1157 msgid "Meters" msgstr "メートル" #: src/advanced.cxx:1164 msgid "Miles" msgstr "マイル" #: src/Fl_OSG.cxx:183 msgid "Model : " msgstr "モデル" #: src/advanced.cxx:912 msgid "Model Hz:" msgstr "モデルクロック" #: src/wizard_funcs.cxx:749 #, c-format msgid "Model not found: '%s'" msgstr "'%s': ã¨ã„ã†ãƒ¢ãƒ‡ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" #: src/advanced.cxx:778 msgid "Mouse Pointer" msgstr "マウスãƒã‚¤ãƒ³ã‚¿" #: src/wizard.cxx:600 msgid "Move scenery directory down" msgstr "é¸æŠžã—ãŸã‚·ãƒ¼ãƒŠãƒªãƒ¼ã®ãƒ•ォルダを一ã¤ä¸‹ã«ä¸‹ã’ã¾ã™" #: src/wizard.cxx:589 msgid "Move scenery directory up" msgstr "é¸æŠžã—ãŸã‚·ãƒ¼ãƒŠãƒªãƒ¼ã®ãƒ•ォルダを一ã¤ä¸‹ã«ä¸Šã’ã¾ã™" #: src/advanced.cxx:1359 msgid "Multiplay 1:" msgstr "ホスト 1:" #: src/advanced.cxx:1364 msgid "Multiplay 2:" msgstr "ホスト 2:" #: src/wizard.cxx:949 msgid "Multiplayer" msgstr "マルãƒãƒ—レイ" #: src/advanced.cxx:1350 msgid "Multiplayer Options" msgstr "マルãƒãƒ—レイã®ã‚ªãƒ—ション" #: src/advanced.cxx:1040 msgid "NDB:" msgstr "" #: src/AirportTable.cxx:121 msgid "Name" msgstr "空港å" #: src/advanced.cxx:1576 msgid "Nav1" msgstr "" #: src/advanced.cxx:1559 msgid "Nav1:" msgstr "" #: src/advanced.cxx:1582 msgid "Nav2" msgstr "" #: src/advanced.cxx:1564 msgid "Nav2:" msgstr "" #: src/advanced.cxx:1296 src/advanced_funcs.cxx:221 msgid "Network" msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯" #: src/advanced.cxx:1396 src/advanced.cxx:1642 src/advanced.cxx:1687 #: src/advanced.cxx:1720 src/advanced.cxx:1752 msgid "New" msgstr "æ–°è¦" #: src/wizard.cxx:995 src/wizard_funcs.cxx:407 src/wizard_funcs.cxx:958 #: src/wizard_funcs.cxx:1802 src/wizard_funcs.cxx:1811 msgid "Next" msgstr "次ã¸" #: src/advanced.cxx:1137 msgid "Nicest" msgstr "最良" #: src/Fl_OSG.cxx:207 msgid "No Rating" msgstr "レーティング無ã—" #: src/advanced.cxx:906 msgid "No Trim" msgstr "トリムã—ãªã„" #: src/wizard_funcs.cxx:1755 msgid "Not set" msgstr "セットã—ãªã„" #: src/advanced.cxx:688 src/wizard.cxx:1064 src/wizard.cxx:1089 msgid "OK" msgstr "" #: src/advanced.cxx:1252 msgid "Offset (+/-) from real time" msgstr "å®Ÿéš›ã®æ™‚é–“ã‹ã‚‰ã®ã‚ªãƒ•セット" #: src/advanced.cxx:931 msgid "On Ground" msgstr "地上" #: src/wizard.cxx:728 msgid "Only valid if carrier is set. For airport parking, use the list above." msgstr "" "空æ¯ã‚’指定ã—ãŸæ™‚ã®ã¿æœ‰åйã§ã™ã€‚空港ã®é§æ©Ÿå ´ã®é¸æŠžã¯ã€ä¸Šã®ãƒªã‚¹ãƒˆã‚’使用ã—ã¦ãã " "ã•ã„。" #: src/main.cxx:162 #, c-format msgid "" "Options are:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " --version=\n" " -f, --fullscreen\n" "%s" msgstr "" #: src/wizard.cxx:969 msgid "Output port number" msgstr "出力ãƒãƒ¼ãƒˆç•ªå·" #: src/wizard_funcs.cxx:2685 src/fgfsrc.cxx:61 msgid "Overwrite" msgstr "上書ã" #: src/advanced.cxx:788 msgid "Panel" msgstr "パãƒãƒ«" #: src/wizard.cxx:727 msgid "Park pos :" msgstr "é§æ©Ÿå ´æ‰€ :" #: src/AirportBrowser.cxx:89 msgid "Parking" msgstr "é§æ©Ÿå ´" #: src/advanced.cxx:720 msgid "Path to additional XML properties file" msgstr "追加㮠XML プロパティファイルã¸ã®ãƒ‘ス" #: src/wizard.cxx:959 msgid "Peer hostname" msgstr "ピアã®ãƒ›ã‚¹ãƒˆå" #: src/advanced.cxx:1028 msgid "Pitch:" msgstr "ピッãƒ:" #: src/wizard.cxx:1072 msgid "Please send this error report to the Flightgear development team" msgstr "FlightGear development team ã¸ã“ã®ã‚¨ãƒ©ãƒ¼ã®å ±å‘Šã‚’é€ã£ã¦ãã ã•ã„。" #: src/wizard.cxx:1037 msgid "Please wait..." msgstr "ãŠå¾…ã¡ãã ã•ã„..." #: src/advanced.cxx:1475 src/advanced.cxx:1498 msgid "Port:" msgstr "ãƒãƒ¼ãƒˆ:" #: src/wizard.cxx:1082 msgid "Prefetch Scenery" msgstr "シーナリーã®ãƒ—リフェッãƒ" #: src/wizard.cxx:991 msgid "Prev" msgstr "戻る" #: src/wizard.cxx:670 msgid "Preview" msgstr "プレビュー" #: src/advanced.cxx:1612 src/advanced_funcs.cxx:224 msgid "Properties" msgstr "プロパティ" #: src/wizard_funcs.cxx:790 msgid "Property '/sim/model/path' not found" msgstr "'/sim/model/path' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" #: src/advanced.cxx:1325 msgid "Property server port" msgstr "プロパティサーãƒã®ãƒãƒ¼ãƒˆç•ªå·ã‚’入力ã—ã¦ãã ã•ã„。" #: src/advanced.cxx:1633 msgid "Property:" msgstr "プロパティ:" #: src/advanced.cxx:1405 msgid "Protocol:" msgstr "プロトコル:" #: src/advanced.cxx:1373 msgid "Proxy:" msgstr "プロクシ:" #: src/wizard.cxx:999 msgid "Quit" msgstr "終了" #: src/advanced.cxx:783 msgid "Random Objects" msgstr "ランダムãªå»ºç‰©" #: src/advanced.cxx:877 msgid "Random Trees" msgstr "ãƒ©ãƒ³ãƒ€ãƒ ãªæœ¨" #: src/advanced.cxx:1806 msgid "Random Winds" msgstr "ランダムãªé¢¨" #: src/wizard.cxx:836 msgid "Random objects" msgstr "ランダムãªå»ºç‰©" #: src/wizard.cxx:840 msgid "Random trees" msgstr "ãƒ©ãƒ³ãƒ€ãƒ ãªæœ¨" #: src/Fl_OSG.cxx:205 msgid "Rating" msgstr "レーティング" #: src/Fl_OSG.cxx:179 msgid "RatingPos" msgstr "" #: src/wizard.cxx:860 msgid "Real weather fetch" msgstr "ç¾å®Ÿã®å¤©å€™ã‚’利用" #: src/wizard.cxx:651 msgid "Recently used aircraft :" msgstr "最近使ã£ãŸèˆªç©ºæ©Ÿ :" #: src/AirportBrowser.cxx:96 msgid "Refresh" msgstr "å†èª­ã¿è¾¼ã¿" #: src/AirportBrowser.cxx:99 msgid "Reload airports" msgstr "空港をå†èª­ã¿è¾¼ã¿ã—ã¾ã™" #: src/advanced.cxx:1070 src/advanced_funcs.cxx:219 msgid "Rendering" msgstr "レンダリング" #: src/advanced.cxx:1534 msgid "Repeat" msgstr "繰り返ã—" #: src/wizard_funcs.cxx:977 msgid "Reset" msgstr "リセット" #: src/wizard.cxx:768 msgid "Resolution :" msgstr "è§£åƒåº¦ :" #: src/wizard.cxx:1006 msgid "Restore default settings" msgstr "デフォルト" #: src/advanced.cxx:1020 msgid "Roll:" msgstr "ロール:" #: src/wizard_funcs.cxx:950 msgid "Run" msgstr "実行" #: src/advanced.cxx:922 msgid "Run FDM faster than real time" msgstr "ç¾å®Ÿã®é€Ÿåº¦ã®ä½•å€ã§é£›è¡ŒåŠ›å­¦è¨ˆç®—ã‚’å®Ÿè¡Œã™ã‚‹ã‹æŒ‡å®šã—ã¦ãã ã•ã„" #: src/advanced.cxx:913 msgid "Run the FDM at this rate (iterations per second)" msgstr "1ç§’é–“ã®é£›è¡ŒåŠ›å­¦è¨ˆç®—ã®å®Ÿè¡Œå›žæ•°ã‚’指定ã—ã¦ãã ã•ã„" #: src/advanced.cxx:744 msgid "Runway:" msgstr "滑走路:" #: src/AirportBrowser.cxx:84 msgid "Runways" msgstr "滑走路" #: src/wizard.cxx:1012 msgid "Save As..." msgstr "設定ã®ä¿å­˜" #: src/wizard.cxx:1013 msgid "Save current configuration to a file" msgstr "ç¾åœ¨ã®è¨­å®šã‚’ファイルã«ä¿å­˜ã—ã¾ã™" #: src/logwin.cxx:99 msgid "Save file as?" msgstr "ファイルã«ä¿å­˜ã—ã¾ã™ã‹?" #: src/wizard_funcs.cxx:2681 msgid "Save settings as..." msgstr "設定をä¿å­˜ã™ã‚‹å ´æ‰€ã‚’é¸æŠžã—ã¦ãã ã•ã„" #: src/wizard.cxx:881 msgid "Scenarios" msgstr "シナリオ" #: src/wizard.cxx:736 msgid "Scenery Prefetch" msgstr "シーナリーã®ãƒ—リフェッãƒ" #: src/wizard.cxx:552 msgid "Scenery directories" msgstr "é¸æŠžæ¸ˆã¿ã®ã‚·ãƒ¼ãƒŠãƒªãƒ¼ã®ãƒ•ォルダã§ã™" #: src/advanced.cxx:1341 msgid "Screen shot HTTP server port" msgstr "スクリーンショットé…信用HTTPサーãƒã®ãƒãƒ¼ãƒˆã‚’指定ã—ã¦ãã ã•ã„。" #: src/wizard.cxx:868 msgid "Season :" msgstr "季節 :" #: src/wizard_funcs.cxx:1347 msgid "Select FG_AIRCRAFT directory" msgstr "航空機データã®ãƒ•ォルダを指定" #: src/wizard_funcs.cxx:1072 msgid "Select FG_ROOT directory" msgstr "" #: src/wizard_funcs.cxx:1421 msgid "Select FG_SCENERY directory" msgstr "シーナリーã®ãƒ•ォルダを指定" #: src/wizard_funcs.cxx:992 msgid "Select FlightGear executable" msgstr "FlightGearã®å®Ÿè¡Œãƒ•ァイルを指定" #: src/wizard.cxx:477 msgid "Select Paths" msgstr "パスを指定ã—ã¾ã™" #: src/wizard_funcs.cxx:1531 msgid "Select Terrasync executable" msgstr "Terrasyncã®å®Ÿè¡Œãƒ•ァイルを指定" #: src/wizard.cxx:704 msgid "Select a location" msgstr "ç©ºæ¸¯ã‚’é¸æŠžã—ã¦ãã ã•ã„" #: src/advanced_funcs.cxx:293 msgid "Select a preferences file" msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž" #: src/wizard_funcs.cxx:1766 src/wizard_funcs.cxx:1770 #: src/wizard_funcs.cxx:2284 msgid "Select a scenario to display its description" msgstr "é¸æŠžã—ãŸã‚·ãƒŠãƒªã‚ªã®æ¦‚è¦ã‚’表示ã—ã¾ã™" #: src/wizard.cxx:640 msgid "Select an aircraft" msgstr "èˆªç©ºæ©Ÿã‚’é¸æŠžã—ã¦ãã ã•ã„" #: src/advanced_funcs.cxx:238 msgid "Select browser" msgstr "ãƒ–ãƒ©ã‚¦ã‚¶ãƒ¼ã‚’é¸æŠž" #: src/io.cxx:301 msgid "Select file" msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„" #: src/wizard.cxx:576 msgid "Select the line in the FG_SCENERY list that is the TerraSync directory." msgstr "" #: src/advanced.cxx:1560 msgid "Set the NAV1 radio frequency, optionally preceded by a radial" msgstr "NAV1ã®å‘¨æ³¢æ•°ã‚’設定ã—ã¦ãã ã•ã„。任æ„ã§æ–¹ä½ã‚’å‰ç½®ã—ã¦ãã ã•ã„" #: src/advanced.cxx:1199 msgid "Set the maximum degree of anisotropy in texture filtering" msgstr "" #: src/advanced.cxx:1108 msgid "Shading" msgstr "シェーディング" #: src/wizard.cxx:753 msgid "Show command line" msgstr "コマンドラインを表示" #: src/advanced.cxx:1091 msgid "Sky Blend" msgstr "霧・é„" #: src/advanced.cxx:1111 msgid "Smooth" msgstr "スムース(美ã—ã„)" #: src/advanced.cxx:794 msgid "Sound" msgstr "音" #: src/advanced.cxx:1871 msgid "Span (m):" msgstr "å¹…:" #: src/advanced.cxx:1158 msgid "Specify visibilty in meters" msgstr "è¦–ç¨‹ã‚’ãƒ¡ãƒ¼ãƒˆãƒ«ã§æŒ‡å®šã—ã¾ã™" #: src/advanced.cxx:1165 msgid "Specify visiblity in miles" msgstr "è¦–ç¨‹ã‚’ãƒžã‚¤ãƒ«ã§æŒ‡å®šã—ã¾ã™" #: src/advanced.cxx:837 src/wizard.cxx:794 msgid "Specular highlight" msgstr "å…‰ã®åå°„" #: src/advanced.cxx:1799 msgid "Speed (kts):" msgstr "速度 (kts):" #: src/advanced.cxx:921 msgid "Speed:" msgstr "速度:" #: src/advanced.cxx:766 msgid "Splash Screen" msgstr "スプラッシュスクリーン" #: src/advanced.cxx:932 msgid "Start at ground level" msgstr "地上ã§ã‚¹ã‚¿ãƒ¼ãƒˆã—ã¾ã™" #: src/advanced.cxx:1239 msgid "Start date gmt" msgstr "GMT基準ã§èµ·å‹•æ™‚ã®æ™‚刻を指定" #: src/advanced.cxx:1245 msgid "Start date lat" msgstr "ç¾åœ°æ™‚刻基準ã§èµ·å‹•æ™‚ã®æ™‚刻を指定" #: src/advanced.cxx:1233 msgid "Start date sys" msgstr "PCã®æ™‚刻基準ã§èµ·å‹•æ™‚ã®æ™‚刻を指定" #: src/advanced.cxx:939 msgid "Start in the air" msgstr "空中ã§ã‚¹ã‚¿ãƒ¼ãƒˆã—ã¾ã™" #: src/advanced.cxx:957 msgid "Start paused" msgstr "ä¸€æ™‚åœæ­¢çŠ¶æ…‹ã§ã‚¹ã‚¿ãƒ¼ãƒˆã—ã¾ã™" #: src/wizard.cxx:690 msgid "Status :" msgstr "ステータス :" #: src/advanced.cxx:1227 msgid "Synchronize simulation time with local time" msgstr "ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿å†…ã®æ™‚刻をç¾å®Ÿã®ç¾åœ°æ™‚刻ã¨åŒæœŸã•ã›ã¾ã™" #: src/advanced.cxx:1219 msgid "Synchronize simulation time with real time" msgstr "ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿å†…ã®æ™‚刻をç¾å®Ÿã®æ™‚刻ã¨åŒæœŸã•ã›ã¾ã™" #: src/Fl_OSG.cxx:193 msgid "Systems : " msgstr "システム:" #: src/advanced.cxx:1507 msgid "TCP" msgstr "" #: src/wizard.cxx:910 msgid "TerraSync" msgstr "シーナリー自動å–å¾—" #: src/wizard.cxx:575 msgid "TerraSync directory" msgstr "TerraSync用ã®ãƒ•ォルダ" #: src/wizard_funcs.cxx:1799 msgid "TerraSync directory not set" msgstr "TerraSyncã®ãƒ•ォルダãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“。" #: src/wizard_funcs.cxx:1808 msgid "TerraSync executable not set" msgstr "TerraSyncã®å®Ÿè¡Œãƒ•ァイルãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“。" #: src/wizard_funcs.cxx:2779 msgid "TerraSync must be configured" msgstr "TerraSyncを設定ã—ã¦ãã ã•ã„。" #: src/wizard.cxx:625 msgid "Terrasync exe:" msgstr "TerraSync ã®å®Ÿè¡Œãƒ•ァイル:" #: src/advanced.cxx:1198 msgid "Texture filtering:" msgstr "テクスãƒãƒ£ã®ãƒ•ィルタリング:" #: src/advanced.cxx:1097 msgid "Textures" msgstr "テクスãƒãƒ£" #: src/advanced.cxx:1858 msgid "Thickness (ft):" msgstr "厚㕠(ft):" #: src/advanced.cxx:1213 src/advanced_funcs.cxx:220 msgid "Time" msgstr "時刻" #: src/advanced.cxx:1226 msgid "Time match local" msgstr "PCã®æ™‚刻(時差考慮)" #: src/advanced.cxx:1218 msgid "Time match real" msgstr "PCã®æ™‚刻(時差無視)" #: src/advanced.cxx:1279 msgid "Time of day" msgstr "時間帯" #: src/wizard.cxx:852 msgid "Time of day :" msgstr "時間帯 :" #: src/wizard.cxx:1040 msgid "To change aircraft, exit FlightGear and return to this launcher" msgstr "" "航空機を変更ã™ã‚‹ã«ã¯ã€\n" "FlightGearを終了ã—ã¦ãƒ©ãƒ³ãƒãƒ£ãƒ¼ã«æˆ»ã£ã¦ãã ã•ã„。" #: src/wizard.cxx:799 msgid "Too much framerate hurts the smoothness of the simulation" msgstr "éŽå¤§ãªãƒ•レームレートã¯ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®ã‚¹ãƒ ãƒ¼ã‚¹ã•ã‚’æãªã„ã¾ã™ã€‚" #: src/advanced.cxx:1671 msgid "Trace Read Properties" msgstr "プロパティã®èª­ã¿è¾¼ã¿ã¸ã®ãƒˆãƒ¬ãƒ¼ã‚¹" #: src/advanced.cxx:1704 msgid "Trace Write Properties" msgstr "プロパティã¸ã®æ›¸ãè¾¼ã¿ã¸ã®ãƒˆãƒ¬ãƒ¼ã‚¹" #: src/advanced.cxx:1879 msgid "Transition (ft):" msgstr "é·ç§»é«˜åº¦ (ft):" #: src/advanced.cxx:1813 msgid "Turbulence" msgstr "乱気æµ" #: src/advanced.cxx:1514 msgid "UDP" msgstr "" #: src/wizard_funcs.cxx:1323 #, c-format msgid "" "Unable to delete '%s':\n" "%s" msgstr "" " '%s' :\n" " '%s' を削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。" #: src/wizard_funcs.cxx:1234 src/wizard_funcs.cxx:1235 #: src/wizard_funcs.cxx:1237 msgid "Unknown" msgstr "䏿˜Ž" #: src/wizard_funcs.cxx:2773 #, c-format msgid "Unknown airport : '%s'" msgstr " '%s' ã¨ã„ã†ç©ºæ¸¯ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" #: src/wizard.cxx:790 msgid "Use with caution. It may drop your framerate dramatically" msgstr "注æ„。ã“れã¯ãƒ•レームレートを劇的ã«è½ã¨ã—ã¾ã™ã€‚" #: src/advanced.cxx:1036 msgid "VOR:" msgstr "" #: src/advanced.cxx:1679 src/advanced.cxx:1712 src/advanced.cxx:1761 msgid "Value:" msgstr "値:" #: src/advanced.cxx:1172 msgid "View Offset:" msgstr "視点オフセット:" #: src/wizard.cxx:695 msgid "Viewer" msgstr "ビューワ" #: src/advanced.cxx:1150 msgid "Visibility:" msgstr "視程:" #: src/wizard.cxx:1058 msgid "We are sorry for this inconvenience." msgstr "ã”è¿·æƒ‘ã‚’ãŠæŽ›ã‘ã—ã¦ç”³ã—訳ã‚りã¾ã›ã‚“。" #: src/advanced.cxx:1770 src/advanced_funcs.cxx:227 msgid "Weather" msgstr "天候" #: src/advanced.cxx:1778 msgid "Wind Direction" msgstr "風å‘" #: src/advanced.cxx:1800 msgid "Wind speed (kts)" msgstr "風速(kts)" #: src/advanced.cxx:1146 src/wizard.cxx:769 msgid "Window geometry, WxH" msgstr "ウインドウã®ã‚µã‚¤ã‚º(WxH)" #: src/advanced.cxx:1103 msgid "Wireframe" msgstr "ワイヤーフレーム" #: src/advanced_funcs.cxx:294 msgid "XML Files(*.xml)" msgstr "XMLファイル(*.xml)" #: src/wizard_funcs.cxx:86 src/advanced_funcs.cxx:110 msgid "afternoon" msgstr "åˆå¾Œ" #: src/advanced_funcs.cxx:122 msgid "alert" msgstr "警戒" #: src/wizard_funcs.cxx:107 msgid "alpha" msgstr "α版" #: src/wizard_funcs.cxx:106 msgid "beta" msgstr "β版" #: src/wizard.cxx:816 msgid "bpp :" msgstr "色深度 :" #: src/advanced.cxx:1176 msgid "bpp:" msgstr "色深度:" #: src/advanced_funcs.cxx:128 msgid "broken" msgstr "" #: src/advanced_funcs.cxx:118 msgid "bulk" msgstr "" #: src/advanced.cxx:1814 msgid "calm (0.0) to severe (1.0)" msgstr "0.0ãŒæœ€ã‚‚ç©ã‚„ã‹ã§ã€1.0ãŒæœ€ã‚‚æ¿€ã—ãå¹ãã¾ã™" #: src/advanced.cxx:1285 msgid "choice:" msgstr "é¸æŠž:" #: src/advanced_funcs.cxx:131 msgid "cirrus" msgstr "" #: src/advanced_funcs.cxx:132 msgid "clear" msgstr "" #: src/wizard_funcs.cxx:83 src/advanced_funcs.cxx:107 msgid "dawn" msgstr "夜明ã‘" #: src/advanced_funcs.cxx:119 msgid "debug" msgstr "デãƒãƒƒã‚°" #: src/wizard_funcs.cxx:112 msgid "devel" msgstr "開発中" #: src/wizard_funcs.cxx:110 msgid "developement" msgstr "開発中" #: src/wizard_funcs.cxx:111 msgid "development" msgstr "開発中" #: src/wizard_funcs.cxx:87 src/advanced_funcs.cxx:111 msgid "dusk" msgstr "夕暮れ" #: src/wizard_funcs.cxx:108 msgid "early alpha" msgstr "åˆæœŸÎ±ç‰ˆ" #: src/wizard_funcs.cxx:104 msgid "early production" msgstr "åˆæœŸè£½å“" #: src/wizard_funcs.cxx:103 msgid "early-production" msgstr "åˆæœŸè£½å“" #: src/wizard_funcs.cxx:88 src/advanced_funcs.cxx:112 msgid "evening" msgstr "夜" #: src/wizard_funcs.cxx:114 msgid "experimental" msgstr "試作" #: src/advanced_funcs.cxx:130 msgid "few" msgstr "" #: src/AirportBrowser.cxx:571 msgid "gzopen error" msgstr "gzファイルを開ã‘ã¾ã›ã‚“" #: src/advanced_funcs.cxx:148 msgid "highest filtering" msgstr "最高ã®ãƒ•ィルタリング" #: src/advanced.cxx:1301 msgid "httpd" msgstr "" #: src/wizard.cxx:964 msgid "in :" msgstr "入力 :" #: src/advanced_funcs.cxx:120 msgid "info" msgstr "情報" #: src/advanced.cxx:1360 msgid "in|out,hz,address,port" msgstr "入力or出力,クロック,アドレス,ãƒãƒ¼ãƒˆ" #: src/advanced_funcs.cxx:137 msgid "joystick" msgstr "ジョイスティック" #: src/advanced.cxx:1334 msgid "jpg-httpd" msgstr "" #: src/advanced_funcs.cxx:138 msgid "keyboard" msgstr "キーボード" #: src/wizard_funcs.cxx:89 src/advanced_funcs.cxx:113 msgid "midnight" msgstr "深夜" #: src/wizard_funcs.cxx:84 src/advanced_funcs.cxx:108 msgid "morning" msgstr "æœ" #: src/advanced_funcs.cxx:139 msgid "mouse" msgstr "マウス" #: src/advanced_funcs.cxx:144 msgid "no filtering" msgstr "フィルタリング無ã—" #: src/wizard_funcs.cxx:85 src/advanced_funcs.cxx:109 msgid "noon" msgstr "真昼" #: src/advanced.cxx:1052 msgid "offset azimuth:" msgstr "オフセットã™ã‚‹æ–¹ä½" #: src/advanced.cxx:1048 msgid "offset distance:" msgstr "オフセットã™ã‚‹è·é›¢" #: src/wizard.cxx:968 msgid "out :" msgstr "出力 :" #: src/advanced_funcs.cxx:127 msgid "overcast" msgstr "" #: src/advanced.cxx:847 msgid "pitot" msgstr "ピトー管" #: src/wizard_funcs.cxx:102 msgid "production" msgstr "製å“" #: src/advanced.cxx:1634 msgid "prop=value" msgstr "" #: src/advanced.cxx:1318 msgid "props" msgstr "" #: src/wizard.cxx:503 src/wizard.cxx:510 msgid "root data path" msgstr "" "航空機や航空標識ã®ä½ç½®ã€ç©ºæ¸¯ã®å‘¨æ³¢æ•°ç­‰ã®ãƒ‡ãƒ¼ã‚¿ãŒã‚るフォルダを指定ã—ã¦ãã ã•" "ã„。" #: src/advanced_funcs.cxx:129 msgid "scattered" msgstr "" #: src/advanced.cxx:852 msgid "static" msgstr "é™åœ§" #: src/wizard_funcs.cxx:94 msgid "summer" msgstr "å¤" #: src/advanced.cxx:857 msgid "system" msgstr "システム" #: src/advanced.cxx:1001 msgid "uBody:" msgstr "" #: src/advanced.cxx:1005 msgid "vBody:" msgstr "" #: src/advanced.cxx:862 msgid "vacuum" msgstr "負圧" #: src/advanced.cxx:1009 msgid "wBody" msgstr "" #: src/advanced_funcs.cxx:121 msgid "warn" msgstr "注æ„" #: src/wizard_funcs.cxx:95 msgid "winter" msgstr "冬" #~ msgid "Anti-aliasing" #~ msgstr "アンãƒã‚¨ã‚¤ãƒªã‚¢ã‚¹" #~ msgid "electrical" #~ msgstr "電装å“" fg-fgrun/po/nl.po000066400000000000000000001102171245722473500141750ustar00rootroot00000000000000# Dutch translations for fgrun package. # Copyright (C) 2008 Frederic Bouvier # This file is distributed under the same license as the fgrun package. # Stefan , 2008. # Gijs de Rooy , 2010 - 2013. # msgid "" msgstr "" "Project-Id-Version: fgrun 1.5.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-03 02:20+0200\n" "PO-Revision-Date: 2010-05-23 18:36+0200\n" "Last-Translator: Gijs de Rooy \n" "Language-Team: Dutch\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CP1252\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/logwin.cxx:34 msgid "&Close" msgstr "&Afsluiten" #: src/logwin.cxx:32 msgid "&File" msgstr "&Bestand" #: src/logwin.cxx:33 msgid "&Save" msgstr "&Opslaan" # Geen vertaling nodig -- zelfde in NL #: src/advanced.cxx:715 src/advanced.cxx:724 src/advanced.cxx:1467 msgid "..." msgstr "" #: src/advanced_funcs.cxx:145 msgid "2.0" msgstr "" #: src/advanced.cxx:1081 src/wizard.cxx:812 msgid "3D Clouds" msgstr "3D wolken" #: src/wizard.cxx:643 #, fuzzy msgid "3D Preview" msgstr "3D voorbeeld" #: src/advanced_funcs.cxx:146 msgid "4.0" msgstr "" #: src/advanced_funcs.cxx:147 msgid "8.0" msgstr "" #: src/wizard.cxx:942 msgid ":" msgstr "" #: src/wizard_funcs.cxx:889 src/wizard_funcs.cxx:2449 #: src/AirportBrowser.cxx:470 src/fgfsrc.cxx:101 msgid "" msgstr "" #: src/wizard_funcs.cxx:225 #, c-format msgid "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

This program is released under the " "GNU General Public License (http://www.gnu.org/copyleft/gpl.html).

" "

Report bugs to http://sourceforge.net/projects/fgrun

" msgstr "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

Dit programma is gedistrubuteerd " "onder de GNU General Public License (http://www.gnu.org/copyleft/gpl.html).

Rapporteer fouten via http://sourceforge.net/projects/fgrun

" # geen vertaling nodig -- zelfde in NL #: src/wizard.cxx:599 msgid "@2>" msgstr "" # geen vertaling nodig -- zelfde in NL #: src/wizard.cxx:588 msgid "@8>" msgstr "" # geen vertaling nodig -- zelfde in NL #: src/advanced.cxx:1568 msgid "ADF:" msgstr "" #: src/advanced.cxx:867 #, fuzzy msgid "AI Models" msgstr "" "Computergestuurde\n" "toestellen" #: src/advanced.cxx:873 src/wizard.cxx:848 msgid "AI Traffic" msgstr "" "Computergestuurd\n" "verkeer" #: src/wizard.cxx:844 msgid "AI models" msgstr "" "Computergestuurde\n" "toestellen" #: src/wizard_funcs.cxx:977 src/fgfsrc.cxx:61 msgid "Abort" msgstr "Stop" #: src/fgfsrc.cxx:61 #, c-format msgid "About to overwrite %s." msgstr "Ga bijna %s overschrijven" #: src/wizard_funcs.cxx:977 msgid "About to reset current parameters" msgstr "Sta op het punt huidige parameters te resetten" #: src/wizard.cxx:562 msgid "Add a scenery directory" msgstr "Scenery map toevoegen" #: src/wizard.cxx:533 msgid "Add an aircraft directory" msgstr "Vliegtuig map toevoegen" #: src/wizard.cxx:532 src/wizard.cxx:561 msgid "Add..." msgstr "Toevoegen..." #: src/advanced.cxx:672 msgid "Advanced Options" msgstr "Geavanceerde opties" #: src/wizard.cxx:747 msgid "Advanced..." msgstr "Geavanceerd..." #: src/wizard.cxx:523 msgid "Aircraft directories" msgstr "Vliegtuig mappen" #: src/advanced.cxx:748 msgid "Aircraft:" msgstr "Vliegtuig:" #: src/wizard.cxx:1097 msgid "Airport to fetch : " msgstr "Te downloaden vliegveld : " #: src/advanced.cxx:740 msgid "Airport:" msgstr "Vliegveld:" #: src/wizard.cxx:620 msgid "Airports Cache:" msgstr "Vliegvelden cache" #: src/advanced.cxx:995 msgid "Airspeed:" msgstr "Luchtsnelheid:" #: src/wizard.fl msgid "All airports" msgstr "" #: src/advanced.cxx:989 msgid "Altitude:" msgstr "Hoogte:" #: src/wizard.cxx:1068 msgid "An error report has been generated in the file below :" msgstr "Een fouten rapport is aangemaakt in het volgende bestand :" #: src/advanced.cxx:806 msgid "Anti-alias HUD" msgstr "" # geen vertaling nodig -- zelfde in NL #: src/wizard.cxx:931 msgid "Atlas" msgstr "" # geen vertaling nodig -- zelfde in NL #: src/wizard.cxx:692 msgid "Author(s) :" msgstr "Auteur(s) :" #: src/advanced.cxx:812 src/wizard.cxx:864 msgid "Auto-coordination" msgstr "Automatische richtingroer correctie" #: src/wizard.cxx:659 #, fuzzy msgid "Available aircraft :" msgstr "Vliegtuig:" #: src/advanced.cxx:1554 src/advanced_funcs.cxx:223 msgid "Avionics" msgstr "Avionica" #: src/advanced.cxx:1481 msgid "Baud Rate:" msgstr "Baud snelheid:" #: src/advanced.cxx:711 msgid "Browser:" msgstr "" #: src/wizard.cxx:954 msgid "Callsign :" msgstr "Roepletters :" #: src/advanced.cxx:1355 msgid "Callsign:" msgstr "Roepletters:" #: src/advanced.cxx:685 src/wizard.cxx:1085 msgid "Cancel" msgstr "Annuleren" #: src/wizard.cxx:725 msgid "Carrier : " msgstr "Vliegdekschip :" #: src/wizard.cxx:721 msgid "Carrier Ops" msgstr "Vliegdekschip operaties" #: src/advanced.cxx:1819 msgid "Ceiling:" msgstr "Plafond:" #: src/wizard.cxx:1007 msgid "" "Clear all selected options and return to the install situation. Useful if " "FGFS don't start anymore." msgstr "" "Verwijder alle geselecteerde opties en keer terug naar de " "fabrieksintellingen. Nuttig als FlightGear niet meer start." #: src/wizard.cxx:615 msgid "Clear the content of the airport cache" msgstr "Schoon de vliegveld cache op" #: src/advanced.cxx:1060 msgid "Climb rate:" msgstr "Klimsnelheid:" #: src/advanced.cxx:965 msgid "Clock Freeze" msgstr "Zet tijd stil" #: src/advanced.cxx:1075 src/advanced.cxx:1833 src/advanced_funcs.cxx:228 msgid "Clouds" msgstr "Wolken" #: src/Fl_OSG.cxx:188 msgid "Cockpit : " msgstr "" #: src/advanced.cxx:1177 src/wizard.cxx:817 msgid "Color depth (bits per pixel)" msgstr "Kleurkwaliteit (bits per pixel)" #: src/advanced.cxx:719 msgid "Config:" msgstr "Configuratie:" #: src/advanced.cxx:892 msgid "Core Flight Dynamics Model" msgstr "Kern FDM" #: src/advanced.cxx:1865 msgid "Coverage:" msgstr "Bedekking:" #: src/wizard.cxx:894 msgid "Ctrl-click to deselect a single item" msgstr "Ctrl-click om een enkel item te deselecteren" #: src/wizard.cxx:886 msgid "Ctrl-click to select or deselect a single item" msgstr "Ctrl-click om een enkel item te (de)selecteren" # geen vertaling nodig -- niet goed te vertalen #: src/advanced.cxx:1601 msgid "DME:" msgstr "" #: src/advanced.cxx:1650 src/advanced_funcs.cxx:225 msgid "Debugging" msgstr "" #: src/advanced.cxx:1400 src/advanced.cxx:1628 src/advanced.cxx:1691 #: src/advanced.cxx:1724 src/advanced.cxx:1756 src/wizard.cxx:537 #: src/wizard.cxx:566 src/wizard.cxx:614 msgid "Delete" msgstr "Verwijder" #: src/wizard.cxx:567 msgid "Delete a scenery directory" msgstr "Scenery map verwijderen" #: src/wizard.cxx:538 #, fuzzy msgid "Delete an aircraft directory" msgstr "Vliegtuig map verwijderen" #: src/wizard_funcs.cxx:1752 msgid "Description of " msgstr "Beschrijving van " #: src/wizard.cxx:893 msgid "Deselect all" msgstr "Alles deselecteren" #: src/wizard_funcs.cxx:109 msgid "Development" msgstr "In ontwikkeling" #: src/advanced.cxx:1792 msgid "Direction wind is coming from." msgstr "Richting waaruit de wind komt." # geen vertaling nodig -- zelfde in NL #: src/advanced.cxx:1435 msgid "Direction:" msgstr "Richting:" #: src/advanced.cxx:1127 msgid "Disabled" msgstr "Uitgeschakeld" #: src/wizard.cxx:764 msgid "Display" msgstr "Scherm" #: src/wizard.fl msgid "Display all airports" msgstr "Toon alle vliegvelden" #: src/wizard.fl msgid "Display only installed airports" msgstr "Toon alleen geïnstalleerde vliegvelden" #: src/advanced.cxx:767 msgid "Display splash screen at startup" msgstr "Toon splash screen bij het starten" #: src/advanced.cxx:827 msgid "Distance attenuation" msgstr "Afstandsvermindering" #: src/advanced.cxx:907 msgid "Do not attempt to trim the model" msgstr "Probeer het toestel niet te trimmen" #: src/wizard_funcs.cxx:2685 msgid "Don't overwrite" msgstr "Niet overschrijven" #: src/wizard_funcs.cxx:113 msgid "Early development" msgstr "In vroege ontwikkeling" #: src/wizard_funcs.cxx:105 msgid "Early production" msgstr "Vroege productie" #: src/advanced.cxx:1851 msgid "Elevation(ft):" msgstr "Hoogte (voet):" #: src/advanced.cxx:1076 msgid "Enable 2D (flat) cloud layers" msgstr "Schakel 2D (platte) wolkendekken in" #: src/advanced.cxx:1082 msgid "Enable 3D (volumetric) cloud layers" msgstr "Schakel 3D (met volume) wolkendekken in" #: src/advanced.cxx:833 msgid "Enable 3D HUD" msgstr "Schakel 3D HUD in" #: src/advanced.cxx:868 msgid "Enable AI traffic" msgstr "Schakel computergestuurd verkeer in" # geen vertaling nodig -- afkorting #: src/advanced.cxx:1302 msgid "Enable HTTP server" msgstr "Schakel HTTP server in" # Geen vertaling nodig -- afkorting #: src/advanced.cxx:801 msgid "Enable Heads Up Display" msgstr "Schakel Heads Up Display in" #: src/advanced.cxx:807 msgid "Enable anti-aliased HUD" msgstr "Schakel anti-aliased HUD in" #: src/advanced.cxx:813 msgid "Enable auto-coordinated turns." msgstr "Schakel automatische richtingroer correctie in" #: src/advanced.cxx:818 msgid "Enable celestial body growth illusion near the horizon" msgstr "Schakel de hemellichaam vergrotende illusie dichtbij de horizon in" #: src/advanced.cxx:823 msgid "Enable enhanced runway lighting" msgstr "Schakel geavanceerde baanverlichting in" #: src/advanced.cxx:779 msgid "Enable extra mouse pointer" msgstr "Schakel extra muis aanwijzer in" #: src/advanced.cxx:762 msgid "Enable full screen game mode" msgstr "Volledig scherm gebruiken" #: src/advanced.cxx:1087 msgid "Enable full screen mode" msgstr "Schakel volledig scherm mode in" #: src/advanced.cxx:773 msgid "Enable introduction music during start up" msgstr "Schakel introductie muziek in tijdens het opstarten" #: src/advanced.cxx:1319 msgid "Enable property server" msgstr "Schakel property server in" #: src/advanced.cxx:784 msgid "Enable random scenery objects" msgstr "Schakel willekeurige objecten in" # Betere suggesties welkom #: src/advanced.cxx:828 msgid "Enable runway light distance attenuation" msgstr "Schakel afstandsvermindering van startbaanverlichting in" #: src/advanced.cxx:1335 msgid "Enable screen shot HTTP server" msgstr "Schakel HTTP server voor schermafdrukken in" #: src/advanced.cxx:1092 msgid "Enable sky blending" msgstr "Schakel geleidelijke luchtlaagovergangen in" #: src/advanced.cxx:795 msgid "Enable sound effects" msgstr "Schakel geluidseffecten in" #: src/advanced.cxx:838 msgid "Enable specular reflections on textured objects" msgstr "Schakel glimmende weerkaatsingen in op getextureerde objecten" #: src/advanced.cxx:789 msgid "Enable the instrument panel" msgstr "Schakel het instrumenten paneel aan" #: src/advanced.cxx:1104 msgid "Enable wireframe drawing mode" msgstr "Schakel draadframe tekenmethode in" #: src/advanced.cxx:822 msgid "Enhanced lighting" msgstr "Verbeterde verlichting" #: src/wizard.cxx:789 msgid "Enhanced runway lighting" msgstr "Geavanceerde baanverlichting" #: src/advanced.cxx:1738 src/advanced_funcs.cxx:226 msgid "Environment" msgstr "Omgeving" #: src/wizard.cxx:498 msgid "Executable path not set or invalid" msgstr "Programma locatie leeg of ongeldig" #: src/advanced.cxx:728 src/wizard.cxx:484 msgid "Executable:" msgstr "Programma:" #: src/Fl_OSG.cxx:198 msgid "FDM : " msgstr "" #: src/advanced.cxx:891 msgid "FDM:" msgstr "" #: src/advanced.cxx:1466 msgid "FGCom built-in" msgstr "FGCom built-in" #: src/advanced.cxx:1472 msgid "FGCom standalone" msgstr "FGCom standalone" #: src/wizard.cxx:522 msgid "FG_AIRCRAFT:" msgstr "" #: src/wizard.cxx:516 msgid "FG_ROOT path invalid or not set" msgstr "FG_ROOT locatie ongeldig of leeg" #: src/advanced.cxx:732 src/wizard.cxx:502 msgid "FG_ROOT:" msgstr "" #: src/wizard.cxx:610 #, fuzzy msgid "FG_SCENERY empty" msgstr "Stel FG_SCENERY map in" # Geen vertaling nodig -- variabele #: src/advanced.cxx:736 src/wizard.cxx:551 msgid "FG_SCENERY:" msgstr "" #: src/advanced.cxx:1190 msgid "FOV:" msgstr "Gezichsveld" #: src/advanced.cxx:1820 msgid "FT_ASL[:THICKNESS_FT]" msgstr "FT_ASL[:THICKNESS_FT] (voet boven zeeniveau[:dikte in voet])" #: src/advanced.cxx:842 msgid "Failures" msgstr "Storingen" #: src/advanced.cxx:1132 msgid "Fastest" msgstr "Snelste" #: src/advanced.cxx:757 src/wizard.cxx:832 src/advanced_funcs.cxx:215 msgid "Features" msgstr "Functies" #: src/advanced.cxx:1824 msgid "Fetch real weather" msgstr "Kom overeen met het echte weer" #: src/advanced.cxx:1191 msgid "Field of View angle" msgstr "Gezichtsveld" #: src/advanced.cxx:1461 msgid "File:" msgstr "Bestand:" #: src/wizard_funcs.cxx:2685 #, c-format msgid "Filename \"%s\" already exists." msgstr "Bestandsnaam \"%s\" bestaat al." # geen vertaling nodig -- afkorting #: src/advanced.cxx:1044 msgid "Fix:" msgstr "" #: src/advanced.cxx:1117 msgid "Flat" msgstr "Plat" #: src/advanced.cxx:886 src/advanced_funcs.cxx:216 msgid "Flight Model" msgstr "Vluchtmodel" # geen vertaling nodig #: src/wizard.cxx:474 msgid "FlightGear Wizard" msgstr "" #: src/wizard.cxx:1032 msgid "FlightGear has been started" msgstr "FlightGear is gestart" #: src/wizard.cxx:1029 msgid "FlightGear running..." msgstr "FlightGear draait..." #: src/wizard.cxx:1052 msgid "Flightgear crashed..." msgstr "FlightGear crashed..." #: src/wizard.cxx:1054 msgid "Flightgear encountered an unexpected failure" msgstr "FlightGear is een probleem tegengekomen" #: src/advanced.cxx:1124 msgid "Fog" msgstr "Mist" #: src/wizard.cxx:798 msgid "Framerate limiter :" msgstr "Framerate begrenzer :" #: src/advanced.cxx:951 src/advanced.cxx:956 src/advanced_funcs.cxx:217 msgid "Freeze" msgstr "Bevries" #: src/advanced.cxx:961 msgid "Fuel Freeze" msgstr "Geen brandstofverbruik" #: src/advanced.cxx:1086 src/wizard.cxx:781 msgid "Full Screen" msgstr "Volledig scherm" #: src/wizard.cxx:621 msgid "Full path to the airport cache" msgstr "Volledig pad naar het FlightGear programma" #: src/wizard.cxx:485 src/wizard.cxx:492 msgid "Full pathname to FlightGear executable" msgstr "Volledig pad naar het FlightGear programma" #: src/wizard.cxx:626 src/wizard.cxx:633 msgid "Full pathname to Terrasync executable" msgstr "Volledig pad naar het TerraSync programma" #: src/advanced.cxx:761 msgid "Game Mode" msgstr "Volledig scherm" #: src/advanced.cxx:696 src/advanced_funcs.cxx:214 msgid "General" msgstr "Algemeen" # geen vertaling nodig -- protocol #: src/advanced.cxx:1524 msgid "Generic:" msgstr "" #: src/advanced.cxx:1145 msgid "Geometry:" msgstr "Resolutie:" #: src/advanced.cxx:1056 msgid "Glide slope:" msgstr "Glijhoek:" #: src/advanced.cxx:1308 msgid "HTTP server port" msgstr "HTTP server poort" #: src/advanced.cxx:800 msgid "HUD" msgstr "" #: src/advanced.cxx:1013 src/advanced.cxx:1791 msgid "Heading:" msgstr "Richting:" #: src/advanced.cxx:817 src/wizard.cxx:785 msgid "Horizon effect" msgstr "" #: src/wizard.cxx:937 msgid "Hostname" msgstr "Hostnaam" #: src/wizard.cxx:936 src/wizard.cxx:958 msgid "Hostname :" msgstr "Hostnaam :" #: src/advanced.cxx:1492 msgid "Hostname:" msgstr "Hostnaam:" #: src/advanced.cxx:832 msgid "Hud-3D" msgstr "3D HUD" #: src/advanced.cxx:1450 msgid "Hz:" msgstr "" # geen vertaling nodig -- niet goed te vertalen #: src/AirportTable.cxx:121 msgid "ICAO Id" msgstr "" #: src/advanced.cxx:938 msgid "In Air" msgstr "In de lucht" #: src/advanced.cxx:974 src/advanced_funcs.cxx:218 msgid "Initial Position" msgstr "Aanvankelijke positie" #: src/advanced.cxx:1014 msgid "Initial aircraft heading (yaw) angle 0 to 360 degrees" msgstr "Aanvankelijke richting van het vliegtuig, tussen 0 en 360 graden" #: src/advanced.cxx:996 msgid "Initial airspeed in knots" msgstr "Aanvankelijke luchtsnelheid in knopen" #: src/advanced.cxx:990 msgid "Initial altitude in feet" msgstr "Aanvankelijke hoogte in voeten" #: src/advanced.cxx:985 msgid "Initial latitude, south is negative" msgstr "Aanvankelijke breedtegraad, het zuiden is negatief" #: src/advanced.cxx:980 msgid "Initial longitude, west is negative" msgstr "Aanvankelijke lengtegraad, het westen is negatief" #: src/advanced.cxx:1029 msgid "Initial pitch angle (Theta)" msgstr "Aanvankelijke invalshoek (Theta)" #: src/advanced.cxx:1021 msgid "Initial roll angle, (Phi)" msgstr "Aanvankelijke rolhoek, (Phi)" #: src/advanced.cxx:1151 msgid "Initial visibility distance" msgstr "Aanvankelijke zicht afstand" # geen vertaling nodig -- zelfde als NL #: src/wizard.cxx:965 msgid "Input port number" msgstr "Input poort nummer" # geen vertaling nodig -- zelfde in NL #: src/advanced.cxx:1382 src/advanced_funcs.cxx:222 msgid "Input/Output" msgstr "" #: src/wizard.fl msgid "Installed airports" msgstr "" # geen vertaling nodig -- zelfde in NL #: src/advanced.cxx:1588 msgid "Internal" msgstr "" #: src/advanced.cxx:772 msgid "Intro Music" msgstr "Intro muziek" #: src/advanced.cxx:707 msgid "Language:" msgstr "Taal:" #: src/advanced.cxx:984 msgid "Latitude:" msgstr "Breedtegraad:" #: src/advanced.cxx:1837 msgid "Layer:" msgstr "Laag:" #: src/wizard.cxx:1017 msgid "Load" msgstr "Openen" #: src/wizard.cxx:1018 msgid "Load a previously saved configuration" msgstr "Open een vooropgeslagen configuratie" #: src/wizard_funcs.cxx:2590 msgid "Load settings from..." msgstr "Open instellingen van..." #: src/wizard.cxx:698 #, fuzzy msgid "Location :" msgstr "Resolutie :" # geen vertaling nodig -- niet goed te vertalen #: src/advanced.cxx:1656 msgid "Log Level:" msgstr "Log niveau:" #: src/wizard_funcs.cxx:469 msgid "Log Window" msgstr "Log Scherm" #: src/advanced.cxx:979 msgid "Longitude:" msgstr "Lengtegraad:" #: src/advanced.cxx:1207 msgid "Materials file:" msgstr "Materialen bestand" # geen vertaling nodig -- zelfde in NL #: src/advanced.cxx:1419 msgid "Medium:" msgstr "" #: src/wizard.cxx:875 msgid "Menu auto-visibility" msgstr "Menu automatisch tonen" #: src/advanced.cxx:1157 msgid "Meters" msgstr "" #: src/advanced.cxx:1164 msgid "Miles" msgstr "Mijlen" #: src/Fl_OSG.cxx:183 msgid "Model : " msgstr "" #: src/advanced.cxx:912 msgid "Model Hz:" msgstr "" #: src/wizard_funcs.cxx:749 #, c-format msgid "Model not found: '%s'" msgstr "Model niet gevonden: '%s'" #: src/advanced.cxx:778 msgid "Mouse Pointer" msgstr "Muis aanwijzer" #: src/wizard.cxx:600 #, fuzzy msgid "Move scenery directory down" msgstr "Scenery map toevoegen" #: src/wizard.cxx:589 #, fuzzy msgid "Move scenery directory up" msgstr "Scenery map toevoegen" #: src/advanced.cxx:1359 msgid "Multiplay 1:" msgstr "" #: src/advanced.cxx:1364 msgid "Multiplay 2:" msgstr "" # geen vertaling nodig -- leesteken #: src/wizard.cxx:949 msgid "Multiplayer" msgstr "" #: src/advanced.cxx:1350 msgid "Multiplayer Options" msgstr "Multiplayer opties" # geen vertaling nodig -- afkorting #: src/advanced.cxx:1040 msgid "NDB:" msgstr "" # geen vertaling nodig -- zelfde in NL #: src/AirportTable.cxx:121 msgid "Name" msgstr "Naam" # geen vertaling nodig -- zelfde in NL #: src/advanced.cxx:1576 msgid "Nav1" msgstr "" #: src/advanced.cxx:1559 msgid "Nav1:" msgstr "" # geen vertaling nodig -- zelfde in NL #: src/advanced.cxx:1582 msgid "Nav2" msgstr "" #: src/advanced.cxx:1564 msgid "Nav2:" msgstr "" #: src/advanced.cxx:1296 src/advanced_funcs.cxx:221 msgid "Network" msgstr "Netwerk" # geen vertaling nodig -- niet goed te vertalen #: src/advanced.cxx:1396 src/advanced.cxx:1642 src/advanced.cxx:1687 #: src/advanced.cxx:1720 src/advanced.cxx:1752 msgid "New" msgstr "Nieuw" #: src/wizard.cxx:995 src/wizard_funcs.cxx:407 src/wizard_funcs.cxx:958 #: src/wizard_funcs.cxx:1802 src/wizard_funcs.cxx:1811 msgid "Next" msgstr "Volgende" #: src/advanced.cxx:1137 msgid "Nicest" msgstr "Mooiste" #: src/Fl_OSG.cxx:207 #, fuzzy msgid "No Rating" msgstr "Schaduwen" #: src/advanced.cxx:906 msgid "No Trim" msgstr "Geen trim" #: src/wizard_funcs.cxx:1755 msgid "Not set" msgstr "Niet ingesteld" #: src/advanced.cxx:688 src/wizard.cxx:1064 src/wizard.cxx:1089 msgid "OK" msgstr "" # betere suggesties welkom #: src/advanced.cxx:1252 msgid "Offset (+/-) from real time" msgstr "Verschil (+/-) met de echte tijd" #: src/advanced.cxx:931 msgid "On Ground" msgstr "Op grondniveau" #: src/wizard.cxx:728 msgid "Only valid if carrier is set. For airport parking, use the list above." msgstr "" "Alleen geldig als een vliegdekschip is ingesteld. Gebruik de lijst hiernaast " "voor parkeerplekken op vliegvelden." #: src/main.cxx:162 #, fuzzy, c-format msgid "" "Options are:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " --version=\n" " -f, --fullscreen\n" "%s" msgstr "" "Mogelijke opties:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " -f, --fullscreen\n" "%s" #: src/wizard.cxx:969 msgid "Output port number" msgstr "Output poort nummer" #: src/wizard_funcs.cxx:2685 src/fgfsrc.cxx:61 msgid "Overwrite" msgstr "Overschrijven" #: src/advanced.cxx:788 msgid "Panel" msgstr "Paneel" #: src/wizard.cxx:727 msgid "Park pos :" msgstr "Parkeerplek :" #: src/AirportBrowser.cxx:89 msgid "Parking" msgstr "Parkeerplekken" #: src/advanced.cxx:720 msgid "Path to additional XML properties file" msgstr "Pad naar extra XML properties bestanden" #: src/wizard.cxx:959 msgid "Peer hostname" msgstr "Peer hostnaam" # betere suggesties welkom #: src/advanced.cxx:1028 msgid "Pitch:" msgstr "Invalshoek:" #: src/wizard.cxx:1072 msgid "Please send this error report to the Flightgear development team" msgstr "Verstuur dit rapport aub naar het FlightGear ontwikkelteam" #: src/wizard.cxx:1037 msgid "Please wait..." msgstr "Even geduld aub..." #: src/advanced.cxx:1475 src/advanced.cxx:1498 msgid "Port:" msgstr "Poort:" #: src/wizard.cxx:1082 msgid "Prefetch Scenery" msgstr "Scenery voorladen" # geen vertaling nodig van output -- ingeburgerd #: src/wizard.cxx:991 msgid "Prev" msgstr "Vorige" #: src/wizard.cxx:670 msgid "Preview" msgstr "Voorbeeld" # geen vertaling nodig -- zelfde in NL #: src/advanced.cxx:1612 src/advanced_funcs.cxx:224 msgid "Properties" msgstr "" #: src/wizard_funcs.cxx:790 msgid "Property '/sim/model/path' not found" msgstr "Property '/sim/model/path' niet gevonden" # geen vertaling nodig voor property -- niet goed te vertalen #: src/advanced.cxx:1325 msgid "Property server port" msgstr "Property server poort" # geen vertaling nodig -- niet goed te vertalen #: src/advanced.cxx:1633 msgid "Property:" msgstr "" #: src/advanced.cxx:1405 msgid "Protocol:" msgstr "" # geen vertaling nodig -- niet goed te vertalen #: src/advanced.cxx:1373 msgid "Proxy:" msgstr "" #: src/wizard.cxx:999 msgid "Quit" msgstr "Afsluiten" #: src/advanced.cxx:783 msgid "Random Objects" msgstr "Willekeurige objecten" #: src/advanced.cxx:877 msgid "Random Trees" msgstr "Willekeurige bomen" #: src/advanced.cxx:1806 msgid "Random Winds" msgstr "Willekeurige winden" # geen vertaling nodig -- afkorting #: src/wizard.cxx:836 msgid "Random objects" msgstr "Willekeurige objecten" #: src/wizard.cxx:840 msgid "Random trees" msgstr "Willekeurige bomen" #: src/Fl_OSG.cxx:205 #, fuzzy msgid "Rating" msgstr "Schaduwen" # Adjust horizontal position of stars #: src/Fl_OSG.cxx:179 msgid "RatingPos" msgstr "80" #: src/wizard.cxx:860 msgid "Real weather fetch" msgstr "Gebruik het echte weer" #: src/wizard.cxx:651 #, fuzzy msgid "Recently used aircraft :" msgstr "Selecteer een vliegtuig" #: src/AirportBrowser.cxx:96 msgid "Refresh" msgstr "Vernieuwen" #: src/AirportBrowser.cxx:99 msgid "Reload airports" msgstr "Herlaad vliegvelden" #: src/advanced.cxx:1070 src/advanced_funcs.cxx:219 msgid "Rendering" msgstr "Weergave" #: src/advanced.cxx:1534 msgid "Repeat" msgstr "Herhalen" # geen vertaling nodig -- zelfde in NL #: src/wizard_funcs.cxx:977 msgid "Reset" msgstr "" #: src/wizard.cxx:768 msgid "Resolution :" msgstr "Resolutie :" #: src/wizard.cxx:1006 msgid "Restore default settings" msgstr "Fabrieksinstellingen" #: src/advanced.cxx:1020 msgid "Roll:" msgstr "Rolhoek:" #: src/wizard_funcs.cxx:950 msgid "Run" msgstr "Start" #: src/advanced.cxx:922 msgid "Run FDM faster than real time" msgstr "Draai de FDM sneller dan realistisch is" #: src/advanced.cxx:913 msgid "Run the FDM at this rate (iterations per second)" msgstr "Draai de FDM met deze snelheid (herhalingen per seconde)" #: src/advanced.cxx:744 msgid "Runway:" msgstr "Startbaan:" #: src/AirportBrowser.cxx:84 msgid "Runways" msgstr "Startbanen" #: src/wizard.cxx:1012 msgid "Save As..." msgstr "Opslaan als..." #: src/wizard.cxx:1013 msgid "Save current configuration to a file" msgstr "De huidige configuratie opslaan" #: src/logwin.cxx:99 msgid "Save file as?" msgstr "Bestand opslaan als?" #: src/wizard_funcs.cxx:2681 msgid "Save settings as..." msgstr "Sla instellingen op als..." #: src/wizard.cxx:881 msgid "Scenarios" msgstr "Scenario's" #: src/wizard.cxx:736 msgid "Scenery Prefetch" msgstr "Scenery voorladen" #: src/wizard.cxx:552 msgid "Scenery directories" msgstr "Scenery mappen" #: src/advanced.cxx:1341 msgid "Screen shot HTTP server port" msgstr "HTTP server voor schermafdrukken poort" #: src/wizard.cxx:868 msgid "Season :" msgstr "Seizoen :" #: src/wizard_funcs.cxx:1347 msgid "Select FG_AIRCRAFT directory" msgstr "Stel FG_ROOT map in" #: src/wizard_funcs.cxx:1072 msgid "Select FG_ROOT directory" msgstr "Stel FG_ROOT map in" #: src/wizard_funcs.cxx:1421 msgid "Select FG_SCENERY directory" msgstr "Stel FG_SCENERY map in" #: src/wizard_funcs.cxx:992 msgid "Select FlightGear executable" msgstr "Stel FlightGear programma in" #: src/wizard.cxx:477 msgid "Select Paths" msgstr "Selecteer paden" #: src/wizard_funcs.cxx:1531 msgid "Select Terrasync executable" msgstr "Stel FlightGear programma in" #: src/wizard.cxx:704 msgid "Select a location" msgstr "Selecteer een locatie" #: src/advanced_funcs.cxx:293 msgid "Select a preferences file" msgstr "Selecteer een voorkeuren-bestand" #: src/wizard_funcs.cxx:1766 src/wizard_funcs.cxx:1770 #: src/wizard_funcs.cxx:2284 msgid "Select a scenario to display its description" msgstr "Selecteer een scenario om een beschrijving te tonen" #: src/wizard.cxx:640 msgid "Select an aircraft" msgstr "Selecteer een vliegtuig" #: src/advanced_funcs.cxx:238 msgid "Select browser" msgstr "Selecteer browser" #: src/io.cxx:301 msgid "Select file" msgstr "Selecter protocol-bestand" #: src/wizard.cxx:576 #, fuzzy msgid "Select the line in the FG_SCENERY list that is the TerraSync directory." msgstr "" "Kies de regel in de FG_SCENERY lijst die overeenkomt met de TerraSync map." #: src/advanced.cxx:1560 msgid "Set the NAV1 radio frequency, optionally preceded by a radial" msgstr "" "Stel de frequentie voor de NAV1 radio in, eventueel voorafgegaan door een " "radiaal " #: src/advanced.cxx:1199 msgid "Set the maximum degree of anisotropy in texture filtering" msgstr "" "Stel de maximale mate van anisotropie bij het filteren van een texture in" #: src/advanced.cxx:1108 msgid "Shading" msgstr "Schaduwen" #: src/wizard.cxx:753 msgid "Show command line" msgstr "Toon command line" #: src/advanced.cxx:1091 msgid "Sky Blend" msgstr "Geleidelijke luchtlaagovergang" #: src/advanced.cxx:1111 msgid "Smooth" msgstr "Geleidelijk" #: src/advanced.cxx:794 msgid "Sound" msgstr "Geluid" #: src/advanced.cxx:1871 msgid "Span (m):" msgstr "Breedte (m):" #: src/advanced.cxx:1158 msgid "Specify visibilty in meters" msgstr "Geef zichtafstand op in meters" #: src/advanced.cxx:1165 msgid "Specify visiblity in miles" msgstr "Geef zichtafstand op in mijlen" #: src/advanced.cxx:837 src/wizard.cxx:794 msgid "Specular highlight" msgstr "Glimmende weerspiegelingen" #: src/advanced.cxx:1799 msgid "Speed (kts):" msgstr "" "Snelheid \n" "(knopen) :" #: src/advanced.cxx:921 msgid "Speed:" msgstr "Snelheid:" #: src/advanced.cxx:766 msgid "Splash Screen" msgstr "Splash screen" #: src/advanced.cxx:932 msgid "Start at ground level" msgstr "Start op grondniveau" # betere suggesties welkom #: src/advanced.cxx:1239 msgid "Start date gmt" msgstr "Startdatum in GMT" #: src/advanced.cxx:1245 msgid "Start date lat" msgstr "Startdatum in breedtegraad" #: src/advanced.cxx:1233 msgid "Start date sys" msgstr "Systeemstartdatum" #: src/advanced.cxx:939 msgid "Start in the air" msgstr "Start in de lucht" #: src/advanced.cxx:957 msgid "Start paused" msgstr "Start gepauseerd" #: src/wizard.cxx:690 msgid "Status :" msgstr "" #: src/advanced.cxx:1227 msgid "Synchronize simulation time with local time" msgstr "Tijd in de simulatie synchroniseren met de lokale tijd" #: src/advanced.cxx:1219 msgid "Synchronize simulation time with real time" msgstr "Tijd in de simulatie synchroniseren met de echte tijd" #: src/Fl_OSG.cxx:193 #, fuzzy msgid "Systems : " msgstr "systeem" #: src/advanced.cxx:1507 msgid "TCP" msgstr "" #: src/wizard.cxx:910 msgid "TerraSync" msgstr "" #: src/wizard.cxx:575 msgid "TerraSync directory" msgstr "TerraSync map" #: src/wizard_funcs.cxx:1799 msgid "TerraSync directory not set" msgstr "De TerraSync map is niet ingesteld" #: src/wizard_funcs.cxx:1808 msgid "TerraSync executable not set" msgstr "Het TerraSync programma is niet ingesteld" #: src/wizard_funcs.cxx:2779 msgid "TerraSync must be configured" msgstr "TerraSync moet ingesteld worden" #: src/wizard.cxx:625 msgid "Terrasync exe:" msgstr "TerraSync programma" #: src/advanced.cxx:1198 msgid "Texture filtering:" msgstr "Textureren filteren:" #: src/advanced.cxx:1097 msgid "Textures" msgstr "Texturen" #: src/advanced.cxx:1858 msgid "Thickness (ft):" msgstr "Dikte (voet):" # suggesties welkom #: src/advanced.cxx:1213 src/advanced_funcs.cxx:220 msgid "Time" msgstr "Tijd" #: src/advanced.cxx:1226 msgid "Time match local" msgstr "Lokale tijd gebruiken" #: src/advanced.cxx:1218 msgid "Time match real" msgstr "Echte tijd gebruiken" #: src/advanced.cxx:1279 msgid "Time of day" msgstr "Tijd van de dag" #: src/wizard.cxx:852 msgid "Time of day :" msgstr "Tijd van de dag:" #: src/wizard.cxx:1040 msgid "To change aircraft, exit FlightGear and return to this launcher" msgstr "" "Om van vliegtuig te wisselen, stop FlightGear en keer terug naar deze wizard" #: src/wizard.cxx:799 msgid "Too much framerate hurts the smoothness of the simulation" msgstr "Te hoge framerates beinvloeden het soepel lopen van de simulatie" #: src/advanced.cxx:1671 msgid "Trace Read Properties" msgstr "" #: src/advanced.cxx:1704 msgid "Trace Write Properties" msgstr "" #: src/advanced.cxx:1879 msgid "Transition (ft):" msgstr "Overgang (voet):" #: src/advanced.cxx:1813 msgid "Turbulence" msgstr "Turbulentie" # geen vertaling nodig -- protocol #: src/advanced.cxx:1514 msgid "UDP" msgstr "" #: src/wizard_funcs.cxx:1323 #, c-format msgid "" "Unable to delete '%s':\n" "%s" msgstr "" "Niet in staat om '%s' te verwijderen:\n" "%s" #: src/wizard_funcs.cxx:1234 src/wizard_funcs.cxx:1235 #: src/wizard_funcs.cxx:1237 msgid "Unknown" msgstr "Onbekend" #: src/wizard_funcs.cxx:2773 #, c-format msgid "Unknown airport : '%s'" msgstr "Onbekend vliegveld : '%s'" #: src/wizard.cxx:790 msgid "Use with caution. It may drop your framerate dramatically" msgstr "Let op: deze functie kan uw framerates dramatisch beïnvloeden" #: src/advanced.cxx:1036 msgid "VOR:" msgstr "" #: src/advanced.cxx:1679 src/advanced.cxx:1712 src/advanced.cxx:1761 msgid "Value:" msgstr "Waarde:" #: src/advanced.cxx:1172 msgid "View Offset:" msgstr "" #: src/wizard.cxx:695 msgid "Viewer" msgstr "" #: src/advanced.cxx:1150 msgid "Visibility:" msgstr "Zicht:" #: src/wizard.cxx:1058 msgid "We are sorry for this inconvenience." msgstr "Onze excuses voor het ongemak." #: src/advanced.cxx:1770 src/advanced_funcs.cxx:227 msgid "Weather" msgstr "Weer" #: src/advanced.cxx:1778 msgid "Wind Direction" msgstr "Windrichting" #: src/advanced.cxx:1800 msgid "Wind speed (kts)" msgstr "Windsnelheid (knopen)" #: src/advanced.cxx:1146 src/wizard.cxx:769 msgid "Window geometry, WxH" msgstr "Resolutie, BxH" # betere suggesties welkom #: src/advanced.cxx:1103 msgid "Wireframe" msgstr "Draadframe" # betere suggesties welkom -- preferences vertalen? #: src/advanced_funcs.cxx:294 msgid "XML Files(*.xml)" msgstr "XML Bestanden (*.xml)" #: src/wizard_funcs.cxx:86 src/advanced_funcs.cxx:110 #, fuzzy msgid "afternoon" msgstr "middag" #: src/advanced_funcs.cxx:122 msgid "alert" msgstr "ernstige waarschuwing" # geen vertaling nodig -- zelfde in NL #: src/wizard_funcs.cxx:107 msgid "alpha" msgstr "" #: src/wizard_funcs.cxx:106 msgid "beta" msgstr "" #: src/wizard.cxx:816 msgid "bpp :" msgstr "" # suggesties welkom #: src/advanced.cxx:1176 msgid "bpp:" msgstr "" #: src/advanced_funcs.cxx:128 msgid "broken" msgstr "gedeeltelijk bewolkt" #: src/advanced_funcs.cxx:118 msgid "bulk" msgstr "massa" #: src/advanced.cxx:1814 msgid "calm (0.0) to severe (1.0)" msgstr "rustig (0.0) tot hevig (1.0)" #: src/advanced.cxx:1285 msgid "choice:" msgstr "keus:" #: src/advanced_funcs.cxx:131 msgid "cirrus" msgstr "schapenwolkjes" # betere suggesties welkom #: src/advanced_funcs.cxx:132 msgid "clear" msgstr "wolkenvrij" #: src/wizard_funcs.cxx:83 src/advanced_funcs.cxx:107 msgid "dawn" msgstr "ochtend" # betere suggesties welkom #: src/advanced_funcs.cxx:119 msgid "debug" msgstr "" #: src/wizard_funcs.cxx:112 msgid "devel" msgstr "in ontwikkeling" #: src/wizard_funcs.cxx:110 msgid "developement" msgstr "in ontwikkeling" #: src/wizard_funcs.cxx:111 msgid "development" msgstr "in ontwikkeling" #: src/wizard_funcs.cxx:87 src/advanced_funcs.cxx:111 msgid "dusk" msgstr "schemering" # geen vertaling nodig -- zelfde in NL #: src/wizard_funcs.cxx:108 msgid "early alpha" msgstr "vroege alpha" #: src/wizard_funcs.cxx:104 msgid "early production" msgstr "vroege productie" #: src/wizard_funcs.cxx:103 msgid "early-production" msgstr "vroege-productie" #: src/wizard_funcs.cxx:88 src/advanced_funcs.cxx:112 #, fuzzy msgid "evening" msgstr "avond" #: src/wizard_funcs.cxx:114 msgid "experimental" msgstr "experimenteel" #: src/advanced_funcs.cxx:130 msgid "few" msgstr "weinig" #: src/AirportBrowser.cxx:571 msgid "gzopen error" msgstr "" #: src/advanced_funcs.cxx:148 msgid "highest filtering" msgstr "hoogste filtering" #: src/advanced.cxx:1301 msgid "httpd" msgstr "" # suggesties welkom #: src/wizard.cxx:964 msgid "in :" msgstr "" # geen vertaling nodig -- niet goed te vertalen #: src/advanced_funcs.cxx:120 msgid "info" msgstr "" # geen vertaling nodig -- niet goed te vertalen #: src/advanced.cxx:1360 msgid "in|out,hz,address,port" msgstr "in|uit,Hz,adres,poort" #: src/advanced_funcs.cxx:137 msgid "joystick" msgstr "" #: src/advanced.cxx:1334 msgid "jpg-httpd" msgstr "" # geen vertaling nodig -- zelfde in NL #: src/advanced_funcs.cxx:138 msgid "keyboard" msgstr "toetsenbord" #: src/wizard_funcs.cxx:89 src/advanced_funcs.cxx:113 msgid "midnight" msgstr "middernacht" #: src/wizard_funcs.cxx:84 src/advanced_funcs.cxx:108 msgid "morning" msgstr "ochtend" #: src/advanced_funcs.cxx:139 msgid "mouse" msgstr "muis" #: src/advanced_funcs.cxx:144 msgid "no filtering" msgstr "geen filtering" #: src/wizard_funcs.cxx:85 src/advanced_funcs.cxx:109 msgid "noon" msgstr "middag" # suggesties welkom #: src/advanced.cxx:1052 msgid "offset azimuth:" msgstr "Azimut :" # geen vertaling nodig -- afkorting #: src/advanced.cxx:1048 msgid "offset distance:" msgstr "Afstand:" #: src/wizard.cxx:968 msgid "out :" msgstr "uit :" #: src/advanced_funcs.cxx:127 msgid "overcast" msgstr "geheel bewolkt" # Betere suggesties welkom #: src/advanced.cxx:847 msgid "pitot" msgstr "" #: src/wizard_funcs.cxx:102 msgid "production" msgstr "productie" # geen vertaling nodig -- niet goed te vertalen #: src/advanced.cxx:1634 msgid "prop=value" msgstr "prop=waarde" # Geen vertaling nodig -- protocol #: src/advanced.cxx:1318 msgid "props" msgstr "" #: src/wizard.cxx:503 src/wizard.cxx:510 msgid "root data path" msgstr "$FG_ROOT pad" #: src/advanced_funcs.cxx:129 msgid "scattered" msgstr "hier een daar een wolk" # suggesties welkom #: src/advanced.cxx:852 msgid "static" msgstr "statisch" #: src/wizard_funcs.cxx:94 msgid "summer" msgstr "zomer" #: src/advanced.cxx:857 msgid "system" msgstr "systeem" #: src/advanced.cxx:1001 msgid "uBody:" msgstr "" # suggesties welkom #: src/advanced.cxx:1005 msgid "vBody:" msgstr "" #: src/advanced.cxx:862 msgid "vacuum" msgstr "vacuüm" # suggesties welkom #: src/advanced.cxx:1009 msgid "wBody" msgstr "" # geen vertaling nodig -- zelfde in NL #: src/advanced_funcs.cxx:121 msgid "warn" msgstr "waarschuwing" #: src/wizard_funcs.cxx:95 msgid "winter" msgstr "winter" #~ msgid "Not ready for Rembrandt" #~ msgstr "Niet gereed voor Rembrandt" #~ msgid "Ready for Rembrandt" #~ msgstr "Gereed voor Rembrandt" # Geen vertaling nodig -- fdm #~ msgid "network" #~ msgstr "netwerk" fg-fgrun/po/pl.po000066400000000000000000001120631245722473500142000ustar00rootroot00000000000000# Polish translations for fgrun package. # Copyright (C) 2008 Frederic Bouvier # This file is distributed under the same license as the fgrun package. # Michal Stawski i Pawel Fronczyk , 2010. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-03 02:20+0200\n" "PO-Revision-Date: 2008-12-15 22:12+0100\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: src/logwin.cxx:34 msgid "&Close" msgstr "Zamknij" #: src/logwin.cxx:32 msgid "&File" msgstr "Plik" #: src/logwin.cxx:33 msgid "&Save" msgstr "Zapisz" #: src/advanced.cxx:715 src/advanced.cxx:724 src/advanced.cxx:1467 msgid "..." msgstr "..." #: src/advanced_funcs.cxx:145 msgid "2.0" msgstr "2.0" #: src/advanced.cxx:1081 src/wizard.cxx:812 msgid "3D Clouds" msgstr "Chmury 3D" #: src/wizard.cxx:643 #, fuzzy msgid "3D Preview" msgstr "Podglad" #: src/advanced_funcs.cxx:146 msgid "4.0" msgstr "4.0" #: src/advanced_funcs.cxx:147 msgid "8.0" msgstr "8.0" #: src/wizard.cxx:942 msgid ":" msgstr ":" #: src/wizard_funcs.cxx:889 src/wizard_funcs.cxx:2449 #: src/AirportBrowser.cxx:470 src/fgfsrc.cxx:101 msgid "" msgstr "" #: src/wizard_funcs.cxx:225 #, c-format msgid "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

This program is released under the " "GNU General Public License (http://www.gnu.org/copyleft/gpl.html).

" "

Report bugs to http://sourceforge.net/projects/fgrun

" msgstr "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

Program rozpowszechniany na " "zasadach licencji GNU General Public License (http://www.gnu.org/copyleft/" "gpl.html).

Poinformuj o bledach na: http://sourceforge.net/projects/" "fgrun

" #: src/wizard.cxx:599 msgid "@2>" msgstr "@2>" #: src/wizard.cxx:588 msgid "@8>" msgstr "@8>" #: src/advanced.cxx:1568 msgid "ADF:" msgstr "ADF" #: src/advanced.cxx:867 #, fuzzy msgid "AI Models" msgstr "Inne samoloty" # pompy prozniowej???!!!! #: src/advanced.cxx:873 src/wizard.cxx:848 msgid "AI Traffic" msgstr "Sztuczny ruch" #: src/wizard.cxx:844 msgid "AI models" msgstr "Inne samoloty" #: src/wizard_funcs.cxx:977 src/fgfsrc.cxx:61 msgid "Abort" msgstr "Anuluj" #: src/fgfsrc.cxx:61 #, c-format msgid "About to overwrite %s." msgstr "Nadpisac %s" #: src/wizard_funcs.cxx:977 msgid "About to reset current parameters" msgstr "Zresetowac aktualne ustawienia" #: src/wizard.cxx:562 msgid "Add a scenery directory" msgstr "Dodaj katalog zawierajacy scenerie" #: src/wizard.cxx:533 #, fuzzy msgid "Add an aircraft directory" msgstr "Dodaj katalog zawierajacy scenerie" #: src/wizard.cxx:532 src/wizard.cxx:561 msgid "Add..." msgstr "Dodaj..." #: src/advanced.cxx:672 msgid "Advanced Options" msgstr "Zaawans..." #: src/wizard.cxx:747 msgid "Advanced..." msgstr "Zaawansowane..." #: src/wizard.cxx:523 #, fuzzy msgid "Aircraft directories" msgstr "Katalogi scenerii" #: src/advanced.cxx:748 msgid "Aircraft:" msgstr "Samolot:" #: src/wizard.cxx:1097 msgid "Airport to fetch : " msgstr "Lotnisko do pobrania" #: src/advanced.cxx:740 msgid "Airport:" msgstr "Lotnisko:" #: src/wizard.cxx:620 msgid "Airports Cache:" msgstr "Lista lotnisk:" #: src/advanced.cxx:995 msgid "Airspeed:" msgstr "Predkosc" #: src/wizard.fl msgid "All airports" msgstr "" #: src/advanced.cxx:989 msgid "Altitude:" msgstr "Wysokosc" #: src/wizard.cxx:1068 msgid "An error report has been generated in the file below :" msgstr "Wygenerowano raport o bledzie do pliku ponizej :" #: src/advanced.cxx:806 msgid "Anti-alias HUD" msgstr "HUD z antyaliasingiem" #: src/wizard.cxx:931 msgid "Atlas" msgstr "Atlas" # sprawdz #: src/wizard.cxx:692 msgid "Author(s) :" msgstr "Autorzy:" #: src/advanced.cxx:812 src/wizard.cxx:864 msgid "Auto-coordination" msgstr "Autokoordynacja" #: src/wizard.cxx:659 #, fuzzy msgid "Available aircraft :" msgstr "Samolot:" # standardowy?? #: src/advanced.cxx:1554 src/advanced_funcs.cxx:223 msgid "Avionics" msgstr "Awionika" #: src/advanced.cxx:1481 msgid "Baud Rate:" msgstr "Predkosc (w bodach)" #: src/advanced.cxx:711 msgid "Browser:" msgstr "Przegladarka:" #: src/wizard.cxx:954 msgid "Callsign :" msgstr "Callsign :" #: src/advanced.cxx:1355 msgid "Callsign:" msgstr "Callsign" #: src/advanced.cxx:685 src/wizard.cxx:1085 msgid "Cancel" msgstr "Anuluj" #: src/wizard.cxx:725 msgid "Carrier : " msgstr "Lotniskowiec:" # miejsce startu, lotnisko #: src/wizard.cxx:721 msgid "Carrier Ops" msgstr "Opcje lotniskowca" #: src/advanced.cxx:1819 msgid "Ceiling:" msgstr "Pulap:" #: src/wizard.cxx:1007 msgid "" "Clear all selected options and return to the install situation. Useful if " "FGFS don't start anymore." msgstr "" "Wyczysc ustawienia i przywroc sytuacje po instalacji. Kliknij jesli FGFS nie " "dziala." #: src/wizard.cxx:615 msgid "Clear the content of the airport cache" msgstr "Wyczysc liste lotnisk" # Allows specifying the flight path angle (can be positive). jak mozecie pokmincie #: src/advanced.cxx:1060 msgid "Climb rate:" msgstr "Predkosc wznoszenia" #: src/advanced.cxx:965 msgid "Clock Freeze" msgstr "Zatrzymaj czas" # jak wolicie moze byc renderowanie #: src/advanced.cxx:1075 src/advanced.cxx:1833 src/advanced_funcs.cxx:228 msgid "Clouds" msgstr "Chmury" #: src/Fl_OSG.cxx:188 msgid "Cockpit : " msgstr "" #: src/advanced.cxx:1177 src/wizard.cxx:817 msgid "Color depth (bits per pixel)" msgstr "Glebia kolorow (bitow na piksel)" #: src/advanced.cxx:719 msgid "Config:" msgstr "Plik konf:" # nie wiem czy dobrym pomyslem jest wprowadzenie skrotu MDL, choc juz pojawial sie on w tlumaczeniu dokumentacji dokonanym chyba przez Michala Maciejewskiego #: src/advanced.cxx:892 msgid "Core Flight Dynamics Model" msgstr "Model dynamiki lotu" #: src/advanced.cxx:1865 msgid "Coverage:" msgstr "Pokrycie:" #: src/wizard.cxx:894 msgid "Ctrl-click to deselect a single item" msgstr "" #: src/wizard.cxx:886 msgid "Ctrl-click to select or deselect a single item" msgstr "" # co to moze znaczyc? i do czego sluzyc? #: src/advanced.cxx:1601 msgid "DME:" msgstr "DME" #: src/advanced.cxx:1650 src/advanced_funcs.cxx:225 msgid "Debugging" msgstr "Odpluskwianie" # czy nowy? #: src/advanced.cxx:1400 src/advanced.cxx:1628 src/advanced.cxx:1691 #: src/advanced.cxx:1724 src/advanced.cxx:1756 src/wizard.cxx:537 #: src/wizard.cxx:566 src/wizard.cxx:614 msgid "Delete" msgstr "Usun" #: src/wizard.cxx:567 msgid "Delete a scenery directory" msgstr "Usun katalog scenerii" #: src/wizard.cxx:538 #, fuzzy msgid "Delete an aircraft directory" msgstr "Usun katalog scenerii" #: src/wizard_funcs.cxx:1752 msgid "Description of " msgstr "Opis" #: src/wizard.cxx:893 msgid "Deselect all" msgstr "Odznacz wszystko" #: src/wizard_funcs.cxx:109 msgid "Development" msgstr "Rozwoj" #: src/advanced.cxx:1792 msgid "Direction wind is coming from." msgstr "Kierunek, z ktorego wieje wiatr" # src/advanced.cxx:1336 #forma, srodek, jak to nazwac?! #: src/advanced.cxx:1435 msgid "Direction:" msgstr "Kierunek" #: src/advanced.cxx:1127 msgid "Disabled" msgstr "Wylaczone" #: src/wizard.cxx:764 msgid "Display" msgstr "Wyswietlanie" #: src/wizard.fl msgid "Display all airports" msgstr "" #: src/wizard.fl msgid "Display only installed airports" msgstr "" #: src/advanced.cxx:767 msgid "Display splash screen at startup" msgstr "Wyswietl ekran powitalny podczas uruchamiania" #: src/advanced.cxx:827 msgid "Distance attenuation" msgstr "Rozmycie swiatel" # to rowniez z getstart #: src/advanced.cxx:907 msgid "Do not attempt to trim the model" msgstr "Nie wywazaj JSBsim podczas uruchamiania" #: src/wizard_funcs.cxx:2685 msgid "Don't overwrite" msgstr "Nie nadpisuj" #: src/wizard_funcs.cxx:113 msgid "Early development" msgstr "Wczesny rozwoj" #: src/wizard_funcs.cxx:105 msgid "Early production" msgstr "Wczesny rozwoj" #: src/advanced.cxx:1851 msgid "Elevation(ft):" msgstr "Wysokosc (stopy):" #: src/advanced.cxx:1076 msgid "Enable 2D (flat) cloud layers" msgstr "Wlacz chmury 2D (plaskie)" #: src/advanced.cxx:1082 msgid "Enable 3D (volumetric) cloud layers" msgstr "Wlacz chmury 3D" #: src/advanced.cxx:833 msgid "Enable 3D HUD" msgstr "Wlacz HUD 3D" # co wy o tym myslicie? #: src/advanced.cxx:868 msgid "Enable AI traffic" msgstr "Wlacz sztuczny ruch (AI)" #: src/advanced.cxx:1302 msgid "Enable HTTP server" msgstr "Wlacz serwer HTTP" #: src/advanced.cxx:801 msgid "Enable Heads Up Display" msgstr "Wlacz wyswietlacz przezierny" #: src/advanced.cxx:807 msgid "Enable anti-aliased HUD" msgstr "Wlacz HUD z antyaliasingiem" #: src/advanced.cxx:813 msgid "Enable auto-coordinated turns." msgstr "Wlacz autokoordynacje podczas skretu" #: src/advanced.cxx:818 msgid "Enable celestial body growth illusion near the horizon" msgstr "" "Wlacz zludzenie optyczne powiekszania sie cial niebieskich tuz nad horyzontem" #: src/advanced.cxx:823 msgid "Enable enhanced runway lighting" msgstr "Wlacz wzmacnianie oswietlenia pasa startowego" #: src/advanced.cxx:779 msgid "Enable extra mouse pointer" msgstr "Pokaz dodatkowy wskaznik myszy" #: src/advanced.cxx:762 msgid "Enable full screen game mode" msgstr "Uruchom tryb pelnoekranowy" #: src/advanced.cxx:1087 msgid "Enable full screen mode" msgstr "Wlacz tryb pelnoekranowy" #: src/advanced.cxx:773 msgid "Enable introduction music during start up" msgstr "Odtwarzaj muzyke intro podczas uruchamiania" #: src/advanced.cxx:1319 msgid "Enable property server" msgstr "Wlacz serwer wlasnosci" #: src/advanced.cxx:784 msgid "Enable random scenery objects" msgstr "Wlacz losowe obiekty scenerii" #: src/advanced.cxx:828 msgid "Enable runway light distance attenuation" msgstr "Wlacz rozmycie oswietlenia pasa startowego w oddali" #: src/advanced.cxx:1335 msgid "Enable screen shot HTTP server" msgstr "Uruchom serwer HTTP screenshotow" # chodzi o to ze jak to sie odznaczy niebo jest cale w jednym kolorze (jeden odcien niebieskiego) #: src/advanced.cxx:1092 msgid "Enable sky blending" msgstr "Wlacz mieszanie odcieni nieba" #: src/advanced.cxx:795 msgid "Enable sound effects" msgstr "Wlacz efekty dzwiekowe" #: src/advanced.cxx:838 msgid "Enable specular reflections on textured objects" msgstr "Wlacz blyszczenie teksturowanych obiektow" #: src/advanced.cxx:789 msgid "Enable the instrument panel" msgstr "Wlacz panel przyrzadow" #: src/advanced.cxx:1104 msgid "Enable wireframe drawing mode" msgstr "Wlacz tryb wyswietlania siatki" #: src/advanced.cxx:822 msgid "Enhanced lighting" msgstr "Wzmacnianie swiatel" #: src/wizard.cxx:789 msgid "Enhanced runway lighting" msgstr "Wzmacnianie oswietlenia pasa start. " #: src/advanced.cxx:1738 src/advanced_funcs.cxx:226 msgid "Environment" msgstr "Srodowisko" #: src/wizard.cxx:498 msgid "Executable path not set or invalid" msgstr "" #: src/advanced.cxx:728 src/wizard.cxx:484 msgid "Executable:" msgstr "Plik wykonywalny:" #: src/Fl_OSG.cxx:198 #, fuzzy msgid "FDM : " msgstr "MDL" #: src/advanced.cxx:891 msgid "FDM:" msgstr "MDL" #: src/advanced.cxx:1466 msgid "FGCom built-in" msgstr "FGCom built-in" #: src/advanced.cxx:1472 msgid "FGCom standalone" msgstr "FGCom standalone" #: src/wizard.cxx:522 msgid "FG_AIRCRAFT:" msgstr "" #: src/wizard.cxx:516 msgid "FG_ROOT path invalid or not set" msgstr "" #: src/advanced.cxx:732 src/wizard.cxx:502 msgid "FG_ROOT:" msgstr "FG_ROOT:" #: src/wizard.cxx:610 #, fuzzy msgid "FG_SCENERY empty" msgstr "FG_SCENERY:" #: src/advanced.cxx:736 src/wizard.cxx:551 msgid "FG_SCENERY:" msgstr "FG_SCENERY:" #: src/advanced.cxx:1190 msgid "FOV:" msgstr "Pole widzenia:" #: src/advanced.cxx:1820 msgid "FT_ASL[:THICKNESS_FT]" msgstr "wysokosc[:grubosc]" #: src/advanced.cxx:842 msgid "Failures" msgstr "Awarie" #: src/advanced.cxx:1132 msgid "Fastest" msgstr "Najszybciej" #: src/advanced.cxx:757 src/wizard.cxx:832 src/advanced_funcs.cxx:215 msgid "Features" msgstr "Opcje" #: src/advanced.cxx:1824 msgid "Fetch real weather" msgstr "Pobierz informacje o pogodzie" #: src/advanced.cxx:1191 msgid "Field of View angle" msgstr "Pole widzenia w stopniach" #: src/advanced.cxx:1461 msgid "File:" msgstr "Plik" #: src/wizard_funcs.cxx:2685 #, c-format msgid "Filename \"%s\" already exists." msgstr "Plik \"%s\" juz istnieje." #: src/advanced.cxx:1044 msgid "Fix:" msgstr "Pozycja:" #: src/advanced.cxx:1117 msgid "Flat" msgstr "Plaskie" #: src/advanced.cxx:886 src/advanced_funcs.cxx:216 msgid "Flight Model" msgstr "Model lotu" #: src/wizard.cxx:474 msgid "FlightGear Wizard" msgstr "FlightGear Wizard" #: src/wizard.cxx:1032 msgid "FlightGear has been started" msgstr "Uruchomiono FlightGear" #: src/wizard.cxx:1029 msgid "FlightGear running..." msgstr "FlightGear pracuje..." # jak to nazwac # ############################################ # ############### #: src/wizard.cxx:1052 msgid "Flightgear crashed..." msgstr "Blad FLightGear..." #: src/wizard.cxx:1054 msgid "Flightgear encountered an unexpected failure" msgstr "FlightGear napotkalo niespodziewany blad." #: src/advanced.cxx:1124 msgid "Fog" msgstr "Mgla" #: src/wizard.cxx:798 msgid "Framerate limiter :" msgstr "Ograniczenie fps:" #: src/advanced.cxx:951 src/advanced.cxx:956 src/advanced_funcs.cxx:217 msgid "Freeze" msgstr "Zatrzymanie" #: src/advanced.cxx:961 msgid "Fuel Freeze" msgstr "Zatrzymaj poziom paliwa" #: src/advanced.cxx:1086 src/wizard.cxx:781 msgid "Full Screen" msgstr "Pelny ekran" #: src/wizard.cxx:621 msgid "Full path to the airport cache" msgstr "Pelna sciezka do listy lotnisk" #: src/wizard.cxx:485 src/wizard.cxx:492 msgid "Full pathname to FlightGear executable" msgstr "Pelna sciezka dostepu do pliku wykonywalnego FlightGear" #: src/wizard.cxx:626 src/wizard.cxx:633 msgid "Full pathname to Terrasync executable" msgstr "Sciezka do pliku wykonywalnego TerraSync" # albo wlasciwosci, #: src/advanced.cxx:761 msgid "Game Mode" msgstr "Pelny ekran" #: src/advanced.cxx:696 src/advanced_funcs.cxx:214 msgid "General" msgstr "Ogolne" #: src/advanced.cxx:1524 msgid "Generic:" msgstr "Standardowy:" #: src/advanced.cxx:1145 msgid "Geometry:" msgstr "Rozdzielczosc:" # wymaga dopracowania #: src/advanced.cxx:1056 msgid "Glide slope:" msgstr "Sciezka schodzenia" #: src/advanced.cxx:1308 msgid "HTTP server port" msgstr "Port serwera HTTP" #: src/advanced.cxx:800 msgid "HUD" msgstr "HUD" #: src/advanced.cxx:1013 src/advanced.cxx:1791 msgid "Heading:" msgstr "Kurs:" #: src/advanced.cxx:817 src/wizard.cxx:785 msgid "Horizon effect" msgstr "Efekt horyzontu" #: src/wizard.cxx:937 msgid "Hostname" msgstr "Host" #: src/wizard.cxx:936 src/wizard.cxx:958 msgid "Hostname :" msgstr "Host:" #: src/advanced.cxx:1492 msgid "Hostname:" msgstr "Host:" #: src/advanced.cxx:832 msgid "Hud-3D" msgstr "HUD-3D" #: src/advanced.cxx:1450 msgid "Hz:" msgstr "Hz:" #: src/AirportTable.cxx:121 msgid "ICAO Id" msgstr "ICAO Id" #: src/advanced.cxx:938 msgid "In Air" msgstr "W powietrzu" #: src/advanced.cxx:974 src/advanced_funcs.cxx:218 msgid "Initial Position" msgstr "Pozycja poczatkowa" #: src/advanced.cxx:1014 msgid "Initial aircraft heading (yaw) angle 0 to 360 degrees" msgstr "Poczatkowy kurs; 0 do 360 stopni" #: src/advanced.cxx:996 msgid "Initial airspeed in knots" msgstr "Predkosc poczatkowa w wezlach" #: src/advanced.cxx:990 msgid "Initial altitude in feet" msgstr "Wysokosc poczatkowa w stopach" #: src/advanced.cxx:985 msgid "Initial latitude, south is negative" msgstr "" "Poczatkowa szerokosc geograficzna, dla szerokosci poludniowych wartosci " "ujemne" #: src/advanced.cxx:980 msgid "Initial longitude, west is negative" msgstr "" "Poczatkowa dlugosc geograficzna, dla dlugosci zachodnich wartosci ujemne" #: src/advanced.cxx:1029 msgid "Initial pitch angle (Theta)" msgstr "Podaj kat pochylenia (Theta)" #: src/advanced.cxx:1021 msgid "Initial roll angle, (Phi)" msgstr "Podaj kat przechylu (Phi)" #: src/advanced.cxx:1151 msgid "Initial visibility distance" msgstr "Widocznosc przy starcie" #: src/wizard.cxx:965 msgid "Input port number" msgstr "Numer portu wejsciowego" #: src/advanced.cxx:1382 src/advanced_funcs.cxx:222 msgid "Input/Output" msgstr "Wejscie/Wyjscie" #: src/wizard.fl msgid "Installed airports" msgstr "" #: src/advanced.cxx:1588 msgid "Internal" msgstr "Wewnetrzny" #: src/advanced.cxx:772 msgid "Intro Music" msgstr "Muzyka intro" #: src/advanced.cxx:707 msgid "Language:" msgstr "Jezyk:" #: src/advanced.cxx:984 msgid "Latitude:" msgstr "Szer. geo." #: src/advanced.cxx:1837 msgid "Layer:" msgstr "Warstwa:" #: src/wizard.cxx:1017 msgid "Load" msgstr "Wczytaj" #: src/wizard.cxx:1018 msgid "Load a previously saved configuration" msgstr "Wczytaj ustawienia z pliku" #: src/wizard_funcs.cxx:2590 msgid "Load settings from..." msgstr "Wczytaj ustawienia z..." #: src/wizard.cxx:698 #, fuzzy msgid "Location :" msgstr "Rozdzielczosc:" # jak wolicie debugowanie #: src/advanced.cxx:1656 msgid "Log Level:" msgstr "Czulosc" #: src/wizard_funcs.cxx:469 msgid "Log Window" msgstr "Okno logow" #: src/advanced.cxx:979 msgid "Longitude:" msgstr "Dl. geo." #: src/advanced.cxx:1207 msgid "Materials file:" msgstr "" #: src/advanced.cxx:1419 msgid "Medium:" msgstr "Nosnik:" #: src/wizard.cxx:875 msgid "Menu auto-visibility" msgstr "" #: src/advanced.cxx:1157 msgid "Meters" msgstr "Metry" #: src/advanced.cxx:1164 msgid "Miles" msgstr "Mile" #: src/Fl_OSG.cxx:183 #, fuzzy msgid "Model : " msgstr "Czestotliwosc (Hz)" #: src/advanced.cxx:912 msgid "Model Hz:" msgstr "Czestotliwosc (Hz)" #: src/wizard_funcs.cxx:749 #, c-format msgid "Model not found: '%s'" msgstr "Nie znaleziono modelu: '%s'" #: src/advanced.cxx:778 msgid "Mouse Pointer" msgstr "Wskaznik myszy" #: src/wizard.cxx:600 #, fuzzy msgid "Move scenery directory down" msgstr "Dodaj katalog zawierajacy scenerie" #: src/wizard.cxx:589 #, fuzzy msgid "Move scenery directory up" msgstr "Dodaj katalog zawierajacy scenerie" # nie wiem czy tak zostawic czy zmienic na wywolanie? co wy na to? jaki jest polski odpowiednik? #: src/advanced.cxx:1359 msgid "Multiplay 1:" msgstr "Multiplayer 1:" #: src/advanced.cxx:1364 msgid "Multiplay 2:" msgstr "Multiplayer 2:" #: src/wizard.cxx:949 msgid "Multiplayer" msgstr "Multiplayer" #: src/advanced.cxx:1350 msgid "Multiplayer Options" msgstr "Opcje trybu multiplayer" #: src/advanced.cxx:1040 msgid "NDB:" msgstr "NDB" #: src/AirportTable.cxx:121 msgid "Name" msgstr "Nazwa" #: src/advanced.cxx:1576 msgid "Nav1" msgstr "Nav1" #: src/advanced.cxx:1559 msgid "Nav1:" msgstr "Nav1" #: src/advanced.cxx:1582 msgid "Nav2" msgstr "Nav2" # nie wiem czy tu slowo kierunek pasuje #: src/advanced.cxx:1564 msgid "Nav2:" msgstr "Nav2:" #: src/advanced.cxx:1296 src/advanced_funcs.cxx:221 msgid "Network" msgstr "Siec" #: src/advanced.cxx:1396 src/advanced.cxx:1642 src/advanced.cxx:1687 #: src/advanced.cxx:1720 src/advanced.cxx:1752 msgid "New" msgstr "Nowe" #: src/wizard.cxx:995 src/wizard_funcs.cxx:407 src/wizard_funcs.cxx:958 #: src/wizard_funcs.cxx:1802 src/wizard_funcs.cxx:1811 msgid "Next" msgstr "Dalej" #: src/advanced.cxx:1137 msgid "Nicest" msgstr "Najladniej" #: src/Fl_OSG.cxx:207 #, fuzzy msgid "No Rating" msgstr "Cieniowanie" # nie wiem jak w polskim zastapic core, zaden wyraz nie pasuje #: src/advanced.cxx:906 msgid "No Trim" msgstr "Nie wywazaj" #: src/wizard_funcs.cxx:1755 msgid "Not set" msgstr "" #: src/advanced.cxx:688 src/wizard.cxx:1064 src/wizard.cxx:1089 msgid "OK" msgstr "OK" #: src/advanced.cxx:1252 msgid "Offset (+/-) from real time" msgstr "Przesuniecie (+/-) wzgledem czasu rzeczywistego" #: src/advanced.cxx:931 msgid "On Ground" msgstr "Na ziemi" # tak to sie nazywa? #: src/wizard.cxx:728 msgid "Only valid if carrier is set. For airport parking, use the list above." msgstr "Tylko dla lotniskowca. Dla lotniska wybierz z listy powyzej" #: src/main.cxx:162 #, fuzzy, c-format msgid "" "Options are:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " --version=\n" " -f, --fullscreen\n" "%s" msgstr "" "Dostepne opcje:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " -f, --fullscreen\n" "%s" #: src/wizard.cxx:969 msgid "Output port number" msgstr "Numer portu wyjsciowego" #: src/wizard_funcs.cxx:2685 src/fgfsrc.cxx:61 msgid "Overwrite" msgstr "Nadpisz" #: src/advanced.cxx:788 msgid "Panel" msgstr "Panel" #: src/wizard.cxx:727 msgid "Park pos :" msgstr "Pozycja parkingowa:" #: src/AirportBrowser.cxx:89 msgid "Parking" msgstr "Parking" #: src/advanced.cxx:720 msgid "Path to additional XML properties file" msgstr "Sciezka do dodatkowego pliku konfiguracyjnego XML" # znak wywolawczy? jak myslicie #: src/wizard.cxx:959 msgid "Peer hostname" msgstr "Nazwa lub adres hosta" #: src/advanced.cxx:1028 msgid "Pitch:" msgstr "Pochylenie" #: src/wizard.cxx:1072 msgid "Please send this error report to the Flightgear development team" msgstr "" "Prosimy o wyslanie tego raportu o bledzie do zespolu tworzacego FlightGear" #: src/wizard.cxx:1037 msgid "Please wait..." msgstr "Prosze czekac..." #: src/advanced.cxx:1475 src/advanced.cxx:1498 msgid "Port:" msgstr "Port" # nie wiem co to robi!!!!!! #: src/wizard.cxx:1082 msgid "Prefetch Scenery" msgstr "Pobieraj scenerie" #: src/wizard.cxx:991 msgid "Prev" msgstr "Wstecz" #: src/wizard.cxx:670 msgid "Preview" msgstr "Podglad" #: src/advanced.cxx:1612 src/advanced_funcs.cxx:224 msgid "Properties" msgstr "Wlasnosci" #: src/wizard_funcs.cxx:790 msgid "Property '/sim/model/path' not found" msgstr "Nie znaleziono wlasnosci '/sim/model/path'" # serwer atrybutow, wlasnosci? #: src/advanced.cxx:1325 msgid "Property server port" msgstr "Port serwera wlasnosci" # to slowo mi w ogole nie pasuje, nie wiem jak wam #: src/advanced.cxx:1633 msgid "Property:" msgstr "Wlasnosc:" #: src/advanced.cxx:1405 msgid "Protocol:" msgstr "Protokol" #: src/advanced.cxx:1373 msgid "Proxy:" msgstr "Proxy:" #: src/wizard.cxx:999 msgid "Quit" msgstr "Wyjscie" #: src/advanced.cxx:783 msgid "Random Objects" msgstr "Obiekty losowe" #: src/advanced.cxx:877 msgid "Random Trees" msgstr "Losowe drzewa" #: src/advanced.cxx:1806 msgid "Random Winds" msgstr "Losowe wiatry" #: src/wizard.cxx:836 msgid "Random objects" msgstr "Obiekty losowe" #: src/wizard.cxx:840 msgid "Random trees" msgstr "Losowe drzewa" #: src/Fl_OSG.cxx:205 #, fuzzy msgid "Rating" msgstr "Cieniowanie" # Adjust horizontal position of stars #: src/Fl_OSG.cxx:179 msgid "RatingPos" msgstr "80" #: src/wizard.cxx:860 msgid "Real weather fetch" msgstr "Pobierz informacje o pogodzie" #: src/wizard.cxx:651 #, fuzzy msgid "Recently used aircraft :" msgstr "Wybierz samolot" #: src/AirportBrowser.cxx:96 msgid "Refresh" msgstr "Odswiez" #: src/AirportBrowser.cxx:99 msgid "Reload airports" msgstr "Zaladuj ponownie lotniska" #: src/advanced.cxx:1070 src/advanced_funcs.cxx:219 msgid "Rendering" msgstr "Wyswietlanie" #: src/advanced.cxx:1534 #, fuzzy msgid "Repeat" msgstr "Resetuj" #: src/wizard_funcs.cxx:977 msgid "Reset" msgstr "Resetuj" #: src/wizard.cxx:768 msgid "Resolution :" msgstr "Rozdzielczosc:" #: src/wizard.cxx:1006 msgid "Restore default settings" msgstr "Domyslne" #: src/advanced.cxx:1020 msgid "Roll:" msgstr "Przechyl" #: src/wizard_funcs.cxx:950 msgid "Run" msgstr "Uruchom" #: src/advanced.cxx:922 msgid "Run FDM faster than real time" msgstr "Uruchom MDL z n-krotna predkoscia" #: src/advanced.cxx:913 msgid "Run the FDM at this rate (iterations per second)" msgstr "Uruchom MDL z podana czestotliwoscia (iteracji na sekunde)" #: src/advanced.cxx:744 msgid "Runway:" msgstr "Pas start.:" #: src/AirportBrowser.cxx:84 msgid "Runways" msgstr "Pasy startowe" #: src/wizard.cxx:1012 msgid "Save As..." msgstr "Zapisz" #: src/wizard.cxx:1013 msgid "Save current configuration to a file" msgstr "Zapisz aktualne ustawienia do pliku" #: src/logwin.cxx:99 msgid "Save file as?" msgstr "Zapisz jako?" #: src/wizard_funcs.cxx:2681 msgid "Save settings as..." msgstr "Zapisz ustawienia" #: src/wizard.cxx:881 msgid "Scenarios" msgstr "Scenariusze" #: src/wizard.cxx:736 msgid "Scenery Prefetch" msgstr "Pobierz scenerie" #: src/wizard.cxx:552 msgid "Scenery directories" msgstr "Katalogi scenerii" #: src/advanced.cxx:1341 msgid "Screen shot HTTP server port" msgstr "Port serwera serwera HTTP screenshotow" #: src/wizard.cxx:868 msgid "Season :" msgstr "Pora roku:" #: src/wizard_funcs.cxx:1347 #, fuzzy msgid "Select FG_AIRCRAFT directory" msgstr "Wskaz katalog glowny FlightGear" #: src/wizard_funcs.cxx:1072 msgid "Select FG_ROOT directory" msgstr "Wskaz katalog glowny FlightGear" #: src/wizard_funcs.cxx:1421 msgid "Select FG_SCENERY directory" msgstr "Wskaz katalog scenerii" #: src/wizard_funcs.cxx:992 msgid "Select FlightGear executable" msgstr "Wskaz plik wykonywalny FlightGear" #: src/wizard.cxx:477 msgid "Select Paths" msgstr "Okresl sciezki dostepu" #: src/wizard_funcs.cxx:1531 msgid "Select Terrasync executable" msgstr "Wybierz plik wykonywalny TerraSync" #: src/wizard.cxx:704 msgid "Select a location" msgstr "Wybierz lokalizacje" #: src/advanced_funcs.cxx:293 msgid "Select a preferences file" msgstr "Wskaz plik preferencji" #: src/wizard_funcs.cxx:1766 src/wizard_funcs.cxx:1770 #: src/wizard_funcs.cxx:2284 msgid "Select a scenario to display its description" msgstr "" #: src/wizard.cxx:640 msgid "Select an aircraft" msgstr "Wybierz samolot" #: src/advanced_funcs.cxx:238 msgid "Select browser" msgstr "Wskaz przegladarke" #: src/io.cxx:301 #, fuzzy msgid "Select file" msgstr "Wskaz plik protokolu" #: src/wizard.cxx:576 #, fuzzy msgid "Select the line in the FG_SCENERY list that is the TerraSync directory." msgstr "Wybierz z listy katalog TerraSync. 0 jesli nie korzystasz z TerraSync" #: src/advanced.cxx:1560 msgid "Set the NAV1 radio frequency, optionally preceded by a radial" msgstr "Ustaw czestotliwosc NAV1, opcjonalnie poprzedzona kirunkiem" #: src/advanced.cxx:1199 msgid "Set the maximum degree of anisotropy in texture filtering" msgstr "Ustaw maksymalny stopien filtrowania anizotropowe" #: src/advanced.cxx:1108 msgid "Shading" msgstr "Cieniowanie" #: src/wizard.cxx:753 msgid "Show command line" msgstr "Wyswietl linie polecen" #: src/advanced.cxx:1091 msgid "Sky Blend" msgstr "Gradient nieba" #: src/advanced.cxx:1111 msgid "Smooth" msgstr "Lagodne" #: src/advanced.cxx:794 msgid "Sound" msgstr "Dzwiek" # zasloniecie,zasieg? #: src/advanced.cxx:1871 msgid "Span (m):" msgstr "Zasieg (m):" #: src/advanced.cxx:1158 msgid "Specify visibilty in meters" msgstr "Okreslanie widocznosci w metrach" #: src/advanced.cxx:1165 msgid "Specify visiblity in miles" msgstr "Okreslanie widocznosci w milach" #: src/advanced.cxx:837 src/wizard.cxx:794 msgid "Specular highlight" msgstr "Refleksy na materialach" #: src/advanced.cxx:1799 msgid "Speed (kts):" msgstr "Predkosc (kt)" #: src/advanced.cxx:921 msgid "Speed:" msgstr "Predkosc:" #: src/advanced.cxx:766 msgid "Splash Screen" msgstr "Ekran powitalny" #: src/advanced.cxx:932 msgid "Start at ground level" msgstr "Rozpocznij na ziemi" #: src/advanced.cxx:1239 msgid "Start date gmt" msgstr "Wzgledem czasu gmt" #: src/advanced.cxx:1245 msgid "Start date lat" msgstr "Wzgledem czasu lokalnego" #: src/advanced.cxx:1233 msgid "Start date sys" msgstr "Czas systemowy" #: src/advanced.cxx:939 msgid "Start in the air" msgstr "Rozpocznij w powietrzu" #: src/advanced.cxx:957 msgid "Start paused" msgstr "Uruchom z pauza" #: src/wizard.cxx:690 msgid "Status :" msgstr "Status:" #: src/advanced.cxx:1227 msgid "Synchronize simulation time with local time" msgstr "Zsynchronizuj czas symulacji z czasem lokalnym" #: src/advanced.cxx:1219 msgid "Synchronize simulation time with real time" msgstr "Synchronizuj czas symulacji z czasem rzeczywistym" #: src/Fl_OSG.cxx:193 #, fuzzy msgid "Systems : " msgstr "elektrycznosc" #: src/advanced.cxx:1507 msgid "TCP" msgstr "TCP" #: src/wizard.cxx:910 msgid "TerraSync" msgstr "TerraSync" #: src/wizard.cxx:575 msgid "TerraSync directory" msgstr "Katalog TerraSync" # # # # # # # # # #: src/wizard_funcs.cxx:1799 msgid "TerraSync directory not set" msgstr "Nie wybrano katalogu TerraSync" #: src/wizard_funcs.cxx:1808 msgid "TerraSync executable not set" msgstr "Nie wybierano pliku wykonywalnego TerraSync" #: src/wizard_funcs.cxx:2779 msgid "TerraSync must be configured" msgstr "TerraSync musi byc skonfigurowany" #: src/wizard.cxx:625 msgid "Terrasync exe:" msgstr "Terrasync exe:" #: src/advanced.cxx:1198 msgid "Texture filtering:" msgstr "Filtrowanie anizotropowe:" #: src/advanced.cxx:1097 msgid "Textures" msgstr "Tekstury" #: src/advanced.cxx:1858 msgid "Thickness (ft):" msgstr "Grubosc (stopy):" #: src/advanced.cxx:1213 src/advanced_funcs.cxx:220 msgid "Time" msgstr "Czas" #: src/advanced.cxx:1226 msgid "Time match local" msgstr "Czas lokalny" #: src/advanced.cxx:1218 msgid "Time match real" msgstr "Czas rzeczywisty" #: src/advanced.cxx:1279 msgid "Time of day" msgstr "Pora dnia" # nie wiem na 100% #: src/wizard.cxx:852 msgid "Time of day :" msgstr "Pora dnia" #: src/wizard.cxx:1040 msgid "To change aircraft, exit FlightGear and return to this launcher" msgstr "Aby zmienic somolot, zamknij FlightGear i powroc do tego okna" #: src/wizard.cxx:799 msgid "Too much framerate hurts the smoothness of the simulation" msgstr "" "Zbyt duza liczba klatek na sekunde negatywnie wplywa na plynnosc symulacji" #: src/advanced.cxx:1671 msgid "Trace Read Properties" msgstr "Rejestruj odczyt wlasnosci" #: src/advanced.cxx:1704 msgid "Trace Write Properties" msgstr "Rejestruj zapis wlasnosci" # nie wiem dokladnie co to robi, moze wy wiecie #: src/advanced.cxx:1879 msgid "Transition (ft):" msgstr "Przemiana (stopy):" # nie podoba mi sie:/ #: src/advanced.cxx:1813 msgid "Turbulence" msgstr "Turbulencje" #: src/advanced.cxx:1514 msgid "UDP" msgstr "UDP" #: src/wizard_funcs.cxx:1323 #, c-format msgid "" "Unable to delete '%s':\n" "%s" msgstr "" "Nie mozna usunac '%s':\n" "%s" #: src/wizard_funcs.cxx:1234 src/wizard_funcs.cxx:1235 #: src/wizard_funcs.cxx:1237 msgid "Unknown" msgstr "Nieznany" # # # # # # # # # #: src/wizard_funcs.cxx:2773 #, c-format msgid "Unknown airport : '%s'" msgstr "Nieznane lotnisko: '%s'" #: src/wizard.cxx:790 msgid "Use with caution. It may drop your framerate dramatically" msgstr "Uzywac ostroznie. Bardzo spowalnia dzialanie symulatora" #: src/advanced.cxx:1036 msgid "VOR:" msgstr "VOR" #: src/advanced.cxx:1679 src/advanced.cxx:1712 src/advanced.cxx:1761 msgid "Value:" msgstr "Wartosc:" #: src/advanced.cxx:1172 msgid "View Offset:" msgstr "Kierunek patrzenia" #: src/wizard.cxx:695 msgid "Viewer" msgstr "" #: src/advanced.cxx:1150 msgid "Visibility:" msgstr "Widocznosc:" #: src/wizard.cxx:1058 msgid "We are sorry for this inconvenience." msgstr "Przepraszamy za niedogodnosci." #: src/advanced.cxx:1770 src/advanced_funcs.cxx:227 msgid "Weather" msgstr "Pogoda" #: src/advanced.cxx:1778 msgid "Wind Direction" msgstr "Kierunek wiatru" #: src/advanced.cxx:1800 msgid "Wind speed (kts)" msgstr "Predkosc wiatru (kt)" #: src/advanced.cxx:1146 src/wizard.cxx:769 msgid "Window geometry, WxH" msgstr "Rozdzielczosc okna, SxW" #: src/advanced.cxx:1103 msgid "Wireframe" msgstr "Siatka" #: src/advanced_funcs.cxx:294 msgid "XML Files(*.xml)" msgstr "Pliki XML (*.xml)" #: src/wizard_funcs.cxx:86 src/advanced_funcs.cxx:110 #, fuzzy msgid "afternoon" msgstr "poludnie" #: src/advanced_funcs.cxx:122 msgid "alert" msgstr "" #: src/wizard_funcs.cxx:107 msgid "alpha" msgstr "alpha" #: src/wizard_funcs.cxx:106 msgid "beta" msgstr "beta" #: src/wizard.cxx:816 msgid "bpp :" msgstr "bpp" # to chyba nie po polsku #: src/advanced.cxx:1176 msgid "bpp:" msgstr "bpp" #: src/advanced_funcs.cxx:128 msgid "broken" msgstr "pochmurno" #: src/advanced_funcs.cxx:118 msgid "bulk" msgstr "" #: src/advanced.cxx:1814 msgid "calm (0.0) to severe (1.0)" msgstr "slabe(0.0), silne (1.0)" #: src/advanced.cxx:1285 msgid "choice:" msgstr "wybor:" #: src/advanced_funcs.cxx:131 msgid "cirrus" msgstr "cirrusy" #: src/advanced_funcs.cxx:132 msgid "clear" msgstr "brak" #: src/wizard_funcs.cxx:83 src/advanced_funcs.cxx:107 msgid "dawn" msgstr "swit" #: src/advanced_funcs.cxx:119 msgid "debug" msgstr "" #: src/wizard_funcs.cxx:112 msgid "devel" msgstr "rozwoj" #: src/wizard_funcs.cxx:110 msgid "developement" msgstr "rozwoj" #: src/wizard_funcs.cxx:111 msgid "development" msgstr "rozwoj" #: src/wizard_funcs.cxx:87 src/advanced_funcs.cxx:111 msgid "dusk" msgstr "zmierzch" #: src/wizard_funcs.cxx:108 msgid "early alpha" msgstr "wczesna wersja alpha" #: src/wizard_funcs.cxx:104 msgid "early production" msgstr "Wczesny rozwoj" #: src/wizard_funcs.cxx:103 msgid "early-production" msgstr "wczesny rozwoj" #: src/wizard_funcs.cxx:88 src/advanced_funcs.cxx:112 #, fuzzy msgid "evening" msgstr "Wyswietlanie" #: src/wizard_funcs.cxx:114 msgid "experimental" msgstr "eksperymentalnie" #: src/advanced_funcs.cxx:130 msgid "few" msgstr "slonecznie" #: src/AirportBrowser.cxx:571 msgid "gzopen error" msgstr "blad gzopen" #: src/advanced_funcs.cxx:148 msgid "highest filtering" msgstr "najwyzsze" #: src/advanced.cxx:1301 msgid "httpd" msgstr "httpd" #: src/wizard.cxx:964 msgid "in :" msgstr "wej:" #: src/advanced_funcs.cxx:120 msgid "info" msgstr "" #: src/advanced.cxx:1360 msgid "in|out,hz,address,port" msgstr "wej|wyj,hz,adres,port" #: src/advanced_funcs.cxx:137 msgid "joystick" msgstr "joystick" #: src/advanced.cxx:1334 msgid "jpg-httpd" msgstr "jpg-httpd" #: src/advanced_funcs.cxx:138 msgid "keyboard" msgstr "klawiatura" #: src/wizard_funcs.cxx:89 src/advanced_funcs.cxx:113 msgid "midnight" msgstr "polnoc" #: src/wizard_funcs.cxx:84 src/advanced_funcs.cxx:108 msgid "morning" msgstr "" #: src/advanced_funcs.cxx:139 msgid "mouse" msgstr "mysz" #: src/advanced_funcs.cxx:144 msgid "no filtering" msgstr "brak" #: src/wizard_funcs.cxx:85 src/advanced_funcs.cxx:109 msgid "noon" msgstr "poludnie" #: src/advanced.cxx:1052 msgid "offset azimuth:" msgstr "azymut polozenia:" # ja mam to pole nieaktywne, doszedlem do tego ze FIX position to "Pozycja obserwowana" a to pole to chyba id FIX'a ale nie pytajcie mnie jak sie z niego korzysta ani do czego sluzy, jak ktos wie bardzo prosze o sugestie #: src/advanced.cxx:1048 msgid "offset distance:" msgstr "polozenie na pasie:" #: src/wizard.cxx:968 msgid "out :" msgstr "wyj:" #: src/advanced_funcs.cxx:127 msgid "overcast" msgstr "calkowite zachmurzenie" #: src/advanced.cxx:847 msgid "pitot" msgstr "pitota" #: src/wizard_funcs.cxx:102 msgid "production" msgstr "W fazie tworzenia" #: src/advanced.cxx:1634 msgid "prop=value" msgstr "wlasnosc=wartosc" #: src/advanced.cxx:1318 msgid "props" msgstr "props" #: src/wizard.cxx:503 src/wizard.cxx:510 msgid "root data path" msgstr "sciezka glownego katalogu danych" #: src/advanced_funcs.cxx:129 msgid "scattered" msgstr "czesciowe" #: src/advanced.cxx:852 msgid "static" msgstr "static" #: src/wizard_funcs.cxx:94 msgid "summer" msgstr "lato" #: src/advanced.cxx:857 msgid "system" msgstr "elektrycznosc" #: src/advanced.cxx:1001 msgid "uBody:" msgstr "" #: src/advanced.cxx:1005 msgid "vBody:" msgstr "" # nie wiem o co chodzi, jak rozumiec slowo system, na razie doszedlem do tego ze sa to chyba awarie Static System Pitot System, Vacuum System, wiec tak jakby wszystkie pozostale w takim razie po co zostalo dodane takie pole? #: src/advanced.cxx:862 msgid "vacuum" msgstr "systemu prozniowego" #: src/advanced.cxx:1009 msgid "wBody" msgstr "" #: src/advanced_funcs.cxx:121 msgid "warn" msgstr "" #: src/wizard_funcs.cxx:95 msgid "winter" msgstr "zima" #~ msgid "0" #~ msgstr "0" #~ msgid "1" #~ msgstr "1" #~ msgid "1024x768" #~ msgstr "1024x768" #~ msgid "1280x1024" #~ msgstr "1280x1024" #~ msgid "1280x800" #~ msgstr "1280x800" #~ msgid "16" #~ msgstr "16" #~ msgid "1600x1200" #~ msgstr "1600x1200" #~ msgid "1680x1050" #~ msgstr "1680x1050" #~ msgid "1920x1200" #~ msgstr "1920x1200" #~ msgid "2" #~ msgstr "2" #~ msgid "24" #~ msgstr "24" #~ msgid "3" #~ msgstr "3" #~ msgid "32" #~ msgstr "32" #~ msgid "4" #~ msgstr "4" # to co wyzej #~ msgid "800x600" #~ msgstr "800x600" #~ msgid "AV400" #~ msgstr "AV400" #, fuzzy #~ msgid "AV400Sim" #~ msgstr "AV400" #~ msgid "ada" #~ msgstr "ada" #, fuzzy #~ msgid "atcsim" #~ msgstr "larcsim" #~ msgid "atlas" #~ msgstr "atlas" #~ msgid "balloon" #~ msgstr "balloon" #~ msgid "bi" #~ msgstr "oba" #~ msgid "external" #~ msgstr "external" #~ msgid "file" #~ msgstr "plik" #~ msgid "garmin" #~ msgstr "garmin" #~ msgid "generic" #~ msgstr "generic" #~ msgid "in" #~ msgstr "wejscie" #, fuzzy #~ msgid "joyclient" #~ msgstr "joy-client" #~ msgid "jsb" #~ msgstr "jsb" #~ msgid "jsclient" #~ msgstr "jsclient" #~ msgid "larcsim" #~ msgstr "larcsim" #~ msgid "magic" #~ msgstr "magic" #~ msgid "native" #~ msgstr "native" #~ msgid "native-ctrls" #~ msgstr "native-ctrls" #~ msgid "native-fdm" #~ msgstr "native-fdm" #~ msgid "native-gui" #~ msgstr "native-gui" #~ msgid "network" #~ msgstr "network" #~ msgid "nmea" #~ msgstr "nmea" #~ msgid "null" #~ msgstr "null" #~ msgid "opengc" #~ msgstr "opengc" #~ msgid "out" #~ msgstr "wyjscie" #~ msgid "pve" #~ msgstr "pve" #~ msgid "ray" #~ msgstr "ray" #~ msgid "rul" #~ msgstr "rul" #~ msgid "serial" #~ msgstr "szeregowo" # ?? #~ msgid "socket" #~ msgstr "gniazdo" # czy nowy? #, fuzzy #~ msgid "telnet" #~ msgstr "Usun" #~ msgid "ufo" #~ msgstr "ufo" #~ msgid "yasim" #~ msgstr "yasim" fg-fgrun/po/pt.po000066400000000000000000001063251245722473500142140ustar00rootroot00000000000000# Portuguese translations for fgrun package # Tradução do inglês do pacote fgrun. # Copyright (C) 2008 Frederic Bouvier # This file is distributed under the same license as the fgrun package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: fgrun 1.6.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-09-03 02:20+0200\n" "PO-Revision-Date: 2012-02-27 14:27-0300\n" "Last-Translator: Lizandro \n" "Language-Team: Portuguese \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: Portuguese\n" "X-Poedit-Country: BRAZIL\n" #: src/logwin.cxx:34 msgid "&Close" msgstr "&Fechar" #: src/logwin.cxx:32 msgid "&File" msgstr "&Arquivo" #: src/logwin.cxx:33 msgid "&Save" msgstr "&Salvar" #: src/advanced.cxx:715 src/advanced.cxx:724 src/advanced.cxx:1467 msgid "..." msgstr "..." #: src/advanced_funcs.cxx:145 msgid "2.0" msgstr "" #: src/advanced.cxx:1081 src/wizard.cxx:812 msgid "3D Clouds" msgstr "Nuvens 3D" #: src/wizard.cxx:643 #, fuzzy msgid "3D Preview" msgstr "Previsualizar" #: src/advanced_funcs.cxx:146 msgid "4.0" msgstr "" #: src/advanced_funcs.cxx:147 msgid "8.0" msgstr "" #: src/wizard.cxx:942 msgid ":" msgstr ":" #: src/wizard_funcs.cxx:889 src/wizard_funcs.cxx:2449 #: src/AirportBrowser.cxx:470 src/fgfsrc.cxx:101 msgid "" msgstr "" #: src/wizard_funcs.cxx:225 #, c-format msgid "" " FlightGear Launch Control %s " "

FlightGear Launch Control %s

This program is released under the " "GNU General Public License (http://www.gnu.org/copyleft/gpl.html).

" "

Report bugs to http://sourceforge.net/projects/fgrun

" msgstr "" " Assistente do FlightGear %s " "

Assistente do FlightGear %s

Este programa é distribuído sob a " "GNU General Public License (http://www.gnu.org/copyleft/gpl.html).

" "

Relate erros em http://sourceforge.net/projects/fgrun

" #: src/wizard.cxx:599 msgid "@2>" msgstr "" #: src/wizard.cxx:588 msgid "@8>" msgstr "" #: src/advanced.cxx:1568 msgid "ADF:" msgstr "" #: src/advanced.cxx:867 #, fuzzy msgid "AI Models" msgstr "Modelos de IA" #: src/advanced.cxx:873 src/wizard.cxx:848 msgid "AI Traffic" msgstr "Tráfego Interativo" #: src/wizard.cxx:844 msgid "AI models" msgstr "Modelos de IA" #: src/wizard_funcs.cxx:977 src/fgfsrc.cxx:61 msgid "Abort" msgstr "Cancelar" #: src/fgfsrc.cxx:61 #, c-format msgid "About to overwrite %s." msgstr "Sobrescrever sob %s" #: src/wizard_funcs.cxx:977 msgid "About to reset current parameters" msgstr "Deseja redefinir os parâmetros para os padrões?" #: src/wizard.cxx:562 msgid "Add a scenery directory" msgstr "Adicionar um dirétorio de cenários" #: src/wizard.cxx:533 msgid "Add an aircraft directory" msgstr "Adicionar um dirétorio de aeronaves" #: src/wizard.cxx:532 src/wizard.cxx:561 msgid "Add..." msgstr "Adicionar..." #: src/advanced.cxx:672 msgid "Advanced Options" msgstr "Opções Avançadas" #: src/wizard.cxx:747 msgid "Advanced..." msgstr "Avançado..." #: src/wizard.cxx:523 msgid "Aircraft directories" msgstr "Diretório de aeronaves" #: src/advanced.cxx:748 msgid "Aircraft:" msgstr "Aeronave:" #: src/wizard.cxx:1097 msgid "Airport to fetch : " msgstr "Aeroporto para buscar :" #: src/advanced.cxx:740 msgid "Airport:" msgstr "Aeroporto:" #: src/wizard.cxx:620 msgid "Airports Cache:" msgstr "" "Arquivo cache \n" "dos aeroportos:" #: src/advanced.cxx:995 msgid "Airspeed:" msgstr "" "Velocidade\n" "do Ar:" #: src/wizard.fl msgid "All airports" msgstr "" #: src/advanced.cxx:989 msgid "Altitude:" msgstr "Altitude:" #: src/wizard.cxx:1068 msgid "An error report has been generated in the file below :" msgstr "Um relatório de erros foi gerado no arquivo abaixo :" #: src/advanced.cxx:806 msgid "Anti-alias HUD" msgstr "" "Visor holográfico\n" "anti-serrilhado" #: src/wizard.cxx:931 msgid "Atlas" msgstr "Atlas" #: src/wizard.cxx:692 msgid "Author(s) :" msgstr "Autor(es) :" #: src/advanced.cxx:812 src/wizard.cxx:864 msgid "Auto-coordination" msgstr "Auto-coordenação" #: src/wizard.cxx:659 #, fuzzy msgid "Available aircraft :" msgstr "Aeronave:" #: src/advanced.cxx:1554 src/advanced_funcs.cxx:223 msgid "Avionics" msgstr "Aviônicos" #: src/advanced.cxx:1481 msgid "Baud Rate:" msgstr "Taxa Baud:" #: src/advanced.cxx:711 msgid "Browser:" msgstr "Navegador:" #: src/wizard.cxx:954 msgid "Callsign :" msgstr "Indentificador :" #: src/advanced.cxx:1355 msgid "Callsign:" msgstr "Identificador:" #: src/advanced.cxx:685 src/wizard.cxx:1085 msgid "Cancel" msgstr "Cancelar" #: src/wizard.cxx:725 msgid "Carrier : " msgstr "Porta-avião : " #: src/wizard.cxx:721 msgid "Carrier Ops" msgstr "Operação de Porta-Aviões" #: src/advanced.cxx:1819 msgid "Ceiling:" msgstr "Teto:" #: src/wizard.cxx:1007 msgid "" "Clear all selected options and return to the install situation. Useful if " "FGFS don't start anymore." msgstr "" "Limpar todas as opções selecionadas e retornar ao momento da instalação. " "Útil se o FlightGear não iniciar mais." #: src/wizard.cxx:615 msgid "Clear the content of the airport cache" msgstr "Limpar o conteúdo do cache de aeroportos" #: src/advanced.cxx:1060 msgid "Climb rate:" msgstr "Taxa de subida:" #: src/advanced.cxx:965 msgid "Clock Freeze" msgstr "Pausar Relógio" #: src/advanced.cxx:1075 src/advanced.cxx:1833 src/advanced_funcs.cxx:228 msgid "Clouds" msgstr "Nuvens" #: src/Fl_OSG.cxx:188 msgid "Cockpit : " msgstr "Cabine :" #: src/advanced.cxx:1177 src/wizard.cxx:817 msgid "Color depth (bits per pixel)" msgstr "Profundidade das cores (bits por pixels)" #: src/advanced.cxx:719 msgid "Config:" msgstr "Configuração:" #: src/advanced.cxx:892 msgid "Core Flight Dynamics Model" msgstr "Modelo de Dinâmica de Vôo Principal" #: src/advanced.cxx:1865 msgid "Coverage:" msgstr "Cobertura:" #: src/wizard.cxx:894 msgid "Ctrl-click to deselect a single item" msgstr "Ctrl-clique para desmarcar um único item" #: src/wizard.cxx:886 msgid "Ctrl-click to select or deselect a single item" msgstr "Ctrl-clique para marcar ou desmarcar um único item" #: src/advanced.cxx:1601 msgid "DME:" msgstr "" #: src/advanced.cxx:1650 src/advanced_funcs.cxx:225 msgid "Debugging" msgstr "Depuração" #: src/advanced.cxx:1400 src/advanced.cxx:1628 src/advanced.cxx:1691 #: src/advanced.cxx:1724 src/advanced.cxx:1756 src/wizard.cxx:537 #: src/wizard.cxx:566 src/wizard.cxx:614 msgid "Delete" msgstr "Deletar" #: src/wizard.cxx:567 msgid "Delete a scenery directory" msgstr "Deletar um diretório de cenários" #: src/wizard.cxx:538 msgid "Delete an aircraft directory" msgstr "Deletar um diretório de aeronaves" #: src/wizard_funcs.cxx:1752 msgid "Description of " msgstr "Descrição de " #: src/wizard.cxx:893 msgid "Deselect all" msgstr "Desmarcar tudo" #: src/wizard_funcs.cxx:109 msgid "Development" msgstr "Desenvolvimento" #: src/advanced.cxx:1792 msgid "Direction wind is coming from." msgstr "Direção de onde vem o vento" #: src/advanced.cxx:1435 msgid "Direction:" msgstr "Direção:" #: src/advanced.cxx:1127 msgid "Disabled" msgstr "Desabilitada" #: src/wizard.cxx:764 msgid "Display" msgstr "Visualização" #: src/wizard.fl msgid "Display all airports" msgstr "" #: src/wizard.fl msgid "Display only installed airports" msgstr "" #: src/advanced.cxx:767 msgid "Display splash screen at startup" msgstr "Exibir janela de espera na inicialização" #: src/advanced.cxx:827 msgid "Distance attenuation" msgstr "Atenuação de distância" #: src/advanced.cxx:907 msgid "Do not attempt to trim the model" msgstr "Não tente ajustar o modelo" #: src/wizard_funcs.cxx:2685 msgid "Don't overwrite" msgstr "Não sobrescrever" #: src/wizard_funcs.cxx:113 msgid "Early development" msgstr "Pré desenvolvimento" #: src/wizard_funcs.cxx:105 msgid "Early production" msgstr "Pré produção" #: src/advanced.cxx:1851 msgid "Elevation(ft):" msgstr "Elevação(pés):" #: src/advanced.cxx:1076 msgid "Enable 2D (flat) cloud layers" msgstr "Habilitar camada de nuvens 2D (fixa)" #: src/advanced.cxx:1082 msgid "Enable 3D (volumetric) cloud layers" msgstr "Habilitar camada de nuvens 3D (volumétricas)" #: src/advanced.cxx:833 msgid "Enable 3D HUD" msgstr "Habilitar Visor Holográfico 3D" #: src/advanced.cxx:868 msgid "Enable AI traffic" msgstr "Habilitar Tráfego Interativo" #: src/advanced.cxx:1302 msgid "Enable HTTP server" msgstr "Habilitar servidor HTTP" #: src/advanced.cxx:801 msgid "Enable Heads Up Display" msgstr "Habilitar o Visor Holográfico (HUD)" #: src/advanced.cxx:807 msgid "Enable anti-aliased HUD" msgstr "Habilitar o Visor Holográfico sem serrilhado" #: src/advanced.cxx:813 msgid "Enable auto-coordinated turns." msgstr "Habilitar curvas auto-coordenadas" #: src/advanced.cxx:818 msgid "Enable celestial body growth illusion near the horizon" msgstr "Ativar ilusão de crescimento do corpo celeste perto do horizonte" #: src/advanced.cxx:823 msgid "Enable enhanced runway lighting" msgstr "Ativar melhoria da iluminação da pista" #: src/advanced.cxx:779 msgid "Enable extra mouse pointer" msgstr "Habilitar ponteiros extras do mouse" #: src/advanced.cxx:762 msgid "Enable full screen game mode" msgstr "Habilitar modo de jogo em tela cheia" #: src/advanced.cxx:1087 msgid "Enable full screen mode" msgstr "Habilitar modo de tela cheia" #: src/advanced.cxx:773 msgid "Enable introduction music during start up" msgstr "Habilitar música de introdução durante a inicialização" #: src/advanced.cxx:1319 msgid "Enable property server" msgstr "Habilitar servidor de propriedades" #: src/advanced.cxx:784 msgid "Enable random scenery objects" msgstr "Habilitar objetos aleatórios do cenário" #: src/advanced.cxx:828 msgid "Enable runway light distance attenuation" msgstr "Habilitar a atenuação de distância das luzes da pista" #: src/advanced.cxx:1335 msgid "Enable screen shot HTTP server" msgstr "Habilitar o servidor HTTP de capturas de tela" #: src/advanced.cxx:1092 msgid "Enable sky blending" msgstr "Habilitar mistura do céu em degradê" #: src/advanced.cxx:795 msgid "Enable sound effects" msgstr "Habilitar efeitos de som" #: src/advanced.cxx:838 msgid "Enable specular reflections on textured objects" msgstr "Ativar reflexões especulares sobre objetos texturizados" #: src/advanced.cxx:789 msgid "Enable the instrument panel" msgstr "Habilitar o painel de instrumentos" #: src/advanced.cxx:1104 msgid "Enable wireframe drawing mode" msgstr "Habilitar o modo de desenho malha 3D" #: src/advanced.cxx:822 msgid "Enhanced lighting" msgstr "Iluminação aprimorada" #: src/wizard.cxx:789 msgid "Enhanced runway lighting" msgstr "Reforço da iluminação da pista" #: src/advanced.cxx:1738 src/advanced_funcs.cxx:226 msgid "Environment" msgstr "Ambiente" #: src/wizard.cxx:498 msgid "Executable path not set or invalid" msgstr "Diretório do executável inválido ou não definido" #: src/advanced.cxx:728 src/wizard.cxx:484 msgid "Executable:" msgstr "Executável:" #: src/Fl_OSG.cxx:198 msgid "FDM : " msgstr "MDV :" #: src/advanced.cxx:891 msgid "FDM:" msgstr "MDV:" #: src/advanced.cxx:1466 msgid "FGCom built-in" msgstr "FGCom built-in" #: src/advanced.cxx:1472 msgid "FGCom standalone" msgstr "FGCom standalone" #: src/wizard.cxx:522 msgid "FG_AIRCRAFT:" msgstr "FG_AERONAVES:" #: src/wizard.cxx:516 msgid "FG_ROOT path invalid or not set" msgstr "Diretório FG_BASE inválido ou não definido" #: src/advanced.cxx:732 src/wizard.cxx:502 msgid "FG_ROOT:" msgstr "FG_BASE:" #: src/wizard.cxx:610 msgid "FG_SCENERY empty" msgstr "FG_CENÃRIO vazio" #: src/advanced.cxx:736 src/wizard.cxx:551 msgid "FG_SCENERY:" msgstr "FG_CENÃRIO:" #: src/advanced.cxx:1190 msgid "FOV:" msgstr "Ângulo de Visão:" #: src/advanced.cxx:1820 msgid "FT_ASL[:THICKNESS_FT]" msgstr "FT_ASL[:THICKNESS_FT]" #: src/advanced.cxx:842 msgid "Failures" msgstr "Panes" #: src/advanced.cxx:1132 msgid "Fastest" msgstr "Modo rápido" #: src/advanced.cxx:757 src/wizard.cxx:832 src/advanced_funcs.cxx:215 msgid "Features" msgstr "Características" #: src/advanced.cxx:1824 msgid "Fetch real weather" msgstr "Meteorologia real" #: src/advanced.cxx:1191 msgid "Field of View angle" msgstr "Ângulo do campo de visão" #: src/advanced.cxx:1461 msgid "File:" msgstr "Arquivo:" #: src/wizard_funcs.cxx:2685 #, c-format msgid "Filename \"%s\" already exists." msgstr "O Arquivo \"%s\" já existe." #: src/advanced.cxx:1044 msgid "Fix:" msgstr "Fixo:" #: src/advanced.cxx:1117 msgid "Flat" msgstr "Plano" #: src/advanced.cxx:886 src/advanced_funcs.cxx:216 msgid "Flight Model" msgstr "Modelo de Vôo" #: src/wizard.cxx:474 msgid "FlightGear Wizard" msgstr "Assistente do FlightGear" #: src/wizard.cxx:1032 msgid "FlightGear has been started" msgstr "FlighGear está sendo iniciado" #: src/wizard.cxx:1029 msgid "FlightGear running..." msgstr "FlightGear em execução..." #: src/wizard.cxx:1052 msgid "Flightgear crashed..." msgstr "FlightGear travou..." #: src/wizard.cxx:1054 msgid "Flightgear encountered an unexpected failure" msgstr "Flightgear encontrou um falha inesperada" #: src/advanced.cxx:1124 msgid "Fog" msgstr "Névoa" #: src/wizard.cxx:798 msgid "Framerate limiter :" msgstr "Limitar taxa de frames :" #: src/advanced.cxx:951 src/advanced.cxx:956 src/advanced_funcs.cxx:217 msgid "Freeze" msgstr "Pausa" #: src/advanced.cxx:961 msgid "Fuel Freeze" msgstr "Pausar consumo de combustível" #: src/advanced.cxx:1086 src/wizard.cxx:781 msgid "Full Screen" msgstr "Tela Cheia" #: src/wizard.cxx:621 msgid "Full path to the airport cache" msgstr "Caminho completo para cache de aeroportos" #: src/wizard.cxx:485 src/wizard.cxx:492 msgid "Full pathname to FlightGear executable" msgstr "Caminho completo do executável do FlightGear" #: src/wizard.cxx:626 src/wizard.cxx:633 msgid "Full pathname to Terrasync executable" msgstr "Caminho completo do executável do Terrasync" #: src/advanced.cxx:761 msgid "Game Mode" msgstr "Modo de Jogo" #: src/advanced.cxx:696 src/advanced_funcs.cxx:214 msgid "General" msgstr "Geral" #: src/advanced.cxx:1524 msgid "Generic:" msgstr "Générico:" #: src/advanced.cxx:1145 msgid "Geometry:" msgstr "Geometria:" #: src/advanced.cxx:1056 msgid "Glide slope:" msgstr "Rampa de Descida:" #: src/advanced.cxx:1308 msgid "HTTP server port" msgstr "Porta do servidor HTTP" #: src/advanced.cxx:800 msgid "HUD" msgstr "Visor Holográfico" #: src/advanced.cxx:1013 src/advanced.cxx:1791 msgid "Heading:" msgstr "Rumo:" #: src/advanced.cxx:817 src/wizard.cxx:785 msgid "Horizon effect" msgstr "Efeitos do horizonte" #: src/wizard.cxx:937 msgid "Hostname" msgstr "Servidor" #: src/wizard.cxx:936 src/wizard.cxx:958 msgid "Hostname :" msgstr "Servidor:" #: src/advanced.cxx:1492 msgid "Hostname:" msgstr "Servidor:" #: src/advanced.cxx:832 msgid "Hud-3D" msgstr "Visor Holográfico 3D" #: src/advanced.cxx:1450 msgid "Hz:" msgstr "Hz:" #: src/AirportTable.cxx:121 msgid "ICAO Id" msgstr "Cod. ICAO" #: src/advanced.cxx:938 msgid "In Air" msgstr "No Ar" #: src/advanced.cxx:974 src/advanced_funcs.cxx:218 msgid "Initial Position" msgstr "Posição Inicial" #: src/advanced.cxx:1014 msgid "Initial aircraft heading (yaw) angle 0 to 360 degrees" msgstr "Rumo inicial da aeronave (ângulo da guinada) de 0 a 360 graus" #: src/advanced.cxx:996 msgid "Initial airspeed in knots" msgstr "Velocidade do ar em nós" #: src/advanced.cxx:990 msgid "Initial altitude in feet" msgstr "Altitude inicial em pés" #: src/advanced.cxx:985 msgid "Initial latitude, south is negative" msgstr "Latitude inicial, sul é negativo" #: src/advanced.cxx:980 msgid "Initial longitude, west is negative" msgstr "Longitude inicial, oeste é negativo" #: src/advanced.cxx:1029 msgid "Initial pitch angle (Theta)" msgstr "Ângulo de arfagem inicial (Teta)" #: src/advanced.cxx:1021 msgid "Initial roll angle, (Phi)" msgstr "Ângulo de inclinação inicial (Pí)" #: src/advanced.cxx:1151 msgid "Initial visibility distance" msgstr "Distância inicial de visibilidade" #: src/wizard.cxx:965 msgid "Input port number" msgstr "Número da porta IP de entrada" #: src/advanced.cxx:1382 src/advanced_funcs.cxx:222 msgid "Input/Output" msgstr "Entrada/Saída" #: src/wizard.fl msgid "Installed airports" msgstr "" #: src/advanced.cxx:1588 msgid "Internal" msgstr "Interno" #: src/advanced.cxx:772 msgid "Intro Music" msgstr "Música de Introdução" #: src/advanced.cxx:707 msgid "Language:" msgstr "Linguagem:" #: src/advanced.cxx:984 msgid "Latitude:" msgstr "Latitude:" #: src/advanced.cxx:1837 msgid "Layer:" msgstr "Camada:" #: src/wizard.cxx:1017 msgid "Load" msgstr "Carregar" #: src/wizard.cxx:1018 msgid "Load a previously saved configuration" msgstr "Carregar uma configuração salva anteriormente" #: src/wizard_funcs.cxx:2590 msgid "Load settings from..." msgstr "Carregar configurações de..." #: src/wizard.cxx:698 #, fuzzy msgid "Location :" msgstr "Resolução :" #: src/advanced.cxx:1656 msgid "Log Level:" msgstr "" "Nível de \n" "mensagens:" #: src/wizard_funcs.cxx:469 msgid "Log Window" msgstr "Janela de Log" #: src/advanced.cxx:979 msgid "Longitude:" msgstr "Longitude:" #: src/advanced.cxx:1207 msgid "Materials file:" msgstr "Arquivo de materiais:" #: src/advanced.cxx:1419 msgid "Medium:" msgstr "Médias:" #: src/wizard.cxx:875 msgid "Menu auto-visibility" msgstr "Menu auto-visibilidade" #: src/advanced.cxx:1157 msgid "Meters" msgstr "Metros" #: src/advanced.cxx:1164 msgid "Miles" msgstr "Milhas" #: src/Fl_OSG.cxx:183 msgid "Model : " msgstr "Modelo:" #: src/advanced.cxx:912 msgid "Model Hz:" msgstr "" "Frequência\n" "do modelo(Hz):" #: src/wizard_funcs.cxx:749 #, c-format msgid "Model not found: '%s'" msgstr "Modelo não encontrado : '%s'" #: src/advanced.cxx:778 msgid "Mouse Pointer" msgstr "Ponteiro do Mouse" #: src/wizard.cxx:600 msgid "Move scenery directory down" msgstr "Mover diretório de cenários abaixo" #: src/wizard.cxx:589 msgid "Move scenery directory up" msgstr "Mover diretório de cenários acima" #: src/advanced.cxx:1359 msgid "Multiplay 1:" msgstr "" #: src/advanced.cxx:1364 msgid "Multiplay 2:" msgstr "" #: src/wizard.cxx:949 msgid "Multiplayer" msgstr "Modo Multiplayer" #: src/advanced.cxx:1350 msgid "Multiplayer Options" msgstr "Opções de Modo Multiplayer" #: src/advanced.cxx:1040 msgid "NDB:" msgstr "NDB:" #: src/AirportTable.cxx:121 msgid "Name" msgstr "Nome do Aeroporto" #: src/advanced.cxx:1576 msgid "Nav1" msgstr "" #: src/advanced.cxx:1559 msgid "Nav1:" msgstr "Nav1:" #: src/advanced.cxx:1582 msgid "Nav2" msgstr "" #: src/advanced.cxx:1564 msgid "Nav2:" msgstr "Nav2:" #: src/advanced.cxx:1296 src/advanced_funcs.cxx:221 msgid "Network" msgstr "Rede" #: src/advanced.cxx:1396 src/advanced.cxx:1642 src/advanced.cxx:1687 #: src/advanced.cxx:1720 src/advanced.cxx:1752 msgid "New" msgstr "Novo" #: src/wizard.cxx:995 src/wizard_funcs.cxx:407 src/wizard_funcs.cxx:958 #: src/wizard_funcs.cxx:1802 src/wizard_funcs.cxx:1811 msgid "Next" msgstr "Avançar" #: src/advanced.cxx:1137 msgid "Nicest" msgstr "Modo realístico" #: src/Fl_OSG.cxx:207 msgid "No Rating" msgstr "Sem Avaliação" #: src/advanced.cxx:906 msgid "No Trim" msgstr "Sem Ajuste" #: src/wizard_funcs.cxx:1755 msgid "Not set" msgstr "Não definido" #: src/advanced.cxx:688 src/wizard.cxx:1064 src/wizard.cxx:1089 msgid "OK" msgstr "OK" #: src/advanced.cxx:1252 msgid "Offset (+/-) from real time" msgstr "Contrabalançar (+/-) a partir da hora real" #: src/advanced.cxx:931 msgid "On Ground" msgstr "No Solo" #: src/wizard.cxx:728 msgid "Only valid if carrier is set. For airport parking, use the list above." msgstr "" "Só é válido se porta-aviões estiver definido. Para estacionamento do " "aeroporto, utilize a lista acima." #: src/main.cxx:162 #, fuzzy, c-format msgid "" "Options are:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " --version=\n" " -f, --fullscreen\n" "%s" msgstr "" "As opções são:\n" " --silent\n" " --fg-exe=\n" " --fg-root=\n" " --fg-scenery=\n" " --ts-exe=\n" " --ts-dir=#\n" " -f, --fullscreen\n" "%s" #: src/wizard.cxx:969 msgid "Output port number" msgstr "Número da porta IP de saída" #: src/wizard_funcs.cxx:2685 src/fgfsrc.cxx:61 msgid "Overwrite" msgstr "Sobrescrever" #: src/advanced.cxx:788 msgid "Panel" msgstr "Painel" #: src/wizard.cxx:727 msgid "Park pos :" msgstr "Posição de estac. :" #: src/AirportBrowser.cxx:89 msgid "Parking" msgstr "Estacionamento" #: src/advanced.cxx:720 msgid "Path to additional XML properties file" msgstr "Caminho para arquivo XML adicional de propriedades" #: src/wizard.cxx:959 msgid "Peer hostname" msgstr "Servidor de multiplayer" #: src/advanced.cxx:1028 msgid "Pitch:" msgstr "Arfagem:" #: src/wizard.cxx:1072 msgid "Please send this error report to the Flightgear development team" msgstr "" "Por favor envie este relatório de erro para o time de desenvolvimento do " "FlightGear" #: src/wizard.cxx:1037 msgid "Please wait..." msgstr "Aguarde por favor..." #: src/advanced.cxx:1475 src/advanced.cxx:1498 msgid "Port:" msgstr "Porta:" #: src/wizard.cxx:1082 msgid "Prefetch Scenery" msgstr "Cache de Cenários" #: src/wizard.cxx:991 msgid "Prev" msgstr "Voltar" #: src/wizard.cxx:670 msgid "Preview" msgstr "Previsualizar" #: src/advanced.cxx:1612 src/advanced_funcs.cxx:224 msgid "Properties" msgstr "Propriedades" #: src/wizard_funcs.cxx:790 msgid "Property '/sim/model/path' not found" msgstr "Propriedade '/sim/model/path' não encontrada" #: src/advanced.cxx:1325 msgid "Property server port" msgstr "Porta do servidor de propriedades" #: src/advanced.cxx:1633 msgid "Property:" msgstr "Propriedade:" #: src/advanced.cxx:1405 msgid "Protocol:" msgstr "Protocolo:" #: src/advanced.cxx:1373 msgid "Proxy:" msgstr "Servidor Proxy" #: src/wizard.cxx:999 msgid "Quit" msgstr "Sair" #: src/advanced.cxx:783 msgid "Random Objects" msgstr "Objetos Aleatórios" #: src/advanced.cxx:877 msgid "Random Trees" msgstr "Ãrvores Aleatórias" #: src/advanced.cxx:1806 msgid "Random Winds" msgstr "Ventos Aleatórios" #: src/wizard.cxx:836 msgid "Random objects" msgstr "Objetos aleatórios" #: src/wizard.cxx:840 msgid "Random trees" msgstr "Ãrvores Aleatórias" #: src/Fl_OSG.cxx:205 msgid "Rating" msgstr "Avaliação" # Adjust horizontal position of stars #: src/Fl_OSG.cxx:179 msgid "RatingPos" msgstr "RatingPos" #: src/wizard.cxx:860 msgid "Real weather fetch" msgstr "Meteorologia real" #: src/wizard.cxx:651 #, fuzzy msgid "Recently used aircraft :" msgstr "Selecione uma aeronave" #: src/AirportBrowser.cxx:96 msgid "Refresh" msgstr "Recarregar" #: src/AirportBrowser.cxx:99 msgid "Reload airports" msgstr "Recarregar aeroportos" #: src/advanced.cxx:1070 src/advanced_funcs.cxx:219 msgid "Rendering" msgstr "Renderização" #: src/advanced.cxx:1534 msgid "Repeat" msgstr "Repetir" #: src/wizard_funcs.cxx:977 msgid "Reset" msgstr "Redefinir" #: src/wizard.cxx:768 msgid "Resolution :" msgstr "Resolução :" #: src/wizard.cxx:1006 msgid "Restore default settings" msgstr "Padrões" #: src/advanced.cxx:1020 msgid "Roll:" msgstr "Inclinação:" #: src/wizard_funcs.cxx:950 msgid "Run" msgstr "Executar" #: src/advanced.cxx:922 msgid "Run FDM faster than real time" msgstr "Execute o MDV mais rápido que no tempo real" #: src/advanced.cxx:913 msgid "Run the FDM at this rate (iterations per second)" msgstr "Execute o MDV nesta frequência (interações por segundo)" #: src/advanced.cxx:744 msgid "Runway:" msgstr "Pista:" #: src/AirportBrowser.cxx:84 msgid "Runways" msgstr "Pistas" #: src/wizard.cxx:1012 msgid "Save As..." msgstr "Salvar Como..." #: src/wizard.cxx:1013 msgid "Save current configuration to a file" msgstr "Salvar configuração atual em arquivo" #: src/logwin.cxx:99 msgid "Save file as?" msgstr "Salvar arquivo como ?" #: src/wizard_funcs.cxx:2681 msgid "Save settings as..." msgstr "Salvar configurações como..." #: src/wizard.cxx:881 msgid "Scenarios" msgstr "Cenários" #: src/wizard.cxx:736 msgid "Scenery Prefetch" msgstr "Cenários em Cache" #: src/wizard.cxx:552 msgid "Scenery directories" msgstr "Diretório de cenários" #: src/advanced.cxx:1341 msgid "Screen shot HTTP server port" msgstr "Porta do servidor HTTP de imagens JPEG" #: src/wizard.cxx:868 msgid "Season :" msgstr "Estação do ano :" #: src/wizard_funcs.cxx:1347 msgid "Select FG_AIRCRAFT directory" msgstr "Selecione o diretório FG_AERONAVES" #: src/wizard_funcs.cxx:1072 msgid "Select FG_ROOT directory" msgstr "Selecione o diretório FG_BASE" #: src/wizard_funcs.cxx:1421 msgid "Select FG_SCENERY directory" msgstr "Selecione o diretório FG_CENÃRIO" #: src/wizard_funcs.cxx:992 msgid "Select FlightGear executable" msgstr "Selecione o executável do FlightGear" #: src/wizard.cxx:477 msgid "Select Paths" msgstr "Selecione os Caminhos" #: src/wizard_funcs.cxx:1531 msgid "Select Terrasync executable" msgstr "Selecione o executável do Terrasyn" #: src/wizard.cxx:704 msgid "Select a location" msgstr "Selecione uma localização" #: src/advanced_funcs.cxx:293 msgid "Select a preferences file" msgstr "Selecione um arquivo de preferências" #: src/wizard_funcs.cxx:1766 src/wizard_funcs.cxx:1770 #: src/wizard_funcs.cxx:2284 msgid "Select a scenario to display its description" msgstr "Selecione um cenário para exibir a descrição" #: src/wizard.cxx:640 msgid "Select an aircraft" msgstr "Selecione uma aeronave" #: src/advanced_funcs.cxx:238 msgid "Select browser" msgstr "Selecione um navegador" #: src/io.cxx:301 msgid "Select file" msgstr "Selecione arquivo" #: src/wizard.cxx:576 msgid "Select the line in the FG_SCENERY list that is the TerraSync directory." msgstr "" "Selecionar a linha na lista FG_CENÃRIOS que está no deiretório TerraSync." #: src/advanced.cxx:1560 msgid "Set the NAV1 radio frequency, optionally preceded by a radial" msgstr "" "Ajuste a frequência de rádio NAV1, opcionalmente precedido por um radial" #: src/advanced.cxx:1199 msgid "Set the maximum degree of anisotropy in texture filtering" msgstr "Defina o máximo grau de anisotropia na filtragem da textura" #: src/advanced.cxx:1108 msgid "Shading" msgstr "Sombreado" #: src/wizard.cxx:753 msgid "Show command line" msgstr "Exibir linha de comando" #: src/advanced.cxx:1091 msgid "Sky Blend" msgstr "Céu em Degradê" #: src/advanced.cxx:1111 msgid "Smooth" msgstr "Liso" #: src/advanced.cxx:794 msgid "Sound" msgstr "Som" #: src/advanced.cxx:1871 msgid "Span (m):" msgstr "Estensão (m):" #: src/advanced.cxx:1158 msgid "Specify visibilty in meters" msgstr "Especificar a visibilidade em metros" #: src/advanced.cxx:1165 msgid "Specify visiblity in miles" msgstr "Especificar a visibilidade em milhas naúticas" #: src/advanced.cxx:837 src/wizard.cxx:794 msgid "Specular highlight" msgstr "Brilho especular" #: src/advanced.cxx:1799 msgid "Speed (kts):" msgstr "" "Velocidade\n" "(nós):" #: src/advanced.cxx:921 msgid "Speed:" msgstr "Velocidade:" #: src/advanced.cxx:766 msgid "Splash Screen" msgstr "Janela de Espera" #: src/advanced.cxx:932 msgid "Start at ground level" msgstr "Iniciar no nível do solo" #: src/advanced.cxx:1239 msgid "Start date gmt" msgstr "Iniciar com a hora GMT" #: src/advanced.cxx:1245 msgid "Start date lat" msgstr "Iniciar com a hora da latitude" #: src/advanced.cxx:1233 msgid "Start date sys" msgstr "Iniciar com a hora do sistema" #: src/advanced.cxx:939 msgid "Start in the air" msgstr "Iniciar no ar" #: src/advanced.cxx:957 msgid "Start paused" msgstr "Iniciar em pausa" #: src/wizard.cxx:690 msgid "Status :" msgstr "Estado :" #: src/advanced.cxx:1227 msgid "Synchronize simulation time with local time" msgstr "Sincronizar a simulação com a hora local" #: src/advanced.cxx:1219 msgid "Synchronize simulation time with real time" msgstr "Sincronizar a simulação com a hora real" #: src/Fl_OSG.cxx:193 msgid "Systems : " msgstr "Sistemas :" #: src/advanced.cxx:1507 msgid "TCP" msgstr "TCP" #: src/wizard.cxx:910 msgid "TerraSync" msgstr "TerraSync" #: src/wizard.cxx:575 msgid "TerraSync directory" msgstr "Diretório TerraSync" #: src/wizard_funcs.cxx:1799 msgid "TerraSync directory not set" msgstr "Diretório do TerraSync não definido" #: src/wizard_funcs.cxx:1808 msgid "TerraSync executable not set" msgstr "Executável do TerraSync não definido" #: src/wizard_funcs.cxx:2779 msgid "TerraSync must be configured" msgstr "TerraSync precisa ser configurado" #: src/wizard.cxx:625 msgid "Terrasync exe:" msgstr "Executável TerraSync:" #: src/advanced.cxx:1198 msgid "Texture filtering:" msgstr "Filtragem da textura:" #: src/advanced.cxx:1097 msgid "Textures" msgstr "Texturas" #: src/advanced.cxx:1858 msgid "Thickness (ft):" msgstr "Espessura (pés):" #: src/advanced.cxx:1213 src/advanced_funcs.cxx:220 msgid "Time" msgstr "Hora" #: src/advanced.cxx:1226 msgid "Time match local" msgstr "Hora local" #: src/advanced.cxx:1218 msgid "Time match real" msgstr "Hora real" #: src/advanced.cxx:1279 msgid "Time of day" msgstr "Hora do dia" #: src/wizard.cxx:852 msgid "Time of day :" msgstr "Hora do dia :" #: src/wizard.cxx:1040 msgid "To change aircraft, exit FlightGear and return to this launcher" msgstr "" "Para trocar de aeronave, saia do FlightGear e retorne a este assistente" #: src/wizard.cxx:799 msgid "Too much framerate hurts the smoothness of the simulation" msgstr "Uma taxa de frames muita alta diminui a suavidade da simulação" #: src/advanced.cxx:1671 msgid "Trace Read Properties" msgstr "Traçar Propriedades de Leitura" #: src/advanced.cxx:1704 msgid "Trace Write Properties" msgstr "Traçar Propriedades de Escrita" #: src/advanced.cxx:1879 msgid "Transition (ft):" msgstr "Transição (pés):" #: src/advanced.cxx:1813 msgid "Turbulence" msgstr "Turbulência" #: src/advanced.cxx:1514 msgid "UDP" msgstr "UDP" #: src/wizard_funcs.cxx:1323 #, c-format msgid "" "Unable to delete '%s':\n" "%s" msgstr "" "Impossível apagar '%s':\n" "%s" #: src/wizard_funcs.cxx:1234 src/wizard_funcs.cxx:1235 #: src/wizard_funcs.cxx:1237 msgid "Unknown" msgstr "Desconhecido" #: src/wizard_funcs.cxx:2773 #, c-format msgid "Unknown airport : '%s'" msgstr "Aeroporto desconhecido : '%s'" #: src/wizard.cxx:790 msgid "Use with caution. It may drop your framerate dramatically" msgstr "Use com cuidado. Isto pode baixar sua taxa de frames dramaticamente" #: src/advanced.cxx:1036 msgid "VOR:" msgstr "VOR:" #: src/advanced.cxx:1679 src/advanced.cxx:1712 src/advanced.cxx:1761 msgid "Value:" msgstr "Valor:" #: src/advanced.cxx:1172 msgid "View Offset:" msgstr "Alcance da visão:" #: src/wizard.cxx:695 msgid "Viewer" msgstr "Visualizador" #: src/advanced.cxx:1150 msgid "Visibility:" msgstr "Visibilidade:" #: src/wizard.cxx:1058 msgid "We are sorry for this inconvenience." msgstr "Pedimos desculpas pelo inconveniente." #: src/advanced.cxx:1770 src/advanced_funcs.cxx:227 msgid "Weather" msgstr "Meteorologia" #: src/advanced.cxx:1778 msgid "Wind Direction" msgstr "Direção do Vento" #: src/advanced.cxx:1800 msgid "Wind speed (kts)" msgstr "Velocidade do vento em nós" #: src/advanced.cxx:1146 src/wizard.cxx:769 msgid "Window geometry, WxH" msgstr "Tamanho da janela, LxA" #: src/advanced.cxx:1103 msgid "Wireframe" msgstr "Malha 3D" #: src/advanced_funcs.cxx:294 msgid "XML Files(*.xml)" msgstr "Arquivos XML(*.xml)" #: src/wizard_funcs.cxx:86 src/advanced_funcs.cxx:110 #, fuzzy msgid "afternoon" msgstr "meio-dia" #: src/advanced_funcs.cxx:122 msgid "alert" msgstr "alerta" #: src/wizard_funcs.cxx:107 msgid "alpha" msgstr "alfa" #: src/wizard_funcs.cxx:106 msgid "beta" msgstr "beta" #: src/wizard.cxx:816 msgid "bpp :" msgstr "Cores :" #: src/advanced.cxx:1176 msgid "bpp:" msgstr "Cores:" #: src/advanced_funcs.cxx:128 msgid "broken" msgstr "fragmentado" #: src/advanced_funcs.cxx:118 msgid "bulk" msgstr "volume" #: src/advanced.cxx:1814 msgid "calm (0.0) to severe (1.0)" msgstr "de calmo (0.0) à severo (1.0)" #: src/advanced.cxx:1285 msgid "choice:" msgstr "escolha:" #: src/advanced_funcs.cxx:131 msgid "cirrus" msgstr "cirros" #: src/advanced_funcs.cxx:132 msgid "clear" msgstr "limpo" #: src/wizard_funcs.cxx:83 src/advanced_funcs.cxx:107 msgid "dawn" msgstr "amanhecer" #: src/advanced_funcs.cxx:119 msgid "debug" msgstr "depurar" #: src/wizard_funcs.cxx:112 msgid "devel" msgstr "desenv" #: src/wizard_funcs.cxx:110 msgid "developement" msgstr "desenvolvimento" #: src/wizard_funcs.cxx:111 msgid "development" msgstr "desenvolvimento" #: src/wizard_funcs.cxx:87 src/advanced_funcs.cxx:111 msgid "dusk" msgstr "crepúsculo" #: src/wizard_funcs.cxx:108 msgid "early alpha" msgstr "pré alfa" #: src/wizard_funcs.cxx:104 msgid "early production" msgstr "pré produção" #: src/wizard_funcs.cxx:103 msgid "early-production" msgstr "pré-produção" #: src/wizard_funcs.cxx:88 src/advanced_funcs.cxx:112 #, fuzzy msgid "evening" msgstr "Renderização" #: src/wizard_funcs.cxx:114 msgid "experimental" msgstr "experimental" #: src/advanced_funcs.cxx:130 msgid "few" msgstr "pouca" #: src/AirportBrowser.cxx:571 msgid "gzopen error" msgstr "Erro gzopen" #: src/advanced_funcs.cxx:148 msgid "highest filtering" msgstr "maior filtragem" #: src/advanced.cxx:1301 msgid "httpd" msgstr "Servidor HTTP" #: src/wizard.cxx:964 msgid "in :" msgstr "entrada :" #: src/advanced_funcs.cxx:120 msgid "info" msgstr "informação" #: src/advanced.cxx:1360 msgid "in|out,hz,address,port" msgstr "in ou out,hertz,endereço,porta" #: src/advanced_funcs.cxx:137 msgid "joystick" msgstr "" #: src/advanced.cxx:1334 msgid "jpg-httpd" msgstr "" "Servidor HTTP\n" "de arquivos JPEG" #: src/advanced_funcs.cxx:138 msgid "keyboard" msgstr "teclado" #: src/wizard_funcs.cxx:89 src/advanced_funcs.cxx:113 msgid "midnight" msgstr "meia-noite" #: src/wizard_funcs.cxx:84 src/advanced_funcs.cxx:108 msgid "morning" msgstr "" #: src/advanced_funcs.cxx:139 msgid "mouse" msgstr "" #: src/advanced_funcs.cxx:144 msgid "no filtering" msgstr "sem filtragem" #: src/wizard_funcs.cxx:85 src/advanced_funcs.cxx:109 msgid "noon" msgstr "meio-dia" #: src/advanced.cxx:1052 msgid "offset azimuth:" msgstr "" "contrabalançar\n" "azimute:" #: src/advanced.cxx:1048 msgid "offset distance:" msgstr "" "contrabalançar\n" "distância:" #: src/wizard.cxx:968 msgid "out :" msgstr "saída :" #: src/advanced_funcs.cxx:127 msgid "overcast" msgstr "nublado" #: src/advanced.cxx:847 msgid "pitot" msgstr "tubo do pitot" #: src/wizard_funcs.cxx:102 msgid "production" msgstr "produção" #: src/advanced.cxx:1634 msgid "prop=value" msgstr "propriedade=valor" #: src/advanced.cxx:1318 msgid "props" msgstr "" #: src/wizard.cxx:503 src/wizard.cxx:510 msgid "root data path" msgstr "Caminho do diretório principal" #: src/advanced_funcs.cxx:129 msgid "scattered" msgstr "espalhado" #: src/advanced.cxx:852 msgid "static" msgstr "pressão estática" #: src/wizard_funcs.cxx:94 msgid "summer" msgstr "verão" #: src/advanced.cxx:857 msgid "system" msgstr "sistema" #: src/advanced.cxx:1001 msgid "uBody:" msgstr "" #: src/advanced.cxx:1005 msgid "vBody:" msgstr "" #: src/advanced.cxx:862 msgid "vacuum" msgstr "vácuo" #: src/advanced.cxx:1009 msgid "wBody" msgstr "" #: src/advanced_funcs.cxx:121 msgid "warn" msgstr "aviso" #: src/wizard_funcs.cxx:95 msgid "winter" msgstr "inverno" #~ msgid "balloon" #~ msgstr "balão" #~ msgid "external" #~ msgstr "externo" #~ msgid "file" #~ msgstr "arquivo" #~ msgid "generic" #~ msgstr "genérico" #~ msgid "in" #~ msgstr "entrada" #~ msgid "magic" #~ msgstr "mágico" #~ msgid "network" #~ msgstr "rede" #~ msgid "null" #~ msgstr "nulo" #~ msgid "out" #~ msgstr "saída" #~ msgid "telnet" #~ msgstr "telnet" fg-fgrun/src/000077500000000000000000000000001245722473500133735ustar00rootroot00000000000000fg-fgrun/src/AirportBrowser.cxx000066400000000000000000000540631245722473500171130ustar00rootroot00000000000000// AirportBrowser.cxx -- Airport and runway browser widget. // // Written by Bernie Bright, started Oct 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #include #include #include #include #include #include #include #include #include "AirportBrowser.h" #include "AirportTable.h" #include "parkingloader.h" #include "i18n.h" #include #include #include using std::string; using std::vector; using std::deque; AirportBrowser::AirportBrowser( int X, int Y, int W, int H, const char* l ) : Fl_Group( X, Y, W, H, l ) , gzf_(0) , runways_loaded_(false) , airports_loaded_(false) , refresh_cb_(0) { Y += 5; int tw = W - 120 - 5; int th = H - 35 - 5; table_ = new AirportTable( X, Y, tw, th ); table_->color( FL_LIGHT3 ); table_->selection_color( (Fl_Color)3 ); table_->labeltype( FL_NO_LABEL ); table_->labelfont(0); table_->labelsize(14); table_->labelcolor( FL_BLACK ); table_->callback( browser_cb, this ); table_->when( FL_WHEN_RELEASE ); table_->end(); Fl_Group *g = new Fl_Group( X, Y+th+5, X+75+5+tw-75, 25 ); g->begin(); id_ = new Fl_Input( X, Y+th+5, 75, 25 ); id_->textsize( 12 ); id_->callback( id_cb, this ); id_->when( FL_WHEN_CHANGED ); name_ = new Fl_Input( X+75+5, Y+th+5, tw-75-20, 25 ); name_->textsize( 12 ); name_->callback( name_cb, this ); name_->when( FL_WHEN_CHANGED ); g->end(); g->resizable(name_); int rh = ( th - 30 ) / 2; runways_ = new Fl_Hold_Browser( X+tw+5, Y, 120, rh, _("Runways") ); runways_->align( FL_ALIGN_TOP ); runways_->callback( &AirportBrowser::cb_runways_ ); { Fl_Group *o = new Fl_Group( X+tw+5, Y+rh, 120, th-rh ); parking_ = new Fl_Hold_Browser( X+tw+5, Y+rh+30, 120, th-rh-30, _("Parking") ); parking_->align( FL_ALIGN_TOP ); parking_->callback( &AirportBrowser::cb_parking_ ); o->end(); o->resizable( parking_ ); } refresh_ = new Fl_Button( X+tw+5, Y+th+5, 120, 25, _("Refresh") ); refresh_->labelsize(12); refresh_->callback( refresh_cb, this ); refresh_->tooltip( _("Reload airports") ); end(); resizable( table_ ); } AirportBrowser::~AirportBrowser() { } void AirportBrowser::draw() { Fl_Group::draw(); } int AirportBrowser::handle( int e ) { return Fl_Group::handle( e ); } void AirportBrowser::col_header_cb( Fl_Widget* o, void* v ) { AirportTable* table = ((AirportTable*)v); table->col_header_cb( table->callback_col() ); } void AirportBrowser::id_cb( Fl_Widget* o, void* v ) { ((AirportBrowser*)v)->id_cb(); } void AirportBrowser::id_cb() { // Convert to uppercase. const char* s = id_->value(); for (int i = 0; s[i] != 0; ++i) { if (islower( s[i] )) { char c = toupper( s[i] ); id_->replace( i, i+1, &c, 1 ); } } const apt_dat_t* apt = table_->select_id( s ); show_runways( apt ); show_parking( apt ); } void AirportBrowser::name_cb( Fl_Widget* o, void* v ) { ((AirportBrowser*)v)->name_cb(); } void AirportBrowser::name_cb() { table_->select_name( name_->value() ); } Fl_Color AirportBrowser::col_header_color() const { return table_->col_header_color(); } void AirportBrowser::col_header_color( Fl_Color c ) { table_->col_header_color( c ); } static bool apt_id_comp( const apt_dat_t& a, const apt_dat_t& b ) { return a.id_ < b.id_; } /** * */ void AirportBrowser::runways_idle_proc( void* v ) { ((AirportBrowser*)v)->runways_idle_proc(); } /** * */ static string reverse_runway( const string& rwy ) { if (!isdigit( rwy[0] )) return string(""); int heading = atoi( rwy.c_str() ); heading += 18; if (heading > 36) heading -= 36; char c = rwy[ rwy.length() - 1 ]; if (c == 'L') c = 'R'; else if (c == 'R') c = 'L'; else if (c != 'C') c = 0; char buf[10]; sprintf( buf, "%02d%c", heading, c ); return string(buf); } void AirportBrowser::runways_idle_proc( ) { static const char space[] = " \t\n\r"; static const char junk[] = "?\n\r"; int count = 200; char line[512]; char *token; string location; setlocale( LC_ALL, "C" ); while (count-- > 0 && gzgets( gzf_, line, sizeof line ) != 0) { // Read 'count' airports, or until EOF or error. token = strtok(line, space); if(token == NULL) { continue; } else if(!strcmp(token, "99")) { break; } int type_num = atoi(token); if ( type_num == 1 || type_num == 16 || type_num == 17 ) // It's an airport, an heliport or a seabase { location = ""; token = strtok(NULL, space); token = strtok(NULL, space); token = strtok(NULL, space); token = strtok(NULL, space); // We've found the airport apt_dat_t apt; apt.id_ = token; apt.name_ = strtok(NULL, junk); apt.type_ = type_num; if (apt.name_[0] == ' ') apt.name_.erase( 0, 1); if (apt.name_.find( "[H] " ) == 0) { apt.name_.erase(0, 4); apt.name_ += " [H]"; } else if (apt.name_.find( "[S] " ) == 0) { apt.name_.erase(0, 4); apt.name_ += " [S]"; } airports_.push_back( apt ); } else if (type_num == 10) // Now read in the runways and taxiways { if ( location.empty() ) { token = strtok(NULL, space); float lat = strtod( token, 0 ); token = strtok(NULL, space); float lon = strtod( token, 0 ); std::ostringstream os; os << ( lon < 0 ? 'w' : 'e' ) << std::setfill('0') << std::setw( 3 ) << (int)fabs( floor( lon ) ) << ( lat < 0 ? 's' : 'n' ) << std::setfill( '0' ) << std::setw( 2 ) << (int)fabs( floor( lat ) ); location = os.str(); apt_dat_t &apt = airports_.back(); airports_by_tiles_[ location ].push_back( apt.id_ ); apt.lon_ = lon; apt.lat_ = lat; } else { strtok(NULL, space); strtok(NULL, space); } string rwy( strtok(NULL, space) ); if (rwy != "xxx") { if ( rwy.length() > 1 && rwy[ rwy.length() - 1 ] == 'x' ) rwy.erase( rwy.length() - 1 ); airports_.back().runways_.push_back( rwy ); string rev = reverse_runway( rwy ); if (!rev.empty()) airports_.back().runways_.push_back( rev ); } } else if (type_num == 100) // Runways (850) { strtok(NULL, space); strtok(NULL, space); strtok(NULL, space); strtok(NULL, space); strtok(NULL, space); strtok(NULL, space); strtok(NULL, space); string rwy( strtok(NULL, space) ); airports_.back().runways_.push_back( rwy ); if ( location.empty() ) { token = strtok(NULL, space); float lat = strtod( token, 0 ); token = strtok(NULL, space); float lon = strtod( token, 0 ); std::ostringstream os; os << ( lon < 0 ? 'w' : 'e' ) << std::setfill('0') << std::setw( 3 ) << (int)fabs( floor( lon ) ) << ( lat < 0 ? 's' : 'n' ) << std::setfill( '0' ) << std::setw( 2 ) << (int)fabs( floor( lat ) ); location = os.str(); apt_dat_t &apt = airports_.back(); airports_by_tiles_[ location ].push_back( apt.id_ ); apt.lon_ = lon; apt.lat_ = lat; } else { strtok(NULL, space); strtok(NULL, space); } strtok(NULL, space); strtok(NULL, space); strtok(NULL, space); strtok(NULL, space); strtok(NULL, space); strtok(NULL, space); rwy = strtok(NULL, space); airports_.back().runways_.push_back( rwy ); } else if (type_num == 101) // Water runways (850) { strtok(NULL, space); strtok(NULL, space); string rwy( strtok(NULL, space) ); airports_.back().runways_.push_back( rwy ); if ( location.empty() ) { token = strtok(NULL, space); float lat = strtod( token, 0 ); token = strtok(NULL, space); float lon = strtod( token, 0 ); std::ostringstream os; os << ( lon < 0 ? 'w' : 'e' ) << std::setfill('0') << std::setw( 3 ) << (int)fabs( floor( lon ) ) << ( lat < 0 ? 's' : 'n' ) << std::setfill( '0' ) << std::setw( 2 ) << (int)fabs( floor( lat ) ); location = os.str(); apt_dat_t &apt = airports_.back(); airports_by_tiles_[ location ].push_back( apt.id_ ); apt.lon_ = lon; apt.lat_ = lat; } else { strtok(NULL, space); strtok(NULL, space); } rwy = strtok(NULL, space); airports_.back().runways_.push_back( rwy ); } else if (type_num == 102) // Helipads (850) { string rwy( strtok(NULL, space) ); if ( rwy.length() > 1 && rwy[ rwy.length() - 1 ] == 'x' ) rwy.erase( rwy.length() - 1 ); airports_.back().runways_.push_back( rwy ); if ( location.empty() ) { token = strtok(NULL, space); float lat = strtod( token, 0 ); token = strtok(NULL, space); float lon = strtod( token, 0 ); std::ostringstream os; os << ( lon < 0 ? 'w' : 'e' ) << std::setfill('0') << std::setw( 3 ) << (int)fabs( floor( lon ) ) << ( lat < 0 ? 's' : 'n' ) << std::setfill( '0' ) << std::setw( 2 ) << (int)fabs( floor( lat ) ); location = os.str(); apt_dat_t &apt = airports_.back(); airports_by_tiles_[ location ].push_back( apt.id_ ); apt.lon_ = lon; apt.lat_ = lat; } } } if (gzeof( gzf_ )) { gzclose( gzf_ ); Fl::remove_idle( runways_idle_proc, this ); std::sort( airports_.begin(), airports_.end(), apt_id_comp ); runways_loaded_ = true; if (runways_loaded_cb_ != 0) runways_loaded_cb_( this, runways_loaded_cb_data_ ); } setlocale( LC_ALL, "" ); } const apt_dat_t* AirportBrowser::find( const string& id ) const { apt_dat_t key; key.id_ = id; vector< apt_dat_t >::const_iterator i( std::lower_bound( airports_.begin(), airports_.end(), key, apt_id_comp ) ); return i == airports_.end() ? 0 : &*i; } void AirportBrowser::show_installed( bool state ) { static vector apts; typedef vector::size_type size_type; apts.clear(); if(state){ size_type count = installed_airports_.size(); apts.reserve( count ); for (std::set::iterator i = installed_airports_.begin(); i != installed_airports_.end(); ++i) { const apt_dat_t* apt = find( *i ); if (apt != 0) apts.push_back( apt ); } }else{ size_type count = airports_.size(); apts.reserve( count ); for (unsigned int i = 0; i < airports_.size(); ++i) { apts.push_back( &airports_[i] ); } } table_->set_airports( apts ); id_->activate(); name_->activate(); } bool rwy_comp( const string& a, const string& b ) { return a.substr(0,2) < b.substr(0,2); } void AirportBrowser::show_runways( const apt_dat_t* apt ) { if (apt == 0) return; vector< string > rwys; unsigned int i; for (i = 0; i < apt->runways_.size(); ++i) { rwys.push_back( apt->runways_[i] ); } std::sort( rwys.begin(), rwys.end() ); runways_->clear(); runways_->add( _("") ); for (i = 0; i < rwys.size(); ++i) { runways_->add( rwys[i].c_str() ); } runways_->select( 1 ); } void AirportBrowser::browser_cb( Fl_Widget* o, void* v ) { ((AirportBrowser*)v)->browser_cb(); } void AirportBrowser::browser_cb() { table_->browser_cb(); show_runways( table_->get_selected() ); show_parking( table_->get_selected() ); } string AirportBrowser::get_selected_id() const { const apt_dat_t* apt = table_->get_selected(); return apt == 0 ? string("") : apt->id_; } string AirportBrowser::get_selected_name() const { const apt_dat_t* apt = table_->get_selected(); return apt == 0 ? string("") : apt->name_; } string AirportBrowser::get_selected_runway() const { int n = runways_->value(); return n > 1 ? string( runways_->text(n) ) : string(""); } string AirportBrowser::get_selected_parking() const { int n = parking_->value(); return n > 0 ? string( parking_->text(n) ) : string(""); } void AirportBrowser::select_id( const string& id ) { const apt_dat_t* apt = table_->select_id( id.c_str() ); show_runways( apt ); show_parking( apt ); } void AirportBrowser::select_rwy( const string& id ) { for ( int i = 1; i < runways_->size(); ++i ) { if ( id == runways_->text(i) ) { runways_->select( i ); parking_->deselect(); break; } } } void AirportBrowser::select_parking( const string& id ) { for ( int i = 1; i < parking_->size(); ++i ) { if ( id == parking_->text(i) ) { parking_->select( i ); runways_->deselect(); break; } } } void AirportBrowser::load_runways( const string& fg_root, Fl_Callback* cb, void* v ) { this->fg_root_ = fg_root; runways_loaded_cb_ = cb; runways_loaded_cb_data_ = v; airports_.clear(); airports_.reserve( 27000 ); gzf_ = gzopen( ( fg_root + "/Airports/apt.dat.gz" ).c_str(), "rb" ); if (gzf_ == 0) { throw _("gzopen error"); } // Skip first line. char c; while ((c = gzgetc(gzf_)) != -1 && c != '\n') ; runways_loaded_ = false; airports_loaded_ = false; id_->deactivate(); name_->deactivate(); // Load the file in the background. Fl::add_idle( runways_idle_proc, this ); } /** * */ void AirportBrowser::load_airports( const vector& dirs, const SGPath& cache, Fl_Callback* cb, void* v ) { table_->clear(); runways_->clear(); installed_airports_.clear(); installed_dirs_.clear(); airports_loaded_cb_ = cb; airports_loaded_cb_data_ = v; airports_cache_ = cache; airports_loaded_ = false; scenery_roots_.clear(); for ( vector::const_iterator ii = dirs.begin(); ii != dirs.end(); ++ii ) { SGPath p( *ii ); if ( p.file() == "Terrain" ) scenery_roots_.push_back( p.dir() ); else scenery_roots_.push_back( p.str() ); } if (cache.exists()) { bool airports = true; std::ifstream ifs( cache.str().c_str() ); while ( ifs.good() ) { string s; ifs >> s; if ( s == "--dirs--" ) { airports = false; continue; } if ( airports ) installed_airports_.insert( s ); else installed_dirs_.insert( s ); } airports_loaded_ = true; if (airports_loaded_cb_ != 0) airports_loaded_cb_( this, airports_loaded_cb_data_ ); } else { airports_dirs.clear(); std::copy( dirs.begin(), dirs.end(), std::back_inserter( airports_dirs ) ); airports_loaded_ = false; Fl::add_idle( airports_idle_proc, this ); } } void AirportBrowser::airports_idle_proc( void* v ) { ((AirportBrowser*)v)->airports_idle_proc(); } /** * Scan FlightGear Scenery directory and sub-directories for airport files. * Airpots ICAO ids are saved in a cache file. */ void AirportBrowser::airports_idle_proc() { if (airports_dirs.empty()) { Fl::remove_idle( airports_idle_proc, this ); for (std::set::iterator i = installed_dirs_.begin(); i != installed_dirs_.end(); ++i) { for (size_t j = 0; j < airports_by_tiles_[ *i ].size(); ++j) { string s = airports_by_tiles_[ *i ][ j ]; const apt_dat_t* apt = find( airports_by_tiles_[ *i ][ j ] ); if ( apt != 0 && ( apt->type_ == 16 || apt->type_ == 17 ) ) { installed_airports_.insert( apt->id_ ); } } } // Save airports ids to the cache file. if (!airports_cache_.str().empty()) { std::ofstream ofs( airports_cache_.str().c_str() ); if (ofs) // !ofs.fail() { std::copy( installed_airports_.begin(), installed_airports_.end(), std::ostream_iterator( ofs, "\n" ) ); ofs << "--dirs--" << std::endl; std::copy( installed_dirs_.begin(), installed_dirs_.end(), std::ostream_iterator( ofs, "\n" ) ); } } airports_loaded_ = true; if (airports_loaded_cb_ != 0) airports_loaded_cb_( this, airports_loaded_cb_data_ ); return; } string cwd( airports_dirs.front() ); // mingw requires a trailing slash on directory names. if (cwd[ cwd.length() - 1 ] != '/') cwd.append( "/" ); dirent** files; int n = fl_filename_list( cwd.c_str(), &files, fl_numericsort ); if (n > 0) { bool dir_added = false; for (int i = 0; i < n; ++i) { if (fl_filename_match( files[i]->d_name, "[ew][01][0-9][0-9][ns][0-9][0-9]") || fl_filename_match( files[i]->d_name, "[ew][01][0-9][0-9][ns][0-9][0-9]/")) { // Found a scenery sub-directory. string d(cwd); d.append( files[i]->d_name ); if (fl_filename_isdir( d.c_str() ) ) { airports_dirs.push_back( d ); } } else if (fl_filename_match( files[i]->d_name, "???.btg.gz" ) || fl_filename_match( files[i]->d_name, "????.btg.gz" )) { char* p = strstr( files[i]->d_name, ".btg" ); if (p != 0) *p = 0; installed_airports_.insert( string( files[i]->d_name ) ); if ( !dir_added ) { string d( cwd ); if (d[ d.length() - 1 ] == '/') d.erase( d.length() - 1 ); string::size_type p = d.rfind( "/" ); if ( p != string::npos ) installed_dirs_.insert( d.substr( p + 1 ) ); dir_added = true; } } free( files[i] ); } free( files ); } airports_dirs.pop_front(); } void AirportBrowser::refresh_cb( Fl_Widget* o, void* v ) { static_cast(v)->refresh_cb(); } void AirportBrowser::refresh_cb() { if (refresh_cb_) refresh_cb_( this, refresh_cb_data_ ); } void AirportBrowser::set_refresh_callback( Fl_Callback* cbp, void* v ) { refresh_cb_ = cbp; refresh_cb_data_ = v; } bool AirportBrowser::loaded() const { return runways_loaded_ && airports_loaded_; } void AirportBrowser::try_load_parking( apt_dat_t &apt ) { if (apt.id_.length() >= 3) { SGPath pa( "Airports" ); pa.append( apt.id_.substr(0,1) ); pa.append( apt.id_.substr(1,1) ); pa.append( apt.id_.substr(2,1) ); pa.append( apt.id_ ); for ( vector::const_iterator ii = scenery_roots_.begin(); ii != scenery_roots_.end(); ++ii ) { SGPath p( *ii ), p2; p.append( pa.str() ); p2 = p; p.concat( ".groundnet.xml" ); if (load_parking( p, apt )) return; p2.concat( ".parking.xml" ); if (load_parking( p2, apt )) return; } } SGPath path = fg_root_; path.append( "AI/Airports" ); path.append( apt.id_ ); path.append( "parking.xml" ); load_parking( path, apt ); } bool AirportBrowser::load_parking( const SGPath &path, apt_dat_t &data ) { ParkingLoader visitor( data ); if ( path.exists() ) { try { readXML( path.str(), visitor ); return true; } catch (const sg_exception &) { //cerr << "unable to read " << parkpath.str() << endl; } } return false; } void AirportBrowser::show_parking( const apt_dat_t* apt ) { if (apt == 0 || apt->id_.empty()) return; if ( !apt->parkingRead ) { apt_dat_t* apt_ = const_cast(apt); try_load_parking( *apt_ ); apt_->parkingRead = true; } parking_->clear(); for ( std::set::const_iterator ii = apt->parking_.begin(); ii != apt->parking_.end(); ++ii ) { parking_->add( ii->c_str() ); } } void AirportBrowser::cb_runways_(Fl_Widget* o, void* v) { static_cast( o->parent() )->cb_runways(o); } void AirportBrowser::cb_parking_(Fl_Widget* o, void* v) { static_cast( o->parent()->parent() )->cb_parking(o); } void AirportBrowser::cb_runways(Fl_Widget* o) { parking_->deselect(); } void AirportBrowser::cb_parking(Fl_Widget* o) { runways_->deselect(); } fg-fgrun/src/AirportBrowser.h000066400000000000000000000124301245722473500165300ustar00rootroot00000000000000// AirportBrowser.h -- Airport and runway browser widget. // // Written by Bernie Bright, started Oct 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifndef AirportBrowser_h_included #define AirportBrowser_h_included #include #include #include #include #include #include #include #include #include "apt_dat.h" class Fl_Input; class Fl_Hold_Browser; class Fl_Button; class AirportTable; /** * An airport and runway browser. * Runway data is read from FlightGear's apt.dat.gz file. * Airports are located by searching the scenery directory. */ class AirportBrowser : public Fl_Group { public: AirportBrowser( int X, int Y, int W, int H, const char* l=0 ); ~AirportBrowser(); /** * Start loading runways.dat file in the background. * Invoke callback when loading complete. */ void load_runways( const std::string&, Fl_Callback* cb =0, void* v =0 ); /** * Start scanning scenery directories for airport files in the background. * Invoke callback when scan complete. */ void load_airports( const std::vector& dirs, const SGPath& cache, Fl_Callback* cb =0, void* v =0); /** * */ Fl_Color col_header_color() const; void col_header_color( Fl_Color ); /** * */ Fl_Font col_header_font() const; void col_header_font( Fl_Font ); /** * */ uchar col_header_fontsize() const; void col_header_fontsize( uchar ); /** * */ int selection() const; std::string get_selected_id() const; std::string get_selected_name() const; std::string get_selected_runway() const; std::string get_selected_parking() const; /** * */ void select_id( const std::string& id ); /** * */ void select_rwy( const std::string& id ); /** * */ void select_parking( const std::string& id ); /** * */ void show_installed( bool refresh = false ); int handle( int e ); /** * */ bool loaded() const; void set_refresh_callback( Fl_Callback* cbp, void* v ); const apt_dat_t* find( const std::string& id ) const; protected: void draw(); private: static void col_header_cb( Fl_Widget*, void* ); static void id_cb( Fl_Widget*, void* ); void id_cb(); static void name_cb( Fl_Widget*, void* ); void name_cb(); static void refresh_cb( Fl_Widget*, void* ); void refresh_cb(); static void runways_idle_proc( void* ); void runways_idle_proc(); static void airports_idle_proc( void* ); void airports_idle_proc(); static void browser_cb( Fl_Widget*, void* ); void browser_cb(); void show_runways( const apt_dat_t* apt ); void try_load_parking( apt_dat_t &data ); bool load_parking( const SGPath &path, apt_dat_t &data ); void show_parking( const apt_dat_t* apt ); static void cb_runways_(Fl_Widget* o, void* v); static void cb_parking_(Fl_Widget* o, void* v); void cb_runways(Fl_Widget* o); void cb_parking(Fl_Widget* o); private: AirportTable* table_; Fl_Hold_Browser* runways_; Fl_Hold_Browser* parking_; Fl_Input* id_; Fl_Input* name_; Fl_Button* refresh_; gzFile gzf_; /** * Directory names to search while scanning * for installed airport files. */ std::deque< std::string > airports_dirs; /** * Names of all airports located in the scenery directories. */ std::set< std::string > installed_airports_; /** * Names of all individual scenery directories. */ std::set< std::string > installed_dirs_; /** * Names of all scenery trees. */ std::vector< std::string > scenery_roots_; /** * Names of airports and runways loaded from runways.dat. */ std::vector< apt_dat_t > airports_; std::map< std::string, std::vector< std::string > > airports_by_tiles_; /** * True once runways.dat has been loaded. */ bool runways_loaded_; bool airports_loaded_; /** * Callback function to invoke after airport scan is complete. */ Fl_Callback* airports_loaded_cb_; void* airports_loaded_cb_data_; /** * Callback function to invoke after runways.dat is loaded. */ Fl_Callback* runways_loaded_cb_; void* runways_loaded_cb_data_; /* * Installed airport name cache file. */ SGPath airports_cache_; Fl_Callback* refresh_cb_; void* refresh_cb_data_; SGPath fg_root_; }; #endif // AirportBrowser_h_included fg-fgrun/src/AirportTable.cxx000066400000000000000000000171021245722473500165100ustar00rootroot00000000000000// AirportTable.cxx -- Airport table. // // Written by Bernie Bright, started Oct 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #include #include #include #include #include #include #include "AirportTable.h" #include "apt_dat.h" #include "i18n.h" using std::string; using std::vector; /** * */ class SortColumn { private: int col_; bool reverse_; public: SortColumn( int col, bool reverse ) : col_(col), reverse_(reverse) {} bool operator()( const apt_dat_t* a, const apt_dat_t* b ) const { if (col_ == 0) return reverse_ ? (b->id_ < a->id_) : (a->id_ < b->id_); else return reverse_ ? (boost::algorithm::to_lower_copy(b->name_) < boost::algorithm::to_lower_copy(a->name_)) : (boost::algorithm::to_lower_copy(a->name_) < boost::algorithm::to_lower_copy(b->name_)); } }; /** * Helper class to perform a case insensitve search * on airport names. */ class NoCaseFind { private: std::string key; public: NoCaseFind( const char *name) : key( name) {} bool operator()( const apt_dat_t* a) const { std::string name( a->name_); std::string::size_type mini = std::min( name.size(), key.size() ); for ( std::string::size_type i=0; i < mini; i++ ) { if ( toupper( key[i]) != toupper(name[i]) ) return false; } return true; } }; AirportTable::AirportTable( int X, int Y, int W, int H, const char* l ) : Fl_Table_Row( X, Y, W, H, l ) , sort_reverse_(false) , sort_lastcol_(0) , selected_(-1) { cols(2); rows( 100 ); col_header(1); col_width( 1, tiw - col_width(0) ); row_height_all( 16 ); } AirportTable::~AirportTable() { } void AirportTable::draw_cell( TableContext context, int R, int C, int X, int Y, int W, int H ) { switch (context) { case CONTEXT_STARTPAGE: // fl_font( FL_COURIER, 14 ); return; case CONTEXT_ROW_HEADER: fl_color( FL_RED ); fl_rectf( X, Y, W, H ); return; case CONTEXT_COL_HEADER: fl_font( FL_HELVETICA /*| FL_BOLD*/, 12 ); fl_push_clip( X, Y, W, H ); { static char* headers[2] = { _("ICAO Id"), _("Name") }; fl_draw_box( FL_THIN_UP_BOX, X, Y, W, H, col_header_color() ); fl_color(FL_BLACK); fl_draw( headers[C], X+2, Y, W, H, FL_ALIGN_LEFT, 0, 0); if (C == sort_lastcol_) { int xlft = X+(W-6)-8, xctr = X+(W-6)-4, xrit = X+(W-6)-0, ytop = Y+(H/2)-4, ybot = Y+(H/2)+4; if ( sort_reverse_ ) { // ENGRAVED UP ARROW fl_color(FL_WHITE); fl_line(xrit, ybot, xctr, ytop); fl_line(xrit, ybot, xlft, ybot); fl_color(41); // dark gray fl_line(xlft, ybot, xctr, ytop); } else { // ENGRAVED DOWN ARROW fl_color(FL_WHITE); fl_line(xrit, ytop, xctr, ybot); fl_color(41); // dark gray fl_line(xlft, ytop, xrit, ytop); fl_line(xlft, ytop, xctr, ybot); } } } fl_pop_clip(); return; case CONTEXT_CELL: fl_font( FL_HELVETICA, 12 ); fl_push_clip( X, Y, W, H ); { fl_color( row_selected(R) ? selection_color() : FL_WHITE); fl_rectf(X, Y, W, H); if (!rowdata_.empty()) { const string& s = (C == 0 ? rowdata_[R]->id_ : rowdata_[R]->name_); fl_color(FL_BLACK); fl_draw( s.c_str(), X+2, Y, W, H, FL_ALIGN_LEFT ); } // BORDER fl_color(FL_LIGHT2); fl_rect(X, Y, W, H); } fl_pop_clip(); return; case CONTEXT_ENDPAGE: case CONTEXT_RC_RESIZE: case CONTEXT_NONE: case CONTEXT_TABLE: return; } } void AirportTable::browser_cb() { switch( callback_context() ) { case CONTEXT_COL_HEADER: if (Fl::event() == FL_RELEASE && Fl::event_button() == 1) { col_header_cb( callback_col() ); } break; case CONTEXT_CELL: if (Fl::event() == FL_RELEASE && Fl::event_button() == 1) { selected_ = callback_row(); //cell_cb(); } break; default: return; } } void AirportTable::col_header_cb( int C ) { if (sort_lastcol_ == C) sort_reverse_ = !sort_reverse_; else sort_reverse_ = false; sort_column( C, sort_reverse_ ); sort_lastcol_ = C; } void AirportTable::cell_cb() { } void AirportTable::sort_column( int col, bool reverse ) { std::sort( rowdata_.begin(), rowdata_.end(), SortColumn( col, reverse ) ); redraw(); } const apt_dat_t* AirportTable::select_id( const char* id ) { // Ensure we use the correct sort order. if (sort_lastcol_ != 0) { sort_column( 0, sort_reverse_ ); sort_lastcol_ = 0; } apt_dat_t key; key.id_ = string(id); select_all_rows( 0 ); // de-select all rows iterator i = std::lower_bound( rowdata_.begin(), rowdata_.end(), &key, SortColumn( 0, sort_reverse_ ) ); if (i != rowdata_.end()) { selected_ = std::distance( rowdata_.begin(), i ); if (sort_reverse_ && selected_ > 0) --selected_; top_row( selected_ ); select_row( selected_, 1 ); return *i; } else { return 0; } } const apt_dat_t* AirportTable::select_name( const char* name ) { // Ensure we use the correct sort order. if (sort_lastcol_ != 1) { sort_column( 1, sort_reverse_ ); sort_lastcol_ = 1; } select_all_rows( 0 ); // de-select all rows iterator i = std::find_if( rowdata_.begin(), rowdata_.end(), NoCaseFind( name ) ); if (i != rowdata_.end()) { selected_ = std::distance( rowdata_.begin(), i ); if (sort_reverse_ && selected_ > 0) --selected_; top_row( selected_ ); select_row( selected_, 1 ); return *i; } else { return 0; } } void AirportTable::set_airports( const vector& apts ) { clear(); fl_cursor( FL_CURSOR_WAIT ); Fl::flush(); rowdata_ = apts; rows( int( apts.size() ) ); cols(2); col_header(1); col_width( 1, tiw - col_width(0) ); row_height_all( 16 ); fl_cursor( FL_CURSOR_DEFAULT ); } const apt_dat_t* AirportTable::get_selected() const { if (selected_ >= 0 && selected_ < (int)rowdata_.size()) return rowdata_[ selected_ ]; else return 0; } void AirportTable::resize( int X, int Y, int W, int H ) { Fl_Table::resize( X, Y, W, H ); col_width( 1, tiw - col_width(0) ); } fg-fgrun/src/AirportTable.h000066400000000000000000000035461245722473500161440ustar00rootroot00000000000000// AirportTable.h -- Airport table. // // Written by Bernie Bright, started Oct 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifndef AirportTable_h_included #define AirportTable_h_included #include #include "Fl_Table_Row.H" struct apt_dat_t; /** * */ class AirportTable : public Fl_Table_Row { public: typedef std::vector< const apt_dat_t* > rowdata_type; typedef rowdata_type::iterator iterator; AirportTable( int X, int Y, int W, int H, const char* l=0 ); ~AirportTable(); void browser_cb(); void col_header_cb( int col ); void cell_cb(); const apt_dat_t* select_id( const char* id ); const apt_dat_t* select_name( const char* name ); const apt_dat_t* get_selected() const; void set_airports( const rowdata_type& apts ); void resize( int X, int Y, int W, int H ); protected: void draw_cell( TableContext context, int R=0, int C=0, int X=0, int Y=0, int W=0, int H=0 ); void sort_column( int col, bool reverse = false ); private: rowdata_type rowdata_; bool sort_reverse_; int sort_lastcol_; int selected_; }; #endif // AirportTable_h_included fg-fgrun/src/CMakeLists.txt000066400000000000000000000027711245722473500161420ustar00rootroot00000000000000 if (WIN32) set( platform_srcs run_win32.cxx ) set( platform_incs os_win32.h ) else (WIN32) set( platform_srcs run_posix.cxx fgrun_pty.cxx ) set( platform_incs os_posix.h ) endif (WIN32) if (MSVC) set( RESOURCE_FILE fgrun.rc ) endif (MSVC) FLTK_WRAP_UI(Wizard wizard.fl) add_library(Wizard ${Wizard_FLTK_UI_SRCS}) FLTK_WRAP_UI(Advanced advanced.fl) add_library(Advanced ${Advanced_FLTK_UI_SRCS}) set( ui_libs_1_3 Wizard Advanced ) set(SOURCES wizard_funcs.cxx advanced_funcs.cxx AirportBrowser.cxx AirportTable.cxx Fl_Table.cxx Fl_Table_Row.cxx Fl_OSG.cxx Fl_Heading_Dial.cxx main.cxx io.cxx fgfsrc.cxx logwin.cxx parkingloader.cxx settings.cxx util.cxx ${platform_srcs} ${RESOURCE_FILE} ) set(HEADERS AirportBrowser.h AirportTable.h Fl_Table.H Fl_Table_Row.H Fl_OSG.h Fl_Heading_Dial.H logwin.h parkingloader.h util.h ${platform_incs} ) set( simgear_libs ${SIMGEAR_LIBRARIES} ${SIMGEAR_CORE_LIBRARY_DEPENDENCIES} ${SIMGEAR_SCENE_LIBRARY_DEPENDENCIES}) add_executable(fgrun WIN32 ${SOURCES} ${HEADERS}) add_dependencies(fgrun Wizard) add_dependencies(fgrun Advanced) target_link_libraries(fgrun ${ui_libs_1_3} ${WINSOCK_LIBRARY} ${simgear_libs} ${OPENSCENEGRAPH_LIBRARIES} ${FLTK_LIBRARIES} ${ZLIB_LIBRARIES} ${INTL_LIBRARY} ${OPENPTY_LIBRARY} ${PLATFORM_LIBS} ${OPENGL_LIBRARIES} ) install(TARGETS fgrun RUNTIME DESTINATION bin) fg-fgrun/src/Fl_Heading_Dial.H000066400000000000000000000023621245722473500164200ustar00rootroot00000000000000// Fl_Heading_Dial.H -- Custom Fl_Dial with wrap around. // // Written by Bernie Bright, started Dec 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifndef Fl_Heading_Dial_H #define Fl_Heading_Dial_H #include /** * Like Fl_Dial but with wrap around and a fixed range of [0-360]. */ class Fl_Heading_Dial : public Fl_Dial { public: Fl_Heading_Dial(int x,int y,int w,int h, const char *l = 0); int handle( int ); protected: void draw(); void draw_ticks(); }; #endif // Fl_Heading_Dial_H fg-fgrun/src/Fl_Heading_Dial.cxx000066400000000000000000000051511245722473500170320ustar00rootroot00000000000000// Fl_Heading_Dial.cxx -- Custom Fl_Dial with wrap around. // // Written by Bernie Bright, started Dec 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #include #include #include #include "Fl_Heading_Dial.H" Fl_Heading_Dial::Fl_Heading_Dial( int x, int y, int w, int h, const char *l ) : Fl_Dial(x,y,w,h,l) { type(1); angles( -180, 180 ); maximum( 360 ); } int Fl_Heading_Dial::handle( int event ) { int X = x(); int Y = y(); int W = w(); int H = h(); if (event == FL_DRAG) { short a1 = angle1(); short a2 = angle2(); int mx = (Fl::event_x() - X - W / 2) * H; int my = (Fl::event_y() - Y - H / 2) * W; if (!mx && !my) return 1; double angle = 270 - atan2((float)-my, (float)mx) * 180 / M_PI; double oldangle = (a2 - a1) * (value() - minimum()) / (maximum()-minimum()) + a1; while (angle < oldangle-180) angle += 360; while (angle > oldangle+180) angle -= 360; // Calculate new value with wrap. double val = minimum() + (maximum()-minimum())*(angle-a1)/(a2-a1); while (val < 0) val += 360; while (val >= 360) val -= 360; handle_drag(clamp(round(val))); return 1; } else { return Fl_Dial::handle( event, X, Y, W, H ); } } void Fl_Heading_Dial::draw() { Fl_Dial::draw(); draw_ticks(); } void Fl_Heading_Dial::draw_ticks() { int ox = x(); int oy = y(); int ww = w(); int hh = h(); int side = ww; oy = oy + (hh-side) / 2; double step = 30 * M_PI / 180.0; double x1, y1, x2, y2; double cx = ox + side / 2; double cy = oy + side / 2; double rds = side / 2; for (int i = 0; i < 12; ++i) { double na = i * step; double ca = cos( na ); double sa = sin( na ); x1 = cx + rds * ca; y1 = cy - rds * sa; x2 = cx + (rds-6) * ca; y2 = cy - (rds-6)*sa; fl_color( FL_BLACK ); fl_line( int(x1), int(y1), int(x2), int(y2) ); fl_color( FL_WHITE ); } } fg-fgrun/src/Fl_OSG.cxx000066400000000000000000000244561245722473500152030ustar00rootroot00000000000000#include #include "Fl_OSG.h" #include "i18n.h" #include #include #include #include #include #include #define HUD_SCALE_FACTOR 1.5 Fl_OSG::Fl_OSG( int x, int y, int w, int h, const char *label ) : AdapterWidget(x,y,w,h,label) { getCamera()->setViewport( new osg::Viewport( 0, 0, w, h ) ); getCamera()->setProjectionMatrixAsPerspective( 30.0f, static_cast(w)/static_cast(h), 1.0f, 10000.0f ); getCamera()->setGraphicsContext( getGraphicsWindow() ); setThreadingModel( osgViewer::Viewer::SingleThreaded ); hud = new osg::Camera; hud->setProjectionMatrix( osg::Matrix::ortho( 0, w*HUD_SCALE_FACTOR, 0, h*HUD_SCALE_FACTOR, 0, -1 ) ); hud->setReferenceFrame( osg::Transform::ABSOLUTE_RF ); hud->setViewMatrix( osg::Matrix::identity() ); hud->setClearMask( GL_DEPTH_BUFFER_BIT ); hud->setRenderOrder( osg::Camera::POST_RENDER ); hud->setAllowEventFocus( false ); setCameraManipulator( new osgGA::TrackballManipulator ); addEventHandler( new osgViewer::StatsHandler ); setSceneData( new osg::Node ); } void Fl_OSG::draw() { frame(); } static osg::Geometry *drawStar( osg::Vec3 position, int xincr, double size, double depth, osg::Vec4 color ) { osg::Geometry* geom = new osg::Geometry; osg::Vec3Array* vertices = new osg::Vec3Array; osg::DrawElementsUByte *de = new osg::DrawElementsUByte( GL_TRIANGLES ); osg::Vec3 delta( 110+xincr, 7, 0 ); double innerScale = cos( 2.*M_PI / 5. ) / cos( M_PI / 5. ); double dAngle = M_PI / 5.; for ( int i = 0; i < 5; ++i ) { double angle = (2. * i * M_PI / 5.) + (M_PI / 2.); vertices->push_back( position+delta+osg::Vec3( cos( angle )*size, sin( angle )*size, depth ) ); vertices->push_back( position+delta+osg::Vec3( cos( angle+dAngle )*size*innerScale, sin( angle+dAngle )*size*innerScale, depth ) ); de->push_back( (2*i + 9) % 10 ); de->push_back( 2*i ); de->push_back( 2*i + 1 ); } geom->setVertexArray(vertices); de->push_back(1); de->push_back(3); de->push_back(5); de->push_back(5); de->push_back(7); de->push_back(9); de->push_back(1); de->push_back(5); de->push_back(9); osg::Vec3Array* normals = new osg::Vec3Array; normals->push_back(osg::Vec3(0.0f,0.0f,1.0f)); geom->setNormalArray(normals); geom->setNormalBinding(osg::Geometry::BIND_OVERALL); osg::Vec4Array* colors = new osg::Vec4Array; colors->push_back(color); geom->setColorArray(colors); geom->setColorBinding(osg::Geometry::BIND_OVERALL); osg::StateSet* stateset = geom->getOrCreateStateSet(); stateset->setMode(GL_BLEND,osg::StateAttribute::ON); stateset->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); geom->addPrimitiveSet(de); return geom; } static osg::Geometry *drawUnrated( osg::Vec3 position, int xincr ) { osg::Geometry* geom = new osg::Geometry; osg::Vec3Array* vertices = new osg::Vec3Array; osg::Vec3 delta( 110+xincr, 7, 0 ); vertices->push_back(osg::Vec3(position.x()+100+xincr,position.y()-2,0)); vertices->push_back(osg::Vec3(position.x()+225+xincr,position.y()+14,0)); geom->setVertexArray(vertices); osg::Vec3Array* normals = new osg::Vec3Array; normals->push_back(osg::Vec3(0.0f,0.0f,1.0f)); geom->setNormalArray(normals); geom->setNormalBinding(osg::Geometry::BIND_OVERALL); osg::Vec4Array* colors = new osg::Vec4Array; colors->push_back(osg::Vec4(1.,0.,0.,7.)); geom->setColorArray(colors); geom->setColorBinding(osg::Geometry::BIND_OVERALL); osg::StateSet* stateset = geom->getOrCreateStateSet(); stateset->setAttributeAndModes( new osg::LineWidth(1) ); geom->addPrimitiveSet(new osg::DrawArrays(GL_LINES,0,2)); //geom->setEventCallback( return geom; } static void addBar( osg::Geode *geode, osg::Vec3 &position, int xincr, int val ) { for ( int i = 0; i < 5; ++i ) { geode->addDrawable( drawStar( position+osg::Vec3(25*i,0,0), xincr, 12, -0.1, osg::Vec4( 1., 1., .8, 0.2 ) ) ); } for ( int i=0; i < val; ++i ) { geode->addDrawable( drawStar( position+osg::Vec3(25*i,0,0), xincr, 9, 0, osg::Vec4( 1., 1., 0., 0.7 ) ) ); } if (val < 0) geode->addDrawable( drawUnrated( position, xincr ) ); } void Fl_OSG::set_fg_root( const char *fgr ) { font = SGPath( fgr ); font.append("Fonts/LiberationFonts/LiberationSans-Regular.ttf"); } osgText::Text *Fl_OSG::drawText( const char *t, osg::Vec3 position ) { osgText::Text* text = new osgText::Text; text->setFont(font.str()); text->setPosition(position); text->setCharacterSize( 20.0 ); text->setText(t); return text; } void Fl_OSG::drawRating( osg::Geode *geode, osg::Vec3 position, const char *t, int rating, int xincr ) { geode->addDrawable( drawText( t, position ) ); addBar( geode, position, xincr, ( rating >= 0 && rating <= 5 ) ? rating : -1 ); } void Fl_OSG::set_model( osg::Node *m, int fdm, int systems, int cockpit, int model ) { osg::ref_ptr root = new osg::Group; root->addChild( m ); thumbnailTransform.release(); hud->removeChildren( 0, hud->getNumChildren() ); drawRatings( root, fdm, systems, cockpit, model ); } void Fl_OSG::setThumbnailTransform(int w, int h) { if (!thumbnailTransform.valid()) return; float hudAspect = float(w) / float(h); osg::Vec2 origin(0,0); float scale; if (imgAspect > hudAspect) { scale = 0.75 * w*HUD_SCALE_FACTOR / imgAspect; } else { scale = 0.75 * h*HUD_SCALE_FACTOR; } if (scale > 1000.0) scale = 1000.0; origin.x() = (w*HUD_SCALE_FACTOR - imgAspect*scale) / 2.0; origin.y() = (h*HUD_SCALE_FACTOR - scale) / 2.0; thumbnailTransform->setMatrix(osg::Matrix::scale(scale, scale, 1.0) * osg::Matrix::translate(osg::Vec3(origin,0.0))); } void Fl_OSG::set_thumbnail( const char *path, int fdm, int systems, int cockpit, int model ) { hud->removeChildren( 0, hud->getNumChildren() ); osg::ref_ptr root = new osg::Group; #if 1 osgDB::ReaderWriter::ReadResult rr = osgDB::Registry::instance()->readImage( path, 0 ); if (rr.validImage()) { osg::ref_ptr tex = new osg::Texture2D; tex->setImage( rr.getImage() ); tex->setResizeNonPowerOfTwoHint( false ); tex->setFilter( osg::Texture2D::MIN_FILTER,osg::Texture2D::LINEAR ); tex->setFilter( osg::Texture2D::MAG_FILTER,osg::Texture2D::LINEAR ); tex->setWrap( osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_EDGE ); tex->setWrap( osg::Texture::WRAP_T, osg::Texture::CLAMP_TO_EDGE ); imgAspect = float(rr.getImage()->s()) / float(rr.getImage()->t()); thumbnailTransform = new osg::MatrixTransform; osg::Geometry *geom = osg::createTexturedQuadGeometry( osg::Vec3(0,0,0), osg::Vec3(imgAspect,0,0), osg::Vec3(0,1,0) ); osg::Geode *g = new osg::Geode; g->addDrawable(geom); osg::StateSet *ss = g->getOrCreateStateSet(); ss->setTextureAttributeAndModes( 0, tex, osg::StateAttribute::ON ); ss->setTextureAttributeAndModes( 0, new osg::TexEnv(osg::TexEnv::DECAL), osg::StateAttribute::ON ); thumbnailTransform->addChild(g); setThumbnailTransform(w(), h()); hud->addChild(thumbnailTransform); } #endif drawRatings( root, fdm, systems, cockpit, model, path ); } void Fl_OSG::drawRatings( osg::Group *root, int fdm, int systems, int cockpit, int model, const char *path ) { osg::Geode *geode = new osg::Geode; osg::StateSet* stateset = geode->getOrCreateStateSet(); stateset->setMode(GL_LIGHTING,osg::StateAttribute::OFF); osg::Vec3 position(30.0f,10.0f,0.0f); osg::Vec3 deltaY(0.0f,22.0f,0.0f); osg::Vec3 deltaX(20.0f,0.0f,0.0f); int xincr = atoi( _("RatingPos") ); bool hasRating = false; if (model >= 0 && model <= 5 ) { drawRating( geode, position, _("Model : "), model, xincr ); position += deltaY; hasRating = true; } if (cockpit >= 0 && cockpit <= 5 ) { drawRating( geode, position, _("Cockpit : "), cockpit, xincr ); position += deltaY; hasRating = true; } if (systems >= 0 && systems <= 5 ) { drawRating( geode, position, _("Systems : "), systems, xincr ); position += deltaY; hasRating = true; } if (fdm >= 0 && fdm <= 5 ) { drawRating( geode, position, _("FDM : "), fdm, xincr ); position += deltaY; hasRating = true; } position -= deltaX; if (hasRating) { geode->addDrawable( drawText( _("Rating"), position ) ); } else { geode->addDrawable( drawText( _("No Rating"), position ) ); } position += deltaY; hud->addChild( geode ); root->addChild( hud ); setSceneData( root ); } void Fl_OSG::resize(int x, int y, int w, int h) { setThumbnailTransform(w, h); hud->setProjectionMatrix( osg::Matrix::ortho( 0, w*HUD_SCALE_FACTOR, 0, h*HUD_SCALE_FACTOR, 0, -1 ) ); AdapterWidget::resize(x, y, w, h); } void idle_cb() { Fl::redraw(); } AdapterWidget::AdapterWidget( int x, int y, int w, int h, const char *label ) : Fl_Gl_Window(x, y, w, h, label ) { _gw = new osgViewer::GraphicsWindowEmbedded( x, y, w, h ); } void AdapterWidget::resize(int x, int y, int w, int h) { _gw->getEventQueue()->windowResize( x, y, w, h ); _gw->resized( x, y, w, h ); Fl_Gl_Window::resize( x, y, w, h ); } int AdapterWidget::handle(int event) { switch(event) { case FL_PUSH: _gw->getEventQueue()->mouseButtonPress(Fl::event_x(), Fl::event_y(), Fl::event_button()); return 1; case FL_MOVE: case FL_DRAG: _gw->getEventQueue()->mouseMotion(Fl::event_x(), Fl::event_y()); return 1; case FL_RELEASE: _gw->getEventQueue()->mouseButtonRelease(Fl::event_x(), Fl::event_y(), Fl::event_button()); return 1; case FL_KEYDOWN: _gw->getEventQueue()->keyPress((osgGA::GUIEventAdapter::KeySymbol)Fl::event_key()); return 1; case FL_KEYUP: _gw->getEventQueue()->keyRelease((osgGA::GUIEventAdapter::KeySymbol)Fl::event_key()); return 1; default: // pass other events to the base class return Fl_Gl_Window::handle(event); } } fg-fgrun/src/Fl_OSG.h000066400000000000000000000030411245722473500146130ustar00rootroot00000000000000#ifndef Fl_OSG_h #define Fl_OSG_h #include #include #include #include namespace osgText { class Text; } class AdapterWidget : public Fl_Gl_Window { public: AdapterWidget(int x, int y, int w, int h, const char *label=0); virtual ~AdapterWidget() {} osgViewer::GraphicsWindow* getGraphicsWindow() { return _gw.get(); } const osgViewer::GraphicsWindow* getGraphicsWindow() const { return _gw.get(); } virtual void resize(int x, int y, int w, int h); protected: virtual int handle(int event); osg::ref_ptr _gw; }; class Fl_OSG : public osgViewer::Viewer, public AdapterWidget { public: Fl_OSG(int x, int y, int w, int h, const char *label=0); void set_model( osg::Node *m, int fdm, int systems, int cockpit, int model ); void set_thumbnail( const char *path, int fdm, int systems, int cockpit, int model ); void set_fg_root( const char *fgr ); virtual void resize(int x, int y, int w, int h); protected: virtual void draw(); osgText::Text *drawText( const char *t, osg::Vec3 position ); void drawRating( osg::Geode *geode, osg::Vec3 position, const char *t, int rating, int xincr ); void drawRatings( osg::Group *root, int fdm, int systems, int cockpit, int model, const char *path = 0 ); void setThumbnailTransform(int w, int h); osg::ref_ptr hud; osg::ref_ptr thumbnailTransform; float imgAspect; SGPath font; }; #endif fg-fgrun/src/Fl_Table.H000066400000000000000000000306101245722473500151540ustar00rootroot00000000000000// // Fl_Table -- A table widget // // Copyright 2002 by Greg Ercolano. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 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 // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems to "erco at seriss dot com". // // TODO: // o Auto scroll during dragged selection // o Keyboard navigation (up/down/left/right arrow) // #ifndef _FL_TABLE_H #define _FL_TABLE_H #include #include // memcpy #ifdef _WIN32 #include // WINDOWS: malloc/realloc #else /*_WIN32*/ #include // UNIX: malloc/realloc #endif /*_WIN32*/ #include #include #include #include #include class Fl_Table : public Fl_Group { public: enum TableContext { CONTEXT_NONE = 0, CONTEXT_STARTPAGE, // before a page is redrawn CONTEXT_ENDPAGE, // after a page is redrawn CONTEXT_ROW_HEADER, // in the row header CONTEXT_COL_HEADER, // in the col header CONTEXT_CELL, // in one of the cells CONTEXT_TABLE, // in the table CONTEXT_RC_RESIZE // column or row being resized }; private: int _rows, _cols, // total rows/cols _row_header_w, // width of row header _col_header_h, // height of column header _row_position, // last row_position set (not necessarily == toprow!) _col_position; // last col_position set (not necessarily == leftcol!) char _row_header, // row header enabled? _col_header, // col header enabled? _row_resize, // row resizing enabled? _col_resize; // col resizing enabled? int _row_resize_min, // row minimum resizing height (default=1) _col_resize_min; // col minimum resizing width (default=1) // OPTIMIZATION: partial row/column redraw variables int _redraw_toprow, _redraw_botrow, _redraw_leftcol, _redraw_rightcol; Fl_Color _row_header_color, _col_header_color; // An STL-ish vector without templates class IntVector { int *arr; unsigned int _size; void init() { arr = NULL; _size = 0; } void copy(int *newarr, unsigned int newsize) { size(newsize); memcpy(arr, newarr, newsize * sizeof(int)); } public: IntVector() { init(); } // CTOR ~IntVector() { if ( arr ) free(arr); arr = NULL; } // DTOR IntVector(IntVector&o) { init(); copy(o.arr, o._size); } // COPY CTOR IntVector& operator=(IntVector&o) // ASSIGN { init(); copy(o.arr, o._size); return(*this); } int operator[](int x) const { return(arr[x]); } int& operator[](int x) { return(arr[x]); } unsigned int size() { return(_size); } void size(unsigned int count) { if ( count != _size ) { arr = (int*)realloc(arr, count * sizeof(int)); _size = count; } } int pop_back() { int tmp = arr[_size-1]; _size--; return(tmp); } void push_back(int val) { unsigned int x = _size; size(_size+1); arr[x] = val; } int back() { return(arr[_size-1]); } }; IntVector _colwidths, // column widths in pixels _rowheights; // row heights in pixels Fl_Cursor _last_cursor; // last mouse cursor before changed to 'resize' cursor // EVENT CALLBACK DATA TableContext _callback_context; // event context int _callback_row, _callback_col; // event row/col // handle() state variables. // Put here instead of local statics in handle(), so more // than one Fl_Table can exist without crosstalk between them. // int _resizing_col, // column being dragged _resizing_row, // row being dragged _dragging_x, // starting x position for horiz drag _dragging_y, // starting y position for vert drag _last_row; // last row we FL_PUSH'ed // Redraw single cell void _redraw_cell(TableContext context, int R, int C); protected: enum ResizeFlag { RESIZE_NONE = 0, RESIZE_COL_LEFT = 1, RESIZE_COL_RIGHT = 2, RESIZE_ROW_ABOVE = 3, RESIZE_ROW_BELOW = 4 }; int table_w, table_h; // table's virtual size (in pixels) int toprow, botrow, // four corners of viewable table leftcol, rightcol; // OPTIMIZATION: Precomputed scroll positions for the toprow/leftcol int toprow_scrollpos, leftcol_scrollpos; // Dimensions int tix, tiy, tiw, tih, // data table inner dimension xywh tox, toy, tow, toh, // data table outer dimension xywh wix, wiy, wiw, wih; // widget inner dimension xywh Fl_Scroll *table; // container for child fltk widgets (if any) Fl_Scrollbar *vscrollbar, // vertical scrollbar *hscrollbar; // horizontal scrollbar // Fltk int handle(int e); // fltk handle() override // Class maintenance void recalc_dimensions(); void table_resized(); // table resized; recalc void table_scrolled(); // table scrolled; recalc void get_bounds(TableContext context, // return x/y/w/h bounds for context int &X, int &Y, int &W, int &H); void change_cursor(Fl_Cursor newcursor); // change mouse cursor to some other shape TableContext cursor2rowcol(int &R, int &C, ResizeFlag &resizeflag); // find r/c given current x/y event int find_cell(TableContext context, // find cell's x/y/w/h given r/c int R, int C, int &X, int &Y, int &W, int &H); int row_col_clamp(TableContext context, int &R, int &C); // clamp r/c to known universe // Called to draw cells virtual void draw_cell(TableContext context, int R=0, int C=0, int X=0, int Y=0, int W=0, int H=0) { } // overridden by deriving class long row_scroll_position(int row); // find scroll position of row (in pixels) long col_scroll_position(int col); // find scroll position of col (in pixels) int is_fltk_container() // does table contain fltk widgets? { return( Fl_Group::children() > 3 ); } // (ie. more than box and 2 scrollbars?) static void scroll_cb(Fl_Widget*,void*); // h/v scrollbar callback void redraw_range(int toprow, int botrow, int leftcol, int rightcol) { if ( _redraw_toprow == -1 ) { // Initialize redraw range _redraw_toprow = toprow; _redraw_botrow = botrow; _redraw_leftcol = leftcol; _redraw_rightcol = rightcol; } else { // Extend redraw range if ( toprow < _redraw_toprow ) _redraw_toprow = toprow; if ( botrow > _redraw_botrow ) _redraw_botrow = botrow; if ( leftcol < _redraw_leftcol ) _redraw_leftcol = leftcol; if ( rightcol > _redraw_rightcol ) _redraw_rightcol = rightcol; } // Indicate partial redraw needed of some cells damage(FL_DAMAGE_CHILD); } public: Fl_Table(int X, int Y, int W, int H, const char *l=0); ~Fl_Table(); virtual void clear() { rows(0); cols(0); } // topline() // middleline() // bottomline() inline void table_box(Fl_Boxtype val) { table->box(val); table_resized(); } inline Fl_Boxtype table_box( void ) { return(table->box()); } virtual void rows(int val); // set/get number of rows inline int rows() { return(_rows); } virtual void cols(int val); // set/get number of columns inline int cols() { return(_cols); } inline void visible_cells(int& r1, int& r2, int& c1, int& c2) { r1 = toprow; r2 = botrow; c1 = leftcol; c2 = rightcol; } // Interactive resizing happening? int is_interactive_resize() { return(_resizing_row != -1 || _resizing_col != -1); } inline int row_resize() { return(_row_resize); } void row_resize(int flag) // enable row resizing { _row_resize = flag; } inline int col_resize() { return(_col_resize); } void col_resize(int flag) // enable col resizing { _col_resize = flag; } inline int col_resize_min() // column minimum resizing width { return(_col_resize_min); } void col_resize_min(int val) { _col_resize_min = ( val < 1 ) ? 1 : val; } inline int row_resize_min() // column minimum resizing width { return(_row_resize_min); } void row_resize_min(int val) { _row_resize_min = ( val < 1 ) ? 1 : val; } inline int row_header() // set/get row header enable flag { return(_row_header); } void row_header(int flag) { _row_header = flag; table_resized(); redraw(); } inline int col_header() // set/get col header enable flag { return(_col_header); } void col_header(int flag) { _col_header = flag; table_resized(); redraw(); } inline void col_header_height(int height) // set/get col header height { _col_header_h = height; table_resized(); redraw(); } inline int col_header_height() { return(_col_header_h); } inline void row_header_width(int width) // set/get row header width { _row_header_w = width; table_resized(); redraw(); } inline int row_header_width() { return(_row_header_w); } inline void row_header_color(Fl_Color val) // set/get row header color { _row_header_color = val; redraw(); } inline Fl_Color row_header_color() { return(_row_header_color); } inline void col_header_color(Fl_Color val) // set/get col header color { _col_header_color = val; redraw(); } inline Fl_Color col_header_color() { return(_col_header_color); } void row_height(int row, int height); // set/get row height inline int row_height(int row) { return((row<0 || row>=(int)_rowheights.size()) ? 0 : _rowheights[row]); } void col_width(int col, int width); // set/get a column's width inline int col_width(int col) { return((col<0 || col>=(int)_colwidths.size()) ? 0 : _colwidths[col]); } void row_height_all(int height) // set all row/col heights { for ( int r=0; rinit_sizes(); table->redraw(); } void add(Fl_Widget& w) { table->add(w); } void add(Fl_Widget* w) { table->add(w); } void insert(Fl_Widget& w, int n) { table->insert(w,n); } void insert(Fl_Widget& w, Fl_Widget* w2) { table->insert(w,w2); } void remove(Fl_Widget& w) { table->remove(w); } void begin() { table->begin(); } void end() { table->end(); // HACK: Avoid showing Fl_Scroll; seems to erase screen // causing unnecessary flicker, even if its box() is FL_NO_BOX. // if ( table->children() > 2 ) { table->show(); } else { table->hide(); } Fl_Group::current((Fl_Group*)(Fl_Group::parent())); } Fl_Widget * const *array() { return(table->array()); } Fl_Widget *child(int n) const { return(table->child(n)); } int children() const { return(table->children()-2); } // -2: skip Fl_Scroll's h/v scrollbar widgets int find(const Fl_Widget *w) const { return(table->find(w)); } int find(const Fl_Widget &w) const { return(table->find(w)); } // CALLBACKS int callback_row() { return(_callback_row); } int callback_col() { return(_callback_col); } TableContext callback_context() { return(_callback_context); } void do_callback(TableContext context, int row, int col) { _callback_context = context; _callback_row = row; _callback_col = col; Fl_Widget::do_callback(); } }; #define CONTEXT_NEWPAGE CONTEXT_STARTPAGE // NEWPAGE deprecated #endif /*_FL_TABLE_H*/ fg-fgrun/src/Fl_Table.cxx000066400000000000000000000660401245722473500155750ustar00rootroot00000000000000// // Fl_Table -- A table widget // // Copyright 2002 by Greg Ercolano. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 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 // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems to "erco at seriss dot com". // #include // fprintf #include #include "Fl_Table.H" #define SCROLLBAR_SIZE 16 // Scroll display so 'row' is at top void Fl_Table::row_position(int row) { if ( _row_position == row ) return; // OPTIMIZATION: no change? avoid redraw if ( row < 0 ) row = 0; else if ( row >= rows() ) row = rows() - 1; if ( table_h <= tih ) return; // don't scroll if table smaller than window double newtop = row_scroll_position(row); if ( newtop > vscrollbar->maximum() ) { newtop = vscrollbar->maximum(); } vscrollbar->Fl_Slider::value(newtop); table_scrolled(); redraw(); _row_position = row; // HACK: override what table_scrolled() came up with } // Scroll display so 'col' is at left void Fl_Table::col_position(int col) { if ( _col_position == col ) return; // OPTIMIZATION: no change? avoid redraw if ( col < 0 ) col = 0; else if ( col >= cols() ) col = cols() - 1; if ( table_w <= tiw ) return; // don't scroll if table smaller than window double newleft = col_scroll_position(col); if ( newleft > hscrollbar->maximum() ) { newleft = hscrollbar->maximum(); } hscrollbar->Fl_Slider::value(newleft); table_scrolled(); redraw(); _col_position = col; // HACK: override what table_scrolled() came up with } // Find scroll position of a row (in pixels) long Fl_Table::row_scroll_position(int row) { int startrow = 0; long scroll = 0; // OPTIMIZATION: // Attempt to use precomputed row scroll position if ( toprow_scrollpos != -1 && row >= toprow ) { scroll = toprow_scrollpos; startrow = toprow; } for ( int t=startrow; t= leftcol ) { scroll = leftcol_scrollpos; startcol = leftcol; } for ( int t=startcol; ttype(FL_VERTICAL); vscrollbar->callback(scroll_cb, (void*)this); hscrollbar = new Fl_Scrollbar(x(), y()+h()-SCROLLBAR_SIZE, w(), SCROLLBAR_SIZE); hscrollbar->type(FL_HORIZONTAL); hscrollbar->callback(scroll_cb, (void*)this); table = new Fl_Scroll(x(), y(), w(), h()); table->box(FL_NO_BOX); table->type(0); // don't show Fl_Scroll's scrollbars -- use our own table->hide(); // hide unless children are present table->end(); table_resized(); redraw(); Fl_Group::end(); // end the group's begin() table->begin(); // leave with fltk children getting added to the scroll } // Dtor Fl_Table::~Fl_Table() { // The parent Fl_Group takes care of destroying scrollbars } // Set height of a row void Fl_Table::row_height(int row, int height) { if ( row < 0 ) return; if ( row < (int)_rowheights.size() && _rowheights[row] == height ) { return; } // OPTIMIZATION: no change? avoid redraw // Add row heights, even if none yet while ( row >= (int)_rowheights.size() ) { _rowheights.push_back(height); } _rowheights[row] = height; table_resized(); if ( row <= botrow ) // OPTIMIZATION: only redraw if onscreen or above screen { redraw(); } // ROW RESIZE CALLBACK if ( Fl_Widget::callback() && when() & FL_WHEN_CHANGED ) { do_callback(CONTEXT_RC_RESIZE, row, 0); } } // Set width of a column void Fl_Table::col_width(int col, int width) { if ( col < 0 ) return; if ( col < (int)_colwidths.size() && _colwidths[col] == width ) { return; } // OPTIMIZATION: no change? avoid redraw // Add column widths, even if none yet while ( col >= (int)_colwidths.size() ) { _colwidths.push_back(width); } _colwidths[col] = width; table_resized(); if ( col <= rightcol ) // OPTIMIZATION: only redraw if onscreen or to the left { redraw(); } // COLUMN RESIZE CALLBACK if ( Fl_Widget::callback() && when() & FL_WHEN_CHANGED ) { do_callback(CONTEXT_RC_RESIZE, 0, col); } } // Return row/col clamped to reality int Fl_Table::row_col_clamp(TableContext context, int &R, int &C) { int clamped = 0; if ( R < 0 ) { R = 0; clamped = 1; } if ( C < 0 ) { C = 0; clamped = 1; } switch ( context ) { case CONTEXT_COL_HEADER: // Allow col headers to draw even if no rows if ( R >= _rows && R != 0 ) { R = _rows - 1; clamped = 1; } break; case CONTEXT_ROW_HEADER: // Allow row headers to draw even if no columns if ( C >= _cols && C != 0 ) { C = _cols - 1; clamped = 1; } break; case CONTEXT_CELL: default: // CLAMP R/C TO _rows/_cols if ( R >= _rows ) { R = _rows - 1; clamped = 1; } if ( C >= _cols ) { C = _cols - 1; clamped = 1; } break; } return(clamped); } // Return bounding region for given context void Fl_Table::get_bounds(TableContext context, int &X, int &Y, int &W, int &H) { switch ( context ) { case CONTEXT_COL_HEADER: // Column header clipping. X = tox; Y = wiy; W = tow; H = col_header_height(); return; case CONTEXT_ROW_HEADER: // Row header clipping. X = wix; Y = toy; W = row_header_width(); H = toh; return; case CONTEXT_TABLE: // Table inner dimensions X = tix; Y = tiy; W = tiw; H = tih; return; // TODO: Add other contexts.. default: fprintf(stderr, "Fl_Table::get_bounds(): context %d unimplemented\n", (int)context); return; } //NOTREACHED } // Find row/col beneath cursor // // Returns R/C and context. // Also returns resizeflag, if mouse is hovered over a resize boundary. // Fl_Table::TableContext Fl_Table::cursor2rowcol(int &R, int &C, ResizeFlag &resizeflag) { // return values R = C = 0; resizeflag = RESIZE_NONE; int X, Y, W, H; // Row header? if ( row_header() ) { // Inside a row heading? get_bounds(CONTEXT_ROW_HEADER, X, Y, W, H); if ( Fl::event_inside(X, Y, W, H) ) { // Scan visible rows until found for ( R = toprow; R <= botrow; R++ ) { find_cell(CONTEXT_ROW_HEADER, R, 0, X, Y, W, H); if ( Fl::event_y() >= Y && Fl::event_y() < (Y+H) ) { // Found row? // If cursor over resize boundary, and resize enabled, // enable the appropriate resize flag. // if ( row_resize() ) { if ( Fl::event_y() <= (Y+3-0) ) { resizeflag = RESIZE_ROW_ABOVE; } if ( Fl::event_y() >= (Y+H-3) ) { resizeflag = RESIZE_ROW_BELOW; } } return(CONTEXT_ROW_HEADER); } } // Must be in row header dead zone return(CONTEXT_NONE); } } // Column header? if ( col_header() ) { // Inside a column heading? get_bounds(CONTEXT_COL_HEADER, X, Y, W, H); if ( Fl::event_inside(X, Y, W, H) ) { // Scan visible columns until found for ( C = leftcol; C <= rightcol; C++ ) { find_cell(CONTEXT_COL_HEADER, 0, C, X, Y, W, H); if ( Fl::event_x() >= X && Fl::event_x() < (X+W) ) { // Found column? // If cursor over resize boundary, and resize enabled, // enable the appropriate resize flag. // if ( col_resize() ) { if ( Fl::event_x() <= (X+3-0) ) { resizeflag = RESIZE_COL_LEFT; } if ( Fl::event_x() >= (X+W-3) ) { resizeflag = RESIZE_COL_RIGHT; } } return(CONTEXT_COL_HEADER); } } // Must be in column header dead zone return(CONTEXT_NONE); } } // Mouse somewhere in table? // Scan visible r/c's until we find it. // if ( Fl::event_inside(tox, toy, tow, toh) ) { for ( R = toprow; R <= botrow; R++ ) { find_cell(CONTEXT_CELL, R, C, X, Y, W, H); if ( Fl::event_y() < Y ) break; // OPT: thanks lars if ( Fl::event_y() >= (Y+H) ) continue; // OPT: " " for ( C = leftcol; C <= rightcol; C++ ) { find_cell(CONTEXT_CELL, R, C, X, Y, W, H); if ( Fl::event_inside(X, Y, W, H) ) { return(CONTEXT_CELL); } // found it } } // Must be in a dead zone of the table R = C = 0; return(CONTEXT_TABLE); } // Somewhere else return(CONTEXT_NONE); } // Find X/Y/W/H for cell at R/C // If R or C are out of range, returns -1 // with X/Y/W/H set to zero. // int Fl_Table::find_cell(TableContext context, int R, int C, int &X, int &Y, int &W, int &H) { if ( row_col_clamp(context, R, C) ) // row or col out of range? error { X=Y=W=H=0; return(-1); } X = col_scroll_position(C) - hscrollbar->value() + tix; Y = row_scroll_position(R) - vscrollbar->value() + tiy; W = col_width(C); H = row_height(R); switch ( context ) { case CONTEXT_COL_HEADER: Y = wiy; H = col_header_height(); return(0); case CONTEXT_ROW_HEADER: X = wix; W = row_header_width(); return(0); case CONTEXT_CELL: return(0); case CONTEXT_TABLE: return(0); // TODO -- HANDLE OTHER CONTEXTS default: fprintf(stderr, "Fl_Table::find_cell: unknown context %d\n", (int)context); return(-1); } //NOTREACHED } // Recalculate the window dimensions void Fl_Table::recalc_dimensions() { // Recal to* (Table Outer), ti* (Table Inner), wi* ( Widget Inner) wix = ( x() + Fl::box_dx(box())); tox = wix; tix = tox + Fl::box_dx(table->box()); wiy = ( y() + Fl::box_dy(box())); toy = wiy; tiy = toy + Fl::box_dy(table->box()); wiw = ( w() - Fl::box_dw(box())); tow = wiw; tiw = tow - Fl::box_dw(table->box()); wih = ( h() - Fl::box_dh(box())); toh = wih; tih = toh - Fl::box_dh(table->box()); // Trim window if headers enabled if ( col_header() ) { tiy += col_header_height(); toy += col_header_height(); tih -= col_header_height(); toh -= col_header_height(); } if ( row_header() ) { tix += row_header_width(); tox += row_header_width(); tiw -= row_header_width(); tow -= row_header_width(); } // Make scroll bars disappear if window large enough { // First pass: can hide via window size? int hidev = (table_h <= tih), hideh = (table_w <= tiw); // Second pass: Check for interference if ( !hideh & hidev ) { hidev = (( table_h - tih + SCROLLBAR_SIZE ) <= 0 ); } if ( !hidev & hideh ) { hideh = (( table_w - tiw + SCROLLBAR_SIZE ) <= 0 ); } // Determine scrollbar visibility, trim ti[xywh]/to[xywh] if ( hidev ) { vscrollbar->hide(); } else { vscrollbar->show(); tiw -= SCROLLBAR_SIZE; tow -= SCROLLBAR_SIZE; } if ( hideh ) { hscrollbar->hide(); } else { hscrollbar->show(); tih -= SCROLLBAR_SIZE; toh -= SCROLLBAR_SIZE;} } // Resize the child table table->resize(tox, toy, tow, toh); table->init_sizes(); } // Recalculate internals after a scroll. // // Call this if table has been scrolled or resized. // Does not handle redraw(). // TODO: Assumes ti[xywh] has already been recalculated. // void Fl_Table::table_scrolled() { // Top row int y, row, voff = vscrollbar->value(); for ( row=y=0; row < _rows; row++ ) { y += row_height(row); if ( y >= voff ) { y -= row_height(row); break; } } _row_position = toprow = ( row >= _rows ) ? (row - 1) : row; toprow_scrollpos = y; // OPTIMIZATION: save for later use // Bottom row voff = vscrollbar->value() + tih; for ( ; row < _rows; row++ ) { y += row_height(row); if ( y >= voff ) { break; } } botrow = ( row >= _rows ) ? (row - 1) : row; // Left column int x, col, hoff = hscrollbar->value(); for ( col=x=0; col < _cols; col++ ) { x += col_width(col); if ( x >= hoff ) { x -= col_width(col); break; } } _col_position = leftcol = ( col >= _cols ) ? (col - 1) : col; leftcol_scrollpos = x; // OPTIMIZATION: save for later use // Right column // Work with data left over from leftcol calculation // hoff = hscrollbar->value() + tiw; for ( ; col < _cols; col++ ) { x += col_width(col); if ( x >= hoff ) { break; } } rightcol = ( col >= _cols ) ? (col - 1) : col; // First tell children to scroll draw_cell(CONTEXT_RC_RESIZE, 0,0,0,0,0,0); } // Table resized: recalc internal data // Call this whenever the window is resized. // Recalculates the scrollbar sizes. // Makes no assumptions about any pre-initialized data. // void Fl_Table::table_resized() { table_h = row_scroll_position(rows()); table_w = col_scroll_position(cols()); recalc_dimensions(); // Recalc scrollbar sizes // Clamp scrollbar value() after a resize. // Resize scrollbars to enforce a constant trough width after a window resize. // { float vscrolltab = ( table_h == 0 || tih > table_h ) ? 1 : (float)tih / table_h; float hscrolltab = ( table_w == 0 || tiw > table_w ) ? 1 : (float)tiw / table_w; vscrollbar->bounds(0, table_h-tih); vscrollbar->precision(10); vscrollbar->slider_size(vscrolltab); vscrollbar->resize(wix+wiw-SCROLLBAR_SIZE, wiy, SCROLLBAR_SIZE, wih - ((hscrollbar->visible())?SCROLLBAR_SIZE:0)); vscrollbar->Fl_Valuator::value(vscrollbar->clamp(vscrollbar->value())); hscrollbar->bounds(0, table_w-tiw); hscrollbar->precision(10); hscrollbar->slider_size(hscrolltab); hscrollbar->resize(wix, wiy+wih-SCROLLBAR_SIZE, wiw - ((vscrollbar->visible())?SCROLLBAR_SIZE:0), SCROLLBAR_SIZE); hscrollbar->Fl_Valuator::value(hscrollbar->clamp(hscrollbar->value())); } // Tell FLTK child widgets were resized Fl_Group::init_sizes(); // Recalc top/bot/left/right table_scrolled(); // DO *NOT* REDRAW -- LEAVE THIS UP TO THE CALLER // redraw(); } // Someone moved a scrollbar void Fl_Table::scroll_cb(Fl_Widget*w, void *data) { Fl_Table *o = (Fl_Table*)data; o->recalc_dimensions(); // recalc tix, tiy, etc. o->table_scrolled(); o->redraw(); } // Set number of rows void Fl_Table::rows(int val) { int oldrows = _rows; _rows = val; { int default_h = ( _rowheights.size() > 0 ) ? _rowheights.back() : 25; while ( val > (int)_rowheights.size() ) { _rowheights.push_back(default_h); } // enlarge while ( val < (int)_rowheights.size() ) { _rowheights.pop_back(); } // shrink } table_resized(); // OPTIMIZATION: redraw only if change is visible. if ( val >= oldrows && oldrows > botrow ) { /* NO REDRAW */ } else { redraw(); } } // Set number of cols void Fl_Table::cols(int val) { _cols = val; { int default_w = ( _colwidths.size() > 0 ) ? _colwidths[_colwidths.size()-1] : 80; while ( val > (int)_colwidths.size() ) { _colwidths.push_back(default_w); } // enlarge while ( val < (int)_colwidths.size() ) { _colwidths.pop_back(); } // shrink } table_resized(); redraw(); } // Change mouse cursor to different type void Fl_Table::change_cursor(Fl_Cursor newcursor) { if ( newcursor != _last_cursor ) { fl_cursor(newcursor, FL_BLACK, FL_WHITE); _last_cursor = newcursor; } } // #define DEBUG 1 #ifdef DEBUG #include "eventnames.h" #define PRINTEVENT \ fprintf(stderr,"Table %s: ** Event: %s --\n", (label()?label():"none"), eventnames[event]); #else #define PRINTEVENT #endif // Handle FLTK events int Fl_Table::handle(int event) { PRINTEVENT; int ret = Fl_Group::handle(event); // let FLTK group handle events first // Which row/column are we over? int R, C; // row/column being worked on ResizeFlag resizeflag; // which resizing area are we over? (0=none) TableContext context = cursor2rowcol(R, C, resizeflag); switch ( event ) { case FL_PUSH: // Need this for eg. right click to pop up a menu if ( Fl_Widget::callback() && // callback defined? resizeflag == RESIZE_NONE ) // not resizing? { do_callback(context, R, C); } // do callback switch ( context ) { case CONTEXT_CELL: // FL_PUSH on a cell? ret = 1; // express interest in FL_RELEASE break; case CONTEXT_COL_HEADER: // FL_PUSH on a column header? if ( Fl::event_button() == 1 && resizeflag ) { // Start resize if left click on column border. // "ret=1" ensures we get drag events from now on. // (C-1) is used if mouse is over the left hand side of the cell, // so that we resize the next column over to the left. // _resizing_col = ( resizeflag & RESIZE_COL_LEFT ) ? C-1 : C; _resizing_row = -1; _dragging_x = Fl::event_x(); ret = 1; } break; case CONTEXT_ROW_HEADER: // FL_PUSH on a row header? if ( Fl::event_button() == 1 && resizeflag ) { // Start resize if left mouse clicked on row border. // "ret = 1" ensures we get drag events from now on. // (R-1) is used if mouse is over the top of the cell, // so that we resize the row above. // _resizing_row = ( resizeflag & RESIZE_ROW_ABOVE ) ? R-1 : R; _resizing_col = -1; _dragging_y = Fl::event_y(); ret = 1; } break; default: ret = 0; // express disinterest break; } _last_row = R; break; case FL_DRAG: if ( _resizing_col > -1 ) { // Dragging column? // // Let user drag even /outside/ the row/col widget. // Don't allow column width smaller than 1. // Continue to show FL_CURSOR_WE at all times during drag. // int offset = _dragging_x - Fl::event_x(); int new_w = col_width(_resizing_col) - offset; if ( new_w < _col_resize_min ) new_w = _col_resize_min; col_width(_resizing_col, new_w); _dragging_x = Fl::event_x(); table_resized(); redraw(); change_cursor(FL_CURSOR_WE); ret = 1; if ( Fl_Widget::callback() && when() & FL_WHEN_CHANGED ) { do_callback(CONTEXT_RC_RESIZE, R, C); } } else if ( _resizing_row > -1 ) { // Dragging row? // // Let user drag even /outside/ the row/col widget. // Don't allow row width smaller than 1. // Continue to show FL_CURSOR_NS at all times during drag. // int offset = _dragging_y - Fl::event_y(); int new_h = row_height(_resizing_row) - offset; if ( new_h < _row_resize_min ) new_h = _row_resize_min; row_height(_resizing_row, new_h); _dragging_y = Fl::event_y(); table_resized(); redraw(); change_cursor(FL_CURSOR_NS); ret = 1; if ( Fl_Widget::callback() && when() & FL_WHEN_CHANGED ) { do_callback(CONTEXT_RC_RESIZE, R, C); } } break; case FL_RELEASE: switch ( context ) { case CONTEXT_ROW_HEADER: // release on row header case CONTEXT_COL_HEADER: // release on col header case CONTEXT_CELL: // release on a cell case CONTEXT_TABLE: // release on dead zone if ( _resizing_col == -1 && // not resizing a column _resizing_row == -1 && // not resizing a row Fl_Widget::callback() && // callback defined when() & FL_WHEN_RELEASE && // on button release _last_row == R ) // release on same row PUSHed? { // Need this for eg. left clicking on a cell to select it do_callback(context, R, C); } break; default: break; } if ( Fl::event_button() == 1 ) { change_cursor(FL_CURSOR_DEFAULT); _resizing_col = -1; _resizing_row = -1; ret = 1; } break; case FL_MOVE: if ( context == CONTEXT_COL_HEADER && // in column header? resizeflag ) // resize enabled + near boundary? { change_cursor(FL_CURSOR_WE); } // show resize cursor else if ( context == CONTEXT_ROW_HEADER && // in row header? resizeflag ) // resize enabled + near boundary? { change_cursor(FL_CURSOR_NS); } // show resize cursor else { change_cursor(FL_CURSOR_DEFAULT); } // normal cursor ret = 1; break; case FL_ENTER: // See FLTK event docs on the FL_ENTER widget case FL_LEAVE: // We want to track the mouse if resizing is allowed. if ( resizeflag ) { ret = 1; } if ( event == FL_LEAVE ) { change_cursor(FL_CURSOR_DEFAULT); } // normal cursor break; case FL_FOCUS: case FL_UNFOCUS: // Currently no interest in keyboard focus. // This will likely change when we implement keyboard navigation of cells. // // if (Fl::visible_focus()) // { ret = 1; } break; default: change_cursor(FL_CURSOR_DEFAULT); break; } return(ret); } // Resize FLTK override // Handle resize events if user resizes parent window. // void Fl_Table::resize(int X, int Y, int W, int H) { // Tell group to resize, and recalc our own widget as well Fl_Group::resize(X, Y, W, H); table_resized(); redraw(); } // Draw a cell void Fl_Table::_redraw_cell(TableContext context, int r, int c) { if ( r < 0 || c < 0 ) return; int X,Y,W,H; find_cell(context, r, c, X, Y, W, H); // find positions of cell draw_cell(context, r, c, X, Y, W, H); // call users' function to draw it } // Draw the entire Fl_Table // Override the draw() routine to draw the table. // Then tell the group to draw over us. // void Fl_Table::draw() { draw_cell(CONTEXT_STARTPAGE, 0, 0, // let user's drawing routine tix, tiy, tiw, tih); // prep new page // Let fltk widgets draw themselves first. Do this after // draw_cell(CONTEXT_STARTPAGE) in case user moves widgets around. // Use window 'inner' clip to prevent drawing into table border. // (unfortunately this clips FLTK's border, so we must draw it explicity below) // fl_push_clip(wix, wiy, wiw, wih); { Fl_Group::draw(); } fl_pop_clip(); // Explicitly draw border around widget, if any draw_box(box(), x(), y(), w(), h(), color()); // If Fl_Scroll 'table' is hidden, draw its box // Do this after Fl_Group::draw() so we draw over scrollbars // that leak around the border. // if ( ! table->visible() ) { if ( damage() & FL_DAMAGE_ALL || damage() & FL_DAMAGE_CHILD ) { draw_box(table->box(), tox, toy, tow, toh, table->color()); } } // Clip all further drawing to the inner widget dimensions fl_push_clip(wix, wiy, wiw, wih); { // Only redraw a few cells? if ( ! ( damage() & FL_DAMAGE_ALL ) && _redraw_leftcol != -1 ) { fl_push_clip(tix, tiy, tiw, tih); for ( int c = _redraw_leftcol; c <= _redraw_rightcol; c++ ) for ( int r = _redraw_toprow; r <= _redraw_botrow; r++ ) { _redraw_cell(CONTEXT_CELL, r, c); } fl_pop_clip(); } if ( damage() & FL_DAMAGE_ALL ) { int X,Y,W,H; // Draw row headers, if any if ( row_header() ) { get_bounds(CONTEXT_ROW_HEADER, X, Y, W, H); fl_push_clip(X,Y,W,H); for ( int r = toprow; r <= botrow; r++ ) { _redraw_cell(CONTEXT_ROW_HEADER, r, 0); } fl_pop_clip(); } // Draw column headers, if any if ( col_header() ) { get_bounds(CONTEXT_COL_HEADER, X, Y, W, H); fl_push_clip(X,Y,W,H); for ( int c = leftcol; c <= rightcol; c++ ) { _redraw_cell(CONTEXT_COL_HEADER, 0, c); } fl_pop_clip(); } // Draw all cells. // This includes cells partially obscured off edges of table. // No longer do this last; you might think it would be nice // to draw over dead zones, but on redraws it flickers. Avoid // drawing over deadzones; prevent deadzones by sizing columns. // fl_push_clip(tix, tiy, tiw, tih); { for ( int r = toprow; r <= botrow; r++ ) { for ( int c = leftcol; c <= rightcol; c++ ) { _redraw_cell(CONTEXT_CELL, r, c); } } } fl_pop_clip(); // Draw little rectangle in corner of headers if ( row_header() && col_header() ) { fl_rectf(wix, wiy, row_header_width(), col_header_height(), color()); } // Table has a boxtype? Close those few dead pixels if ( table->box() ) { if ( col_header() ) { fl_rectf(tox, wiy, Fl::box_dx(table->box()), col_header_height(), color()); } if ( row_header() ) { fl_rectf(wix, toy, row_header_width(), Fl::box_dx(table->box()), color()); } } // Table width smaller than window? Fill remainder with rectangle if ( table_w < tiw ) { fl_rectf(tix + table_w, tiy, tiw - table_w, tih, color()); // Col header? fill that too if ( col_header() ) { fl_rectf(tix + table_w, wiy, // get that corner just right.. (tiw - table_w + Fl::box_dw(table->box()) - Fl::box_dx(table->box())), col_header_height(), color()); } } // Table height smaller than window? Fill remainder with rectangle if ( table_h < tih ) { fl_rectf(tix, tiy + table_h, tiw, tih - table_h, color()); if ( row_header() ) { // NOTE: // Careful with that lower corner; don't use tih; when eg. // table->box(FL_THIN_UPFRAME) and hscrollbar hidden, // leaves a row of dead pixels. // fl_rectf(wix, tiy + table_h, row_header_width(), (wiy+wih)-(tiy+table_h)-(hscrollbar->visible()? SCROLLBAR_SIZE:0), color()); } } } // Both scrollbars? Draw little box in lower right if ( vscrollbar->visible() && hscrollbar->visible() ) { fl_rectf(vscrollbar->x(), hscrollbar->y(), vscrollbar->w(), hscrollbar->h(), color()); } draw_cell(CONTEXT_ENDPAGE, 0, 0, // let user's drawing tix, tiy, tiw, tih); // routines cleanup _redraw_leftcol = _redraw_rightcol = _redraw_toprow = _redraw_botrow = -1; } fl_pop_clip(); } fg-fgrun/src/Fl_Table_Row.H000066400000000000000000000076021245722473500160100ustar00rootroot00000000000000#ifndef _FL_TABLE_ROW_H #define _FL_TABLE_ROW_H // // Fl_Table_Row -- A row oriented table widget // // A class specializing in a table of rows. // Handles row-specific selection behavior. // // Copyright 2002 by Greg Ercolano. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 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 // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems to "erco at seriss dot com". // // #include "Fl_Table.H" class Fl_Table_Row : public Fl_Table { private: // An STL-ish vector without templates class CharVector { char *arr; int _size; void init() { arr = NULL; _size = 0; } void copy(char *newarr, int newsize) { size(newsize); memcpy(arr, newarr, newsize * sizeof(char)); } public: CharVector() { init(); } // CTOR ~CharVector() { if ( arr ) free(arr); arr = NULL; } // DTOR CharVector(CharVector&o) { init(); copy(o.arr, o._size); } // COPY CTOR CharVector& operator=(CharVector&o) // ASSIGN { init(); copy(o.arr, o._size); return(*this); } char operator[](int x) const { return(arr[x]); } char& operator[](int x) { return(arr[x]); } int size() { return(_size); } void size(int count) { if ( count != _size ) { char *p = (char*)realloc(arr, count * sizeof(char)); if (p == 0) free(arr); arr = p; _size = count; } } char pop_back() { char tmp = arr[_size-1]; _size--; return(tmp); } void push_back(char val) { int x = _size; size(_size+1); arr[x] = val; } char back() { return(arr[_size-1]); } }; CharVector _rowselect; // selection flag for each row // handle() state variables. // Put here instead of local statics in handle(), so more // than one instance can exist without crosstalk between. // int _dragging_select, // dragging out a selection? _last_row, _last_y, // last event's Y position _last_push_x, // last PUSH event's X position _last_push_y; // last PUSH event's Y position protected: int handle(int event); int find_cell(TableContext context, // find cell's x/y/w/h given r/c int R, int C, int &X, int &Y, int &W, int &H) { return(Fl_Table::find_cell(context, R, C, X, Y, W, H)); } public: Fl_Table_Row(int X, int Y, int W, int H, const char *l=0) : Fl_Table(X,Y,W,H,l) { _dragging_select = 0; _last_row = -1; _last_y = -1; _last_push_x = -1; _last_push_y = -1; } ~Fl_Table_Row() { } void rows(int val); // set number of rows int rows() { return(Fl_Table::rows()); } // get number of rows int row_selected(int row); // is row selected? (0=no, 1=yes, -1=range err) int select_row(int row, int flag=1); // select state for row: flag:0=off, 1=on, 2=toggle // returns: 0=no change, 1=changed, -1=range err void select_all_rows(int flag=1); // all rows to a known state void clear() { rows(0); // implies clearing selection cols(0); Fl_Table::clear(); // clear the table } }; #endif /*_FL_TABLE_ROW_H*/ fg-fgrun/src/Fl_Table_Row.cxx000066400000000000000000000153171245722473500164250ustar00rootroot00000000000000// // Fl_Table_Row -- A row oriented table widget // // A class specializing in a table of rows. // Handles row-specific selection behavior. // // Copyright 2002 by Greg Ercolano. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 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 // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems to "erco at seriss dot com". // // // TODO: // o Row headings (only column headings supported currently) // #include #include #include "Fl_Table_Row.H" // Is row selected? int Fl_Table_Row::row_selected(int row) { if ( row < 0 || row >= rows() ) return(-1); return(_rowselect[row]); } // Change selection state for row // // flag: // 0 - clear selection // 1 - set selection // 2 - toggle selection // // Returns: // 0 - selection state did not change // 1 - selection state changed // -1 - row out of range // int Fl_Table_Row::select_row(int row, int flag) { if ( row < 0 || row >= rows() ) { return(-1); } int oldval = _rowselect[row]; if ( flag == 2 ) { _rowselect[row] ^= 1; } else { _rowselect[row] = flag; } if ( _rowselect[row] != oldval ) // select state changed? { if ( row >= toprow && row <= botrow ) // row visible? { // Extend partial redraw range redraw_range(row, row, leftcol, rightcol); } return(1); } return(0); } // Select all rows to a known state void Fl_Table_Row::select_all_rows(int flag) { char changed = 0; if ( flag == 2 ) { for ( int row=0; row<(int)_rowselect.size(); row++ ) { _rowselect[row] ^= 1; } changed = 1; } else { for ( int row=0; row<(int)_rowselect.size(); row++ ) { changed |= (_rowselect[row] != flag)?1:0; _rowselect[row] = flag; } } if ( changed ) { redraw(); } } // Set number of rows void Fl_Table_Row::rows(int val) { Fl_Table::rows(val); while ( val > (int)_rowselect.size() ) { _rowselect.push_back(0); } // enlarge while ( val < (int)_rowselect.size() ) { _rowselect.pop_back(); } // shrink } // #include "eventnames.h" // debugging // #include // Handle events int Fl_Table_Row::handle(int event) { // fprintf(stderr, "** EVENT: %s: EVENT XY=%d,%d\n", // eventnames[event], Fl::event_x(), Fl::event_y()); // debugging // Let base class handle event int ret = Fl_Table::handle(event); // The following code disables cell selection.. why was it added? -erco 05/18/03 // if ( ret ) { _last_y = Fl::event_y(); return(1); } // base class 'handled' it (eg. column resize) int shiftstate = (Fl::event_state() & FL_CTRL) ? FL_CTRL : (Fl::event_state() & FL_SHIFT) ? FL_SHIFT : 0; // Which row/column are we over? int R, C; // row/column being worked on ResizeFlag resizeflag; // which resizing area are we over? (0=none) TableContext context = cursor2rowcol(R, C, resizeflag); switch ( event ) { case FL_PUSH: if ( Fl::event_button() == 1 ) { _last_push_x = Fl::event_x(); // save regardless of context _last_push_y = Fl::event_y(); // " " // Handle selection in table. // Select cell under cursor, and enable drag selection mode. // if ( context == CONTEXT_CELL ) { // Ctrl key? Toggle selection state switch ( shiftstate ) { case FL_CTRL: select_row(R, 2); // toggle break; case FL_SHIFT: { select_row(R, 1); if ( _last_row > -1 ) { int srow = R, erow = _last_row; if ( srow > erow ) { srow = _last_row; erow = R; } for ( int row = srow; row <= erow; row++ ) { select_row(row, 1); } } break; } default: select_all_rows(0); // clear all previous selections select_row(R, 1); break; } _last_row = R; _dragging_select = 1; ret = 1; // FL_PUSH handled (ensures FL_DRAG will be sent) // redraw(); // redraw() handled by select_row() } } break; case FL_DRAG: { if ( _dragging_select ) { // Dragged off table edges? Handle scrolling int offtop = toy - _last_y, // >0 if off top of table offbot = _last_y - (toy + toh); // >0 if off bottom of table if ( offtop > 0 && row_position() > 0 ) { // Only scroll in upward direction int diff = _last_y - Fl::event_y(); if ( diff < 1 ) { ret = 1; break; } row_position(row_position() - diff); context = CONTEXT_CELL; C = 0; R = row_position(); // HACK: fake it if ( R < 0 || R > rows() ) { ret = 1; break; } // HACK: ugly } else if ( offbot > 0 && botrow < rows() ) { // Only scroll in downward direction int diff = Fl::event_y() - _last_y; if ( diff < 1 ) { ret = 1; break; } row_position(row_position() + diff); context = CONTEXT_CELL; C = 0; R = botrow; // HACK: fake it if ( R < 0 || R > rows() ) { ret = 1; break; } // HACK: ugly } if ( context == CONTEXT_CELL ) { switch ( shiftstate ) { case FL_CTRL: if ( R != _last_row ) // toggle if dragged to new row { select_row(R, 2); } // 2=toggle break; case FL_SHIFT: default: select_row(R, 1); if ( _last_row > -1 ) { int srow = R, erow = _last_row; if ( srow > erow ) { srow = _last_row; erow = R; } for ( int row = srow; row <= erow; row++ ) { select_row(row, 1); } } break; } ret = 1; // drag handled _last_row = R; } } break; } case FL_RELEASE: if ( Fl::event_button() == 1 ) { _dragging_select = 0; ret = 1; // release handled // Clicked off edges of data table? // A way for user to clear the current selection. // int databot = tiy + table_h, dataright = tix + table_w; if ( ( _last_push_x > dataright && Fl::event_x() > dataright ) || ( _last_push_y > databot && Fl::event_y() > databot ) ) { select_all_rows(0); // clear previous selections } } break; default: break; } _last_y = Fl::event_y(); return(ret); } fg-fgrun/src/advanced.fl000066400000000000000000001362201245722473500154670ustar00rootroot00000000000000# data file for the Fltk User Interface Designer (fluid) version 1.0300 do_not_include_H_from_C i18n_type 1 i18n_include "i18n.h" i18n_function _ header_name {.h} code_name {.cxx} declblock {\#ifdef HAVE_CONFIG_H} {open after {\#endif} } { decl {\#include } {private local } } decl {\#include "advanced.h"} {private local } decl {\#include } {private local } decl {\#include } {public local } decl {\#include } {public local } decl {\#define MAX_CLOUD_LAYERS 5} {public local } class Advanced {open } { Function {Advanced(Fl_Preferences& p):prefs(p)} {open } { Fl_Window main_window { label {Advanced Options} open private xywh {701 306 640 480} type Double labelsize 12 resizable code0 {init();} modal visible } { Fl_Browser page_list { callback {if (o->value() > 0) show_page(o->value()-1);} private xywh {0 0 120 430} type Hold labelsize 12 textsize 12 } Fl_Box {} { xywh {150 0 485 430} resizable } Fl_Group {} { xywh {0 435 640 45} } { Fl_Button {button[1]} { label Cancel private xywh {565 450 70 25} labelsize 12 } Fl_Button {button[0]} { label OK private xywh {490 450 70 25} labelsize 12 } Fl_Box {} { xywh {20 435 460 15} resizable } } Fl_Group {page[0]} { label General private xywh {150 0 490 430} labelfont 1 labelsize 16 align 21 hide } { Fl_Input lang { label {Language:} private xywh {250 250 80 25} labelsize 12 textsize 12 } Fl_Input browser { label {Browser:} private xywh {250 280 355 25} labelsize 12 textsize 12 } Fl_Button {} { label {...} callback {fg_browser_cb();} private xywh {610 280 25 25} labelsize 12 } Fl_Input config { label {Config:} private tooltip {Path to additional XML properties file} xywh {250 310 355 25} labelsize 12 textsize 12 } Fl_Button {} { label {...} callback {fg_config_cb();} private xywh {610 310 25 25} labelsize 12 } Fl_Output fg_exe_ { label {Executable:} xywh {250 25 385 25} labelsize 12 textsize 12 } Fl_Output fg_root_ { label {FG_ROOT:} xywh {250 55 385 25} labelsize 12 textsize 12 } Fl_Output fg_scenery_ { label {FG_SCENERY:} xywh {250 85 385 25} labelsize 12 textsize 12 } Fl_Input ts_dir { label {TerraSync directory:} private tooltip {Leave this field empty in order to use the default path.} xywh {250 115 385 25} labelsize 12 textsize 12 } Fl_Output airport_ { label {Airport:} xywh {250 145 240 25} labelsize 12 textsize 12 } Fl_Output runway_ { label {Runway:} xywh {555 145 80 25} labelsize 12 textsize 12 } Fl_Output aircraft_ { label {Aircraft:} xywh {250 175 240 25} labelsize 12 textsize 12 } Fl_Box {} { xywh {255 405 25 25} resizable } } Fl_Group {page[1]} { label Features open private xywh {150 0 490 430} labelfont 1 labelsize 16 align 21 } { Fl_Check_Button specular_highlight { label {Specular highlight} private tooltip {Enable specular reflections on textured objects} xywh {175 50 160 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button splash_screen { label {Splash Screen} private tooltip {Display splash screen at startup} xywh {175 80 160 25} down_box DOWN_BOX value 1 labelsize 12 } Fl_Check_Button mouse_pointer { label {Mouse Pointer} private tooltip {Enable extra mouse pointer} xywh {175 110 160 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button random_objects { label {Random Objects} private tooltip {Enable random scenery objects} xywh {175 140 160 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button panel { label Panel private tooltip {Enable the instrument panel} xywh {345 50 140 25} down_box DOWN_BOX value 1 labelsize 12 } Fl_Check_Button sound { label Sound private tooltip {Enable sound effects} xywh {345 80 140 25} down_box DOWN_BOX value 1 labelsize 12 } Fl_Check_Button hud { label HUD callback {if (o->value()) antialias_hud->activate(); else antialias_hud->deactivate();} private tooltip {Enable Heads Up Display} xywh {345 110 140 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button antialias_hud { label {Anti-alias HUD} private tooltip {Enable anti-aliased HUD} xywh {360 140 130 25} down_box DOWN_BOX labelsize 12 deactivate } Fl_Check_Button auto_coordination { label {Auto-coordination} private tooltip {Enable auto-coordinated turns.} xywh {345 200 140 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button random_trees { label {Random Trees} private xywh {175 170 160 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button horizon_effect { label {Horizon effect} private tooltip {Enable celestial body growth illusion near the horizon} xywh {175 200 160 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button enhanced_lighting { label {Enhanced lighting} private tooltip {Enable enhanced runway lighting} xywh {175 230 160 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button distance_attenuation { label {Distance attenuation} private tooltip {Enable runway light distance attenuation} xywh {175 260 160 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button hud_3d { label {Hud-3D} private tooltip {Enable 3D HUD} xywh {345 170 140 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button failure { label Failures callback {if (o->value()) { failure_electrical->activate(); failure_pitot->activate(); failure_static->activate(); failure_vacuum->activate(); } else { failure_electrical->deactivate(); failure_pitot->deactivate(); failure_static->deactivate(); failure_vacuum->deactivate(); }} private xywh {485 50 150 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button failure_electrical { label electrical private xywh {505 75 130 25} down_box DOWN_BOX labelsize 12 deactivate } Fl_Check_Button failure_pitot { label pitot private xywh {505 100 130 25} down_box DOWN_BOX labelsize 12 deactivate } Fl_Check_Button failure_static { label static private xywh {505 125 130 25} down_box DOWN_BOX labelsize 12 deactivate } Fl_Check_Button failure_vacuum { label vacuum private xywh {505 150 130 25} down_box DOWN_BOX labelsize 12 deactivate } Fl_Check_Button ai_models { label {AI Models} callback {ai_models_cb();} private tooltip {Enable AI traffic} xywh {345 230 140 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button ai_traffic { label {AI Traffic} private xywh {360 260 140 25} down_box DOWN_BOX labelsize 12 } Fl_Box {} { xywh {615 405 25 25} resizable } } Fl_Group {page[2]} { label {Flight Model} private xywh {150 0 490 430} labelfont 1 labelsize 16 align 21 hide } { Fl_Choice fdm { label {FDM:} callback {if (strcmp(o->text(), "automatic selection") == 0){ notrim->activate(); } else { notrim->deactivate(); } } private tooltip {Core Flight Dynamics Model} xywh {270 45 140 25} down_box BORDER_BOX labelsize 12 textsize 12 } { MenuItem {} { label {automatic selection} private xywh {0 0 100 20} labelsize 12 } MenuItem {} { label ada private xywh {0 0 100 20} labelsize 12 } MenuItem {} { label balloon private xywh {0 0 100 20} labelsize 12 } MenuItem {} { label external private xywh {0 0 100 20} labelsize 12 } MenuItem {} { label larcsim private xywh {0 0 100 20} labelsize 12 } MenuItem {} { label magic private xywh {0 0 100 20} labelsize 12 } MenuItem {} { label network private xywh {0 0 100 20} labelsize 12 } MenuItem {} { label null private xywh {0 0 100 20} labelsize 12 } MenuItem {} { label ufo private xywh {0 0 100 20} labelsize 12 } MenuItem {} { label yasim private xywh {0 0 100 20} labelsize 12 } } Fl_Check_Button notrim { label {No Trim} private tooltip {Do not attempt to trim the model} xywh {290 75 85 25} down_box DOWN_BOX labelsize 12 deactivate } Fl_Value_Input model_hz { label {Model Hz:} private tooltip {Run the FDM at this rate (iterations per second)} xywh {270 105 105 25} labelsize 12 minimum 1 maximum 1000 step 1 value 120 textsize 12 } Fl_Value_Input speed { label {Speed:} private tooltip {Run FDM faster than real time} xywh {270 135 105 25} labelsize 12 minimum 1 maximum 1000 step 1 value 1 textsize 12 } Fl_Group {} {open private xywh {220 170 155 50} } { Fl_Round_Button on_ground { label {On Ground} private tooltip {Start at ground level} xywh {270 170 105 25} type Radio down_box ROUND_DOWN_BOX value 1 labelsize 12 } Fl_Round_Button in_air { label {In Air} private tooltip {Start in the air} xywh {270 195 105 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } } Fl_Box {} { xywh {615 405 25 25} resizable } } Fl_Group {page[3]} { label Freeze private xywh {150 0 490 435} labelfont 1 labelsize 16 align 21 hide } { Fl_Check_Button freeze { label Freeze private tooltip {Start paused} xywh {175 35 265 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button fuel_freeze { label {Fuel Freeze} private xywh {175 65 265 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button clock_freeze { label {Clock Freeze} private xywh {175 95 265 25} down_box DOWN_BOX labelsize 12 } Fl_Box {} { xywh {615 410 25 25} resizable } } Fl_Group {page[4]} { label {Initial Position} private xywh {150 0 490 430} labelfont 1 labelsize 16 align 21 hide } { Fl_Input lon { label {Longitude:} private tooltip {Initial longitude, west is negative} xywh {245 35 150 25} labelsize 12 textsize 12 } Fl_Input lat { label {Latitude:} private tooltip {Initial latitude, south is negative} xywh {245 65 150 25} labelsize 12 textsize 12 } Fl_Input altitude { label {Altitude:} private tooltip {Initial altitude in feet} xywh {245 95 150 25} type Float labelsize 12 textsize 12 } Fl_Input vc { label {Airspeed:} private tooltip {Initial airspeed in knots} xywh {245 215 150 25} type Float labelsize 12 textsize 12 } Fl_Input uBody { label {uBody:} private xywh {245 265 150 25} labelsize 12 textsize 12 } Fl_Input vBody { label {vBody:} private xywh {245 295 150 25} labelsize 12 textsize 12 } Fl_Input wBody { label wBody private xywh {245 325 150 25} labelsize 12 textsize 12 } Fl_Value_Input heading { label {Heading:} private tooltip {Initial aircraft heading (yaw) angle 0 to 360 degrees} xywh {245 125 150 25} labelsize 12 maximum 360 step 1 textsize 12 } Fl_Value_Input roll { label {Roll:} private tooltip {Initial roll angle, (Phi)} xywh {245 155 150 25} labelsize 12 minimum -180 maximum 180 step 0.1 textsize 12 } Fl_Value_Input pitch { label {Pitch:} tooltip {Initial pitch angle (Theta)} xywh {245 185 150 25} labelsize 12 minimum -180 maximum 180 step 0.1 textsize 12 } Fl_Input vor { label {VOR:} private xywh {530 35 80 25} labelsize 12 textsize 12 } Fl_Input ndb { label {NDB:} private xywh {530 65 80 25} labelsize 12 textsize 12 } Fl_Input fix { label {Fix:} private xywh {530 95 80 25} labelsize 12 textsize 12 } Fl_Input offset_distance { label {offset distance:} private xywh {530 125 80 25} labelsize 12 textsize 12 } Fl_Input offset_azimuth { label {offset azimuth:} private xywh {530 155 80 25} labelsize 12 textsize 12 } Fl_Input glideslope { label {Glide slope:} private xywh {530 185 80 25} labelsize 12 textsize 12 } Fl_Input roc { label {Climb rate:} private xywh {530 215 80 25} labelsize 12 textsize 12 deactivate } Fl_Box {} { xywh {245 405 25 25} resizable } } Fl_Group {page[5]} { label Rendering private xywh {150 0 490 440} labelfont 1 labelsize 16 align 21 hide } { Fl_Check_Button clouds { label Clouds private tooltip {Enable 2D (flat) cloud layers} xywh {180 40 120 25} down_box DOWN_BOX value 1 labelsize 12 } Fl_Check_Button clouds3d { label {3D Clouds} private tooltip {Enable 3D (volumetric) cloud layers} xywh {180 70 120 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button fullscreen { label {Full Screen} private tooltip {Enable full screen mode} xywh {180 100 120 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button texture_compression { label {Texture compression} private tooltip {Disabling texture compression can solve the bug where terrain is black} xywh {180 130 120 25} down_box DOWN_BOX value 1 labelsize 12 } Fl_Check_Button wireframe { label Wireframe private tooltip {Enable wireframe drawing mode} xywh {180 160 120 25} down_box DOWN_BOX labelsize 12 } Fl_Check_Button rembrandt { label Rembrandt callback {if (o->value()) { anti_aliasing->deactivate(); } else { anti_aliasing->activate(); }} private tooltip {Enable project Rembrandt (deferred rendering)} xywh {180 190 120 25} down_box DOWN_BOX labelsize 12 } Fl_Group {} { label Shading private xywh {315 45 120 100} labelfont 1 align 21 } { Fl_Round_Button shading_smooth { label Smooth private xywh {330 70 105 25} type Radio down_box ROUND_DOWN_BOX value 1 labelsize 12 } Fl_Round_Button shading_flat { label Flat private xywh {330 95 105 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } } Fl_Group {} { label Fog private xywh {450 45 120 100} labelfont 1 align 21 } { Fl_Round_Button fog_disabled { label Disabled private xywh {460 70 110 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } Fl_Round_Button fog_fastest { label Fastest private xywh {460 95 110 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } Fl_Round_Button fog_nicest { label Nicest private xywh {460 120 110 25} type Radio down_box ROUND_DOWN_BOX value 1 labelsize 12 } } Fl_Input geometry { label {Geometry:} private tooltip {Window geometry, WxH} xywh {235 265 120 25} labelsize 12 textsize 12 } Fl_Input visibility { label {Visibility:} private tooltip {Initial visibility distance} xywh {235 295 120 25} type Float labelsize 12 textsize 12 } Fl_Group {} { private xywh {225 320 120 50} } { Fl_Round_Button vis_meters { label Meters private tooltip {Specify visibilty in meters} xywh {235 320 60 25} type Radio down_box ROUND_DOWN_BOX value 1 labelsize 12 } Fl_Round_Button vis_miles { label Miles private tooltip {Specify visiblity in miles} xywh {235 345 60 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } } Fl_Input view_offset { label {View Offset:} private xywh {490 265 120 25} labelsize 12 textsize 12 } Fl_Choice bpp { label {bpp:} open private tooltip {Color depth (bits per pixel)} xywh {490 295 120 25} down_box BORDER_BOX labelsize 12 textsize 12 } { MenuItem {} { label 16 private xywh {0 0 100 20} labelsize 12 } MenuItem {} { label 24 private xywh {0 0 100 20} labelsize 12 } MenuItem {} { label 32 private xywh {0 0 100 20} labelsize 12 } } Fl_Value_Input fov { label {FOV:} private tooltip {Field of View angle} xywh {490 325 120 25} labelsize 12 minimum 1 maximum 360 value 60 textsize 12 } Fl_Choice texture_filtering { label {Texture filtering:} open private tooltip {Set the maximum degree of anisotropy in texture filtering} xywh {490 355 120 25} down_box BORDER_BOX labelsize 12 textsize 12 } {} Fl_Box {} { xywh {615 415 25 25} resizable } Fl_Input materials_file { label {Materials file:} private xywh {490 385 120 25} labelsize 12 textsize 12 } Fl_Choice anti_aliasing { label {Anti-aliasing:} open private tooltip {Set the maximum degree of anti-aliasing. With Rembrandt enabled, the FXAA option of the graphics drivers should be used instead.} xywh {490 415 120 25} down_box BORDER_BOX labelsize 12 textsize 12 } {} Fl_Box {} { xywh {615 475 25 25} resizable } } Fl_Group {page[6]} { label Time private xywh {150 0 490 440} labelfont 1 labelsize 16 align 21 hide } { Fl_Round_Button time_match_real { label {Time match real} callback {if (o->value()) { time_offset_value->activate(); start_date_sys_value->deactivate(); start_date_gmt_value->deactivate(); start_date_lat_value->deactivate(); time_of_day_value->deactivate(); time_offset_value->take_focus(); }} private tooltip {Synchronize simulation time with real time} xywh {175 35 220 25} type Radio down_box ROUND_DOWN_BOX value 1 labelsize 12 } Fl_Round_Button time_match_local { label {Time match local} callback {if (o->value()) { time_offset_value->deactivate(); start_date_sys_value->deactivate(); start_date_gmt_value->deactivate(); start_date_lat_value->deactivate(); time_of_day_value->deactivate(); }} private tooltip {Synchronize simulation time with local time} xywh {175 65 220 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } Fl_Round_Button start_date_sys { label {Start date sys} callback {if (o->value()) { time_offset_value->deactivate(); start_date_sys_value->activate(); start_date_gmt_value->deactivate(); start_date_lat_value->deactivate(); time_of_day_value->deactivate(); start_date_sys_value->take_focus(); }} private xywh {175 95 220 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } Fl_Round_Button start_date_gmt { label {Start date gmt} callback {if (o->value()) { time_offset_value->deactivate(); start_date_sys_value->deactivate(); start_date_gmt_value->activate(); start_date_lat_value->deactivate(); time_of_day_value->deactivate(); start_date_gmt_value->take_focus(); }} private xywh {175 125 220 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } Fl_Round_Button start_date_lat { label {Start date lat} callback {if (o->value()) { time_offset_value->deactivate(); start_date_sys_value->deactivate(); start_date_gmt_value->deactivate(); start_date_lat_value->activate(); time_of_day_value->deactivate(); start_date_lat_value->take_focus(); }} private xywh {175 155 220 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } Fl_Input time_offset_value { private tooltip {Offset (+/-) from real time} xywh {400 35 140 25} labeltype NO_LABEL labelsize 12 when 3 textsize 12 } Fl_Input start_date_sys_value { callback {start_date_sys->setonly();} private xywh {400 95 140 25} labeltype NO_LABEL labelsize 12 when 3 textsize 12 } Fl_Input start_date_gmt_value { callback {start_date_gmt->setonly();} private xywh {400 125 140 25} labeltype NO_LABEL labelsize 12 when 3 textsize 12 } Fl_Input start_date_lat_value { callback {start_date_lat->setonly();} private xywh {400 155 140 25} labeltype NO_LABEL labelsize 12 when 3 textsize 12 } Fl_Round_Button time_of_day { label {Time of day} callback {if (o->value()) { time_offset_value->deactivate(); start_date_sys_value->deactivate(); start_date_gmt_value->deactivate(); start_date_lat_value->deactivate(); time_of_day_value->activate(); time_of_day_value->take_focus(); }} private xywh {175 185 220 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } Fl_Choice time_of_day_value { label {choice:} open private xywh {400 185 140 25} down_box BORDER_BOX labeltype NO_LABEL labelsize 12 textsize 12 } {} Fl_Box {} { xywh {615 415 25 25} resizable } } Fl_Group {page[7]} { label Network private xywh {150 0 490 440} labelfont 1 labelsize 16 align 21 hide } { Fl_Check_Button httpd { label httpd callback {if (o->value()) { httpd_port->activate(); httpd_port->take_focus(); } else { httpd_port->deactivate(); }} private tooltip {Enable HTTP server} xywh {175 35 130 25} down_box DOWN_BOX labelsize 12 } Fl_Value_Input httpd_port { private tooltip {HTTP server port} xywh {305 35 100 25} labeltype NO_LABEL labelsize 12 when 3 minimum 1025 maximum 65535 value 5500 textsize 12 deactivate } Fl_Check_Button props { label props callback {if (o->value()) { props_port->activate(); props_port->take_focus(); } else { props_port->deactivate(); }} private tooltip {Enable property server} xywh {175 65 130 25} down_box DOWN_BOX labelsize 12 } Fl_Value_Input props_port { private tooltip {Property server port} xywh {305 65 100 25} labeltype NO_LABEL labelsize 12 minimum 1025 maximum 65535 value 5501 textsize 12 deactivate } Fl_Check_Button jpg_httpd { label {jpg-httpd} callback {if (o->value()) { jpg_httpd_port->activate(); jpg_httpd_port->take_focus(); } else { jpg_httpd_port->deactivate(); }} private tooltip {Enable screen shot HTTP server} xywh {175 95 130 25} down_box DOWN_BOX labelsize 12 } Fl_Value_Input jpg_httpd_port { private tooltip {Screen shot HTTP server port} xywh {305 95 100 25} labeltype NO_LABEL labelsize 12 minimum 1025 maximum 65535 value 5502 textsize 12 deactivate } Fl_Group {} { label {Multiplayer Options} open xywh {155 135 480 120} box ENGRAVED_FRAME labelfont 1 labelsize 12 align 21 } { Fl_Input callsign { label {Callsign:} private xywh {240 160 135 25} labelsize 12 textsize 12 } Fl_Input multiplay1 { label {Multiplay 1:} private tooltip {in|out,hz,address,port} xywh {240 190 295 25} labelsize 12 textsize 12 } Fl_Input multiplay2 { label {Multiplay 2:} private xywh {240 220 295 25} labelsize 12 textsize 12 } Fl_Box {} { xywh {590 245 40 10} resizable } } Fl_Input proxy { label {Proxy:} private xywh {240 400 230 25} labelsize 12 textsize 12 } Fl_Box {} { xywh {610 415 25 25} resizable } Fl_Group {} { label {FGCom Options} open xywh {155 266 480 120} box ENGRAVED_FRAME labelfont 1 labelsize 12 align 21 } { Fl_Input fgcom_hostname { label {Hostname:} private tooltip {FGCom standalone hostname} xywh {333 349 135 25} labelsize 12 textsize 12 deactivate } Fl_Value_Input fgcom_port { label {Port:} private tooltip {FGCom standalone port} xywh {520 349 85 25} minimum 1025 maximum 65535 value 16661 deactivate } Fl_Box {} { xywh {590 372 40 10} resizable } Fl_Round_Button fgcom_disabled { label Disabled callback {if (o->value()){ fgcom_hostname->deactivate(); fgcom_port->deactivate();}} private tooltip {Disable FGCom} xywh {241 286 228 15} type Radio down_box ROUND_DOWN_BOX value 1 } Fl_Round_Button fgcom_builtin { label {FGCom built-in} callback {if (o->value()){ fgcom_hostname->deactivate(); fgcom_port->deactivate();}} private tooltip {Enable FGCom built-in} xywh {241 305 224 15} type Radio down_box ROUND_DOWN_BOX } Fl_Round_Button fgcom_standalone { label {FGCom standalone} callback {if (o->value()){ fgcom_hostname->activate(); fgcom_port->activate();}} private tooltip {Enable FGCom standalone} xywh {241 325 224 15} type Radio down_box ROUND_DOWN_BOX } } } Fl_Group {page[8]} { label {Input/Output} private xywh {150 0 490 435} labelfont 1 labelsize 16 align 21 hide } { Fl_Browser io_list { callback {io_list_select_cb(o);} private xywh {155 40 480 125} type Hold labeltype NO_LABEL labelsize 12 textsize 12 resizable } Fl_Group {} {open xywh {150 170 485 265} } { Fl_Button io_new { label New callback {io_list_new_cb();} private xywh {500 185 75 25} labelsize 12 } Fl_Button io_delete { label Delete callback {if (io_list->value() > 0) { io_list->remove( io_list->value() ); }} private xywh {580 185 55 25} labelsize 12 deactivate } Fl_Choice io_protocol { label {Protocol:} callback {io_protocol_update_cb();} private xywh {260 185 125 25} down_box BORDER_BOX labelsize 12 textsize 12 } { MenuItem {} { label atcsim private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label atlas private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label garmin private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label AV400 private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label AV400Sim xywh {0 0 100 20} labelsize 12 } MenuItem {} { label generic private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label joyclient private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label jsclient private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label native private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label {native-ctrls} private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label {native-fdm} private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label {native-gui} private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label nmea private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label opengc private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label pve private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label props private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label ray private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label rul private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label telnet private xywh {0 0 100 20} labelsize 12 } } Fl_Choice io_medium { label {Medium:} callback {io_medium_update_cb( o );} private xywh {260 215 125 25} down_box BORDER_BOX labelsize 12 when 6 textsize 12 deactivate } { MenuItem {} { label file private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label serial private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label socket private xywh {5 5 100 20} labelsize 12 } } Fl_Choice io_dir { label {Direction:} callback {io_list_update_cb();} private xywh {260 245 125 25} down_box BORDER_BOX labelsize 12 textsize 12 deactivate } { MenuItem {} { label in private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label out private xywh {5 5 100 20} labelsize 12 } MenuItem {} { label bi private xywh {5 5 100 20} labelsize 12 } } Fl_Value_Input io_hz { label {Hz:} callback {io_list_update_cb();} private xywh {260 275 125 25} labelsize 12 minimum 1 maximum 1000 value 5 textsize 12 deactivate } Fl_Group file_group {open private xywh {165 305 250 25} hide } { Fl_Input io_file_name { label {File:} callback {io_list_update_cb();} private xywh {260 305 125 25} labelsize 12 when 1 textsize 12 } Fl_Button {} { label {...} callback {io_file_cb();} private xywh {390 305 25 25} labelsize 12 } } Fl_Group serial_group {open private xywh {165 305 250 55} hide } { Fl_Input serial_port { label {Port:} callback {io_list_update_cb();} private xywh {260 305 125 25} labelsize 12 when 1 textsize 12 } Fl_Input serial_baud_rate { label {Baud Rate:} callback {io_list_update_cb();} private xywh {260 335 125 25} type Int labelsize 12 when 1 textsize 12 } } Fl_Group socket_group {open private xywh {165 305 250 85} hide } { Fl_Input socket_host { label {Hostname:} callback {io_list_update_cb();} private xywh {260 305 125 25} labelsize 12 when 1 textsize 12 } Fl_Value_Input socket_port { label {Port:} callback {io_list_update_cb();} private xywh {260 335 125 25} labelsize 12 minimum 1024 maximum 65535 step 1 value 5500 textsize 12 } Fl_Round_Button socket_tcp { label TCP callback {io_list_update_cb();} private xywh {260 365 55 25} type Radio down_box ROUND_DOWN_BOX value 1 labelsize 12 } Fl_Round_Button socket_udp { label UDP callback {io_list_update_cb();} private xywh {330 365 85 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } } Fl_Group generic_group {open xywh {165 360 250 30} hide } { Fl_Choice io_generic_file { label {Generic:} callback {io_generic_file_cb();} open xywh {260 365 125 25} down_box BORDER_BOX labelsize 12 textsize 12 } {} } Fl_Group repeat_group {open xywh {165 390 250 30} hide } { Fl_Check_Button repeat { label Repeat callback {repeat_cb();} xywh {260 395 70 25} down_box DOWN_BOX labelsize 12 } Fl_Value_Input repeat_value { callback {repeat_value_cb();} xywh {330 395 55 25} labelsize 12 textsize 12 deactivate } } Fl_Box {} { xywh {460 420 25 15} resizable } } } Fl_Group {page[9]} { label Avionics private xywh {150 0 490 435} labelfont 1 labelsize 16 align 21 hide } { Fl_Input nav1 { label {Nav1:} private tooltip {Set the NAV1 radio frequency, optionally preceded by a radial} xywh {205 40 150 25} labelsize 12 textsize 12 } Fl_Input nav2 { label {Nav2:} private xywh {205 70 150 25} labelsize 12 textsize 12 } Fl_Input adf { label {ADF:} private xywh {205 100 150 25} labelsize 12 textsize 12 } Fl_Group dme_group { private xywh {205 170 165 85} labelsize 12 align 21 deactivate } { Fl_Round_Button dme_nav1 { label Nav1 callback {if (o->value()) dme_int_freq->deactivate();} private xywh {215 170 85 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } Fl_Round_Button dme_nav2 { label Nav2 callback {if (o->value()) dme_int_freq->deactivate();} private xywh {215 195 85 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } Fl_Round_Button dme_int { label Internal callback {if (o->value()) dme_int_freq->activate();} private xywh {215 220 70 25} type Radio down_box ROUND_DOWN_BOX labelsize 12 } Fl_Input dme_int_freq { private xywh {285 220 70 25} labelsize 12 textsize 12 deactivate } } Fl_Check_Button dme { label {DME:} callback {if (o->value()) dme_group->activate(); else dme_group->deactivate();} private xywh {205 140 20 25} down_box DOWN_BOX labelsize 12 align 4 } Fl_Box {} { xywh {615 410 25 25} resizable } } Fl_Group {page[10]} { label Properties private xywh {150 0 550 430} labelfont 1 labelsize 16 align 21 hide } { Fl_Box {} { xywh {220 40 275 125} resizable } Fl_Browser prop_list { callback {list_select_cb( prop_list, prop_input, prop_delete );} private xywh {155 40 480 125} type Hold labeltype NO_LABEL labelsize 12 textsize 12 } Fl_Group {} {open xywh {220 185 415 25} } { Fl_Button prop_delete { label Delete callback {list_delete_cb( prop_list, prop_input, prop_delete );} private xywh {580 185 55 25} labelsize 12 deactivate } Fl_Input prop_input { label {Property:} callback {list_update_cb( prop_list, prop_input );} private tooltip {prop=value} xywh {220 185 275 25} labelsize 12 when 1 textsize 12 deactivate resizable } Fl_Button {} { label New callback {list_new_cb( prop_list, prop_input, prop_delete );} private xywh {500 185 75 25} labelsize 12 } } } Fl_Group {page[11]} { label Debugging private xywh {150 0 490 430} labelfont 1 labelsize 16 align 21 hide } { Fl_Group {} {open xywh {160 45 475 35} } { Fl_Choice log_level { label {Log Level:} open private xywh {260 45 130 25} down_box BORDER_BOX labelsize 12 textsize 12 } {} Fl_Box {} { xywh {390 70 125 10} resizable } } Fl_Group {} {open xywh {160 105 475 275} resizable } { Fl_Group {} {open xywh {160 105 475 125} } { Fl_Box {} { xywh {210 105 295 80} resizable } Fl_Browser trace_read_list { label {Trace Read Properties} callback {list_select_cb( trace_read_list, trace_read_input, trace_read_delete );} private xywh {160 105 475 80} type Hold labelfont 1 align 5 textsize 12 } Fl_Group {} {open xywh {200 195 435 25} } { Fl_Input trace_read_input { label {Value:} callback {list_update_cb( trace_read_list, trace_read_input );} private xywh {200 195 305 25} labelsize 12 when 1 textsize 12 deactivate resizable } Fl_Button {} { label New callback {list_new_cb( trace_read_list, trace_read_input, trace_read_delete );} private xywh {510 195 70 25} labelsize 12 } Fl_Button trace_read_delete { label Delete callback {list_delete_cb( trace_read_list, trace_read_input, trace_read_delete );} private xywh {585 195 50 25} labelsize 12 deactivate } } } Fl_Group {} {open xywh {160 230 475 150} } { Fl_Box {} { xywh {200 265 305 80} resizable } Fl_Browser trace_write_list { label {Trace Write Properties} callback {list_select_cb( trace_write_list, trace_write_input, trace_write_delete );} private xywh {160 265 475 80} type Hold labelfont 1 align 5 textsize 12 } Fl_Group {} {open xywh {200 355 435 25} } { Fl_Input trace_write_input { label {Value:} callback {list_update_cb( trace_write_list, trace_write_input );} private xywh {200 355 305 25} labelsize 12 when 1 textsize 12 deactivate resizable } Fl_Button {} { label New callback {list_new_cb( trace_write_list, trace_write_input, trace_write_delete );} private xywh {510 355 70 25} labelsize 12 } Fl_Button trace_write_delete { label Delete callback {list_delete_cb( trace_write_list, trace_write_input, trace_write_delete );} private xywh {585 355 50 25} labelsize 12 deactivate } } } } } Fl_Group {page[12]} { label Environment private xywh {150 0 490 430} labelfont 1 labelsize 16 align 21 hide } { Fl_Box {} { xywh {220 40 275 125} resizable } Fl_Browser env_list { callback {list_select_cb( env_list, env_input, env_delete );} xywh {155 40 480 125} type Hold labelsize 12 textsize 12 } Fl_Button {} { label New callback {list_new_cb( env_list, env_input, env_delete );} private xywh {500 185 75 25} labelsize 12 } Fl_Button env_delete { label Delete callback {list_delete_cb( env_list, env_input, env_delete );} private xywh {580 185 55 25} labelsize 12 deactivate } Fl_Input env_input { label {Value:} callback {list_update_cb( env_list, env_input );} private xywh {220 185 275 25} labelsize 12 when 1 textsize 12 deactivate } } Fl_Group {page[13]} { label Weather private xywh {150 0 490 440} labelfont 1 align 21 hide } { Fl_Group {} {open xywh {155 35 230 280} box ENGRAVED_FRAME labeltype NO_LABEL align 17 } { Fl_Dial wind_dial { label {Wind Direction} callback {wind_dial_cb();} private xywh {205 60 130 130} type Line labelsize 12 align 1 code0 {\#include "Fl_Heading_Dial.H"} class Fl_Heading_Dial } Fl_Value_Input wind_hdg { label {Heading:} callback {wind_hdg_cb();} private tooltip {Direction wind is coming from.} xywh {235 200 80 25} labelsize 12 maximum 360 step 0.1 textsize 12 } Fl_Value_Input wind_speed { label {Speed (kts):} private tooltip {Wind speed (kts)} xywh {235 245 80 25} labelsize 12 maximum 500 step 0.1 textsize 12 } Fl_Check_Button random_wind { label {Random Winds} callback {random_wind_cb();} private xywh {235 280 105 25} down_box DOWN_BOX labelsize 12 } } Fl_Value_Slider turbulence { label Turbulence private tooltip {calm (0.0) to severe (1.0)} xywh {430 35 25 275} labelsize 12 minimum 1 maximum 0 } Fl_Input ceiling { label {Ceiling:} tooltip {FT_ASL[:THICKNESS_FT]} xywh {235 335 80 25} labelsize 12 textsize 12 } Fl_Check_Button fetch_real_weather { label {Fetch real weather} xywh {235 370 155 25} down_box DOWN_BOX labelsize 12 } Fl_Box {} { xywh {615 415 25 25} resizable } } Fl_Group {page[14]} { label Clouds private xywh {150 0 490 440} labelfont 1 align 21 hide } { Fl_Choice cloud_layer_ { label {Layer:} callback {cloud_layer_cb();} private xywh {255 80 120 25} down_box BORDER_BOX labelsize 12 textsize 12 } { MenuItem {} { label 0 xywh {0 0 100 20} labelsize 12 } MenuItem {} { label 1 xywh {0 0 100 20} labelsize 12 } MenuItem {} { label 2 xywh {0 0 100 20} labelsize 12 } MenuItem {} { label 3 xywh {0 0 100 20} labelsize 12 } MenuItem {} { label 4 xywh {0 0 100 20} labelsize 12 } } Fl_Value_Input cloud_elevation_ { label {Elevation(ft):} callback {cloud_elevation[ cloud_layer_->value() ] = cloud_elevation_->value();} private xywh {255 110 120 25} labelsize 12 maximum 100000 step 100 textsize 12 } Fl_Value_Input cloud_thickness_ { label {Thickness (ft):} callback {cloud_thickness[ cloud_layer_->value() ] = cloud_thickness_->value();} private xywh {255 140 120 25} labelsize 12 maximum 100000 step 10 textsize 12 } Fl_Choice cloud_coverage_ { label {Coverage:} callback {cloud_coverage[ cloud_layer_->value() ] = cloud_coverage_->value();} open private xywh {255 170 120 25} down_box BORDER_BOX labelsize 12 textsize 12 } {} Fl_Value_Input cloud_span_ { label {Span (m):} callback {cloud_span[ cloud_layer_->value() ] = cloud_span_->value();} private xywh {255 200 120 25} labelsize 12 maximum 100000 step 1 textsize 12 deactivate } Fl_Value_Input cloud_transition_ { label {Transition (ft):} callback {cloud_transition[ cloud_layer_->value() ] = cloud_transition_->value();} private xywh {255 230 120 25} labelsize 12 maximum 100000 step 1 textsize 12 deactivate } Fl_Box {} { xywh {615 415 25 25} resizable } } } } decl {~Advanced();} {public local } decl {int exec(Fl_Preferences&);} {public local } decl {void load_settings(Fl_Preferences&);} {public local } decl {void save_settings(Fl_Preferences&);} {public local } decl {void reset_settings(Fl_Preferences&);} {public local } decl {void init();} {private local } decl {void io_list_select_cb( Fl_Browser* );} {private local } decl {void io_list_new_cb();} {private local } decl {void io_list_update_cb();} {private local } decl {void io_medium_update_cb( Fl_Choice* );} {private local } decl {void io_protocol_update_cb();} {private local } decl {void show_page( unsigned int n );} {private local } decl {void list_new_cb( Fl_Browser*, Fl_Input*, Fl_Button*);} {private local } decl {void list_delete_cb(Fl_Browser*,Fl_Input*,Fl_Button*);} {private local } decl {void list_select_cb(Fl_Browser*,Fl_Input*,Fl_Button*);} {private local } decl {void list_update_cb(Fl_Browser*,Fl_Input*);} {private local } decl {void io_file_cb();} {private local } decl {void io_generic_file_cb();} {private local } decl {void repeat_cb();} {private local } decl {void repeat_value_cb();} {private local } decl {void fg_browser_cb();} {private local } decl {void ai_models_cb();} {selected private local } decl {void wind_dial_cb();} {private local } decl {void wind_hdg_cb();} {private local } decl {void cloud_layer_cb();} {private local } decl {double cloud_elevation[ MAX_CLOUD_LAYERS ];} {private local } decl {double cloud_thickness[ MAX_CLOUD_LAYERS ];} {private local } decl {int cloud_coverage[ MAX_CLOUD_LAYERS ];} {private local } decl {double cloud_span[ MAX_CLOUD_LAYERS ];} {private local } decl {double cloud_transition[ MAX_CLOUD_LAYERS ];} {private local } decl {void fg_config_cb();} {private local } decl {std::string airport_id_;} {private local } decl {void random_wind_cb();} {private local } decl {static Fl_Menu_Item menu_time_of_day_value[];} {private local } decl {static Fl_Menu_Item menu_log_level[];} {private local } decl {static Fl_Menu_Item menu_cloud_coverage_[];} {private local } decl {static Fl_Menu_Item menu_texture_filtering[];} {private local } decl {static Fl_Menu_Item menu_anti_aliasing[];} {private local } decl {Fl_Preferences& prefs;} {private local } } fg-fgrun/src/advanced_funcs.cxx000066400000000000000000000217441245722473500170720ustar00rootroot00000000000000// advanced_funcs.cxx -- Advanced UI functions. // // Written by Bernie Bright, started Nov 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #include #include "advanced.h" #include "i18n.h" #include "util.h" Advanced::~Advanced() { } void Advanced::show_page( unsigned int n ) { for (unsigned int i = 0; i < sizeof(page)/sizeof(page[0]); ++i) if (i == n) page[i]->show(); else page[i]->hide(); } void Advanced::list_new_cb( Fl_Browser* browser, Fl_Input* input, Fl_Button* del ) { browser->add( "" ); browser->value( browser->size() ); del->activate(); input->activate(); input->take_focus(); input->value( "" ); } void Advanced::list_delete_cb( Fl_Browser* browser, Fl_Input* input, Fl_Button* del ) { int n = browser->value(); if (n > 0) { browser->remove( n ); input->value( "" ); input->take_focus(); } if (browser->size() == 0) del->deactivate(); } void Advanced::list_select_cb( Fl_Browser* browser, Fl_Input* input, Fl_Button* del ) { int n = browser->value(); if (n > 0) { input->activate(); input->value( browser->text( n ) ); input->take_focus(); del->activate(); } } void Advanced::list_update_cb( Fl_Browser* browser, Fl_Input* input ) { int n = browser->value(); if (n > 0) { browser->text( n, input->value() ); } } Fl_Menu_Item Advanced::menu_time_of_day_value[] = { {N_("dawn"), 0, 0, (void*)"dawn", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("morning"), 0, 0, (void*)"morning", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("noon"), 0, 0, (void*)"noon", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("afternoon"), 0, 0, (void*)"afternoon", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("dusk"), 0, 0, (void*)"dusk", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("evening"), 0, 0, (void*)"evening", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("midnight"), 0, 0, (void*)"midnight", 0, FL_NORMAL_LABEL, 0, 12, 0}, {0,0,0,0,0,0,0,0,0} }; Fl_Menu_Item Advanced::menu_log_level[] = { {N_("bulk"), 0, 0, (void*)"bulk", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("debug"), 0, 0, (void*)"debug", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("info"), 0, 0, (void*)"info", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("warn"), 0, 0, (void*)"warn", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("alert"), 0, 0, (void*)"alert", 0, FL_NORMAL_LABEL, 0, 12, 0}, {0,0,0,0,0,0,0,0,0} }; Fl_Menu_Item Advanced::menu_cloud_coverage_[] = { {N_("overcast"), 0, 0, (void*)"overcast", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("broken"), 0, 0, (void*)"broken", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("scattered"), 0, 0, (void*)"scattered", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("few"), 0, 0, (void*)"few", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("cirrus"), 0, 0, (void*)"cirrus", 0, FL_NORMAL_LABEL, 0, 12, 0}, {N_("clear"), 0, 0, (void*)"clear", 0, FL_NORMAL_LABEL, 0, 13, 0}, {0,0,0,0,0,0,0,0,0} }; Fl_Menu_Item Advanced::menu_texture_filtering[] = { {_("no filtering"), 0, 0, (void*)"1", 0, FL_NORMAL_LABEL, 0, 12, 0}, {_("2.0"), 0, 0, (void*)"2", 0, FL_NORMAL_LABEL, 0, 12, 0}, {_("4.0"), 0, 0, (void*)"4", 0, FL_NORMAL_LABEL, 0, 12, 0}, {_("8.0"), 0, 0, (void*)"8", 0, FL_NORMAL_LABEL, 0, 12, 0}, {_("highest filtering"), 0, 0, (void*)"16", 0, FL_NORMAL_LABEL, 0, 12, 0}, {0,0,0,0,0,0,0,0,0} }; Fl_Menu_Item Advanced::menu_anti_aliasing[] = { {_("no anti-aliasing"), 0, 0, (void*)"1", 0, FL_NORMAL_LABEL, 0, 12, 0}, {_("2"), 0, 0, (void*)"2", 0, FL_NORMAL_LABEL, 0, 12, 0}, {_("4"), 0, 0, (void*)"4", 0, FL_NORMAL_LABEL, 0, 12, 0}, {0,0,0,0,0,0,0,0,0} }; void Advanced::init() { for( int i = 0; i < MAX_CLOUD_LAYERS; ++i) { cloud_elevation[i] = 0; cloud_thickness[i] = 0; cloud_coverage[i] = 0; cloud_transition[i] = 0; cloud_span[i] = 0; } for ( int i = 0; menu_time_of_day_value[i].text != 0; ++i ) { menu_time_of_day_value[i].text = _( menu_time_of_day_value[i].text ); } time_of_day_value->menu(menu_time_of_day_value); for ( int i = 0; menu_log_level[i].text != 0; ++i ) { menu_log_level[i].text = _( menu_log_level[i].text ); } log_level->menu(menu_log_level); for ( int i = 0; menu_cloud_coverage_[i].text != 0; ++i ) { menu_cloud_coverage_[i].text = _( menu_cloud_coverage_[i].text ); } cloud_coverage_->menu(menu_cloud_coverage_); for ( int i = 0; menu_texture_filtering[i].text != 0; ++i ) { menu_texture_filtering[i].text = _( menu_texture_filtering[i].text ); } texture_filtering->menu(menu_texture_filtering); for ( int i = 0; menu_anti_aliasing[i].text != 0; ++i ) { menu_anti_aliasing[i].text = _( menu_anti_aliasing[i].text ); } anti_aliasing->menu(menu_anti_aliasing); const int buflen = FL_PATH_MAX; char buf[ buflen ]; const char* not_set = "NOT SET"; prefs.get( "fg_root", buf, not_set, buflen-1); fg_root_->value( buf ); SGPath path( fg_root_->value() ); path.append( "Protocol" ); simgear::Dir directory( path ); simgear::PathList files = directory.children( simgear::Dir::TYPE_FILE | simgear::Dir::NO_DOT_OR_DOTDOT, ".xml" ); for ( simgear::PathList::iterator ii = files.begin(); ii != files.end(); ++ii ) { // skip fgcom because he is managed by "fgcom-standalone" if( ii->file() == "fgcom.xml" ) continue; SGPath p(ii->file()); io_generic_file->add(p.base().c_str()); } if ( io_generic_file->size() ) io_generic_file->value(0); set_choice( fdm, "automatic selection" ); set_choice( log_level, "alert" ); page_list->add(_("General")); page_list->add(_("Features")); page_list->add(_("Flight Model")); page_list->add(_("Freeze")); page_list->add(_("Initial Position")); page_list->add(_("Rendering")); page_list->add(_("Time")); page_list->add(_("Network")); page_list->add(_("Input/Output")); page_list->add(_("Avionics")); page_list->add(_("Properties")); page_list->add(_("Debugging")); page_list->add(_("Environment")); page_list->add(_("Weather")); page_list->add(_("Clouds")); main_window->size_range( 640, 480 ); page_list->select(1); show_page(0); } void Advanced::fg_browser_cb() { char* p = fl_file_chooser(_("Select browser"), 0, browser->value(), 0); if (p != 0) browser->value( p ); } int Advanced::exec( Fl_Preferences& prefs ) { load_settings( prefs ); main_window->show(); int r; for (;;) { Fl_Widget* o = Fl::readqueue(); if (o == 0) Fl::wait(); else if (o == button[0]) { r = 0; break; } else if (o == button[1]) { r = 1; break; } else if (o == main_window) { r = 1; break; } } main_window->hide(); if (r == 0) save_settings( prefs ); return r; } void Advanced::wind_dial_cb() { wind_hdg->value( wind_dial->value() ); } void Advanced::wind_hdg_cb() { wind_dial->value( wind_hdg->value() ); } void Advanced::cloud_layer_cb() { int n = cloud_layer_->value(); cloud_elevation_->value( cloud_elevation[n] ); cloud_thickness_->value( cloud_thickness[n] ); cloud_transition_->value( cloud_transition[n] ); cloud_span_->value( cloud_span[n] ); cloud_coverage_->value( cloud_coverage[n] ); } void Advanced::fg_config_cb() { char* p = fl_file_chooser( _("Select a preferences file"), _("XML Files(*.xml)"), config->value(), 0 ); if (p != 0) config->value( p ); } void Advanced::random_wind_cb() { if (random_wind->value()) { wind_hdg->deactivate(); wind_dial->deactivate(); wind_speed->deactivate(); } else { wind_hdg->activate(); wind_dial->activate(); wind_speed->activate(); } } void Advanced::ai_models_cb() { if ( ai_models->value() == 0 ) { ai_traffic->value(0); ai_traffic->deactivate(); } else { ai_traffic->activate(); } } fg-fgrun/src/apt_dat.h000066400000000000000000000006201245722473500151560ustar00rootroot00000000000000#ifndef apt_dat_h_included #define apt_dat_h_included #include #include #include /** * */ struct apt_dat_t { apt_dat_t():parkingRead(false){} std::string id_; std::string name_; std::vector< std::string > runways_; std::set< std::string > parking_; int type_; float lon_; float lat_; bool parkingRead; }; #endif // apt_dat_h_included fg-fgrun/src/config_cmake.h.in000066400000000000000000000007471245722473500165660ustar00rootroot00000000000000 #cmakedefine HAVE_UNISTD_H #cmakedefine HAVE_STDLIB_H #cmakedefine HAVE_SYS_WAIT_H #cmakedefine HAVE_TERMIOS_H #cmakedefine HAVE_PTY_H #cmakedefine HAVE_UTMP_H #cmakedefine HAVE_FCNTL_H #cmakedefine HAVE_STRING_H #cmakedefine HAVE_OPENPTY #cmakedefine HAVE__GETPTY #cmakedefine HAVE_DEV_PTMX #cmakedefine HAVE_DEV_PTS #cmakedefine HAVE_LOGIN_TTY #define VERSION "@FGRUN_VERSION@" #define PACKAGE "@CMAKE_PROJECT_NAME@" #define LOCALEDIR "@CMAKE_INSTALL_PREFIX@/share/locale" fg-fgrun/src/fgfsrc.cxx000066400000000000000000000442511245722473500153770ustar00rootroot00000000000000// fgfsrc.cxx -- Function to write FlightGear startup file. // // Written by Bernie Bright, started Dec 2002. // // Copyright (c) 2002 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #if defined(HAVE_STRING_H) #include // strcmp #endif #include "wizard.h" #include "i18n.h" using std::ofstream; int Wizard::write_fgfsrc() { const int buflen = FL_PATH_MAX; char buf[ buflen ]; #if defined(WIN32) prefs.get( "fg_root", buf, "", buflen-1 ); strcat( buf, "/system.fgfsrc" ); fl_filename_absolute( buf, buf ); #else fl_filename_expand( buf, "~/.fgfsrc" ); #endif FILE* fp = fopen( buf, "r" ); if (fp != 0) { fclose( fp ); int r = fl_choice( _("About to overwrite %s."), _("Abort"), _("Overwrite"), 0, buf ); if (!r) return 0; } ofstream ofs( buf ); if (ofs) { int rc = write_fgfsrc( prefs, ofs ); ofs << "\n"; ofs.close(); return rc; } return 0; } int Wizard::write_fgfsrc( Fl_Preferences &prefs, std::ostream& os, const char* pfx ) { const int buflen = FL_PATH_MAX; char buf[ buflen ]; prefs.get( "fg_root", buf, "", buflen-1 ); os << "--fg-root=" << buf; prefs.get( "fg_scenery", buf, "", buflen-1 ); os << pfx << "--fg-scenery=" << buf; if (prefs.get( "ts_dir", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--terrasync-dir=" << buf; prefs.get( "fg_aircraft", buf, "", buflen-1 ); if ( buf[0] != 0 ) os << pfx << "--fg-aircraft=" << buf; // General options. if (prefs.get( "carrier", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--carrier=" << buf; else if (prefs.get( "airport", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--airport=" << buf; if (prefs.get( "runway", buf, "", buflen-1 ) && strcmp( _(""), buf ) != 0) os << pfx << "--runway=" << buf; if (prefs.get( "aircraft", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--aircraft=" << buf; if (prefs.get( "parkpos", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--parkpos=" << buf; if (prefs.get( "lang", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--language=" << buf; if (prefs.get( "browser", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--browser-app=" << buf; if (prefs.get( "config", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--config=" << buf; int iVal, iVal2; double dVal; // Features - only set non-default values. if (prefs.get( "show_console", iVal, 0 ) && iVal) os << pfx << "--console"; if (prefs.get( "splash_screen", iVal, 1 ) && !iVal) os << pfx << "--disable-splash-screen"; if (prefs.get( "mouse_pointer", iVal, 0 ) && iVal) os << pfx << "--enable-mouse-pointer"; if (prefs.get( "random_objects", iVal, 0 ) && iVal) os << pfx << "--enable-random-objects"; else os << pfx << "--disable-random-objects"; if (prefs.get( "random_trees", iVal, 1 ) && !iVal) os << pfx << "--prop:/sim/rendering/random-vegetation=false"; if (prefs.get( "panel", iVal, 1 ) && !iVal) os << pfx << "--disable-panel"; if (prefs.get( "sound", iVal, 1 ) && !iVal) os << pfx << "--disable-sound"; if (prefs.get( "hud", iVal, 0 ) && iVal) { os << pfx << "--enable-hud"; if (prefs.get( "antialias_hud", iVal, 0 ) && iVal) os << pfx << "--enable-anti-alias-hud"; else os << pfx << "--disable-anti-alias-hud"; } if (prefs.get( "hud_3d", iVal, 1 ) && !iVal) os << pfx << "--disable-hud-3d"; if (prefs.get( "auto_coordination", iVal, 0 ) && iVal) os << pfx << "--enable-auto-coordination"; if (prefs.get( "horizon_effect", iVal, 0 ) && iVal) os << pfx << "--enable-horizon-effect"; if (prefs.get( "enhanced_lighting", iVal, 0 ) && iVal) os << pfx << "--enable-enhanced-lighting"; if (prefs.get( "distance_attenuation", iVal, 0 ) && iVal) os << pfx << "--enable-distance-attenuation"; if (prefs.get( "specular_highlight", iVal, 1 ) && !iVal) os << pfx << "--disable-specular-highlight"; if (prefs.get( "failure", iVal, 0 ) && iVal) { if (prefs.get( "failure_pitot", iVal, 0 ) && iVal) os << pfx << "--failure=pitot"; if (prefs.get( "failure_static", iVal, 0 ) && iVal) os << pfx << "--failure=static"; if (prefs.get( "failure_electrical", iVal, 0 ) && iVal) os << pfx << "--failure=electrical"; if (prefs.get( "failure_vacuum", iVal, 0 ) && iVal) os << pfx << "--failure=vacuum"; } prefs.get( "ai_models", iVal, 0 ); if (iVal) os << pfx << "--enable-ai-models"; else os << pfx << "--disable-ai-models"; prefs.get( "ai_traffic", iVal, 0 ); if (iVal) os << pfx << "--enable-ai-traffic"; else os << pfx << "--disable-ai-traffic"; // Flight model prefs.get( "fdm", buf, "", buflen-1 ); if (buf[0] != 0) { if (strcmp( "automatic selection", buf ) != 0) os << pfx << "--fdm=" << buf; else if (prefs.get( "no_trim", iVal, 0 ) && iVal) os << pfx << "--notrim"; // Only "jsb" understands --notrim } if (prefs.get( "model_hz", iVal, 0 ) && iVal != 120) os << pfx << "--model-hz=" << iVal; if (prefs.get( "speed", iVal, 0 ) && iVal > 1) os << pfx << "--speed=" << iVal; if (prefs.get( "in_air", iVal, 0 ) && iVal) os << pfx << "--in-air"; // Weather if (prefs.get( "random_wind", iVal, 0 ) && iVal) { os << pfx << "--random-wind"; } else if (prefs.get( "wind_speed", dVal, 0.0 ) && dVal > 0.0) { double dVal2; prefs.get( "wind_heading", dVal2, 0.0 ); os << pfx << "--wind=" << dVal2 << "@" << dVal; } if (prefs.get( "turbulence", dVal, 0. ) && dVal > 0.) os << pfx << "--turbulence=" << dVal; if (prefs.get( "ceiling", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--ceiling=" << buf; if (prefs.get( "fetch_real_weather", iVal, 0 ) && iVal) os << pfx << "--enable-real-weather-fetch"; else os << pfx << "--disable-real-weather-fetch"; // Freeze if (prefs.get( "freeze", iVal, 0 ) && iVal) os << pfx << "--enable-freeze"; if (prefs.get( "fuel_freeze", iVal, 0 ) && iVal) os << pfx << "--enable-fuel-freeze"; if (prefs.get( "clock_freeze", iVal, 0 ) && iVal) os << pfx << "--enable-clock-freeze"; // Initial position and orientation. if (prefs.get( "lon", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--lon=" << buf; if (prefs.get( "lat", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--lat=" << buf; if (prefs.get( "altitude", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--altitude=" << buf; if (prefs.get( "heading", dVal, 0. ) && dVal != 0.) os << pfx << "--heading=" << dVal; if (prefs.get( "roll", dVal, 0. ) && dVal != 0.) os << pfx << "--roll=" << dVal; if (prefs.get( "pitch", dVal, 0. ) && dVal != 0.) os << pfx << "--pitch=" << dVal; if (prefs.get( "vc", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--vc=" << buf; if (prefs.get( "uBody", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--uBody=" << buf; if (prefs.get( "vBody", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--vBody=" << buf; if (prefs.get( "wBody", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--wBody=" << buf; if (prefs.get( "vor", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--vor=" << buf; if (prefs.get( "ndb", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--ndb=" << buf; if (prefs.get( "fix", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--fix=" << buf; if (prefs.get( "offset_distance", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--offset-distance=" << buf; if (prefs.get( "offset_azimuth", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--offset-azimuth=" << buf; if (prefs.get( "glideslope", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--glideslope=" << buf; // Rendering. if (prefs.get( "clouds", iVal, 1 ) && !iVal) os << pfx << "--disable-clouds"; if (prefs.get( "clouds3d", iVal, 0 ) && iVal) os << pfx << "--enable-clouds3d"; if (prefs.get( "fullscreen", iVal, 0 ) && iVal) os << pfx << "--enable-fullscreen"; if (prefs.get( "texture_compression", iVal, 1 ) && !iVal) os << pfx << "--prop:/sim/rendering/texture-compression=off"; if (prefs.get( "wireframe", iVal, 0 ) && iVal) os << pfx << "--enable-wireframe"; if (prefs.get( "shading", buf, "", buflen-1 ) && strcmp( "flat", buf ) == 0) os << pfx << "--shading-flat"; if (prefs.get( "frame_rate_limiter", iVal, 0 ) && iVal && prefs.get( "frame_rate_limiter_value", iVal2, 60 )) os << pfx << "--prop:/sim/frame-rate-throttle-hz=" << iVal2; if (prefs.get( "autovisibility", iVal, 0 ) && iVal) os << pfx << "--prop:/sim/menubar/autovisibility/enabled=1"; if (prefs.get( "fog", buf, "", buflen-1 )) { if (strcmp( "disabled", buf ) == 0) os << pfx << "--fog-disable"; else if (strcmp( "fastest", buf ) == 0) os << pfx << "--fog-fastest"; } if (prefs.get( "geometry", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--geometry=" << buf; if (prefs.get( "visibility", buf, "", buflen-1 ) && buf[0] != 0) { char buf2[ buflen ]; prefs.get( "visibility-units", buf2, "", buflen-1 ); if (strcmp( "meters", buf2 ) == 0) os << pfx << "--visibility=" << buf; else if (strcmp( "miles", buf2 ) == 0) os << pfx << "--visibility-miles=" << buf; } if (prefs.get( "view-offset", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--view-offset=" << buf; if (prefs.get( "bpp", iVal, 16) && iVal != 16) os << pfx << "--bpp=" << iVal; if (prefs.get( "fov", dVal, 60.0 ) && dVal != 60.) os << pfx << "--fov=" << dVal; if (prefs.get( "texture-filtering", buf, "1", buflen-1 ) && strcmp(buf,"1")!=0) os << pfx << "--texture-filtering=" << buf; if (prefs.get( "materials-file", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--materials-file=" << buf; if (prefs.get( "rembrandt", iVal, 0 ) && iVal) os << pfx << "--enable-rembrandt"; else if (prefs.get( "anti-aliasing", buf, "1", buflen-1 ) && strcmp(buf,"1")!=0) { os << pfx << "--prop:/sim/rendering/multi-sample-buffers=1"; os << pfx << "--prop:/sim/rendering/multi-samples=" << buf; } // Time if (prefs.get( "time-match-real", iVal, 1 ) && iVal && prefs.get( "time-offset", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--time-offset=" << buf; else if (prefs.get( "time-match-local", iVal, 0 ) && iVal) os << pfx << "--time-match-local"; else if (prefs.get( "start-date-sys", iVal, 0 ) && iVal && prefs.get( "start-date-sys-value", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--start-date-sys=" << buf; else if (prefs.get( "start-date-gmt", iVal, 0 ) && iVal && prefs.get( "start-date-gmt-value", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--start-date-gmt=" << buf; else if (prefs.get( "start-date-lat", iVal, 0 ) && iVal && prefs.get( "start-date-lat-value", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--start-date-lat=" << buf; else if (prefs.get( "time_of_day", iVal, 0 ) && iVal && prefs.get( "time_of_day_value", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--timeofday=" << buf; if ( prefs.get( "season", buf, "", buflen-1 ) && strcmp(buf,"summer")!=0 ) os << pfx << "--season=" << buf; if ( prefs.get( "terrasync", iVal, 1 ) && iVal ) os << pfx << "--enable-terrasync"; else os << pfx << "--disable-terrasync"; // Network. if (prefs.get( "httpd", iVal, 0 ) && iVal) os << pfx << "--httpd=" << iVal; if (prefs.get( "props", iVal, 0 ) && iVal) os << pfx << "--props=" << iVal; if (prefs.get( "jpg-httpd", iVal, 0 ) && iVal) os << pfx << "--jpg-httpd=" << iVal; // Multiplayer options. if (prefs.get( "callsign", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--callsign=" << buf; if (prefs.get( "multiplay1", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--multiplay=" << buf; if (prefs.get( "multiplay2", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--multiplay=" << buf; // FGCom options. if ( prefs.get( "fgcom-disabled", iVal, 1 ) && iVal ) os << pfx << "--disable-fgcom"; if ( prefs.get( "fgcom-builtin", iVal, 1 ) && iVal ) os << pfx << "--enable-fgcom"; if ( prefs.get( "fgcom-standalone", iVal, 1 ) && iVal ) { char buf1[ buflen ]; if ( prefs.get( "fgcom-hostname", buf, "", buflen-1 ) && prefs.get( "fgcom-port", buf1, "", buflen-1 ) && buf[0] != 0 && buf1[0] != 0) os << pfx << "--generic=socket,out,2," << buf << "," << buf1 << ",udp,fgcom"; } if (prefs.get( "proxy", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--proxy=" << buf; // Scenarii options. prefs.get( "scenario-count", iVal, 0 ); int i; for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("scenario-item-%d", i), buf, "", buflen-1 ); if ( strlen( buf ) > 0 ) os << pfx << "--ai-scenario=" << buf; } // I/O options. prefs.get( "io-count", iVal, 0 ); for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("io-item-%d", i), buf, "", buflen-1 ); // skip fgcom because he is managed by "fgcom-standalone" if ( std::string(buf).find("fgcom") != std::string::npos ) continue; if ( strlen( buf ) > 0 ) os << pfx << buf; } // Properties prefs.get( "property-count", iVal, 0 ); for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("property-item-%d", i), buf, "", buflen-1 ); if ( strlen( buf ) > 0 ) { #if defined(WIN32) if (strchr(buf,' ') != 0) os << pfx << "\"--prop:" << buf << "\""; else #endif os << pfx << "--prop:" << buf; } } // Debugging prefs.get( "log-level", buf, "", buflen-1 ); if (buf[0] != 0 && strcmp( "alert", buf ) != 0) os << pfx << "--log-level=" << buf; prefs.get( "trace-read-count", iVal, 0 ); for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("trace-read-%d", i), buf, "", buflen-1 ); os << pfx << "--trace-read=" << buf; } prefs.get( "trace-write-count", iVal, 0 ); for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("trace-write-%d", i), buf, "", buflen-1 ); os << pfx << "--trace-write=" << buf; } // Avionics if (prefs.get( "nav1", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--nav1=" << buf; if (prefs.get( "nav2", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--nav2=" << buf; if (prefs.get( "adf", buf, "", buflen-1 ) && buf[0] != 0) os << pfx << "--adf=" << buf; prefs.get( "dme", buf, "disabled", buflen-1 ); if (strcmp( "disabled", buf ) != 0) os << pfx << "--dme=" << buf; // Clouds for (i = 0; i < 5; ++i) { double el, th; prefs.get( Fl_Preferences::Name("layer-%d-elevation-ft", i), el, 0.0 ); prefs.get( Fl_Preferences::Name("layer-%d-thickness-ft", i), th, 0.0 ); if (el > 0.0 && th > 0.0 ) { os << pfx << "--prop:/environment/clouds/layer[" << i << "]/elevation-ft=" << el; os << pfx << "--prop:/environment/clouds/layer[" << i << "]/thickness-ft=" << th; prefs.get( Fl_Preferences::Name("layer-%d-coverage", i), buf, "clear", buflen-1); os << pfx << "--prop:/environment/clouds/layer[" << i << "]/coverage=" << buf; prefs.get( Fl_Preferences::Name("layer-%d-transition-ft", i), dVal, 0.0 ); if (dVal > 0.0) os << pfx << "--prop:/environment/clouds/layer[" << i << "]/transition-ft=" << dVal; prefs.get( Fl_Preferences::Name("layer-%d-span-m", i), dVal, 0.0 ); if (dVal > 0.0) os << pfx << "--prop:/environment/clouds/layer[" << i << "]/span-m=" << dVal; } } return 1; } int Wizard::write_fgviewerrc( Fl_Preferences &prefs, std::ostream& os, const char* pfx, const std::string &path ) { const int buflen = FL_PATH_MAX; char buf[ buflen ]; prefs.get( "fg_root", buf, "", buflen-1 ); os << "--fg-root=" << buf; prefs.get( "fg_aircraft", buf, "", buflen-1 ); if ( buf[0] != 0 ) os << pfx << "--fg-aircraft=" << buf; os << pfx << "--fgviewer"; os << pfx << path; return 1; } fg-fgrun/src/fgrun.rc000066400000000000000000000001061245722473500150370ustar00rootroot00000000000000FLIGHTGEAR ICON "..\\flightgear.ico" fg-fgrun/src/fgrun_pty.cxx000066400000000000000000000064061245722473500161420ustar00rootroot00000000000000// fgrun_pty.cxx -- Portable pseudo-tty functions. // // Written by Bernie Bright, started Aug 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifdef HAVE_CONFIG_H # include #endif #if defined(HAVE_PTY_H) # include #endif #if defined(HAVE_UTMP_H) # include #endif #if defined(HAVE_UNISTD_H) # include #endif #if defined(HAVE_FCNTL_H) #include // O_RDWR #endif #include //needed on some linux systems for grantpt() #include //strcpy is not necessarily already included /** * */ int pty_open( int* amaster, int* aslave, char* name, struct termios* termp, struct winsize* winp ) { #if defined(HAVE_OPENPTY) || defined(BSD4_4) return openpty( amaster, aslave, name, termp, winp ); #elif defined(HAVE__GETPTY) // Open the master pty device. int master; char* pts_name = _getpty( &master, O_RDWR, 0622, 0 ); if (pts_name == 0) { return -1; } // Open the slave pty device. int pts_fd = open( pts_name, O_RDWR ); if (pts_fd < 0) { close( master ); return -1; } *amaster = master; *aslave = pts_fd; if (name) strcpy( name, pts_name ); return 0; #elif defined(HAVE_DEV_PTMX) int ptm = open( "/dev/ptmx", O_RDWR ); if (ptm < 0) { return -1; } if (grantpt( ptm ) < 0) { close( ptm ); return -1; } if (unlockpt( ptm ) < 0) { close( ptm ); return -1; } char* pts_name = ptsname( ptm ); if (pts_name == 0) { close( ptm ); return -1; } int pts = open( pts_name, O_RDWR ); if (pts < 0) { close( ptm ); return -1; } // ioctl( pts, I_PUSH, "ptem" ); // ioctl( pts, I_PUSH, "ldterm" ); // ioctl( pts, I_PUSH, "ttcompat" ); *amaster = ptm; *aslave = pts; if (name) strcpy( name, pts_name ); return 0; #elif defined(HAVE_DEV_PTS) return -1; // TODO #else // BSD-style pty code return -1; // TODO #endif } /** * */ int tty_login( int fd ) { #if defined(HAVE_LOGIN_TTY) return login_tty( fd ); #else #endif } /** * */ pid_t pty_fork( int* amaster, char* name, struct termios* termp, struct winsize* winp ) { int master; int slave; if (pty_open( &master, &slave, name, termp, winp ) < 0) return -1; pid_t pid = fork(); if (pid < 0) { return -1; } else if (pid == 0) { // Child. close( master ); if (tty_login( slave ) < 0) _exit(1); return 0; } else { // Parent. *amaster = master; close( slave ); return pid; } } fg-fgrun/src/fgrun_pty.h000066400000000000000000000023511245722473500155620ustar00rootroot00000000000000// fgrun_pty.hxx -- Portable pseudo-tty functions. // // Written by Bernie Bright, started Aug 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifndef FGRUN_PTY_H #define FGRUN_PTY_H struct termios; struct winsize; pid_t pty_fork( int* amaster, char* name, struct termios* termp, struct winsize* winp ); // int pty_open( int* amaster, // int* aslave, // char* name, // struct termios* termp, // struct winsize* winp ); // int tty_login( int fd ); #endif // FGRUN_PTY_H fg-fgrun/src/folder_open.xpm000066400000000000000000000016551245722473500164240ustar00rootroot00000000000000const char * folder_open_xpm[] = { "20 16 34 1", " c None", ". c #A68A5E", "+ c #FEF3A7", "@ c #FEECA1", "# c #FEE49A", "$ c #FEDD94", "% c #FED68E", "& c #FEF6A9", "* c #FEEEA3", "= c #FEE79D", "- c #FEDF96", "; c #FED890", "> c #FEF1A5", ", c #FEE99F", "' c #FEE298", ") c #FEDA92", "! c #FEF0A5", "~ c #FEEBA1", "{ c #FEE69C", "] c #FEE198", "^ c #FEDC93", "/ c #FED78F", "( c #54452F", "_ c #FEF2A6", ": c #FEEDA2", "< c #FEE299", "[ c #FEE99E", "} c #FEDE95", "| c #FED991", "1 c #FEEFA4", "2 c #FEEA9F", "3 c #FEE59B", "4 c #FEE096", "5 c #FEDB92", " ", " ..... ", " .+@#$%. ", " ......&*=-;%%. ", " .&&&&&>,')%%%. ", " .&&&&+@#$%%%%. ", " .&&............ ", " .&&.&!~{]^/%%%.( ", " .&&._:=<$;%%%%.( ", " .&.+*[#}|%%%%.( ", " .&.12345%%%%%.( ", " .!~{]^/%%%%.( ", " ............( ", " (((((((((((( ", " ", " "}; fg-fgrun/src/i18n.h000066400000000000000000000023241245722473500143240ustar00rootroot00000000000000// i18n.h -- Internationalisation file. // // Written by Frederic Bouvier, started Dec 2007. // // Copyright (c) 2007 Frederic Bouvier - fredb@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id:$ #ifndef i18n_h_included #define i18n_h_included #if !defined( ENABLE_NLS ) #define _(String) (String) #define N_(String) String #define textdomain(Domain) #define bindtextdomain(Package, Directory) #else #include #define _(String) gettext (String) #define gettext_noop(String) String #define N_(String) gettext_noop (String) #endif #endif fg-fgrun/src/io.cxx000066400000000000000000000177071245722473500145420ustar00rootroot00000000000000// io_list.cxx -- I/O option browser functions. // // Written by Bernie Bright, started Dec 2002. // // Copyright (c) 2002 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #include #include #include #include #include #include "advanced.h" #include "util.h" #include "i18n.h" using std::string; using std::vector; void Advanced::io_list_select_cb( Fl_Browser* o ) { int n = o->value(); if (n <= 0) return; io_delete->activate(); io_protocol->activate(); io_medium->activate(); io_dir->activate(); io_hz->activate(); // --PROTOCOL=MEDIUM,DIR,HZ,... // Split i/o option into tokens. string buf = o->text(n); vector< string > tokens; const string delims = "=,"; string::size_type op = 0; string::size_type np; while ((np = buf.find_first_of( delims, op )) != buf.npos) { tokens.push_back( buf.substr( op, np-op ) ); op = np + 1; // if ((op = buf.find_first_not_of( delims, np )) == buf.npos) // break; } tokens.push_back( buf.substr( op, buf.npos ) ); // Populate dialog controls. // Skip leading "--" of protocol token. set_choice( io_protocol, tokens[0].c_str() + 2 ); set_choice( io_medium, tokens[1].c_str() ); io_medium->do_callback(); set_choice( io_dir, tokens[2].c_str() ); io_hz->value( strtod( tokens[3].c_str(), 0 ) ); generic_group->hide(); repeat_group->hide(); Fl_Group* g = 0; n = -1; if (tokens[1] == "file") { io_file_name->value( tokens[4].c_str() ); g = file_group; n = 5; } else if (tokens[1] == "serial") { serial_port->value( tokens[4].c_str() ); serial_baud_rate->value( tokens[5].c_str() ); g = serial_group; n = 6; } else if (tokens[1] == "socket") { socket_host->value( tokens[4].c_str() ); socket_port->value( atoi( tokens[5].c_str() ) ); if (tokens[6] == "tcp") socket_tcp->setonly(); else socket_udp->setonly(); g = socket_group; n = 7; } if (tokens[0] == "--generic" && g != 0) { set_choice( io_generic_file, tokens[n].c_str() ); n += 1; generic_group->position( g->x(), g->y() + g->h() ); generic_group->show(); g = generic_group; } if (tokens[1] == "file") { if (tokens.size() > n && tokens[n] == "repeat") { repeat->value(1); repeat_value->activate(); if (tokens.size() > n+1) repeat_value->value(atoi(tokens[n+1].c_str())); else repeat_value->value(0); } else { repeat->value(0); repeat_value->value(0); repeat_value->deactivate(); } repeat_group->position( g->x(), g->y() + g->h() ); repeat_group->show(); } io_list_update_cb(); } void Advanced::io_list_new_cb() { io_list->add(""); io_list->value( io_list->size() ); io_delete->activate(); io_protocol->activate(); io_medium->activate(); io_medium->do_callback(); io_dir->activate(); io_hz->activate(); } void Advanced::io_list_update_cb() { std::ostringstream oss; // --PROTOCOL=file,DIR,HZ,FILENAME[,GENERIC] // --PROTOCOL=serial,DIR,HZ,DEVICE,BAUD[,GENERIC] // --PROTOCOL=socket,DIR,HZ,HOST,PORT,(tcp|udp)[,GENERIC] if (strcmp(io_medium->text(), "file") == 0) { oss << "--" << io_protocol->text() << "=file," << io_dir->text() << "," << int(io_hz->value()) << "," << io_file_name->value(); } else if (strcmp(io_medium->text(), "serial") == 0) { oss << "--" << io_protocol->text() << "=serial," << io_dir->text() << "," << int(io_hz->value()) << "," << serial_port->value() << "," << serial_baud_rate->value(); } else if (strcmp(io_medium->text(), "socket") == 0) { oss << "--" << io_protocol->text() << "=socket," << io_dir->text() << "," << int(io_hz->value()) << "," << socket_host->value() << "," << int(socket_port->value()) << (socket_tcp->value() ? ",tcp" : ",udp"); } if (strcmp( io_protocol->text(), "generic" ) == 0) { if (io_generic_file->size() > 0) oss << "," << io_generic_file->text(); } if (strcmp( io_medium->text(), "file" ) == 0 && repeat->value()) { oss << ",repeat"; if (repeat_value->value() > 0) oss << "," << repeat_value->value(); } int n = io_list->value(); if (n > 0) { io_list->text(n, oss.str().c_str() ); } } void Advanced::io_medium_update_cb( Fl_Choice* o ) { file_group->hide(); serial_group->hide(); socket_group->hide(); generic_group->hide(); repeat_group->hide(); Fl_Group* g = 0; if (strcmp(o->text(), "file") == 0) { file_group->show(); g = file_group; menu_io_dir[2].deactivate(); } else if (strcmp(o->text(), "serial") == 0) { serial_group->show(); g = serial_group; menu_io_dir[2].activate(); } else if (strcmp(o->text(), "socket") == 0) { socket_group->show(); g = socket_group; menu_io_dir[2].activate(); } if (strcmp( io_protocol->text(), "generic" ) == 0) { generic_group->position( g->x(), g->y() + g->h() ); generic_group->show(); g = generic_group; } if (strcmp(o->text(), "file") == 0) { repeat_group->position( g->x(), g->y() + g->h() ); repeat_group->show(); } io_list_update_cb(); } void Advanced::io_protocol_update_cb() { io_list_update_cb(); string protocol( io_protocol->text() ); Fl_Group* g = 0; string medium( io_medium->text() ); // Position the "generic" file selection below the last control. if (medium == "file") { g = file_group; } else if (medium == "serial") { g = serial_group; } else if (medium == "socket") { g = socket_group; } if (protocol == "generic") { generic_group->position( g->x(), g->y() + g->h() ); generic_group->show(); g = generic_group; } else { generic_group->hide(); } if (medium == "file") { repeat_group->position( g->x(), g->y() + g->h() ); repeat_group->show(); } else { repeat_group->hide(); } } void Advanced::io_file_cb() { //static Fl_File_Chooser* fc = 0; string dir = fg_root_->value(); const char* message = _("Select file"); Fl_File_Chooser fc( dir.c_str(), "*", Fl_File_Chooser::SINGLE, message ); fc.show(); while ( fc.shown() ) Fl::wait(); if (fc.value()) { //const char* fname = fl_filename_name( fc.value() ); io_file_name->value( fc.value() ); io_list_update_cb(); } } void Advanced::io_generic_file_cb() { io_list_update_cb(); } void Advanced::repeat_cb() { if (repeat->value()) repeat_value->activate(); else repeat_value->deactivate(); io_list_update_cb(); } void Advanced::repeat_value_cb() { io_list_update_cb(); } fg-fgrun/src/logwin.cxx000066400000000000000000000047411245722473500154240ustar00rootroot00000000000000// output.cxx -- FlightGear ouput display window. // // Written by Bernie Bright, started Sep 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #include #include #include #include #include "logwin.h" #include "i18n.h" Fl_Menu_Item LogWindow::menu_[] = { { _("&File"), 0, 0, 0, 64, 0, 0, 12, 56 }, { _("&Save"), FL_CTRL+'s', LogWindow::save_cb, 0, 128, 0, 0, 12, 56 }, { _("&Close"), FL_CTRL+'w', LogWindow::close_cb, 0, 0, 0, 0, 12, 56 }, {0}, {0} }; LogWindow::LogWindow( int w, int h, const char* l ) { win = new Fl_Window( w, h, l ); { win->labelsize(12); win->user_data( this ); { Fl_Menu_Bar* o = new Fl_Menu_Bar( 0, 0, w, 25 ); o->labelsize(12); o->textsize(12); o->menu( menu_ ); } text = new Fl_Text_Display( 0, 25, w, h-25 ); text->buffer( new Fl_Text_Buffer ); win->end(); win->resizable( text ); } } LogWindow::~LogWindow() { delete win; } void LogWindow::show() { win->show(); } void LogWindow::hide() { win->hide(); } void LogWindow::append( const char* line ) { text->insert_position( text->buffer()->length() ); text->insert( line ); text->show_insert_position(); } void LogWindow::clear() { text->buffer()->remove( 0, text->buffer()->length() ); } void LogWindow::save_cb( Fl_Widget* o, void* v ) { ((LogWindow*)(o->parent()->user_data()))->save_cb(); } void LogWindow::save_cb() { char* fname = fl_file_chooser( _("Save file as?"), "*.txt", 0, 0 ); if (fname != 0) { text->buffer()->savefile( fname ); } } void LogWindow::close_cb( Fl_Widget* o, void* v ) { ((LogWindow*)(o->parent()->user_data()))->close_cb(); } void LogWindow::close_cb() { win->hide(); } fg-fgrun/src/logwin.h000066400000000000000000000026621245722473500150510ustar00rootroot00000000000000// logwin.h -- FlightGear ouput display window. // // Written by Bernie Bright, started Sep 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifndef logwin_h_included #define logwin_h_included class Fl_Window; class Fl_Text_Display; struct Fl_Menu_Item; /** * */ class LogWindow { public: LogWindow( int w, int h, const char* l ); ~LogWindow(); void show(); void hide(); void append( const char* line ); void clear(); private: static void save_cb( Fl_Widget*, void* ); void save_cb(); static void close_cb( Fl_Widget*, void* ); void close_cb(); private: Fl_Window* win; Fl_Text_Display* text; static Fl_Menu_Item menu_[]; }; #endif // logwin_h_included fg-fgrun/src/main.cxx000066400000000000000000000142021245722473500150420ustar00rootroot00000000000000// main.cxx -- FlightGear Launch Control // // Written by Bernie Bright, started Oct 2002. // // Copyright (c) 2002 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include #include #include "wizard.h" #include "i18n.h" std::string def_fg_exe = ""; std::string def_fg_root = ""; std::string def_fg_scenery = ""; std::string def_ts_exe = ""; std::string version = ""; std::string def_ts_dir = ""; std::string def_acft_dir = ""; static bool silent = false; static bool fullscreen = false; /** * --fg-exe= * --fg-root= * --fg-scenery= */ static int parse_args( int, char** argv, int& i ) { if (strcmp( argv[i], "--silent" ) == 0) { silent = true; ++i; return 1; } else if (strncmp( argv[i], "--fg-exe=", 9 ) == 0) { def_fg_exe.assign( &argv[i][9] ); ++i; return 1; } else if (strncmp( argv[i], "--fg-root=", 10 ) == 0) { def_fg_root.assign( &argv[i][10] ); def_fg_scenery = def_fg_root; def_fg_scenery += "/Scenery"; ++i; return 1; } else if (strncmp( argv[i], "--fg-scenery=", 13 ) == 0) { def_fg_scenery.assign( &argv[i][13] ); ++i; return 1; } else if (strcmp( argv[i], "--fullscreen" ) == 0 || strcmp( argv[i], "-f" ) == 0) { fullscreen = true; ++i; return 1; } else if (strncmp( argv[i], "--terrasync-dir=", 16 ) == 0) { def_ts_dir.assign( &argv[i][16] ); ++i; return 1; } else if (strncmp( argv[i], "--fg-aircraft=", 14 ) == 0) { def_acft_dir.assign( &argv[i][14] ); ++i; return 1; } else if (strncmp( argv[i], "--version=", 10 ) == 0) { version.assign( &argv[i][10] ); ++i; return 1; } return 0; } string get_locale_directory( const char *argv0 ) { #ifdef LOCALEDIR SGPath localedir( LOCALEDIR ); if (localedir.exists()) return localedir.str(); #endif SGPath path( argv0 ); path = path.dir(); if (path.file() == "bin") { SGPath path2 = path.dir(); path2.append( "share/locale" ); if (path2.exists() ) return path2.str(); } path.append( "locale" ); return path.str(); } int main( int argc, char* argv[] ) { //_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); simgear::Socket::initSockets(); setlocale( LC_ALL, "" ); string localedir = get_locale_directory( argv[0] ); bindtextdomain( PACKAGE, localedir.c_str() ); textdomain( PACKAGE ); osgDB::Registry* registry = osgDB::Registry::instance(); #if ( SG_OSG_VERSION >= 28003 && SG_OSG_VERSION < 29000 ) || SG_OSG_VERSION >= 29006 registry->setExpiryDelay( 0. ); #endif osgDB::ReaderWriter::Options* options = new osgDB::ReaderWriter::Options; //int cacheOptions = osgDB::ReaderWriter::Options::CACHE_ALL; //options->setObjectCacheHint((osgDB::ReaderWriter::Options::CacheHintOptions)cacheOptions); registry->setOptions(options); // Link with the ModelRegistry class to install the AC replacement loader simgear::ModelRegistry::instance(); Fl::lock(); // initialize multithreading int i = 0; if (Fl::args( argc, argv, i, parse_args ) < argc) { Fl::fatal(_("Options are:\n --silent\n --fg-exe=\n --fg-root=\n --fg-scenery=\n --terrasync-dir=\n --fg-aircraft=\n --version=\n -f, --fullscreen\n%s"), Fl::help ); } if ( silent ) { Fl_Preferences prefs( Fl_Preferences::SYSTEM, "flightgear.org", "fgrun" ); char abs_name[ FL_PATH_MAX ]; if ( !def_fg_exe.empty() ) { fl_filename_absolute( abs_name, def_fg_exe.c_str() ); prefs.set( "fg_exe_init", abs_name ); prefs.set( "fg_exe", abs_name ); } if ( !def_fg_root.empty() ) { fl_filename_absolute( abs_name, def_fg_root.c_str() ); prefs.set( "fg_root_init", abs_name ); prefs.set( "fg_root", abs_name ); } if ( !def_fg_scenery.empty() ) { fl_filename_absolute( abs_name, def_fg_scenery.c_str() ); prefs.set( "fg_scenery_init", abs_name ); prefs.set( "fg_scenery", abs_name ); } if ( !def_ts_dir.empty() ) { fl_filename_absolute( abs_name, def_ts_dir.c_str() ); prefs.set( "ts_dir_init", abs_name ); prefs.set( "ts_dir", abs_name ); } if ( !def_acft_dir.empty() ) { fl_filename_absolute( abs_name, def_acft_dir.c_str() ); prefs.set( "fg_aircraft_init", abs_name ); prefs.set( "fg_aircraft", abs_name ); } if ( !version.empty() ) { int major, minor, patch; char c1, c2; std::istringstream iss(version); iss >> major >> c1 >> minor >> c2 >> patch; if (c1 == '.' && c2 == '.') { prefs.set("version", major * 10000 + minor * 100 + patch); } } return 0; } Fl::visual( FL_DOUBLE | FL_INDEX ); Wizard ui; ui.init( fullscreen ); ui.show(); return Fl::run(); } fg-fgrun/src/os_posix.h000066400000000000000000000017511245722473500154130ustar00rootroot00000000000000// os_posix.h -- Posix specific directory functions and data. // // Written by Bernie Bright, started Apr 2004. // // Copyright (c) 2004 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ namespace os { const char searchPathSep = ':'; bool isdirsep( char c ) { return c == '/'; } } fg-fgrun/src/os_win32.h000066400000000000000000000020051245722473500152040ustar00rootroot00000000000000// os_win32.h -- Win32 specific directory functions and data. // // Written by Bernie Bright, started Apr 2004. // // Copyright (c) 2004 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ namespace os { const char searchPathSep = ';'; bool isdirsep( char c ) { return c == '/' || c == '\\'; } } // namespace os fg-fgrun/src/parkingloader.cxx000066400000000000000000000036741245722473500167530ustar00rootroot00000000000000// 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. // #include #include #include "parkingloader.h" ParkingLoader::ParkingLoader( apt_dat_t &d ): XMLVisitor(), apt_data(d) {} void ParkingLoader::startXML () { //cout << "Start XML" << endl; } void ParkingLoader::endXML () { //cout << "End XML" << endl; } void ParkingLoader::startElement( const char * name, const XMLAttributes &atts ) { if (name == std::string("Parking")) { std::string type, gateName, gateNumber; for (int i = 0; i < atts.size(); i++) { std::string attname = atts.getName( i ); if ( attname == "type" ) type = atts.getValue( i ); else if ( attname == "name" ) gateName = atts.getValue( i ); else if ( attname == "number" ) gateNumber = atts.getValue( i ); } apt_data.parking_.insert( gateName + gateNumber ); } } void ParkingLoader::endElement (const char * name) { } void ParkingLoader::data (const char * s, int len) { } void ParkingLoader::pi (const char * target, const char * data) { } void ParkingLoader::warning (const char * message, int line, int column) { } void ParkingLoader::error (const char * message, int line, int column) { } fg-fgrun/src/parkingloader.h000066400000000000000000000026771245722473500164020ustar00rootroot00000000000000// 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. // #ifndef parkingloader_h_included #define parkingloader_h_included #include #include "apt_dat.h" class ParkingLoader : public XMLVisitor { public: ParkingLoader( apt_dat_t &d ); protected: virtual void startXML (); virtual void endXML (); virtual void startElement (const char * name, const XMLAttributes &atts); virtual void endElement (const char * name); virtual void data (const char * s, int len); virtual void pi (const char * target, const char * data); virtual void warning (const char * message, int line, int column); virtual void error (const char * message, int line, int column); private: apt_dat_t &apt_data; }; #endif fg-fgrun/src/question.xpm000066400000000000000000000033341245722473500157730ustar00rootroot00000000000000/* XPM */ static const char * question_xpm[] = { "20 20 81 1", " c None", ". c #00E1FF", "+ c #00E0FF", "@ c #00E3FF", "# c #00E7FF", "$ c #00E4FF", "% c #00B1FF", "& c #0078FF", "* c #0055FF", "= c #00E2FF", "- c #00BFFF", "; c #0044FF", "> c #0037FF", ", c #003BFF", "' c #00A4FF", ") c #0034FF", "! c #0036FF", "~ c #0031FF", "{ c #043EFF", "] c #003AFF", "^ c #00B9FF", "/ c #0035FF", "( c #043DFF", "_ c #B4C5FF", ": c #FFFFFF", "< c #EEF2FF", "[ c #6B8DFF", "} c #0042FF", "| c #D0DAFF", "1 c #FCFCFF", "2 c #7595FF", "3 c #557CFF", "4 c #ABBEFF", "5 c #5E83FF", "6 c #00A2FF", "7 c #0038FF", "8 c #4570FF", "9 c #406DFF", "0 c #002DFF", "a c #E7ECFF", "b c #8FA9FF", "c c #0039FF", "d c #00E5FF", "e c #0067FF", "f c #184DFF", "g c #2A5BFF", "h c #033DFF", "i c #F5F7FF", "j c #98B0FF", "k c #00E9FF", "l c #0041FF", "m c #0C44FF", "n c #023CFF", "o c #C3D1FF", "p c #144AFF", "q c #00EAFF", "r c #0F47FF", "s c #EAEEFF", "t c #446FFF", "u c #00E6FF", "v c #005BFF", "w c #A2B7FF", "x c #F4F6FF", "y c #0090FF", "z c #B5C6FF", "A c #00D5FF", "B c #002FFF", "C c #0030FF", "D c #0097FF", "E c #CAD6FF", "F c #A3B9FF", "G c #0073FF", "H c #7192FF", "I c #587FFF", "J c #00E8FF", "K c #0091FF", "L c #0033FF", "M c #00CCFF", "N c #0082FF", "O c #004AFF", "P c #00EBFF", " ", " .+@##@+. ", " +$%&**&%$+ ", " .=-;>,,,,>;-=. ", " @'),,!~{~],)'@ ", " +^/,,(_::<[/,/^+ ", " .+},,/|1234:5,,}+. ", " +67,,8:9],0abc,76+ ", " de,,,f:g,,hijc,,ed ", " kl,,,cm7,no:p,,,lk ", " q],,,,,,rs:t],,,]q ", " uv,,,,,7wxf],,,,vu ", " .y],,,,7jz!,,,,]y. ", " .A/,,,,,BC,,,,,/A. ", " =D>,,,)EF>,,,>D= ", " .#G>,,7HIc,,>G#. ", " +JKL],c],]LKJ+ ", " .=MNOBBONM=. ", " .=JPPJ=. ", " "}; fg-fgrun/src/run_posix.cxx000066400000000000000000000076221245722473500161540ustar00rootroot00000000000000// FGRun_Posix.cxx -- // // Written by Bernie Bright, started Oct 2002. // // Copyright (c) 2002 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifdef HAVE_CONFIG_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_SYS_WAIT_H # include #endif #ifdef HAVE_TERMIOS_H # include #endif #include #include #include #include "wizard.h" #include "fgrun_pty.h" #include "logwin.h" using std::string; using std::vector; int Wizard::run_fgfs( const std::string &args ) { pid_t pid; int master = -1; #if defined(HAVE_TERMIOS_H) struct termios term; tcgetattr( STDOUT_FILENO, &term ); term.c_oflag &= ~( OLCUC | ONLCR ); pid = pty_fork( &master, 0, &term, 0 ); #else pid = pty_fork( &master, 0, 0, 0 ); #endif if (pid < 0) { perror( "fork error" ); (void) close( master ); return 0; } if (pid > 0) { // parent if (master < 0) return 0; Fl::lock(); logwin->clear(); logwin->show(); Fl::add_fd( master, stdout_cb, this ); Fl::unlock(); int status; waitpid( pid, &status, 0 ); return 0; } else { // child if (master >= 0) close( master ); const int buflen = FL_PATH_MAX; char buf[ buflen ]; prefs.get( "fg_exe", buf, "", buflen-1); string path = buf; string arg0; string::size_type idx = path.find_last_of( "/\\" ); if (idx != string::npos) { arg0 = path.substr( idx+1 ); } else { arg0 = path; } // "export" any environment variables. int iVal; prefs.get( "env-count", iVal, 0 ); for (int i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("env-var-%d", i), buf, "", buflen-1 ); char *equals = strchr(buf, '='); if (equals == NULL) { /* environment variable name without a value; the value follows */ unsetenv(buf); } else { /* value exists */ /* replace '=' with a new terminator; the value follows */ *equals = '\0'; setenv(/* name: */ buf, /* value: */ equals + 1, /* overwrite: */ 1); } } vector argv; argv.push_back( arg0 ); string token; string line = args; while ( line.size() ) { idx = line.find( ' ' ); if ( idx == string::npos ) { token = line; line = ""; } else { token = line.substr( 0, idx ); line.erase( 0, idx + 1 ); } if ( token.size() ) { argv.push_back( token ); } } char **pt = new char *[argv.size() + 1]; for ( vector::size_type i = 0; i < argv.size(); i++ ) { pt[i] = new char[ argv[i].size()+1 ]; strcpy( pt[i], argv[i].c_str() ); } pt[argv.size()] = NULL; execv( path.c_str(), pt ); perror("execv :"); } return 0; } void Wizard::stopProcess( long pid ) { } void Wizard::stdout_cb( int fd, void* p ) { static_cast(p)->stdout_cb( fd ); } void Wizard::stdout_cb( int fd ) { char buf[256]; ssize_t n = read( fd, buf, sizeof( buf ) - 1 ); if (n > 0) { buf[n] = 0; logwin->append( buf ); } else { Fl::remove_fd( fd ); close( fd ); } } // void // Wizard::show_log_window() // { // win->show(); // } fg-fgrun/src/run_win32.cxx000066400000000000000000000243721245722473500157550ustar00rootroot00000000000000// FGRun_Win32.cxx -- // // Written by Bernie Bright, started Oct 2002. // // Copyright (c) 2002 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifdef HAVE_CONFIG_H # include #endif #include "wizard.h" #include #include #include #include #include #include using std::string; static int encase_arg( string & line, string arg ) { int iret = 0; string ar = "--"; // start option argument string are = " --"; // to next, if any ar += arg; // add the current argument/option ar += "="; // add EQUALS size_t pos1 = line.find(ar); // find, like '--fg-root=' if( pos1 != string::npos ) { // if FOUND size_t sz = pos1 + ar.size(); // get the arg size size_t pos2 = line.find( are, sz ); // find next arg beginning if( pos2 == string::npos ) { // if NOT FOUND pos2 = line.size(); } line.insert( pos2, "\"" ); // pop in the quotes, at the end first line.insert( sz, "\"" ); // then at the front of the 'path' iret = 1; // advise done } return iret; } static int run_program( char *cmd, long &pid, char *env = 0 ) { //SECURITY_ATTRIBUTES procAttrs; //SECURITY_ATTRIBUTES threadAttrs; BOOL inheritHandles = TRUE; DWORD creationFlags = CREATE_NEW_PROCESS_GROUP; #ifdef MINIDUMP creationFlags = creationFlags | DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS; #endif STARTUPINFO si; PROCESS_INFORMATION pi; int exit_code = 0; memset( &si, 0, sizeof(si) ); si.cb = sizeof(si); BOOL bStarted = ::CreateProcess( NULL, // lpApplicationName cmd, // lpCommandLine NULL, // lpProcessAttributes NULL, // lpThreadAttributes inheritHandles, creationFlags, env, // lpEnvironment NULL, // lpCurrentDirectory &si, &pi ); if (!bStarted) { LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language (LPTSTR) &lpMsgBuf, 0, NULL ); MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); // Free the buffer. LocalFree( lpMsgBuf ); } else { pid = pi.dwProcessId; #ifdef MINIDUMP DWORD dwContinueStatus = DBG_CONTINUE; // exception continuation bool end = false, dump = false; while ( !end ) { DEBUG_EVENT DebugEv; // Wait for a debugging event to occur. The second parameter indicates // that the function does not return until a debugging event occurs. WaitForDebugEvent( &DebugEv, INFINITE ); switch ( DebugEv.dwDebugEventCode ) { case EXCEPTION_DEBUG_EVENT: switch( DebugEv.u.Exception.ExceptionRecord.ExceptionCode ) { case EXCEPTION_BREAKPOINT: break; case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_FLT_DENORMAL_OPERAND: case EXCEPTION_FLT_DIVIDE_BY_ZERO: case EXCEPTION_FLT_INEXACT_RESULT: case EXCEPTION_FLT_INVALID_OPERATION: case EXCEPTION_FLT_OVERFLOW: case EXCEPTION_FLT_STACK_CHECK: case EXCEPTION_FLT_UNDERFLOW: case EXCEPTION_INT_DIVIDE_BY_ZERO: case EXCEPTION_INT_OVERFLOW: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_NONCONTINUABLE_EXCEPTION: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_INVALID_DISPOSITION: case EXCEPTION_GUARD_PAGE: case EXCEPTION_INVALID_HANDLE: std::cout << "Exception detected (0x" << std::hex << DebugEv.u.Exception.ExceptionRecord.ExceptionCode << std::dec << ") : " << DebugEv.dwThreadId << std::endl; if ( !dump ) { std::cout << "Creating dump file" << std::endl; time_t now = time(0); ::tm *stm = gmtime( &now ); const int buflen = FL_PATH_MAX; char buf[ buflen ]; prefs.getUserdataPath( buf, sizeof(buf) ); std::ostringstream os; os << buf << "fgfs-dump-" << DebugEv.dwProcessId << "-" << ( 1900 + stm->tm_year ) << "-" << ( 1 + stm->tm_mon ) << "-" << stm->tm_mday << "-" << stm->tm_hour << "-" << stm->tm_min << "-" << stm->tm_sec << ".dmp"; dump_file_name = os.str(); HANDLE hFile = CreateFile( dump_file_name.c_str(), GENERIC_READ | GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 ); if ( hFile != INVALID_HANDLE_VALUE ) { MiniDumpWriteDump( pi.hProcess, DebugEv.dwProcessId, hFile, MiniDumpNormal, 0, 0, 0 ); CloseHandle( hFile ); char *pbuf = new char[ dump_file_name.size() * 2 + 1 ]; CharToOem( dump_file_name.c_str(), pbuf ); std::cout << "Dump file created (" << pbuf << ")" << std::endl; delete[] pbuf; dump = true; } } dwContinueStatus = DBG_EXCEPTION_NOT_HANDLED; exit_code = 1; break; } break; case EXIT_PROCESS_DEBUG_EVENT: std::cout << "Exit process detected" << std::endl; end = true; break; default: break; } // Resume executing the thread that reported the debugging event. ContinueDebugEvent( DebugEv.dwProcessId, DebugEv.dwThreadId, dwContinueStatus ); } #else WaitForSingleObject( pi.hProcess, INFINITE ); DWORD exitCode; GetExitCodeProcess( pi.hProcess, &exitCode ); #endif // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); } delete[] cmd; pid = 0; return exit_code; } int Wizard::run_fgfs(const string &args) { const int buflen = FL_PATH_MAX; char exe[ buflen ]; char buf[ buflen ]; prefs.get( "fg_exe", buf, "", buflen-1 ); fl_filename_absolute( exe, buf ); // Convert cygwin path ( if any ) into real windows path if ( strncmp( exe, "/cygdrive", 9 ) == 0 ) { memmove( exe, exe+9, strlen(exe)-8 ); exe[0] = exe[1]; exe[1] = ':'; } string line = args; encase_arg( line, "fg-root" ); encase_arg( line, "fg-scenery" ); encase_arg( line, "terrasync-dir" ); encase_arg( line, "fg-aircraft" ); encase_arg( line, "config" ); encase_arg( line, "browser-app" ); char* cmd = new char[ strlen(exe) + line.size() + 2 ]; strcpy( cmd, exe ); strcat( cmd, " " ); strcat( cmd, line.c_str() ); boost::scoped_array childenv; int iVal; prefs.get( "env-count", iVal, 0 ); if ( iVal > 0 ) { LPTCH env = GetEnvironmentStrings(); char *p = env; std::vector strangevars; std::map vars; while ( *p != '\0' ) { std::string var = p; size_t pos = var.find( '=' ); if (pos == std::string::npos || pos == 0) strangevars.push_back( var ); else vars[ var.substr( 0, pos ) ] = var.substr( pos + 1 ); p += strlen( p ) + 1; } FreeEnvironmentStrings( env ); const int buflen = FL_PATH_MAX; char buf[ buflen ]; for (int i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("env-var-%d", i), buf, "", buflen-1 ); std::string var = buf; size_t pos = var.find( '=' ); if ( pos != std::string::npos && pos > 0 && pos < var.size() - 1 ) vars[ var.substr( 0, pos ) ] = var.substr( pos + 1 ); } size_t len = 1; for ( std::vector::iterator ii = strangevars.begin(); ii != strangevars.end(); ++ii ) { len += ii->size(); len += 1; } for ( std::map::iterator ii = vars.begin(); ii != vars.end(); ++ii ) { len += ii->first.size(); len += ii->second.size(); len += 2; } childenv.reset( new char[ len ] ); p = childenv.get(); for ( std::vector::iterator ii = strangevars.begin(); ii != strangevars.end(); ++ii ) { strcpy( p, ii->c_str() ); p += strlen( p ) + 1; } for ( std::map::iterator ii = vars.begin(); ii != vars.end(); ++ii ) { strcpy( p, ii->first.c_str() ); strcat( p, "=" ); strcat( p, ii->second.c_str() ); p += strlen( p ) + 1; } *p = '\0'; } return run_program( cmd, fgPid, childenv.get() ); } void Wizard::stopProcess( long pid ) { if (pid != 0) GenerateConsoleCtrlEvent( CTRL_BREAK_EVENT, pid ); } fg-fgrun/src/settings.cxx000066400000000000000000000630671245722473500157730ustar00rootroot00000000000000// settings.cxx -- Save/Load user preferences. // // Written by Bernie Bright, started Dec 2002. // // Copyright (c) 2002 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #include #include "advanced.h" #include "util.h" using std::string; static const char* coverage_to_string( int coverage ) { switch (coverage) { case 0: return "overcast"; case 1: return "broken"; case 2: return "scattered"; case 3: return "few"; case 4: return "cirrus"; case 5: return "clear"; default: return "clear"; }; } static int string_to_coverage( const char* s ) { if (strcmp( "overcast", s ) == 0) return 0; else if (strcmp( "broken", s ) == 0) return 1; else if (strcmp( "scattered", s ) == 0) return 2; else if (strcmp( "few", s ) == 0) return 3; else if (strcmp( "cirrus", s ) == 0) return 4; else if (strcmp( "clear", s ) == 0) return 5; else return 5; } void Advanced::save_settings( Fl_Preferences& prefs ) { prefs.set( "ts_dir", ts_dir->value()); prefs.set( "browser", browser->value() ); prefs.set( "lang", lang->value()); prefs.set( "config", config->value() ); prefs.set("splash_screen", splash_screen->value()); prefs.set("mouse_pointer", mouse_pointer->value()); prefs.set("random_objects", random_objects->value()); prefs.set("random_trees", random_trees->value()); prefs.set("panel", panel->value()); prefs.set("sound", sound->value()); prefs.set("hud", hud->value()); prefs.set("antialias_hud", antialias_hud->value()); prefs.set("hud_3d", hud_3d->value()); prefs.set("auto_coordination", auto_coordination->value()); prefs.set("horizon_effect", horizon_effect->value()); prefs.set("enhanced_lighting", enhanced_lighting->value()); prefs.set("distance_attenuation", distance_attenuation->value()); prefs.set("specular_highlight", specular_highlight->value()); prefs.set("failure", failure->value()); prefs.set("failure_electrical", failure_electrical->value()); prefs.set("failure_pitot", failure_pitot->value()); prefs.set("failure_static", failure_static->value()); prefs.set("failure_vacuum", failure_vacuum->value()); prefs.set("ai_models", ai_models->value()); prefs.set("ai_traffic", ai_traffic->value()); prefs.set("fdm", fdm->text()); prefs.set("no_trim", notrim->value()); prefs.set("model_hz", int(model_hz->value())); prefs.set("speed", int(speed->value())); prefs.set("on_ground", on_ground->value()); prefs.set("in_air", in_air->value()); prefs.set("wind_heading", wind_dial->value()); prefs.set("wind_speed", wind_speed->value()); prefs.set("turbulence", turbulence->value()); prefs.set("ceiling", ceiling->value()); prefs.set("random_wind", random_wind->value()); prefs.set("fetch_real_weather", fetch_real_weather->value()); prefs.set("freeze", freeze->value()); prefs.set("fuel_freeze", fuel_freeze->value()); prefs.set("clock_freeze", clock_freeze->value()); prefs.set("lon", lon->value()); prefs.set("lat", lat->value()); prefs.set("altitude", altitude->value()); prefs.set("heading", heading->value()); prefs.set("roll", roll->value()); prefs.set("pitch", pitch->value()); prefs.set("vc", vc->value()); prefs.set("uBody", uBody->value()); prefs.set("vBody", vBody->value()); prefs.set("wBody", wBody->value()); prefs.set("vor", vor->value()); prefs.set("ndb", ndb->value()); prefs.set("fix", fix->value()); prefs.set("offset_distance", offset_distance->value()); prefs.set("offset_azimuth", offset_azimuth->value()); prefs.set("glideslope", glideslope->value()); prefs.set("clouds", clouds->value()); prefs.set("clouds3d", clouds3d->value()); prefs.set("fullscreen", fullscreen->value()); prefs.set("texture_compression", texture_compression->value()); prefs.set("wireframe", wireframe->value()); prefs.set("rembrandt", rembrandt->value()); if (fog_disabled->value()) prefs.set("fog", "disabled"); else if (fog_fastest->value()) prefs.set("fog", "fastest"); else if (fog_nicest->value()) prefs.set("fog", "nicest"); if (shading_smooth->value()) prefs.set("shading", "smooth"); else if (shading_flat->value()) prefs.set("shading", "flat"); prefs.set("geometry", geometry->value()); prefs.set("visibility", visibility->value()); if (vis_meters->value()) prefs.set("visibility-units", "meters"); else prefs.set("visibility-units", "miles"); prefs.set("view-offset", view_offset->value()); prefs.set("bpp", bpp->text()); prefs.set("fov", fov->value()); prefs.set("texture-filtering", (const char *)texture_filtering->mvalue()->user_data()); prefs.set("materials-file", materials_file->value()); prefs.set("anti-aliasing", (const char *)anti_aliasing->mvalue()->user_data()); prefs.set("time-match-real", time_match_real->value()); prefs.set("time-offset", time_offset_value->value()); prefs.set("time-match-local", time_match_local->value()); prefs.set("start-date-sys", start_date_sys->value()); prefs.set("start-date-sys-value", start_date_sys_value->value()); prefs.set("start-date-gmt", start_date_gmt->value()); prefs.set("start-date-gmt-value", start_date_gmt_value->value()); prefs.set("start-date-lat", start_date_lat->value()); prefs.set("start-date-lat-value", start_date_gmt_value->value()); prefs.set("time_of_day", time_of_day->value()); prefs.set("time_of_day_value", (const char *)time_of_day_value->mvalue()->user_data()); // prefs.set("season", (const char *)season->mvalue()->user_data()); // Network options. prefs.set("httpd", httpd->value() ? int(httpd_port->value()) : 0); prefs.set("props", props->value() ? int(props_port->value()) : 0); prefs.set("jpg-httpd", jpg_httpd->value() ? int(jpg_httpd_port->value()) : 0); // Multiplayer options prefs.set( "callsign", callsign->value() ); prefs.set( "multiplay1", multiplay1->value() ); prefs.set( "multiplay2", multiplay2->value() ); // FGCom options prefs.set( "fgcom-disabled", fgcom_disabled->value() ); prefs.set( "fgcom-builtin", fgcom_builtin->value() ); prefs.set( "fgcom-standalone", fgcom_standalone->value() ); prefs.set( "fgcom-hostname", fgcom_hostname->value() ); prefs.set( "fgcom-port", fgcom_port->value() ); prefs.set( "proxy", proxy->value() ); int i; for (i = io_list->size(); i >= 1; --i) if ( strlen( io_list->text(i) ) == 0 ) io_list->remove( i ); prefs.set("io-count", io_list->size()); for (i = 1; i <= io_list->size(); ++i) prefs.set( Fl_Preferences::Name("io-item-%d", i), io_list->text(i)); prefs.set("property-count", prop_list->size()); for (i = 1; i <= prop_list->size(); ++i) prefs.set( Fl_Preferences::Name("property-item-%d", i), prop_list->text(i)); prefs.set("env-count", env_list->size()); for (i = 1; i <= env_list->size(); ++i) prefs.set( Fl_Preferences::Name("env-var-%d", i), env_list->text(i)); prefs.set( "log-level", (const char *)log_level->mvalue()->user_data() ); prefs.set("trace-read-count", trace_read_list->size()); for (i = 1; i <= trace_read_list->size(); ++i) prefs.set( Fl_Preferences::Name("trace-read-%d", i), trace_read_list->text(i) ); prefs.set("trace-write-count", trace_write_list->size()); for (i = 1; i <= trace_write_list->size(); ++i) prefs.set( Fl_Preferences::Name("trace-write-%d", i), trace_write_list->text(i) ); prefs.set( "nav1", nav1->value() ); prefs.set( "nav2", nav2->value() ); prefs.set( "adf", adf->value() ); if (dme->value()) { if (dme_nav1->value()) prefs.set( "dme", "nav1" ); else if (dme_nav2->value()) prefs.set( "dme", "nav2" ); else if (dme_int->value()) prefs.set( "dme", dme_int_freq->value() ); } else { prefs.set( "dme", "disabled" ); } for( i = 0; i < MAX_CLOUD_LAYERS; ++i) { prefs.set( Fl_Preferences::Name("layer-%d-elevation-ft", i), cloud_elevation[i] ); prefs.set( Fl_Preferences::Name("layer-%d-thickness-ft", i), cloud_thickness[i] ); prefs.set( Fl_Preferences::Name("layer-%d-coverage", i), coverage_to_string( cloud_coverage[i] ) ); prefs.set( Fl_Preferences::Name("layer-%d-transition-ft", i), cloud_transition[i] ); prefs.set( Fl_Preferences::Name("layer-%d-span-m", i), cloud_span[i] ); } } void Advanced::load_settings( Fl_Preferences& prefs ) { const int buflen = FL_PATH_MAX; char buf[ buflen ]; const char* not_set = "NOT SET"; int i = 0; prefs.get( "fg_exe", buf, not_set, buflen-1); fg_exe_->value(buf); prefs.get( "fg_root", buf, not_set, buflen-1); fg_root_->value( buf ); prefs.get( "fg_scenery", buf, not_set, buflen-1 ); fg_scenery_->value( buf ); prefs.get( "ts_dir", buf, "", buflen-1 ); ts_dir->value( buf ); prefs.get( "aircraft", buf, not_set, buflen-1 ); aircraft_->value( buf ); prefs.get( "airport", buf, "", buflen-1 ); airport_id_ = buf; string s( airport_id_ ); prefs.get( "airport-name", buf, "", buflen-1); if (buf[0] != 0) { s.append( " - " ); s.append( buf ); } airport_->value( s.c_str() ); prefs.get( "runway", buf, not_set, buflen-1 ); runway_->value( buf ); prefs.get( "lang", buf, "", buflen-1 ); lang->value( buf ); // #if defined(WIN32) // prefs.get("browser", buf, "webrun.bat", buflen-1); // #else // prefs.get("browser", buf, "netscape", buflen-1); // #endif // browser->value(buf); if (prefs.get( "config", buf, "", buflen-1) && buf[0] != 0) config->value( buf ); int iVal; double dVal; prefs.get("splash_screen", iVal, 1); splash_screen->value(iVal); prefs.get("mouse_pointer", iVal, 0); mouse_pointer->value(iVal); prefs.get("random_objects", iVal, 0); random_objects->value(iVal); prefs.get("random_trees", iVal, 0); random_trees->value(iVal); prefs.get("panel", iVal, 1); panel->value(iVal); prefs.get("sound", iVal, 1); sound->value(iVal); prefs.get("hud", iVal, 0); hud->value(iVal); hud->do_callback(); prefs.get("antialias_hud", iVal, 0); antialias_hud->value(iVal); prefs.get("hud_3d", iVal, 1); hud_3d->value(iVal); prefs.get("auto_coordination", iVal, 0); auto_coordination->value(iVal); prefs.get("horizon_effect", iVal, 0); horizon_effect->value( iVal ); prefs.get("enhanced_lighting", iVal, 0); enhanced_lighting->value( iVal ); prefs.get("distance_attenuation", iVal, 0); distance_attenuation->value( iVal ); prefs.get("specular_highlight", iVal, 1); specular_highlight->value( iVal ); prefs.get("failure", iVal, 0); failure->value( iVal ); failure->do_callback(); prefs.get("failure_electrical", iVal, 0); failure_electrical->value( iVal ); prefs.get("failure_pitot", iVal, 0); failure_pitot->value( iVal ); prefs.get("failure_static", iVal, 0); failure_static->value( iVal ); prefs.get("failure_vacuum", iVal, 0); failure_vacuum->value( iVal ); prefs.get("ai_models", iVal, 0); ai_models->value( iVal ); prefs.get("ai_traffic", iVal, 0); ai_traffic->value( iVal ); if (ai_models->value() == 0) ai_traffic->deactivate(); else ai_traffic->activate(); prefs.get("fdm", buf, "automatic selection", buflen-1); set_choice(fdm, buf); fdm->do_callback(); prefs.get("notrim", iVal, 0); notrim->value(iVal); prefs.get("model_hz", iVal, 120); model_hz->value(iVal); prefs.get("speed", iVal, 1); speed->value(iVal); prefs.get("on_ground", iVal, 1); on_ground->value(iVal); prefs.get("in_air", iVal, 0); in_air->value(iVal); prefs.get( "wind_heading", dVal, 0.0 ); wind_dial->value( dVal ); wind_hdg->value( dVal ); prefs.get( "wind_speed", dVal, 0.0 ); wind_speed->value( dVal ); prefs.get("turbulence", dVal, 0.0 ); turbulence->value(dVal); prefs.get("ceiling", buf, "", buflen-1); ceiling->value(buf); prefs.get("random_wind", iVal, 0); random_wind->value( iVal ); random_wind->do_callback(); prefs.get("fetch_real_weather", iVal, 0); fetch_real_weather->value( iVal ); prefs.get("freeze", iVal, 0); freeze->value(iVal); prefs.get("fuel_freeze", iVal, 0); fuel_freeze->value(iVal); prefs.get("clock_freeze", iVal, 0); clock_freeze->value(iVal); prefs.get("lon", buf, "", buflen-1); lon->value(buf); prefs.get("lat", buf, "", buflen-1); lat->value(buf); prefs.get("altitude", buf, "", buflen-1); altitude->value(buf); prefs.get("heading", dVal, 0.0); heading->value(dVal); prefs.get("roll", dVal, 0.0); roll->value(dVal); prefs.get("pitch", dVal, 0.0); pitch->value(dVal); prefs.get("vc", buf, "", buflen-1); vc->value(buf); prefs.get("uBody", buf, "", buflen-1); uBody->value(buf); prefs.get("vBody", buf, "", buflen-1); vBody->value(buf); prefs.get("wBody", buf, "", buflen-1); wBody->value(buf); prefs.get("vor", buf, "", buflen-1); vor->value(buf); prefs.get("ndb", buf, "", buflen-1); ndb->value(buf); prefs.get("fix", buf, "", buflen-1); fix->value(buf); prefs.get("offset_distance", buf, "", buflen-1); offset_distance->value(buf); prefs.get("offset_azimuth", buf, "", buflen-1); offset_azimuth->value(buf); prefs.get("glideslope", buf, "", buflen-1); glideslope->value(buf); prefs.get("clouds", iVal, 1); clouds->value(iVal); prefs.get("clouds3d", iVal, 0); clouds3d->value(iVal); prefs.get("fullscreen", iVal, 0); fullscreen->value(iVal); prefs.get("texture_compression", iVal, 1); texture_compression->value(iVal); prefs.get("wireframe", iVal, 0); wireframe->value(iVal); prefs.get("rembrandt", iVal, 0); rembrandt->value(iVal); rembrandt->do_callback(); prefs.get("shading", buf, "smooth", buflen-1); if (strcmp(buf, "smooth") == 0) shading_smooth->setonly(); else if (strcmp(buf, "flat") == 0) shading_flat->setonly(); prefs.get("fog", buf, "nicest", buflen-1); if (strcmp(buf, "nicest") == 0) fog_nicest->setonly(); else if (strcmp(buf, "fastest") == 0) fog_fastest->setonly(); else if (strcmp(buf, "disabled") == 0) fog_disabled->setonly(); prefs.get("geometry", buf, "", buflen-1); geometry->value(buf); prefs.get("visibility", buf, "", buflen-1); visibility->value(buf); prefs.get("view-offset", buf, "", buflen-1); view_offset->value(buf); prefs.get("bpp", buf, "32", buflen-1); set_choice( bpp, buf ); prefs.get("fov", dVal, 60.0 ); fov->value( dVal ); prefs.get("visibility-units", buf, "meters", buflen-1); if (strcmp(buf,"meters") == 0) vis_meters->setonly(); else if (strcmp(buf,"miles") == 0) vis_miles->setonly(); prefs.get( "texture-filtering", buf, "1", buflen-1 ); set_choice_from_data( texture_filtering, buf ); prefs.get("materials-file", buf, "", buflen-1); materials_file->value(buf); prefs.get( "anti-aliasing", buf, "1", buflen-1 ); set_choice_from_data( anti_aliasing, buf ); prefs.get( "time-match-real", iVal, 1 ); if (iVal) time_match_real->setonly(); prefs.get( "time-offset", buf, "", buflen-1 ); time_offset_value->value( buf ); prefs.get( "time-match-local", iVal, 0 ); if (iVal) time_match_local->setonly(); prefs.get( "start-date-sys", iVal, 0 ); if (iVal) start_date_sys->setonly(); prefs.get( "start-date-sys-value", buf, "", buflen-1 ); start_date_sys_value->value(buf); prefs.get( "start-date-gmt", iVal, 0 ); if (iVal) start_date_gmt->setonly(); prefs.get( "start-date-gmt-value", buf, "", buflen-1 ); start_date_gmt_value->value(buf); prefs.get( "start-date-lat", iVal, 0 ); if (iVal) start_date_lat->setonly(); prefs.get( "start-date-lat-value", buf, "", buflen-1 ); start_date_lat_value->value(buf); prefs.get( "time_of_day", iVal, 0 ); if (iVal) time_of_day->setonly(); prefs.get( "time_of_day_value", buf, "dawn", buflen-1 ); set_choice( time_of_day_value, buf ); /* prefs.get( "season", buf, "summer", buflen-1 ); set_choice( season, buf ); */ prefs.get( "httpd", iVal, 0 ); if (iVal) { httpd->set(); httpd_port->value( double(iVal) ); } prefs.get( "props", iVal, 0 ); if (iVal) { props->set(); props_port->value( double(iVal) ); } prefs.get( "jpg-httpd", iVal, 0 ); if (iVal) { jpg_httpd->set(); jpg_httpd_port->value( double(iVal) ); } prefs.get( "callsign", buf, "", buflen-1 ); callsign->value( buf ); prefs.get( "multiplay1", buf, "", buflen-1 ); multiplay1->value( buf ); prefs.get( "multiplay2", buf, "", buflen-1 ); multiplay2->value( buf ); // FGCom options prefs.get( "fgcom-disabled", iVal, 1 ); if (iVal) fgcom_disabled->setonly(); prefs.get( "fgcom-builtin", iVal, 0 ); if (iVal) fgcom_builtin->setonly(); prefs.get( "fgcom-standalone", iVal, 0 ); if (iVal) { fgcom_standalone->setonly(); fgcom_hostname->activate(); fgcom_port->activate(); } prefs.get( "fgcom-hostname", buf, "", buflen-1 ); if (buf[0] == 0 ) fgcom_hostname->value( "127.0.0.1" ); else fgcom_hostname->value( buf ); prefs.get( "fgcom-port", iVal, 16661 ); fgcom_port->value( double(iVal) ); prefs.get( "proxy", buf, "", buflen-1 ); proxy->value( buf ); io_list->clear(); prefs.get( "io-count", iVal, 0 ); for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("io-item-%d", i), buf, "", buflen-1 ); io_list->add( buf ); } prop_list->clear(); prefs.get( "property-count", iVal, 0 ); for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("property-item-%d", i), buf, "", buflen-1 ); prop_list->add( buf ); } env_list->clear(); prefs.get( "env-count", iVal, 0 ); for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("env-var-%d", i), buf, "", buflen-1 ); env_list->add( buf ); } prefs.get( "log-level", buf, "alert", buflen-1 ); set_choice( log_level, buf ); trace_read_list->clear(); prefs.get( "trace-read-count", iVal, 0 ); for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("trace-read-%d", i), buf, "", buflen-1 ); trace_read_list->add( buf ); } trace_write_list->clear(); prefs.get( "trace-write-count", iVal, 0 ); for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("trace-write-%d", i), buf, "", buflen-1 ); trace_write_list->add( buf ); } prefs.get( "nav1", buf, "", buflen-1 ); nav1->value( buf ); prefs.get( "nav2", buf, "", buflen-1 ); nav2->value( buf ); prefs.get( "adf", buf, "", buflen-1 ); adf->value( buf ); prefs.get( "dme", buf, "disabled", buflen-1 ); if (strcmp( buf, "disabled" ) == 0) { dme->clear(); dme_group->deactivate(); } else { dme->set(); dme_group->activate(); dme_int_freq->deactivate(); if (strcmp( buf, "nav1" ) == 0) dme_nav1->setonly(); else if (strcmp( buf, "nav2" ) == 0) dme_nav2->setonly(); else { dme_int->setonly(); dme_int_freq->value( buf ); } } for (i = 0; i < MAX_CLOUD_LAYERS; ++i) { prefs.get( Fl_Preferences::Name("layer-%d-elevation-ft", i), cloud_elevation[i], 0.0 ); prefs.get( Fl_Preferences::Name("layer-%d-thickness-ft", i), cloud_thickness[i], 0.0 ); prefs.get( Fl_Preferences::Name("layer-%d-transition-ft", i), cloud_transition[i], 0.0 ); prefs.get( Fl_Preferences::Name("layer-%d-span-m", i), cloud_span[i], 0.0 ); prefs.get( Fl_Preferences::Name("layer-%d-coverage", i), buf, "clear", buflen-1); cloud_coverage[i] = string_to_coverage( buf ); } cloud_layer_->value(0); cloud_layer_->do_callback(); } void Advanced::reset_settings( Fl_Preferences& prefs ) { prefs.deleteEntry( "ts_dir" ); prefs.deleteEntry( "browser" ); prefs.deleteEntry( "lang" ); prefs.deleteEntry( "config" ); prefs.deleteEntry("splash_screen" ); prefs.deleteEntry("mouse_pointer" ); prefs.deleteEntry("random_objects" ); prefs.deleteEntry("random_trees" ); prefs.deleteEntry("panel" ); prefs.deleteEntry("sound" ); prefs.deleteEntry("hud" ); prefs.deleteEntry("antialias_hud" ); prefs.deleteEntry("hud_3d" ); prefs.deleteEntry("auto_coordination" ); prefs.deleteEntry("horizon_effect" ); prefs.deleteEntry("enhanced_lighting" ); prefs.deleteEntry("distance_attenuation" ); prefs.deleteEntry("specular_highlight" ); prefs.deleteEntry("failure" ); prefs.deleteEntry("failure_electrical" ); prefs.deleteEntry("failure_pitot" ); prefs.deleteEntry("failure_static" ); prefs.deleteEntry("failure_vacuum" ); prefs.deleteEntry("ai_models" ); prefs.deleteEntry("ai_traffic" ); prefs.deleteEntry("fdm" ); prefs.deleteEntry("no_trim" ); prefs.deleteEntry("model_hz" ); prefs.deleteEntry("speed" ); prefs.deleteEntry("on_ground" ); prefs.deleteEntry("in_air" ); prefs.deleteEntry("wind_heading" ); prefs.deleteEntry("wind_speed" ); prefs.deleteEntry("turbulence" ); prefs.deleteEntry("ceiling" ); prefs.deleteEntry("random_wind" ); prefs.deleteEntry("fetch_real_weather" ); prefs.deleteEntry("freeze" ); prefs.deleteEntry("fuel_freeze" ); prefs.deleteEntry("clock_freeze" ); prefs.deleteEntry("lon" ); prefs.deleteEntry("lat" ); prefs.deleteEntry("altitude" ); prefs.deleteEntry("heading" ); prefs.deleteEntry("roll" ); prefs.deleteEntry("pitch" ); prefs.deleteEntry("vc" ); prefs.deleteEntry("uBody" ); prefs.deleteEntry("vBody" ); prefs.deleteEntry("wBody" ); prefs.deleteEntry("vor" ); prefs.deleteEntry("ndb" ); prefs.deleteEntry("fix" ); prefs.deleteEntry("offset_distance" ); prefs.deleteEntry("offset_azimuth" ); prefs.deleteEntry("glideslope" ); prefs.deleteEntry("clouds" ); prefs.deleteEntry("clouds3d" ); prefs.deleteEntry("fullscreen" ); prefs.deleteEntry("texture_compression" ); prefs.deleteEntry("wireframe" ); prefs.deleteEntry("rembrandt" ); prefs.deleteEntry("fog" ); prefs.deleteEntry("shading" ); prefs.deleteEntry("geometry" ); prefs.deleteEntry("visibility" ); prefs.deleteEntry("visibility-units" ); prefs.deleteEntry("view-offset" ); prefs.deleteEntry("bpp" ); prefs.deleteEntry("fov" ); prefs.deleteEntry("texture-filtering" ); prefs.deleteEntry("materials-file" ); prefs.deleteEntry("anti-aliasing" ); prefs.deleteEntry("time-match-real" ); prefs.deleteEntry("time-offset" ); prefs.deleteEntry("time-match-local" ); prefs.deleteEntry("start-date-sys" ); prefs.deleteEntry("start-date-sys-value" ); prefs.deleteEntry("start-date-gmt" ); prefs.deleteEntry("start-date-gmt-value" ); prefs.deleteEntry("start-date-lat" ); prefs.deleteEntry("start-date-lat-value" ); prefs.deleteEntry("time_of_day" ); prefs.deleteEntry("time_of_day_value" ); prefs.deleteEntry("season" ); // Network options. prefs.deleteEntry("httpd" ); prefs.deleteEntry("props" ); prefs.deleteEntry("jpg-httpd" ); // Multiplayer options prefs.deleteEntry( "callsign" ); prefs.deleteEntry( "multiplay1" ); prefs.deleteEntry( "multiplay2" ); // FGCom options prefs.deleteEntry( "fgcom-disabled" ); prefs.deleteEntry( "fgcom-builtin" ); prefs.deleteEntry( "fgcom-standalone" ); prefs.deleteEntry( "fgcom-hostname" ); prefs.deleteEntry( "fgcom-port" ); prefs.deleteEntry( "proxy" ); int i; prefs.deleteEntry("io-count" ); for (i = 1; i <= io_list->size(); ++i) prefs.deleteEntry( Fl_Preferences::Name("io-item-%d", i) ); prefs.deleteEntry("property-count" ); for (i = 1; i <= prop_list->size(); ++i) prefs.deleteEntry( Fl_Preferences::Name("property-item-%d", i) ); prefs.deleteEntry("env-count" ); for (i = 1; i <= env_list->size(); ++i) prefs.deleteEntry( Fl_Preferences::Name("env-var-%d", i) ); prefs.deleteEntry( "log-level" ); prefs.deleteEntry("trace-read-count" ); for (i = 1; i <= trace_read_list->size(); ++i) prefs.deleteEntry( Fl_Preferences::Name("trace-read-%d", i) ); prefs.deleteEntry("trace-write-count" ); for (i = 1; i <= trace_write_list->size(); ++i) prefs.deleteEntry( Fl_Preferences::Name("trace-write-%d", i) ); prefs.deleteEntry( "nav1" ); prefs.deleteEntry( "nav2" ); prefs.deleteEntry( "adf" ); prefs.deleteEntry( "dme" ); for( i = 0; i < MAX_CLOUD_LAYERS; ++i) { prefs.deleteEntry( Fl_Preferences::Name("layer-%d-elevation-ft", i) ); prefs.deleteEntry( Fl_Preferences::Name("layer-%d-thickness-ft", i) ); prefs.deleteEntry( Fl_Preferences::Name("layer-%d-coverage", i) ); prefs.deleteEntry( Fl_Preferences::Name("layer-%d-transition-ft", i) ); prefs.deleteEntry( Fl_Preferences::Name("layer-%d-span-m", i) ); } } fg-fgrun/src/util.cxx000066400000000000000000000040311245722473500150720ustar00rootroot00000000000000// util.cxx -- Utility functions. // // Written by Bernie Bright, started Dec 2002. // // Copyright (c) 2002 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #include "i18n.h" int set_choice( Fl_Choice* c, const char* s ) { const Fl_Menu_Item* m = c->menu(); if ( m == 0 ) return 0; int i = 0; int nest = 0; for (i = 0; i < m->size(); ++i) { if (m[i].submenu()) { ++nest; } else if (m[i].label() != 0) { if (strcmp(_(s), m[i].label()) == 0) { c->value(i); return 1; } } else { --nest; } } return 0; } int set_choice_from_data( Fl_Choice* c, const char* s ) { const Fl_Menu_Item* m = c->menu(); if ( m == 0 ) return 0; int i = 0; int nest = 0; for (i = 0; i < m->size(); ++i) { if (m[i].submenu()) { ++nest; } else if (m[i].user_data() != 0) { if (strcmp(s, (const char *)m[i].user_data()) == 0) { c->value(i); return 1; } } else { --nest; } } return 0; } fg-fgrun/src/util.h000066400000000000000000000020541245722473500145220ustar00rootroot00000000000000// util.h -- utility functions. // // Written by Bernie Bright, started Sep 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifndef UTIL_H_INCLUDED #define UTIL_H_INCLUDED class Fl_Choice; /** * */ int set_choice( Fl_Choice*, const char* ); int set_choice_from_data( Fl_Choice*, const char* ); #endif // UTIL_H_INCLUDED fg-fgrun/src/warning.xpm000066400000000000000000000017551245722473500155760ustar00rootroot00000000000000/* XPM */ static const char * warning_xpm[] = { "20 20 31 1", " c None", ". c #000000", "+ c #5F5F00", "@ c #EAEA00", "# c #6D6D00", "$ c #F8F800", "% c #FFFF00", "& c #0A0A00", "* c #808000", "= c #111100", "- c #121200", "; c #242400", "> c #282800", ", c #888800", "' c #353500", ") c #3A3A00", "! c #8D8D00", "~ c #070700", "{ c #434300", "] c #4B4B00", "^ c #9B9B00", "/ c #3F3F00", "( c #141400", "_ c #FEFE00", ": c #F1F100", "< c #A8A800", "[ c #4C4C00", "} c #222200", "| c #EEEE00", "1 c #696900", "2 c #A3A300", " ", " ", " .. ", " .... ", " .++. ", " ..@@.. ", " .#$$#. ", " ..%&&%.. ", " .*%=-%*. ", " ..%%;>%%.. ", " .,%%')%%!. ", " .~%%%{]%%%~. ", " .^%%%//%%%^. ", " .(%%%_::_%%%(. ", " .<%%%%[[%%%%<. ", " .}%%%%_||_%%%%}. ", " .12222222222221. ", " .................. ", " ", " "}; fg-fgrun/src/wizard.fl000066400000000000000000000717221245722473500152270ustar00rootroot00000000000000# data file for the Fltk User Interface Designer (fluid) version 1.0300 do_not_include_H_from_C i18n_type 1 i18n_include "i18n.h" i18n_function _ header_name {.h} code_name {.cxx} declblock {\#ifdef HAVE_CONFIG_H} {open after {\#endif} } { decl {\#include } {private local } } decl {\#include "wizard.h"} {private local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include } {public local } decl {\#include "folder_open.xpm"} {private local } decl {\#include "warning.xpm"} {private local } decl {\#include "question.xpm"} {private local } decl {class LogWindow;} {public local } decl {class Advanced;} {public local } decl {using std::string;} {public global } class Wizard {open } { class FlightGearThread {open : {public OpenThreads::Thread} } { decl {FlightGearThread( Wizard *w );} {public local } decl {void setViewer(bool v);} {public local } decl {void run();} {public local } decl {Wizard *wizard;} {private local } decl {bool viewer;} {private local } decl {FlightGearThread();} {private local } decl {FlightGearThread( const FlightGearThread &);} {private local } decl {FlightGearThread &operator=( const FlightGearThread &);} {private local } } Function {Wizard() : prefs( Fl_Preferences::USER, "flightgear.org", "fgrun" ), systemPrefs( Fl_Preferences::SYSTEM, "flightgear.org", "fgrun" ),logwin(0), folder_open_pixmap(folder_open_xpm), warning_pixmap(warning_xpm), question_pixmap(question_xpm), adv(0), fgThread(0), fgPid(0), tsPid(0), refreshAircraft(false)} {open } { Fl_Window win { label {FlightGear Wizard} open private xywh {694 241 800 600} type Double visible } { Fl_Wizard wiz {open private xywh {0 0 800 560} code0 {win->resizable( wiz );} } { Fl_Group {page[0]} { label {Select Paths} xywh {0 0 800 560} labelfont 1 align 21 hide } { Fl_Help_View about_ { private xywh {5 25 790 130} labeltype NO_LABEL } Fl_Input fg_exe_ { label {Executable:} callback {fg_exe_update_cb();} private tooltip {Full pathname to FlightGear executable} xywh {130 175 495 25} labelsize 12 when 1 textsize 12 } Fl_Button {} { callback {fg_exe_select_cb();} private tooltip {Full pathname to FlightGear executable} xywh {630 175 25 25} labelsize 12 code0 {o->image(folder_open_pixmap);} } Fl_Box fg_exe_invalid { tooltip {Executable path not set or invalid} xywh {660 175 25 25} hide code0 {o->image(warning_pixmap);} } Fl_Input fg_root_ { label {FG_ROOT:} callback {fg_root_update_cb();} private tooltip {root data path} xywh {130 205 495 25} labelsize 12 when 1 textsize 12 } Fl_Button {} { callback {fg_root_select_cb();} private tooltip {root data path} xywh {630 205 25 25} labelsize 12 code0 {o->image(folder_open_pixmap);} } Fl_Box fg_root_invalid { tooltip {FG_ROOT path invalid or not set} xywh {660 205 25 25} hide code0 {o->image(warning_pixmap);} } Fl_Group {} {open xywh {130 235 495 225} resizable } { Fl_Group {} {open xywh {130 235 495 115} } { Fl_Browser aircraft_dir_list_ { label {FG_AIRCRAFT:} callback {aircraft_dir_select_cb();} private tooltip {Aircraft directories} xywh {130 235 495 80} type Hold labelsize 12 align 4 textsize 12 resizable } Fl_Group {} {open xywh {130 320 495 25} } { Fl_Button {} { label {Add...} callback {aircraft_dir_add_cb();} private tooltip {Add an aircraft directory} xywh {130 320 100 25} labelsize 12 } Fl_Button aircraft_dir_delete_ { label Delete callback {aircraft_dir_delete_cb();} private tooltip {Delete an aircraft directory} xywh {235 320 100 25} labelsize 12 deactivate } Fl_Box {} { xywh {340 320 285 25} resizable } } } Fl_Group {} {open xywh {130 350 495 115} } { Fl_Browser scenery_dir_list_ { label {FG_SCENERY:} callback {scenery_dir_select_cb();} private tooltip {Scenery directories} xywh {130 350 495 80} type Hold labelsize 12 align 4 textsize 12 resizable } Fl_Group {} {open xywh {130 435 495 25} } { Fl_Button {} { label {Add...} callback {scenery_dir_add_cb();} private tooltip {Add a scenery directory} xywh {130 435 100 25} labelsize 12 } Fl_Button scenery_dir_delete_ { label Delete callback {scenery_dir_delete_cb();} private tooltip {Delete a scenery directory} xywh {235 435 100 25} labelsize 12 deactivate } Fl_Box {} { private xywh {355 435 50 25} resizable } } } } Fl_Group {} {open xywh {630 350 25 40} } { Fl_Button scenery_dir_up_ { label {@8>} callback {scenery_dir_up_cb();} private tooltip {Move scenery directory up} xywh {630 365 25 25} deactivate } Fl_Box {} { xywh {630 350 25 15} resizable } } Fl_Group {} {open xywh {630 390 25 40} } { Fl_Button scenery_dir_down_ { label {@2>} callback {scenery_dir_down_cb();} private tooltip {Move scenery directory down} xywh {630 395 25 25} deactivate } Fl_Box {} { xywh {630 420 25 10} resizable } } Fl_Box fg_scenery_invalid { tooltip {FG_SCENERY empty} xywh {660 350 25 25} hide code0 {o->image(warning_pixmap);} } Fl_Button cache_delete_ { label Delete callback {delete_cache_file_cb();} private tooltip {Clear the content of the airport cache} xywh {630 505 60 25} labelsize 12 deactivate } Fl_Output cache_file_ { label {Airports Cache:} private tooltip {Full path to the airport cache} xywh {130 505 495 25} labelsize 12 textsize 12 } } Fl_Group {page[1]} { label {Select an aircraft} open private xywh {0 0 800 560} labelfont 1 align 21 } { Fl_Check_Button show_3d_preview { label {3D Preview} callback {show_3d_preview_cb()} private xywh {780 0 17 25} down_box DOWN_BOX labelsize 12 align 4 } Fl_Tile {} {open private xywh {0 25 795 465} resizable } { Fl_Group {} {open private xywh {5 25 200 465} } { Fl_Browser aircraft_mru { label {Recently used aircraft :} callback {aircraft_from_mru();} selected private xywh {5 35 200 105} type Hold labelfont 1 labelsize 12 align 5 textsize 12 } Fl_Browser aircraft { label {Available aircraft :} callback {preview_aircraft();} private xywh {5 160 200 330} type Hold labelfont 1 labelsize 12 align 5 textsize 12 resizable } } Fl_Box preview { label Preview private xywh {205 25 590 465} box THIN_DOWN_BOX labelsize 12 code0 {\#include "Fl_OSG.h"} class Fl_OSG } Fl_Box {} { private xywh {80 190 265 65} hide resizable } } Fl_Group {} {open private xywh {5 490 790 65} box DOWN_BOX } { Fl_Output aircraft_status { label {Status :} private xywh {115 495 135 25} } Fl_Output aircraft_author { label {Author(s) :} private xywh {385 495 305 25} resizable } Fl_Button start_viewer { label Viewer callback {start_viewer_cb();} private xywh {695 495 95 25} } Fl_Output aircraft_location { label {Location :} private xywh {115 525 575 25} } } } Fl_Group {page[2]} { label {Select a location} open private xywh {0 0 800 560} labelfont 1 align 21 hide } { Fl_Round_Button show_all_apt { label {All airports} callback { show_installed(false); } private tooltip {Display all airports} xywh {5 20 100 15} type Radio down_box ROUND_DOWN_BOX value 0 } Fl_Round_Button show_installed_apt { label {Installed airports} callback { show_installed(true); } private tooltip {Display only installed airports} xywh {5 40 100 15} type Radio down_box ROUND_DOWN_BOX value 1 } Fl_Box airports_ { private xywh {5 55 790 415} resizable code0 {\#include "AirportBrowser.h"} class AirportBrowser } Fl_Group {} {open private xywh {5 505 790 50} } { Fl_Group carrier_group { label {Carrier Ops} open private xywh {5 505 635 50} box ENGRAVED_FRAME labelfont 1 align 21 resizable } { Fl_Input carrier_ { label {Carrier : } private xywh {145 520 175 25} } Fl_Input parkpos_ { label {Park pos :} private tooltip {Only valid if carrier is set. For airport parking, use the list above.} xywh {460 520 175 25} } Fl_Box {} { private xywh {640 505 0 5} resizable } } } } Fl_Group {page[3]} {open private xywh {0 0 800 560} hide } { Fl_Group {} { private xywh {0 525 800 25} } { Fl_Button {} { label {Advanced...} callback {advanced_cb();} private xywh {685 525 110 25} } Fl_Box {} { private xywh {250 525 435 25} resizable } Fl_Check_Button show_cmd_line { label {Show command line} callback {show_cmd_line_cb();} private xywh {10 525 240 25} down_box DOWN_BOX } Fl_Check_Button show_console { label {Show console} callback {show_console_cb();} private xywh {280 525 240 25} down_box DOWN_BOX } } Fl_Text_Display text { private xywh {5 370 790 145} box THIN_DOWN_BOX align 4 hide } Fl_Group {} { label Display open private xywh {5 5 790 110} box ENGRAVED_FRAME labelfont 1 align 21 } { Fl_Choice resolution { label {Resolution :} callback {resolution_cb();} private tooltip {Window geometry, WxH} xywh {100 30 125 25} down_box BORDER_BOX } { MenuItem {} { label 800x600 private xywh {0 0 100 20} } MenuItem {} { label 1024x768 private xywh {0 0 100 20} } MenuItem {} { label 1280x1024 private xywh {0 0 100 20} } MenuItem {} { label 1600x1200 private xywh {0 0 100 20} } MenuItem {} { label 1280x800 private xywh {0 0 100 20} } MenuItem {} { label 1680x1050 private xywh {0 0 100 20} } MenuItem {} { label 1920x1200 private xywh {0 0 100 20} } } Fl_Check_Button game_mode { label {Full Screen} callback {game_mode_cb();} private xywh {25 85 210 25} down_box DOWN_BOX } Fl_Check_Button horizon_effect { label {Horizon effect} callback {horizon_effect_cb();} private xywh {250 10 205 25} down_box DOWN_BOX } Fl_Check_Button enhanced_lighting { label {Enhanced runway lighting} callback {enhanced_lighting_cb();} private tooltip {Use with caution. It may drop your framerate dramatically} xywh {250 35 205 25} down_box DOWN_BOX } Fl_Check_Button specular_highlight { label {Specular highlight} callback {specular_highlight_cb();} private xywh {250 60 205 25} down_box DOWN_BOX } Fl_Check_Button frame_rate_limiter { label {Framerate limiter :} callback {frame_rate_limiter_cb();} private tooltip {Too much framerate hurts the smoothness of the simulation} xywh {250 85 205 25} down_box DOWN_BOX } Fl_Value_Input frame_rate_limiter_value { callback {frame_rate_limiter_value_cb();} private xywh {455 85 55 25} minimum 30 maximum 100 step 1 } Fl_Box {} { private xywh {610 80 25 10} resizable } Fl_Check_Button clouds_3d { label {3D Clouds} callback {clouds_3d_cb();} private xywh {470 10 205 25} down_box DOWN_BOX } Fl_Choice bpp { label {bpp :} callback {bpp_cb();} open private tooltip {Color depth (bits per pixel)} xywh {100 55 125 25} down_box BORDER_BOX } { MenuItem {} { label 32 xywh {0 0 100 20} } MenuItem {} { label 24 xywh {0 0 100 20} } MenuItem {} { label 16 xywh {0 0 100 20} } } } Fl_Group {} {open xywh {5 120 790 180} } { Fl_Group {} { label Features open private xywh {5 120 480 180} box ENGRAVED_FRAME labelfont 1 align 21 } { Fl_Check_Button random_objects { label {Random objects} callback {random_objects_cb();} private xywh {25 135 150 25} down_box DOWN_BOX } Fl_Check_Button random_trees { label {Random trees} callback {random_trees_cb();} private xywh {25 160 150 25} down_box DOWN_BOX } Fl_Check_Button ai_models { label {AI models} callback {ai_models_cb();} private xywh {25 185 150 25} down_box DOWN_BOX } Fl_Check_Button ai_traffic { label {AI Traffic} callback {ai_traffic_cb();} private xywh {35 210 140 25} down_box DOWN_BOX } Fl_Check_Button terrasync { label TerraSync callback {terrasync_cb();} private xywh {25 235 150 25} down_box DOWN_BOX } Fl_Check_Button time_of_day { label {Time of day :} callback {time_of_day_cb();} private xywh {180 135 160 25} down_box DOWN_BOX } Fl_Choice time_of_day_value { callback {time_of_day_value_cb();} open private xywh {345 135 120 25} down_box BORDER_BOX } {} Fl_Check_Button real_weather_fetch { label {Real weather fetch} callback {real_weather_fetch_cb();} private xywh {180 185 160 25} down_box DOWN_BOX } Fl_Check_Button auto_coordination { label {Auto-coordination} callback {auto_coordination_cb();} private xywh {180 210 170 25} down_box DOWN_BOX } Fl_Choice season { label {Season :} callback {season_cb();} open private xywh {345 160 120 25} down_box BORDER_BOX } {} Fl_Box {} { private xywh {445 205 20 10} resizable } Fl_Check_Button auto_visibility { label {Menu auto-visibility} callback {auto_visibility_cb();} private xywh {180 235 170 25} down_box DOWN_BOX } } Fl_Group {} { label Scenarios open xywh {490 120 305 174} box ENGRAVED_FRAME labelfont 1 align 21 resizable } { Fl_Browser scenarii { callback {scenarii_cb();} private tooltip {Ctrl-click to select or deselect a single item} xywh {495 136 295 123} type Multi align 5 resizable } Fl_Group {} {open xywh {495 265 295 25} } { Fl_Button {} { label {Deselect all} callback {deselect_all_scenarii_cb();} tooltip {Ctrl-click to deselect a single item} xywh {495 265 265 25} resizable } Fl_Box scenarii_help { private xywh {765 265 25 25} code0 {o->image(question_pixmap);} } } } } Fl_Group {} {open private xywh {5 305 790 60} } { Fl_Group atlas_group {open private xywh {5 305 245 60} box ENGRAVED_FRAME labeltype SHADOW_LABEL labelfont 1 align 21 } { Fl_Check_Button atlas { label Atlas callback {atlas_cb();} private xywh {10 310 70 25} down_box DOWN_BOX labelfont 1 } Fl_Input atlas_host { label {Hostname :} callback {atlas_host_cb();} private tooltip Hostname xywh {95 335 85 25} when 1 resizable } Fl_Value_Input atlas_port { label {:} callback {atlas_port_cb();} private xywh {190 335 50 25} } } Fl_Group multiplay_group {open private xywh {255 305 540 60} box ENGRAVED_FRAME resizable } { Fl_Check_Button multiplay { label Multiplayer callback {multiplay_cb();} private xywh {260 310 130 25} down_box DOWN_BOX labelfont 1 } Fl_Input multiplay_callsign { label {Callsign :} callback {multiplay_callsign_cb();} private xywh {545 310 170 25} when 1 } Fl_Input multiplay_host { label {Hostname :} callback {multiplay_field_cb();} private tooltip {Peer hostname} xywh {355 335 120 25} when 1 resizable } Fl_Value_Input multiplay_in { label {in :} callback {multiplay_field_cb();} private tooltip {Input port number} xywh {545 335 50 25} } Fl_Value_Input multiplay_out { label {out :} callback {multiplay_field_cb();} private tooltip {Output port number} xywh {665 335 50 25} } } } Fl_Box {} { private xywh {245 370 280 145} resizable } } Fl_Group {page[4]} { xywh {0 0 800 560} hide deactivate } {} } Fl_Group {} {open xywh {0 570 800 25} } { Fl_Button prev { label Prev callback {prev_cb();} private xywh {575 570 70 25} labelsize 12 } Fl_Button next { label Next callback {next_cb();} private xywh {650 570 70 25} labelsize 12 } Fl_Button cancel { label Quit callback {cancel_cb();} private xywh {725 570 70 25} labelsize 12 } Fl_Box {} { xywh {380 570 195 25} resizable } Fl_Button defaults { label {Restore default settings} callback {defaults_cb();} tooltip {Clear all selected options and return to the install situation. Useful if FGFS don't start anymore.} xywh {5 570 165 25} labelsize 12 } Fl_Button {} { label {Save As...} callback {save_preferences_cb();} tooltip {Save current configuration to a file} xywh {300 570 120 25} labelsize 12 } Fl_Button {} { label Load callback {load_preferences_cb();} tooltip {Load a previously saved configuration} xywh {175 570 120 25} labelsize 12 } } } } decl {~Wizard();} {public local } decl {void show();} {public local } decl {void show( int argc, char* argv[] );} {public local } decl {void init( bool fullscreen );} {public local } decl {void preview_aircraft(bool desel_mru = true);} {public local } decl {void reset();} {private local } decl {void aircraft_update();} {private local } decl {void aircraft_update( const char *aft );} {private local } decl {void next_cb();} {private local } decl {void prev_cb();} {private local } decl {void defaults_cb();} {private local } decl {void advanced_options_cb();} {private local } decl {void fg_exe_update_cb();} {private local } decl {void fg_exe_select_cb();} {private local } decl {void fg_root_update_cb();} {private local } decl {void fg_root_select_cb();} {private local } decl {void fg_path_updated(bool addScenery = true);} {private local } decl {void advanced_cb();} {private local } decl {int write_fgfsrc();} {private local } decl {static int write_fgfsrc( Fl_Preferences &prefs, std::ostream&, const char* pfx = "\\n");} {private local } decl {static int write_fgviewerrc( Fl_Preferences &prefs, std::ostream& os, const char* pfx, const string &path );} {private local } decl {int run_fgfs( const std::string & );} {private local } decl {static void stdout_cb( int, void* );} {private local } decl {void stdout_cb( int );} {private local } decl {void cancel_cb();} {private local } decl {void delete_cache_file_cb();} {private local } decl {static void airports_cb( Fl_Widget*, void* )} {private local } decl {void airports_cb();} {private local } decl {void show_installed( bool )} {private local } decl {void update_scenery_up_down();} {private local } decl {void aircraft_dir_select_cb();} {private local } decl {void aircraft_dir_add_cb();} {private local } decl {void aircraft_dir_delete_cb();} {private local } decl {void scenery_dir_select_cb();} {private local } decl {void scenery_dir_add_cb();} {private local } decl {void scenery_dir_delete_cb();} {private local } decl {void scenery_dir_up_cb();} {private local } decl {void scenery_dir_down_cb();} {private local } decl {void refresh_airports();} {public local } decl {static void refresh_airports( Fl_Widget*, void* );} {public local } decl {Fl_Preferences prefs;} {private local } decl {Fl_Preferences systemPrefs;} {private local } decl {LogWindow* logwin;} {private local } decl {Fl_Pixmap folder_open_pixmap;} {private local } decl {Fl_Pixmap warning_pixmap;} {private local } decl {Fl_Pixmap question_pixmap;} {private local } decl {void update_options();} {private local } decl {void resolution_cb();} {private local } decl {void bpp_cb();} {private local } decl {void game_mode_cb();} {private local } decl {void horizon_effect_cb();} {private local } decl {void enhanced_lighting_cb();} {private local } decl {void specular_highlight_cb();} {private local } decl {void frame_rate_limiter_cb();} {private local } decl {void frame_rate_limiter_value_cb();} {private local } decl {void clouds_3d_cb();} {private local } decl {void random_objects_cb();} {private local } decl {void random_trees_cb();} {private local } decl {void ai_models_cb();} {private local } decl {void ai_traffic_cb();} {private local } decl {void time_of_day_cb();} {private local } decl {void time_of_day_value_cb();} {private local } decl {void season_cb();} {private local } decl {void real_weather_fetch_cb();} {private local } decl {void auto_coordination_cb();} {private local } decl {void scenarii_cb();} {private local } decl {void terrasync_cb();} {private local } decl {void atlas_cb();} {private local } decl {void atlas_host_cb();} {private local } decl {void atlas_port_cb();} {private local } decl {void multiplay_cb();} {private local } decl {void multiplay_field_cb();} {private local } decl {void multiplay_callsign_cb();} {private local } decl {void update_basic_options( Fl_Preferences &p );} {private local } decl {void save_basic_options( Fl_Preferences &p );} {private local } decl {void display_scenarii();} {private local } decl {void deselect_all_scenarii_cb();} {private local } decl {void show_cmd_line_cb();} {private local } decl {void show_console_cb();} {private local } decl {void show_3d_preview_cb();} {private local } decl {void reset_settings();} {private local } decl {void load_preferences_cb();} {private local } decl {void save_preferences_cb();} {private local } Function {make_launch_window()} {open private } { Fl_Window launch_window { label {FlightGear running...} open private xywh {-32000 -32000 455 155} type Double hide } { Fl_Group {} {open private xywh {15 25 425 120} } { Fl_Box {} { label {FlightGear has been started} private xywh {15 25 425 25} labelfont 1 labelsize 18 align 128 } Fl_Box {} { label {Please wait...} private xywh {15 50 425 25} labelfont 1 } Fl_Box {} { label {To change aircraft, exit FlightGear and return to this launcher} private xywh {95 90 265 50} labelfont 1 align 128 } } } } decl {int launch_result;} {private local } decl {void exec_launch_window();} {private local } decl {Advanced *adv;} {private local } decl {static Fl_Menu_Item menu_time_of_day_value[];} {private local } decl {static Fl_Menu_Item menu_season[];} {private local } Function {make_crash_window()} {private } { Fl_Window crash_window { label {Flightgear crashed...} open private xywh {-32000 -32000 455 240} type Double hide } { Fl_Box {} { label {Flightgear encountered an unexpected failure} private xywh {5 15 445 25} labelfont 1 labelsize 18 } Fl_Box {} { label {We are sorry for this inconvenience.} private xywh {5 40 445 25} labelfont 1 } Fl_Box file_box { private xywh {5 90 445 55} align 148 } Fl_Button {} { label OK callback {crash_ok_cb();} xywh {350 205 100 30} labelsize 12 } Fl_Box {} { label {An error report has been generated in the file below :} xywh {5 65 445 25} labelsize 12 align 20 } Fl_Box {} { label {Please send this error report to the Flightgear development team} xywh {5 145 445 50} labelsize 12 align 149 } } } decl {void crash_ok_cb();} {private local } decl {void exec_crash_window( const char *fname );} {private local } decl {string dump_file_name;} {private local } decl {FlightGearThread *fgThread;} {private local } decl {friend class FlightGearThread;} {private local } decl {friend class TerraGearThread;} {private local } decl {long fgPid;} {private local } decl {long tsPid;} {private local } decl {void stopProcess( long pid );} {private local } decl {void start_viewer_cb();} {private local } decl {void auto_visibility_cb();} {private local } decl {string current_aircraft_model_path;} {private local } decl {bool refreshAircraft;} {private local } decl {void update_aircraft_mru()} {private local } decl {void aircraft_mru_update();} {private local } decl {void aircraft_from_mru();} {private local } } fg-fgrun/src/wizard_funcs.cxx000066400000000000000000002201351245722473500166200ustar00rootroot00000000000000// wizard_funcs.cxx -- Wizard UI functions. // // Written by Bernie Bright, started Nov 2003. // // Copyright (c) 2003 Bernie Bright - bbright@users.sourceforge.net // // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // // $Id$ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "wizard.h" #include "advanced.h" #include "logwin.h" #include "util.h" #include "i18n.h" #if defined(WIN32) || defined(__EMX__) && !defined(__CYGWIN__) # include "os_win32.h" # define strcasecmp stricmp #else # include "os_posix.h" #endif using std::string; using std::vector; using std::deque; using std::set; using std::map; extern string def_fg_exe; extern string def_fg_root; extern string def_fg_scenery; extern string def_acft_dir; extern string def_ts_dir; Fl_Menu_Item Wizard::menu_time_of_day_value[] = { {N_("dawn"), 0, 0, (void*)"dawn", 0, FL_NORMAL_LABEL, 0, 14, 0}, {N_("morning"), 0, 0, (void*)"morning", 0, FL_NORMAL_LABEL, 0, 14, 0}, {N_("noon"), 0, 0, (void*)"noon", 0, FL_NORMAL_LABEL, 0, 14, 0}, {N_("afternoon"), 0, 0, (void*)"afternoon", 0, FL_NORMAL_LABEL, 0, 14, 0}, {N_("dusk"), 0, 0, (void*)"dusk", 0, FL_NORMAL_LABEL, 0, 14, 0}, {N_("evening"), 0, 0, (void*)"evening", 0, FL_NORMAL_LABEL, 0, 14, 0}, {N_("midnight"), 0, 0, (void*)"midnight", 0, FL_NORMAL_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0} }; Fl_Menu_Item Wizard::menu_season[] = { {N_("summer"), 0, 0, (void*)"summer", 0, FL_NORMAL_LABEL, 0, 14, 0}, {N_("winter"), 0, 0, (void*)"winter", 0, FL_NORMAL_LABEL, 0, 14, 0}, {0,0,0,0,0,0,0,0,0} }; // This array is not used in the code but is there to put possible status in the translation file // Put here all possible variations static const char *aircraft_status_[] = { N_("production"), N_("early-production"), N_("early production"), N_("Early production"), N_("beta"), N_("alpha"), N_("early alpha"), N_("Development"), N_("developement"), N_("development"), N_("devel"), N_("Early development"), N_("experimental"), 0 }; /** * Data associated with each entry in the aircraft browser. */ struct AircraftData { string name; string dir; string root; string desc; string status; string author; string modelPath; string thumbnailPath; int fdm; int systems; int cockpit; int model; }; static int widths[] = { 465, 30, 0 }; static bool is_valid_fg_exe( string exe ) { if (exe.size() == 0) return false; SGPath path( exe ); while (exe.size() != 0 && ( !path.exists() || path.isDir() || boost::algorithm::ends_with(exe,"fgrun.exe") || boost::algorithm::ends_with(exe,"fgjs.exe"))) { size_t pos = exe.rfind(' '); if (pos == std::string::npos) return false; else exe.erase( pos ); path = SGPath( exe ); } return true; } static bool is_valid_fg_root( const string& dir ) { if (!fl_filename_isdir( dir.c_str() )) return false; string fname( dir ); fname.append( "/version" ); FILE* fp = fopen( fname.c_str(), "r" ); if (fp != 0) { fclose(fp); return true; } return false; } void Wizard::show_installed( bool state ) { if( state ) airports_->show_installed(true); else airports_->show_installed(false); } void Wizard::airports_cb( Fl_Widget*, void* v ) { ((Wizard*)v)->airports_cb(); } void Wizard::airports_cb() { if (airports_->loaded()) { airports_->show_installed( true ); cache_delete_->activate(); const int buflen = FL_PATH_MAX; char buf[ buflen ]; if (prefs.get( "airport", buf, "", buflen-1) && buf[0] != 0) airports_->select_id( buf ); if (prefs.get( "carrier", buf, "", buflen-1) && buf[0] == 0 && prefs.get( "parkpos", buf, "", buflen-1) && buf[0] != 0) { airports_->select_parking( buf ); } else if (prefs.get( "runway", buf, "", buflen-1) && buf[0] != 0) airports_->select_rwy( buf ); } else { vector v; for (int i = 1; i <= scenery_dir_list_->size(); ++i) { std::string path = scenery_dir_list_->text(i); std::string::size_type p; if ((p = path.find('\t')) != std::string::npos) path.erase( p ); SGPath dir( path.c_str() ); dir.append( "Terrain" ); if (fl_filename_isdir( dir.c_str() )) v.push_back( dir.str() ); else v.push_back( path.c_str() ); } string cache( cache_file_->value() ); airports_->load_airports( v, cache, airports_cb, this ); } } static const char* about_text = N_("\ \ \ FlightGear Launch Control %s\ \ \

FlightGear Launch Control for FlightGear v%s

\

This program is released under the GNU General Public License.

\

Report bugs to http://flightgear-bugs.googlecode.com

\ \ "); void Wizard::reset() { const int buflen = FL_PATH_MAX; char buf[ buflen ]; bool reloadPath = false; int version, systemVersion; prefs.get("version", version, 0); systemPrefs.get("version", systemVersion, 0); if (systemVersion != 0 && version < systemVersion) { prefs.set("version", systemVersion); reloadPath = true; } if (reloadPath || !prefs.get( "fg_exe", buf, def_fg_exe.c_str(), buflen-1)) { systemPrefs.get( "fg_exe_init", buf, def_fg_exe.c_str(), buflen-1); prefs.set("fg_exe_init", buf); systemPrefs.get( "fg_exe", buf, def_fg_exe.c_str(), buflen-1); prefs.set("fg_exe", buf); } fg_exe_->value( buf ); string fg_aircraft; if (reloadPath || !prefs.get( "fg_aircraft", buf, def_acft_dir.c_str(), buflen-1)) { systemPrefs.get( "fg_aircraft_init", buf, def_acft_dir.c_str(), buflen-1); prefs.set("fg_aircraft_init", buf); systemPrefs.get( "fg_aircraft", buf, def_acft_dir.c_str(), buflen-1); prefs.set("fg_aircraft", buf); } if (reloadPath || !prefs.get( "ts_dir", buf, def_ts_dir.c_str(), buflen-1)) { systemPrefs.get( "ts_dir_init", buf, def_ts_dir.c_str(), buflen-1); prefs.set("ts_dir_init", buf); systemPrefs.get( "ts_dir", buf, def_ts_dir.c_str(), buflen-1); prefs.set("ts_dir", buf); } if (reloadPath || !prefs.get( "fg_root", buf, def_fg_root.c_str(), buflen-1)) { systemPrefs.get( "fg_root_init", buf, def_fg_root.c_str(), buflen-1); prefs.set("fg_root_init", buf); systemPrefs.get( "fg_root", buf, def_fg_root.c_str(), buflen-1); prefs.set("fg_root", buf); } fg_root_->value( buf ); SGPath fgPath(buf); if ( fg_root_->size() == 0 ) { char *e = getenv( "FG_ROOT" ); if ( e ) { prefs.set( "fg_root", e ); fg_root_->value( e ); fgPath = e; } } simgear::ResourceManager::instance()->addBasePath(fgPath); if (prefs.get( "fg_aircraft", buf, "", buflen-1)) { fg_aircraft = buf; } aircraft_dir_list_->clear(); typedef vector vs_t; vs_t va( sgPathSplit( fg_aircraft ) ); for (vs_t::size_type i = 0; i < va.size(); ++i) aircraft_dir_list_->add( va[i].c_str() ); string fg_scenery; if (!reloadPath && prefs.get( "fg_scenery", buf, "", buflen-1)) { fg_scenery = buf; } else if (reloadPath && systemPrefs.get( "fg_scenery", buf, "", buflen-1)) { fg_scenery = buf; prefs.set("fg_scenery", buf); systemPrefs.get( "fg_scenery_init", buf, def_fg_exe.c_str(), buflen-1); prefs.set("fg_scenery_init", buf); } else if (!def_fg_scenery.empty()) { fg_scenery = def_fg_scenery; } else if (fg_root_->size() > 0) { char *e = getenv( "FG_SCENERY" ); if ( e ) { prefs.set( "fg_scenery", e ); fg_scenery = e; } else { fg_scenery = fg_root_->value(); fg_scenery += "/Scenery"; } } scenery_dir_list_->clear(); vs_t vs( sgPathSplit( fg_scenery ) ); int iVal; for (vs_t::size_type i = 0; i < vs.size(); ++i) { scenery_dir_list_->add( vs[i].c_str() ); } bool fg_exe_ok = fg_exe_->size() != 0 && is_valid_fg_exe( fg_exe_->value() ), fg_root_ok = fg_root_->size() != 0 && is_valid_fg_root( fg_root_->value() ); if ( !fg_exe_ok ) { fg_exe_invalid->show(); } if ( !fg_root_ok ) { fg_root_invalid->show(); } if (fg_scenery.empty()) { fg_scenery_invalid->show(); } if (!fg_exe_ok || !fg_root_ok || fg_scenery.empty() ) { // First time through or FG_ROOT is not valid. page[0]->activate(); page[0]->show(); prev->deactivate(); next->deactivate(); } else { airports_->set_refresh_callback( refresh_airports, this ); refresh_airports(); aircraft_mru_update(); aircraft_update(); fg_exe_invalid->hide(); fg_root_invalid->hide(); prev->activate(); next->activate(); page[1]->show(); } next->label( _("Next") ); prefs.get("show_cmd_line", iVal, 0); show_cmd_line->value(iVal); if ( iVal ) text->show(); else text->hide(); prefs.get("show_3d_preview", iVal, 1); show_3d_preview->value(iVal); } void Wizard::init( bool fullscreen ) { for ( int i = 0; menu_time_of_day_value[i].text != 0; ++i ) { menu_time_of_day_value[i].text = _( menu_time_of_day_value[i].text ); } time_of_day_value->menu( menu_time_of_day_value ); for ( int i = 0; menu_season[i].text != 0; ++i ) { menu_season[i].text = _( menu_season[i].text ); } season->menu( menu_season ); scenery_dir_list_->column_widths(widths); scenery_dir_list_->column_char('\t'); static const int npages = 5; make_launch_window(); make_crash_window(); for (int i = 0; i < npages; ++i) page[i]->hide(); if (fullscreen) { win->resize( 0, 0, Fl::w(), Fl::h() ); } else { int X, Y, W, H; prefs.get( "x", X, 0 ); prefs.get( "y", Y, 0 ); prefs.get( "width", W, 0 ); prefs.get( "height", H, 0 ); if (W > 0 && H > 0) win->resize( X, Y, W, H ); } win->size_range( 800, 600 ); text->buffer( new Fl_Text_Buffer ); multiplay_callsign->maximum_size( 7 ); logwin = new LogWindow( 640, 480, _("Log Window") ); const int buflen = FL_PATH_MAX; char buf[ buflen ]; prefs.getUserdataPath( buf, sizeof(buf) ); SGPath cache( buf ); cache.append( "airports.txt" ); cache_file_->value( cache.c_str() ); char *about_text_buffer = new char[2*strlen(about_text)]; #if defined( _MSC_VER ) && defined( _DEBUG ) sprintf( about_text_buffer, about_text, VERSION, VERSION ); #else sprintf( about_text_buffer, _(about_text), VERSION, VERSION ); #endif about_->value( about_text_buffer ); delete[] about_text_buffer; reset(); } void Wizard::show() { win->show(); } void Wizard::show( int ac, char* av[] ) { win->show( ac, av ); } static const double update_period = 0.05; static void timeout_handler( void* v ) { Fl::redraw(); Fl::repeat_timeout( update_period, timeout_handler, v ); } static SGPath dir_path( const SGPath& p ) { return SGPath( p.dir() ); } /** * Locate a named SSG node in a branch. */ static osg::Node * find_named_node( osg::Node * node, const string &name ) { string node_name = node->getName(); if ( name == node_name ) { return node; } else { osg::ref_ptr group = node->asGroup(); if ( group.valid() ) { int nKids = group->getNumChildren(); for (int i = 0; i < nKids; i++) { osg::ref_ptr result = find_named_node( group->getChild(i), name ); if ( result.valid() ) return result.release(); } } } return 0; } osg::Node * loadModel( const string &fg_root, const string &fg_aircraft, const string &dir, const string ¤t, const string &path, const SGPath& externalTexturePath ) { osg::ref_ptr model; SGPropertyNode props; // Load the 3D aircraft object itself SGPath modelpath = path, texturepath = path; if ( modelpath.isRelative() ) { SGPath tmp = current; tmp.append(modelpath.str()); if (!tmp.exists()) { tmp = fg_aircraft; tmp.append(modelpath.str()); } if (!tmp.exists()) { tmp = fg_aircraft; tmp.append(dir); tmp.append(modelpath.str()); } if (!tmp.exists() && modelpath.str().find( "Aircraft/" ) == 0) { tmp = fg_aircraft; tmp.append(modelpath.str().substr(9)); } if (!tmp.exists()) { tmp = fg_root; tmp.append(modelpath.str()); } modelpath = texturepath = tmp; } // Check for an XML wrapper if (modelpath.str().substr(modelpath.str().size() - 4, 4) == ".xml") { readProperties(modelpath.str(), &props); if (props.hasValue("/path")) { modelpath = modelpath.dir(); string submodelpath = props.getStringValue("/path"); modelpath.append(submodelpath); if (!modelpath.exists() && submodelpath.find( "Aircraft/" ) == 0) { modelpath = fg_aircraft; modelpath.append(submodelpath.substr(9)); } if (!modelpath.exists()) { modelpath = fg_root; modelpath.append(submodelpath); } if (props.hasValue("/texture-path")) { texturepath = texturepath.dir(); string tpath = props.getStringValue("/texture-path"); texturepath.append(tpath); if (!texturepath.exists() && tpath.find( "Aircraft/" ) == 0) { texturepath = fg_aircraft; texturepath.append(tpath.substr(9)); } if (!texturepath.exists()) { texturepath = fg_root; texturepath.append(tpath); } } } else if ( !model ) { model = new osg::Switch; } } vector nopreview_nodes = props.getChildren("nopreview"); if ( !nopreview_nodes.empty() ) return 0; osg::ref_ptr options = new osgDB::ReaderWriter::Options(*osgDB::Registry::instance()->getOptions()); // Assume that textures are in // the same location as the XML file. if (!model) { if (texturepath.extension() != "") texturepath = texturepath.dir(); options->setDatabasePath(texturepath.str()); if (!externalTexturePath.str().empty()) options->getDatabasePathList().push_back(externalTexturePath.str()); model = osgDB::readNodeFile(modelpath.str(), options.get()); if ( model == 0 ) throw sg_io_exception("Failed to load 3D model", sg_location(modelpath.str())); } // Set up the alignment node osg::ref_ptr alignmainmodel = new osg::MatrixTransform; alignmainmodel->addChild(model.get()); osg::Matrix res_matrix; double pitch = props.getDoubleValue("/offsets/pitch-deg", 0.0), roll = props.getDoubleValue("/offsets/roll-deg", 0.0), heading = props.getDoubleValue("/offsets/heading-deg", 0.0); res_matrix.makeRotate( pitch*SG_DEGREES_TO_RADIANS, osg::Vec3(0, 1, 0), roll*SG_DEGREES_TO_RADIANS, osg::Vec3(1, 0, 0), heading*SG_DEGREES_TO_RADIANS, osg::Vec3(0, 0, 1) ); osg::Matrix tmat; tmat.makeTranslate(props.getFloatValue("/offsets/x-m", 0.0), props.getFloatValue("/offsets/y-m", 0.0), props.getFloatValue("/offsets/z-m", 0.0)); alignmainmodel->setMatrix(res_matrix*tmat); // Load sub-models vector model_nodes = props.getChildren("model"); unsigned int i = 0; for (i = 0; i < model_nodes.size(); i++) { SGPropertyNode_ptr node = model_nodes[i]; string submodel = node->getStringValue("path"); osg::ref_ptr kid; try { kid = loadModel( fg_root, fg_aircraft, dir, modelpath.dir(), submodel, externalTexturePath ); } catch (const sg_throwable &t) { SG_LOG(SG_INPUT, SG_ALERT, "Failed to load submodel: " << t.getFormattedMessage()); throw; } osg::ref_ptr align = new osg::MatrixTransform; res_matrix.makeIdentity(); pitch = node->getDoubleValue("offsets/pitch-deg", 0.0); roll = node->getDoubleValue("offsets/roll-deg", 0.0); heading = node->getDoubleValue("offsets/heading-deg", 0.0); res_matrix.makeRotate( pitch*SG_DEGREES_TO_RADIANS, osg::Vec3(0, 1, 0), roll*SG_DEGREES_TO_RADIANS, osg::Vec3(1, 0, 0), heading*SG_DEGREES_TO_RADIANS, osg::Vec3(0, 0, 1) ); tmat.makeIdentity(); tmat.makeTranslate(node->getDoubleValue("offsets/x-m", 0), node->getDoubleValue("offsets/y-m", 0), node->getDoubleValue("offsets/z-m", 0)); align->setMatrix( res_matrix * tmat ); align->addChild( kid.get() ); align->setName( node->getStringValue( "name", "" ) ); alignmainmodel->addChild( align.get() ); } vector animation_nodes = props.getChildren("animation"); for (i = 0; i < animation_nodes.size(); i++) { const char * name = animation_nodes[i]->getStringValue("name", 0); vector nopreview_nodes = animation_nodes[i]->getChildren("nopreview"); if ( !nopreview_nodes.empty() ) { vector name_nodes = animation_nodes[i]->getChildren("object-name"); for (size_t j = 0; j < name_nodes.size(); j++ ) { osg::Node *e = find_named_node( model.get(), name_nodes[j]->getStringValue() ); if ( !e ) continue; osg::Group *b = e->getParent( 0 ); b->removeChild( e ); } } } return alignmainmodel.release(); } void Wizard::preview_aircraft(bool desel_mru) { Fl::remove_timeout( timeout_handler, this ); current_aircraft_model_path = ""; preview->set_fg_root(fg_root_->value()); preview->make_current(); preview->clear(); preview->redraw(); int n = aircraft->value(); if (n == 0) return; AircraftData* data = reinterpret_cast( aircraft->data(n) ); prefs.set( "aircraft", n > 0 ? data->name.c_str() : "" ); prefs.set( "aircraft_name", n > 0 ? data->desc.c_str() : "" ); if (desel_mru) aircraft_mru->deselect(); if (!data->modelPath.empty()) { SGPath path( data->root ), tpath; path.append( data->modelPath ); bool error = false; if (!path.exists()) { error = true; path = data->root; path.append( data->dir ); path.append( data->modelPath ); if ( path.exists() ) error = false; else if ( data->modelPath.find( "Aircraft/" ) == 0 ) { path = data->root; path.append( data->modelPath.substr( 9 ) ); error = !path.exists(); } } if ( error ) { fl_alert( _("Model not found: '%s'"), path.c_str() ); return; } setlocale( LC_ALL, "C" ); try { win->cursor( FL_CURSOR_WAIT ); Fl::flush(); if (show_3d_preview->value()) { osg::ref_ptr model = loadModel( fg_root_->value(), data->root, data->dir, "", path.str(), SGPath() ); if (model != 0) { current_aircraft_model_path = path.str(); //osg::ref_ptr bounding_obj = find_named_node( model.get(), "Aircraft" ); preview->set_model( model.get(), data->fdm, data->systems, data->cockpit, data->model ); Fl::add_timeout( update_period, timeout_handler, this ); } } else { string thumbnail = data->thumbnailPath; preview->set_thumbnail(thumbnail.c_str(), data->fdm, data->systems, data->cockpit, data->model ); } win->cursor( FL_CURSOR_DEFAULT ); preview->redraw(); } catch (const sg_exception& exc ) { fl_alert( "%s",exc.getFormattedMessage().c_str() ); return; } catch (...) {} setlocale( LC_ALL, "" ); } else { fl_alert( _("Property '/sim/model/path' not found") ); return; } aircraft_status->value( _( data->status.c_str() ) ); aircraft_author->value( data->author.c_str() ); aircraft_location->value( data->root.c_str() ); next->activate(); } void Wizard::next_cb() { prev->activate(); if (wiz->value() == page[0]) { char abs_name[ FL_PATH_MAX ]; fl_filename_absolute( abs_name, fg_exe_->value() ); prefs.set( "fg_exe", abs_name ); fl_filename_absolute( abs_name, fg_root_->value() ); const int buflen = FL_PATH_MAX; char buf[ buflen ]; const char* not_set = "NOT SET"; prefs.get( "fg_root", buf, not_set, buflen-1); if ( strcmp( buf, abs_name ) != 0 ) { prefs.set( "fg_root", abs_name ); win->cursor( FL_CURSOR_WAIT ); Fl::flush(); aircraft_mru_update(); aircraft_update(); win->cursor( FL_CURSOR_DEFAULT ); } string fg_aircraft; if ( aircraft_dir_list_->size() > 0 ) { fg_aircraft = aircraft_dir_list_->text(1); for (int i = 2; i <= aircraft_dir_list_->size(); ++i) { fg_aircraft += os::searchPathSep; fg_aircraft += aircraft_dir_list_->text(i); } } prefs.set( "fg_aircraft", fg_aircraft.c_str() ); string fg_scenery; for (int i = 1; i <= scenery_dir_list_->size(); ++i) { if (i != 1) fg_scenery += os::searchPathSep; std::string path = scenery_dir_list_->text(i); std::string::size_type p; if ((p = path.find('\t')) != std::string::npos) path.erase( p ); fg_scenery += path; } prefs.set( "fg_scenery", fg_scenery.c_str() ); if (refreshAircraft) aircraft_update(); refresh_airports(); } else if (wiz->value() == page[1]) { int n = aircraft->value(); if (n > 0) { AircraftData* data = reinterpret_cast( aircraft->data(n) ); prefs.set( "aircraft", n > 0 ? data->name.c_str() : "" ); } Fl::remove_timeout( timeout_handler, this ); } else if (wiz->value() == page[2]) { prefs.set( "airport", airports_->get_selected_id().c_str() ); prefs.set( "airport-name", airports_->get_selected_name().c_str() ); prefs.set( "carrier", carrier_->value() ); if ( carrier_->value() != string() ) prefs.set( "parkpos", parkpos_->value() ); else prefs.set( "parkpos", airports_->get_selected_parking().c_str() ); string rwy( airports_->get_selected_runway() ); if (rwy.empty()) rwy = _(""); prefs.set( "runway", rwy.c_str() ); update_basic_options( prefs ); display_scenarii(); } else if (wiz->value() == page[3]) { update_aircraft_mru(); prefs.flush(); if (fgThread == 0) fgThread = new FlightGearThread( this ); fgThread->setViewer(false); fgThread->start(); exec_launch_window(); return; } wiz->next(); if (wiz->value() == page[1]) { aircraft_mru_update(); // "Select aircraft" page if (aircraft->size() == 0) aircraft_update(); } else if (wiz->value() == page[2]) { char buf[256]; prefs.get( "carrier", buf, "", sizeof buf - 1 ); carrier_->value( buf ); prefs.get( "parkpos", buf, "", sizeof buf - 1 ); if ( carrier_->value() != string() ) parkpos_->value( buf ); else airports_->select_parking( buf ); // "Select location" page if (!airports_->loaded()) { win->cursor( FL_CURSOR_WAIT ); Fl::flush(); } } else if (wiz->value() == page[3]) { std::ostringstream ostr; ostr << fg_exe_->value() << "\n "; write_fgfsrc( prefs, ostr, "\n " ); text->buffer()->text( ostr.str().c_str() ); next->label( _("Run") ); } } void Wizard::prev_cb() { next->activate(); next->label( _("Next") ); if (wiz->value() == page[2]) { aircraft_mru_update(); } wiz->prev(); if (wiz->value() == page[0]) { prev->deactivate(); } else if (wiz->value() == page[1]) { Fl::add_timeout( update_period, timeout_handler, this ); } } void Wizard::defaults_cb() { int r = fl_choice( _("About to reset current parameters"), _("Abort"), _("Reset"), 0 ); if (!r) return; if (adv == 0) { adv = new Advanced( prefs ); } adv->reset_settings( prefs ); reset_settings(); } void Wizard::fg_exe_select_cb() { SGPath exe(fg_exe_->value()); char* p = fl_file_chooser( _("Select FlightGear executable"), exe.file().c_str(), exe.dir().c_str()); if (p != 0) fg_exe_->value( p ); fg_exe_update_cb(); } void Wizard::fg_exe_update_cb() { fg_path_updated(); } void Wizard::fg_root_update_cb() { fg_path_updated(); } void Wizard::fg_path_updated(bool addScenery) { next->deactivate(); bool error = false; fg_exe_invalid->show(); if (fg_exe_->size() == 0 || !is_valid_fg_exe(fg_exe_->value())) error = true; else fg_exe_invalid->hide(); fg_root_invalid->show(); string dir( fg_root_->value() ); if (fg_root_->size() == 0) error = true; else { // Remove trailing separator. if (os::isdirsep( dir[ dir.length() - 1 ] )) dir.erase( dir.length() - 1 ); if (!is_valid_fg_root( dir )) { dir.append( "/data" ); if (!is_valid_fg_root( dir )) error = true; else { fg_root_->value( dir.c_str() ); fg_root_invalid->hide(); } } else fg_root_invalid->hide(); } if (addScenery && scenery_dir_list_->size() == 0) { // Derive FG_SCENERY from FG_ROOT. string d( dir ); d.append( "/Scenery" ); if (fl_filename_isdir( d.c_str() )) scenery_dir_list_->add( d.c_str() ); } fg_scenery_invalid->show(); if (scenery_dir_list_->size() == 0) error = true; else fg_scenery_invalid->hide(); if (!error) next->activate(); } void Wizard::fg_root_select_cb() { char* p = fl_dir_chooser( _("Select FG_ROOT directory"), fg_root_->value(), 0); if (p != 0) { // Remove trailing separator. if (*p != 0 && os::isdirsep( p[strlen(p)-1] )) p[strlen(p)-1] = '\0'; fg_root_->value( p ); } fg_root_update_cb(); } void Wizard::advanced_cb() { if (adv == 0) adv = new Advanced( prefs ); prefs.set( "airport", airports_->get_selected_id().c_str() ); prefs.set( "airport-name", airports_->get_selected_name().c_str() ); int r = adv->exec( prefs ); if (r) { } update_basic_options( prefs ); // Update command text. std::ostringstream ostr; ostr << fg_exe_->value() << "\n "; write_fgfsrc( prefs, ostr, "\n " ); text->buffer()->text( ostr.str().c_str() ); } static void search_aircraft_dir( const SGPath& dir, bool recursive, vector& ac ) { string s( dir.str() ); #ifdef WIN32 // Ensure there is a trailing slash. if (*s.rbegin() != '/') s.append( "/" ); #endif simgear::Dir directory( dir ); simgear::PathList files = directory.children(); for ( simgear::PathList::iterator ii = files.begin(); ii != files.end(); ++ii ) { if (fl_filename_match(ii->c_str(), "*-set.xml")) { ac.push_back( *ii ); } else if ( recursive && ii->isDir() ) { search_aircraft_dir( *ii, false, ac ); } } } static void delayed_preview( void* v ) { ((Wizard*)v)->preview_aircraft(); } struct ICompare { bool operator()( const string &a, const string &b ) const { return strcasecmp( a.c_str(), b.c_str() ) < 0; } }; void Wizard::aircraft_update() { const int buflen = FL_PATH_MAX; char buf[ buflen ]; prefs.get( "aircraft", buf, "", buflen-1); aircraft_update( buf ); } void Wizard::aircraft_update( const char *aft ) { SGPath rpath( fg_root_->value() ); rpath.append( "Aircraft" ); map > ac; search_aircraft_dir( rpath, true, ac[ rpath.str() ] ); const int buflen = FL_PATH_MAX; char buf[ buflen ]; string fg_aircraft; if (prefs.get( "fg_aircraft", buf, "", buflen-1)) { fg_aircraft = buf; } typedef vector vs_t; vs_t va( sgPathSplit( fg_aircraft ) ); for (vs_t::size_type i = 0; i < va.size(); ++i) { SGPath path( va[ i ] ); search_aircraft_dir( path, true, ac[ path.str() ] ); } // Empty the aircraft browser list. for (int i = 1; i <= aircraft->size(); ++i) { if ( aircraft->text(i)[0] == ' ' ) { AircraftData* data = reinterpret_cast( aircraft->data(i) ); delete data; } } aircraft->clear(); bool selected = false; map,ICompare> am; for ( map >::iterator ii = ac.begin(); ii != ac.end(); ++ii ) { // Populate the aircraft browser list. for (vector::size_type vi = 0; vi < ii->second.size(); ++vi) { SGPath path = ii->first; string s( ii->second[vi].str() ), name( s ); name.erase( 0, path.str().size() ); if ( name[0] == '/' ) name.erase( 0, 1 ); string::size_type p = name.find( '/' ); if ( p != string::npos ) name.erase( p ); SGPropertyNode props; try { readProperties( s.c_str(), &props ); } catch (const sg_exception&) { continue; } if (props.hasValue( "/sim/description" )) { string desc = props.getStringValue( "/sim/description" ); if ( desc.find( "Alias " ) == string::npos ) { // Extract aircraft name from filename. string::size_type pos = s.rfind( "/" ); string::size_type epos = s.find( "-set.xml", pos ); string ss( s.substr( pos+1, epos-pos-1 ) ); AircraftData* data = new AircraftData; data->name = ss; data->dir = name; data->root = path.str(); data->desc = desc; data->status = props.getStringValue( "/sim/status", _( "Unknown" ) ); data->modelPath = props.getStringValue( "/sim/model/path", _( "Unknown" ) ); string splash = props.getStringValue( "/sim/startup/splash-texture", _( "" ) ); if (splash.empty()) { data->thumbnailPath = SGPath(s).dir() + "/thumbnail.jpg"; } else { data->thumbnailPath = path.str().substr(0, path.str().size()-8) + splash; } data->author = props.getStringValue( "/sim/author", _( "Unknown" ) ); data->fdm = props.getIntValue( "/sim/rating/FDM", -1 ); data->systems = props.getIntValue( "/sim/rating/systems", -1 ); data->cockpit = props.getIntValue( "/sim/rating/cockpit", -1 ); data->model = props.getIntValue( "/sim/rating/model", -1 ); am[name].push_back( data ); } } } } for ( map,ICompare>::iterator it = am.begin(); it != am.end(); ++it ) { aircraft->add( it->first.c_str(), it->second[0] ); for ( vector::size_type i = 0; i < it->second.size(); ++i ) { AircraftData* data = it->second[i]; string desc = data->desc; desc.insert( 0, " " ); aircraft->add( desc.c_str(), data ); if (aft[0] != 0 && strcmp( aft, data->name.c_str() ) == 0) { aircraft->select( aircraft->size() ); selected = true; } } } refreshAircraft = false; if ( selected ) Fl::add_timeout( 0.1, delayed_preview, this ); } Wizard::~Wizard() { // Empty the aircraft browser list. for (int i = 1; i <= aircraft->size(); ++i) { if ( aircraft->text(i)[0] == ' ' ) { AircraftData* data = reinterpret_cast( aircraft->data(i) ); delete data; } } aircraft->clear(); delete logwin; delete win; delete adv; } void Wizard::cancel_cb() { stopProcess( tsPid ); logwin->hide(); // Save main window size and position. prefs.set( "x", win->x() ); prefs.set( "y", win->y() ); prefs.set( "width", win->w() ); prefs.set( "height", win->h() ); win->hide(); } void Wizard::delete_cache_file_cb() { char buf[ FL_PATH_MAX ]; prefs.getUserdataPath( buf, sizeof(buf) ); SGPath path( buf ); path.append( "/airports.txt" ); if (!path.exists()) return; //TODO: win32 support. if (unlink( path.c_str() ) == 0) return; fl_alert( _("Unable to delete '%s':\n%s"), path.c_str(), strerror(errno) ); } void Wizard::aircraft_dir_select_cb() { int n = aircraft_dir_list_->value(); if (n > 0) { aircraft_dir_delete_->activate(); aircraft_dir_list_->deselect(); aircraft_dir_list_->select( n ); } else { aircraft_dir_delete_->deactivate(); } } void Wizard::aircraft_dir_add_cb() { char* p = fl_dir_chooser( _("Select FG_AIRCRAFT directory"), 0, 0); if (p != 0) { // Remove trailing separator. if (*p != 0 && os::isdirsep( p[strlen(p)-1] )) p[strlen(p)-1] = '\0'; aircraft_dir_list_->add( p ); aircraft_dir_list_->value( aircraft_dir_list_->size() ); aircraft_dir_list_->select( aircraft_dir_list_->size() ); aircraft_dir_delete_->activate(); refreshAircraft = true; } } void Wizard::aircraft_dir_delete_cb() { int n = aircraft_dir_list_->value(); if (n > 0) { aircraft_dir_list_->remove( n ); } if (aircraft_dir_list_->value() == 0) aircraft_dir_delete_->deactivate(); refreshAircraft = true; } void Wizard::scenery_dir_select_cb() { scenery_dir_up_->deactivate(); scenery_dir_down_->deactivate(); int n = scenery_dir_list_->value(); if (n > 0) { scenery_dir_delete_->activate(); if (n > 1) scenery_dir_up_->activate(); if (n < scenery_dir_list_->size()) scenery_dir_down_->activate(); scenery_dir_list_->deselect(); scenery_dir_list_->select( n ); } else { scenery_dir_delete_->deactivate(); } } void Wizard::update_scenery_up_down() { int n = scenery_dir_list_->value(); if (n <= 0) scenery_dir_up_->deactivate(); else scenery_dir_up_->activate(); if (n == 0 || n == scenery_dir_list_->size()) scenery_dir_down_->deactivate(); else scenery_dir_down_->activate(); if (n == 0) scenery_dir_delete_->deactivate(); else scenery_dir_delete_->activate(); } void Wizard::scenery_dir_add_cb() { char* p = fl_dir_chooser( _("Select FG_SCENERY directory"), 0, 0); if (p != 0) { // Remove trailing separator. if (*p != 0 && os::isdirsep( p[strlen(p)-1] )) p[strlen(p)-1] = '\0'; scenery_dir_list_->add( p ); scenery_dir_list_->value( scenery_dir_list_->size() ); scenery_dir_list_->select( scenery_dir_list_->size() ); update_scenery_up_down(); fg_path_updated(); } } void Wizard::scenery_dir_delete_cb() { int n = scenery_dir_list_->value(); if (n > 0) { scenery_dir_list_->remove( n ); } if (scenery_dir_list_->size() == 0) scenery_dir_delete_->deactivate(); update_scenery_up_down(); fg_path_updated( false ); } /** * Move a directory entry up the list. */ void Wizard::scenery_dir_up_cb() { int from = scenery_dir_list_->value(); int to = from - 1; scenery_dir_list_->move( to, from ); scenery_dir_list_->deselect(); scenery_dir_list_->select( to ); scenery_dir_down_->activate(); if (to == 1) scenery_dir_up_->deactivate(); } /** * Move a directory entry down the list. */ void Wizard::scenery_dir_down_cb() { int n = scenery_dir_list_->value(); scenery_dir_list_->insert( n+2, scenery_dir_list_->text(n) ); scenery_dir_list_->remove( n ); scenery_dir_list_->deselect(); scenery_dir_list_->select( n+1 ); scenery_dir_up_->activate(); if (n+1 == scenery_dir_list_->size()) scenery_dir_down_->deactivate(); } /** * Force a re-scan of the scenery directories for new airports. */ void Wizard::refresh_airports( Fl_Widget*, void* v ) { static_cast(v)->delete_cache_file_cb(); static_cast(v)->refresh_airports(); } void Wizard::refresh_airports() { // win->cursor( FL_CURSOR_WAIT ); SGPath path( fg_root_->value() ); airports_->load_runways( path.str(), airports_cb, this ); } void Wizard::update_options() { // Update command text. std::ostringstream ostr; ostr << fg_exe_->value() << "\n "; write_fgfsrc( prefs, ostr, "\n " ); text->buffer()->text( ostr.str().c_str() ); } void Wizard::resolution_cb() { prefs.set("geometry", resolution->text()); update_options(); } void Wizard::bpp_cb() { prefs.set("bpp", bpp->text()); update_options(); } void Wizard::game_mode_cb() { prefs.set("fullscreen", game_mode->value()); update_options(); } void Wizard::horizon_effect_cb() { prefs.set("horizon_effect", horizon_effect->value()); update_options(); } void Wizard::enhanced_lighting_cb() { prefs.set("enhanced_lighting", enhanced_lighting->value()); update_options(); } void Wizard::specular_highlight_cb() { prefs.set("specular_highlight", specular_highlight->value()); update_options(); } void Wizard::clouds_3d_cb() { prefs.set("clouds3d", clouds_3d->value()); update_options(); } void Wizard::frame_rate_limiter_cb() { int v = frame_rate_limiter->value(); if ( v == 0 ) { frame_rate_limiter_value->deactivate(); } else { frame_rate_limiter_value->activate(); } prefs.set( "frame_rate_limiter", v ); frame_rate_limiter_value_cb(); } void Wizard::frame_rate_limiter_value_cb() { prefs.set( "frame_rate_limiter_value", frame_rate_limiter_value->value() ); update_options(); } void Wizard::random_objects_cb() { prefs.set("random_objects", random_objects->value()); update_options(); } void Wizard::random_trees_cb() { prefs.set("random_trees", random_trees->value()); update_options(); } void Wizard::ai_models_cb() { prefs.set("ai_models", ai_models->value()); if ( ai_models->value() == 0 ) { ai_traffic->value(0); prefs.set("ai_traffic", ai_traffic->value()); ai_traffic->deactivate(); multiplay->value(0); multiplay_cb(); } else { ai_traffic->activate(); update_options(); } } void Wizard::ai_traffic_cb() { prefs.set("ai_traffic", ai_traffic->value()); update_options(); } void Wizard::time_of_day_cb() { int v = time_of_day->value(); if ( v == 0 ) { time_of_day_value->deactivate(); prefs.set("time-match-real", 1); } else { time_of_day_value->activate(); prefs.set("time_of_day_value", (const char *)time_of_day_value->mvalue()->user_data_); prefs.set("time-match-real", 0); prefs.set("time-match-local", 0); prefs.set("start-date-sys", 0); prefs.set("start-date-gmt", 0); prefs.set("start-date-lat", 0); } prefs.set("time_of_day", v); update_options(); } void Wizard::time_of_day_value_cb() { prefs.set("time_of_day_value", (const char *)time_of_day_value->mvalue()->user_data_); update_options(); } void Wizard::season_cb() { prefs.set("season", (const char *)season->mvalue()->user_data_); update_options(); } void Wizard::real_weather_fetch_cb() { prefs.set("fetch_real_weather", real_weather_fetch->value()); update_options(); } void Wizard::auto_coordination_cb() { prefs.set("auto_coordination", auto_coordination->value()); update_options(); } void Wizard::scenarii_cb() { static string tooltip; if ( scenarii->value() ) { SGPath path( fg_root_->value() ); path.append( "AI" ); path.append( scenarii->text( scenarii->value() ) ); path.concat( ".xml" ); try { SGPropertyNode scenario; readProperties( path.str(), &scenario ); tooltip = _("Description of "); tooltip += scenarii->text( scenarii->value() ); tooltip += "\n"; tooltip += scenario.getStringValue( "scenario/description", _("Not set") ); size_t p = 0; while ( ( p = tooltip.find( '@', p ) ) != string::npos ) { tooltip.insert( p, "@" ); p += 2; } } catch ( const sg_exception& ) { tooltip = _("Select a scenario to display its description"); } } else tooltip = _("Select a scenario to display its description"); scenarii_help->tooltip( tooltip.c_str() ); int nb = 0; for (int i = 1; i <= scenarii->size(); ++i) { if ( scenarii->selected(i) ) { nb += 1; prefs.set( Fl_Preferences::Name("scenario-item-%d", nb), scenarii->text(i)); } } prefs.set("scenario-count", nb); update_options(); } void Wizard::terrasync_cb() { int v = terrasync->value(); if ( v == 0 ) { prefs.set("terrasync",0); } else { prefs.set("terrasync",1); } update_options(); } void Wizard::atlas_cb() { int v = atlas->value(); if ( v == 0 ) { atlas_host->deactivate(); atlas_port->deactivate(); std::vector io_list; int i, iVal; prefs.get("io-count", iVal, 0); for ( i = 1; i <= iVal; ++i ) { char buf[256]; prefs.get( Fl_Preferences::Name( "io-item-%d", i ), buf, "", sizeof buf - 1 ); string item( buf ); if ( item.length() < 8 || item.substr( 0, 8 ) != "--atlas=" ) { io_list.push_back(buf); } } prefs.set("io-count",(int)io_list.size()); for ( i = 0; i < (int)io_list.size(); ++i ) { prefs.set( Fl_Preferences::Name( "io-item-%d", i+1 ), io_list[i].c_str()); } } else { atlas_host->activate(); atlas_port->activate(); int i, iVal, loc = 0; prefs.get("io-count", iVal, 0); for ( i = 1; i <= iVal; ++i ) { char buf[256]; prefs.get( Fl_Preferences::Name( "io-item-%d", i ), buf, "", sizeof buf - 1 ); string item( buf ); if ( item.length() > 8 && item.substr( 0, 8 ) == "--atlas=" ) { loc = i; break; } } string host = atlas_host->value(); if ( host.empty() ) host = "localhost"; int port = (int)atlas_port->value(); if ( port == 0 ) port = 5500; atlas_port->value(port); std::ostringstream opt; opt << "--atlas=socket,out,5," << host << "," << port << ",udp"; if ( loc == 0 ) { loc = iVal + 1; prefs.set("io-count",loc); } prefs.set( Fl_Preferences::Name( "io-item-%d", loc ), opt.str().c_str() ); } update_options(); } void Wizard::atlas_host_cb() { int i, iVal, loc = 0; prefs.get("io-count", iVal, 0); for ( i = 1; i <= iVal; ++i ) { char buf[256]; prefs.get( Fl_Preferences::Name( "io-item-%d", i ), buf, "", sizeof buf - 1 ); string item( buf ); if ( item.length() > 8 && item.substr( 0, 8 ) == "--atlas=" ) { loc = i; break; } } string host = atlas_host->value(); if ( host.empty() ) host = "localhost"; int port = (int)atlas_port->value(); if ( port == 0 ) port = 5500; atlas_port->value(port); std::ostringstream opt; opt << "--atlas=socket,out,5," << host << "," << port << ",udp"; if ( loc == 0 ) { loc = iVal + 1; prefs.set("io-count",loc); } prefs.set( Fl_Preferences::Name( "io-item-%d", loc ), opt.str().c_str() ); update_options(); } void Wizard::atlas_port_cb() { int i, iVal, loc = 0; prefs.get("io-count", iVal, 0); for ( i = 1; i <= iVal; ++i ) { char buf[256]; prefs.get( Fl_Preferences::Name( "io-item-%d", i ), buf, "", sizeof buf - 1 ); string item( buf ); if ( item.length() > 8 && item.substr( 0, 8 ) == "--atlas=" ) { loc = i; break; } } string host = atlas_host->value(); if ( host.empty() ) host = "localhost"; int port = (int)atlas_port->value(); if ( port == 0 ) port = 5500; std::ostringstream opt; opt << "--atlas=socket,out,5," << host << "," << port << ",udp"; if ( loc == 0 ) { loc = iVal + 1; prefs.set("io-count",loc); } prefs.set( Fl_Preferences::Name( "io-item-%d", loc ), opt.str().c_str() ); update_options(); } void Wizard::multiplay_cb() { int v = multiplay->value(); if ( v == 0 ) { multiplay_callsign->deactivate(); multiplay_host->deactivate(); multiplay_in->deactivate(); multiplay_out->deactivate(); prefs.set("callsign",""); prefs.set("multiplay1",""); prefs.set("multiplay2",""); } else { multiplay_callsign->activate(); multiplay_host->activate(); multiplay_in->activate(); multiplay_out->activate(); string callsign = multiplay_callsign->value(); string host = multiplay_host->value(); int in = (int)multiplay_in->value(); int out = (int)multiplay_out->value(); prefs.set("callsign",callsign.c_str()); std::ostringstream str; str << "out,10," << host << "," << out; prefs.set("multiplay1",str.str().c_str()); str.str(""); str << "in,10,," << in; prefs.set("multiplay2",str.str().c_str()); ai_models->value(1); ai_models_cb(); } update_options(); } void Wizard::multiplay_field_cb() { string callsign = multiplay_callsign->value(); string host = multiplay_host->value(); int in = (int)multiplay_in->value(); int out = (int)multiplay_out->value(); prefs.set("callsign",callsign.c_str()); std::ostringstream str; str << "out,10," << host << "," << out; prefs.set("multiplay1",str.str().c_str()); str.str(""); str << "in,10,," << in; prefs.set("multiplay2",str.str().c_str()); update_options(); } void Wizard::multiplay_callsign_cb() { string callsign = multiplay_callsign->value(); string::size_type p; if ((p = callsign.find(' ')) != string::npos) { callsign.erase(p,1); multiplay_callsign->value(callsign.c_str()); } else multiplay_field_cb(); } void Wizard::update_basic_options( Fl_Preferences &p ) { const int buflen = 256; char buf[ buflen ]; p.get("geometry", buf, "", buflen-1); if ( buf[0] == '\0' ) { strcpy( buf, "800x600" ); } int i; for ( i = 0; menu_resolution[i].text != 0; i++ ) { if ( strcmp( buf, menu_resolution[i].text ) == 0 ) { resolution->value(i); break; } } if ( menu_resolution[i].text == 0 ) { const char *t = resolution->text(i); if ( t == 0 ) resolution->add( buf ); else if ( strcmp( t, buf ) != 0 ) { resolution->remove(i); resolution->add( buf ); } resolution->value(i); } p.get("bpp", buf, "32", buflen-1); set_choice( bpp, buf ); int iVal, iVal2; p.get("fullscreen", iVal, 0); game_mode->value(iVal); p.get("horizon_effect", iVal, 0); horizon_effect->value(iVal); p.get("enhanced_lighting", iVal, 0); enhanced_lighting->value(iVal); p.get("specular_highlight", iVal, 0); specular_highlight->value(iVal); p.get("clouds3d", iVal, 0); clouds_3d->value(iVal); p.get("frame_rate_limiter", iVal, 0); frame_rate_limiter->value(iVal); p.get("frame_rate_limiter_value", iVal2, 60); frame_rate_limiter_value->value( iVal2 ); if ( iVal ) frame_rate_limiter_value->activate(); else frame_rate_limiter_value->deactivate(); p.get("random_objects", iVal, 0); random_objects->value(iVal); p.get("random_trees", iVal, 0); random_trees->value(iVal); p.get("ai_models", iVal, 0); ai_models->value(iVal); p.get("ai_traffic", iVal, 0); ai_traffic->value(iVal); if (ai_models->value() == 0) ai_traffic->deactivate(); else ai_traffic->activate(); p.get("time_of_day", iVal, 0); time_of_day->value(iVal); p.get("time_of_day_value", buf, "noon", buflen-1); set_choice( time_of_day_value, buf ); p.get("season", buf, "summer", buflen-1); set_choice( season, buf ); p.get("fetch_real_weather", iVal, 0); real_weather_fetch->value(iVal); p.get("auto_coordination", iVal, 0); auto_coordination->value(iVal); p.get("terrasync", iVal, 0); terrasync->value(iVal); p.get("autovisibility", iVal, 0); auto_visibility->value(iVal); p.get("show_console", iVal, 0); show_console->value(iVal); atlas->value(0); atlas_host->value(""); atlas_host->deactivate(); atlas_port->value(0); atlas_port->deactivate(); p.get("io-count", iVal, 0); for ( i = 1; i <= iVal; ++i ) { buf[0] = 0; p.get( Fl_Preferences::Name("io-item-%d", i), buf, "", buflen-1 ); string item( buf ); if ( item.length() > 19 && item.substr( 0, 19 ) == "--atlas=socket,out," ) { item.erase( 0, 19 ); string::size_type p = item.find( ',' ); if ( p != string::npos ) { item.erase( 0, p+1 ); p = item.find( ',' ); if ( p != string::npos ) { string host = item.substr(0, p); item.erase( 0, p+1 ); p = item.find( ',' ); if ( p != string::npos ) { string port = item.substr(0, p); item.erase(0, p+1); if ( item == "udp" ) { atlas->value(1); atlas_host->value( host.c_str() ); atlas_port->value( atoi( port.c_str() ) ); atlas_host->activate(); atlas_port->activate(); } } } } } } multiplay->value(0); multiplay_callsign->value(""); multiplay_host->value(""); multiplay_in->value(0); multiplay_out->value(0); multiplay_callsign->deactivate(); multiplay_host->deactivate(); multiplay_in->deactivate(); multiplay_out->deactivate(); p.get("callsign", buf, "", buflen-1 ); string callsign(buf); p.get("multiplay1", buf, "", buflen-1 ); string multiplay1(buf); p.get("multiplay2", buf, "", buflen-1 ); string multiplay2(buf); if ( callsign.size() && multiplay1.size() && multiplay2.size() ) { if ( multiplay1.size() >= 3 && multiplay2.size() >= 3 ) { if ( multiplay1.substr(0,3) != "out" || multiplay2.substr(0,3) != "in," ) { string tmp = multiplay1; multiplay1 = multiplay2; multiplay2 = tmp; } if ( multiplay1.substr(0,3) == "out" && multiplay2.substr(0,3) == "in," ) { if ( multiplay1.size() >= 4 ) { multiplay1.erase(0, 4); multiplay2.erase(0, 3); string::size_type p = multiplay1.find(','); if ( p != string::npos ) { multiplay1.erase(0, p+1); p = multiplay2.find(','); if ( p != string::npos ) { multiplay2.erase(0, p+1); p = multiplay1.find(','); if ( p != string::npos ) { string host = multiplay1.substr(0, p); multiplay1.erase(0, p+1); p = multiplay2.find(','); if ( p != string::npos ) { multiplay2.erase(0, p+1); int out = atoi(multiplay1.c_str()); int in = atoi(multiplay2.c_str()); multiplay->value(1); multiplay_callsign->value(callsign.c_str()); multiplay_callsign->activate(); multiplay_host->value(host.c_str()); multiplay_host->activate(); multiplay_in->value(in); multiplay_in->activate(); multiplay_out->value(out); multiplay_out->activate(); } } } } } } } } } void Wizard::display_scenarii() { set selected; int iVal; const int buflen = FL_PATH_MAX; char buf[ buflen ]; prefs.get( "scenario-count", iVal, 0 ); int i; for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs.get( Fl_Preferences::Name("scenario-item-%d", i), buf, "", buflen-1 ); if ( strlen( buf ) > 0 ) selected.insert( buf ); } scenarii->clear(); SGPath path( fg_root_->value() ); path.append( "AI" ); i = 1; simgear::Dir directory( path ); simgear::PathList files = directory.children( simgear::Dir::TYPE_FILE | simgear::Dir::NO_DOT_OR_DOTDOT ); for ( simgear::PathList::iterator ii = files.begin(); ii != files.end(); ++ii ) { if (fl_filename_match(ii->c_str(), "*.xml")) { string n = ii->file(); n.erase(n.size()-4); scenarii->add( n.c_str() ); if ( selected.find( n ) != selected.end() ) scenarii->select(i); i += 1; } } scenarii_cb(); } void Wizard::deselect_all_scenarii_cb() { scenarii->deselect(); scenarii_help->tooltip( _("Select a scenario to display its description") ); prefs.set("scenario-count", 0); update_options(); } void Wizard::show_cmd_line_cb() { if ( show_cmd_line->value() ) text->show(); else text->hide(); prefs.set("show_cmd_line", show_cmd_line->value()); } void Wizard::show_console_cb() { prefs.set("show_console", show_console->value()); update_options(); } Wizard::FlightGearThread::FlightGearThread( Wizard *w ) : wizard( w ), viewer( false ) { } void Wizard::FlightGearThread::setViewer(bool v) { viewer = v; } void Wizard::FlightGearThread::run() { std::ostringstream ostr; if ((viewer && write_fgviewerrc( wizard->prefs, ostr, " ", wizard->current_aircraft_model_path )) || wizard->write_fgfsrc( wizard->prefs, ostr, " " )) { wizard->launch_result = wizard->run_fgfs(ostr.str()); } } void Wizard::exec_launch_window() { int X = win->x(), Y = win->y(), W = win->w(), H = win->h(), w = launch_window->w(), h = launch_window->h(); launch_window->position( X + ( W - w ) / 2, Y + ( H - h ) / 2 ); launch_result = -1; launch_window->set_modal(); launch_window->show(); while ( launch_result == -1 ) { Fl::wait(); } launch_window->set_non_modal(); launch_window->hide(); if ( launch_result != 0 ) { exec_crash_window( dump_file_name.c_str() ); } } void Wizard::reset_settings() { prefs.deleteEntry( "fg_exe" ); prefs.deleteEntry( "fg_root" ); prefs.deleteEntry( "fg_scenery" ); prefs.deleteEntry( "aircraft" ); prefs.set( "time_of_day", 1 ); prefs.set( "time_of_day_value", "noon" ); aircraft->value( 0 ); preview->make_current(); preview->clear(); preview->redraw(); const int buflen = FL_PATH_MAX; char buf[ buflen ]; if ( prefs.get( "fg_exe_init", buf, "", buflen-1) != 0 ) { prefs.set( "fg_exe", buf ); } if ( prefs.get( "fg_root_init", buf, "", buflen-1) != 0 ) { prefs.set( "fg_root", buf ); } if ( prefs.get( "fg_scenery_init", buf, "", buflen-1 ) != 0 ) { prefs.set( "fg_scenery", buf ); } reset(); } void Wizard::save_basic_options( Fl_Preferences &p ) { char abs_name[ FL_PATH_MAX ]; fl_filename_absolute( abs_name, fg_exe_->value() ); p.set( "fg_exe", abs_name ); fl_filename_absolute( abs_name, fg_root_->value() ); p.set( "fg_root", abs_name ); string fg_scenery; for (int i = 1; i <= scenery_dir_list_->size(); ++i) { if (i != 1) fg_scenery += os::searchPathSep; std::string path = scenery_dir_list_->text(i); std::string::size_type p; if ((p = path.find('\t')) != std::string::npos) path.erase( p ); fg_scenery += path; } p.set( "fg_scenery", fg_scenery.c_str() ); int n = aircraft->value(); if (n > 0) { AircraftData* data = reinterpret_cast( aircraft->data(n) ); p.set( "aircraft", n > 0 ? data->name.c_str() : "" ); } p.set( "airport", airports_->get_selected_id().c_str() ); p.set( "airport-name", airports_->get_selected_name().c_str() ); p.set( "carrier", carrier_->value() ); if ( carrier_->value() != string() ) p.set( "parkpos", parkpos_->value() ); else p.set( "parkpos", airports_->get_selected_parking().c_str() ); string rwy( airports_->get_selected_runway() ); if (rwy.empty()) rwy = _(""); p.set( "runway", rwy.c_str() ); p.set("geometry", resolution->text()); p.set("bpp", bpp->text()); p.set("fullscreen", game_mode->value()); p.set("horizon_effect", horizon_effect->value()); p.set("enhanced_lighting", enhanced_lighting->value()); p.set("specular_highlight", specular_highlight->value()); p.set("clouds3d", clouds_3d->value()); int v = frame_rate_limiter->value(); if ( v == 0 ) { frame_rate_limiter_value->deactivate(); } else { frame_rate_limiter_value->activate(); } p.set("frame_rate_limiter", v); p.set("frame_rate_limiter_value", frame_rate_limiter_value->value() ); p.set("random_objects", random_objects->value()); p.set("random_trees", random_trees->value()); p.set("ai_models", ai_models->value()); v = time_of_day->value(); if ( v == 0 ) { time_of_day_value->deactivate(); p.set("time-match-real", 1); } else { time_of_day_value->activate(); p.set("time-match-real", 0); p.set("time-match-local", 0); p.set("start-date-sys", 0); p.set("start-date-gmt", 0); p.set("start-date-lat", 0); } p.set("time_of_day", v); p.set("time_of_day_value", (const char *)time_of_day_value->mvalue()->user_data_); p.set("season", (const char *)season->mvalue()->user_data_); p.set("fetch_real_weather", real_weather_fetch->value()); p.set("auto_coordination", auto_coordination->value()); int nb = 0; for (int i = 1; i <= scenarii->size(); ++i) { if ( scenarii->selected(i) ) { nb += 1; p.set( Fl_Preferences::Name("scenario-item-%d", nb), scenarii->text(i)); } } p.set("scenario-count", nb); v = atlas->value(); if ( v == 0 ) { std::vector io_list; int i, iVal; p.get("io-count", iVal, 0); for ( i = 1; i <= iVal; ++i ) { char buf[256]; p.get( Fl_Preferences::Name( "io-item-%d", i ), buf, "", sizeof buf - 1 ); string item( buf ); if ( item.length() < 8 || item.substr( 0, 8 ) != "--atlas=" ) { io_list.push_back(buf); } } p.set("io-count",(int)io_list.size()); for ( i = 0; i < (int)io_list.size(); ++i ) { p.set( Fl_Preferences::Name( "io-item-%d", i+1 ), io_list[i].c_str()); } } else { int i, iVal, loc = 0; p.get("io-count", iVal, 0); for ( i = 1; i <= iVal; ++i ) { char buf[256]; p.get( Fl_Preferences::Name( "io-item-%d", i ), buf, "", sizeof buf - 1 ); string item( buf ); if ( item.length() > 8 && item.substr( 0, 8 ) == "--atlas=" ) { loc = i; break; } } string host = atlas_host->value(); if ( host.empty() ) host = "localhost"; int port = (int)atlas_port->value(); if ( port == 0 ) port = 5500; atlas_port->value(port); std::ostringstream opt; opt << "--atlas=socket,out,5," << host << "," << port << ",udp"; if ( loc == 0 ) { loc = iVal + 1; p.set("io-count",loc); } p.set( Fl_Preferences::Name( "io-item-%d", loc ), opt.str().c_str() ); } v = multiplay->value(); if ( v == 0 ) { p.set("callsign",""); p.set("multiplay1",""); p.set("multiplay2",""); } else { string callsign = multiplay_callsign->value(); string host = multiplay_host->value(); int in = (int)multiplay_in->value(); int out = (int)multiplay_out->value(); p.set("callsign",callsign.c_str()); std::ostringstream str; str << "out,10," << host << "," << out; p.set("multiplay1",str.str().c_str()); str.str(""); str << "in,10,," << in; p.set("multiplay2",str.str().c_str()); } } void Wizard::load_preferences_cb() { char *filename = fl_file_chooser( _("Load settings from..."), "*.fgrun", "settings.fgrun" ); if ( filename ) { win->cursor( FL_CURSOR_WAIT ); SGPath set1( filename ), set2( filename ); set2.concat( ".prefs" ); rename( filename, set2.c_str() ); { Fl_Preferences prefs_tmp( set1.dir().c_str(), "flightgear.org", set1.file().c_str() ); if (adv == 0) adv = new Advanced( prefs ); adv->load_settings( prefs_tmp ); update_basic_options( prefs_tmp ); const int buflen = FL_PATH_MAX; char buf[ buflen ]; prefs_tmp.get( "fg_exe", buf, def_fg_exe.c_str(), buflen-1); fg_exe_->value( buf ); prefs_tmp.get( "fg_root", buf, def_fg_root.c_str(), buflen-1); fg_root_->value( buf ); if (prefs_tmp.get( "fg_scenery", buf, "", buflen-1)) { scenery_dir_list_->clear(); typedef vector vs_t; vs_t v( sgPathSplit( buf ) ); for (vs_t::size_type i = 0; i < v.size(); ++i) { scenery_dir_list_->add( v[i].c_str() ); } } prefs_tmp.get( "aircraft", buf, "", buflen-1); aircraft_update( buf ); if (prefs_tmp.get( "airport", buf, "", buflen-1) && buf[0] != 0) airports_->select_id( buf ); prefs_tmp.get( "carrier", buf, "", buflen-1); carrier_->value( buf ); prefs_tmp.get( "parkpos", buf, "", sizeof buf - 1 ); if ( carrier_->value() != string() ) parkpos_->value( buf ); else airports_->select_parking( buf ); if (prefs_tmp.get( "runway", buf, "", buflen-1) && buf[0] != 0) airports_->select_rwy( buf ); int iVal; prefs_tmp.get( "scenario-count", iVal, 0 ); prefs.set( "scenario-count", iVal ); int i; for (i = 1; i <= iVal; ++i) { buf[0] = 0; prefs_tmp.get( Fl_Preferences::Name("scenario-item-%d", i), buf, "", buflen-1 ); prefs.set( Fl_Preferences::Name("scenario-item-%d", i), buf ); } adv->save_settings( prefs ); display_scenarii(); save_basic_options( prefs ); update_options(); } rename( set2.c_str(), filename ); win->cursor( FL_CURSOR_DEFAULT ); } } void Wizard::save_preferences_cb() { char *filename = 0; for (;;) { filename = fl_file_chooser( _("Save settings as..."), "*.fgrun", "settings.fgrun" ); struct stat stat_info; if ( !filename || stat( filename, &stat_info ) != 0 || fl_choice( _("Filename \"%s\" already exists."), _("Overwrite"), _("Don't overwrite"), 0, fl_filename_name( filename ) ) == 0 ) { break; } } if ( filename ) { SGPath settings( filename ); { Fl_Preferences prefs_tmp( settings.dir().c_str(), "flightgear.org", settings.file().c_str() ); if (adv == 0) adv = new Advanced( prefs ); adv->save_settings( prefs_tmp ); save_basic_options( prefs_tmp ); } settings.concat( ".prefs" ); unlink( filename ); rename( settings.c_str(), filename ); } } void Wizard::crash_ok_cb() { crash_window->set_non_modal(); crash_window->hide(); } void Wizard::exec_crash_window( const char *fname ) { int X = win->x(), Y = win->y(), W = win->w(), H = win->h(), w = crash_window->w(), h = crash_window->h(); file_box->copy_label( fname ); crash_window->position( X + ( W - w ) / 2, Y + ( H - h ) / 2 ); crash_window->set_modal(); crash_window->show(); } void Wizard::start_viewer_cb() { prefs.flush(); if (fgThread == 0) fgThread = new FlightGearThread( this ); fgThread->setViewer(true); fgThread->start(); exec_launch_window(); } void Wizard::auto_visibility_cb() { prefs.set("autovisibility", auto_visibility->value()); update_options(); } void Wizard::show_3d_preview_cb() { prefs.set("show_3d_preview", show_3d_preview->value()); preview_aircraft(false); } void Wizard::aircraft_mru_update() { aircraft_mru->clear(); const int buflen = FL_PATH_MAX; char buf[ buflen ]; int nb = 0; prefs.get("aircraft-mru-count", nb, 0); for (int i = 1; i <= nb; ++i) { if (prefs.get( Fl_Preferences::Name("aircraft-mru-item-%d", i), buf, "", buflen-1)) { string name(buf); size_t p = name.find(';'); if (p != string::npos) name.erase(0, p+1); aircraft_mru->add(name.c_str()); } } } void Wizard::update_aircraft_mru() { const int buflen = FL_PATH_MAX; char buf[ buflen ]; char buf1[ buflen ]; int pos = 0; if (prefs.get( "aircraft", buf, "", buflen-1 ) && buf[0] != 0 && prefs.get( "aircraft_name", buf1, "", buflen-1 ) && buf1[0] != 0) { deque aircraft_mru; int nb = 0; prefs.get("aircraft-mru-count", nb, 0); for (int i = 1; i <= nb; ++i) { char buf2[ buflen ]; if (prefs.get( Fl_Preferences::Name("aircraft-mru-item-%d", i), buf2, "", buflen)) { aircraft_mru.push_back(buf2); if (aircraft_mru.back().find(buf) == 0 && aircraft_mru.back().size() > strlen(buf) && aircraft_mru.back()[strlen(buf)] == ';') pos = i; } } if (pos != 0) { aircraft_mru.erase(aircraft_mru.begin() + (pos - 1)); } aircraft_mru.push_front(string(buf)+";"+buf1); while (aircraft_mru.size() > 5) aircraft_mru.pop_back(); for (unsigned int i = 1; i <= aircraft_mru.size(); ++i) { prefs.set( Fl_Preferences::Name("aircraft-mru-item-%d", i), aircraft_mru[i-1].c_str()); } prefs.set("aircraft-mru-count", (int)aircraft_mru.size()); } } void Wizard::aircraft_from_mru() { int n = aircraft_mru->value(); if (n == 0) return; const int buflen = FL_PATH_MAX; char buf[ buflen ]; if (prefs.get( Fl_Preferences::Name("aircraft-mru-item-%d", n), buf, "", buflen)) { string name(buf); size_t p = name.find(';'); if (p != string::npos) name.erase(0, p+1); string search = string(" ") + name; for (int i=1; i <= aircraft->size(); ++i) { string line = aircraft->text(i); if (line == search) { aircraft->value(i); preview_aircraft(false); return; } } } } fg-fgrun/version000066400000000000000000000000061245722473500142100ustar00rootroot000000000000003.4.0 fg-fgrun/xgettext.bat000066400000000000000000000011631245722473500151510ustar00rootroot00000000000000..\gettext\bin\xgettext -d fgrun -o po\fgrun.pot --copyright-holder="Frederic Bouvier" -k_ -kN_ src/advanced.cxx src/wizard.cxx src/wizard_funcs.cxx src/advanced_funcs.cxx src/AirportBrowser.cxx src/AirportTable.cxx src/fgfsrc.cxx src/logwin.cxx src/io.cxx src/main.cxx src/Fl_OSG.cxx cd po ..\..\gettext\bin\msgmerge -U fr.po fgrun.pot ..\..\gettext\bin\msgmerge -U nl.po fgrun.pot ..\..\gettext\bin\msgmerge -U pt.po fgrun.pot ..\..\gettext\bin\msgmerge -U de.po fgrun.pot ..\..\gettext\bin\msgmerge -U it.po fgrun.pot ..\..\gettext\bin\msgmerge -U pl.po fgrun.pot ..\..\gettext\bin\msgmerge -U es.po fgrun.pot cd ..