From 009555b963ace5bec95cec4e567f94b02f393a51 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" Date: Sat, 29 Sep 2018 18:14:44 +0200 Subject: [PATCH] Added toolbars and buttons. --- nw/gui/doceditor.py | 101 ++++++++++++++++++++++++++++++++++++++++---- nw/gui/doctabs.py | 8 +--- nw/gui/winmain.py | 73 +++++++++++++++++++++++++++++--- 3 files changed, 161 insertions(+), 21 deletions(-) diff --git a/nw/gui/doceditor.py b/nw/gui/doceditor.py index cf278c89..223bcd17 100644 --- a/nw/gui/doceditor.py +++ b/nw/gui/doceditor.py @@ -14,25 +14,110 @@ import logging import nw from os import path -from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QTextEdit -# from PyQt5.QtWidgets import QTabWidget, QWidget -# from PyQt5.QtGui import QStandardItemModel +from PyQt5.QtWidgets import QWidget, QTextEdit, QVBoxLayout, QFrame, QSplitter, QToolBar, QAction +from PyQt5.QtCore import Qt, QSize +from PyQt5.QtGui import QIcon logger = logging.getLogger(__name__) -class GuiDocEditor(QTextEdit): +class GuiDocEditor(QWidget): def __init__(self): - QTextEdit.__init__(self) + QWidget.__init__(self) logger.debug("Initialising DocEditor ...") - self.mainConf = nw.CONFIG - self.setPlainText("Hello Kitty!") + self.mainConf = nw.CONFIG + self.outerBox = QVBoxLayout() + self.guiEditor = QTextEdit() + + # self.outerBox.addWidget(self.guiEditor) + self.setLayout(self.outerBox) + + # self.editPane = QFrame() + # self.editPane.setFrameShape(QFrame.StyledPanel) + self.metaPane = QFrame() + self.metaPane.setFrameShape(QFrame.StyledPanel) + self.splitEdit = QSplitter(Qt.Horizontal) + self.splitEdit.addWidget(self.guiEditor) + self.splitEdit.addWidget(self.metaPane) + + self.editToolBar = QToolBar() + self._buildTabToolBar() + + self.outerBox.addWidget(self.editToolBar) + self.outerBox.addWidget(self.splitEdit) + + self.guiEditor.setPlainText("Hello Kitty!") logger.debug("DocEditor initialisation complete") return + def _buildTabToolBar(self): + toolBar = self.editToolBar + toolBar.setToolButtonStyle(Qt.ToolButtonIconOnly) + toolBar.setIconSize(QSize(16,16)) + + # Text > Bold + tbTextBold = QAction(QIcon.fromTheme("format-text-bold"), "Bold (Ctrl+B)", toolBar) + tbTextBold.setShortcut("Ctrl+B") + tbTextBold.setStatusTip("Toggle Selected Text Bold") + toolBar.addAction(tbTextBold) + + # Text > Italics + tbTextItalic = QAction(QIcon.fromTheme("format-text-italic"), "Italic (Ctrl+I)", toolBar) + tbTextItalic.setShortcut("Ctrl+I") + tbTextItalic.setStatusTip("Toggle Selected Text Italic") + toolBar.addAction(tbTextItalic) + + # Text > Underline + tbTextUnderline = QAction(QIcon.fromTheme("format-text-underline"), "Underline (Ctrl+U)", toolBar) + tbTextUnderline.setShortcut("Ctrl+U") + tbTextUnderline.setStatusTip("Toggle Selected Text Underline") + toolBar.addAction(tbTextUnderline) + + # Text > Strikethrough + tbTextStrikethrough = QAction(QIcon.fromTheme("format-text-strikethrough"), "Strikethrough (Ctrl+D)", toolBar) + tbTextStrikethrough.setShortcut("Ctrl+D") + tbTextStrikethrough.setStatusTip("Toggle Selected Text Strikethrough") + toolBar.addAction(tbTextStrikethrough) + + # -------------------- + toolBar.addSeparator() + + # Edit > Cut + tbEditCut = QAction(QIcon.fromTheme("edit-cut"), "Cut (Ctrl+X)", toolBar) + tbEditCut.setShortcut("Ctrl+X") + tbEditCut.setStatusTip("Cut Selected Text") + toolBar.addAction(tbEditCut) + + # Edit > Copy + tbEditCopy = QAction(QIcon.fromTheme("edit-copy"), "Copy (Ctrl+C)", toolBar) + tbEditCopy.setShortcut("Ctrl+C") + tbEditCopy.setStatusTip("Copy Selected Text") + toolBar.addAction(tbEditCopy) + + # Edit > Paste + tbEditPaste = QAction(QIcon.fromTheme("edit-paste"), "Paste (Ctrl+V)", toolBar) + tbEditPaste.setShortcut("Ctrl+V") + tbEditPaste.setStatusTip("Paste Text") + toolBar.addAction(tbEditPaste) + + # -------------------- + toolBar.addSeparator() + + # Edit > Undo + tbEditUndo = QAction(QIcon.fromTheme("edit-undo"), "Undo (Ctrl+Z)", toolBar) + tbEditUndo.setShortcut("Ctrl+Z") + tbEditUndo.setStatusTip("Undo Last Change") + toolBar.addAction(tbEditUndo) + + # Edit > Redo + tbEditRedo = QAction(QIcon.fromTheme("edit-redo"), "Redo (Ctrl+Y)", toolBar) + tbEditRedo.setShortcut("Ctrl+Y") + tbEditRedo.setStatusTip("Revert Last Undo") + toolBar.addAction(tbEditRedo) + + return # END Class GuiDocEditor diff --git a/nw/gui/doctabs.py b/nw/gui/doctabs.py index 4887d435..2b672480 100644 --- a/nw/gui/doctabs.py +++ b/nw/gui/doctabs.py @@ -28,7 +28,6 @@ class GuiDocTabs(QTabWidget): logger.debug("Initialising DocTabs ...") self.mainConf = nw.CONFIG - self.docList = [] self.tabList = [] self.resize(900,500) @@ -42,13 +41,8 @@ class GuiDocTabs(QTabWidget): tabName = "New Document" else: tabName = docFile - thisTab = QWidget() - tabBox = QVBoxLayout() - thisDoc = GuiDocEditor() - tabBox.addWidget(thisDoc) - thisTab.setLayout(tabBox) + thisTab = GuiDocEditor() self.tabList.append(thisTab) - self.docList.append(thisDoc) self.addTab(self.tabList[-1],tabName) return True diff --git a/nw/gui/winmain.py b/nw/gui/winmain.py index b2c84326..94a61d70 100644 --- a/nw/gui/winmain.py +++ b/nw/gui/winmain.py @@ -14,8 +14,8 @@ import logging import nw from os import path -from PyQt5.QtWidgets import QWidget, QMainWindow, QHBoxLayout, QVBoxLayout, QFrame, QSplitter, QTreeView -from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import qApp, QWidget, QMainWindow, QHBoxLayout, QVBoxLayout, QFrame, QSplitter, QAction, QToolBar +from PyQt5.QtCore import Qt, QSize from PyQt5.QtGui import QIcon, QStandardItemModel from nw.gui.doctree import GuiDocTree @@ -42,8 +42,6 @@ class GuiMain(QMainWindow): self.treePane = QFrame() self.treePane.setFrameShape(QFrame.StyledPanel) - # self.textPane = QFrame() - # self.textPane.setFrameShape(QFrame.StyledPanel) self.splitMain = QSplitter(Qt.Horizontal) self.splitMain.addWidget(self.treePane) self.splitMain.addWidget(self.docTabs) @@ -53,6 +51,10 @@ class GuiMain(QMainWindow): self.treeBox.addWidget(self.treeView) self.treePane.setLayout(self.treeBox) + self.treeToolBar = QToolBar() + self._buildTreeToolBar() + self.treeBox.addWidget(self.treeToolBar) + self.setCentralWidget(self.splitMain) self._buildMenu() @@ -81,8 +83,67 @@ class GuiMain(QMainWindow): # def _buildMenu(self): - menuBar = self.menuBar() - menuBar.addMenu("File") + menuBar = self.menuBar() + + # File + fileMenu = menuBar.addMenu("&File") + + # File > New + menuNew = QAction(QIcon.fromTheme("document-new"), "&New", menuBar) + menuNew.setShortcut("Ctrl+N") + menuNew.setStatusTip("Create new document") + fileMenu.addAction(menuNew) + + # File > Open + menuOpen = QAction(QIcon.fromTheme("document-open"), "&Open", menuBar) + menuOpen.setShortcut("Ctrl+O") + menuOpen.setStatusTip("Open document") + fileMenu.addAction(menuOpen) + + # File > Save + menuSave = QAction(QIcon.fromTheme("document-save"), "&Save", menuBar) + menuSave.setShortcut("Ctrl+S") + menuSave.setStatusTip("Save document") + fileMenu.addAction(menuSave) + + # --------------------- + fileMenu.addSeparator() + + # File > Exit + menuExit = QAction(QIcon.fromTheme("application-exit"), "&Exit", menuBar) + menuExit.setShortcut("Ctrl+Q") + menuExit.setStatusTip("Exit %s" % nw.__package__) + menuExit.triggered.connect(self._menuExit) + fileMenu.addAction(menuExit) + return + def _buildTreeToolBar(self): + toolBar = self.treeToolBar + toolBar.setToolButtonStyle(Qt.ToolButtonIconOnly) + toolBar.setIconSize(QSize(16,16)) + + # Folder > New + tbFolderNew = QAction(QIcon.fromTheme("folder-new"), "New Folder (Ctrl+Shift+N)", toolBar) + tbFolderNew.setShortcut("Ctrl+Shift+N") + tbFolderNew.setStatusTip("Create new folder") + toolBar.addAction(tbFolderNew) + + # Document > New + tbDocNew = QAction(QIcon.fromTheme("document-new"), "New Document (Ctrl+N)", toolBar) + tbDocNew.setShortcut("Ctrl+N") + tbDocNew.setStatusTip("Create new document") + toolBar.addAction(tbDocNew) + + return + + # + # Menu Action + # + + def _menuExit(self): + logger.info("Exiting %s" % nw.__package__) + qApp.quit() + return True + # END Class GuiMain