Mercurial > parpg-source
diff gui/menus.py @ 4:bf1dd9c24a7e
Scrolling by keyboard is now possible.
* Patch by DomtronVox.
* Added scrolling with the arrow keys.
* Added a slider bar in the settings menu to allow players to set the scrolling speed.
* Fixed an error that occurred when the ok button in settings was pressed.
* There is some kind of focus issue where opening the settings menu in-game causes scrolling to be disabled. Workaround is to change the scroll speed setting whenever you open the settings menu.
author | DomtronVox |
---|---|
date | Fri, 17 Jun 2011 14:49:48 -1000 |
parents | 06145a6ee387 |
children | b3b82c2aebee |
line wrap: on
line diff
--- a/gui/menus.py Fri Jun 10 11:29:38 2011 -1000 +++ b/gui/menus.py Fri Jun 17 14:49:48 2011 -1000 @@ -96,20 +96,24 @@ self.lighting_model = self.settings.fife.Lighting self.fullscreen = self.settings.fife.FullScreen self.sound = self.settings.fife.EnableSound + self.scroll_speed = self.settings.parpg.ScrollSpeed xml_file = vfs.VFS.open('gui/settings_menu.xml') self.window = pychan.loadXML(xml_file) self.restart_dialog = RestartDialog(self.settings) self.window.mapEvents({'okButton': self.save, 'cancelButton': self.hide, - 'defaultButton': self.reset}) + 'defaultButton': self.reset, + 'scroll_speed': self.update}) self.initializeWidgets() self.fillWidgets() def initializeWidgets(self): + scroll_speed = unicode(self.scroll_speed) initial_data = {'screen_resolution': self.resolutions, 'render_backend': self.render_backends, - 'lighting_model': self.lighting_models} + 'lighting_model': self.lighting_models, + 'scroll_speed_value': scroll_speed} self.window.distributeInitialData(initial_data) @@ -118,13 +122,26 @@ resolution = self.resolutions.index(self.resolution) backend = self.render_backends.index(self.render_backend) lighting = self.lighting_models.index(self.lighting_model) - + self.window.distributeData({'screen_resolution': resolution, 'render_backend': backend, 'lighting_model': lighting, 'enable_fullscreen': self.fullscreen, 'enable_sound': self.sound}) + def update(self): + """updates lables to show realtime data""" + #collects the data from the widgets + (scroll_speed) = self.window.collectData('scroll_speed') + + #alter the data note:pychan insists that all lables be given + # unicode text + #the slice rounds the number displayed + scroll_speed = unicode(scroll_speed)[:3] + + #adds the data to the proper widgets + self.window.distributeInitialData({'scroll_speed_value': scroll_speed}) + def show(self): self.window.show() @@ -136,13 +153,11 @@ self.fillWidgets() def save(self): - (resolution, backend, lighting, - fullscreen, sound) = self.window.collectData('screen_resolution', - 'render_backend', - 'lighting_model', - 'enable_fullscreen', - 'enable_sound') - + (resolution, backend, lighting, fullscreen, sound, scroll_speed) = \ + self.window.collectData('screen_resolution', 'render_backend', + 'lighting_model', 'enable_fullscreen', + 'enable_sound', 'scroll_speed') + width, height = self.resolutions[resolution].split('x') self.settings.fife.ScreenWidth = width self.settings.fife.ScreenHeight = height @@ -150,6 +165,7 @@ self.settings.fife.Lighting = self.lighting_models[lighting] self.settings.fife.FullScreen = fullscreen self.settings.fife.EnableSound = sound + self.settings.parpg.ScrollSpeed = scroll_speed self.settings.write() self.restart_dialog.show()