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()