def _init(self): """Initializes the settings and config for the application. The autosave directory and file name are established here. """ self.setAcceptDrops(True) DFG.DFGWidget.setSettings(self.settings) self.config = DFG.DFGConfig() # [andrew 20160414] despite similar names this is not the same as FABRIC_DIR userFabricDir = Core.CAPI.GetFabricDir() self.autosaveFilename = os.path.join(userFabricDir, 'autosave') if not os.path.exists(self.autosaveFilename): os.makedirs(self.autosaveFilename) autosaveBasename = 'autosave.' + str(os.getpid()) + '.canvas' self.autosaveFilename = os.path.join(self.autosaveFilename, autosaveBasename) print 'Will autosave to ' + self.autosaveFilename + ' every ' + str( CanvasWindow.autosaveIntervalSecs) + ' seconds'
def __init__(self, settings, unguarded): super(MainWindow, self).__init__() self.settings = settings DFG.DFGWidget.setSettings(settings) self.viewport = None self.dfgWidget = None self.currentGraph = None self.config = DFG.DFGConfig() self.autosaveFilename = os.path.join(fabricDir, 'autosave') if not os.path.exists(self.autosaveFilename): os.makedirs(self.autosaveFilename) autosaveBasename = 'autosave.' + str(os.getpid()) + '.canvas' self.autosaveFilename = os.path.join(self.autosaveFilename, autosaveBasename) print 'Will autosave to ' + self.autosaveFilename + ' every ' + str( MainWindow.autosaveIntervalSecs) + ' seconds' self.autosaveTimer = QtCore.QTimer() self.autosaveTimer.timeout.connect(self.autosave) self.autosaveTimer.start(MainWindow.autosaveIntervalSecs * 1000) self.windowTitle = 'Fabric Engine' self.lastFileName = '' self.onFileNameChanged('') statusBar = QtGui.QStatusBar(self) self.fpsLabel = QtGui.QLabel(statusBar) statusBar.addPermanentWidget(self.fpsLabel) self.setStatusBar(statusBar) statusBar.show() self.fpsTimer = QtCore.QTimer() self.fpsTimer.setInterval(1000) self.fpsTimer.timeout.connect(self.updateFPS) self.fpsTimer.start() client = Core.createClient({ 'unguarded': unguarded, 'reportCallback': self.reportCallback }) #options.licenseType = FabricCore::ClientLicenseType_Interactive client.loadExtension('Math') client.loadExtension('Parameters') client.loadExtension('Util') client.setStatusCallback(self.statusCallback) self.client = client self.qUndoStack = QtGui.QUndoStack() self.dfguiCommandHandler = DFG.DFGUICmdHandler_QUndo(self.qUndoStack) astManager = KLASTManager(client) self.evalContext = client.RT.types.EvalContext.create() self.evalContext = self.evalContext.getInstance('EvalContext') self.evalContext.host = 'Canvas' self.evalContext.graph = '' self.host = client.getDFGHost() binding = self.host.createBindingToNewGraph() self.lastSavedBindingVersion = binding.getVersion() self.lastAutosaveBindingVersion = self.lastSavedBindingVersion graph = binding.getExec() glFormat = QtOpenGL.QGLFormat() glFormat.setDoubleBuffer(True) glFormat.setDepth(True) glFormat.setAlpha(True) glFormat.setSampleBuffers(True) glFormat.setSamples(4) self.viewport = Viewports.GLViewportWidget( client, self.config.defaultWindowColor, glFormat, None, None) self.setCentralWidget(self.viewport) self.dfgWidget = DFG.DFGWidget(None, client, self.host, binding, '', graph, astManager, self.dfguiCommandHandler, self.config) self.contentChanged.connect(self.viewport.redraw) self.viewport.portManipulationRequested.connect( self.onPortManipulationRequested) dockFeatures = QtGui.QDockWidget.DockWidgetMovable | QtGui.QDockWidget.DockWidgetFloatable | QtGui.QDockWidget.DockWidgetClosable dfgDock = QtGui.QDockWidget('Canvas Graph', self) dfgDock.setObjectName('Canvas Graph') dfgDock.setFeatures(dockFeatures) dfgDock.setWidget(self.dfgWidget) self.addDockWidget(QtCore.Qt.BottomDockWidgetArea, dfgDock, QtCore.Qt.Vertical) self.timeLinePortIndex = -1 self.timeLinePortPath = None self.timeLine = Viewports.TimeLineWidget() self.timeLine.setTimeRange(MainWindow.defaultFrameIn, MainWindow.defaultFrameOut) self.timeLine.updateTime(1) timeLineDock = QtGui.QDockWidget("TimeLine", self) timeLineDock.setObjectName("TimeLine") timeLineDock.setFeatures(dockFeatures) timeLineDock.setWidget(self.timeLine) self.addDockWidget(QtCore.Qt.BottomDockWidgetArea, timeLineDock, QtCore.Qt.Vertical) treeWidget = DFG.PresetTreeWidget(self.dfgWidget.getDFGController(), self.config, True, False, True) treeDock = QtGui.QDockWidget("Explorer", self) treeDock.setObjectName("Explorer") treeDock.setFeatures(dockFeatures) treeDock.setWidget(treeWidget) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, treeDock) self.dfgWidget.newPresetSaved.connect(treeWidget.refresh) self.dfgValueEditor = DFG.DFGValueEditor( self.dfgWidget.getDFGController(), self.config) dfgValueEditorDockWidget = QtGui.QDockWidget("Value Editor", self) dfgValueEditorDockWidget.setObjectName("Values") dfgValueEditorDockWidget.setFeatures(dockFeatures) dfgValueEditorDockWidget.setWidget(self.dfgValueEditor) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dfgValueEditorDockWidget) self.logWidget = DFG.DFGLogWidget(self.config) logDockWidget = QtGui.QDockWidget("Log Messages", self) logDockWidget.setObjectName("Log") logDockWidget.setFeatures(dockFeatures) logDockWidget.setWidget(self.logWidget) logDockWidget.hide() self.addDockWidget(QtCore.Qt.TopDockWidgetArea, logDockWidget, QtCore.Qt.Vertical) self.qUndoView = QtGui.QUndoView(self.qUndoStack) self.qUndoView.setEmptyLabel("New Graph") undoDockWidget = QtGui.QDockWidget("History", self) undoDockWidget.setObjectName("History") undoDockWidget.setFeatures(dockFeatures) undoDockWidget.setWidget(self.qUndoView) undoDockWidget.hide() self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, undoDockWidget) self.newGraphAction = None self.loadGraphAction = None self.saveGraphAction = None self.saveGraphAsAction = None self.quitAction = None self.manipAction = None self.setGridVisibleAction = None self.resetCameraAction = None self.clearLogAction = None self.blockCompilationsAction = None controller = self.dfgWidget.getDFGController() controller.varsChanged.connect(treeWidget.refresh) controller.argsChanged.connect(self.onStructureChanged) controller.argValuesChanged.connect(self.onValueChanged) controller.defaultValuesChanged.connect(self.onValueChanged) self.dfgWidget.nodeInspectRequested.connect( self.onNodeInspectRequested) controller.dirty.connect(self.onDirty) controller.bindingChanged.connect(self.dfgValueEditor.setBinding) controller.nodeRemoved.connect(self.dfgValueEditor.onNodeRemoved) tabSearchWidget = self.dfgWidget.getTabSearchWidget() tabSearchWidget.enabled.connect(self.enableShortCuts) self.timeLine.frameChanged.connect(self.onFrameChanged) self.dfgWidget.onGraphSet.connect(self.onGraphSet) self.restoreGeometry(settings.value("mainWindow/geometry")) self.restoreState(settings.value("mainWindow/state")) self.dfgWidget.additionalMenuActionsRequested.connect( self.onAdditionalMenuActionsRequested) self.dfgWidget.populateMenuBar(self.menuBar()) windowMenu = self.menuBar().addMenu("&Window") toggleAction = dfgDock.toggleViewAction() toggleAction.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_4) windowMenu.addAction(toggleAction) toggleAction = treeDock.toggleViewAction() toggleAction.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_5) windowMenu.addAction(toggleAction) toggleAction = dfgValueEditorDockWidget.toggleViewAction() toggleAction.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_6) windowMenu.addAction(toggleAction) toggleAction = timeLineDock.toggleViewAction() toggleAction.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_9) windowMenu.addAction(toggleAction) windowMenu.addSeparator() toggleAction = undoDockWidget.toggleViewAction() toggleAction.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_7) windowMenu.addAction(toggleAction) toggleAction = logDockWidget.toggleViewAction() toggleAction.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_8) windowMenu.addAction(toggleAction) self.onFrameChanged(self.timeLine.getTime()) self.onGraphSet(self.dfgWidget.getUIGraph()) self.onSidePanelInspectRequested() self.installEventFilter(MainWindowEventFilter(self))