Example #1
0
    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()
Example #2
0
    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("&",
                                "&amp;").replace("<",
                                                 "&lt;").replace(">", "&gt;"))

            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)
Example #3
0
    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()
Example #4
0
    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("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;"))

            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)