def set_filters_and_actions(self, filters_and_actions): """sets filters for the tableview""" assert object_thread(self) filters, actions = filters_and_actions from camelot.view.controls.filterlist import FilterList from camelot.view.controls.actionsbox import ActionsBox logger.debug('setting filters for tableview') filters_widget = self.findChild(FilterList, 'filters') actions_widget = self.findChild(ActionsBox, 'actions') if filters_widget: filters_widget.filters_changed_signal.disconnect( self.rebuild_query) self.filters_layout.removeWidget(filters_widget) filters_widget.deleteLater() if actions_widget: self.filters_layout.removeWidget(actions_widget) actions_widget.deleteLater() if filters: splitter = self.findChild(QtGui.QWidget, 'splitter') filters_widget = FilterList(filters, parent=splitter) filters_widget.setObjectName('filters') self.filters_layout.addWidget(filters_widget) filters_widget.filters_changed_signal.connect(self.rebuild_query) # # filters might have default values, so we can only build the queries now # self.rebuild_query() if actions: actions_widget = ActionsBox(parent=self, gui_context=self.gui_context) actions_widget.setObjectName('actions') actions_widget.set_actions(actions) self.filters_layout.addWidget(actions_widget)
def set_filters_and_actions(self, filters_and_actions): """sets filters for the tableview""" filters, actions = filters_and_actions from camelot.view.controls.filterlist import FilterList from camelot.view.controls.actionsbox import ActionsBox logger.debug('setting filters for tableview') filters_widget = self.findChild(FilterList, 'filters') actions_widget = self.findChild(ActionsBox, 'actions') if filters_widget: filters_widget.filters_changed_signal.disconnect( self.rebuild_query) self.filters_layout.removeWidget(filters_widget) filters_widget.deleteLater() if actions_widget: self.filters_layout.removeWidget(actions_widget) actions_widget.deleteLater() if filters: splitter = self.findChild(QtGui.QWidget, 'splitter') filters_widget = FilterList(filters, parent=splitter) filters_widget.setObjectName('filters') self.filters_layout.addWidget(filters_widget) filters_widget.filters_changed_signal.connect(self.rebuild_query) # # filters might have default values, so we can only build the queries now # self.rebuild_query() if actions: # # Attention, the ActionBox should only contain a reference to the # table, and not to the table model, since this will cause the # garbage collector to collect them both in random order, causing # segfaults (see the test_qt_bindings) # actions_widget = ActionsBox(self, self.get_collection, self.get_selection) actions_widget.setObjectName('actions') actions_widget.setActions(actions) self.filters_layout.addWidget(actions_widget)