Changeset 166:e4ba22b7a13b
- Timestamp:
- 05/10/12 18:17:18 (13 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
MLXMANIFEST
r158 r166 3 3 library/encodings/euc_jis_2004.pyc 1694 e12bbd059d4fd595cf4be5440ab439c2 4 4 library/fnmatch.pyc 3414 4d50000f78e903598af06ef1c5cfb3ef 5 library/gtk/_gtk.pyc 549 324e9bf59f307c6f34abcd2e105af2a65 library/gtk/_gtk.pyc 549 cce831fbbce661780e4aa4aee4005355 6 6 library/encodings/cp858.pyc 7591 02054a0b8e91b9758826eb70cddf096f 7 7 library/encodings/cp1254.pyc 2678 17ff2ac86f90886d5c73ed789f0499f3 … … 12 12 library/unittest/signals.pyc 2126 d574469ae3f8e3c3c6054c48e8ff6fe1 13 13 library/pdb.pyc 41336 cca4477d622e897335b3f0cecb667ff4 14 runmlx.exe 64000 8bcbc8f4c68b590c5ef010ad9580e1aa14 runmlx.exe 64000 488633e152c81c000e315cd0d74d6474 15 15 library/xml/sax/xmlreader.pyc 17862 0362ded7016d21cdd85aea1170ebdda1 16 16 library/encodings/latin_1.pyc 2111 52427573ccbfd06220b67d5a9dd1376e … … 58 58 library/encodings/koi8_r.pyc 2700 fff1b35002b9e938b7ea6fd0fbe824ae 59 59 library/mlx/gui/statusbar.pyc 4616 2909310114db08ca8d3162e70ef22519 60 library/mlx/const.pyc 4972 de3904c521b27597d548bbc96ff1405061 library/mlx/fsuipc.pyc 53 293 3e9f6032fd366882d0982f6fe4f4841860 library/mlx/const.pyc 4972 8b05e5b96077ed4c99eebd228f48db69 61 library/mlx/fsuipc.pyc 53402 5c12463c240c8e90844490a9ff850168 62 62 library/encodings/punycode.pyc 7570 335ff94e207934ae64e6f5fc07a5cacc 63 63 library/encodings/shift_jisx0213.pyc 1710 1ec0383aafb1dcadb5f9b6afff16eb7f … … 95 95 library/encodings/iso2022_jp_2004.pyc 1723 66376e788f3819e781897268c1100986 96 96 library/encodings/cp866.pyc 8103 f36418dcf93b17b3ced63bd544f44159 97 library/gio/_gio.pyc 549 b623cbe0dd5f229d582bb5584155736197 library/gio/_gio.pyc 549 014ddc5612d5ab5e06a303cfa0bcf0e9 98 98 library/encodings/cp437.pyc 7874 63f1278c0a66129c6fb4f504d6b61b66 99 99 library/mimetools.pyc 7837 c9accd6ef795bf71c90630be0161cadc … … 123 123 library/encodings/cp864.pyc 7999 ca90afae086cb6b8f69b8419cc3cd1cb 124 124 library/pyexpat.pyd 152576 5a82e9ec95005aca6130751e5b961cc3 125 library/pyexpat.pyc 546 e0bf8ea119e513f8a72142c6d04852e7125 library/pyexpat.pyc 546 28db9f4e93d106aa021b40423032f06b 126 126 library/unittest/loader.pyc 10884 591a785be23fba35582ce33bdd3d7acd 127 127 library/ftplib.pyc 32043 5a1925388a0874e459aed6891f4cf0c1 … … 130 130 library/unittest/suite.pyc 9838 bf2c79bd4a6b6032f1ea53fa4908748f 131 131 library/encodings/mac_arabic.pyc 7824 820deef79b02e1f7e52eb18e9be655bf 132 library/mlx/gui/prefs.pyc 130 30 3c3d1fe199deb11859b67dc920c0e13d132 library/mlx/gui/prefs.pyc 13053 0d5dbe8afbb8fab7b2be1840781e8db2 133 133 library/encodings/tis_620.pyc 2748 5969b4db4f967b11ae7992cdfbf5890e 134 134 library/encodings/cp855.pyc 8071 0a4259ba854c24186f2ce61d85883b4a … … 157 157 library/encodings/iso8859_10.pyc 2693 5e6cc8f721486ddbc1c99da285e13191 158 158 library/mlx/config.pyc 12010 7a138f5b96c513912e8e0686f5c5fbaa 159 library/atk.pyc 534 f a86d691ae7b8d042fd5b3c33549cabe159 library/atk.pyc 534 fe3e307a78a9cc4bce684d7bdf816dff 160 160 library/gio._gio.pyd 263168 acb8c95fdc391079bebdf7d8685b0dbc 161 161 library/encodings/cp861.pyc 7868 c97a8970ce4d9f40cbafbea6576fbdca … … 174 174 library/encodings/iso8859_6.pyc 2723 c8f9aa14a6a2ebf05d977317114bc65d 175 175 library/libpango-1.0-0.dll 333729 5a14efd93ee27cfe960220fe4a904911 176 library/mlx/gui/gui.pyc 363 41 6eeaa07fcbd8a89bf7e598087c666ee1176 library/mlx/gui/gui.pyc 36364 2050500c35abdb515d17daf894d29320 177 177 library/stat.pyc 2503 d3b6dc7a54e705219f04d0be75a212de 178 library/gobject/_gobject.pyc 573 a37d7d8cb4f70b0f09ab615b993ea70c178 library/gobject/_gobject.pyc 573 891881fc921b55eb6436b850d5bf668a 179 179 library/encodings/utf_7.pyc 1747 2beeb059236527197d6c640396476ce8 180 180 library/atexit.pyc 2083 595a09be339c73c3c02e378d99325d2a … … 184 184 library/encodings/iso8859_1.pyc 2678 f09ec3b7f6a348cbd7f7286b60572bd0 185 185 library/pangocairo.pyd 17920 5fc69a7d29a6d3127710c64de440daa4 186 library/pangocairo.pyc 555 9a662f4c2634358c694d6833a0553304186 library/pangocairo.pyc 555 f23a6733ab8c9132c1c6791714240df2 187 187 library/sre.pyc 499 92bb633daa0bab6550ec0e3677673b5b 188 188 library/tokenize.pyc 13565 354d02cd79df187a28c1851a1e3bad96 189 library/mlx/gui/flight.pyc 85 395 f5ec8303901df37eedc2c0667a087c07189 library/mlx/gui/flight.pyc 85418 86f3c4ba458413deabd618aa67421374 190 190 library/lib/gtk-2.0/2.10.0/engines/libwimp.dll 97984 a5bbbe46e1363aba9020a76f2d58e9d6 191 191 library/email/quoprimime.pyc 8590 f6c7a8ad81d44037dd074f4871053dab … … 195 195 library/gtk._gtk.pyd 1882624 bbb1d1e41bbebc6abf69bed719d50497 196 196 library/_hashlib.pyd 287232 a1a18de0644f481749fcbcf26005eeaf 197 library/_hashlib.pyc 549 b 44386b428f16d1b172e6b57cbc6e8de197 library/_hashlib.pyc 549 b0f9228e2299a7272830effaa43a4377 198 198 library/copy.pyc 11674 30d1745c5e38ab170f8a0486fbebf305 199 199 library/unittest/result.pyc 7444 aefbb3cc79c0ff17787ce84faed7f5e8 … … 207 207 library/ctypes/__init__.pyc 18846 2bd183962453ae93d6887b303d3fd338 208 208 library/mlx/acars.pyc 1690 06ac9e4ad5cc96b831a3c69868e6145a 209 library/cairo/_cairo.pyc 561 5785a244ecd7cfe65c2a27738ab4de48209 library/cairo/_cairo.pyc 561 6622b2b68a65815534f741644f28467a 210 210 library/warnings.pyc 12666 9788b5f45765e8204e04c820f2711094 211 211 library/encodings/iso2022_jp_1.pyc 1699 faed9d5747e982cec9fa8b3ad8e1de26 … … 225 225 library/bz2.pyd 76800 1ca9ececd2c84b80996fe632627f857f 226 226 library/encodings/iso8859_16.pyc 2695 85e819a29dec2b601ce978dcd5a040fc 227 library/bz2.pyc 534 96169408e5e34b63e6395ee84d6400de227 library/bz2.pyc 534 2dacc1f67ce6f4b8bef18fddbc30c9de 228 228 library/email/utils.pyc 8840 a7be428df6fddee6121cfce55382d1f8 229 library/_ssl.pyc 537 daeef57719226ef9d0bc44ad8a6b06ed229 library/_ssl.pyc 537 a5ad680df66cce9aa48b31a6396e6d12 230 230 library/encodings/cp1250.pyc 2676 c92e287a2aa6a1c924df287d826aa3b7 231 231 library/_ssl.pyd 720896 90826a140137efd0d806038828e16f8e 232 library/pango.pyc 540 1e5a976d1817680edb7c1c21ff48892d232 library/pango.pyc 540 e3fcfc3d867e92c2c7416ef6dc684d58 233 233 library/glib/__init__.pyc 187 d44c8c2772b263a36726ac0dcfc04b42 234 234 library/pango.pyd 111616 c934763bdf125c3dc92b56db817001d4 235 235 library/libgobject-2.0-0.dll 341594 356d697647a480562c4e2e921b13f8ed 236 mlxupdate.exe 19456 d8eadc14204f8dd84f8ac703de608f02236 mlxupdate.exe 19456 e4a2240eacdc2647c90656899310c6f8 237 237 library/email/errors.pyc 3229 cdb78ab237e195ad69f059128bc03b1d 238 238 library/linecache.pyc 3091 666e6f81b0ea9a7637f8068493f738d5 … … 250 250 library/encodings/mbcs.pyc 1883 2213911a7dd0deada6799b63e18b695b 251 251 library/unicodedata.pyd 688128 c856c31a03dc892e4f2aee93d0bfee44 252 library/unicodedata.pyc 558 b025c9579740ae143839a018b5da0e79252 library/unicodedata.pyc 558 4289806e666e46e891fceb60a20b894e 253 253 library/encodings/cp1256.pyc 2675 c1bf26ed9c9b5ee0eec495138993cffb 254 254 library/email/base64mime.pyc 5221 c536d6f0c03f029bba77f15ef6ba3d99 … … 309 309 library/encodings/koi8_u.pyc 2686 b7e5a52eaaaf6b340075b40dc7596f42 310 310 library/atk.pyd 208384 ebe7f0929eac23a3205d17d69906e172 311 library/_ctypes.pyc 546 9f86310b686c3061d75bdd32ec1f4ff8311 library/_ctypes.pyc 546 3b2a84ea4d020180b585c738bf78cec1 312 312 library/mlx/update.pyc 16214 1927a43ac4580370198b6d2f091f835f 313 313 library/subprocess.pyc 38648 c9f749db06dfc9fb32079de51d6efd01 314 314 library/encodings/utf_16_le.pyc 1854 dfa68705c26fd303adfc7ce3322166f2 315 315 library/_socket.pyd 38400 5d273be76603399e88cf57f2605004bf 316 library/_socket.pyc 546 ba16b5802151bed5e05fe83d11f2b92c316 library/_socket.pyc 546 7b1bd8f25e4e763ce7a2163c657aa4d3 317 317 library/encodings/hex_codec.pyc 3520 a8b8d5b7c8810379c7007bcbc253951c 318 318 library/tempfile.pyc 18526 e2cc2d63c29e15f20ee9325e790643a3 319 library/glib/_glib.pyc 555 6157f7df91d682da07475a99f05d19b2320 library/win32api.pyc 549 d33834386641fd02adce67fe64a1cd2a319 library/glib/_glib.pyc 555 b1fd18ba441a3ec8e55f93ebe9aa659a 320 library/win32api.pyc 549 3228c4576e9659f1af7ff11114e2a90c 321 321 library/encodings/iso8859_13.pyc 2696 f901ae0bbcfbb78f0c1783e89b2e2dc5 322 322 library/zlib1.dll 100352 d90dad5eea33a178bac56fff2847d4c2 … … 330 330 library/xml/sax/saxutils.pyc 12382 32ed045b3b520234ebea6a508a6569fe 331 331 library/encodings/mac_turkish.pyc 2739 1682e228ddfd2e74e3ccaee0b65e7261 332 library/mlx/pyuipc_sim.pyc 43 532 fe15a7610a4058a4059a09bb2e91bccf332 library/mlx/pyuipc_sim.pyc 43607 eecadfd81467b977dc4a4ae2b05c487f 333 333 library/encodings/cp875.pyc 2636 c72faa5d1cb6105ae81c971448fea479 334 334 library/socket.pyc 15488 35f8eb455d6d8df8e19826d1dd7193f2 335 library/select.pyc 543 bde5d0dccea956e8408f692d35755f8b335 library/select.pyc 543 7c963d4085711e3cb6cb745bf936ef58 336 336 library/encodings/iso2022_jp.pyc 1683 40c2b92127f99452f84b250c2b4b2cda 337 337 library/libgthread-2.0-0.dll 44287 7ad6f303082b382bff7bafbab246c61f 338 338 library/select.pyd 11776 d90bf525f9f6c9c3aa6532fa6e569b4f 339 library/pyuipc.pyc 543 96b93d674c4f8ee6a8feac09af40b25f339 library/pyuipc.pyc 543 2d50c10362e28900a8761a170f9c5061 340 340 library/pyuipc.pyd 129220 58cdce7763687f456383c93fd3404d9f 341 341 library/encodings/johab.pyc 1638 5346c11a863ffbcfb21aba8f1d2236b7 -
notes.txt
r107 r166 41 41 Alt+K: Kapuk 42 42 43 ------------------------------------------------------------------------------- 44 45 Sounds 46 ------ 47 48 - sikoly.mp3: vs<-6000 | vs>6000, and is not playing 49 50 - board.mp3: stage==BOARDING, not played yet, and pilot either pressed 51 hot key, or !pilotControlsSounds and 10s after the start of the boarding 52 53 - malev.mp3: stage==PUSHANDTAXI, pilotControlsSounds && hotkey || 54 !pilotControlsSounds && gs>5, 55 played only when board.mp3 was finished (if started at all), 56 followed by XXXtaxi.mp3, when finished 57 58 - cpt_takeoff.mp3: stage==TAKEOFF && (langingLights on || gs>80) 59 60 - TOC.mp3: stage==CRUISE && (pilotControlsSounds && hotkey || 61 !pilotControlsSounds) 62 63 - TOD.mp3: stage==DESCEND && (pilotControlsSounds && hotkey || 64 !pilotControlsSounds && altitude<15000) 65 66 - TaxiAfterLand.mp3: stage==TAXIAFTERLAND && (pilotControlsSounds && hotkey || 67 !pilotControlsSounds && timeSinceStage>10) 68 69 - (notnormal.mp3): approachCallouts && stage in [DESCEND, LANDING, TAXIAFTERLAND] && 70 gs<40 && flown distance<0.404 71 72 - (2500.mp3): approachCallouts && stage in [DESCEND, LANDING, TAXIAFTERLAND] && 73 radioAltitude<2500 74 75 - (700.mp3): approachCallouts && stage in [DESCEND, LANDING, TAXIAFTERLAND] && 76 radioAltitude<700 77 78 - (1200.mp3): approachCallouts && stage in [DESCEND, LANDING, TAXIAFTERLAND] && 79 radioAltitude<1200 80 81 - (1800.mp3): approachCallouts && stage in [DESCEND, LANDING, TAXIAFTERLAND] && 82 radioAltitude<1800 83 84 - (500.mp3): approachCallouts && stage in [DESCEND, LANDING, TAXIAFTERLAND] && 85 radioAltitude<500 86 87 - (200.mp3): approachCallouts && stage in [DESCEND, LANDING, TAXIAFTERLAND] && 88 radioAltitude<200 89 90 - (20.mp3): approachCallouts && stage in [DESCEND, LANDING, TAXIAFTERLAND] && 91 radioAltitude<500 92 93 - (atTD.mp3): approachCallouts && stage in [DESCEND, LANDING, TAXIAFTERLAND] && 94 isOnTheGround 95 96 - taps.mp3: 2 sec after touchdown, if T/D rate<150 97 98 - cpt_landing.mp3: ???? 99 100 - notam.mp3: when the briefing window is displayed for the first time 101 102 - notify.wav: for VISIBILITY message if sounds are enabled for that 103 104 - speed.mp3: stage==LANDING, spoiler moves, speedbrake sound selected 105 106 - Checklists: 107 - there are directories named checklist_<type> 108 - each directory contains a file named checklist.txt which is a list of 109 the sound files comprising the check list 110 - if a check list set is enabled and selected, its items are played 111 on-by-one as the second hot key is pressed 112 113 -
src/mlx/config.py
r156 r166 20 20 _languageMap = { "en_GB" : "eng", 21 21 "hu_HU" : "hun" } 22 23 #------------------------------------------------------------------------------- 24 25 class Hotkey(object): 26 """A hotkey.""" 27 def __init__(self, ctrl = False, shift = False, key = "0"): 28 """Construct the hotkey.""" 29 self.ctrl = ctrl 30 self.shift = shift 31 self.key = key 32 33 def set(self, s): 34 """Set the hotkey from the given string.""" 35 self.ctrl = "C" in s[:-1] 36 self.shift = "S" in s[:-1] 37 self.key = s[-1] 38 39 def __eq__(self, other): 40 """Check if the given hotkey is equal to the other one.""" 41 return self.ctrl == other.ctrl and self.shift == other.shift and \ 42 self.key == other.key 43 44 def __str__(self): 45 """Construct the hotkey to a string.""" 46 s = "" 47 if self.ctrl: s += "C" 48 if self.shift: s += "S" 49 s += self.key 50 return s 22 51 23 52 #------------------------------------------------------------------------------- … … 44 73 45 74 self._pirepDirectory = None 46 75 76 self._enableSounds = True 77 78 self._pilotControlsSounds = True 79 self._pilotHotkey = Hotkey(ctrl = True, shift = False, key = "0") 80 81 #self._approachCallOuts = False 82 self._speedbrakeAtTD = True 83 84 self._enableChecklists = False 85 self._checklistHotkey = Hotkey(ctrl = True, shift = True, key = "0") 86 47 87 self._autoUpdate = True 48 88 self._updateURL = Config.DEFAULT_UPDATE_URL … … 196 236 self._messageTypeLevels[messageType]!=level: 197 237 self._messageTypeLevels[messageType] = level 238 self._modified = True 239 240 @property 241 def enableSounds(self): 242 """Get whether background sounds are enabled.""" 243 return self._enableSounds 244 245 @enableSounds.setter 246 def enableSounds(self, enableSounds): 247 """Set whether background sounds are enabled.""" 248 if enableSounds!=self._enableSounds: 249 self._enableSounds = enableSounds 250 self._modified = True 251 252 @property 253 def pilotControlsSounds(self): 254 """Get whether the pilot controls the background sounds.""" 255 return self._pilotControlsSounds 256 257 @pilotControlsSounds.setter 258 def pilotControlsSounds(self, pilotControlsSounds): 259 """Set whether the pilot controls the background sounds.""" 260 if pilotControlsSounds!=self._pilotControlsSounds: 261 self._pilotControlsSounds = pilotControlsSounds 262 self._modified = True 263 264 @property 265 def pilotHotkey(self): 266 """Get the pilot's hotkey.""" 267 return self._pilotHotkey 268 269 @pilotHotkey.setter 270 def pilotHotkey(self, pilotHotkey): 271 """Set the pilot's hotkey.""" 272 if pilotHotkey!=self._pilotHotkey: 273 self._pilotHotkey = pilotHotkey 274 self._modified = True 275 276 # @property 277 # def approachCallOuts(self): 278 # """Get whether the approach callouts should be played.""" 279 # return self._approachCallOuts 280 281 # @approachCallOuts.setter 282 # def approachCallOuts(self, approachCallOuts): 283 # """Set whether the approach callouts should be played.""" 284 # if approachCallOuts!=self._approachCallOuts: 285 # self._approachCallOuts = approachCallOuts 286 # self._modified = True 287 288 @property 289 def speedbrakeAtTD(self): 290 """Get whether the speedbrake sounds should be played at touchdown.""" 291 return self._speedbrakeAtTD 292 293 @speedbrakeAtTD.setter 294 def speedbrakeAtTD(self, speedbrakeAtTD): 295 """Set whether the speedbrake sounds should be played at touchdown.""" 296 if speedbrakeAtTD!=self._speedbrakeAtTD: 297 self._speedbrakeAtTD = speedbrakeAtTD 298 self._modified = True 299 300 @property 301 def enableChecklists(self): 302 """Get whether aircraft-specific checklists should be played.""" 303 return self._enableChecklists 304 305 @enableChecklists.setter 306 def enableChecklists(self, enableChecklists): 307 """Get whether aircraft-specific checklists should be played.""" 308 if enableChecklists!=self._enableChecklists: 309 self._enableChecklists = enableChecklists 310 self._modified = True 311 312 @property 313 def checklistHotkey(self): 314 """Get the checklist hotkey.""" 315 return self._checklistHotkey 316 317 @checklistHotkey.setter 318 def checklistHotkey(self, checklistHotkey): 319 """Set the checklist hotkey.""" 320 if checklistHotkey!=self._checklistHotkey: 321 self._checklistHotkey = checklistHotkey 198 322 self._modified = True 199 323 … … 254 378 self._messageTypeLevels[messageType] = \ 255 379 self._getMessageTypeLevel(config, messageType) 380 381 self._enableSounds = self._getBoolean(config, "sounds", 382 "enable", True) 383 self._pilotControlsSounds = self._getBoolean(config, "sounds", 384 "pilotControls", True) 385 self._pilotHotkey.set(self._get(config, "sounds", 386 "pilotHotkey", "C0")) 387 #self._approachCallOuts = self._getBoolean(config, "sounds", 388 # "approachCallOuts", False) 389 self._speedbrakeAtTD = self._getBoolean(config, "sounds", 390 "speedbrakeAtTD", True) 391 392 self._enableChecklists = self._getBoolean(config, "sounds", 393 "enableChecklists", False) 394 self._checklistHotkey.set(self._get(config, "sounds", 395 "checklistHotkey", "CS0")) 256 396 257 397 self._autoUpdate = self._getBoolean(config, "update", "auto", True) … … 298 438 config.set(Config._messageTypesSection, option, 299 439 const.messageLevel2string(level)) 440 441 config.add_section("sounds") 442 config.set("sounds", "enable", 443 "yes" if self._enableSounds else "no") 444 config.set("sounds", "pilotControls", 445 "yes" if self._pilotControlsSounds else "no") 446 config.set("sounds", "pilotHotkey", str(self._pilotHotkey)) 447 #config.set("sounds", "approachCallOuts", 448 # "yes" if self._approachCallOuts else "no") 449 config.set("sounds", "speedbrakeAtTD", 450 "yes" if self._speedbrakeAtTD else "no") 451 452 config.set("sounds", "enableChecklists", 453 "yes" if self._enableChecklists else "no") 454 config.set("sounds", "checklistHotkey", 455 str(self._checklistHotkey)) 300 456 301 457 config.add_section("update") -
src/mlx/gui/prefs.py
r164 r166 7 7 from mlx.i18n import xstr 8 8 import mlx.const as const 9 import mlx.config as config 9 10 10 11 import urlparse 12 13 #------------------------------------------------------------------------------ 14 15 class Hotkey(gtk.HBox): 16 """A widget to handle a hotkey.""" 17 def __init__(self, labelText, tooltips): 18 """Construct the hotkey widget. 19 20 labelText is the text for the label before the hotkey. 21 22 The tooltips parameter is an array of the tooltips for: 23 - the hotkey combo box, 24 - the control check box, and 25 - the shift check box.""" 26 super(Hotkey, self).__init__() 27 28 label = gtk.Label(labelText) 29 label.set_use_underline(True) 30 labelAlignment = gtk.Alignment(xalign = 0.0, yalign = 0.5, 31 xscale = 0.0, yscale = 0.0) 32 labelAlignment.add(label) 33 self.pack_start(labelAlignment, False, False, 8) 34 35 self._ctrl = gtk.CheckButton("Ctrl") 36 self._ctrl.set_tooltip_text(tooltips[1]) 37 self.pack_start(self._ctrl, False, False, 4) 38 39 self._shift = gtk.CheckButton("Shift") 40 self._shift.set_tooltip_text(tooltips[2]) 41 self.pack_start(self._shift, False, False, 4) 42 43 self._hotkeyModel = gtk.ListStore(str) 44 for keyCode in range(ord("0"), ord("9")) + range(ord("A"), ord("Z")): 45 self._hotkeyModel.append([chr(keyCode)]) 46 47 self._hotkey = gtk.ComboBox(model = self._hotkeyModel) 48 cell = gtk.CellRendererText() 49 self._hotkey.pack_start(cell, True) 50 self._hotkey.add_attribute(cell, 'text', 0) 51 self._hotkey.set_tooltip_text(tooltips[0]) 52 self.pack_start(self._hotkey, False, False, 4) 53 54 self._setting = False 55 56 def set(self, hotkey): 57 """Set the hotkey widget from the given hotkey.""" 58 self._setting = True 59 60 self._ctrl.set_active(hotkey.ctrl) 61 self._shift.set_active(hotkey.shift) 62 63 hotkeyModel = self._hotkeyModel 64 iter = hotkeyModel.get_iter_first() 65 while iter is not None and \ 66 hotkeyModel.get_value(iter, 0)!=hotkey.key: 67 iter = hotkeyModel.iter_next(iter) 68 69 if iter is None: 70 iter = hotkeyModel.get_iter_first() 71 72 self._hotkey.set_active_iter(iter) 73 74 self._setting = False 75 76 def get(self): 77 """Get a hotkey corresponding to the settings in the widghet.""" 78 79 key = self._hotkeyModel.get_value(self._hotkey.get_active_iter(), 0) 80 81 return config.Hotkey(ctrl = self._ctrl.get_active(), 82 shift = self._shift.get_active(), 83 key = key) 11 84 12 85 #------------------------------------------------------------------------------ … … 25 98 26 99 self._gui = gui 100 self._settingFromConfig = False 27 101 28 102 contentArea = self.get_content_area() … … 42 116 label.set_tooltip_text(xstr("prefs_tab_message_tooltip")) 43 117 notebook.append_page(messages, label) 118 119 sounds = self._buildSounds() 120 label = gtk.Label(xstr("prefs_tab_sounds")) 121 label.set_use_underline(True) 122 label.set_tooltip_text(xstr("prefs_tab_sounds_tooltip")) 123 notebook.append_page(sounds, label) 44 124 45 125 advanced = self._buildAdvanced() … … 66 146 def _fromConfig(self, config): 67 147 """Setup the dialog from the given configuration.""" 148 self._settingFromConfig = True 149 68 150 self._setLanguage(config.language) 69 151 self._hideMinimizedWindow.set_active(config.hideMinimizedWindow) … … 86 168 level == const.MESSAGELEVEL_BOTH) 87 169 88 self._togglingAutoUpdate = True 170 self._enableSounds.set_active(config.enableSounds) 171 self._pilotControlsSounds.set_active(config.pilotControlsSounds) 172 self._pilotHotkey.set(config.pilotHotkey) 173 #self._approachCallOuts.set_active(config.approachCallOuts) 174 self._speedbrakeAtTD.set_active(config.speedbrakeAtTD) 175 176 self._enableChecklists.set_active(config.enableChecklists) 177 self._checklistHotkey.set(config.checklistHotkey) 178 89 179 self._autoUpdate.set_active(config.autoUpdate) 90 self._togglingAutoUpdate = False91 180 if not config.autoUpdate: 92 181 self._warnedAutoUpdate = True 93 182 94 183 self._updateURL.set_text(config.updateURL) 184 185 self._settingFromConfig = False 95 186 96 187 def _toConfig(self, config): … … 115 206 level = const.MESSAGELEVEL_NONE 116 207 config.setMessageTypeLevel(messageType, level) 208 209 config.enableSounds = self._enableSounds.get_active() 210 config.pilotControlsSounds = self._pilotControlsSounds.get_active() 211 config.pilotHotkey = self._pilotHotkey.get() 212 #config.approachCallOuts = self._approachCallOuts.get_active() 213 config.speedbrakeAtTD = self._speedbrakeAtTD.get_active() 214 215 config.enableChecklists = self._enableChecklists.get_active() 216 config.checklistHotkey = self._checklistHotkey.get() 117 217 118 218 config.autoUpdate = self._autoUpdate.get_active() … … 330 430 331 431 return True 332 432 433 def _buildSounds(self): 434 """Build the page for the sounds.""" 435 mainAlignment = gtk.Alignment(xalign = 0.0, yalign = 0.0, 436 xscale = 1.0, yscale = 1.0) 437 mainAlignment.set_padding(padding_top = 8, padding_bottom = 8, 438 padding_left = 4, padding_right = 4) 439 440 mainBox = gtk.VBox() 441 mainAlignment.add(mainBox) 442 443 backgroundFrame = gtk.Frame(label = xstr("prefs_sounds_frame_bg")) 444 mainBox.pack_start(backgroundFrame, False, False, 4) 445 446 backgroundAlignment = gtk.Alignment(xalign = 0.0, yalign = 0.0, 447 xscale = 1.0, yscale = 0.0) 448 backgroundAlignment.set_padding(padding_top = 4, padding_bottom = 4, 449 padding_left = 4, padding_right = 4) 450 backgroundFrame.add(backgroundAlignment) 451 452 backgroundBox = gtk.VBox() 453 backgroundAlignment.add(backgroundBox) 454 455 self._enableSounds = gtk.CheckButton(xstr("prefs_sounds_enable")) 456 self._enableSounds.set_use_underline(True) 457 self._enableSounds.set_tooltip_text(xstr("prefs_sounds_enable_tooltip")) 458 self._enableSounds.connect("toggled", self._enableSoundsToggled) 459 alignment = gtk.Alignment(xalign = 0.0, yalign = 0.5, 460 xscale = 1.0, yscale = 0.0) 461 alignment.add(self._enableSounds) 462 backgroundBox.pack_start(alignment, False, False, 4) 463 464 self._pilotControlsSounds = gtk.CheckButton(xstr("prefs_sounds_pilotControls")) 465 self._pilotControlsSounds.set_use_underline(True) 466 self._pilotControlsSounds.set_tooltip_text(xstr("prefs_sounds_pilotControls_tooltip")) 467 backgroundBox.pack_start(self._pilotControlsSounds, False, False, 4) 468 469 self._pilotHotkey = Hotkey(xstr("prefs_sounds_pilotHotkey"), 470 [xstr("prefs_sounds_pilotHotkey_tooltip"), 471 xstr("prefs_sounds_pilotHotkeyCtrl_tooltip"), 472 xstr("prefs_sounds_pilotHotkeyShift_tooltip")]) 473 474 backgroundBox.pack_start(self._pilotHotkey, False, False, 4) 475 476 # self._approachCallOuts = gtk.CheckButton(xstr("prefs_sounds_approachCallOuts")) 477 # self._approachCallOuts.set_use_underline(True) 478 # self._approachCallOuts.set_tooltip_text(xstr("prefs_sounds_approachCallOuts_tooltip")) 479 # backgroundBox.pack_start(self._approachCallOuts, False, False, 4) 480 481 self._speedbrakeAtTD = gtk.CheckButton(xstr("prefs_sounds_speedbrakeAtTD")) 482 self._speedbrakeAtTD.set_use_underline(True) 483 self._speedbrakeAtTD.set_tooltip_text(xstr("prefs_sounds_speedbrakeAtTD_tooltip")) 484 backgroundBox.pack_start(self._speedbrakeAtTD, False, False, 4) 485 486 checklistFrame = gtk.Frame(label = xstr("prefs_sounds_frame_checklists")) 487 mainBox.pack_start(checklistFrame, False, False, 4) 488 489 checklistAlignment = gtk.Alignment(xalign = 0.0, yalign = 0.0, 490 xscale = 1.0, yscale = 0.0) 491 checklistAlignment.set_padding(padding_top = 4, padding_bottom = 4, 492 padding_left = 4, padding_right = 4) 493 checklistFrame.add(checklistAlignment) 494 495 checklistBox = gtk.VBox() 496 checklistAlignment.add(checklistBox) 497 498 self._enableChecklists = gtk.CheckButton(xstr("prefs_sounds_enableChecklists")) 499 self._enableChecklists.set_use_underline(True) 500 self._enableChecklists.set_tooltip_text(xstr("prefs_sounds_enableChecklists_tooltip")) 501 self._enableChecklists.connect("toggled", self._enableChecklistsToggled) 502 checklistBox.pack_start(self._enableChecklists, False, False, 4) 503 504 self._checklistHotkey = Hotkey(xstr("prefs_sounds_checklistHotkey"), 505 [xstr("prefs_sounds_checklistHotkey_tooltip"), 506 xstr("prefs_sounds_checklistHotkeyCtrl_tooltip"), 507 xstr("prefs_sounds_checklistHotkeyShift_tooltip")]) 508 509 checklistBox.pack_start(self._checklistHotkey, False, False, 4) 510 511 self._enableSoundsToggled(self._enableSounds) 512 self._enableChecklistsToggled(self._enableChecklists) 513 514 return mainAlignment 515 516 def _enableSoundsToggled(self, button): 517 """Called when the enable sounds button is toggled.""" 518 active = button.get_active() 519 self._pilotControlsSounds.set_sensitive(active) 520 self._pilotHotkey.set_sensitive(active) 521 #self._approachCallOuts.set_sensitive(active) 522 self._speedbrakeAtTD.set_sensitive(active) 523 524 def _enableChecklistsToggled(self, button): 525 """Called when the enable checklists button is toggled.""" 526 active = button.get_active() 527 self._checklistHotkey.set_sensitive(active) 528 333 529 def _buildAdvanced(self): 334 530 """Build the page for the advanced settings.""" … … 348 544 self._autoUpdate.set_tooltip_text(xstr("prefs_update_auto_tooltip")) 349 545 self._warnedAutoUpdate = False 350 self._togglingAutoUpdate = False351 546 352 547 updateURLBox = gtk.HBox() … … 379 574 def _autoUpdateToggled(self, button): 380 575 """Called when the auto update check button is toggled.""" 381 if not self._ togglingAutoUpdateand not self._warnedAutoUpdate and \576 if not self._settingFromConfig and not self._warnedAutoUpdate and \ 382 577 not self._autoUpdate.get_active(): 383 578 dialog = gtk.MessageDialog(parent = self, -
src/mlx/i18n.py
r155 r166 568 568 self.add("prefs_tab_message_tooltip", 569 569 "Enable/disable message notifications in FS and/or by sound") 570 self.add("prefs_tab_sounds", "_Sounds") 571 self.add("prefs_tab_sounds_tooltip", 572 "Preferences regarding what sounds should be played during the various flight stages") 570 573 self.add("prefs_tab_advanced", "_Advanced") 571 574 self.add("prefs_tab_advanced_tooltip", … … 604 607 "from timestamps returned by the simulator.") 605 608 self.add("prefs_syncFSTime", 606 " _Synchronize the time in FS with the computer's clock")609 "S_ynchronize the time in FS with the computer's clock") 607 610 self.add("prefs_syncFSTime_tooltip", 608 611 "If this is checked the flight simulator's internal clock " … … 615 618 self.add("prefs_pirepDirectory_browser_title", 616 619 "Select PIREP directory") 620 621 self.add("prefs_sounds_frame_bg", "Background") 622 self.add("prefs_sounds_enable", 623 "_Enable background sounds") 624 self.add("prefs_sounds_enable_tooltip", 625 "If the background sounds are enabled, the logger " 626 "can play different pre-recorded sounds during the " 627 "various stages of the flight.") 628 self.add("prefs_sounds_pilotControls", 629 "_Pilot controls the sounds") 630 self.add("prefs_sounds_pilotControls_tooltip", 631 "If checked, the background sounds can be started by the " 632 "pilot by pressing the hotkey specified below. Otherwise " 633 "the sounds will start automatically when certain " 634 "conditions hold.") 635 self.add("prefs_sounds_pilotHotkey", 636 "_Hotkey:") 637 self.add("prefs_sounds_pilotHotkey_tooltip", 638 "The key to press possibly together with modifiers to play " 639 "the sound relevant to the current flight status.") 640 self.add("prefs_sounds_pilotHotkeyCtrl_tooltip", 641 "If checked, the Ctrl key should be pressed together with the " 642 "main key.") 643 self.add("prefs_sounds_pilotHotkeyShift_tooltip", 644 "If checked, the Shift key should be pressed together with the " 645 "main key.") 646 self.add("prefs_sounds_approachCallOuts", 647 "Enable approach callouts") 648 self.add("prefs_sounds_approachCallOuts_tooltip", 649 "If checked, the approach callouts will be played at " 650 "certain altitudes.") 651 self.add("prefs_sounds_speedbrakeAtTD", 652 "Enable speed_brake sound at touchdown") 653 self.add("prefs_sounds_speedbrakeAtTD_tooltip", 654 "If checked, a speedbrake sound will be played after " 655 "touchdown, when the speedbrakes deploy.") 656 self.add("prefs_sounds_frame_checklists", "Checklists") 657 self.add("prefs_sounds_enableChecklists", 658 "E_nable aircraft-specific checklists") 659 self.add("prefs_sounds_enableChecklists_tooltip", 660 "If checked, the program will play back pre-recorded " 661 "aircraft-specific checklists at the pilot's discretion.") 662 self.add("prefs_sounds_checklistHotkey", 663 "Checklist hot_key:") 664 self.add("prefs_sounds_checklistHotkey_tooltip", 665 "The key to press possibly together with modifiers to play the next " 666 "checklist item.") 667 self.add("prefs_sounds_checklistHotkeyCtrl_tooltip", 668 "If checked, the Ctrl key should be pressed together with the " 669 "main key.") 670 self.add("prefs_sounds_checklistHotkeyShift_tooltip", 671 "If checked, the Shift key should be pressed together with the " 672 "main key.") 673 617 674 self.add("prefs_update_auto", "Update the program auto_matically") 618 675 self.add("prefs_update_auto_tooltip",
Note:
See TracChangeset
for help on using the changeset viewer.