diff --git a/src/mcedit2/editortools/brush/__init__.py b/src/mcedit2/editortools/brush/__init__.py index 73f0d34..75628a1 100644 --- a/src/mcedit2/editortools/brush/__init__.py +++ b/src/mcedit2/editortools/brush/__init__.py @@ -9,7 +9,7 @@ from PySide import QtGui from mcedit2.editortools import EditorTool from mcedit2.command import SimplePerformCommand from mcedit2.editortools.brush.masklevel import FakeBrushSection -from mcedit2.editortools.brush.modes import BrushModes +from mcedit2.editortools.brush.modes import BrushModeClasses from mcedit2.rendering import worldscene from mcedit2.rendering.depths import DepthOffset from mcedit2.rendering.scenegraph.matrix import TranslateNode @@ -101,6 +101,10 @@ class BrushTool(EditorTool): self.brushMode = None self.brushLoader = None + self.brushModesByName = {cls.name:cls() for cls in BrushModeClasses} + modes = self.brushModesByName.values() + modes.sort(key=lambda m: m.name) + self.toolWidget.brushModeInput.setModes(modes) BrushModeSetting.connectAndCall(self.modeSettingChanged) self.cursorWorldScene = None @@ -184,7 +188,7 @@ class BrushTool(EditorTool): return options def modeSettingChanged(self, value): - self.brushMode = BrushModes.modesByName[value] + self.brushMode = self.brushModesByName[value] stack = self.toolWidget.modeOptionsStack while stack.count(): stack.removeWidget(stack.widget(0)) @@ -224,8 +228,10 @@ class BrushTool(EditorTool): class BrushModeWidget(QtGui.QComboBox): def __init__(self, *args, **kwargs): super(BrushModeWidget, self).__init__(*args, **kwargs) + self.currentIndexChanged.connect(self.indexDidChange) - for mode in BrushModes.allModes: + def setModes(self, modes): + for mode in modes: self.addItem(mode.displayName, mode.name) currentID = BrushModeSetting.value() @@ -233,7 +239,6 @@ class BrushModeWidget(QtGui.QComboBox): if currentIndex == -1: currentIndex = 0 self.setCurrentIndex(currentIndex) - self.currentIndexChanged.connect(self.indexDidChange) def indexDidChange(self): BrushModeSetting.setValue(self.itemData(self.currentIndex())) diff --git a/src/mcedit2/editortools/brush/modes.py b/src/mcedit2/editortools/brush/modes.py index 4ad5ba0..ff8cd6e 100644 --- a/src/mcedit2/editortools/brush/modes.py +++ b/src/mcedit2/editortools/brush/modes.py @@ -168,9 +168,4 @@ class Biome(BrushMode): return cursorLevel -class BrushModes(object): - # load from plugins here - fill = Fill() - biome = Biome() - allModes = [fill, biome] - modesByName = {mode.name: mode for mode in allModes} +BrushModeClasses = [Fill, Biome]