Changeset 8079 for code/trunk/data/gui/scripts/GraphicsMenu.lua
- Timestamp:
- Mar 15, 2011, 9:47:11 PM (13 years ago)
- Location:
- code/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
-
code/trunk/data/gui/scripts/GraphicsMenu.lua
r7801 r8079 3 3 local P = createMenuSheet("GraphicsMenu") 4 4 5 P. buttonList = {}5 P.resolutionList = {"custom", "640 x 480", "720 x 480", "720 x 576", "800 x 600", "1024 x 600", "1024 x 768", "1152 x 864", "1280 x 720", "1280 x 800", "1280 x 960", "1280 x 1024", "1360 x 768", "1440 x 900", "1600 x 900", "1600 x 1200", "1680 x 1050"} 6 6 P.schemeList = {"TaharezGreen", "Orxonox"} 7 8 function P.onShow() 9 --indices to iterate through buttonlist (trivial in this menu sheet) 10 P.oldindex = -2 11 P.index = -1 12 end 13 14 function P.onLoad() 15 block = true 16 file = orxonox.PathConfig:getConfigPathString() .. orxonox.getConfig("GraphicsManager", "ogreConfigFile_") 17 search_mode = 0 18 f = io.open(file, "r") 19 firstline = f:read("*line") 20 rendersystem = string.sub(firstline, 15) 21 for line in f:lines() do 22 if search_mode == 0 then 23 if string.find(line, rendersystem) ~= nil then 24 search_mode = 1 25 end 7 P.fsaaList = {"0", "2", "4", "8", "8 [Quality]"} 8 P.particleLodList = {"None", "Low", "Normal", "High"} 9 10 function P:onLoad() 11 ------------------- 12 -- Button matrix -- 13 ------------------- 14 15 P:setButton(1, 1, { 16 ["button"] = winMgr:getWindow("orxonox/GraphicsOkButton"), 17 ["callback"] = P.callback_Ok_Clicked 18 }) 19 20 P:setButton(1, 2, { 21 ["button"] = winMgr:getWindow("orxonox/GraphicsCancelButton"), 22 ["callback"] = P.callback_Cancel_Clicked 23 }) 24 25 -- place apply button at the bottom in the matrix, even though it's in fact at the top, to make the OK button highlighted by default 26 P:setButton(2, 1, { 27 ["button"] = winMgr:getWindow("orxonox/Display/Resolution/Apply"), 28 ["callback"] = P.callback_Apply_Clicked 29 }) 30 31 ----------------- 32 -- Combo boxes -- 33 ----------------- 34 35 -- resolution combobox 36 local resolutionCombobox = winMgr:getWindow("orxonox/Display/Resolution/Combobox") 37 CEGUI.toCombobox(resolutionCombobox):setReadOnly(true) 38 39 for k,v in pairs(P.resolutionList) do 40 local item = CEGUI.createListboxTextItem(v) 41 item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush") 42 resolutionCombobox:addItem(item) 43 end 44 45 -- themes combobox 46 local themeCombobox = winMgr:getWindow("orxonox/Display/Theme/Combobox") 47 CEGUI.toCombobox(themeCombobox):setReadOnly(true) 48 49 for k,v in pairs(P.schemeList) do 50 local item = CEGUI.createListboxTextItem(v) 51 item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush") 52 themeCombobox:addItem(item) 53 end 54 55 -- fsaa combobox 56 local fsaaCombobox = winMgr:getWindow("orxonox/Display/More/FSAA") 57 CEGUI.toCombobox(fsaaCombobox):setReadOnly(true) 58 59 for k,v in pairs(P.fsaaList) do 60 local item = CEGUI.createListboxTextItem(v) 61 item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush") 62 fsaaCombobox:addItem(item) 63 end 64 65 -- particle lod combobox 66 local particleLodCombobox = winMgr:getWindow("orxonox/Settings/ParticleLodCombobox") 67 CEGUI.toCombobox(particleLodCombobox):setReadOnly(true) 68 69 for k,v in pairs(P.particleLodList) do 70 local item = CEGUI.createListboxTextItem(v) 71 item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush") 72 particleLodCombobox:addItem(item) 73 end 74 end 75 76 function P:onShow() 77 ----------------- 78 -- Display tab -- 79 ----------------- 80 81 -- fullscreen checkbox / resolution combobox / resolution editboxes 82 self:onWindowResized() 83 84 -- apply button 85 self.updateApplyButton() 86 87 -- aspect ratio editbox 88 local aspectRatioEditbox = winMgr:getWindow("orxonox/Display/Resolution/AspectRatio") 89 local currentAspectRatio = orxonox.CommandExecutor:query("getConfig Camera aspectRatio_") 90 aspectRatioEditbox:setText(currentAspectRatio) 91 92 -- themes combobox 93 local themeCombobox = winMgr:getWindow("orxonox/Display/Theme/Combobox") 94 local currentTheme = orxonox.CommandExecutor:query("getConfig GUIManager guiScheme_") 95 96 for i = 0, themeCombobox:getDropList():getItemCount() - 1 do 97 local item = themeCombobox:getListboxItemFromIndex(i) 98 themeCombobox:setItemSelectState(item, (item:getText() == currentTheme)) 99 end 100 101 -- vsync checkbox 102 local vsyncCheckbox = winMgr:getWindow("orxonox/Display/More/VSync") 103 local hasVSync = orxonox.GraphicsManager:getInstance():hasVSyncEnabled() 104 CEGUI.toCheckbox(vsyncCheckbox):setSelected(hasVSync) 105 106 -- fsaa combobox 107 local fsaaCombobox = winMgr:getWindow("orxonox/Display/More/FSAA") 108 local currentFSAAMode = orxonox.GraphicsManager:getInstance():getFSAAMode() 109 110 for i = 0, fsaaCombobox:getDropList():getItemCount() - 1 do 111 local item = fsaaCombobox:getListboxItemFromIndex(i) 112 fsaaCombobox:setItemSelectState(item, (item:getText() == currentFSAAMode)) 113 end 114 115 -- notice 116 self:updateRedLabel() 117 118 ------------------ 119 -- Settings tab -- 120 ------------------ 121 122 -- fov editbox 123 local fovEditbox = winMgr:getWindow("orxonox/Settings/Fov") 124 local currentFov = orxonox.CommandExecutor:query("getConfig Camera fov_") 125 fovEditbox:setText(currentFov) 126 127 -- fps limit editbox 128 local fpsEditbox = winMgr:getWindow("orxonox/Settings/FpsLimit") 129 local currentFpsLimit = orxonox.CommandExecutor:query("getConfig GraphicsSettings fpsLimit") 130 fpsEditbox:setText(currentFpsLimit) 131 132 -- particle lod combobox 133 local particleLodCombobox = winMgr:getWindow("orxonox/Settings/ParticleLodCombobox") 134 local currentParticleLod = orxonox.CommandExecutor:query("getConfig GraphicsSettings particlesDetailLevel") 135 136 if currentParticleLod == "" then 137 particleLodCombobox:disable() 138 else 139 particleLodCombobox:enable() 140 141 for i = 0, particleLodCombobox:getDropList():getItemCount() - 1 do 142 local item = particleLodCombobox:getListboxItemFromIndex(i) 143 particleLodCombobox:setItemSelectState(item, (tostring(i) == currentParticleLod)) 26 144 end 27 if search_mode == 1 then 28 if string.sub(line, 1, 11) == "Full Screen" then 29 if string.sub(line, 13) == "Yes" then 30 fullscreen = true 31 else 32 fullscreen = false 33 end 34 end 35 if string.sub(line, 1, 10) == "Video Mode" then 36 if string.match(line, "@") == "@" then 37 resolution = string.sub(line, 12, string.find(line, "@")-2) 38 else 39 resolution = string.sub(line, 12) 40 end 41 break 42 end 145 end 146 147 -- mesh lod checkbox 148 local meshLodCheckbox = winMgr:getWindow("orxonox/Settings/MeshLodCheckbox") 149 local hasMeshLod = orxonox.CommandExecutor:query("getConfig GraphicsSettings enableMeshLoD") 150 if hasMeshLod == "true" then 151 hasMeshLod = true 152 elseif hasMeshLod == "false" then 153 hasMeshLod = false 154 end 155 CEGUI.toCheckbox(meshLodCheckbox):setSelected(hasMeshLod) 156 157 -- motion blur checkbox 158 local motionBlurCheckbox = winMgr:getWindow("orxonox/Settings/MotionBlurCheckbox") 159 local hasMotionBlur = orxonox.CommandExecutor:query("getConfig GraphicsSettings enableMotionBlur") 160 if hasMotionBlur == "true" then 161 hasMotionBlur = true 162 elseif hasMotionBlur == "false" then 163 hasMotionBlur = false 164 end 165 CEGUI.toCheckbox(motionBlurCheckbox):setSelected(hasMotionBlur) 166 end 167 168 function P:onWindowResized() 169 -- fullscreen checkbox 170 local fullscreenCheckbox = winMgr:getWindow("orxonox/Display/Resolution/Fullscreen") 171 local isFullscreen = orxonox.GraphicsManager:getInstance():isFullScreen() 172 CEGUI.toCheckbox(fullscreenCheckbox):setSelected(isFullscreen) 173 174 -- resolution combobox 175 local resolutionCombobox = winMgr:getWindow("orxonox/Display/Resolution/Combobox") 176 177 local currentWidth = orxonox.GraphicsManager:getInstance():getWindowWidth() 178 local currentHeight = orxonox.GraphicsManager:getInstance():getWindowHeight() 179 180 if P.forceResolutionEditboxes then 181 currentWidth = P.newWidth 182 currentHeight = P.newHeight 183 P.forceResolutionEditboxes = false 184 end 185 186 local currentResolution = currentWidth .. " x " .. currentHeight 187 188 for i = 0, resolutionCombobox:getDropList():getItemCount() - 1 do 189 local item = resolutionCombobox:getListboxItemFromIndex(i) 190 resolutionCombobox:setItemSelectState(item, item:getText() == currentResolution) 191 end 192 193 -- resolution editboxes 194 self.updateResolutionEditboxes() 195 end 196 197 ---------------------- 198 -- Helper functions -- 199 ---------------------- 200 201 -- updates the text of the resolution checkboxes and checks if they should be enabled (only if the "custom" resolution was selected) 202 function P.updateResolutionEditboxes() 203 -- resolution combobox 204 local resolutionCombobox = winMgr:getWindow("orxonox/Display/Resolution/Combobox") 205 206 local currentWidth = orxonox.GraphicsManager:getInstance():getWindowWidth() 207 local currentHeight = orxonox.GraphicsManager:getInstance():getWindowHeight() 208 209 -- resolution editboxes 210 local widthEditbox = winMgr:getWindow("orxonox/Display/Resolution/EditboxWidth") 211 local heightEditbox = winMgr:getWindow("orxonox/Display/Resolution/EditboxHeight") 212 widthEditbox:disable() 213 heightEditbox:disable() 214 215 -- selected combobox item 216 local item = resolutionCombobox:getSelectedItem() 217 if item then 218 local itemText = item:getText() 219 if itemText ~= "custom" then 220 currentWidth = string.sub(itemText, 1, string.find(itemText, "x") - 2) 221 currentHeight = string.sub(itemText, string.find(itemText, "x") + 2) 222 else 223 widthEditbox:enable() 224 heightEditbox:enable() 43 225 end 44 226 end 45 f:close() 46 local fullscreenwindow = tolua.cast(winMgr:getWindow("orxonox/FullscreenCheckbox"),"CEGUI::Checkbox") 47 fullscreenwindow:setSelected(fullscreen) 48 listboxwindow = winMgr:getWindow("orxonox/ResolutionListbox") 49 local resolutionList = {} 50 table.insert(resolutionList, "640 x 480") 51 table.insert(resolutionList, "720 x 480") 52 table.insert(resolutionList, "720 x 576") 53 table.insert(resolutionList, "800 x 480") 54 table.insert(resolutionList, "800 x 600") 55 table.insert(resolutionList, "1024 x 480") 56 table.insert(resolutionList, "1024 x 600") 57 table.insert(resolutionList, "1024 x 768") 58 table.insert(resolutionList, "1152 x 864") 59 table.insert(resolutionList, "1280 x 720") 60 table.insert(resolutionList, "1280 x 768") 61 table.insert(resolutionList, "1440 x 900") 62 for k,v in pairs(resolutionList) do 63 item = CEGUI.createListboxTextItem(v) 64 item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush") 65 CEGUI.toListbox(listboxwindow):addItem(item) 66 end 67 if resolution == "640 x 480" then 68 listboxwindow:setItemSelectState(0,true) 69 elseif resolution == "720 x 480" then 70 listboxwindow:setItemSelectState(1,true) 71 elseif resolution == "720 x 576" then 72 listboxwindow:setItemSelectState(2,true) 73 elseif resolution == "800 x 480" then 74 listboxwindow:setItemSelectState(3,true) 75 elseif resolution == "800 x 600" then 76 listboxwindow:setItemSelectState(4,true) 77 elseif resolution == "1024 x 480" then 78 listboxwindow:setItemSelectState(5,true) 79 elseif resolution == "1024 x 600" then 80 listboxwindow:setItemSelectState(6,true) 81 elseif resolution == "1024 x 768" then 82 listboxwindow:setItemSelectState(7,true) 83 elseif resolution == "1152 x 864" then 84 listboxwindow:setItemSelectState(8,true) 85 elseif resolution == "1280 x 720" then 86 listboxwindow:setItemSelectState(9,true) 87 elseif resolution == "1280 x 768" then 88 listboxwindow:setItemSelectState(10,true) 89 elseif resolution == "1440 x 900" then 90 listboxwindow:setItemSelectState(11,true) 91 end 92 scrollbar_active = false 93 block = false 94 95 local item = { 96 ["button"] = winMgr:getWindow("orxonox/GraphicsBackButton"), 97 ["function"] = P.GraphicsBackButton_clicked 98 } 99 P.buttonList[1] = item 100 101 local dropbox = winMgr:getWindow("orxonox/ThemeDropBox") 102 local scheme = orxonox.CommandExecutor:query("getConfig GUIManager guiScheme_") 103 for k,v in pairs(P.schemeList) do 104 local item = CEGUI.createListboxTextItem(P.schemeList[k]) 105 item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush") 106 CEGUI.toListbox(dropbox):addItem(item) 107 if v == scheme then 108 dropbox:setItemSelectState(item, true) 109 end 110 end 111 112 end 113 114 function P.ThemeDropBox_changed(e) 115 local dropbox = winMgr:getWindow("orxonox/ThemeDropBox") 116 local listbox = CEGUI.toListbox(dropbox) 117 local choice = listbox:getFirstSelectedItem() 118 local index = 0 119 if choice ~= nil then 120 index = listbox:getItemIndex(choice) 121 end 122 orxonox.CommandExecutor:execute("config GUIManager guiScheme_ " .. P.schemeList[index+1]) 123 end 124 125 function P.GraphicsResolutionListbox_changed(e) 126 if listboxwindow:isItemSelected(0) then 127 resolution = "640 x 480" 128 elseif listboxwindow:isItemSelected(1) then 129 resolution = "720 x 480" 130 elseif listboxwindow:isItemSelected(2) then 131 resolution = "720 x 576" 132 elseif listboxwindow:isItemSelected(3) then 133 resolution = "800 x 480" 134 elseif listboxwindow:isItemSelected(4) then 135 resolution = "800 x 600" 136 elseif listboxwindow:isItemSelected(5) then 137 resolution = "1024 x 480" 138 elseif listboxwindow:isItemSelected(6) then 139 resolution = "1024 x 600" 140 elseif listboxwindow:isItemSelected(7) then 141 resolution = "1024 x 768" 142 elseif listboxwindow:isItemSelected(8) then 143 resolution = "1152 x 864" 144 elseif listboxwindow:isItemSelected(9) then 145 resolution = "1280 x 720" 146 elseif listboxwindow:isItemSelected(10) then 147 resolution = "1280 x 768" 148 elseif listboxwindow:isItemSelected(11) then 149 resolution = "1440 x 900" 150 end 151 search_mode = 0 152 f = io.open(file, "r") 153 firstline = f:read("*line") 154 text = firstline .. "\n" 155 rendersystem = string.sub(firstline, 15) 156 for line in f:lines() do 157 if search_mode == 0 then 158 if string.find(line, rendersystem) ~= nil then 159 search_mode = 1 160 end 161 end 162 if search_mode == 1 then 163 if string.sub(line, 1, 10) == "Video Mode" then 164 if string.match(line, "@") == "@" then 165 line = "Video Mode=" .. resolution .. string.sub(line, string.find(line, "@")-1) 166 else 167 line = "Video Mode=" .. resolution 168 end 169 search_mode = 2 170 end 171 end 172 text = text .. line .. "\n" 173 end 174 f:close() 175 f = io.open(file, "w") 176 f:write(text) 177 f:close() 178 end 179 180 function P.GraphicsBrightnessScrollbar_changed(e) 181 if scrollbar_active == false then 182 -- brightness 183 logMessage(0, "event: brightness") 184 end 185 end 186 187 function P.GraphicsBrightnessScrollbar_started(e) 188 scrollbar_active = true 189 end 190 191 function P.GraphicsBrightnessScrollbar_ended(e) 192 -- brightness 193 logMessage(0, "event: brightness") 194 scrollbar_active = false 195 end 196 197 function P.GraphicsFullscreenCheckbox_clicked(e) 198 if block == false then 199 search_mode = 0 200 f = io.open(file, "r") 201 firstline = f:read("*line") 202 text = firstline .. "\n" 203 rendersystem = string.sub(firstline, 15) 204 for line in f:lines() do 205 if search_mode == 0 then 206 if string.find(line, rendersystem) ~= nil then 207 search_mode = 1 208 end 209 end 210 if search_mode == 1 then 211 if string.sub(line, 1, 11) == "Full Screen" then 212 if fullscreen == true then 213 line = "Full Screen=No" 214 fullscreen = false 215 else 216 line = "Full Screen=Yes" 217 fullscreen = true 218 end 219 search_mode = 2 220 end 221 end 222 text = text .. line .. "\n" 223 end 224 f:close() 225 f = io.open(file, "w") 226 f:write(text) 227 f:close() 228 end 229 end 230 231 function P.GraphicsBackButton_clicked(e) 227 228 widthEditbox:setText(currentWidth) 229 heightEditbox:setText(currentHeight) 230 end 231 232 -- checks if the apply button should be enabled or disabled (only enabled if the current settings are different from the selected values) 233 function P.updateApplyButton() 234 -- fullscreen checkbox 235 local fullscreenCheckbox = winMgr:getWindow("orxonox/Display/Resolution/Fullscreen") 236 local isFullscreen = orxonox.GraphicsManager:getInstance():isFullScreen() 237 local fullscreenChanged = (isFullscreen ~= CEGUI.toCheckbox(fullscreenCheckbox):isSelected()) 238 239 -- resolution editboxes 240 local widthEditbox = winMgr:getWindow("orxonox/Display/Resolution/EditboxWidth") 241 local heightEditbox = winMgr:getWindow("orxonox/Display/Resolution/EditboxHeight") 242 local currentWidth = tostring(orxonox.GraphicsManager:getInstance():getWindowWidth()) 243 local currentHeight = tostring(orxonox.GraphicsManager:getInstance():getWindowHeight()) 244 local widthChanged = (currentWidth ~= widthEditbox:getText()) 245 local heightChanged = (currentHeight ~= heightEditbox:getText()) 246 local resolutionEditboxesEnabled = not widthEditbox:isDisabled() 247 248 -- apply button 249 local applyButton = winMgr:getWindow("orxonox/Display/Resolution/Apply") 250 251 if fullscreenChanged or widthChanged or heightChanged or resolutionEditboxesEnabled then 252 applyButton:enable() 253 else 254 applyButton:disable() 255 end 256 end 257 258 function P.updateRedLabel() 259 -- theme 260 local themeCombobox = winMgr:getWindow("orxonox/Display/Theme/Combobox") 261 local currentTheme = orxonox.CommandExecutor:query("getConfig GUIManager guiScheme_") 262 local themeChanged = (currentTheme ~= themeCombobox:getText()) 263 264 -- vsync 265 local vsyncCheckbox = winMgr:getWindow("orxonox/Display/More/VSync") 266 local hasVSync = orxonox.GraphicsManager:getInstance():hasVSyncEnabled() 267 local vsyncChanged = (hasVSync ~= CEGUI.toCheckbox(vsyncCheckbox):isSelected()) 268 269 -- fsaa 270 local fsaaCombobox = winMgr:getWindow("orxonox/Display/More/FSAA") 271 local currentFSAAMode = orxonox.GraphicsManager:getInstance():getFSAAMode() 272 local fsaaChanged = (currentFSAAMode ~= fsaaCombobox:getText()) 273 274 local needRestart = themeChanged or vsyncChanged or fsaaChanged 275 276 local notice = winMgr:getWindow("orxonox/Display/Notice") 277 notice:setVisible(not needRestart) 278 local noticeRed = winMgr:getWindow("orxonox/Display/NoticeRed") 279 noticeRed:setVisible(needRestart) 280 end 281 282 --------------------- 283 -- Event callbacks -- 284 --------------------- 285 286 -- resolution 287 288 function P.callback_FullscreenCheckbox_CheckStateChanged(e) 289 P.updateApplyButton() 290 end 291 292 function P.callback_ResolutionCombobox_ListSelectionAccepted(e) 293 P.updateResolutionEditboxes() 294 end 295 296 function P.callback_ResolutionEditboxWidth_TextChanged(e) 297 P.updateApplyButton() 298 end 299 300 function P.callback_ResolutionEditboxHeight_TextChanged(e) 301 P.updateApplyButton() 302 end 303 304 -- theme 305 306 function P.callback_ThemeCombobox_ListSelectionAccepted(e) 307 P.updateRedLabel() 308 end 309 310 -- vsync 311 312 function P.callback_VSyncCheckbox_CheckStateChanged(e) 313 P.updateRedLabel() 314 end 315 316 -- fsaa 317 318 function P.callback_FSAACombobox_ListSelectionAccepted(e) 319 P.updateRedLabel() 320 end 321 322 -- buttons 323 324 function P.callback_Apply_Clicked(e) 325 -- resolution 326 local fullscreenCheckbox = winMgr:getWindow("orxonox/Display/Resolution/Fullscreen") 327 local checkedFullscreen = tostring(CEGUI.toCheckbox(fullscreenCheckbox):isSelected()) 328 329 local widthEditbox = winMgr:getWindow("orxonox/Display/Resolution/EditboxWidth") 330 local heightEditbox = winMgr:getWindow("orxonox/Display/Resolution/EditboxHeight") 331 332 P.newWidth = widthEditbox:getText() 333 P.newHeight = heightEditbox:getText() 334 P.forceResolutionEditboxes = true 335 336 -- start revert timer 337 P.oldWidth = orxonox.GraphicsManager:getInstance():getWindowWidth() 338 P.oldHeight = orxonox.GraphicsManager:getInstance():getWindowHeight() 339 P.oldFullscreen = orxonox.GraphicsManager:getInstance():isFullScreen() 340 341 P.revertTimerHandle = orxonox.CommandExecutor:query("delayreal 10 {hideGUI DecisionPopup; GraphicsManager setScreenResolution " .. P.oldWidth .. " " .. P.oldHeight .. " " .. tostring(P.oldFullscreen) .. "; config Core lastLevelTimestamp_ [expr [getConfig Core ogreConfigTimestamp_] + 1]}") 342 343 -- change settings 344 orxonox.CommandExecutor:execute("GraphicsManager setScreenResolution " .. P.newWidth .. " " .. P.newHeight .. " " .. checkedFullscreen) 345 346 P.updateApplyButton() 347 348 -- prompt for confirmation 349 openDecisionPopup("Do you want to keep these settings? (Settings will be reverted in 10 seconds if not accepted)", GraphicsMenu.callback_ApplyDecisionPopup) 350 if checkedFullscreen then 351 showCursor() 352 end 353 end 354 355 function P.callback_ApplyDecisionPopup(pressedOK) 356 orxonox.CommandExecutor:execute("killdelay " .. P.revertTimerHandle) 357 358 if not pressedOK then 359 orxonox.CommandExecutor:execute("GraphicsManager setScreenResolution " .. P.oldWidth .. " " .. P.oldHeight .. " " .. tostring(P.oldFullscreen)) 360 P:onShow() 361 end 362 363 -- update timestamp to avoid showing the ogre config dialog again after the user accepted or reverted the resolution 364 orxonox.CommandExecutor:execute("config Core lastLevelTimestamp_ [expr [getConfig Core ogreConfigTimestamp_] + 1]") 365 end 366 367 function P.callback_Ok_Clicked(e) 368 -- aspect ratio 369 local aspectRatioEditbox = winMgr:getWindow("orxonox/Display/Resolution/AspectRatio") 370 orxonox.CommandExecutor:execute("config Camera aspectRatio_ " .. aspectRatioEditbox:getText()) 371 372 -- theme 373 local themeCombobox = winMgr:getWindow("orxonox/Display/Theme/Combobox") 374 orxonox.CommandExecutor:execute("config GUIManager guiScheme_ " .. themeCombobox:getText()) 375 376 -- vsync 377 local vsyncCheckbox = winMgr:getWindow("orxonox/Display/More/VSync") 378 local hasVSync = orxonox.GraphicsManager:getInstance():hasVSyncEnabled() 379 if hasVSync ~= CEGUI.toCheckbox(vsyncCheckbox):isSelected() then 380 orxonox.CommandExecutor:execute("GraphicsManager setVSync " .. tostring(CEGUI.toCheckbox(vsyncCheckbox):isSelected())) 381 end 382 383 -- fsaa 384 local fsaaCombobox = winMgr:getWindow("orxonox/Display/More/FSAA") 385 local currentFSAAMode = orxonox.GraphicsManager:getInstance():getFSAAMode() 386 if currentFSAAMode ~= fsaaCombobox:getText() then 387 orxonox.CommandExecutor:execute("GraphicsManager setFSAA {" .. fsaaCombobox:getText() .. "}") -- enclose argument in { ... } because it can contain [brackets] (conflicts with tcl) 388 end 389 390 -- fov 391 local fovEditbox = winMgr:getWindow("orxonox/Settings/Fov") 392 orxonox.CommandExecutor:execute("config Camera fov_ " .. fovEditbox:getText()) 393 394 -- fps limit 395 local fpsEditbox = winMgr:getWindow("orxonox/Settings/FpsLimit") 396 orxonox.CommandExecutor:execute("config GraphicsSettings fpsLimit " .. fpsEditbox:getText()) 397 398 -- particle lod 399 local particleLodCombobox = winMgr:getWindow("orxonox/Settings/ParticleLodCombobox") 400 local item = particleLodCombobox:getSelectedItem() 401 if item then 402 orxonox.CommandExecutor:execute("config GraphicsSettings particlesDetailLevel " .. particleLodCombobox:getItemIndex(item)) 403 end 404 405 -- mesh lod 406 local meshLodCheckbox = winMgr:getWindow("orxonox/Settings/MeshLodCheckbox") 407 orxonox.CommandExecutor:execute("config GraphicsSettings enableMeshLoD " .. tostring(CEGUI.toCheckbox(meshLodCheckbox):isSelected())) 408 409 -- motion blur 410 local motionBlurCheckbox = winMgr:getWindow("orxonox/Settings/MotionBlurCheckbox") 411 orxonox.CommandExecutor:execute("config GraphicsSettings enableMotionBlur " .. tostring(CEGUI.toCheckbox(motionBlurCheckbox):isSelected())) 412 232 413 hideMenuSheet(P.name) 233 414 end 234 415 235 function P. onKeyPressed()236 buttonIteratorHelper(P.buttonList, code, P, 1, 1)416 function P.callback_Cancel_Clicked(e) 417 hideMenuSheet(P.name) 237 418 end 238 419
Note: See TracChangeset
for help on using the changeset viewer.