-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcustomized_toolbar.py
More file actions
126 lines (101 loc) · 4.35 KB
/
customized_toolbar.py
File metadata and controls
126 lines (101 loc) · 4.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
"""
this is customized toolbar can be added to the application
"""
from PySide2.QtWidgets import QToolBar, QAction, QMessageBox, QFileDialog
from PySide2.QtGui import QIcon, QKeySequence, QKeyEvent, Qt
from PySide2.QtCore import QFile, QIODevice, QTextStream
class Toolbar(QToolBar):
def __init__(self, parent=None):
super().__init__(parent)
self.init_actions()
self.add_actions()
def init_actions(self):
self.new_action = QAction(QIcon("icons/new.png"), "New", self)
self.new_action.setShortcut(QKeySequence.New)
self.new_action.setStatusTip("Create new file")
self.open_action = QAction(QIcon("icons/open.png"), "Open", self)
self.open_action.setShortcut(QKeySequence.Open)
self.open_action.setStatusTip("Open existing file")
self.save_action = QAction(QIcon("icons/save.png"), "Save", self)
self.save_action.setShortcut(QKeySequence.Save)
self.save_action.setStatusTip("Save file")
self.save_as_action = QAction(QIcon("icons/saveAs.png"), "Save As", self)
self.save_as_action.setShortcut(QKeySequence("Ctrl+Shift+S"))
self.save_as_action.setStatusTip("Save file as...")
self.exit_action = QAction(QIcon("icons/exit.png"), "Exit", self)
self.exit_action.setShortcut(QKeySequence("Ctrl+Q"))
self.exit_action.setStatusTip("Exit program")
def add_actions(self):
self.addAction(self.new_action)
self.addAction(self.open_action)
self.addAction(self.save_action)
self.addAction(self.save_as_action)
def keyPressEvent(self, event: QKeyEvent):
if event.modifiers() == Qt.ControlModifier:
if event.key() == Qt.Key_Plus or event.key() == Qt.Key_Equal:
# Zoom in logic
font = self.textarea.font()
new_size = font.pointSizeF() + 1.0
font.setPointSizeF(new_size)
self.textarea.setFont(font)
elif event.key() == Qt.Key_Minus:
# Zoom out logic
font = self.textarea.font()
new_size = font.pointSizeF() - 1.0
if new_size >= 1.0:
font.setPointSizeF(new_size)
self.textarea.setFont(font)
super().keyPressEvent(event)
def setCurrentFile(self, filename):
self.currentFileName = filename
self.textarea.document().setModified(False)
self.setWindowModified(False)
showName = self.currentFileName if self.currentFileName else "untitled.txt"
self.setWindowFilePath(showName)
def documentModified(self):
self.setWindowModified(self.textarea.document().isModified())
def maybeSave(self):
if not self.textarea.document().isModified():
return True
ret = QMessageBox.warning(
self, "Warning", "The document is modified.\nDo you want to save?",
QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel
)
if ret == QMessageBox.Save:
self.Save()
elif ret == QMessageBox.Cancel:
return False
return True
def New(self):
if self.maybeSave():
self.textarea.clear()
self.setCurrentFile(None)
def Open(self):
if self.maybeSave():
filename, _ = QFileDialog.getOpenFileName(self, "Open")
if filename:
self.setCurrentFile(filename)
file = QFile(filename)
if file.open(QIODevice.ReadOnly | QIODevice.Text):
text_stream = QTextStream(file)
self.textarea.setPlainText(text_stream.readAll())
file.close()
def Save(self):
if not self.currentFileName:
self.SaveAs()
else:
file = QFile(self.currentFileName)
if file.open(QIODevice.WriteOnly | QIODevice.Text):
text_stream = QTextStream(file)
text_stream << self.textarea.toPlainText()
file.close()
self.textarea.document().setModified(False)
self.setWindowModified(False)
def SaveAs(self):
filename, _ = QFileDialog.getSaveFileName(self, "Save As")
if filename:
self.currentFileName = filename
self.Save()
def Exit(self):
if self.maybeSave():
self.close()