コード例 #1
0
    def __init__(self, notify_window, functionality, partner_ip,
                 projected_image):
        """Init AppProcess class."""
        self.notify_window = notify_window
        CBasicComponent.__init__(self, 'app_process', self.notify_window,
                                 self.notify_window)

        self.functionality = functionality
        self.projected_image = projected_image
        self.partner_ip = partner_ip
        print partner_ip

        self.partner_res = None  # control thread should receive and set this value
        self.control_socket = socket.socket()
        self.control_thread = threading.Thread(target=self.control_thread_func)
        self.control_thread.start()

        if self.functionality == 'r':
            global EVT_UPDATE_PICTURE_ID
            dispRect = wx.Display()  # return rect obejct, using default screen
            temp = dispRect.GetClientArea()[2:]  # RECT's fields [:2] not used
            #mods = ( wx.SystemSettings.GetMetric(wx.SYS_FRAMESIZE_Y)/2 , wx.SystemSettings.GetMetric(wx.SYS_CAPTION_Y) + wx.SystemSettings.GetMetric(wx.SYS_FRAMESIZE_Y)/2 )
            mods = (wx.SystemSettings.GetMetric(wx.SYS_BORDER_X),
                    wx.SystemSettings.GetMetric(wx.SYS_BORDER_Y) +
                    wx.SystemSettings.GetMetric(wx.SYS_CAPTION_Y))
            client_area = (temp[0] - mods[0], temp[1] - mods[1])
            print client_area

            while self.partner_res == None:  # wait for control thread to receive this value, make sure it is set before passing it to components
                time.sleep(0.2)
                print 'waiting for partner_res'

            self.rendererObj = Renderer.CRenderer('renderer', self,
                                                  self.notify_window,
                                                  EVT_UPDATE_PICTURE_ID,
                                                  client_area)
            self.getterObj = Getter.CGetter('getter', self, self.rendererObj,
                                            (self.partner_ip, 6789))
            #self.hookerObj = Hooker.CHooker('hooker', self, (self.partner_ip,4321), client_area, self.partner_res, mods)
            self.hookerObj = Hooker.CHooker('hooker', self,
                                            (self.partner_ip, 4321),
                                            client_area, self.partner_res)
            self.componentsArray = [
                self.rendererObj, self.getterObj, self.hookerObj
            ]
            #self.componentsArray = [self.rendererObj, self.getterObj]
            #self.componentsArray = [self.hookerObj]

            self.notify_window.Bind(wx.EVT_KEY_DOWN, self.onKeyDown)
            self.notify_window.Bind(wx.EVT_KEY_UP, self.onKeyUp)
            self.projected_image.Bind(wx.EVT_RIGHT_UP, self.onRightMouseUp)
            self.projected_image.Bind(wx.EVT_LEFT_UP, self.onLeftMouseUp)
            self.projected_image.Bind(wx.EVT_RIGHT_DOWN, self.onRightMouseDown)
            self.projected_image.Bind(wx.EVT_LEFT_DOWN, self.onLeftMouseDown)
            self.projected_image.Bind(wx.EVT_MOUSEWHEEL, self.onMouseWheel)
            self.projected_image.Bind(wx.EVT_MOTION, self.onMouseMotion)

        elif self.functionality == 's':
            self.senderObj = Sender.CSender('sender', self, ('', 6789))
            self.grabberObj = Grabber.CGrabber('grabber', self, self.senderObj)
            #self.clickerObj = Clicker.CClicker('clicker', self, ('',4321))
            #self.clickerObj = Clicker1.CClicker('clicker', self, ('',4321))
            self.clickerObj = Clicker.CClicker('clicker', self, ('', 4321))
            self.componentsArray = [
                self.grabberObj, self.senderObj, self.clickerObj
            ]