def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.setWindowIcon( QtGui.QIcon(os.path.join("Resources", "images", "Icon"))) self.setWindowTitle("Pcode - Loading...") screen = QtGui.QDesktopWidget().screenGeometry() self.resize(screen.width() - 200, screen.height() - 200) size = self.geometry() self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2) self.lastWindowGeometry = self.geometry() self.setBaseColor() mainLayout = QtGui.QVBoxLayout() mainLayout.setSpacing(0) mainLayout.setMargin(0) self.setLayout(mainLayout) self.useData = UseData() self.library = Library(self.useData) self.busyWidget = BusyWidget(app, self.useData, self) self.projectWindowStack = QtGui.QStackedWidget() self.projectTitleBox = QtGui.QComboBox() self.projectTitleBox.setMinimumWidth(180) self.projectTitleBox.setStyleSheet(StyleSheet.projectTitleBoxStyle) self.projectTitleBox.setItemDelegate(QtGui.QStyledItemDelegate()) self.projectTitleBox.currentIndexChanged.connect(self.projectChanged) self.projectTitleBox.activated.connect(self.projectChanged) self.settingsWidget = SettingsWidget(self.useData, self.projectWindowStack, self.library.codeViewer, self) self.settingsWidget.colorScheme.styleEditor(self.library.codeViewer) startWindow = Start(self.useData, self) self.addProject(startWindow, "Start", "Start", os.path.join("Resources", "images", "flag-green")) self.projects = Projects(self.useData, self.busyWidget, self.library, self.settingsWidget, app, self.projectWindowStack, self.projectTitleBox, self) self.createActions() hbox = QtGui.QHBoxLayout() hbox.setContentsMargins(5, 3, 5, 3) mainLayout.addLayout(hbox) hbox.addStretch(1) self.pagesStack = QtGui.QStackedWidget() mainLayout.addWidget(self.pagesStack) self.projectSwitcher = StackSwitcher(self.pagesStack) self.projectSwitcher.setStyleSheet(StyleSheet.mainMenuStyle) hbox.addWidget(self.projectSwitcher) self.addPage( self.projectWindowStack, "EDITOR", QtGui.QIcon(os.path.join("Resources", "images", "hire-me"))) self.addPage( self.library, "LIBRARY", QtGui.QIcon(os.path.join("Resources", "images", "library"))) self.projectSwitcher.setDefault() hbox.addWidget(self.projectTitleBox) hbox.setSpacing(5) self.settingsButton = QtGui.QToolButton() self.settingsButton.setAutoRaise(True) self.settingsButton.setDefaultAction(self.settingsAct) hbox.addWidget(self.settingsButton) self.fullScreenButton = QtGui.QToolButton() self.fullScreenButton.setAutoRaise(True) self.fullScreenButton.setDefaultAction(self.showFullScreenAct) hbox.addWidget(self.fullScreenButton) self.aboutButton = QtGui.QToolButton() self.aboutButton.setAutoRaise(True) self.aboutButton.setDefaultAction(self.aboutAct) hbox.addWidget(self.aboutButton) self.install_shortcuts() if self.useData.settings["firstRun"] == 'True': self.showMaximized() else: self.restoreUiState() self.useData.settings["running"] = 'True' self.useData.settings["firstRun"] = 'False' self.useData.saveSettings()
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()
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.setWindowIcon(QtGui.QIcon(os.path.join("Resources", "images", "Icon"))) self.setWindowTitle("Pcode - Loading...") screen = QtGui.QDesktopWidget().screenGeometry() self.resize(screen.width() - 200, screen.height() - 200) size = self.geometry() self.move((screen.width() - size.width()) / 2, ( screen.height() - size.height()) / 2) self.lastWindowGeometry = self.geometry() mainLayout = QtGui.QVBoxLayout() mainLayout.setSpacing(0) mainLayout.setMargin(0) self.setLayout(mainLayout) self.useData = UseData() logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s', filename=self.useData.appPathDict["logfile"], level=logging.DEBUG) if sys.version_info.major < 3: logging.error("This application requires Python 3") sys.exit(1) self.library = Library(self.useData) self.busyWidget = BusyWidget(app, self.useData, self) if self.useData.SETTINGS["UI"] == "Custom": app.setStyleSheet(StyleSheet.globalStyle) self.projectWindowStack = QtGui.QStackedWidget() self.projectTitleBox = QtGui.QComboBox() self.projectTitleBox.setMinimumWidth(180) self.projectTitleBox.setStyleSheet(StyleSheet.projectTitleBoxStyle) self.projectTitleBox.setItemDelegate(QtGui.QStyledItemDelegate()) self.projectTitleBox.currentIndexChanged.connect(self.projectChanged) self.projectTitleBox.activated.connect(self.projectChanged) self.settingsWidget = SettingsWidget(self.useData, app, self.projectWindowStack, self.library.codeViewer, self) self.settingsWidget.colorScheme.styleEditor(self.library.codeViewer) startWindow = Start(self.useData, self) self.addProject(startWindow, "Start", "Start", os.path.join("Resources", "images", "flag-green")) self.projects = Projects(self.useData, self.busyWidget, self.library, self.settingsWidget, app, self.projectWindowStack, self.projectTitleBox, self) self.createActions() hbox = QtGui.QHBoxLayout() hbox.setContentsMargins(5, 3, 5, 3) mainLayout.addLayout(hbox) hbox.addStretch(1) self.pagesStack = QtGui.QStackedWidget() mainLayout.addWidget(self.pagesStack) self.projectSwitcher = StackSwitcher(self.pagesStack) self.projectSwitcher.setStyleSheet(StyleSheet.mainMenuStyle) hbox.addWidget(self.projectSwitcher) self.pagesStack.addWidget(self.projectWindowStack) # self.addPage(self.projectWindowStack, "EDITOR", QtGui.QIcon( # os.path.join("Resources", "images", "hire-me"))) # # self.addPage(self.library, "LIBRARY", QtGui.QIcon( # os.path.join("Resources", "images", "library"))) # self.projectSwitcher.setDefault() hbox.addWidget(self.projectTitleBox) hbox.setSpacing(5) self.settingsButton = QtGui.QToolButton() self.settingsButton.setAutoRaise(True) self.settingsButton.setDefaultAction(self.settingsAct) hbox.addWidget(self.settingsButton) self.fullScreenButton = QtGui.QToolButton() self.fullScreenButton.setAutoRaise(True) self.fullScreenButton.setDefaultAction(self.showFullScreenAct) hbox.addWidget(self.fullScreenButton) self.aboutButton = QtGui.QToolButton() self.aboutButton.setAutoRaise(True) self.aboutButton.setDefaultAction(self.aboutAct) hbox.addWidget(self.aboutButton) self.setShortcuts() if self.useData.settings["firstRun"] == 'True': self.showMaximized() else: self.restoreUiState() self.useData.settings["running"] = 'True' self.useData.settings["firstRun"] = 'False' self.useData.saveSettings()