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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 5 12:17:30 2018
@author: Usuario
"""
from PyQt5.QtCore import QSettings
from PyQt5.QtWidgets import QAction, QFileDialog, QWidget
from threading import Thread
from subclasses.controllayouts import LaserControlLayout, LaserScanLayout
#%%
class myToolbarMenu(QWidget):
"""
This will create a toolbar menu
"""
def __init__(self, win):
super().__init__()
self.MainGuiWindow = win
self.sbsDicc = dict()
self.cbsDicc = dict()
self.incorporate_toolbar(self.MainGuiWindow)
self.fillSpinBoxesDict()
self.fillCheckBoxesDict()
def fillSpinBoxesDict(self):
for l in LaserControlLayout._registry:
for sb_name in l.spinboxes:
self.sbsDicc[sb_name] = l.spinboxes[sb_name]
for l in LaserScanLayout._registry:
for sb_name in l.spinboxes:
self.sbsDicc['_'.join([l.name, sb_name])] = l.spinboxes[sb_name]
def fillCheckBoxesDict(self):
for l in LaserControlLayout._registry:
for cb_name in l.checkboxes:
self.cbsDicc[cb_name] = l.checkboxes[cb_name]
def createElectrodesDict(self):
d = dict()
for l in LaserControlLayout._registry:
if l.name == 'electrodes':
for sb_name in l.spinboxes:
d[sb_name] = l.spinboxes[sb_name]
return d
def incorporate_toolbar(self, win):
menuBar = win.menuBar
#statusBar = QtGui.QStatusBar(self)
saveAct = QAction('Save', win)
loadAct = QAction('Load', win)
saveAsAct = QAction('Save as' , win)
openFromAct = QAction('open from', win)
loadElectrodesAct = QAction('Load electrodes', win)
menubar = menuBar
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(saveAct)
fileMenu.addAction(loadAct)
fileMenu.addAction(saveAsAct)
fileMenu.addAction(openFromAct)
fileMenu.addAction(loadElectrodesAct)
viewMenu = menubar.addMenu('Monitor')
viewWebcams = QAction('View webcams', win, checkable=True)
viewWebcams.setChecked(False)
viewMenu.addAction(viewWebcams)
saveAct.triggered.connect(lambda: self.save())
loadAct.triggered.connect(lambda: self.load())
loadElectrodesAct.triggered.connect(lambda: self.load_electrodes(win))
saveAsAct.triggered.connect(lambda: self.save_as(win))
openFromAct.triggered.connect(lambda: self.open_from(win))
viewWebcams.toggled.connect(lambda: self.putWebcams(viewWebcams.isChecked()) )
def save(self, location='config.ini'):
settings = QSettings(str(location), QSettings.IniFormat)
settings.beginGroup('Ventana')
for text, spinb in self.sbsDicc.items():
settings.setValue(text, spinb.value())
for text, checkb in self.cbsDicc.items():
settings.setValue(text, checkb.isChecked())
settings.endGroup()
def load(self, location='config.ini'):
settings = QSettings(location, QSettings.IniFormat)
settings.beginGroup('Ventana')
for text, spinb in self.sbsDicc.items():
spinbox_saved_value = settings.value(text)
try:
spinb.setValue( float(spinbox_saved_value) )
except TypeError:
spinb.setValue( float(spinb.value()) )
for text, checkb in self.cbsDicc.items():
checkbox_saved_value = settings.value(text)
if checkbox_saved_value in ['true', 'True', True]:
checkb.setChecked(True)
else:
checkb.setChecked(False)
settings.endGroup()
def save_as(self, window):
name = QFileDialog.getSaveFileName(window, 'Save File')
if not name[0]:
print('Saving was canceled')
return 0
filename = name[0]+'.ini'
file = open(filename, 'w+')
file.close()
self.save( filename )
print('saving to %s' % filename)
def open_from(self, window):
name = QFileDialog.getOpenFileName(window, 'Open File')
if not name[0]:
print('Opening was canceled')
return 0
self.load(name[0])
def load_electrodes(self, window):
name = QFileDialog.getOpenFileName(window, 'Open File')
if not name[0]:
print('Opening was canceled')
return 0
settings = QSettings(name[0], QSettings.IniFormat)
settings.beginGroup('Ventana')
for text, spinb in self.createElectrodesDict().items():
spinbox_saved_value = settings.value(text)
try:
spinb.setValue( float(spinbox_saved_value) )
except TypeError:
spinb.setValue( float(spinb.value()) )
settings.endGroup()
def startWebcamsThread(self):
exec(open('C:\\Users\\Usuario\\Documents\\control_app\\webcams.py').read())
def putWebcams(self, checked):
if checked:
t_webcams = Thread(target=self.startWebcamsThread, args=())
t_webcams.start()
else:
pass