Skip to content

Commit f80051f

Browse files
committed
Size changing
1 parent 8143964 commit f80051f

File tree

3 files changed

+75
-1
lines changed

3 files changed

+75
-1
lines changed

AnsiImage.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,13 @@ def __init__(self, min_line_len = None):
3737
for x in [0, 1, 6, 7]:
3838
self.cursor_shape.append((y, x))
3939

40-
def change_size(self, new_height, new_width):
40+
def get_size(self):
41+
"""
42+
Return the current canvas size in characters
43+
"""
44+
return (self.width, self.height)
45+
46+
def change_size(self, new_width, new_height):
4147
"""
4248
Make the image larger or smaller, retaining contents
4349
"""

MainWindow.py

+17
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def createMenuBar(self):
5454
self.actionExit = QtWidgets.QAction("Exit", self)
5555

5656
menuEdit = self.menuBar().addMenu("Edit")
57+
self.actionSize = QtWidgets.QAction("Set size", self)
5758
self.actionUndo = QtWidgets.QAction("Undo", self)
5859
self.actionRedo = QtWidgets.QAction("Redo", self)
5960
self.actionCopy = QtWidgets.QAction("Copy", self)
@@ -68,6 +69,8 @@ def createMenuBar(self):
6869
menuFile.addSeparator()
6970
menuFile.addAction(self.actionExit)
7071

72+
menuEdit.addAction(self.actionSize)
73+
menuEdit.addSeparator()
7174
menuEdit.addAction(self.actionUndo)
7275
menuEdit.addAction(self.actionRedo)
7376
menuEdit.addSeparator()
@@ -151,6 +154,8 @@ def connectEvents(self):
151154
self.actionExit.triggered.connect(self.exit)
152155
self.actionExit.setShortcut(QtGui.QKeySequence.Quit)
153156

157+
self.actionSize.triggered.connect(self.resizeCanvas)
158+
154159
self.actionUndo.triggered.connect(self.undo)
155160
self.actionUndo.setShortcut(QtGui.QKeySequence.Undo)
156161

@@ -414,6 +419,18 @@ def clipboardPaste(self):
414419
self.addUndo(self.ansiImage.paste(self.pasteBuffer))
415420
self.redisplayAnsi()
416421

422+
def resizeCanvas(self):
423+
"""
424+
Get size via dialog and resize
425+
"""
426+
cur_width, cur_height = self.ansiImage.get_size()
427+
sizeDialog = SizeDialog(cur_width, cur_height)
428+
if sizeDialog.exec() == 1:
429+
new_width = sizeDialog.spinBoxWidth.value()
430+
new_height = sizeDialog.spinBoxHeight.value()
431+
self.ansiImage.change_size(new_width, new_height)
432+
self.redisplayAnsi()
433+
417434
def addUndo(self, operation):
418435
"""
419436
Add an undo step (and clean out the redo stack)

SizeDialog.py

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
from PyQt5 import QtCore, QtGui, QtWidgets
2+
3+
class SizeDialog(QtWidgets.QDialog):
4+
def __init__(self, width, height):
5+
super(SizeDialog, self).__init__()
6+
self.setModal(True)
7+
self.setWindowTitle("Enter new size...")
8+
self.setSizeGripEnabled(False)
9+
10+
self.labelWidth = QtWidgets.QLabel("Width")
11+
self.labelWidth.setMinimumSize(50, 1)
12+
13+
self.spinBoxWidth = QtWidgets.QSpinBox()
14+
self.spinBoxWidth.setMinimum(1)
15+
self.spinBoxWidth.setMaximum(9999)
16+
self.spinBoxWidth.setValue(width)
17+
18+
self.labelHeight = QtWidgets.QLabel("Height")
19+
self.labelHeight.setMinimumSize(50, 1)
20+
21+
self.spinBoxHeight = QtWidgets.QSpinBox()
22+
self.spinBoxHeight.setMinimum(1)
23+
self.spinBoxHeight.setMaximum(99999)
24+
self.spinBoxHeight.setValue(height)
25+
26+
self.cancelButton = QtWidgets.QPushButton("Cancel")
27+
self.cancelButton.clicked.connect(self.reject)
28+
29+
self.acceptButton = QtWidgets.QPushButton("Ok!")
30+
self.acceptButton.clicked.connect(self.accept)
31+
32+
widthLayout = QtWidgets.QHBoxLayout()
33+
widthLayout.addWidget(self.labelWidth)
34+
widthLayout.addWidget(self.spinBoxWidth)
35+
36+
heightLayout = QtWidgets.QHBoxLayout()
37+
heightLayout.addWidget(self.labelHeight)
38+
heightLayout.addWidget(self.spinBoxHeight)
39+
40+
buttonLayout = QtWidgets.QHBoxLayout()
41+
buttonLayout.addWidget(self.cancelButton)
42+
buttonLayout.addWidget(self.acceptButton)
43+
buttonLayout.setAlignment(QtCore.Qt.AlignRight)
44+
45+
mainLayout = QtWidgets.QVBoxLayout()
46+
mainLayout.addLayout(widthLayout)
47+
mainLayout.addLayout(heightLayout)
48+
mainLayout.addLayout(buttonLayout)
49+
50+
self.setLayout(mainLayout)
51+

0 commit comments

Comments
 (0)