Source code for transphire.mountcontainer

"""
    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, QVBoxLayout, QLabel, QHBoxLayout


[docs]class MountContainer(QWidget): """ MountContainer widget. Inherits from: QWidget Buttons: None Signals: None """ def __init__(self, content_mount, mount_worker, parent=None, **kwargs): """ Setup the layout for the widget Arguments: content_mount - Mount points as transphire settings dict. mount_worker - Worker thread instance. parent - Parent widget (default None) kwargs - Unused arguments for easier automatisation Return: None """ super(MountContainer, self).__init__(parent) # Global layout central_layout = QVBoxLayout(self) central_layout.setContentsMargins(0, 0, 0, 0) central_widget = QWidget(self) central_widget.setObjectName('central') central_layout.addWidget(central_widget) # Global content self.content = {} # Layout layout = QVBoxLayout(central_widget) # Temp content content_temp = {} for entry in content_mount: content = {} for widget in entry: for key in widget: content[key] = widget[key] content_temp.setdefault( content['Typ'][0].split('_')[-1].capitalize(), [] ).append(content) # Content for key in sorted(content_temp.keys()): layout_h = QHBoxLayout() layout_h.addStretch(1) label = QLabel(key, self) label.setToolTip(key) layout_h.addWidget(label) layout_h.addStretch(1) layout.addLayout(layout_h) key_names = [] for entry in content_temp[key]: key_names.append((entry['Mount name'][0], entry)) for key_name, entry in sorted(key_names): if key_name: self.content[key_name] = MountWidget( content=entry, mount_worker=mount_worker, parent=self ) layout.addWidget(self.content[key_name]) layout_h = QHBoxLayout() layout_h.addStretch(1) layout_h.addWidget(QLabel('', self)) layout_h.addStretch(1) layout.addLayout(layout_h) layout.addStretch(1)
[docs] def get_settings(self): """ Return settings of the container. Arguments: None Return: Settings as list """ settings = {} for key in self.content: settings[key] = self.content[key].get_settings() return [settings]
[docs] def set_threadlist(self, thread_list): """ Set the thread instances for the different objects. Arguments: thread_list - List of mount threads Return: None """ for key in self.content: self.content[key].set_thread_object( thread_object=thread_list[key]['object'] )
[docs] def enable(self, var, use_all): """ Enable or disable the content. Arguments: var - State of buttons (True or False) use_all - Disable all buttons (True) or only some (False) Return: None """ for key in self.content: if use_all: self.content[key].setEnabled(var) else: self.content[key].setEnabled(var)
from .mountwidget import MountWidget