示例#1
0
 def record_callback(self, reply):
     global press_ctrl
     global press_shift
     
     check_valid_event(reply)
  
     data = reply.data
     while len(data):
         event, data = get_event_data(data)
         
         if event.type == X.KeyPress:
             keyname = get_keyname(event)
             
             if keyname not in ["Control_L", "Control_R"]:
                 self.try_stop_timer(self.press_ctrl_timer)
     
             if keyname in ["Control_L", "Control_R"]:
                 press_ctrl = True
                 
                 if not setting_config.get_trayicon_config("pause"):
                     if not self.view.isVisible() or not self.view.in_translate_area():
                         self.press_ctrl_timer = Timer(self.press_ctrl_delay, self.emit_press_ctrl)
                         self.press_ctrl_timer.start()
             elif keyname in ["Shift_L", "Shift_R"]:
                 press_shift = True
             elif keyname in ["Escape"]:
                 self.press_esc.emit()
         elif event.type == X.KeyRelease:
             keyname = get_keyname(event)
             if keyname in ["Control_L", "Control_R"]:
                 press_ctrl = False
                 self.release_ctrl.emit()
             elif keyname in ["Shift_L", "Shift_R"]:
                 press_shift = False
         elif event.type == X.ButtonPress:
             if event.detail == 1:
                 self.left_button_press.emit(event.root_x, event.root_y, event.time)
             elif event.detail == 3:
                 self.right_button_press.emit(event.root_x, event.root_y, event.time)
             elif event.detail == 5:
                 self.wheel_press.emit()
         elif event.type == X.ButtonRelease:
             if not self.view.isVisible() or not self.view.in_translate_area():
                 if not setting_config.get_trayicon_config("pause"):
                     if not setting_config.get_trayicon_config("key_trigger_select") or press_shift:
                         selection_content = commands.getoutput("xsel -p -o")
                         delete_selection()
                         
                         if len(selection_content) > 1 and not selection_content.isspace():
                             self.translate_selection.emit(event.root_x, event.root_y, selection_content)
             # Delete clipboard selection if user selection in visible area to avoid next time to translate those selection content.
             elif self.view.isVisible() and self.view.in_translate_area():
                 delete_selection()
         elif event.type == X.MotionNotify:
             self.try_stop_timer(self.stop_timer)
         
             if not setting_config.get_trayicon_config("pause"):
                 self.stop_timer = Timer(self.stop_delay, lambda : self.emit_cursor_stop(event.root_x, event.root_y))
                 self.stop_timer.start()
	def handle_event(self, event):
		if self.timer and self.timer.is_alive():
			self.timer.cancel()
		if event.type == X.KeyPress:
			keyname = get_keyname(event)
			if keyname in ["Super_L"]:
				self.superFlag=True
				self.timer=Timer(self.superDelay,self.emit_show_window)
				self.timer.start()
			for i in range(len(confList)):
				if keyname ==confList[i].key[0]:
					if i==0 and self.superFlag==True:
						self.press_key1.emit()
					elif i==1 and self.superFlag==True:
						self.press_key2.emit()
					elif i==2 and self.superFlag==True:
						self.press_key3.emit()
					elif i==3 and self.superFlag==True:
						self.press_key4.emit()
					elif i==4 and self.superFlag==True:
						self.press_key5.emit()
					elif i==5 and self.superFlag==True:
						self.press_key6.emit()
					elif i==6 and self.superFlag==True:
						self.press_key7.emit()
					elif i==7 and self.superFlag==True:
						self.press_key8.emit()
					elif i==8 and self.superFlag==True:
						self.press_key9.emit()
					elif i==9 and self.superFlag==True:
						self.press_key10.emit()
		elif event.type == X.KeyRelease:
			keyname = get_keyname(event)
			if keyname in ["Super_L"]:
				self.superFlag=False
			if self.timer and self.timer.is_alive():
				self.timer.cancel()
			if self.windowFlag==True:
				self.close_window.emit()
示例#3
0
    def handle_event(self, event):
        if event.type == X.KeyPress:
            keyname = get_keyname(event)

            self.try_stop_timer(self.press_alt_timer)
            self.try_stop_timer(self.press_ctrl_timer)

            if is_alt_key(keyname):
                self.press_alt_flag = True

                if not setting_config.get_trayicon_config("pause"):
                    if not self.is_view_visible(
                    ) or not self.is_cursor_in_view_area():
                        self.press_alt_timer = Timer(self.press_alt_delay,
                                                     self.emit_press_alt)
                        self.press_alt_timer.start()
            elif is_ctrl_key(keyname):
                self.press_ctrl_flag = True

                if not setting_config.get_trayicon_config("pause"):
                    if not self.is_view_visible(
                    ) or not self.is_cursor_in_view_area():
                        self.press_ctrl_timer = Timer(self.press_ctrl_delay,
                                                      self.emit_press_ctrl)
                        self.press_ctrl_timer.start()
            elif keyname in ["Escape"]:
                self.press_esc.emit()
        elif event.type == X.KeyRelease:
            keyname = get_keyname(event)
            if is_alt_key(keyname):
                self.press_alt_flag = False
                self.release_alt.emit()
            elif is_ctrl_key(keyname):
                self.press_ctrl_flag = False
                self.release_ctrl.emit()
        elif event.type == X.ButtonPress:
            if event.detail == 1:
                self.left_button_press.emit(event.root_x, event.root_y,
                                            event.time)

                # Set hover flag when press.
                self.hover_flag = False

                if self.double_click_timeout:
                    self.double_click_flag = False
                    self.double_click_timeout = False
                    self.double_click_counter = 0

                    self.double_reset_timer = Timer(self.double_click_delay,
                                                    self.reset_double_click)
                    self.double_reset_timer.start()

            elif event.detail == 3:
                self.right_button_press.emit(event.root_x, event.root_y,
                                             event.time)
            elif event.detail == 5:
                self.wheel_press.emit()
        elif event.type == X.ButtonRelease:

            self.double_click_counter += 1
            if self.double_click_counter == 2:
                if self.double_reset_timer != None:
                    self.try_stop_timer(self.double_reset_timer)

                self.double_click_flag = True
                self.double_click_timeout = True

            # import time
            if not self.is_view_visible() or not self.is_cursor_in_view_area():
                # print "1", time.time()
                # Trigger selection handle if mouse hover or double click.
                if self.hover_flag or self.double_click_flag:
                    if not setting_config.get_trayicon_config("pause"):
                        if not setting_config.get_trayicon_config(
                                "key_trigger_select") or self.press_ctrl_flag:
                            self.translate_selection_area()
            # Delete clipboard selection if user selection in visible area to avoid next time to translate those selection content.
            elif self.is_view_visible() and self.is_cursor_in_view_area():
                # print "2", time.time()
                delete_selection()

            self.hover_flag = False
        elif event.type == X.MotionNotify:
            # Set hover flag to prove selection action.
            self.hover_flag = True

            self.try_stop_timer(self.stop_timer)

            if not setting_config.get_trayicon_config("pause"):
                self.stop_timer = Timer(
                    self.stop_delay,
                    lambda: self.emit_cursor_stop(event.root_x, event.root_y))
                self.stop_timer.start()
 def handle_event(self, event):
     # print "*****************"
     if event.type == X.KeyPress:
         keyname = get_keyname(event)
         
         if not is_alt_key(keyname):
             self.try_stop_timer(self.press_alt_timer)
         elif not is_ctrl_key(keyname):
             self.try_stop_timer(self.press_ctrl_timer)
     
         if is_alt_key(keyname):
             self.press_alt_flag = True
             
             if not setting_config.get_trayicon_config("pause"):
                 print "Press alt", not self.is_view_visible() or not self.is_cursor_in_view_area()
                 if not self.is_view_visible() or not self.is_cursor_in_view_area():
                     self.press_alt_timer = Timer(self.press_alt_delay, lambda : self.press_alt.emit())
                     self.press_alt_timer.start()
         elif is_ctrl_key(keyname):
             self.press_ctrl_flag = True
             
             if not setting_config.get_trayicon_config("pause"):
                 print "Press ctrl", not self.is_view_visible() or not self.is_cursor_in_view_area()
                 if not self.is_view_visible() or not self.is_cursor_in_view_area():
                     self.press_ctrl_timer = Timer(self.press_ctrl_delay, lambda : self.press_ctrl.emit())
                     self.press_ctrl_timer.start()
         elif keyname in ["Escape"]:
             self.press_esc.emit()
     elif event.type == X.KeyRelease:
         keyname = get_keyname(event)
         if is_alt_key(keyname):
             self.press_alt_flag = False
             self.release_alt.emit()
         elif is_ctrl_key(keyname):
             self.press_ctrl_flag = False
             self.release_ctrl.emit()
     elif event.type == X.ButtonPress:
         if event.detail == 1:
             self.left_button_press.emit(event.root_x, event.root_y, event.time)
         elif event.detail == 3:
             self.right_button_press.emit(event.root_x, event.root_y, event.time)
         elif event.detail == 5:
             self.wheel_press.emit()
     elif event.type == X.ButtonRelease:
         print "Button release", not self.is_view_visible() or not self.is_cursor_in_view_area()
         if not self.is_view_visible() or not self.is_cursor_in_view_area():
             if not setting_config.get_trayicon_config("pause"):
                 if not setting_config.get_trayicon_config("key_trigger_select") or self.press_ctrl_flag:
                     selection_content = commands.getoutput("xsel -p -o")
                     delete_selection()
                     
                     if len(selection_content) > 1 and not selection_content.isspace():
                         self.translate_selection.emit(event.root_x, event.root_y, selection_content)
         # Delete clipboard selection if user selection in visible area to avoid next time to translate those selection content.
         elif self.is_view_visible() and self.is_cursor_in_view_area():
             delete_selection()
     elif event.type == X.MotionNotify:
         self.try_stop_timer(self.stop_timer)
     
         if not setting_config.get_trayicon_config("pause"):
             self.stop_timer = Timer(self.stop_delay, lambda : self.emit_cursor_stop(event.root_x, event.root_y))
             self.stop_timer.start()                    
    def handle_event(self, event):
        if event.type == X.KeyPress:
            keyname = get_keyname(event)
            
            self.try_stop_timer(self.press_alt_timer)
            self.try_stop_timer(self.press_ctrl_timer)
        
            if is_alt_key(keyname):
                self.press_alt_flag = True
                
                if not setting_config.get_trayicon_config("pause"):
                    if not self.is_view_visible() or not self.is_cursor_in_view_area():
                        self.press_alt_timer = Timer(self.press_alt_delay, self.emit_press_alt)
                        self.press_alt_timer.start()
            elif is_ctrl_key(keyname):
                self.press_ctrl_flag = True
                
                if not setting_config.get_trayicon_config("pause"):
                    if not self.is_view_visible() or not self.is_cursor_in_view_area():
                        self.press_ctrl_timer = Timer(self.press_ctrl_delay, self.emit_press_ctrl)
                        self.press_ctrl_timer.start()
            elif keyname in ["Escape"]:
                self.press_esc.emit()
        elif event.type == X.KeyRelease:
            keyname = get_keyname(event)
            if is_alt_key(keyname):
                self.press_alt_flag = False
                self.release_alt.emit()
            elif is_ctrl_key(keyname):
                self.press_ctrl_flag = False
                self.release_ctrl.emit()
        elif event.type == X.ButtonPress:
            if event.detail == 1:
                self.left_button_press.emit(event.root_x, event.root_y, event.time)
                
                # Set hover flag when press.
                self.hover_flag = False    
                
                if self.double_click_timeout:
                    self.double_click_flag = False
                    self.double_click_timeout = False
                    self.double_click_counter = 0

                    self.double_reset_timer = Timer(self.double_click_delay, self.reset_double_click)
                    self.double_reset_timer.start()
                    
            elif event.detail == 3:
                self.right_button_press.emit(event.root_x, event.root_y, event.time)
            elif event.detail == 5:
                self.wheel_press.emit()
        elif event.type == X.ButtonRelease:
                
            self.double_click_counter += 1
            if self.double_click_counter == 2:
                if self.double_reset_timer != None:
                    self.try_stop_timer(self.double_reset_timer)
                    
                self.double_click_flag = True
                self.double_click_timeout = True

            # import time    
            if not self.is_view_visible() or not self.is_cursor_in_view_area():
                # print "1", time.time()
                # Trigger selection handle if mouse hover or double click.
                if self.hover_flag or self.double_click_flag:
                    if not setting_config.get_trayicon_config("pause"):
                        if not setting_config.get_trayicon_config("key_trigger_select") or self.press_ctrl_flag:
                            self.translate_selection_area()
            # Delete clipboard selection if user selection in visible area to avoid next time to translate those selection content.
            elif self.is_view_visible() and self.is_cursor_in_view_area():
                # print "2", time.time()
                delete_selection()
                
            self.hover_flag = False    
        elif event.type == X.MotionNotify:
            # Set hover flag to prove selection action.
            self.hover_flag = True
            
            self.try_stop_timer(self.stop_timer)
        
            if not setting_config.get_trayicon_config("pause"):
                self.stop_timer = Timer(self.stop_delay, lambda : self.emit_cursor_stop(event.root_x, event.root_y))
                self.stop_timer.start()