class PoincarePlotDatasourcesTableWidget(CompositeWidget): """ a widget which displays selected poincare poincare plot datasource in a summary tachogram plots group widget """ def __init__(self, parent, **params): get_or_put(params, "layout", QVBoxLayout()) get_or_put(params, "i18n_def", "Selected poincare plot datasources") super(PoincarePlotDatasourcesTableWidget, self).__init__(parent, **params) self.params = Params(**params) self.__createTable__() self.__createModel__() def __createTable__(self): self.__table__ = TableViewWidget(self) self.__table__.setSelectionMode(QAbstractItemView.MultiSelection) self.__table__.setSelectionBehavior(QAbstractItemView.SelectRows) self.__table__.layout() def __createModel__(self): self.__table__.setModel(__PoincarePlotDatasourcesTableModel__(self)) if self.params.data_accessors: for data_accessor in self.params.data_accessors: self.__table__.model().appendFile(data_accessor.source_name, data_accessor.path_name) def appendFile(self, _filename): self.__table__.model().appendFile(_filename) def checkMarkFile(self, _filename): pass
class PoincarePlotDatasourcesTableWidget(CompositeWidget): """ a widget which displays selected poincare poincare plot datasource in a summary tachogram plots group widget """ def __init__(self, parent, **params): get_or_put(params, 'layout', QVBoxLayout()) get_or_put(params, 'i18n_def', 'Selected poincare plot datasources') super(PoincarePlotDatasourcesTableWidget, self).__init__(parent, **params) self.params = Params(**params) self.__createTable__() self.__createModel__() def __createTable__(self): self.__table__ = TableViewWidget(self) self.__table__.setSelectionMode(QAbstractItemView.MultiSelection) self.__table__.setSelectionBehavior(QAbstractItemView.SelectRows) self.__table__.layout() def __createModel__(self): self.__table__.setModel(__PoincarePlotDatasourcesTableModel__(self)) if self.params.data_accessors: for data_accessor in self.params.data_accessors: self.__table__.model().appendFile(data_accessor.source_name, data_accessor.path_name) def appendFile(self, _filename): self.__table__.model().appendFile(_filename) def checkMarkFile(self, _filename): pass
class StatisticsSelectionWidget(GroupBoxWidget): #this value is set up in __createModel__ method VALUE_COLUMN = 0 """ widget which gives ability to select statistics """ @temporarySettingsDecorator() def __init__(self, parent, **params): get_or_put(params, 'layout', QVBoxLayout()) get_or_put(params, 'i18n_def', 'Statistics') super(StatisticsSelectionWidget, self).__init__(parent, **params) self.params = Params(**params) if self.params.statistics_base_classes == None: self.params.statistics_base_classes = [Asymmetry] if self.params.data_accessor: self.params.data_accessor.addListener(self, __StatisticsSelectionVectorListener__(self)) self.__createButtons__() self.__createTable__() self.__createModel__() self.__fillStatistics__(self.params.statistics_base_classes) def __createTable__(self): self.__table__ = TableViewWidget(self, change_check_count_handler=self.params.change_selection_count_handler, # @IgnorePep8 check_handler=self.__check_handler__) self.__table__.setSelectionMode(QAbstractItemView.MultiSelection) self.__table__.setSelectionBehavior(QAbstractItemView.SelectRows) def __createModel__(self): model = __StatisticsSelectionModel__(self) labels = QStringList(["Statistic", "Description", "Value"]) StatisticsSelectionWidget.VALUE_COLUMN = labels.indexOf("Value") model.setNumValueColumn(StatisticsSelectionWidget.VALUE_COLUMN) model.setHorizontalHeaderLabels(labels) self.__table__.setModel(model) self.__table__.setColumnHidden(StatisticsSelectionWidget.VALUE_COLUMN, True) def __createButtons__(self): buttons_composite = CompositeWidget(self, layout=QHBoxLayout()) PushButtonWidget(buttons_composite, i18n_def="Select all", clicked_handler=self.__select_all_handler__) PushButtonWidget(buttons_composite, i18n_def="Unselect all", clicked_handler=self.__unselect_all_handler__) def __select_all_handler__(self): self.__table__.changeCheckStatForAll(True) def __unselect_all_handler__(self): self.__table__.changeCheckStatForAll(False) def __fillStatistics__(self, _statistics_base_classes): model = self.__table__.model() model.removeRows(0, model.rowCount()) self.__statistics_classes__ = [] for base_class in _statistics_base_classes: for subclass in get_subclasses(base_class): self.__statistics_classes__.append(subclass) #sort alphabetically cmp_stat = lambda x, y: cmp(x.__name__, y.__name__) self.__statistics_classes__ = sorted(self.__statistics_classes__, cmp_stat) for statistic_class in self.__statistics_classes__: check_column = QStandardItem('%s' % statistic_class.__name__) check_column.setCheckState(Qt.Unchecked) check_column.setCheckable(True) description_column = QStandardItem(str(statistic_class().description)) # @IgnorePep8 value_column = QStandardItem('') model.appendRow([check_column, description_column, value_column]) @property def statistics_classes(self): return self.__statistics_classes__ def getSelectedStatisticsClasses(self): selected_classes = [] model = self.__table__.model() for idx in range(model.rowCount()): item = model.item(idx) if item.isCheckable() and item.checkState() == Qt.Checked: selected_classes.append(self.__statistics_classes__[idx]) return selected_classes def setStatisticsValues(self, values_map): """ method to set up statistics values """ if values_map == None: return #show value column self.__table__.setColumnHidden(StatisticsSelectionWidget.VALUE_COLUMN, False) for statistic_class in values_map: row = self.__statistics_classes__.index(statistic_class) self.__table__.model().setItem(row, StatisticsSelectionWidget.VALUE_COLUMN, QStandardItem(str(values_map[statistic_class]))) def __check_handler__(self, item): """ handler invoked when a user check selected row in statistics table view, the parameter is an model's item """ if self.params.check_handler: if item.isCheckable(): statistic_class = self.__statistics_classes__[item.row()] #parameters of outer handler check_handler are #statistics object and whether is checked or unchecked self.params.check_handler(statistic_class(), item.checkState() == Qt.Checked) def checkStatistic(self, _statistic): """ method checks statistic identified by a parameter - statistic class """ row = self.__statistics_classes__.index(_statistic) if row >= 0: item = self.__table__.model().item(row) if item.isCheckable(): item.setCheckState(Qt.Checked) def __getSelectedStatisticsClassesNames__(self): return [statistic_class.__name__ for statistic_class in self.getSelectedStatisticsClasses()] @temporarySetterDecorator(name='selected_statistics', _conv=QVariant.toPyObject, _getter_handler=__getSelectedStatisticsClassesNames__) def __setSelectedStatistics__(self, _statistics_class_names): if not _statistics_class_names == None: model = self.__table__.model() for idx in range(model.rowCount()): item = model.item(idx) if item.isCheckable() and item.checkState() == Qt.Unchecked \ and self.__statistics_classes__[idx].__name__ in _statistics_class_names: # @IgnorePep8 item.setCheckState(Qt.Checked)
class StatisticsSelectionWidget(GroupBoxWidget): #this value is set up in __createModel__ method VALUE_COLUMN = 0 """ widget which gives ability to select statistics """ @temporarySettingsDecorator() def __init__(self, parent, **params): get_or_put(params, 'layout', QVBoxLayout()) get_or_put(params, 'i18n_def', 'Statistics') super(StatisticsSelectionWidget, self).__init__(parent, **params) self.params = Params(**params) if self.params.statistics_base_classes == None: self.params.statistics_base_classes = [Asymmetry] if self.params.data_accessor: self.params.data_accessor.addListener( self, __StatisticsSelectionVectorListener__(self)) self.__createButtons__() self.__createTable__() self.__createModel__() self.__fillStatistics__(self.params.statistics_base_classes) def __createTable__(self): self.__table__ = TableViewWidget( self, change_check_count_handler=self.params. change_selection_count_handler, # @IgnorePep8 check_handler=self.__check_handler__) self.__table__.setSelectionMode(QAbstractItemView.MultiSelection) self.__table__.setSelectionBehavior(QAbstractItemView.SelectRows) def __createModel__(self): model = __StatisticsSelectionModel__(self) labels = QStringList(["Statistic", "Description", "Value"]) StatisticsSelectionWidget.VALUE_COLUMN = labels.indexOf("Value") model.setNumValueColumn(StatisticsSelectionWidget.VALUE_COLUMN) model.setHorizontalHeaderLabels(labels) self.__table__.setModel(model) self.__table__.setColumnHidden(StatisticsSelectionWidget.VALUE_COLUMN, True) def __createButtons__(self): buttons_composite = CompositeWidget(self, layout=QHBoxLayout()) PushButtonWidget(buttons_composite, i18n_def="Select all", clicked_handler=self.__select_all_handler__) PushButtonWidget(buttons_composite, i18n_def="Unselect all", clicked_handler=self.__unselect_all_handler__) def __select_all_handler__(self): self.__table__.changeCheckStatForAll(True) def __unselect_all_handler__(self): self.__table__.changeCheckStatForAll(False) def __fillStatistics__(self, _statistics_base_classes): model = self.__table__.model() model.removeRows(0, model.rowCount()) self.__statistics_classes__ = [] for base_class in _statistics_base_classes: for subclass in get_subclasses(base_class): self.__statistics_classes__.append(subclass) #sort alphabetically cmp_stat = lambda x, y: cmp(x.__name__, y.__name__) self.__statistics_classes__ = sorted(self.__statistics_classes__, cmp_stat) for statistic_class in self.__statistics_classes__: check_column = QStandardItem('%s' % statistic_class.__name__) check_column.setCheckState(Qt.Unchecked) check_column.setCheckable(True) description_column = QStandardItem( str(statistic_class().description)) # @IgnorePep8 value_column = QStandardItem('') model.appendRow([check_column, description_column, value_column]) @property def statistics_classes(self): return self.__statistics_classes__ def getSelectedStatisticsClasses(self): selected_classes = [] model = self.__table__.model() for idx in range(model.rowCount()): item = model.item(idx) if item.isCheckable() and item.checkState() == Qt.Checked: selected_classes.append(self.__statistics_classes__[idx]) return selected_classes def setStatisticsValues(self, values_map): """ method to set up statistics values """ if values_map == None: return #show value column self.__table__.setColumnHidden(StatisticsSelectionWidget.VALUE_COLUMN, False) for statistic_class in values_map: row = self.__statistics_classes__.index(statistic_class) self.__table__.model().setItem( row, StatisticsSelectionWidget.VALUE_COLUMN, QStandardItem(str(values_map[statistic_class]))) def __check_handler__(self, item): """ handler invoked when a user check selected row in statistics table view, the parameter is an model's item """ if self.params.check_handler: if item.isCheckable(): statistic_class = self.__statistics_classes__[item.row()] #parameters of outer handler check_handler are #statistics object and whether is checked or unchecked self.params.check_handler(statistic_class(), item.checkState() == Qt.Checked) def checkStatistic(self, _statistic): """ method checks statistic identified by a parameter - statistic class """ row = self.__statistics_classes__.index(_statistic) if row >= 0: item = self.__table__.model().item(row) if item.isCheckable(): item.setCheckState(Qt.Checked) def __getSelectedStatisticsClassesNames__(self): return [ statistic_class.__name__ for statistic_class in self.getSelectedStatisticsClasses() ] @temporarySetterDecorator( name='selected_statistics', _conv=QVariant.toPyObject, _getter_handler=__getSelectedStatisticsClassesNames__) def __setSelectedStatistics__(self, _statistics_class_names): if not _statistics_class_names == None: model = self.__table__.model() for idx in range(model.rowCount()): item = model.item(idx) if item.isCheckable() and item.checkState() == Qt.Unchecked \ and self.__statistics_classes__[idx].__name__ in _statistics_class_names: # @IgnorePep8 item.setCheckState(Qt.Checked)
class FilesTrackerWidget(CompositeWidget): """ widget which tracks created files """ def __init__(self, parent, **params): get_or_put(params, 'layout', QVBoxLayout()) get_or_put(params, 'i18n_def', 'Files') super(FilesTrackerWidget, self).__init__(parent, **params) self.params = Params(**params) self.__create_oper_buttons__() self.__createTable__() self.__createModel__() self.__create_misc_buttons__() def __createTable__(self): self.__table__ = TableViewWidget(self, change_check_count_handler=self.__change_check_count_handler__, rows_inserted_handler=self.__rows_inserted_handler__) self.__table__.setSelectionMode(QAbstractItemView.MultiSelection) self.__table__.setSelectionBehavior(QAbstractItemView.SelectRows) def __createModel__(self): self.__table__.setModel(__FilesTrackerModel__(self)) def __create_oper_buttons__(self): buttons_composite = CompositeWidget(self, layout=QHBoxLayout()) self.__select_all__ = PushButtonWidget(buttons_composite, i18n_def="Select all", clicked_handler=self.__select_all_handler__, enabled=False) self.__unselect_all__ = PushButtonWidget(buttons_composite, i18n_def="Unselect all", clicked_handler=self.__unselect_all_handler__, enabled=False) self.__clear__ = PushButtonWidget(buttons_composite, i18n_def="Clear", clicked_handler=self.__clear_handler__, enabled=False) def __select_all_handler__(self): self.__table__.changeCheckStatForAll(True) def __unselect_all_handler__(self): self.__table__.changeCheckStatForAll(False) def __clear_handler__(self): self.__table__.clearRows() self.__select_all__.setEnabled(False) self.__unselect_all__.setEnabled(False) self.__clear__.setEnabled(False) self.__plain_view__.setEnabled(False) def appendFile(self, _filename): self.__table__.model().appendFile(_filename) def __create_misc_buttons__(self): buttons_composite = CompositeWidget(self, layout=QHBoxLayout()) self.__plain_view__ = PushButtonWidget(buttons_composite, i18n_def="Plain view", clicked_handler=self.__plain_view_handler__, enabled=False) def __plain_view_handler__(self): filesnames = self.__table__.model().getSelectedFiles() dialog = FilesPreviewDialog(normalize_filenames(filesnames), self) dialog.exec_() def __change_check_count_handler__(self, count): self.__plain_view__.setEnabled(count > 0) def __rows_inserted_handler__(self, model_index, start_row, end_row): self.__select_all__.setEnabled(True) self.__unselect_all__.setEnabled(True) self.__clear__.setEnabled(True)