Changeset 8051 for code/branches/tutorial/data/gui/scripts/GraphicsMenu.lua
- Timestamp:
- Mar 9, 2011, 11:27:05 AM (14 years ago)
- Location:
- code/branches/tutorial
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/tutorial
- Property svn:mergeinfo changed
/code/branches/usability merged: 8018-8041
- Property svn:mergeinfo changed
-
code/branches/tutorial/data/gui/scripts/GraphicsMenu.lua
r7928 r8051 1 1 -- GraphicsMenu.lua 2 2 3 local P = createMenuSheet("GraphicsMenu") 4 3 local P = createMenuSheet("GraphicsMenu", true, TriBool.True, TriBool.True) 4 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"} 5 6 P.schemeList = {"TaharezGreen", "Orxonox"} 6 7 function P.onLoad() 8 block = true 9 file = orxonox.PathConfig:getConfigPathString() .. orxonox.getConfig("GraphicsManager", "ogreConfigFile_") 10 search_mode = 0 11 f = io.open(file, "r") 12 firstline = f:read("*line") 13 rendersystem = string.sub(firstline, 15) 14 for line in f:lines() do 15 if search_mode == 0 then 16 if string.find(line, rendersystem) ~= nil then 17 search_mode = 1 18 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)) 19 144 end 20 if search_mode == 1 then 21 if string.sub(line, 1, 11) == "Full Screen" then 22 if string.sub(line, 13) == "Yes" then 23 fullscreen = true 24 else 25 fullscreen = false 26 end 27 end 28 if string.sub(line, 1, 10) == "Video Mode" then 29 if string.match(line, "@") == "@" then 30 resolution = string.sub(line, 12, string.find(line, "@")-2) 31 else 32 resolution = string.sub(line, 12) 33 end 34 break 35 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() 36 225 end 37 226 end 38 f:close() 39 local fullscreenwindow = tolua.cast(winMgr:getWindow("orxonox/FullscreenCheckbox"),"CEGUI::Checkbox")40 fullscreenwindow:setSelected(fullscreen)41 listboxwindow = winMgr:getWindow("orxonox/ResolutionListbox") 42 local resolutionList = {} 43 table.insert(resolutionList, "640 x 480")44 table.insert(resolutionList, "720 x 480")45 table.insert(resolutionList, "720 x 576")46 table.insert(resolutionList, "800 x 480")47 table.insert(resolutionList, "800 x 600")48 table.insert(resolutionList, "1024 x 480")49 table.insert(resolutionList, "1024 x 600") 50 table.insert(resolutionList, "1024 x 768")51 table.insert(resolutionList, "1152 x 864")52 table.insert(resolutionList, "1280 x 720")53 table.insert(resolutionList, "1280 x 768")54 table.insert(resolutionList, "1440 x 900")55 for k,v in pairs(resolutionList) do56 item = CEGUI.createListboxTextItem(v)57 item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")58 CEGUI.toListbox(listboxwindow):addItem(item) 59 end60 if resolution == "640 x 480" then61 listboxwindow:setItemSelectState(0,true) 62 elseif resolution == "720 x 480"then63 listboxwindow:setItemSelectState(1,true)64 else if resolution == "720 x 576" then65 listboxwindow:setItemSelectState(2,true)66 e lseif resolution == "800 x 480" then67 listboxwindow:setItemSelectState(3,true) 68 elseif resolution == "800 x 600" then 69 listboxwindow:setItemSelectState(4,true)70 elseif resolution == "1024 x 480" then71 listboxwindow:setItemSelectState(5,true)72 elseif resolution == "1024 x 600" then73 listboxwindow:setItemSelectState(6,true)74 elseif resolution == "1024 x 768" then 75 listboxwindow:setItemSelectState(7,true)76 elseif resolution == "1152 x 864" then77 listboxwindow:setItemSelectState(8,true)78 elseif resolution == "1280 x 720" then79 listboxwindow:setItemSelectState(9,true) 80 elseif resolution == "1280 x 768" then81 listboxwindow:setItemSelectState(10,true)82 elseif resolution == "1440 x 900" then83 listboxwindow:setItemSelectState(11,true)84 end 85 scrollbar_active = false86 block = false 87 88 P:setButton(1, 1, {89 ["button"] = winMgr:getWindow("orxonox/GraphicsBackButton"),90 ["callback"] = P.GraphicsBackButton_clicked91 }) 92 93 local dropbox = winMgr:getWindow("orxonox/ThemeDropBox") 94 local scheme = orxonox.CommandExecutor:query("getConfig GUIManager guiScheme_") 95 for k,v in pairs(P.schemeList) do 96 local item = CEGUI.createListboxTextItem(P.schemeList[k]) 97 item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush") 98 CEGUI.toListbox(dropbox):addItem(item) 99 if v == scheme then 100 dropbox:setItemSelectState(item, true)101 102 end 103 104 end 105 106 function P.ThemeDropBox_changed(e) 107 local dropbox = winMgr:getWindow("orxonox/ThemeDropBox")108 local listbox = CEGUI.toListbox(dropbox)109 local choice = listbox:getFirstSelectedItem() 110 local index = 0 111 if choice ~= nil then 112 index = listbox:getItemIndex(choice)113 114 orxonox.CommandExecutor:execute("config GUIManager guiScheme_ " .. P.schemeList[index+1]) 115 end 116 117 function P. GraphicsResolutionListbox_changed(e)118 if listboxwindow:isItemSelected(0) then119 resolution = "640 x 480" 120 elseif listboxwindow:isItemSelected(1) then 121 resolution = "720 x 480" 122 elseif listboxwindow:isItemSelected(2) then 123 resolution = "720 x 576" 124 elseif listboxwindow:isItemSelected(3) then125 resolution = "800 x 480" 126 elseif listboxwindow:isItemSelected(4) then 127 resolution = "800 x 600" 128 elseif listboxwindow:isItemSelected(5) then 129 resolution = "1024 x 480" 130 elseif listboxwindow:isItemSelected(6) then131 resolution = "1024 x 600" 132 elseif listboxwindow:isItemSelected(7) then 133 resolution = "1024 x 768" 134 elseif listboxwindow:isItemSelected(8) then 135 resolution = "1152 x 864" 136 elseif listboxwindow:isItemSelected(9) then137 resolution = "1280 x 720"138 elseif listboxwindow:isItemSelected(10) then139 resolution = "1280 x 768" 140 elseif listboxwindow:isItemSelected(11) then141 resolution = "1440 x 900"142 end 143 search_mode = 0144 f = io.open(file, "r")145 firstline = f:read("*line")146 text = firstline .. "\n" 147 rendersystem = string.sub(firstline, 15)148 for line in f:lines() do149 if search_mode == 0 then150 if string.find(line, rendersystem) ~= nil then151 search_mode = 1 152 end153 end 154 if search_mode == 1 then155 if string.sub(line, 1, 10) == "Video Mode" then156 if string.match(line, "@") == "@" then 157 line = "Video Mode=" .. resolution .. string.sub(line, string.find(line, "@")-1)158 else 159 line = "Video Mode=" .. resolution160 end161 search_mode = 2162 end163 164 text = text .. line .. "\n" 165 end 166 f:close()167 f = io.open(file, "w")168 f:write(text) 169 f:close()170 end 171 172 function P.GraphicsBrightnessScrollbar_changed(e) 173 if scrollbar_active == false then 174 -- brightness175 logMessage(0, "event: brightness")176 177 end 178 179 function P.GraphicsBrightnessScrollbar_started(e) 180 scrollbar_active = true181 end 182 183 function P.GraphicsBrightnessScrollbar_ended(e) 184 -- brightness185 logMessage(0, "event: brightness")186 scrollbar_active = false 187 end 188 189 function P.GraphicsFullscreenCheckbox_clicked(e)190 if block == falsethen191 search_mode = 0192 f = io.open(file, "r")193 firstline = f:read("*line") 194 text = firstline .. "\n"195 rendersystem = string.sub(firstline, 15)196 for line in f:lines() do197 if search_mode == 0then198 if string.find(line, rendersystem) ~= nil then199 search_mode = 1200 end 201 end202 if search_mode == 1 then203 if string.sub(line, 1, 11) == "Full Screen" then204 if fullscreen == true then 205 line = "Full Screen=No"206 fullscreen = false207 else208 line = "Full Screen=Yes" 209 fullscreen = true210 end211 search_mode = 2212 end213 end214 text = text .. line .. "\n"215 end 216 f:close()217 f = io.open(file, "w")218 f:write(text)219 f:close() 220 end221 end 222 223 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 224 413 hideMenuSheet(P.name) 225 414 end 226 415 416 function P.callback_Cancel_Clicked(e) 417 hideMenuSheet(P.name) 418 end 419 227 420 return P 228 421
Note: See TracChangeset
for help on using the changeset viewer.