Source code for transphire.framewidget
"""
TranSPHIRE is supposed to help with the cryo-EM data collection
Copyright (C) 2017 Markus Stabrin
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QPushButton
from PyQt5.QtCore import pyqtSignal, pyqtSlot
[docs]class FrameWidget(QWidget):
"""
FrameWidget widget.
Inherits from:
QWidget
Buttons:
Delete - Delete this instance of the variable.
Signals:
delete - Delete this instance of the variable (class instance).
"""
delete = pyqtSignal(object)
def __init__(self, first, last, dose_weight, default, parent=None):
"""
Setup the layout for the widget
Arguments:
first - First frame
last - Last frame
dose_weight - Do dose weighting or not
default - Is this instance default or not
parent - Parent widget (default None)
Return:
None
"""
super(FrameWidget, self).__init__(parent)
# Global content
self.first = int(first)
self.last = int(last)
self.dose_weight = dose_weight
self.default = default
# Label content
label_first = QLabel('First: {0}'.format(self.first), self)
label_last = QLabel('Last: {0}'.format(self.last), self)
label_dose_weight = QLabel(
'Dose weighting: {0}'.format(self.dose_weight),
self
)
# Delete button
if self.default:
button = QPushButton('Default', self)
button.setEnabled(False)
else:
button = QPushButton('Del', self)
button.clicked.connect(self._button_clicked)
# Add to layout
layout = QHBoxLayout(self)
layout.setContentsMargins(0, 0, 0, 0)
layout.addWidget(label_first)
layout.addWidget(label_last)
layout.addWidget(label_dose_weight)
layout.addWidget(button)
# Object names
label_first.setObjectName('entry')
label_last.setObjectName('entry')
label_dose_weight.setObjectName('entry')
button.setObjectName('button_entry')
@pyqtSlot()
def _button_clicked(self):
"""
Emit the signal with the information
Arguments:
None
Return:
None
"""
self.delete.emit(self)
[docs] def get_settings(self):
"""
Get the settings
Arguments:
None
Return:
settings as dictionary
"""
settings = {}
settings['first'] = self.first
settings['last'] = self.last
settings['dw'] = self.dose_weight
settings['default'] = self.default
return settings