This repository was archived by the owner on Mar 5, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopenfile.py
More file actions
157 lines (130 loc) · 5.48 KB
/
openfile.py
File metadata and controls
157 lines (130 loc) · 5.48 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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
from os import path
from PyQt5.QtWidgets import QDialog, QFileDialog, QCalendarWidget, QListWidget, QMessageBox
from PyQt5.QtCore import QDate
from PyQt5 import uic
from imageproc import paths_to_imgs
from util import qdate_to_date, resource_path
from Report import Report
# DigiFerro
# Programmers:
# Baruch Rutman
# Roi Amzallag
class OpenFileWindow(QDialog):
def __init__(self, parent):
super(OpenFileWindow, self).__init__(parent)
self.parent = parent
self.load_ui()
self.pushButton.clicked.connect(self.browse)
self.buttonBox.button(self.buttonBox.Ok).clicked.connect(self.ok)
self.buttonBox.button(self.buttonBox.Cancel).clicked.connect(self.cancel)
self.ready = False
date = QDate.currentDate()
date_format = f'{str(date.day()).zfill(2)}{str(date.month()).zfill(2)}{date.year()}'
if date_format != self.parent.get_setting('last_date', date_format):
self.parent.set_setting('increment', 0)
self.parent.set_setting('last_date', date_format)
current_increment = self.parent.get_setting('increment', 0) + 1
self.parent.set_setting('increment', current_increment)
self.sampleNumLabel.setText(f'{date_format}{str(current_increment).zfill(4)}')
self.sampleDateEdit.setDate(date)
self.set_calendar()
# Set Drag n Drop
lw: QListWidget = self.imageList
lw.setDragEnabled(True)
lw.dragEnterEvent = lambda e: e.acceptProposedAction()
lw.dragMoveEvent = lambda e: e.acceptProposedAction()
lw.dropEvent = lambda e: lw.addItems(((url.path()[1:] for url in e.mimeData().urls())))
# Lockup dialog size
self.setFixedSize(self.size())
def load_ui(self):
uic.loadUi(resource_path('openfile.ui'), self)
def open(self):
self.show()
def browse(self):
image_dir = self.parent.get_setting('image_file_dir', '')
fileNames, _ = QFileDialog.getOpenFileNames(self, directory=image_dir)
if len(fileNames) == 0:
return
directory, _ = path.split(fileNames[0])
self.parent.set_setting('image_file_dir', directory)
self.imageList.addItems(fileNames)
def ok(self):
msgBox: QMessageBox = QMessageBox(self)
testNumber = self.sampleNumLabel.text()
squadron = self.squadronEdit.text()
if (squadron == ''):
return
hangar = self.hangarEdit.text()
if (hangar == ''):
msgBox.setText('please fill the hangar number')
msgBox.show()
return
sampleDate = qdate_to_date(self.sampleDateEdit.date())
tailNumber = self.tailNumEdit.text()
if (tailNumber == ''):
msgBox.setText('please fill the tail number')
msgBox.show()
return
partNumber = self.partNumEdit.text()
if (partNumber == ''):
msgBox.setText('please fill the part number')
msgBox.show()
return
timeSinceOverhaul = self.overhaulTimeEdit.value()
iron = self.ironEdit.text()
if (iron == ''):
msgBox.setText('please fill the iron number')
msgBox.show()
return
titanium = self.titaniumEdit.text()
if (titanium == ''):
msgBox.setText('please fill the titanium number')
msgBox.show()
return
otherMetals = self.otherMetalsComboBox.currentText()
scale = self.scaleEdit.value()
report = Report(squadron, hangar, sampleDate, timeSinceOverhaul,
iron, titanium, otherMetals, scale, testNumber,
tailNumber, partNumber, None)
self.parent.set_report(report)
self.ready = True
self.hide()
# Image stuff
lw: QListWidget = self.imageList
paths = [lw.item(i).text() for i in range(lw.count())]
self.parent.add_images(paths_to_imgs(paths, self.scale))
def cancel(self):
self.hide()
@property
def scale(self):
scale_ = float(self.scaleEdit.value())
if scale_ <= 0:
return 1.0
return scale_
# Popout Calendar code
def set_calendar(self):
# Add calendar widget
self.calendarWidget = QCalendarWidget(self)
self.calendarWidget.hide() # Hide until needed
# Reposition calendar widget to be below the date widget
rect = self.sampleDateEdit.geometry()
self.calendarWidget.move(rect.x(), rect.y() + rect.height())
# Dialog width fixup (in case dialog is not wide enough to show the calendar)
size = self.size()
if size.width() < rect.x() + self.calendarWidget.sizeHint().width():
size.setWidth(rect.x() + self.calendarWidget.sizeHint().width())
self.resize(size)
self.calendarWidget.selectionChanged.connect(lambda *args: self.sampleDateEdit.setDate(self.calendarWidget.selectedDate()))
# Connect toggle_calendar and set the field it uses
self.calendarVisible = False
self.showCalendarButton.clicked.connect(self.toggle_calendar)
def toggle_calendar(self):
if self.calendarVisible is False:
self.calendarWidget.setSelectedDate(self.sampleDateEdit.date())
self.calendarWidget.show()
self.calendarVisible = True
self.showCalendarButton.setText("Hide Calendar")
else:
self.calendarWidget.hide()
self.calendarVisible = False
self.showCalendarButton.setText("Show Calendar")