Beispiel #1
0
 def throwEvents(self):
     # check if we passed anything
     if hasattr(self, "controller"):
         for item in self.items:
             coords = self.canvas.coords(item)
             if coords[0] < 30 and item not in marked:
                 # passed light or entered station
                 t = kind_of_object[item]
                 if t == "STATION":
                     marked[item] = False
                     self.controller.addInput(
                         Event("enter", "tkinter_input", []))
                 elif t == "RED":
                     marked[item] = True
                     self.controller.addInput(
                         Event("red_light", "tkinter_input", []))
                 elif t == "YELLOW":
                     marked[item] = True
                     self.controller.addInput(
                         Event("yellow_light", "tkinter_input", []))
                 elif t == "GREEN":
                     marked[item] = True
                     self.controller.addInput(
                         Event("green_light", "tkinter_input", []))
             elif coords[0] < -170 and not marked[item]:
                 self.controller.addInput(
                     Event("leave", "tkinter_input", []))
                 marked[item] = True
     self.after(20, self.throwEvents)
Beispiel #2
0
def _poll(controller, socket_out):
    while 1:
        evt = socket_out.fetch(-1)
        name, params = evt.getName(), evt.getParameters()
        if name == "accept_socket":
            _start_on_daemon_thread(_accept, [controller, params[0]])
        elif name == "recv_socket":
            recv_events[params[0]].set()
        elif name == "connect_socket":
            _start_on_daemon_thread(_connect,
                                    [controller, params[0], params[1]])
        elif name == "create_socket":
            sock = socket.socket()
            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
            start_socket_threads(controller, sock)
            if len(params) == 1:
                # In case we get an ID to prove which socket it is
                controller.addInput(
                    Event("created_socket", "socket_in", [sock, params[0]]))
            else:
                # Don't care and just send out the socket
                controller.addInput(
                    Event("created_socket", "socket_in", [sock]))
        elif name == "close_socket":
            _start_on_daemon_thread(_close, [controller, params[0]])
        elif name == "send_socket":
            send_data_queues[params[0]].append(params[1])
            send_events[params[0]].set()
        elif name == "bind_socket":
            _start_on_daemon_thread(_bind, [controller, params[0], params[1]])
        elif name == "listen_socket":
            _start_on_daemon_thread(_listen, [controller, params[0]])
        elif name == "stop":
            break
Beispiel #3
0
def receive_from_socket(controller, sock, recv_event):
    try:
        while 1:
            recv_event.wait()
            recv_event.clear()
            if not run_sockets[sock]:
                break
            data = sock.recv(2**16)
            controller.addInput(
                Event("received_socket", "socket_in", [sock, data]))
    except socket.error as e:
        controller.addInput(Event("error_socket", "socket_in", [sock, e]))
Beispiel #4
0
def _wrapper_func(*args):
    func = args[0]
    controller = args[1]
    sock = args[2]
    try:
        func(*args[1:])
    except socket.error as e:
        #print("ERROR " + str(e))
        controller.addInput(Event("error_socket", "socket_in", [sock, e]))
    except Exception as e:
        print("UNKNOWN ERROR " + str(e))
        controller.addInput(
            Event("unknown_error_socket", "socket_in", [sock, e]))
        raise
Beispiel #5
0
        def __handle_event(ev=None):
            if event == ui.EVENTS.KEY_PRESS :
                controller.addInput(Event(raise_name, port, [ev.keycode,source]))

            elif event == ui.EVENTS.MOUSE_CLICK or \
                  event == ui.EVENTS.MOUSE_MOVE or \
                  event == ui.EVENTS.MOUSE_PRESS or \
                  event == ui.EVENTS.MOUSE_RELEASE or \
                    event == ui.EVENTS.MOUSE_RIGHT_CLICK :
                controller.addInput(Event(raise_name, port, [ev.x, ev.y, ev.num]))

            elif event == ui.EVENTS.WINDOW_CLOSE :
                controller.addInput(Event(raise_name, port, [source]))

            else :
                raise Exception('Unsupported event');
Beispiel #6
0
 def scroller(self, event):
     self.event_delta = event.delta
     event_name = "scroll_mousewheel"
     self.last_x = event.x
     self.last_y = event.y
     SCCDWidget.controller.addInput(Event(event_name, "input", [id(self)]))
     return "break"
Beispiel #7
0
    def on_key(self, event):
        event_name = None

        if event.keysym == 'Escape':
            event_name = "escape"
        elif event.keysym == 'Return':
            event_name = "return"
        elif event.keysym == 'Delete':
            event_name = "delete"
        elif event.keysym == 'Shift_L':
            event_name = "shift"
        elif event.keysym == 'Control_L':
            event_name = "control"
        elif event.keysym == 'Left':
            event_name = "left_key"
        elif event.keysym == 'Right':
            event_name = "right_key"
        elif event.keysym == 'Up':
            event_name = "up_key"
        elif event.keysym == 'Down':
            event_name = "down_key"

        if event_name:
            SCCDWidget.controller.addInput(
                Event(event_name, "input", [id(self)]))
        return "break"
Beispiel #8
0
 def zoom_out(self, event):
     event_name = "zoomer_event"
     self.last_x = event.x
     self.last_y = event.y
     if self.zoomer_count >= -6:
         self.event_delta = -120
         self.zoomer_count -= 1
     SCCDWidget.controller.addInput(Event(event_name, "input", [id(self)]))
     return "break"
Beispiel #9
0
 def on_motion(self, event):
     Widget.controller.addInput(
         Event("motion", self.inport, [
             self.canvas.canvasx(event.x) -
             self.canvas.canvasx(self.last_x),
             self.canvas.canvasy(event.y) - self.canvas.canvasy(self.last_y)
         ]))
     self.last_x = event.x
     self.last_y = event.y
Beispiel #10
0
    def __init__(self, sccd_object, canvas):
        self.sccd_object = sccd_object
        self.inport = self.sccd_object.inports["ball_ui_in"]
        self.outport = self.sccd_object.outports["ball_ui_out"]
        Widget.__init__(self, True, self.inport, self.outport)
        self.canvas = canvas

        self.listener = self.sccd_object.controller.addOutputListener(
            self.outport)

        Widget.controller.addInput(Event("ui_initialized", self.inport))
Beispiel #11
0
    def __init__(self, sccd_object, window):
        tk.Button.__init__(self, window)
        self.sccd_object = sccd_object
        self.inport = self.sccd_object.inports["button_ui_in"]
        self.outport = self.sccd_object.outports["button_ui_out"]
        Widget.__init__(self, False, self.inport, self.outport)

        self.listener = self.sccd_object.controller.addOutputListener(
            self.outport)

        Widget.controller.addInput(Event("ui_initialized", self.inport))
Beispiel #12
0
    def on_click(self, event):
        event_name = None

        if event.num == 1:
            event_name = "left-click"
        elif event.num == 2:
            event_name = "middle-click"
        elif event.num == 3:
            event_name = "right-click"

        if event_name == "left-click":
            Widget.controller.addInput(Event("clicked", self.inport))
Beispiel #13
0
    def on_release(self, event):
        event_name = None

        if event.num == 1:
            event_name = "left-release"
        elif event.num == 2:
            event_name = "middle-release"
        elif event.num == 3:
            event_name = "right-release"

        if event_name:
            self.last_x = event.x
            self.last_y = event.y
            Widget.controller.addInput(Event(event_name, "input", [id(self)]))
Beispiel #14
0
    def on_release(self, event):
        event_name = None

        if event.num == 1:
            event_name = "left-release"
        elif event.num == 2:
            event_name = "middle-release"
        elif event.num == 3:
            event_name = "right-release"

        if event_name == "left-release":
            self.last_x = event.x
            self.last_y = event.y
            Widget.controller.addInput(Event("unselect_ball", self.inport))
	def on_click(self, event):
		event_name = None

		if event.num == 1:
			event_name = "left-click"
		elif event.num == 2:
			event_name = "middle-click"
		elif event.num == 3:
			event_name = "right-click"

		if event_name:
			self.last_x = event.x
			self.last_y = event.y
			Widget.controller.addInput(Event(event_name, self.inport))
Beispiel #16
0
    def on_click(self, event):
        event_name = None

        if event.num == 1:
            event_name = "left-click"
        elif event.num == 2:
            event_name = "middle-click"
        elif event.num == 3:
            event_name = "right-click"

        if event_name == "right-click":
            self.last_x = event.x
            self.last_y = event.y
            Widget.controller.addInput(
                Event("create_ball", self.inport, [self.last_x, self.last_y]))
Beispiel #17
0
def send_to_socket(controller, sock, data_queue, send_event):
    while run_sockets[sock]:
        send_event.wait()
        send_event.clear()
        while data_queue:
            data = data_queue.pop(0)
            if sys.version_info[0] > 2:
                if isinstance(data, str):
                    data = data.encode()
            send = sock.send(data)

            controller.addInput(Event("sent_socket", "socket_in",
                                      [sock, send]))
        if not run_sockets[sock]:
            break
Beispiel #18
0
    def on_click(self, event):
        event_name = None
        if event.num == 1:
            event_name = "left-click"
        elif event.num == 2:
            event_name = "middle-click"
        elif event.num == 3:
            event_name = "right-click"

        if event_name:
            self.last_x = event.x
            self.last_y = event.y
            SCCDWidget.controller.addInput(
                Event(event_name, "input", [id(self)]))
        return "break"
Beispiel #19
0
    def on_key(self, event):
        event_name = None

        if event.keysym == 'Escape':
            event_name = "escape"
        elif event.keysym == 'Return':
            event_name = "return"
        elif event.keysym == 'Delete':
            event_name = "delete"
        elif event.keysym == 'Shift_L':
            event_name = "shift"
        elif event.keysym == 'Control_L':
            event_name = "control"

        if event_name:
            Widget.controller.addInput(Event(event_name, "input", [id(self)]))
	def on_key_release(self, event):
		event_name = None

		if event.keysym == 'Escape':
			event_name = "escape-release"
		elif event.keysym == 'Return':
			event_name = "return-release"
		elif event.keysym == 'Delete':
			event_name = "delete-release"
		elif event.keysym == 'Shift_L':
			event_name = "shift-release"
		elif event.keysym == 'Control_L':
			event_name = "control-release"

		if event_name:
			Widget.controller.addInput(Event(event_name, self.inport))
Beispiel #21
0
    def on_key_release(self, event):
        event_name = None

        if event.keysym == 'Escape':
            event_name = "escape-release"
        elif event.keysym == 'Return':
            event_name = "return-release"
        elif event.keysym == 'Delete':
            event_name = "delete-release"
        elif event.keysym == 'Shift_L':
            event_name = "shift-release"
        elif event.keysym == 'Control_L':
            event_name = "control-release"

        if event_name:
            SCCDWidget.controller.addInput(
                Event(event_name, "input", [id(self)]))
        return "break"
Beispiel #22
0
    def __init__(self, sccd_object):
        tk.Toplevel.__init__(self)
        self.sccd_object = sccd_object
        self.inport = self.sccd_object.inports["window_ui_in"]
        self.outport = self.sccd_object.outports["window_ui_out"]
        Widget.__init__(self, True, self.inport, self.outport)

        self.buttons = {}
        self.balls = {}

        self.title('BouncingBalls')
        self.c = tk.Canvas(self, relief=tk.RIDGE)
        self.repack()
        self.set_bindable_and_tagorid(self.c)
        self.c.bind("<Configure>", self.window_resize_handler)

        self.listener = self.sccd_object.controller.addOutputListener(
            self.outport)
        self.after(40, self.handle_output_events)
        Widget.controller.addInput(
            Event("ui_initialized", self.inport,
                  [self.winfo_width(), self.winfo_height()]))
Beispiel #23
0
 def on_leave(self, event):
     Widget.controller.addInput(Event("leave", "input", [id(self)]))
Beispiel #24
0
 def on_enter(self, event):
     Widget.controller.addInput(Event("enter", "input", [id(self)]))
Beispiel #25
0
 def on_motion(self, event):
     self.last_x = event.x
     self.last_y = event.y
     Widget.controller.addInput(Event("motion", "input", [id(self)]))
Beispiel #26
0
 def window_close(self):
     Widget.controller.addInput(Event("window-close", "input", [id(self)]))
Beispiel #27
0
 def raw_inputter():
     while 1:
         controller.addInput(Event(raw_input(), "input", []))
Beispiel #28
0
 def press_awake():
     self.controller.addInput(Event("awake", "tkinter_input", []))
Beispiel #29
0
 def press_close():
     self.controller.addInput(Event("close", "tkinter_input", []))
Beispiel #30
0
 def press_open():
     self.controller.addInput(Event("open", "tkinter_input", []))