pyTEMlib 0.2020.11.0__py3-none-any.whl → 0.2024.8.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyTEMlib might be problematic. Click here for more details.

Files changed (59) hide show
  1. pyTEMlib/__init__.py +11 -11
  2. pyTEMlib/animation.py +631 -0
  3. pyTEMlib/atom_tools.py +240 -222
  4. pyTEMlib/config_dir.py +57 -29
  5. pyTEMlib/core_loss_widget.py +658 -0
  6. pyTEMlib/crystal_tools.py +1255 -0
  7. pyTEMlib/diffraction_plot.py +756 -0
  8. pyTEMlib/dynamic_scattering.py +293 -0
  9. pyTEMlib/eds_tools.py +609 -0
  10. pyTEMlib/eels_dialog.py +749 -486
  11. pyTEMlib/{interactive_eels.py → eels_dialog_utilities.py} +1199 -1524
  12. pyTEMlib/eels_tools.py +2031 -1731
  13. pyTEMlib/file_tools.py +1276 -491
  14. pyTEMlib/file_tools_qt.py +193 -0
  15. pyTEMlib/graph_tools.py +1166 -450
  16. pyTEMlib/graph_viz.py +449 -0
  17. pyTEMlib/image_dialog.py +158 -0
  18. pyTEMlib/image_dlg.py +146 -0
  19. pyTEMlib/image_tools.py +1399 -956
  20. pyTEMlib/info_widget.py +933 -0
  21. pyTEMlib/interactive_image.py +1 -0
  22. pyTEMlib/kinematic_scattering.py +1196 -0
  23. pyTEMlib/low_loss_widget.py +176 -0
  24. pyTEMlib/microscope.py +61 -78
  25. pyTEMlib/peak_dialog.py +1047 -350
  26. pyTEMlib/peak_dlg.py +286 -248
  27. pyTEMlib/probe_tools.py +653 -202
  28. pyTEMlib/sidpy_tools.py +153 -129
  29. pyTEMlib/simulation_tools.py +104 -87
  30. pyTEMlib/version.py +6 -3
  31. pyTEMlib/xrpa_x_sections.py +20972 -0
  32. {pyTEMlib-0.2020.11.0.dist-info → pyTEMlib-0.2024.8.4.dist-info}/LICENSE +21 -21
  33. pyTEMlib-0.2024.8.4.dist-info/METADATA +93 -0
  34. pyTEMlib-0.2024.8.4.dist-info/RECORD +37 -0
  35. {pyTEMlib-0.2020.11.0.dist-info → pyTEMlib-0.2024.8.4.dist-info}/WHEEL +6 -5
  36. {pyTEMlib-0.2020.11.0.dist-info → pyTEMlib-0.2024.8.4.dist-info}/entry_points.txt +0 -1
  37. pyTEMlib/KinsCat.py +0 -2685
  38. pyTEMlib/__version__.py +0 -2
  39. pyTEMlib/data/TEMlibrc +0 -68
  40. pyTEMlib/data/edges_db.csv +0 -189
  41. pyTEMlib/data/edges_db.pkl +0 -0
  42. pyTEMlib/data/fparam.txt +0 -103
  43. pyTEMlib/data/microscopes.csv +0 -7
  44. pyTEMlib/data/microscopes.xml +0 -167
  45. pyTEMlib/data/path.txt +0 -1
  46. pyTEMlib/defaults_parser.py +0 -86
  47. pyTEMlib/dm3_reader.py +0 -609
  48. pyTEMlib/edges_db.py +0 -76
  49. pyTEMlib/eels_dlg.py +0 -240
  50. pyTEMlib/hdf_utils.py +0 -481
  51. pyTEMlib/image_tools1.py +0 -2194
  52. pyTEMlib/info_dialog.py +0 -227
  53. pyTEMlib/info_dlg.py +0 -205
  54. pyTEMlib/nion_reader.py +0 -293
  55. pyTEMlib/nsi_reader.py +0 -165
  56. pyTEMlib/structure_tools.py +0 -316
  57. pyTEMlib-0.2020.11.0.dist-info/METADATA +0 -20
  58. pyTEMlib-0.2020.11.0.dist-info/RECORD +0 -42
  59. {pyTEMlib-0.2020.11.0.dist-info → pyTEMlib-0.2024.8.4.dist-info}/top_level.txt +0 -0
pyTEMlib/info_dialog.py DELETED
@@ -1,227 +0,0 @@
1
- from PyQt5 import QtCore, QtWidgets
2
-
3
- import numpy as np
4
- import sidpy
5
- from pyTEMlib import info_dlg
6
- import pyTEMlib.interactive_eels as ieels
7
- from pyTEMlib.microscope import microscope
8
-
9
- from pyTEMlib import file_tools as ft
10
- _version = 000
11
-
12
-
13
- class InfoDialog(QtWidgets.QDialog):
14
- """
15
- EELS Input Dialog for Chemical Analysis
16
-
17
- Opens a PyQt5 GUi Dialog that allows to set the experimental parameter necessary for a Quantification.
18
-
19
-
20
- The dialog operates on a sidpy dataset which
21
- -reads and sets the spectral dimension with ``offset`` and ``dispersion``.
22
- -reads and writes an 'experiment' dictionary in the metadata of the sidpy Dataset.
23
-
24
- access dimension with dataset.energy_scale
25
- access experimental parameters with ``dataset.metadata['experiment']``
26
-
27
- experimental parameters are:
28
- -acquisition time
29
- -convergence angle
30
- -collection angle
31
- -acceleration voltage
32
-
33
- -flux of electrons
34
- """
35
-
36
- def __init__(self, dataset=None):
37
- super().__init__(None, QtCore.Qt.WindowStaysOnTopHint)
38
- # Create an instance of the GUI
39
- self.ui = info_dlg.UiDialog(self)
40
- self.set_action()
41
-
42
- self.dataset = dataset
43
- self.spec_dim = []
44
- self.energy_scale = np.array([])
45
- self.experiment = {}
46
- self.energy_dlg = None
47
- self.axis = None
48
- self.show()
49
-
50
- if dataset is None:
51
- # make a dummy dataset for testing
52
- dataset = ft.make_dummy_dataset(sidpy.DataTypes.SPECTRUM)
53
- if not isinstance(dataset, sidpy.Dataset):
54
- raise TypeError('dataset has to be a sidpy dataset')
55
-
56
- self.set_dataset(dataset)
57
-
58
- self.dataset.plot()
59
- if hasattr(self.dataset.view, 'axes'):
60
- self.axis = self.dataset.view.axes[-1]
61
- elif hasattr(self.dataset.view, 'axis'):
62
- self.axis = self.dataset.view.axis
63
- self.figure = self.axis.figure
64
- self.plot()
65
- self.update()
66
-
67
- def set_dataset(self, dataset):
68
- self.dataset = dataset
69
- if not hasattr(self.dataset, '_axes'):
70
- self.dataset._axes = self.dataset.axes
71
- if not hasattr(self.dataset, 'meta_data'):
72
- self.dataset.meta_data = {}
73
-
74
- self.spec_dim = ft.get_dimensions_by_type(sidpy.DimensionTypes.SPECTRAL, dataset)
75
- if len(self.spec_dim) != 1:
76
- raise TypeError('We need exactly one SPECTRAL dimension')
77
- self.spec_dim = self.spec_dim[0]
78
- self.energy_scale = self.spec_dim[1].values.copy()
79
-
80
- minimum_info = {'offset': self.energy_scale[0],
81
- 'dispersion': self.energy_scale[1] - self.energy_scale[0],
82
- 'exposure_time': 0.0,
83
- 'convergence_angle': 0.0, 'collection_angle': 0.0,
84
- 'acceleration_voltage': 100.0, 'binning': 1, 'conversion': 1.0,
85
- 'flux': 1.0, 'current': 1.0}
86
- if 'experiment' not in self.dataset.metadata:
87
- self.dataset.metadata['experiment'] = minimum_info
88
- self.experiment = self.dataset.metadata['experiment']
89
-
90
- for key, item in minimum_info.items():
91
- if key not in self.experiment:
92
- self.experiment[key] = item
93
-
94
- def set_dimension(self):
95
- self.spec_dim = ft.get_dimensions_by_type(sidpy.DimensionTypes.SPECTRAL, self.dataset)
96
- self.spec_dim = self.spec_dim[0]
97
- old_energy_scale = self.spec_dim[1]
98
- self.dataset.set_dimension(self.spec_dim[0], sidpy.Dimension(np.array(self.energy_scale),
99
- name=old_energy_scale.name,
100
- dimension_type=sidpy.DimensionTypes.SPECTRAL,
101
- units='eV',
102
- quantity='energy loss'))
103
-
104
- def update(self):
105
-
106
- self.ui.offsetEdit.setText(f"{self.experiment['offset']:.3f}")
107
- self.ui.dispersionEdit.setText(f"{self.experiment['dispersion']:.3f}")
108
- self.ui.timeEdit.setText(f"{self.experiment['exposure_time']:.6f}")
109
-
110
- self.ui.convEdit.setText(f"{self.experiment['convergence_angle']:.2f}")
111
- self.ui.collEdit.setText(f"{self.experiment['collection_angle']:.2f}")
112
- self.ui.E0Edit.setText(f"{self.experiment['acceleration_voltage']/1000.:.2f}")
113
-
114
- self.ui.binningEdit.setText(f"{self.experiment['binning']}")
115
- self.ui.conversionEdit.setText(f"{self.experiment['conversion']:.2f}")
116
- self.ui.fluxEdit.setText(f"{self.experiment['flux']:.2f}")
117
- self.ui.VOAEdit.setText(f"{self.experiment['current']:.2f}")
118
-
119
- def on_enter(self):
120
- sender = self.sender()
121
-
122
- if sender == self.ui.offsetEdit:
123
- value = float(str(sender.displayText()).strip())
124
- self.experiment['offset'] = value
125
- sender.setText(f"{value:.2f}")
126
- self.energy_scale = self.energy_scale - self.energy_scale[0] + value
127
- self.set_dimension()
128
- self.plot()
129
- elif sender == self.ui.dispersionEdit:
130
- value = float(str(sender.displayText()).strip())
131
- self.experiment['dispersion'] = value
132
- self.energy_scale = np.arange(len(self.energy_scale)) * value + self.energy_scale[0]
133
- self.set_dimension()
134
- self.plot()
135
- sender.setText(f"{value:.3f}")
136
- elif sender == self.ui.timeEdit:
137
- value = float(str(sender.displayText()).strip())
138
- self.experiment['exposure_time'] = value
139
- sender.setText(f"{value:.2f}")
140
- elif sender == self.ui.convEdit:
141
- value = float(str(sender.displayText()).strip())
142
- self.experiment['convergence_angle'] = value
143
- sender.setText(f"{value:.2f}")
144
- elif sender == self.ui.collEdit:
145
- value = float(str(sender.displayText()).strip())
146
- self.experiment['collection_angle'] = value
147
- sender.setText(f"{value:.2f}")
148
- elif sender == self.ui.E0Edit:
149
- value = float(str(sender.displayText()).strip())
150
- self.experiment['acceleration_voltage'] = value*1000.0
151
- sender.setText(f"{value:.2f}")
152
- elif sender == self.ui.E0Edit:
153
- value = float(str(sender.displayText()).strip())
154
- self.experiment['acceleration_voltage'] = value
155
- sender.setText(f"{value:.2f}")
156
- elif sender == self.ui.binXEdit or sender == self.ui.binYEdit:
157
- if self.dataset.data_type == sidpy.DataTypes.SPECTRAL_IMAGE:
158
- bin_x = int(self.ui.binXEdit.displayText())
159
- bin_y = int(self.ui.binYEdit.displayText())
160
- self.dataset.view.set_bin([bin_x, bin_y])
161
- self.ui.binXEdit.setText(str(self.dataset.view.bin_x))
162
- self.ui.binYEdit.setText(str(self.dataset.view.bin_y))
163
- else:
164
- print('not supported yet')
165
-
166
- def plot(self):
167
- if self.dataset.data_type == sidpy.DataTypes.SPECTRAL_IMAGE:
168
- spectrum = self.dataset.view.get_spectrum()
169
- self.axis = self.dataset.view.axes[1]
170
- else:
171
- spectrum = np.array(self.dataset)
172
- self.axis = self.dataset.view.axis
173
-
174
- x_limit = self.axis.get_xlim()
175
- y_limit = self.axis.get_ylim()
176
- self.axis.clear()
177
-
178
- self.axis.plot(self.energy_scale, spectrum, label='spectrum')
179
- self.axis.set_xlim(x_limit)
180
- self.axis.set_ylim(y_limit)
181
- self.figure.canvas.draw_idle()
182
-
183
- def on_list_enter(self):
184
- sender = self.sender()
185
- if sender == self.ui.TEMList:
186
- microscope.set_microscope(self.ui.TEMList.currentText())
187
- self.experiment['microscope'] = microscope.name
188
- self.experiment['convergence_angle'] = microscope.alpha
189
- self.experiment['collection_angle'] = microscope.beta
190
- self.experiment['acceleration_voltage'] = microscope.E0
191
- self.update()
192
-
193
- def set_energy_scale(self):
194
- self.energy_dlg = ieels.EnergySelector(self.dataset)
195
-
196
- self.energy_dlg.signal_selected[bool].connect(self.set_energy)
197
- self.energy_dlg.show()
198
-
199
- def set_energy(self, k):
200
- self.spec_dim = ft.get_dimensions_by_type(sidpy.DimensionTypes.SPECTRAL, self.dataset)
201
- self.spec_dim = self.spec_dim[0]
202
-
203
- self.energy_scale = self.spec_dim[1]
204
- self.experiment['offset'] = self.energy_scale[0]
205
- self.experiment['dispersion'] = self.energy_scale[1] - self.energy_scale[0]
206
- self.update()
207
-
208
- def on_check(self):
209
- pass
210
-
211
- def set_action(self):
212
- self.ui.offsetEdit.editingFinished.connect(self.on_enter)
213
- self.ui.dispersionEdit.editingFinished.connect(self.on_enter)
214
- self.ui.timeEdit.editingFinished.connect(self.on_enter)
215
-
216
- self.ui.TEMList.activated[str].connect(self.on_list_enter)
217
-
218
- self.ui.convEdit.editingFinished.connect(self.on_enter)
219
- self.ui.collEdit.editingFinished.connect(self.on_enter)
220
- self.ui.E0Edit.editingFinished.connect(self.on_enter)
221
- self.ui.binningEdit.editingFinished.connect(self.on_enter)
222
- self.ui.conversionEdit.editingFinished.connect(self.on_enter)
223
- self.ui.fluxEdit.editingFinished.connect(self.on_enter)
224
- self.ui.VOAEdit.editingFinished.connect(self.on_enter)
225
- self.ui.energy_button.clicked.connect(self.set_energy_scale)
226
- self.ui.binXEdit.editingFinished.connect(self.on_enter)
227
- self.ui.binYEdit.editingFinished.connect(self.on_enter)
pyTEMlib/info_dlg.py DELETED
@@ -1,205 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- # Form implementation generated from reading ui file 'untitled.ui'
4
- #
5
- # Created by: PyQt5 UI code generator 5.12.3
6
- #
7
- # WARNING! All changes made in this file will be lost!
8
-
9
- from PyQt5 import QtCore, QtGui, QtWidgets
10
- from pyTEMlib.microscope import microscope
11
-
12
-
13
- class UiDialog(object):
14
- def __init__(self, dialog):
15
- dialog.setObjectName('Spectrum Info')
16
- dialog.resize(371, 184)
17
-
18
- valid_float = QtGui.QDoubleValidator()
19
- valid_int = QtGui.QIntValidator()
20
-
21
- self.TEM = []
22
- self.TEM = microscope.get_available_microscope_names()
23
-
24
- self.layout = QtWidgets.QGridLayout()
25
- self.layout.setVerticalSpacing(2)
26
-
27
- self.separator1 = QtWidgets.QLabel(dialog)
28
- self.separator1.setAutoFillBackground(True)
29
- palette = self.separator1.palette()
30
- palette.setColor(self.separator1.backgroundRole(), QtCore.Qt.blue)
31
- palette.setColor(self.separator1.foregroundRole(), QtCore.Qt.white)
32
- self.separator1.setAlignment(QtCore.Qt.AlignCenter)
33
- self.separator1.setMaximumHeight(50)
34
-
35
- self.separator1.setPalette(palette)
36
- ######################################################################
37
- self.separator1.setText("Energy Scale")
38
-
39
- row = 0
40
- self.layout.addWidget(self.separator1, row, 0, 1, 4)
41
- ######################################################################
42
-
43
- row += 1
44
- self.offsetLabel = QtWidgets.QLabel("Offset")
45
- self.offsetEdit = QtWidgets.QLineEdit(" 1.00")
46
- self.offsetEdit.setValidator(valid_float)
47
- self.offsetUnit = QtWidgets.QLabel("eV")
48
-
49
- self.layout.addWidget(self.offsetLabel, row, 0)
50
- self.layout.addWidget(self.offsetEdit, row, 1)
51
- self.layout.addWidget(self.offsetUnit, row, 2)
52
-
53
- row += 1
54
- self.dispersionLabel = QtWidgets.QLabel("Dispersion")
55
- self.dispersionEdit = QtWidgets.QLineEdit(" 1.00")
56
- self.dispersionEdit.setValidator(valid_float)
57
- self.dispersionUnit = QtWidgets.QLabel("eV/channel")
58
-
59
- self.layout.addWidget(self.dispersionLabel, row, 0)
60
- self.layout.addWidget(self.dispersionEdit, row, 1)
61
- self.layout.addWidget(self.dispersionUnit, row, 2)
62
-
63
- row += 1
64
- self.energy_button = QtWidgets.QPushButton('Set Energy Scale', dialog)
65
- self.energy_button.setCheckable(True)
66
-
67
- self.layout.addWidget(self.energy_button, row, 1)
68
-
69
- row += 1
70
- self.timeLabel = QtWidgets.QLabel("Exp. Time")
71
- self.timeEdit = QtWidgets.QLineEdit(" 100.0")
72
- self.timeEdit.setValidator(valid_float)
73
- self.timeUnit = QtWidgets.QLabel("s")
74
-
75
- self.layout.addWidget(self.timeLabel, row, 0)
76
- self.layout.addWidget(self.timeEdit, row, 1)
77
- self.layout.addWidget(self.timeUnit, row, 2)
78
-
79
- self.separator2 = QtWidgets.QLabel(dialog)
80
- self.separator2.setAutoFillBackground(True)
81
- self.separator2.setAlignment(QtCore.Qt.AlignCenter)
82
- self.separator2.setMaximumHeight(50)
83
- self.separator2.setPalette(palette)
84
-
85
- row += 1
86
- ######################################################################
87
- self.separator2.setText("Microscope")
88
- self.layout.addWidget(self.separator2, row, 0, 1, 4)
89
- ######################################################################
90
-
91
- row += 1
92
- self.TEMList = QtWidgets.QComboBox()
93
- self.TEMList.setEditable(False)
94
- self.TEMList.addItems(self.TEM)
95
-
96
- self.layout.addWidget(self.TEMList, row, 1)
97
-
98
- row += 1
99
- self.convLabel = QtWidgets.QLabel("Conv. Angle")
100
- self.convEdit = QtWidgets.QLineEdit(" 100.0")
101
- self.convEdit.setValidator(valid_float)
102
- self.convUnit = QtWidgets.QLabel("mrad")
103
- self.layout.addWidget(self.convLabel, row, 0)
104
- self.layout.addWidget(self.convEdit, row, 1)
105
- self.layout.addWidget(self.convUnit, row, 2)
106
-
107
- row += 1
108
- self.collLabel = QtWidgets.QLabel("Coll. Angle")
109
- self.collEdit = QtWidgets.QLineEdit(" 10.0")
110
- self.collEdit.setValidator(valid_float)
111
- self.collUnit = QtWidgets.QLabel("mrad")
112
- self.layout.addWidget(self.collLabel, row, 0)
113
- self.layout.addWidget(self.collEdit, row, 1)
114
- self.layout.addWidget(self.collUnit, row, 2)
115
-
116
- row += 1
117
- self.E0Label = QtWidgets.QLabel("Acc. Voltage")
118
- self.E0Edit = QtWidgets.QLineEdit(" 100.0")
119
- self.E0Edit.setValidator(valid_float)
120
- self.E0Unit = QtWidgets.QLabel("kV")
121
- self.layout.addWidget(self.E0Label, row, 0)
122
- self.layout.addWidget(self.E0Edit, row, 1)
123
- self.layout.addWidget(self.E0Unit, row, 2)
124
-
125
- self.separator3 = QtWidgets.QLabel(dialog)
126
- self.separator3.setAutoFillBackground(True)
127
- self.separator3.setAlignment(QtCore.Qt.AlignCenter)
128
- self.separator3.setMaximumHeight(50)
129
- self.separator3.setPalette(palette)
130
-
131
- row += 1
132
- ######################################################################
133
- self.separator3.setText("Quantification")
134
- self.layout.addWidget(self.separator3, row, 0, 1, 4)
135
- ######################################################################
136
-
137
- row += 1
138
- self.binningLabel = QtWidgets.QLabel("Binning")
139
- self.binningEdit = QtWidgets.QLineEdit(" 1")
140
- self.binningEdit.setValidator(valid_int)
141
- self.layout.addWidget(self.binningLabel, row, 0)
142
- self.layout.addWidget(self.binningEdit, row, 1)
143
-
144
- row += 1
145
- self.conversionLabel = QtWidgets.QLabel("Conversion")
146
- self.conversionEdit = QtWidgets.QLineEdit(" 25.0")
147
- self.conversionEdit.setValidator(valid_float)
148
- self.conversionUnit = QtWidgets.QLabel("e<sup>-</sup>/counts")
149
- self.layout.addWidget(self.conversionLabel, row, 0)
150
- self.layout.addWidget(self.conversionEdit, row, 1)
151
- self.layout.addWidget(self.conversionUnit, row, 2)
152
- row += 1
153
- self.fluxLabel = QtWidgets.QLabel("Flux")
154
- self.fluxEdit = QtWidgets.QLineEdit(" 100.0")
155
- self.fluxEdit.setValidator(valid_float)
156
- self.fluxUnit = QtWidgets.QLabel("e<sup>-</sup>/s")
157
- self.layout.addWidget(self.fluxLabel, row, 0)
158
- self.layout.addWidget(self.fluxEdit, row, 1)
159
- self.layout.addWidget(self.fluxUnit, row, 2)
160
- row += 1
161
- self.VOALabel = QtWidgets.QLabel("Measurement")
162
- self.VOAEdit = QtWidgets.QLineEdit(" 10.0")
163
- self.VOAEdit.setValidator(valid_float)
164
- self.VOAUnit = QtWidgets.QLabel("pA")
165
- self.layout.addWidget(self.VOALabel, row, 0)
166
- self.layout.addWidget(self.VOAEdit, row, 1)
167
- self.layout.addWidget(self.VOAUnit, row, 2)
168
-
169
- self.separator4 = QtWidgets.QLabel(dialog)
170
- self.separator4.setAutoFillBackground(True)
171
- self.separator4.setAlignment(QtCore.Qt.AlignCenter)
172
- self.separator4.setMaximumHeight(50)
173
- self.separator4.setPalette(palette)
174
- ######################################################################
175
- self.separator4.setText("Spectrum Image")
176
-
177
- row += 1
178
- self.layout.addWidget(self.separator4, row, 0, 1, 4)
179
- ######################################################################
180
-
181
- self.binXLabel = QtWidgets.QLabel('Bin X:')
182
- self.binXEdit = QtWidgets.QLineEdit('1')
183
- self.binXEdit.setValidator(valid_int)
184
- self.binXUnit = QtWidgets.QLabel('pixel')
185
-
186
- row += 1
187
- self.layout.addWidget(self.binXLabel, row, 0)
188
- self.layout.addWidget(self.binXEdit, row, 1)
189
- self.layout.addWidget(self.binXUnit, row, 2)
190
-
191
- self.binYLabel = QtWidgets.QLabel('Bin Y:')
192
- self.binYEdit = QtWidgets.QLineEdit('1')
193
- self.binYEdit.setValidator(valid_int)
194
- self.binYUnit = QtWidgets.QLabel('pixel')
195
-
196
- row += 1
197
- self.layout.addWidget(self.binYLabel, row, 0)
198
- self.layout.addWidget(self.binYEdit, row, 1)
199
- self.layout.addWidget(self.binYUnit, row, 2)
200
-
201
- dialog.setLayout(self.layout)
202
-
203
- dialog.setWindowTitle("Spectrum Info")
204
-
205
- QtCore.QMetaObject.connectSlotsByName(dialog)