organize editorapp.py

This commit is contained in:
David Vierra 2015-01-06 11:25:07 -10:00
parent de969c05f1
commit 29b5fa2b28

View File

@ -237,6 +237,8 @@ class MCEditApp(QtGui.QApplication):
QtCore.QTimer.singleShot(0, self.didFinishLaunching) QtCore.QTimer.singleShot(0, self.didFinishLaunching)
# --- Startup code ---
def didFinishLaunching(self): def didFinishLaunching(self):
# --- Open files from command line --- # --- Open files from command line ---
@ -251,6 +253,39 @@ class MCEditApp(QtGui.QApplication):
eval_globals = {"session": session} eval_globals = {"session": session}
exec(self.args.eval, eval_globals) exec(self.args.eval, eval_globals)
consoleWidget = None
def createDebugMenu(self):
debugMenu = self.mainWindow.menuBar().addMenu("&Debug")
def raiseError():
raise ValueError("User requested error")
debugMenu.addAction("Raise Error").triggered.connect(raiseError)
def showConsole():
if self.consoleWidget is None:
self.consoleWidget = terminal_widget(sessions=self.sessions)
self.consoleWidget.show()
debugMenu.addAction("IPython Console").triggered.connect(showConsole)
objGraph = ObjGraphWidget()
def showObjGraph():
objGraph.show()
debugMenu.addAction("ObjGraph").triggered.connect(showObjGraph)
def showHeapy():
from guppy import hpy
h = hpy()
print(h.heap())
debugMenu.addAction("Heap Trace").triggered.connect(showHeapy)
return debugMenu
def ensureSingle(self): def ensureSingle(self):
serverName = "MCEdit.Application" serverName = "MCEdit.Application"
@ -295,6 +330,8 @@ class MCEditApp(QtGui.QApplication):
except EnvironmentError as e: except EnvironmentError as e:
log.info("%r", e) log.info("%r", e)
# --- Status Bar ---
def updateStatusLabel(self, pos=None, blocktype=None, cps=None, fps=None): def updateStatusLabel(self, pos=None, blocktype=None, cps=None, fps=None):
if pos is not None: if pos is not None:
self.positionLabel.setText("%s" % (tuple(pos),)) self.positionLabel.setText("%s" % (tuple(pos),))
@ -382,6 +419,8 @@ class MCEditApp(QtGui.QApplication):
self.sessionDockWidgets[:] = () self.sessionDockWidgets[:] = ()
# --- Recent files ---
def updateRecentFilesMenu(self): def updateRecentFilesMenu(self):
recentFiles = RecentFilesSetting.value() recentFiles = RecentFilesSetting.value()
for filename in recentFiles: for filename in recentFiles:
@ -408,39 +447,15 @@ class MCEditApp(QtGui.QApplication):
# self.mceditMenu.addAction(act) # self.mceditMenu.addAction(act)
# self.recentFilesActions.append(act) # self.recentFilesActions.append(act)
def addRecentFile(self, filename):
recentFiles = RecentFilesSetting.jsonValue([])
recentFiles.append(filename)
if len(recentFiles) > self.recentFileLimit:
recentFiles = recentFiles[1:]
consoleWidget = None RecentFilesSetting.setJsonValue(recentFiles)
def createDebugMenu(self): # --- Tabs and sessions ---
debugMenu = self.mainWindow.menuBar().addMenu("&Debug")
def raiseError():
raise ValueError("User requested error")
debugMenu.addAction("Raise Error").triggered.connect(raiseError)
def showConsole():
if self.consoleWidget is None:
self.consoleWidget = terminal_widget(sessions=self.sessions)
self.consoleWidget.show()
debugMenu.addAction("IPython Console").triggered.connect(showConsole)
objGraph = ObjGraphWidget()
def showObjGraph():
objGraph.show()
debugMenu.addAction("ObjGraph").triggered.connect(showObjGraph)
def showHeapy():
from guppy import hpy
h = hpy()
print(h.heap())
debugMenu.addAction("Heap Trace").triggered.connect(showHeapy)
return debugMenu
def tabCloseRequested(self, index): def tabCloseRequested(self, index):
tab = self.tabWidget.widget(index) tab = self.tabWidget.widget(index)
@ -491,16 +506,6 @@ class MCEditApp(QtGui.QApplication):
tab = self.currentTab() tab = self.currentTab()
return getattr(tab, 'editorSession', None) return getattr(tab, 'editorSession', None)
def showBlockList(self):
session = self.currentSession()
blockList = BlockListWidget(session.worldEditor.blocktypes, session.textureAtlas)
self.tabWidget.insertTab(0, blockList, "Blocks for world %s" % session.filename)
self.tabWidget.setCurrentIndex(0)
def hideWorldList(self):
self.tabWidget.removeTab(self.tabWidget.indexOf(self.worldList))
def loadFile(self, filename, readonly=False): def loadFile(self, filename, readonly=False):
self.hideWorldList() self.hideWorldList()
try: try:
@ -521,6 +526,8 @@ class MCEditApp(QtGui.QApplication):
# XXX trigger viewportMoved to update minimap after GL initialization # XXX trigger viewportMoved to update minimap after GL initialization
# session.editorTab.currentView().viewportMoved.emit(session.editorTab.currentView()) # session.editorTab.currentView().viewportMoved.emit(session.editorTab.currentView())
# --- World List actions ---
def editWorldFromList(self, filename): def editWorldFromList(self, filename):
for editor in self.sessions: for editor in self.sessions:
if editor.filename == filename: if editor.filename == filename:
@ -597,12 +604,16 @@ class MCEditApp(QtGui.QApplication):
recentFileLimit = 15 recentFileLimit = 15
def addRecentFile(self, filename): # --- App-level widgets(?) ---
recentFiles = RecentFilesSetting.jsonValue([])
recentFiles.append(filename)
if len(recentFiles) > self.recentFileLimit:
recentFiles = recentFiles[1:]
RecentFilesSetting.setJsonValue(recentFiles) def showBlockList(self):
session = self.currentSession()
blockList = BlockListWidget(session.worldEditor.blocktypes, session.textureAtlas)
self.tabWidget.insertTab(0, blockList, "Blocks for world %s" % session.filename)
self.tabWidget.setCurrentIndex(0)
def hideWorldList(self):
self.tabWidget.removeTab(self.tabWidget.indexOf(self.worldList))
RecentFilesSetting = Settings().getOption('open_world_dialog/recent_files') RecentFilesSetting = Settings().getOption('open_world_dialog/recent_files')