class ManagerExplorer(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent=parent) self._current = None self._layout = QtGui.QGridLayout(self) p = QtGui.QSizePolicy self._explorer = ManagerExplorerView() self._explorer.item_changed.connect(self._on_item_changed) self._explorer.setSizePolicy(p(p.MinimumExpanding, p.MinimumExpanding)) self._filter_box = FilterBox() self._filter_box.filter_changed.connect(self._on_filter_changed) self._switcher = WidgetSwitcher(parent=self) self._switcher.setSizePolicy(p(p.MinimumExpanding, p.MinimumExpanding)) self._layout.addWidget(QtGui.QLabel("Group by ..."), 0, 0) self._layout.addWidget(self._filter_box, 0, 1) self._layout.addWidget(self._explorer, 1, 0, 1, 2) self._layout.addWidget(self._switcher, 1, 2) self.resize(800, 600) def _on_filter_changed(self, text): self.groupby(filter_name=text) def set_items(self, items): self._explorer.set_items(items) def set_criteria(self, criteria): self._filter_box.set_criteria(criteria) def item(self): return self._current def groupby(self, **kwds): self._filter_box.set_filter(kwds.get('filter_name', "user_defined")) self._explorer.groupby(**kwds) def _on_item_changed(self, item): pass