Exemple #1
0
    def mouse(self, event, x, y, flag, *param):
        """
        Trata os eventos de mouse disparados sobre a janela.
        Alguns dos eventos são tratados simplesmente delegando
        o evento para que seja tratado externamente.
        :param event Tipo de evento disparado pelo mouse.
        :param x Posição no eixo-x em que o evento ocorreu.
        :param y Posição no eixo-y em que o evento ocorreu.
        :param flag Informações adicionais sobre o evento.
        :param param Parâmetros adicionais.
        """
        self.actual = Point(x, y)

        if event in [cv.EVENT_LBUTTONDOWN, cv.EVENT_RBUTTONDOWN]:
            self.start = self.actual
            self.mark = self.spec.mark()

        elif event == cv.EVENT_MOUSEMOVE and flag & cv.EVENT_FLAG_LBUTTON:
            diff = self.start - self.actual
            self.spec.move(self.mark, *diff)

        elif event == cv.EVENT_MOUSEMOVE and flag & cv.EVENT_FLAG_RBUTTON:
            diff = self.start.vector - self.actual
            self.spec.zoom(self.mark, diff.length * diff.versor[1] * 3)

        elif event in [cv.EVENT_LBUTTONUP, cv.EVENT_RBUTTONUP] \
            and self.start == self.actual:
            Event("cvClick", self).post(self.actual, event)

        elif event in [cv.EVENT_LBUTTONDBLCLK, cv.EVENT_RBUTTONDBLCLK]:
            Event("cvDoubleClick", self).post(self.actual, event)

        cv.imshow(self.wname, self.spec.raw)
Exemple #2
0
 def bind(self):
     """
     Víncula métodos do objeto a eventos que podem ser disparados.
     :return None
     """
     Event("PopStatus").bind(self.pop)
     Event("PushStatus").bind(self.push)
Exemple #3
0
    def drop(self, canvas, fnames):
        """
        Callback para o evento DropLeave.
        :param canvas Campo de drag-n-drop.
        :param fnames Arquivos a serem processados.
        """
        for fn in fnames:
            newpg = Event("NewPage", self.parent.win.book).post(self.pg)
            newpg.initimage(fn)

        self.leave(canvas)
Exemple #4
0
    def drop(self, canvas, fnames):
        """
        Callback para o evento DropLeave.
        :param canvas Campo de drag-n-drop.
        :param fnames Arquivos a serem processados.
        """
        for fn in fnames:
            newpg = Event("NewPage", self.parent.win.book).post(self.pg)
            newpg.initimage(fn)

        self.leave(canvas)
Exemple #5
0
 def lUp(self, canvas, e):
     """
     Callback para o evento de mouse LEFT_UP.
     :param canvas Campo de exibição de imagens
     :param e Dados do evento.
     """
     if self._move <= 3:
         if self.soil:
             Event("SoilClick", canvas).post((e.x, e.y))
         elif self.cane:
             Event("CaneClick", canvas).post((e.x, e.y))
         else:
             Event("Click", canvas).post(self._mstart)
Exemple #6
0
 def mMotion(self, canvas, e):
     """
     Callback para o evento de mouse MOTION.
     :param canvas Campo de exibição de imagens
     :param e Dados do evento.
     """
     if e.LeftIsDown():
         if self.soil:
             Event("SoilClick", canvas).post((e.x, e.y))
         elif self.cane:
             Event("CaneClick", canvas).post((e.x, e.y))
         else:
             self._move = self._move + 1
             diff = self._mstart - (e.x, e.y)
             canvas.im.move(self._mark, *diff)
             canvas.update()
Exemple #7
0
 def OnLeave(self):
     """
     Callback para o evento de saída do mouse sobre
     a área de drop. Delega o evento para o
     manipulador personalizado de eventos.
     """
     Event("DropLeave", self).post()
Exemple #8
0
    def bind(self, window):
        """
        Vincula uma janela ao controlador.
        :param window Janela a ser vinculada.
        """
        self.win = window

        Event("NewPage", self.win.book).bind(self.newpage)
Exemple #9
0
 def lUp(self, canvas, e):
     """
     Callback para o evento de mouse LEFT_UP.
     :param canvas Campo de exibição de imagens
     :param e Dados do evento.
     """
     if self._move <= 3:
         Event("Click", canvas).post(self._mstart)
Exemple #10
0
 def OnEnter(self, *args):
     """
     Callback para o evento de entrada do mouse sobre
     a área de drop. Delega o evento para o
     manipulador personalizado de eventos.
     :param args Argumentos do evento.
     :return bool
     """
     Event("DropEnter", self).post()
     return True
Exemple #11
0
 def OnDropFiles(self, x, y, fname):
     """
     Callback para o evento de drop. Esse método somente
     delega o evento disparado para o manipulador
     personalizado de eventos.
     :param x Valor da coordenada x em que o evento ocorreu.
     :param y Valor da coordenada y em que o evento ocorreu.
     :param fname Arquivos que foram arrastados.
     """
     Event("DropFiles", self).post(fname)
     return True
Exemple #12
0
    def __init__(self, parent, size, *args, **kwargs):
        """
        Inicializa uma nova instância do objeto.
        :param parent Objeto pai.
        :param size Tamanho do canvas.
        :param args Argumentos de posição passados ao método.
        :param kwargs Argumentos nominais passados ao método.
        :return BufferedPanel
        """
        wx.Panel.__init__(self, parent, -1, size=size, *args, **kwargs)
        wx.FileDropTarget.__init__(self)

        self.size = size
        self.frames = 0

        Event(wx.EVT_PAINT, self).bind(Canvas.paint)
        self.SetDoubleBuffered(True)
        self.SetDropTarget(self)
        self.init()
Exemple #13
0
    def bind(self, window):
        """
        Vincula uma janela ao controlador.
        :param window Janela a ser vinculada.
        """
        self.win = window
        self.win.canvas.set(self.sp)
        self.soil, self.cane = False, False

        Event("Click", self.win.canvas).bind(e.click, self)
        Event("SoilClick", self.win.canvas).bind(e.clicksoil, self)
        Event("CaneClick", self.win.canvas).bind(e.clickcane, self)
        Event(wx.EVT_TOGGLEBUTTON, self.win.i_soil).bind(e.soil, self)
        Event(wx.EVT_TOGGLEBUTTON, self.win.i_cane).bind(e.cane, self)
        Event(wx.EVT_BUTTON, self.win.w_incr).bind(e.incrementa, self)
        Event(wx.EVT_BUTTON, self.win.w_sobr).bind(e.sobreescreve, self)
        Event(wx.EVT_BUTTON, self.win.w_test).bind(e.test, self)
        Event(wx.EVT_BUTTON, self.win.w_close).bind(e.close, self)
        Event(wx.EVT_MOTION, self.win.canvas).bind(self.mMotion)
        Event(wx.EVT_MOUSEWHEEL, self.win.canvas).bind(self.mWheel)
        Event(wx.EVT_LEFT_DOWN, self.win.canvas).bind(self.lDown)
        Event(wx.EVT_LEFT_UP, self.win.canvas).bind(self.lUp)
Exemple #14
0
    def bind(self, page):
        """
        Vincula uma página ao controlador.
        :param page Página a ser vinculada.
        """
        self.pg = page
        self.initmain() if self.main else self.waitprocess()

        Event("DropEnter", self.pg.canvas).bind(self.enter)
        Event("DropLeave", self.pg.canvas).bind(self.leave)
        Event("DropFiles", self.pg.canvas).bind(self.drop)

        if not self.main:
            Event(wx.EVT_TOGGLEBUTTON, self.pg.l_g).bind(e.grid, self)
            Event(wx.EVT_TOGGLEBUTTON, self.pg.l_1).bind(e.layer, self)
            Event(wx.EVT_TOGGLEBUTTON, self.pg.l_2).bind(e.layer, self)
            Event(wx.EVT_TOGGLEBUTTON, self.pg.l_3).bind(e.layer, self)
            Event(wx.EVT_BUTTON, self.pg.s_done).bind(e.deselect, self)
            Event(wx.EVT_BUTTON, self.pg.s_add).bind(e.addresult, self)
            Event(wx.EVT_BUTTON, self.pg.s_del).bind(e.delresult, self)
            Event(wx.EVT_BUTTON, self.pg.s_fsg).bind(e.patchsegment, self)
            Event(wx.EVT_BUTTON, self.pg.a_run).bind(e.run, self)
            Event(wx.EVT_BUTTON, self.pg.a_stop).bind(e.end, self)
            Event(wx.EVT_MOTION, self.pg.canvas).bind(self.mMotion)
            Event(wx.EVT_MOUSEWHEEL, self.pg.canvas).bind(self.mWheel)
            Event(wx.EVT_LEFT_DOWN, self.pg.canvas).bind(self.lDown)
            Event(wx.EVT_LEFT_UP, self.pg.canvas).bind(self.lUp)
            Event("Click", self.pg.canvas).bind(e.select, self)
            Event("ImageSegmented").bind(e.segmented)
            Event("ImageProcessed").bind(e.processed)