def __init__(self, pathDict, library, busyWidget, colorScheme, useData, app, parent): QtGui.QWidget.__init__(self, parent) self.pathDict = pathDict self.app = app self.useData = useData self.library = library self.projects = parent self.colorScheme = colorScheme 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.setContextMenuPolicy(QtCore.Qt.PreventContextMenu) self.standardToolbar.setMaximumHeight(26) 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.sideBar = QtGui.QSplitter() self.sideBar.setStyleSheet(StyleSheet.sidebarStyle) 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.PROJECT_DATA['favourites'], self.messagesWidget, self) self.externalLauncher = ExternalLauncher( self.PROJECT_DATA["launchers"], self) self.writePad = WritePad(self.pathDict[ "notes"], self.pathDict["name"], self) self.bookmarkToolbar = QtGui.QToolBar("Bookmarks") self.bookmarkToolbar.setMovable(False) self.bookmarkToolbar.setFloatable(False) self.bookmarkToolbar.setContextMenuPolicy(QtCore.Qt.PreventContextMenu) self.bookmarkToolbar.setMaximumHeight(26) self.bookmarkToolbar.setObjectName("Bookmarks") self.bookmarkToolbar.addSeparator() self.editorTabWidget = EditorTabWidget( self.useData, self.pathDict, self.PROJECT_DATA["settings"], self.colorScheme, self.busyWidget, self.bookmarkToolbar, self.app, self.manageFavourites, self.externalLauncher) 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, pathDict, self.bottomStackSwitcher) vbox.addWidget(self.findInFiles.dashboard) self.findInFiles.dashboard.hide() self.projectManager = ProjectManager( self.editorTabWidget, self.messagesWidget, pathDict, self.PROJECT_DATA[ "settings"], self.useData, app, self.busyWidget, self.buildStatusWidget, self.projects) self.projectManager.projectViewer.fileActivated.connect( self.editorTabWidget.loadfile) self.outline = Outline( self.useData, self.editorTabWidget) self.sideSplitter = QtGui.QSplitter() self.sideSplitter.setObjectName("sideSplitter") self.sideSplitter.setOrientation(0) self.sideSplitter.setStyleSheet(StyleSheet.sidebarStyle) self.hSplitter.addWidget(self.sideSplitter) self.sideSplitter.addWidget(self.outline) self.sideBottomTab = QtGui.QTabWidget() self.sideSplitter.addWidget(self.sideBottomTab) self.sideBottomTab.addTab(self.projectManager.projectViewer, QtGui.QIcon( os.path.join("Resources", "images", "tree")), "Project") self.fileExplorer = FileExplorer( self.useData, self.PROJECT_DATA['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) self.projectMenu = QtGui.QMenu("Project") if pathDict["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) #*** uptime self.uptimeLabel = QtGui.QLabel() self.uptimeLabel.setText("Uptime: 0min") self.statusbar.addPermanentWidget(self.uptimeLabel) self.runWidget = RunWidget( self.bottomStackSwitcher, self.PROJECT_DATA[ "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) self.uptime = 0 self.uptimeTimer = QtCore.QTimer() self.uptimeTimer.setInterval(60000) self.uptimeTimer.timeout.connect(self.updateUptime) self.uptimeTimer.start() # remember layout if pathDict['root'] in self.useData.OPENED_PROJECTS: settings = QtCore.QSettings("Clean Code Inc.", "Pcode") settings.beginGroup(pathDict['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.install_shortcuts()