Version/Resource Pack buttons reorganize when toolbar labels are off.

This commit is contained in:
David Vierra 2015-09-15 00:14:43 -10:00
parent e9ec1e7d2f
commit dbb9f5871f
2 changed files with 59 additions and 25 deletions

View File

@ -120,14 +120,6 @@ class MCEditApp(QtGui.QApplication):
log.info("Loaded main window.")
def toggleToolbarText(enable):
if enable:
style = Qt.ToolButtonTextUnderIcon
else:
style = Qt.ToolButtonIconOnly
self.mainWindow.toolsToolBar.setToolButtonStyle(style)
self.mainWindow.panelsToolBar.setToolButtonStyle(style)
tttIcon = QtGui.QIcon(resourcePath("mcedit2/assets/mcedit2/icons/toolbar_text.png"))
self.toggleToolbarTextAction = QtGui.QAction(tttIcon, "Toolbar Text", self)
@ -135,8 +127,7 @@ class MCEditApp(QtGui.QApplication):
self.toggleToolbarTextAction.setCheckable(True)
self.toggleToolbarTextAction.setChecked(True)
self.toggleToolbarTextAction.toggled.connect(toggleToolbarText)
self.toggleToolbarTextAction.__toggled = toggleToolbarText
self.toggleToolbarTextAction.toggled.connect(self.toggleToolbarText)
# --- OpenGL ---
@ -727,6 +718,19 @@ class MCEditApp(QtGui.QApplication):
# XXX trigger viewportMoved to update minimap after GL initialization
# session.editorTab.currentView().viewportMoved.emit(session.editorTab.currentView())
# --- Toolbar ---
toolbarTextToggled = QtCore.Signal(bool)
def toggleToolbarText(self, enable):
if enable:
style = Qt.ToolButtonTextUnderIcon
else:
style = Qt.ToolButtonIconOnly
self.mainWindow.toolsToolBar.setToolButtonStyle(style)
self.mainWindow.panelsToolBar.setToolButtonStyle(style)
self.toolbarTextToggled.emit(enable)
# --- Library ---
def libraryItemDoubleClicked(self, filename):

View File

@ -370,28 +370,31 @@ class EditorSession(QtCore.QObject):
self.panelActions.append(dimAction)
self.panelActions.append(None)
# --- Versions/Resource Packs ---
versionRPAction = self.versionRPAction = QtGui.QWidgetAction(self)
mcVersionButton = self.changeMCVersionButton = QtGui.QToolButton(autoRaise=True)
self.mcVersionButton = mcVersionButton = self.changeMCVersionButton = QtGui.QToolButton(autoRaise=True)
mcVersionButton.setText(self.minecraftVersionLabel())
self.mcVersionMenu = QtGui.QMenu()
mcVersionButton.setMenu(self.mcVersionMenu)
mcVersionButton.setPopupMode(QtGui.QToolButton.InstantPopup)
resourcePackButton = self.changeResourcePackButton = QtGui.QToolButton(autoRaise=True)
self.resourcePackButton = resourcePackButton = self.changeResourcePackButton = QtGui.QToolButton(autoRaise=True)
resourcePackButton.setText(self.resourcePackLabel())
self.resourcePackMenu = QtGui.QMenu()
resourcePackButton.setMenu(self.resourcePackMenu)
resourcePackButton.setPopupMode(QtGui.QToolButton.InstantPopup)
versionRPColumn = Column(mcVersionButton, resourcePackButton)
versionRPWidget = QtGui.QWidget()
versionRPWidget.setLayout(versionRPColumn)
versionRPAction.setDefaultWidget(versionRPWidget)
self.versionRPWidget = QtGui.QStackedWidget()
self.versionRPWidget.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
self.versionRPAction.setDefaultWidget(self.versionRPWidget)
self.panelActions.append(versionRPAction)
QtGui.qApp.toolbarTextToggled.connect(self.toolbarTextChanged)
self.toolbarTextChanged(True) # xxx
self._updateVersionsAndResourcePacks()
progress("Loading overworld dimension")
@ -425,14 +428,6 @@ class EditorSession(QtCore.QObject):
if hasattr(progress, 'progressCount') and progress.progressCount != progressMax:
log.info("Update progressMax to %d, please.", progress.progressCount)
def minecraftVersionLabel(self):
version = minecraftinstall.currentVersionOption.value() or self.tr("(Not set)")
return self.tr("Minecraft Version: %s") % version
def resourcePackLabel(self):
resourcePack = minecraftinstall.currentResourcePackOption.value() or self.tr("(Default)")
return self.tr("Resource Pack: %s") % resourcePack
def _updateVersionsAndResourcePacks(self):
self.mcVersionMapper = QtCore.QSignalMapper()
@ -459,6 +454,31 @@ class EditorSession(QtCore.QObject):
self.resourcePackMapper.setMapping(resourcePackAction, resourcePack)
resourcePackAction.triggered.connect(self.resourcePackMapper.map)
def toolbarTextChanged(self, enable):
if enable:
Box = Column
else:
Box = Row
widget = self.versionRPAction.defaultWidget()
if widget:
layout = widget.layout()
while layout.count():
layout.takeAt(0)
self.mcVersionButton.setParent(None)
self.resourcePackButton.setParent(None)
versionRPColumn = Box(self.mcVersionButton, self.resourcePackButton, margin=0)
versionRPColumn.addStretch()
widget = QtGui.QWidget()
widget.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
widget.setLayout(versionRPColumn)
while self.versionRPWidget.count():
self.versionRPWidget.takeAt(0)
self.versionRPWidget.addWidget(widget)
def changeResourcePack(self, packName):
packDisplayName = packName or "(default)"
log.info("Changing to resource pack %s", packName)
@ -495,6 +515,14 @@ class EditorSession(QtCore.QObject):
self.reloadModels()
dialog.hide()
def minecraftVersionLabel(self):
version = minecraftinstall.currentVersionOption.value() or self.tr("(Not set)")
return self.tr("Minecraft Version: %s") % version
def resourcePackLabel(self):
resourcePack = minecraftinstall.currentResourcePackOption.value() or self.tr("(Default)")
return self.tr("Resource Pack: %s") % resourcePack
# Connecting these signals to the EditorTab creates a circular reference through
# the Qt objects, preventing the EditorSession from being destroyed
@ -1124,6 +1152,8 @@ class EditorTab(QtGui.QWidget):
self.toolOptionsDockWidget = MCEDockWidget("Tool Options", objectName="ToolOptionsWidget", floating=True)
self.toolOptionsDockWidget.setWidget(self.toolOptionsArea)
self.toolOptionsDockWidget.setUnfocusedOpacity(0.8)
editorSession.dockWidgets.append((Qt.LeftDockWidgetArea, self.miniMapDockWidget))
editorSession.dockWidgets.append((Qt.LeftDockWidgetArea, self.toolOptionsDockWidget))