Changes in / [508:0b935cc724e1:509:77b730a1b092]
- Files:
-
- 1 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
MLXMANIFEST
r494 r504 7 7 library/fnmatch.pyc 3414 4d50000f78e903598af06ef1c5cfb3ef 8 8 library/libexpat-1.dll 143096 701659d3689bf4a8265b669b7d774255 9 library/gtk/_gtk.pyc 549 0 1ab724263b682fef252e767196209669 library/gtk/_gtk.pyc 549 0d0a77cca8e542a13b7f8ed84ae3a547 10 10 library/encodings/cp858.pyc 7591 02054a0b8e91b9758826eb70cddf096f 11 11 library/mlx/pirep.pyc 4623 2a008f269c900fb604b94b4e427f61b5 … … 13 13 library/encodings/unicode_internal.pyc 2022 1e902113491e0c334b44deb0c8940e01 14 14 library/libpango-1.0-0.dll 333729 5a14efd93ee27cfe960220fe4a904911 15 library/mlx/gui/gui.pyc 5 0869 f16e03a735b1b3181d5477272f937f4915 library/mlx/gui/gui.pyc 51077 c54af5d2051a31bc3c46a7d690cd1552 16 16 library/stat.pyc 2503 d3b6dc7a54e705219f04d0be75a212de 17 17 library/posixpath.pyc 10734 d694316c239784c444b252c801c97efa … … 22 22 doc/manual/hu/bugreport.png 12385 c71c7db56f19870ae5d6bb7f533d3679 23 23 library/share/locale/hu/LC_MESSAGES/gtk20.mo 58794 6ee4491ae7bc9d3dfb778578eb29a0b3 24 library/gobject/_gobject.pyc 573 10867282062943d560e4ee8a6fe45c0225 locale/en/LC_MESSAGES/mlx.mo 61 476 1698298a3947ef2f3a24496b9357ed1224 library/gobject/_gobject.pyc 573 92d29c5d8b466d18acef25eaa9cba97f 25 locale/en/LC_MESSAGES/mlx.mo 61639 aa73425f6f3c43fa83be90b9909f369e 26 26 library/encodings/utf_7.pyc 1747 2beeb059236527197d6c640396476ce8 27 27 doc/manual/hu/pirepViewer.png 26835 267e4325e550ed14ed22f86a2c7e8e9d … … 63 63 library/encodings/utf_8.pyc 1806 4b8dee0284ea2f55c4142fcde7463524 64 64 library/unicodedata.pyd 688128 c856c31a03dc892e4f2aee93d0bfee44 65 locale/hu/LC_MESSAGES/mlx.mo 66 075 a3ac01dc28e8960460ef446c4776621765 locale/hu/LC_MESSAGES/mlx.mo 66240 db0a23e9f1d4657562180946ae340f22 66 66 library/encodings/mac_roman.pyc 2716 4b4745eccfcb77860b70b374ac07fbcc 67 67 library/copy_reg.pyc 4893 7a58bc441232056d1c123cd3375b3774 … … 76 76 library/_hashlib.pyd 287232 a1a18de0644f481749fcbcf26005eeaf 77 77 doc/manual/en/monitorWindow.png 20886 42e08d10c758e21209c4c021f391dee7 78 library/_hashlib.pyc 549 bb6f94508135e4f447a7af40f75e97c778 library/_hashlib.pyc 549 ec9a5e38a98eaf491bd44048fe3f8d16 79 79 library/libpng14-14.dll 230529 f3a15497e25baaa721f96638d7a4d2f8 80 80 library/copy.pyc 11674 30d1745c5e38ab170f8a0486fbebf305 … … 87 87 library/select.pyd 11776 d90bf525f9f6c9c3aa6532fa6e569b4f 88 88 library/base64.pyc 10528 39abec9c60dc011d3c763f443f9b1a11 89 library/mlx/gui/bugreport.pyc 4602 cb1b9d897bafb5ece830db76df683f6389 library/mlx/gui/bugreport.pyc 4602 40b93f71f84bcbaa3c4918516acae15c 90 90 library/traceback.pyc 11223 50ace5c2c6c040a923082442da94cd78 91 91 library/_weakrefset.pyc 9290 a56e87c491c0511cd329a3c8c4cd9563 92 library/mlx/flight.pyc 17 303 5dea088a693918b1749263990c6e8b2592 library/mlx/flight.pyc 17473 8b37fd80c11c3a89738f5e4e1cda5578 93 93 library/urllib2.pyc 43566 7eb57ea0dcd1086d1d9073a5cefb0903 94 94 doc/manual/en/flightSelection.png 29847 7817c8f5ed8d7fe64cf72d0addaf3e4a … … 135 135 sounds/767taxi.mp3 160496 4cb43cda6e1214fbe15328a716827345 136 136 doc/manual/en/prefsAdvanced.png 16169 64c14e0842c413cac98b92926279f3e0 137 library/cairo/_cairo.pyc 561 bc5f5d52b0855de9123a104c87c1ff05138 library/win32file.pyc 552 d5615f88eec920b139331f60a7451d6f137 library/cairo/_cairo.pyc 561 6ac388cead1acc49e51e05d06033ad23 138 library/win32file.pyc 552 e12cc4667c80e4f5fb88cf46ec92d734 139 139 library/encodings/cp865.pyc 7868 7d40a7ba053ac23339218be8799e5397 140 140 library/lib/gtk-2.0/2.10.0/engines/libwimp.dll 97984 a5bbbe46e1363aba9020a76f2d58e9d6 … … 145 145 library/share/locale/hu/LC_MESSAGES/gtk20-properties.mo 167125 cd1b1b3693c1e3c74bfcea20be640cc6 146 146 conn_red.png 914 860388cb7c3b26b2f348fdbee40780ce 147 library/bz2.pyc 534 3480c8fcdb012cd24bc649ca4fbac334147 library/bz2.pyc 534 5595f0a4a8ffd0b63f7542fddc918028 148 148 library/xml/sax/expatreader.pyc 13563 4f64c0efb2f1f8dbba84cdb5c6036f2d 149 149 library/email/utils.pyc 8840 a7be428df6fddee6121cfce55382d1f8 … … 161 161 library/mlx/gui/statusbar.pyc 4812 87773f7d0bd28ed6250acf1972110ca8 162 162 library/warnings.pyc 12666 9788b5f45765e8204e04c820f2711094 163 mlxupdate.exe 1 9456 a9a83918df9f5a042697d207d68bd300164 library/mlx/const.pyc 67 07 95c101c7e31b0fdc9c219ceed3269136163 mlxupdate.exe 18944 b8bf9f3d22348aa1f78727f81d967f93 164 library/mlx/const.pyc 6710 2187949c18be095bada1927f3127d0cf 165 165 library/email/errors.pyc 3229 cdb78ab237e195ad69f059128bc03b1d 166 166 library/linecache.pyc 3091 666e6f81b0ea9a7637f8068493f738d5 … … 175 175 library/shlex.pyc 7282 cbe1a4823894c97c87d01f9d9faf5b8f 176 176 library/cairo/__init__.pyc 142 010dd7cc8485565d5782d60e92e4ba34 177 library/_ssl.pyc 537 fc20fea54ee0d9da3826a70fc3d6b19c177 library/_ssl.pyc 537 d7b3b5f87a333acdf28a28f52c5c8ce7 178 178 library/encodings/iso8859_8.pyc 2717 f3ad6ce58cfac9e3ca86cf5c2fef092b 179 179 library/encodings/iso2022_jp_1.pyc 1699 faed9d5747e982cec9fa8b3ad8e1de26 … … 196 196 library/encodings/cp1252.pyc 2676 b4c43cc72650c911cf3654dbaf565df9 197 197 library/share/locale/hu/LC_MESSAGES/atk10.mo 8465 e3f3466da367215aad971d7b0394229d 198 library/unicodedata.pyc 558 13df5f4887a442353ba4946d4da4887f199 library/select.pyc 543 40f3097f43a31700f3fb640cefb93106198 library/unicodedata.pyc 558 9570da5a79cb8e2156f6577185461f85 199 library/select.pyc 543 ad5bc4844763975968138f81e1e9ac65 200 200 library/encodings/uu_codec.pyc 4646 5282a5fcb676851224d2924aa3e48a9e 201 201 library/ConfigParser.pyc 23857 1d17020dd0000ce0f73de812effa152f … … 217 217 library/mlx/singleton.pyc 9184 3b71000d428959ab355db2658cea9557 218 218 library/locale.pyc 48754 a51d20267132acc6bc66ac6252cf870f 219 library/xplra.pyc 32012 50a1d9f19c0cc88783d264909ad1c678 219 220 library/socket.pyc 15488 35f8eb455d6d8df8e19826d1dd7193f2 220 221 sounds/notify.wav 119384 108025b17f67e61946df5d7fbf713cdb … … 228 229 doc/manual/hu/flightInfoTab.png 28786 3e8af27775131f02696b0912ca441f36 229 230 library/encodings/utf_8_sig.pyc 4625 1b1405db186e5819fa271ff96c1ca2c5 230 library/pangocairo.pyc 555 64aeb5c4fabbf2e53888ad5f32a6a543231 library/pangocairo.pyc 555 33065d79493949ba073d7fc7b165004b 231 232 library/encodings/cp1255.pyc 2697 b265913c887f2e1c8736632b652c0093 232 233 library/encodings/zlib_codec.pyc 4308 319c9073aff840436a03cc1fa0b08fb5 … … 235 236 doc/manual/hu/connect.png 28822 929f3eb85ee3cad019e12017c923f664 236 237 library/encodings/palmos.pyc 2876 9284ad53dcfd82dfae0a79923b1cf91d 237 library/mlx/web.pyc 30343 f51920501671cdb2752a7e3aba736f8b238 library/mlx/web.pyc 30343 0cab98a640fd3937828d24c2fe8ef0ef 238 239 library/mlx/gui/gates.pyc 5384 9f6acad03872832505e31406a1b6762b 239 240 library/email/feedparser.pyc 10682 4de6a63da8dc270c9881edb9c2f28508 … … 241 242 library/intl.dll 152489 eb2d4c4d4a527bc88a69a16cc99afcf5 242 243 library/encodings/mbcs.pyc 1883 2213911a7dd0deada6799b63e18b695b 243 library/pyuipc.pyc 543 2c9972aae2b17df1fb358cdd2338e577244 library/pyuipc.pyc 543 c194030ac361f97edfcf756a91a949f1 244 245 sounds/TOC.mp3 273032 fae1be2ad25c8b54806bd1d759919705 245 246 library/encodings/iso8859_4.pyc 2678 16f2fe7994051752360c533c052b892b … … 265 266 doc/manual/hu/flightSelection.png 30815 e8bcdda6079c6b16ffa72ca62c21ca85 266 267 library/win32pipe.pyd 24064 de374eded459293b2a7eb8ed8fb38eaa 267 library/win32pipe.pyc 552 aa728de41e6d4631d29aff7cd881238f268 library/win32pipe.pyc 552 79ce5d61fe62ec37a212e8a854f2807b 268 269 doc/manual/hu/cruise.png 27460 a2610173563e45baae1b0f9e63007ebd 269 270 doc/manual/hu/logTab.png 28706 f48004202310bd2a1cb2f873d8064e93 270 271 library/encodings/iso2022_jp_2004.pyc 1723 66376e788f3819e781897268c1100986 271 library/win32event.pyc 555 e63b8e35e47f054dff396030169e6620272 library/win32event.pyc 555 63b964537d2e2157645cab4a6b90e68d 272 273 library/encodings/cp866.pyc 8103 f36418dcf93b17b3ced63bd544f44159 273 library/gio/_gio.pyc 549 834dd5bbbac7b7a4b756a0d5f66a47f0274 library/gio/_gio.pyc 549 41b7fad0fabe6f41db16a6e05d415848 274 275 library/encodings/cp437.pyc 7874 63f1278c0a66129c6fb4f504d6b61b66 275 276 doc/manual/hu/helpTab.png 27961 8e7cc4aeb8d7f40fcf186c7caf53583b … … 294 295 library/mlx/gui/pirep.pyc 16749 7a295b28dbdad43b33c52d814be60792 295 296 library/mimetypes.pyc 17806 927ce6a7079707aaee925e855ed23454 296 library/_ctypes.pyc 546 f6d7b651ecb48c9f39af248b440a7102297 library/_ctypes.pyc 546 d4c47f95473dc9d7b363d62b26db0a7e 297 298 sounds/F70taxi.mp3 154854 51332dc691d3519355f61ed06c959d8d 298 299 library/encodings/cp857.pyc 7611 1b46c8959ac097b73e1c680d464cdc32 … … 312 313 library/repr.pyc 5045 82f0d89c685c3dacd941e01e4b2f31ef 313 314 library/quopri.pyc 6352 87c42d94f753dd4c8a761cfa79453bb8 314 library/mlx/gui/monitor.pyc 12 021 e6ca05162aa5fee265de2a5a63f0a62c315 library/mlx/gui/monitor.pyc 12214 6814c319b26ad7213e0759cf909c788d 315 316 library/encodings/latin_1.pyc 2111 52427573ccbfd06220b67d5a9dd1376e 316 317 library/mlx/update.pyc 16952 b4c0e85d094410aa0b7075476962730d … … 321 322 doc/manual/en/gatesTab.png 29585 00ebc96a2b4a7473dbb6a3162a04192f 322 323 library/bdb.pyc 17708 9a8fdcaa65f595c842689247847879d9 323 library/mlx/gui/flight.pyc 11 1770 b038aaa14a31b4ba86b86b84f1a98aca324 library/mlx/gui/flight.pyc 112899 536e12fba696bbc0781e2b5e73e8ea54 324 325 library/unittest/case.pyc 37758 1d2235e74c246b562c5c00ddf73c621a 325 326 library/subprocess.pyc 38648 c9f749db06dfc9fb32079de51d6efd01 … … 337 338 library/encodings/cp863.pyc 7868 fc7ff06dab536b93c68fcb8e7bac713f 338 339 library/xml/parsers/__init__.pyc 294 83f6a77ed8cd962b3c75c4779dc557ac 339 library/pyexpat.pyc 546 5a5b32b24e875d2d4a1cbd12351ee7c1340 library/pyexpat.pyc 546 3868a2225d9e99907f2cd9d97ef9a300 340 341 doc/manual/hu/gateSelection.png 29237 bac37e7001261a40a84e4202247f6052 341 342 logo.png 69816 4a7517b22cfd75cc9c15e3fc1b7ebeec … … 363 364 library/_socket.pyd 38400 5d273be76603399e88cf57f2605004bf 364 365 sounds/ding.wav 80856 18e639792d3767436ac6955eb60e4f54 365 library/_socket.pyc 546 287b7b44eacfe6d10ec0f114f2f212c2366 library/_socket.pyc 546 e4eede84eacb1ffb8a725cfda432fb76 366 367 library/encodings/hex_codec.pyc 3520 a8b8d5b7c8810379c7007bcbc253951c 367 library/mlx/checks.pyc 58 364 a10d1aef350f56c74fc4cdfe04bedfcd368 library/mlx/checks.pyc 58567 d6c6eebab7a0a19c5f33007ce8b4c3e5 368 369 doc/manual/en/statusIcon2.png 5875 71fc121823dee0a4c00715fac1b5665c 369 library/mlx/sound.pyc 6326 fdf54890d13eb07e1bd1f8c490d61893370 library/mlx/sound.pyc 10001 78655c3a51de983d8e550934c05e1f30 370 371 doc/manual/en/pirepViewer.png 25098 7c545e70b995ac0f9fcae93fe5d0e899 371 372 library/encodings/aliases.pyc 8750 75c22196420d0157fec085d285947a71 372 library/glib/_glib.pyc 555 7e925b500c71e85d074b65a6a541e9ec373 library/glib/_glib.pyc 555 465b8ddc57386c9f7ef448d9cb802abd 373 374 library/libpangowin32-1.0-0.dll 108945 d07f128828225b7cc38e9e590eb3ba8a 374 375 library/encodings/iso8859_10.pyc 2693 5e6cc8f721486ddbc1c99da285e13191 375 library/win32api.pyc 549 64dda4ce6ef6ed316210bf9a3679f919376 library/win32api.pyc 549 efb111e7d3dae80fd15bf47d026e6114 376 377 library/gobject/constants.pyc 1957 2e9cdc605e7c449ef4fc23f56128acec 377 378 library/libgtk-win32-2.0-0.dll 4938115 cc6dca192aca6f91bd96a5b5f86e036d 378 379 doc/manual/hu/calloutsEditor.png 16026 fede870894a85e5d21ca16a026aa6a98 380 library/mlx/xplane.pyc 66878 9ee20e3efd68fd414ca3b4716c1f2985 379 381 library/ssl.pyc 13785 d90c880699ecbedb3182f556b9733868 380 382 library/tempfile.pyc 18526 e2cc2d63c29e15f20ee9325e790643a3 … … 419 421 library/libgthread-2.0-0.dll 44287 7ad6f303082b382bff7bafbab246c61f 420 422 library/glib._glib.pyd 58368 0de636503e43c4eb00e80927bc9bda97 421 library/mlx/config.pyc 29918 40fff6f2c4a35ff492efe8781cbf5ff8422 library/atk.pyc 534 8407c9b900936751dde6b616e124a504423 library/mlx/config.pyc 30521 406992cc40c69fc2054e02d516088ba9 424 library/atk.pyc 534 7e987d4ee2de16ac0050d9e1944a860a 423 425 library/gio._gio.pyd 263168 acb8c95fdc391079bebdf7d8685b0dbc 424 426 library/encodings/cp861.pyc 7868 c97a8970ce4d9f40cbafbea6576fbdca … … 430 432 library/__future__.pyc 4177 43d264d951ac2085334c7b9dd4558595 431 433 library/logging/__init__.pyc 54813 7bcdf2e8da474f5e94d8e499f6fc3ed4 432 runmlx.exe 6 4000 c7dc94ee996f138cad50db207cebf391434 runmlx.exe 63488 3060aa0ed73648edc26992e224568352 433 435 library/optparse.pyc 51253 39594a40bc1222173d57b7d5740e3d92 434 library/mlx/fs.pyc 11 756 0d3bccf67fe41e1bdc60c718ee0388fa436 library/mlx/fs.pyc 11803 268cda55420c4ce0750029ea203155e6 435 437 doc/manual/en/takeoff.png 26128 63fb0227347eba88fe4f108d730dc8c0 436 438 library/unittest/result.pyc 7444 aefbb3cc79c0ff17787ce84faed7f5e8 … … 443 445 library/glib/option.pyc 11891 bd90183c75d8f473ecf653e3d63a27f9 444 446 library/StringIO.pyc 11100 f4eb4a2bb3d6fb0af925681c5375c673 445 library/pango.pyc 540 026b1be89c67b8c07e97a8bd88b348ca447 library/pango.pyc 540 1b3d8d42905b120b95525147e2fd4b0a 446 448 Microsoft.VC90.CRT/msvcp90.dll 568832 6de5c66e434a9c1729575763d891c6c2 447 449 library/sre_parse.pyc 18380 fe2376a101668be1124f9ee316662bab -
locale/en/mlx.po
r508 r509 470 470 msgid "connect_gate" 471 471 msgstr "Gate:" 472 473 msgid "connect_sim" 474 msgstr "Simulator:" 475 476 msgid "connect_sim_msfs" 477 msgstr "_MS FS" 478 479 msgid "connect_sim_xplane" 480 msgstr "_X-Plane" 472 481 473 482 msgid "button_connect" -
locale/hu/mlx.po
r508 r509 473 473 msgstr "Kapu:" 474 474 475 msgid "connect_sim" 476 msgstr "Szimulátor:" 477 478 msgid "connect_sim_msfs" 479 msgstr "_MS FS" 480 481 msgid "connect_sim_xplane" 482 msgstr "_X-Plane" 483 475 484 msgid "button_connect" 476 485 msgstr "K_apcsolódás" -
setup.py
r378 r497 66 66 package_dir = { "" : "src" }, 67 67 packages = ["mlx", "mlx.gui"], 68 requires = ["pyuipc" ],68 requires = ["pyuipc", "xplra"], 69 69 windows = [{ "script" : "runmlx.py", 70 70 "icon_resources" : [(1, "logo.ico")]}, -
src/mlx/checks.py
r480 r496 957 957 """Check if the fault condition holds.""" 958 958 if flight.stage==const.STAGE_CRUISE: 959 bankLimit = 30 959 isDH8DXplane = flight.aircraftType==const.AIRCRAFT_DH8D and \ 960 (flight.fsType==const.SIM_XPLANE10 or 961 flight.fsType==const.SIM_XPLANE9) 962 bankLimit = 35 if isDH8DXplane else 30 960 963 elif flight.stage in [const.STAGE_TAKEOFF, const.STAGE_CLIMB, 961 964 const.STAGE_DESCENT, const.STAGE_LANDING]: … … 968 971 def logFault(self, flight, aircraft, logger, oldState, state): 969 972 """Log the fault.""" 973 message = "Bank too steep (%.1f)" % (state.bank,) 970 974 flight.handleFault(BankChecker, state.timestamp, 971 FaultChecker._appendDuring(flight, "Bank too steep"),975 FaultChecker._appendDuring(flight, message), 972 976 2) 973 977 -
src/mlx/config.py
r486 r503 236 236 self._pirepAutoSave = False 237 237 238 self._defaultMSFS = os.name=="nt" 239 238 240 self._enableSounds = not secondaryInstallation 239 241 … … 471 473 if pirepAutoSave!=self._pirepAutoSave: 472 474 self._pirepAutoSave = pirepAutoSave 475 self._modified = True 476 477 @property 478 def defaultMSFS(self): 479 """Get if the default simulator type is MS FS.""" 480 return self._defaultMSFS 481 482 @defaultMSFS.setter 483 def defaultMSFS(self, defaultMSFS): 484 """Set if the default simulator type is MS FS.""" 485 if defaultMSFS!=self._defaultMSFS: 486 self._defaultMSFS = defaultMSFS 473 487 self._modified = True 474 488 … … 704 718 ApproachCallouts.fromConfig(config, aircraftType) 705 719 720 self._defaultMSFS = self._getBoolean(config, "general", 721 "defaultMSFS", os.name=="nt") 722 706 723 self._modified = False 707 724 … … 746 763 "yes" if self._pirepAutoSave else "no") 747 764 765 config.set("general", "defaultMSFS", 766 "yes" if self._defaultMSFS else "no") 767 748 768 config.add_section(Config._messageTypesSection) 749 769 for messageType in const.messageTypes: … … 890 910 print " pirepAutoSave:", self._pirepAutoSave 891 911 912 print " defaultMSFS:", self._defaultMSFS 913 892 914 print " enableSounds:", self._enableSounds 893 915 -
src/mlx/const.py
r506 r509 11 11 12 12 ## The version of the program 13 VERSION="0.19 "13 VERSION="0.19xpl" 14 14 15 15 #------------------------------------------------------------------------------- -
src/mlx/flight.py
r391 r430 86 86 """Get the flight stage.""" 87 87 return self._stage 88 89 @property 90 def fsType(self): 91 """Get the flight simulator type.""" 92 return self._gui.fsType 88 93 89 94 @property -
src/mlx/fs.py
r408 r501 3 3 from sound import startSound 4 4 5 import os 6 5 7 import fsuipc 8 import xplane 9 6 10 import threading 7 11 import time … … 56 60 FIXME: add info 57 61 """ 58 assert type in [const.SIM_MSFS9, const.SIM_MSFSX], \ 59 "Only MS Flight Simulator 2004 and X are supported" 60 return fsuipc.Simulator(connectionListener, connectAttempts = 3) 62 if type in [const.SIM_MSFS9, const.SIM_MSFSX]: 63 return fsuipc.Simulator(connectionListener, connectAttempts = 3) 64 elif type in [const.SIM_XPLANE9, const.SIM_XPLANE10]: 65 return xplane.Simulator(connectionListener, connectAttempts = 3) 66 else: 67 "Only MS Flight Simulator 2004 and X or X-Plane 9 and 10 are supported" 61 68 62 69 #------------------------------------------------------------------------------- … … 90 97 with self._requestCondition: 91 98 self._toQuit = True 92 self._requestCondition.notif ty()99 self._requestCondition.notify() 93 100 self.join() 94 101 -
src/mlx/gui/flight.py
r436 r503 880 880 completedHelp = xstr("connect_chelp")) 881 881 882 self._selectSimulator = os.name=="nt" or "FORCE_SELECT_SIM" in os.environ 883 882 884 alignment = gtk.Alignment(xalign = 0.5, yalign = 0.5, 883 885 xscale = 0.0, yscale = 0.0) 884 886 885 table = gtk.Table( 5, 2)887 table = gtk.Table(7 if self._selectSimulator else 5, 2) 886 888 table.set_row_spacings(4) 887 889 table.set_col_spacings(16) … … 949 951 labelAlignment.add(self._departureGate) 950 952 table.attach(labelAlignment, 1, 2, 4, 5) 953 954 if self._selectSimulator: 955 labelAlignment = gtk.Alignment(xalign=1.0, xscale=0.0, yalign=0.5) 956 label = gtk.Label(xstr("connect_sim")) 957 labelAlignment.add(label) 958 table.attach(labelAlignment, 0, 1, 5, 7) 959 960 selectAlignment = gtk.Alignment(xalign=0.0, xscale=0.0, yalign=0.5) 961 962 selectBox = gtk.HBox() 963 if pygobject: 964 self._selectMSFS = \ 965 gtk.RadioButton.new_with_mnemonic_from_widget(None, 966 xstr("connect_sim_msfs")) 967 else: 968 self._selectMSFS = gtk.RadioButton(None, 969 xstr("connect_sim_msfs")) 970 971 selectBox.pack_start(self._selectMSFS, False, False, 0); 972 973 if pygobject: 974 self._selectXPlane = \ 975 gtk.RadioButton.new_with_mnemonic_from_widget(self._selectMSFS, 976 xstr("connect_sim_xplane")) 977 else: 978 self._selectXPlane = gtk.RadioButton(self._selectMSFS, 979 xstr("connect_sim_xplane")) 980 981 selectBox.pack_start(self._selectXPlane, False, False, 8); 982 983 selectAlignment.add(selectBox) 984 table.attach(selectAlignment, 1, 2, 5, 7) 985 951 986 952 987 self.addCancelFlightButton() … … 982 1017 self._departureGate.set_markup(gate) 983 1018 1019 if self._selectSimulator: 1020 config = self._wizard.gui.config 1021 self._selectMSFS.set_active(config.defaultMSFS) 1022 self._selectXPlane.set_active(not config.defaultMSFS) 1023 984 1024 def finalize(self): 985 1025 """Finalize the page.""" … … 996 1036 def _connectClicked(self, button): 997 1037 """Called when the Connect button is pressed.""" 998 self._wizard._connectSimulator() 1038 if self._selectSimulator: 1039 simulatorType = const.SIM_MSFS9 if self._selectMSFS.get_active() \ 1040 else const.SIM_XPLANE10 1041 else: 1042 simulatorType = const.SIM_MSFS9 if os.name=="nt" \ 1043 else const.SIM_XPLANE10 1044 1045 config = self._wizard.gui.config 1046 config.defaultMSFS = simulatorType == const.SIM_MSFS9 1047 config.save() 1048 1049 self._wizard._connectSimulator(simulatorType) 999 1050 1000 1051 def _forwardClicked(self, button): … … 3494 3545 self.gui.rtoToggled(indicated) 3495 3546 3496 def _connectSimulator(self ):3547 def _connectSimulator(self, simulatorType): 3497 3548 """Connect to the simulator.""" 3498 self.gui.connectSimulator(self._bookedFlight.aircraftType) 3549 self.gui.connectSimulator(self._bookedFlight.aircraftType, 3550 simulatorType) 3499 3551 3500 3552 def _arrivalMETARCallback(self, returned, result): -
src/mlx/gui/gui.py
r491 r501 69 69 self._flight = None 70 70 self._simulator = None 71 self._fsType = None 71 72 self._monitoring = False 72 73 … … 208 209 209 210 @property 211 def fsType(self): 212 """Get the flight simulator type.""" 213 return self._fsType 214 215 @property 210 216 def entranceExam(self): 211 217 """Get whether an entrance exam is about to be taken.""" … … 428 434 self._wizard.connected(fsType, descriptor) 429 435 self._reconnecting = False 436 self._fsType = fsType 430 437 self._listenHotkeys() 431 438 … … 512 519 """Reset the GUI.""" 513 520 self._disconnect() 521 522 self._simulator = None 514 523 515 524 self._flightInfo.reset() … … 887 896 self._stdioStartingLine = False 888 897 889 def connectSimulator(self, aircraftType ):898 def connectSimulator(self, aircraftType, simulatorType): 890 899 """Connect to the simulator for the first time.""" 891 900 self._logger.reset() … … 898 907 899 908 if self._simulator is None: 900 self._simulator = fs.createSimulator( const.SIM_MSFS9, self)909 self._simulator = fs.createSimulator(simulatorType, self) 901 910 fs.setupMessageSending(self.config, self._simulator) 902 911 self._setupTimeSync() -
src/mlx/gui/monitor.py
r480 r496 226 226 table.attach(label, 0, 1, 8, 9) 227 227 table.attach(self._qnh, 1, 2, 8, 9) 228 229 (label, self._cog) = self._createLabeledEntry("CoG:", 7) 230 table.attach(label, 2, 3, 8, 9) 231 table.attach(self._cog, 3, 4, 8, 9) 228 232 229 233 alignment.add(table) … … 312 316 self._adf2.set_text("-") 313 317 self._qnh.set_text("-") 318 self._cog.set_text("-") 314 319 else: 315 320 self._timestamp.set_text(time.strftime("%H:%M:%S", … … 386 391 self._gearControlDown.set_sensitive(aircraftState.gearControlDown) 387 392 self._gearsDown.set_sensitive(aircraftState.gearsDown) 388 self._spoilersArmed.set_sensitive(aircraftState.spoilersArmed )393 self._spoilersArmed.set_sensitive(aircraftState.spoilersArmed is True) 389 394 self._spoilersExtension.set_text("%.0f" % (aircraftState.spoilersExtension,)) 390 395 self._windSpeed.set_text("%.0f" % (aircraftState.windSpeed,)) … … 404 409 self._adf1.set_text("-" if aircraftState.adf1 is None else aircraftState.adf1) 405 410 self._adf2.set_text("-" if aircraftState.adf2 is None else aircraftState.adf2) 411 self._cog.set_text("%.2f%%" % (aircraftState.cog*100.0,)) 406 412 407 413 #------------------------------------------------------------------------------ -
src/mlx/sound.py
r401 r422 166 166 def startSound(name, finishCallback = None, extra = None): 167 167 """Start playing back the given sound. 168 168 169 169 name should be the name of a sound file relative to the sound directory 170 170 given in initializeSound.""" 171 171 _thread.requestSound(name, finishCallback = finishCallback, 172 172 extra = extra) 173 173 174 174 #------------------------------------------------------------------------------ 175 175 176 176 else: # os.name!="nt" 177 def initializeSound(soundsDirectory): 178 """Initialize the sound handling with the given directory containing 179 the sound files.""" 180 pass 181 182 def startSound(name, finishCallback = None, extra = None): 183 """Start playing back the given sound. 184 185 FIXME: it does not do anything currently, but it should.""" 186 print "sound.startSound:", name 177 import threading 178 try: 179 import pyglet 180 181 class SoundThread(threading.Thread): 182 """A thread executing the pyglet event loop that directs the 183 playback of the sound files.""" 184 class Player(pyglet.media.ManagedSoundPlayer): 185 """Player which handles the end-of-stream condition 186 properly.""" 187 188 def __init__(self, finishCallback, extra): 189 """Construct the player with the given data.""" 190 super(SoundThread.Player, self).__init__() 191 192 self._finishCallback = finishCallback 193 self._extra = extra 194 195 def _on_eos(self): 196 if self._finishCallback is not None: 197 self._finishCallback(True, self._extra) 198 return super(SoundThread.Player, self)._on_eos() 199 200 class EventLoop(pyglet.app.EventLoop): 201 """Own implementation of the event loop that collects the 202 requested sound files and plays them.""" 203 204 def __init__(self, soundsDirectory): 205 """Construct the event loop.""" 206 super(SoundThread.EventLoop, self).__init__() 207 208 self._soundsDirectory = soundsDirectory 209 210 self._lock = threading.Lock() 211 self._requestedSounds = [] 212 213 def startSound(self, name, finishCallback, extra): 214 """Add the sound with the given name""" 215 with self._lock: 216 path = os.path.join(self._soundsDirectory, name) 217 self._requestedSounds.append( (path, 218 finishCallback, extra) ) 219 220 def idle(self): 221 """The idle callback.""" 222 with self._lock: 223 requestedSounds = self._requestedSounds 224 self._requestedSounds = [] 225 226 for (path, finishCallback, extra) in requestedSounds: 227 try: 228 media = pyglet.media.load(path) 229 player = SoundThread.Player(finishCallback, extra) 230 player.queue(media) 231 player.play() 232 except Exception, e: 233 print "mlx.SoundThread.EventLoop.idle: " + str(e) 234 if finishCallback is not None: 235 finishCallback(False, extra) 236 237 timeout = super(SoundThread.EventLoop, self).idle() 238 return 0.1 if timeout is None else min(timeout, 0.1) 239 240 def __init__(self, soundsDirectory): 241 """Construct the sound playing thread with the given 242 directory.""" 243 super(SoundThread, self).__init__() 244 245 self.daemon = True 246 self.eventLoop = SoundThread.EventLoop(soundsDirectory) 247 248 def run(self): 249 """Run the event loop.""" 250 self.eventLoop.run() 251 252 def startSound(self, name, finishCallback = None, extra = None): 253 """Start the playback of the given sound.""" 254 self.eventLoop.startSound(name, finishCallback, extra) 255 256 _thread = None 257 258 def initializeSound(soundsDirectory): 259 """Initialize the sound handling with the given directory containing 260 the sound files.""" 261 global _thread 262 _thread = SoundThread(soundsDirectory) 263 _thread.start() 264 265 266 def startSound(name, finishCallback = None, extra = None): 267 """Start playing back the given sound.""" 268 _thread.startSound(name, finishCallback = finishCallback, 269 extra = extra) 270 271 except: 272 print "The pyglet library is missing from your system. It is needed for sound playback on Linux" 273 def initializeSound(soundsDirectory): 274 """Initialize the sound handling with the given directory containing 275 the sound files.""" 276 pass 277 278 def startSound(name, finishCallback = None, extra = None): 279 """Start playing back the given sound. 280 281 FIXME: it does not do anything currently, but it should.""" 282 print "sound.startSound:", name 187 283 188 284 #------------------------------------------------------------------------------ … … 192 288 def callback(result, extra): 193 289 print "callback", result, extra 194 290 195 291 initializeSound("e:\\home\\vi\\tmp") 196 292 startSound("malev.mp3", finishCallback = callback, extra="malev.mp3")
Note:
See TracChangeset
for help on using the changeset viewer.