Mercurial > parpg-source
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() |