class SearchFilter(Gtk.HBox): """ A base class used by common search filters """ #: the label of this filter label = GObject.Property(type=str, flags=(GObject.PARAM_READWRITE)) gsignal('changed') gsignal('removed') __gtype_name__ = 'SearchFilter' def __init__(self, label=''): super(SearchFilter, self).__init__() self.props.label = label self._label = label self._remove_button = None def _add_remove_button(self): self._remove_button = SearchFilterButton(stock=Gtk.STOCK_REMOVE) self._remove_button.set_relief(Gtk.ReliefStyle.NONE) self._remove_button.set_label_visible(False) self._remove_button.connect('clicked', self._on_remove_clicked) self._remove_button.show() self.pack_start(self._remove_button, False, False, 0) def _on_remove_clicked(self, button): self.emit('removed') def do_set_property(self, pspec, value): if pspec.name == 'label': self._label = value else: raise AssertionError(pspec.name) def do_get_property(self, child, property_id, pspec): if pspec.name == 'label': return self._label else: raise AssertionError(pspec.name) def set_label(self, label): self._label = label def get_state(self): """ Implement this in a subclass """ raise NotImplementedError def get_title_label(self): raise NotImplementedError def get_mode_combo(self): raise NotImplementedError def get_description(self): """Returns a description of the search filter. :returns: a string describing the search filter. """ raise NotImplementedError def set_removable(self): if self._remove_button is None: self._add_remove_button()
class SearchFilter(gtk.HBox): """ A base class used by common search filters """ #: the label of this filter label = gobject.property(type=str, flags=(gobject.PARAM_READWRITE)) gsignal('changed') gsignal('removed') __gtype_name__ = 'SearchFilter' def __init__(self, label=''): gtk.HBox.__init__(self) self.props.label = label self._label = label self._remove_button = None def _add_remove_button(self): self._remove_button = SearchFilterButton(stock=gtk.STOCK_REMOVE) self._remove_button.set_relief(gtk.RELIEF_NONE) self._remove_button.set_label_visible(False) self._remove_button.connect('clicked', self._on_remove_clicked) self._remove_button.show() self.pack_start(self._remove_button, False, False) def _on_remove_clicked(self, button): self.emit('removed') def do_set_property(self, pspec, value): if pspec.name == 'label': self._label = value else: raise AssertionError(pspec.name) def do_get_property(self, child, property_id, pspec): if pspec.name == 'label': return self._label else: raise AssertionError(pspec.name) def set_label(self, label): self._label = label def get_state(self): """ Implement this in a subclass """ raise NotImplementedError def get_title_label(self): raise NotImplementedError def get_mode_combo(self): raise NotImplementedError def get_description(self): """Returns a description of the search filter. :returns: a string describing the search filter. """ raise NotImplementedError def set_removable(self): if self._remove_button is None: self._add_remove_button()