Esempio n. 1
0
    def notify(self, event):
        """E.notify (...) -> None

        Notifies the Entry about an event.
        """
        if not self.sensitive:
            return

        if event.signal == SIG_MOUSEDOWN:
            eventarea = self.rect_to_client()
            if eventarea.collidepoint(event.data.pos):
                self.run_signal_handlers(SIG_MOUSEDOWN, event.data)
                if event.data.button == 1:
                    self._caret_visible = True
                    self._set_caret_position(eventarea, event.data.pos)
                    if not self.focus:
                        self.activate()
                event.handled = True

        elif event.signal == SIG_MOUSEMOVE:
            eventarea = self.rect_to_client()
            if eventarea.collidepoint(event.data.pos):
                self.run_signal_handlers(SIG_MOUSEMOVE, event.data)
                self.entered = True
                event.handled = True
            else:
                self.entered = False

        Editable.notify(self, event)
Esempio n. 2
0
    def __init__ (self, text=""):
        Editable.__init__ (self)
        self.text = text
        self._padding = 2
        self.size = 94, 24 # Default size to use.

        self._signals[SIG_MOUSEDOWN] = []
Esempio n. 3
0
    def notify (self, event):
        """E.notify (...) -> None

        Notifies the Entry about an event.
        """
        if not self.sensitive:
            return
        
        if event.signal == SIG_MOUSEDOWN:
            eventarea = self.rect_to_client ()
            if eventarea.collidepoint (event.data.pos):
                self.run_signal_handlers (SIG_MOUSEDOWN, event.data)
                if event.data.button == 1:
                    self._caret_visible = True
                    self._set_caret_position (eventarea, event.data.pos)
                    if not self.focus:
                        self.activate ()
                event.handled = True

        elif event.signal == SIG_MOUSEMOVE:
            eventarea = self.rect_to_client ()
            if eventarea.collidepoint (event.data.pos):
                self.run_signal_handlers (SIG_MOUSEMOVE, event.data)
                self.entered = True
                event.handled = True
            else:
                self.entered = False

        Editable.notify (self, event)
Esempio n. 4
0
    def notify (self, event):
        """E.notify (...) -> None

        Notifies the Entry about an event.
        """
        if not self.eventarea or not self.sensitive:
            return
        
        if event.signal == SIG_MOUSEDOWN:
            if self.eventarea.collidepoint (event.data.pos):
                self.run_signal_handlers (SIG_MOUSEDOWN)
                if (event.data.button == 1):
                    self.activate ()
        
        Editable.notify (self, event)
Esempio n. 5
0
    def draw(self):
        """E.draw () -> None

        Draws the Entry surface.
        """
        Editable.draw(self)
        cls = self.__class__
        style = base.GlobalStyle
        engine = style.engine
        st = self.style or style.get_style(cls)
        border = style.get_border_size(cls, st, self.border)
        text = self.text
        rect = self.image.get_rect()

        if self.password:
            text = '*' * len(self.text)
        rtext = style.engine.draw_string(text, self.state, cls, st)

        # The 'inner' surface, which we will use for blitting the text.
        sf_text = engine.draw_rect(rect.width - 2 * (self.padding + border),
                                   rect.height - 2 * (self.padding + border),
                                   self.state, cls, st)

        # Adjust entry offset based on caret location.
        font = String.create_font \
               (style.get_style_entry (cls, st, "font", "name"),
                style.get_style_entry (cls, st, "font", "size"))
        rect_sftext = sf_text.get_rect()
        blit_pos = self._calculate_offset(rect_sftext.width, font)

        sf_text.blit(rtext, (blit_pos, 0))

        # Draw caret.
        if self.focus and self.caret_visible:
            # The caret position is at the end of the left overhang.
            caret_pos = self._get_text_overhang(self.caret)[0][0]
            engine.draw_caret(sf_text, blit_pos + caret_pos, 1, 2, self.state,
                              cls, st)

        rect_sftext.center = rect.center
        self.image.blit(sf_text, rect_sftext)
Esempio n. 6
0
    def draw (self):
        """E.draw () -> None

        Draws the Entry surface.
        """
        Editable.draw (self)
        cls = self.__class__
        style = base.GlobalStyle
        engine = style.engine
        st = self.style or style.get_style (cls)
        border = style.get_border_size (cls, st, self.border)
        text = self.text
        rect = self.image.get_rect ()

        if self.password:
            text = '*' * len (self.text)
        rtext = style.engine.draw_string (text, self.state, cls, st)

        # The 'inner' surface, which we will use for blitting the text.
        sf_text = engine.draw_rect (rect.width - 2 * (self.padding + border),
                                    rect.height - 2 * (self.padding + border),
                                    self.state, cls, st)

        # Adjust entry offset based on caret location.
        font = String.create_font \
               (style.get_style_entry (cls, st, "font", "name"),
                style.get_style_entry (cls, st, "font", "size"))
        rect_sftext = sf_text.get_rect ()
        blit_pos = self._calculate_offset (rect_sftext.width, font)
        
        sf_text.blit (rtext, (blit_pos, 0))

        # Draw caret.
        if self.focus and self.caret_visible:
            # The caret position is at the end of the left overhang.
            caret_pos = self._get_text_overhang (self.caret)[0][0]
            engine.draw_caret (sf_text, blit_pos + caret_pos, 1, 2, self.state,
                               cls, st)

        rect_sftext.center = rect.center
        self.image.blit (sf_text, rect_sftext)
Esempio n. 7
0
    def __init__(self, text=""):
        Editable.__init__(self)
        self._realtext = None
        self._padding = 2
        self._border = BORDER_SUNKEN
        self._password = False

        self._offset = 0  # Front offset in pixels.

        # Pixel sizes of text to the left and right of caret, and char
        # the caret is at.
        self._leftsize = (0, 0)
        self._rightsize = (0, 0)
        self._cursize = (0, 0)
        self._font = None

        self._signals[SIG_MOUSEDOWN] = []
        self._signals[SIG_MOUSEMOVE] = []

        self.minsize = 94, 24  # Default size to use.
        self.text = text
Esempio n. 8
0
    def __init__ (self, text=""):
        Editable.__init__ (self)
        self._realtext = None
        self._padding = 2
        self._border = BORDER_SUNKEN
        self._password = False
        
        self._offset = 0 # Front offset in pixels.

        # Pixel sizes of text to the left and right of caret, and char
        # the caret is at.
        self._leftsize = (0, 0)
        self._rightsize = (0, 0)
        self._cursize = (0, 0)
        self._font = None
        
        self._signals[SIG_MOUSEDOWN] = []
        self._signals[SIG_MOUSEMOVE] = []

        self.minsize = 94, 24 # Default size to use.
        self.text = text