Source code for panels.graphics

import albow
from albow.dialogs import Dialog
from resource_packs import ResourcePackHandler
import pymclevel
from config import config


[docs]class GraphicsPanel(Dialog): anchor = 'wh' def __init__(self, mcedit): Dialog.__init__(self) self.mcedit = mcedit self.saveOldConfig = { config.settings.fov: config.settings.fov.get(), config.settings.targetFPS: config.settings.targetFPS.get(), config.settings.vertexBufferLimit: config.settings.vertexBufferLimit.get(), config.settings.fastLeaves: config.settings.fastLeaves.get(), config.settings.roughGraphics: config.settings.roughGraphics.get(), config.settings.enableMouseLag: config.settings.enableMouseLag.get(), config.settings.maxViewDistance: config.settings.maxViewDistance.get() } self.saveOldResourcePack = ResourcePackHandler.Instance().get_selected_resource_pack_name() self.fieldOfViewRow = albow.FloatInputRow("Field of View: ", ref=config.settings.fov, width=100, min=25, max=120) self.targetFPSRow = albow.IntInputRow("Target FPS: ", ref=config.settings.targetFPS, width=100, min=1, max=60) self.bufferLimitRow = albow.IntInputRow("Vertex Buffer Limit (MB): ", ref=config.settings.vertexBufferLimit, width=100, min=0) fastLeavesRow = albow.CheckBoxLabel("Fast Leaves", ref=config.settings.fastLeaves, tooltipText="Leaves are solid, like Minecraft's 'Fast' graphics") roughGraphicsRow = albow.CheckBoxLabel("Rough Graphics", ref=config.settings.roughGraphics, tooltipText="All blocks are drawn the same way (overrides 'Fast Leaves')") enableMouseLagRow = albow.CheckBoxLabel("Enable Mouse Lag", ref=config.settings.enableMouseLag, tooltipText="Enable choppy mouse movement for faster loading.") playerSkins = albow.CheckBoxLabel("Show Player Skins", ref=config.settings.downloadPlayerSkins, tooltipText="Show player skins while editing the world") self.maxView = albow.IntInputRow("Max View Distance", ref=config.settings.maxViewDistance, tooltipText="Sets the maximum view distance for the renderer. Values over 32 can possibly be unstable, so use it at your own risk" ) self.maxView.subwidgets[1]._increment = 2 packs = ResourcePackHandler.Instance().get_available_resource_packs() packs.remove('Default Resource Pack') packs.sort() packs.insert(0, 'Default Resource Pack') self.resourcePackButton = albow.ChoiceButton(packs, choose=self.change_texture, doNotTranslate=True) self.resourcePackButton.selectedChoice = self.saveOldResourcePack settingsColumn = albow.Column((fastLeavesRow, roughGraphicsRow, enableMouseLagRow, # texturePackRow, self.fieldOfViewRow, self.targetFPSRow, self.bufferLimitRow, self.maxView, playerSkins, self.resourcePackButton, ), align='r') settingsColumn = albow.Column((albow.Label("Graphics Settings"), settingsColumn)) settingsRow = albow.Row((settingsColumn,)) buttonsRow = albow.Row((albow.Button("OK", action=self.dismiss), albow.Button("Cancel", action=self.cancel))) resetToDefaultRow = albow.Row((albow.Button("Reset to default", action=self.resetDefault),)) optionsColumn = albow.Column((settingsRow, buttonsRow, resetToDefaultRow)) self.add(optionsColumn) self.shrink_wrap() def _reloadTextures(self, pack): if hasattr(pymclevel.alphaMaterials, "terrainTexture"): self.mcedit.displayContext.loadTextures()
[docs] def change_texture(self): ResourcePackHandler.Instance().set_selected_resource_pack_name(self.resourcePackButton.selectedChoice) self.mcedit.displayContext.loadTextures()
texturePack = config.settings.skin.property(_reloadTextures)
[docs] def checkMaxView(self): if (config.settings.maxViewDistance.get() % 2) != 0: config.settings.maxViewDistance.set(config.settings.maxViewDistance.get()-1)
[docs] def dismiss(self, *args, **kwargs): self.reshowNumberFields() self.checkMaxView() for key in self.saveOldConfig.keys(): self.saveOldConfig[key] = key.get() self.saveOldResourcePack = self.resourcePackButton.selectedChoice config.save() Dialog.dismiss(self, *args, **kwargs)
[docs] def cancel(self, *args, **kwargs): Changes = False self.reshowNumberFields() for key in self.saveOldConfig.keys(): if key.get() != self.saveOldConfig[key]: Changes = True if self.saveOldResourcePack != self.resourcePackButton.selectedChoice: Changes = True if not Changes: Dialog.dismiss(self, *args, **kwargs) return result = albow.ask("Do you want to save your changes?", ["Save", "Don't Save", "Cancel"]) if result == "Cancel": return if result == "Save": self.dismiss(*args, **kwargs) return for key in self.saveOldConfig.keys(): key.set(self.saveOldConfig[key]) if self.resourcePackButton.selectedChoice != self.saveOldResourcePack: self.resourcePackButton.selectedChoice = self.saveOldResourcePack self.change_texture() config.save() Dialog.dismiss(self, *args, **kwargs)
[docs] def resetDefault(self): for key in self.saveOldConfig.keys(): key.set(key.default) self.reshowNumberFields() if self.resourcePackButton.selectedChoice != "Default Resource Pack": self.resourcePackButton.selectedChoice = "Default Resource Pack" self.change_texture() config.save()
[docs] def reshowNumberFields(self): self.fieldOfViewRow.subwidgets[1].editing = False self.targetFPSRow.subwidgets[1].editing = False self.bufferLimitRow.subwidgets[1].editing = False self.maxView.subwidgets[1].editing = False
[docs] def dispatch_key(self, name, evt): super(GraphicsPanel, self).dispatch_key(name, evt) if name == "key_down": keyname = self.get_root().getKey(evt) if keyname == 'Escape': self.cancel()