def __setattr__(self, name, val): if name in ("text", "markup", "color", "size"): if self.display_label.__dict__.get( name, "hamster_graphics_no_value_really") == val: return setattr(self.display_label, name, val) elif name in ("spacing"): setattr(self.container, name, val) else: if self.__dict__.get(name, "hamster_graphics_no_value_really") == val: return Bin.__setattr__(self, name, val) if name in ('x_align', 'y_align') and hasattr(self, "container"): setattr(self.container, name, val) elif name == "alloc_w" and hasattr(self, "display_label") and getattr( self, "overflow") is not False: self._update_max_width() elif name == "min_width" and hasattr(self, "display_label"): self.display_label.width = val - self.horizontal_padding elif name == "overflow" and hasattr(self, "display_label"): if val is False: self.display_label.wrap = None self.display_label.ellipsize = None elif isinstance( val, pango.WrapMode) and val in (pango.WrapMode.WORD, pango.WrapMode.WORD_CHAR, pango.WrapMode.CHAR): self.display_label.wrap = val self.display_label.ellipsize = None elif isinstance(val, pango.EllipsizeMode) and val in ( pango.EllipsizeMode.START, pango.EllipsizeMode.MIDDLE, pango.EllipsizeMode.END): self.display_label.wrap = None self.display_label.ellipsize = val self._update_max_width() elif name in ("font_desc", "size"): setattr(self.display_label, name, val) if name in ("text", "markup", "image", "image_position", "overflow", "size"): if hasattr(self, "overflow"): self._position_contents() self.container.queue_resize()
def __setattr__(self, name, val): if name == "cursor_position" and not self.editable: val = None if self.__dict__.get(name, "hamster_graphics_no_value_really") == val: return if name == "text": val = val or "" if getattr(self, "text_formatter", None): markup = self.text_formatter( val.replace("&", "&").replace("<", "<").replace(">", ">")) if markup: self.display_label.markup = markup else: self.display_label.text = val Bin.__setattr__(self, name, val) if name == "text": self.emit("on-change", val) if name in ("font_desc", "alignment", "single_paragraph", "color"): setattr(self.display_label, name, val) elif name == "alloc_w" and getattr(self, "overflow", False) != False and hasattr( self, "display_label"): self.display_label.width = val - self.horizontal_padding elif name == "overflow" and val != False and hasattr( self, "display_label"): if val in (pango.WrapMode.WORD, pango.WrapMode.WORD_CHAR, pango.WrapMode.CHAR): self.display_label.wrap = val self.display_label.ellipsize = None elif val in (pango.EllipsizeMode.START, pango.EllipsizeMode.END): self.display_label.wrap = None self.display_label.ellipsize = val if name == "cursor_position": self.emit("on-position-change", val)
def __setattr__(self, name, val): if name in ("text", "markup", "color", "size"): if self.display_label.__dict__.get(name, "hamster_graphics_no_value_really") == val: return setattr(self.display_label, name, val) elif name in ("spacing"): setattr(self.container, name, val) else: if self.__dict__.get(name, "hamster_graphics_no_value_really") == val: return Bin.__setattr__(self, name, val) if name in ('x_align', 'y_align') and hasattr(self, "container"): setattr(self.container, name, val) elif name == "alloc_w" and hasattr(self, "display_label") and getattr(self, "overflow") is not False: self._update_max_width() elif name == "min_width" and hasattr(self, "display_label"): self.display_label.width = val - self.horizontal_padding elif name == "overflow" and hasattr(self, "display_label"): if val is False: self.display_label.wrap = None self.display_label.ellipsize = None elif isinstance(val, pango.WrapMode) and val in (pango.WrapMode.WORD, pango.WrapMode.WORD_CHAR, pango.WrapMode.CHAR): self.display_label.wrap = val self.display_label.ellipsize = None elif isinstance(val, pango.EllipsizeMode) and val in (pango.EllipsizeMode.START, pango.EllipsizeMode.MIDDLE, pango.EllipsizeMode.END): self.display_label.wrap = None self.display_label.ellipsize = val self._update_max_width() elif name in ("font_desc", "size"): setattr(self.display_label, name, val) if name in ("text", "markup", "image", "image_position", "overflow", "size"): if hasattr(self, "overflow"): self._position_contents() self.container.queue_resize()
def __setattr__(self, name, val): if name == "cursor_position" and not self.editable: val = None if self.__dict__.get(name, "hamster_graphics_no_value_really") == val: return if name == "text": val = val or "" if getattr(self, "text_formatter", None): markup = self.text_formatter(val.replace("&", "&").replace("<", "<").replace(">", ">")) if markup: self.display_label.markup = markup else: self.display_label.text = val Bin.__setattr__(self, name, val) if name == "text": self.emit("on-change", val) if name in("font_desc", "alignment", "single_paragraph", "color"): setattr(self.display_label, name, val) elif name == "alloc_w" and getattr(self, "overflow", False) != False and hasattr(self, "display_label"): self.display_label.width = val - self.horizontal_padding elif name == "overflow" and val != False and hasattr(self, "display_label"): if val in (pango.WrapMode.WORD, pango.WrapMode.WORD_CHAR, pango.WrapMode.CHAR): self.display_label.wrap = val self.display_label.ellipsize = None elif val in (pango.EllipsizeMode.START, pango.EllipsizeMode.END): self.display_label.wrap = None self.display_label.ellipsize = val if name == "cursor_position": self.emit("on-position-change", val)