Many editing actions are now disabled in readonly mode

This commit is contained in:
David Vierra 2016-07-29 15:51:06 -10:00
parent d55be3de0b
commit bae09c1cb2

View File

@ -80,6 +80,28 @@ class PasteImportCommand(QtGui.QUndoCommand):
self.editorSession.moveTool.currentImport = self.pendingImport self.editorSession.moveTool.currentImport = self.pendingImport
self.editorSession.chooseTool("Move") self.editorSession.chooseTool("Move")
class EditingAction(QtGui.QAction):
"""
QAction subclass that is disabled if the EditorSession is in read-only mode.
"""
def __init__(self, editorSession, *a, **kw):
"""
QAction ( QObject * parent )
QAction ( const QString & text, QObject * parent )
QAction ( const QIcon & icon, const QString & text, QObject * parent )
PySide.QtGui.QAction(PySide.QtCore.QObject)
PySide.QtGui.QAction(unicode, PySide.QtCore.QObject)
PySide.QtGui.QAction(PySide.QtGui.QIcon, unicode, PySide.QtCore.QObject)
"""
self.editorSession = editorSession
a = a + (editorSession,)
super(EditingAction, self).__init__(*a, **kw)
self.setEnabled(not editorSession.readonly)
def setEnabled(self, enabled):
super(EditingAction, self).setEnabled(enabled and not self.editorSession.readonly)
class EditorSession(QtCore.QObject): class EditorSession(QtCore.QObject):
""" """
@ -204,8 +226,8 @@ class EditorSession(QtCore.QObject):
# --- # ---
self.actionCut = QtGui.QAction( self.actionCut = EditingAction(self,
self.tr("Cut"), self, triggered=self.cut, enabled=False) self.tr("Cut"), triggered=self.cut, enabled=False)
self.actionCut.setShortcut(QtGui.QKeySequence.Cut) self.actionCut.setShortcut(QtGui.QKeySequence.Cut)
self.actionCut.setObjectName("actionCut") self.actionCut.setObjectName("actionCut")
@ -218,22 +240,22 @@ class EditorSession(QtCore.QObject):
self.actionCopy.setObjectName("actionCopy") self.actionCopy.setObjectName("actionCopy")
self.menuEdit.addAction(self.actionCopy) self.menuEdit.addAction(self.actionCopy)
self.actionPaste = QtGui.QAction( self.actionPaste = EditingAction(self,
self.tr("Paste"), self, triggered=self.paste, enabled=False) self.tr("Paste"), triggered=self.paste, enabled=False)
self.actionPaste.setShortcut(QtGui.QKeySequence.Paste) self.actionPaste.setShortcut(QtGui.QKeySequence.Paste)
self.actionPaste.setObjectName("actionPaste") self.actionPaste.setObjectName("actionPaste")
self.menuEdit.addAction(self.actionPaste) self.menuEdit.addAction(self.actionPaste)
self.actionPaste_Blocks = QtGui.QAction( self.actionPaste_Blocks = EditingAction(self,
self.tr("Paste Blocks"), self, triggered=self.pasteBlocks, enabled=False) self.tr("Paste Blocks"), triggered=self.pasteBlocks, enabled=False)
self.actionPaste_Blocks.setShortcut(QtGui.QKeySequence("Ctrl+Shift+V")) self.actionPaste_Blocks.setShortcut(QtGui.QKeySequence("Ctrl+Shift+V"))
self.actionPaste_Blocks.setObjectName("actionPaste_Blocks") self.actionPaste_Blocks.setObjectName("actionPaste_Blocks")
self.menuEdit.addAction(self.actionPaste_Blocks) self.menuEdit.addAction(self.actionPaste_Blocks)
self.actionPaste_Entities = QtGui.QAction( self.actionPaste_Entities = EditingAction(self,
self.tr("Paste Entities"), self, triggered=self.pasteEntities, enabled=False) self.tr("Paste Entities"), triggered=self.pasteEntities, enabled=False)
self.actionPaste_Entities.setShortcut(QtGui.QKeySequence("Ctrl+Alt+V")) self.actionPaste_Entities.setShortcut(QtGui.QKeySequence("Ctrl+Alt+V"))
self.actionPaste_Entities.setObjectName("actionPaste_Entities") self.actionPaste_Entities.setObjectName("actionPaste_Entities")
@ -242,24 +264,24 @@ class EditorSession(QtCore.QObject):
# --- # ---
self.actionClear = QtGui.QAction( self.actionClear = EditingAction(self,
self.tr("Delete"), self, triggered=self.deleteSelection, enabled=False) self.tr("Delete"), triggered=self.deleteSelection, enabled=False)
self.actionClear.setShortcut(QtGui.QKeySequence.Delete) self.actionClear.setShortcut(QtGui.QKeySequence.Delete)
self.actionClear.setObjectName("actionClear") self.actionClear.setObjectName("actionClear")
self.menuEdit.addAction(self.actionClear) self.menuEdit.addAction(self.actionClear)
self.actionDeleteBlocks = QtGui.QAction( self.actionDeleteBlocks = EditingAction(self,
self.tr("Delete Blocks"), self, triggered=self.deleteBlocks, enabled=False) self.tr("Delete Blocks"), triggered=self.deleteBlocks, enabled=False)
self.actionDeleteBlocks.setShortcut(QtGui.QKeySequence("Shift+Del")) self.actionDeleteBlocks.setShortcut(QtGui.QKeySequence("Shift+Del"))
self.actionDeleteBlocks.setObjectName("actionDeleteBlocks") self.actionDeleteBlocks.setObjectName("actionDeleteBlocks")
self.menuEdit.addAction(self.actionDeleteBlocks) self.menuEdit.addAction(self.actionDeleteBlocks)
self.actionDeleteEntities = QtGui.QAction( self.actionDeleteEntities = EditingAction(self,
self.tr("Delete Entities"), self, triggered=self.deleteEntities, enabled=False) self.tr("Delete Entities"), triggered=self.deleteEntities, enabled=False)
self.actionDeleteEntities = QtGui.QAction( self.actionDeleteEntities = EditingAction(self,
self.tr("Delete Entities And Items"), self, triggered=self.deleteEntitiesAndItems, enabled=False) self.tr("Delete Entities And Items"), triggered=self.deleteEntitiesAndItems, enabled=False)
self.actionDeleteEntities.setShortcut(QtGui.QKeySequence("Shift+Alt+Del")) self.actionDeleteEntities.setShortcut(QtGui.QKeySequence("Shift+Alt+Del"))
self.actionDeleteEntities.setObjectName("actionDeleteEntities") self.actionDeleteEntities.setObjectName("actionDeleteEntities")
@ -268,8 +290,8 @@ class EditorSession(QtCore.QObject):
# --- # ---
self.actionFill = QtGui.QAction( self.actionFill = EditingAction(self,
self.tr("Fill"), self, triggered=self.fill, enabled=False) self.tr("Fill"), triggered=self.fill, enabled=False)
self.actionFill.setShortcut(QtGui.QKeySequence("Shift+Ctrl+F")) self.actionFill.setShortcut(QtGui.QKeySequence("Shift+Ctrl+F"))
self.actionFill.setObjectName("actionFill") self.actionFill.setObjectName("actionFill")
@ -345,15 +367,15 @@ class EditorSession(QtCore.QObject):
self.actionExport = QtGui.QAction(self.tr("Export Structure Block .nbt"), self, triggered=self.exportStructure) self.actionExport = QtGui.QAction(self.tr("Export Structure Block .nbt"), self, triggered=self.exportStructure)
self.menuImportExport.addAction(self.actionExport) self.menuImportExport.addAction(self.actionExport)
self.actionImport = QtGui.QAction(self.tr("Import"), self, triggered=self.import_) self.actionImport = EditingAction(self, self.tr("Import"), triggered=self.import_)
self.actionImport.setShortcut(QtGui.QKeySequence("Ctrl+Shift+D")) self.actionImport.setShortcut(QtGui.QKeySequence("Ctrl+Shift+D"))
self.menuImportExport.addAction(self.actionImport) self.menuImportExport.addAction(self.actionImport)
self.actionImport = QtGui.QAction(self.tr("Show Exports Library"), self, self.actionShowExportsLibrary = QtGui.QAction(self.tr("Show Exports Library"), self,
triggered=QtGui.qApp.libraryDockWidget.toggleViewAction().trigger) triggered=QtGui.qApp.libraryDockWidget.toggleViewAction().trigger)
self.actionImport.setShortcut(QtGui.QKeySequence("Ctrl+Shift+L")) self.actionShowExportsLibrary.setShortcut(QtGui.QKeySequence("Ctrl+Shift+L"))
self.menuImportExport.addAction(self.actionImport) self.menuImportExport.addAction(self.actionShowExportsLibrary)
self.menus.append(self.menuImportExport) self.menus.append(self.menuImportExport)
@ -361,12 +383,12 @@ class EditorSession(QtCore.QObject):
self.menuChunk = QtGui.QMenu(self.tr("Chunk")) self.menuChunk = QtGui.QMenu(self.tr("Chunk"))
self.actionDeleteChunks = QtGui.QAction(self.tr("Delete Chunks"), self, triggered=self.deleteChunks) self.actionDeleteChunks = EditingAction(self, self.tr("Delete Chunks"), triggered=self.deleteChunks)
self.actionCreateChunks = QtGui.QAction(self.tr("Create Chunks"), self, triggered=self.createChunks) self.actionCreateChunks = EditingAction(self, self.tr("Create Chunks"), triggered=self.createChunks)
self.actionRepopChunks = QtGui.QAction(self.tr("Mark Chunks For Repopulation"), self.actionRepopChunks = EditingAction(self, self.tr("Mark Chunks For Repopulation"),
self, triggered=self.repopChunks) triggered=self.repopChunks)
self.actionRepopChunks = QtGui.QAction(self.tr("Unmark Chunks For Repopulation"), self.actionRepopChunks = EditingAction(self, self.tr("Unmark Chunks For Repopulation"),
self, triggered=self.unRepopChunks) triggered=self.unRepopChunks)
self.menuChunk.addAction(self.actionDeleteChunks) self.menuChunk.addAction(self.actionDeleteChunks)
self.menuChunk.addAction(self.actionCreateChunks) self.menuChunk.addAction(self.actionCreateChunks)
@ -408,7 +430,7 @@ class EditorSession(QtCore.QObject):
saveIcon = QtGui.QIcon(resourcePath("mcedit2/assets/mcedit2/icons/save.png")) saveIcon = QtGui.QIcon(resourcePath("mcedit2/assets/mcedit2/icons/save.png"))
saveIcon.addFile(resourcePath("mcedit2/assets/mcedit2/icons/save_ok.png"), mode=QtGui.QIcon.Disabled) saveIcon.addFile(resourcePath("mcedit2/assets/mcedit2/icons/save_ok.png"), mode=QtGui.QIcon.Disabled)
self.actionSave = QtGui.QAction(saveIcon, self.tr("Save"), self, triggered=self.save) self.actionSave = EditingAction(self, saveIcon, self.tr("Save"), triggered=self.save)
self.actionSave.setEnabled(False) self.actionSave.setEnabled(False)
self.topToolbarActions.append(self.actionSave) self.topToolbarActions.append(self.actionSave)
@ -1492,7 +1514,7 @@ class EditorTab(QtGui.QWidget):
for i in range(self.viewStack.count()): for i in range(self.viewStack.count()):
self.viewStack.removeWidget(self.viewStack.widget(0)) self.viewStack.removeWidget(self.viewStack.widget(0))
self.editorSession = None self.editorSession = None
def setDayTime(self, value): def setDayTime(self, value):