def __init__(self, projectPathDict, library, busyWidget, colorScheme, useData, app, parent): QtGui.QWidget.__init__(self, parent) self.app = app self.useData = useData self.library = library self.projects = parent self.colorScheme = colorScheme self.projectPathDict = projectPathDict self.loadProjectData() self.busyWidget = busyWidget self.buildStatusWidget = BuildStatusWidget(self.app, self.useData) mainLayout = QtGui.QVBoxLayout() mainLayout.setMargin(0) mainLayout.setSpacing(0) self.setLayout(mainLayout) self.standardToolbar = QtGui.QToolBar("Standard") self.standardToolbar.setMovable(False) self.standardToolbar.setIconSize(QtCore.QSize(36, 36)) self.standardToolbar.setToolButtonStyle(3) self.standardToolbar.setContextMenuPolicy(QtCore.Qt.PreventContextMenu) self.standardToolbar.setObjectName("StandardToolBar") mainLayout.addWidget(self.standardToolbar) widget = QtGui.QWidget() vbox = QtGui.QVBoxLayout() vbox.setMargin(0) vbox.setSpacing(0) widget.setLayout(vbox) self.vSplitter = VerticalSplitter() mainLayout.addWidget(self.vSplitter) self.hSplitter = QtGui.QSplitter() self.hSplitter.setObjectName("hSplitter") self.vSplitter.addWidget(self.hSplitter) self.bottomStack = QtGui.QStackedWidget() self.vSplitter.addWidget(self.bottomStack) self.navigator = QtGui.QTabWidget() self.navigator.setObjectName("navigator") self.hSplitter.addWidget(self.navigator) self.hSplitter.addWidget(widget) self.bottomStackSwitcher = StackSwitcher(self.bottomStack) self.bottomStackSwitcher.setStyleSheet(StyleSheet.bottomSwitcherStyle) self.messagesWidget = MessagesWidget(self.bottomStackSwitcher, self.vSplitter) self.createActions() self.manageFavourites = Favourites(self.projectData['favourites'], self.messagesWidget, self) self.externalLauncher = ExternalLauncher(self.projectData["launchers"], self) self.writePad = WritePad(self.projectPathDict["notes"], self.projectPathDict["name"], self) self.bookmarkToolbar = QtGui.QToolBar("Bookmarks") self.bookmarkToolbar.setMovable(False) self.bookmarkToolbar.setFloatable(False) self.bookmarkToolbar.setContextMenuPolicy(QtCore.Qt.PreventContextMenu) self.bookmarkToolbar.setObjectName("Bookmarks") self.bookmarkToolbar.addSeparator() self.editorTabWidget = EditorTabWidget( self.useData, self.projectPathDict, self.projectData["settings"], self.messagesWidget, self.colorScheme, self.busyWidget, self.bookmarkToolbar, self.app, self.manageFavourites, self.externalLauncher, self) vbox.addWidget(self.editorTabWidget) self.manageFavourites.openFile.connect(self.editorTabWidget.loadfile) self.editorTabWidget.updateRecentFilesList.connect( self.updateRecentFiles) self.editorTabWidget.updateLinesCount.connect(self.updateLineCount) self.editorTabWidget.updateEncodingLabel.connect( self.updateEncodingLabel) self.editorTabWidget.cursorPositionChanged.connect( self.showCursorPosition) self.searchWidget = SearchWidget(self.useData, self.editorTabWidget) vbox.addWidget(self.searchWidget) self.findInFiles = FindInFiles(self.useData, self.editorTabWidget, projectPathDict, self.bottomStackSwitcher) vbox.addWidget(self.findInFiles.dashboard) self.findInFiles.dashboard.hide() self.projectManager = ProjectManager( self.editorTabWidget, self.messagesWidget, projectPathDict, self.projectData["settings"], self.useData, app, self.busyWidget, self.buildStatusWidget, self.projects) self.projectManager.projectView.fileActivated.connect( self.editorTabWidget.loadfile) self.outline = Outline(self.useData, self.editorTabWidget) self.navigator.addTab(self.outline, "Outline") self.navigator.addTab(self.projectManager.projectView, "Project") # self.sideSplitter = QtGui.QSplitter() # self.sideSplitter.setObjectName("sidebarItem") # self.sideSplitter.setOrientation(0) # # self.sideSplitter.addWidget(self.outline) # self.sideBottomTab = QtGui.QTabWidget() # self.sideBottomTab.setObjectName("sideBottomTab") # self.sideSplitter.addWidget(self.sideBottomTab) # self.sideBottomTab.addTab(self.projectManager.projectView, QtGui.QIcon( # os.path.join("Resources", "images", "tree")), "Project") # self.sideSplitter.addWidget(self.projectManager.projectView) # self.fileExplorer = FileExplorer( # self.useData, self.projectData['shortcuts'], self.messagesWidget, self.editorTabWidget) # self.fileExplorer.fileActivated.connect(self.editorTabWidget.loadfile) # self.sideBottomTab.addTab(self.fileExplorer, QtGui.QIcon( # os.path.join("Resources", "images", "tree")), "File System") # create menus self.mainMenu = QtGui.QMenu() self.mainMenu.addMenu(self.editorTabWidget.newFileMenu) self.mainMenu.addAction(self.editorTabWidget.openFileAct) self.mainMenu.addAction(self.editorTabWidget.saveAct) self.mainMenu.addAction(self.editorTabWidget.saveAllAct) self.mainMenu.addAction(self.editorTabWidget.saveAsAct) self.mainMenu.addAction(self.editorTabWidget.saveCopyAsAct) self.mainMenu.addAction(self.editorTabWidget.printAct) editMenu = self.mainMenu.addMenu('Edit') editMenu.addAction(self.editorTabWidget.undoAct) self.editorTabWidget.undoAct.setDisabled(True) editMenu.addAction(self.editorTabWidget.redoAct) self.editorTabWidget.redoAct.setDisabled(True) editMenu.addSeparator() editMenu.addAction(self.editorTabWidget.cutAct) self.editorTabWidget.cutAct.setDisabled(True) editMenu.addAction(self.editorTabWidget.copyAct) self.editorTabWidget.copyAct.setDisabled(True) editMenu.addAction(self.editorTabWidget.pasteAct) editMenu.addSeparator() editMenu.addAction(self.editorTabWidget.dedentAct) editMenu.addAction(self.editorTabWidget.indentAct) editMenu.addSeparator() editMenu.addAction(self.finderAct) editMenu.addAction(self.replaceAct) editMenu.addAction(self.findInFilesAct) self.projectMenu = QtGui.QMenu("Project") if projectPathDict["type"] == "Desktop Application": self.projectMenu.addAction(self.buildAct) self.projectMenu.addAction(self.openBuildAct) self.projectMenu.addAction(self.configureAct) self.projectMenu.addSeparator() self.projectMenu.addAction(self.exportProjectAct) self.projectMenu.addAction(self.closeProjectAct) self.mainMenu.addMenu(self.projectMenu) self.mainMenu.addSeparator() self.mainMenu.addAction(self.gotoLineAct) self.mainMenu.addAction(self.viewSwitcherAct) helpMenu = self.mainMenu.addMenu("Help") helpMenu.addAction(self.userGuideAct) helpMenu.addAction(self.pythonManualsAct) helpMenu.addSeparator() helpMenu.addAction(self.feedbackAct) helpMenu.addAction(self.checkUpdatesAct) self.mainMenu.addSeparator() self.mainMenu.addMenu(self.manageFavourites.favouritesMenu) self.recentFilesMenu = self.mainMenu.addMenu("Recent Files") self.recentFilesMenu.setIcon( QtGui.QIcon(os.path.join("Resources", "images", "history"))) self.loadRecentFiles() self.mainMenu.addMenu(self.externalLauncher.launcherMenu) self.mainMenu.addSeparator() self.mainMenu.addAction(self.exitAct) self.createToolbars() # create StatusBar self.statusbar = QtGui.QStatusBar() self.statusbar.addPermanentWidget(self.buildStatusWidget) #*** Position self.cursorPositionButton = QtGui.QToolButton() self.cursorPositionButton.setAutoRaise(True) self.cursorPositionButton.clicked.connect( self.editorTabWidget.goToCursorPosition) self.statusbar.addPermanentWidget(self.cursorPositionButton) #*** lines self.linesLabel = QtGui.QLabel("Lines: 0") self.linesLabel.setMinimumWidth(50) self.statusbar.addPermanentWidget(self.linesLabel) #*** encoding self.encodingLabel = QtGui.QLabel("Coding: utf-8") self.statusbar.addPermanentWidget(self.encodingLabel) self.runWidget = RunWidget(self.bottomStackSwitcher, self.projectData["settings"], self.useData, self.editorTabWidget, self.vSplitter, self.runProjectAct, self.stopRunAct, self.runFileAct) self.addBottomWidget( self.runWidget, QtGui.QIcon(os.path.join("Resources", "images", "graphic-design")), "Output") self.assistantWidget = Assistant(self.editorTabWidget, self.bottomStackSwitcher) self.addBottomWidget( self.assistantWidget, QtGui.QIcon(os.path.join("Resources", "images", "flag")), "Alerts") bookmarkWidget = BookmarkWidget(self.editorTabWidget, self.bottomStackSwitcher) # self.addBottomWidget(bookmarkWidget, # QtGui.QIcon(os.path.join("Resources", "images", "tag")), "Bookmarks") tasksWidget = Tasks(self.editorTabWidget, self.bottomStackSwitcher) # self.addBottomWidget(tasksWidget, # QtGui.QIcon(os.path.join("Resources", "images", "issue")), "Tasks") # # self.addBottomWidget(self.messagesWidget, # QtGui.QIcon(os.path.join("Resources", "images", "speech_bubble")), "Messages") self.profiler = Profiler(self.useData, self.bottomStackSwitcher) # self.addBottomWidget(self.profiler, # QtGui.QIcon(os.path.join("Resources", "images", "settings")), "Profiler") self.runWidget.loadProfile.connect(self.profiler.viewProfile) # self.addBottomWidget(self.findInFiles, # QtGui.QIcon(os.path.join("Resources", "images", "attibutes")), "Find-in-Files") self.bottomStackSwitcher.setDefault() hbox = QtGui.QHBoxLayout() hbox.setMargin(0) hbox.setSpacing(0) hbox.addWidget(self.bottomStackSwitcher) hbox.addStretch(1) hbox.addWidget(self.statusbar) mainLayout.addLayout(hbox) # remember layout if projectPathDict['root'] in self.useData.OPENED_PROJECTS: settings = QtCore.QSettings("Clean Code Inc.", "Pcode") settings.beginGroup(projectPathDict['root']) self.hSplitter.restoreState(settings.value('hsplitter')) self.vSplitter.restoreState(settings.value('vsplitter')) # self.sideSplitter.restoreState( # settings.value('sidesplitter')) self.vSplitter.updateStatus() self.writePad.setGeometry(settings.value('writepad')) settings.endGroup() self.setKeymap()