save previews in graphics

This commit is contained in:
dominik
2022-10-30 18:45:43 +01:00
parent 8d148b639b
commit 0ba872571b
6 changed files with 164 additions and 146 deletions

View File

@ -413,7 +413,15 @@ class QFitDialog(QtWidgets.QWidget, Ui_FitDialog):
parameters = model['parameter']
color = model['color']
seen_parameter = []
for p, kwargs in parameters.values():
if (p, kwargs) in seen_parameter:
# plot only previews with different parameter
continue
seen_parameter.append((p, kwargs))
if is_complex is not None:
y = f.func(x, *p, complex_mode=is_complex, **kwargs)
if np.iscomplexobj(y):

View File

@ -48,6 +48,7 @@ class QGraphWindow(QtWidgets.QGraphicsView, Ui_GraphWindow):
self.error_plots = {}
self._special_needs = []
self._external_items = []
self.closable = True
self.log = [False, False]
@ -109,7 +110,7 @@ class QGraphWindow(QtWidgets.QGraphicsView, Ui_GraphWindow):
def __len__(self):
return len(self.active)
def curves(self):
def curves(self) -> tuple:
for a in self.active:
if self.real_button.isChecked():
if self.error_plots[a] is not None:
@ -318,6 +319,7 @@ class QGraphWindow(QtWidgets.QGraphicsView, Ui_GraphWindow):
if not hasattr(item, 'setLogMode'):
self._special_needs.append(item)
self._external_items.append(item)
self.graphic.addItem(item)
item.setZValue(1000)
@ -325,12 +327,15 @@ class QGraphWindow(QtWidgets.QGraphicsView, Ui_GraphWindow):
@QtCore.pyqtSlot(GraphicsObject)
def remove_external(self, item):
if item not in self.graphic.items():
return False
if item in self._external_items:
self._external_items.remove(item)
if item in self._special_needs:
self._special_needs.remove(item)
if item not in self.graphic.items():
return False
self.graphic.removeItem(item)
return True
@ -599,6 +604,10 @@ class QGraphWindow(QtWidgets.QGraphicsView, Ui_GraphWindow):
if item_dic:
dic['items'].append(item_dic)
for item in self._external_items:
dic['items'].append(item.get_data_opts())
in_legend.append(False)
dic['in_legend'] = in_legend
return dic

View File

@ -336,8 +336,8 @@ class PlotItem(PlotDataItem):
opts = self.opts
item_dic = {
'x': x, 'y': y,
'name': opts['name'],
'symbolsize': opts['symbolSize']
'name': opts.get('name', ''),
'symbolsize': opts['symbolSize'],
}
if opts['symbol'] is None:

View File

@ -144,6 +144,7 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow):
self.actionPick_position.triggered.connect(lambda: self._show_tab('pick'))
self.actionIntegrate.triggered.connect(lambda: self._show_tab('integrate'))
self.action_FitWidget.triggered.connect(lambda: self._show_tab('fit'))
self.action_draw_object.triggered.connect(lambda: self._show_tab('drawing'))
self.action_new_set.triggered.connect(self.management.create_empty)
@ -455,6 +456,31 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow):
self.current_graph_widget.enable_picking(pick)
self.current_graph_widget.closable = not block
def _show_tab(self, mode: str):
widget, name = {
't1_temp': (self.t1tauwidget, 'T1 mininmon'),
'signal': (self.editsignalwidget, 'Signals'),
'pick': (self.ptsselectwidget, 'Pick points'),
'fit': (self.fit_dialog, 'Fit'),
'drawing': (self.drawingswidget, 'Draw'),
}[mode]
for idx in range(self.tabWidget.count()):
if self.tabWidget.widget(idx) == widget:
self.tabWidget.setCurrentIndex(idx)
return
self.tabWidget.addTab(widget, name)
self.tabWidget.setCurrentIndex(self.tabWidget.count()-1)
@QtCore.pyqtSlot(int, name='on_tabWidget_tabCloseRequested')
def close_tab(self, idx: int):
if idx == 0:
pass
else:
self.tabWidget.setCurrentIndex(0)
self.tabWidget.removeTab(idx)
@QtCore.pyqtSlot(int, name='on_tabWidget_currentChanged')
def toggle_tabs(self, idx: int):
widget = self.tabWidget.widget(idx)
@ -493,30 +519,6 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow):
return pick_required, block_window
@QtCore.pyqtSlot(int, name='on_tabWidget_tabCloseRequested')
def close_tab(self, idx: int):
if idx == 0:
pass
else:
self.tabWidget.setCurrentIndex(0)
self.tabWidget.removeTab(idx)
def _show_tab(self, mode: str):
widget, name = {
't1_temp': (self.t1tauwidget, 'T1 mininmon'),
'signal': (self.editsignalwidget, 'Signals'),
'pick': (self.ptsselectwidget, 'Pick points'),
'fit': (self.fit_dialog, 'Fit')
}[mode]
for idx in range(self.tabWidget.count()):
if self.tabWidget.widget(idx) == widget:
self.tabWidget.setCurrentIndex(idx)
return
self.tabWidget.addTab(widget, name)
self.tabWidget.setCurrentIndex(self.tabWidget.count()-1)
def _select_valuewidget(self, onoff: bool):
if onoff: # Values
self.valuewidget(self.management.graphs.tree())