comparison 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
comparison
equal deleted inserted replaced
3:06be71be07f1 4:bf1dd9c24a7e
94 self.resolution = "{0}x{1}".format(width, height) 94 self.resolution = "{0}x{1}".format(width, height)
95 self.render_backend = self.settings.fife.RenderBackend 95 self.render_backend = self.settings.fife.RenderBackend
96 self.lighting_model = self.settings.fife.Lighting 96 self.lighting_model = self.settings.fife.Lighting
97 self.fullscreen = self.settings.fife.FullScreen 97 self.fullscreen = self.settings.fife.FullScreen
98 self.sound = self.settings.fife.EnableSound 98 self.sound = self.settings.fife.EnableSound
99 self.scroll_speed = self.settings.parpg.ScrollSpeed
99 100
100 xml_file = vfs.VFS.open('gui/settings_menu.xml') 101 xml_file = vfs.VFS.open('gui/settings_menu.xml')
101 self.window = pychan.loadXML(xml_file) 102 self.window = pychan.loadXML(xml_file)
102 self.restart_dialog = RestartDialog(self.settings) 103 self.restart_dialog = RestartDialog(self.settings)
103 self.window.mapEvents({'okButton': self.save, 104 self.window.mapEvents({'okButton': self.save,
104 'cancelButton': self.hide, 105 'cancelButton': self.hide,
105 'defaultButton': self.reset}) 106 'defaultButton': self.reset,
107 'scroll_speed': self.update})
106 self.initializeWidgets() 108 self.initializeWidgets()
107 self.fillWidgets() 109 self.fillWidgets()
108 110
109 def initializeWidgets(self): 111 def initializeWidgets(self):
112 scroll_speed = unicode(self.scroll_speed)
110 initial_data = {'screen_resolution': self.resolutions, 113 initial_data = {'screen_resolution': self.resolutions,
111 'render_backend': self.render_backends, 114 'render_backend': self.render_backends,
112 'lighting_model': self.lighting_models} 115 'lighting_model': self.lighting_models,
116 'scroll_speed_value': scroll_speed}
113 117
114 self.window.distributeInitialData(initial_data) 118 self.window.distributeInitialData(initial_data)
115 119
116 120
117 def fillWidgets(self): 121 def fillWidgets(self):
118 resolution = self.resolutions.index(self.resolution) 122 resolution = self.resolutions.index(self.resolution)
119 backend = self.render_backends.index(self.render_backend) 123 backend = self.render_backends.index(self.render_backend)
120 lighting = self.lighting_models.index(self.lighting_model) 124 lighting = self.lighting_models.index(self.lighting_model)
121 125
122 self.window.distributeData({'screen_resolution': resolution, 126 self.window.distributeData({'screen_resolution': resolution,
123 'render_backend': backend, 127 'render_backend': backend,
124 'lighting_model': lighting, 128 'lighting_model': lighting,
125 'enable_fullscreen': self.fullscreen, 129 'enable_fullscreen': self.fullscreen,
126 'enable_sound': self.sound}) 130 'enable_sound': self.sound})
131
132 def update(self):
133 """updates lables to show realtime data"""
134 #collects the data from the widgets
135 (scroll_speed) = self.window.collectData('scroll_speed')
136
137 #alter the data note:pychan insists that all lables be given
138 # unicode text
139 #the slice rounds the number displayed
140 scroll_speed = unicode(scroll_speed)[:3]
141
142 #adds the data to the proper widgets
143 self.window.distributeInitialData({'scroll_speed_value': scroll_speed})
127 144
128 def show(self): 145 def show(self):
129 self.window.show() 146 self.window.show()
130 147
131 def hide(self): 148 def hide(self):
134 def reset(self): 151 def reset(self):
135 self.settings.read(self.settings.system_path) 152 self.settings.read(self.settings.system_path)
136 self.fillWidgets() 153 self.fillWidgets()
137 154
138 def save(self): 155 def save(self):
139 (resolution, backend, lighting, 156 (resolution, backend, lighting, fullscreen, sound, scroll_speed) = \
140 fullscreen, sound) = self.window.collectData('screen_resolution', 157 self.window.collectData('screen_resolution', 'render_backend',
141 'render_backend', 158 'lighting_model', 'enable_fullscreen',
142 'lighting_model', 159 'enable_sound', 'scroll_speed')
143 'enable_fullscreen', 160
144 'enable_sound')
145
146 width, height = self.resolutions[resolution].split('x') 161 width, height = self.resolutions[resolution].split('x')
147 self.settings.fife.ScreenWidth = width 162 self.settings.fife.ScreenWidth = width
148 self.settings.fife.ScreenHeight = height 163 self.settings.fife.ScreenHeight = height
149 self.settings.fife.RenderBackend = self.render_backends[backend] 164 self.settings.fife.RenderBackend = self.render_backends[backend]
150 self.settings.fife.Lighting = self.lighting_models[lighting] 165 self.settings.fife.Lighting = self.lighting_models[lighting]
151 self.settings.fife.FullScreen = fullscreen 166 self.settings.fife.FullScreen = fullscreen
152 self.settings.fife.EnableSound = sound 167 self.settings.fife.EnableSound = sound
168 self.settings.parpg.ScrollSpeed = scroll_speed
153 self.settings.write() 169 self.settings.write()
154 170
155 self.restart_dialog.show() 171 self.restart_dialog.show()
156 self.hide() 172 self.hide()