def press_notify_function(self, event): temp_press_height = self.press_height self.press_height = event.y index_len = len(self.tree_list) index = int(self.press_height / self.height) if index_len > index: if is_single_click(event) and event.button == 1: self.highlight_index = index self.press_draw_bool = True if self.tree_list[index].child_items: self.tree_list[index].show_child_items_bool = not self.tree_list[index].show_child_items_bool self.sort() self.queue_draw() if is_single_click(event) and event.button == 1: self.emit("single-click-item", self.tree_list[index].tree_view_item) elif is_double_click(event): self.emit("double-click-item", self.tree_list[index].tree_view_item) elif is_right_button(event): self.press_height = self.highlight_index * self.height self.emit("right-press-item", self.tree_list[index].tree_view_item, int(event.x_root), int(event.y_root), index) else: self.press_height = temp_press_height if is_right_button(event): self.press_height = self.highlight_index * self.height self.emit("right-press-item", event, int(event.x_root), int(event.y_root), -1)
def button_press_mac_entry(self, widget, event): self.draw_area.grab_focus() if event.x <= self.cursor_positions[0]: self.set_cursor_index(0) elif event.x >= self.cursor_positions[-1]: self.set_cursor_index(len(self.mac)) else: ip_segment_distance = self.width / self.segment_number segment_index = int(event.x / ip_segment_distance) for (cursor_index, cursor_position) in enumerate(self.cursor_positions): if len(self.mac.split(self.segment_split_char)[segment_index]) == 0: self.set_cursor_index(segment_index) break elif cursor_position < event.x <= self.cursor_positions[cursor_index + 1]: self.set_cursor_index(cursor_index) break # Hide right menu immediately. self.right_menu.hide() if is_double_click(event): self.highlight_current_segment() elif is_left_button(event): self.clear_highlight_segment() elif is_right_button(event): x, y = self.window.get_root_origin() wx, wy = int(event.x), int(event.y) (offset_x, offset_y) = widget.translate_coordinates(self, 0, 0) (_, px, py, modifier) = widget.get_display().get_pointer() self.right_menu.show((px - offset_x, py - wy - offset_y + widget.allocation.height)) self.queue_draw()
def button_release_icon_view(self, widget, event): ''' Internal callback for `button-release-event` signal. ''' if len(self.items) > 0: index_info = self.icon_view_get_event_index(event) if index_info: (row_index, column_index, item_index, offset_x, offset_y) = index_info if is_left_button(event): self.emit("button-release-item", self.items[item_index], offset_x - self.padding_x, offset_y - self.padding_y) if self.double_click_item == item_index: self.emit("double-click-item", self.items[self.double_click_item], offset_x - self.padding_x, offset_y - self.padding_y) elif self.single_click_item == item_index: self.emit("single-click-item", self.items[self.single_click_item], offset_x - self.padding_x, offset_y - self.padding_y) elif is_right_button(event): if self.right_click_item == item_index: self.emit("right-click-item", self.items[self.right_click_item], event.x_root, event.y_root) self.double_click_item = None self.single_click_item = None self.right_click_item = None
def button_press(self, widget, event): if self.get_data("entry_widget") is None: return cell = self.get_cell_with_event(event) entry = self.get_data("entry_widget") item = entry.get_data("item") # if pressed outside entry column area, destroy entry if cell is None: entry.get_parent().destroy() return (row, column, offset_x, offset_y) = cell if self.visible_items[row] != item or column != item.ENTRY_COLUMN: entry.get_parent().destroy() return # right button the show menu if is_right_button(event): entry.right_menu.show((int(event.x_root), int(event.y_root))) return entry.set_data("button_press", True) send_event = event.copy() send_event.send_event = True send_event.x = float(offset_x) send_event.y = 1.0 send_event.window = entry.window entry.event(send_event) send_event.free()
def __listview_button_release_event(self, widget, event): #print "__listview_button_release_event..." self.__move_column_check = False # 取消移动标题头. # 获取标题头触发的release事件返回的x索引. if is_left_button(event): # 列标头. if self.view == View.DETAILS: col_index, column_x, column_y = self.__get_columns_mouse_data( event) if col_index != None: self.__single_columns = self.columns[col_index] if self.__single_columns_hd: self.__single_columns_hd(self, self.__single_columns, col_index, column_x, column_y) # 获取items触发的release事件返回的x,y索引. row_index, col_index, item_x, item_y = self.__get_items_mouse_data( event) #insert_index = self.__move_column_insert_index insert_index = row_index if not (None in [row_index]): # 发送信号. if self.__save_press_items_index == row_index: if not self.__ctrl_check: self.__single_items = [] # 判断是否重新选择了,如果是就消除掉. if self.items[row_index] in self.__single_items: self.__single_items.remove(self.items[row_index]) else: self.__single_items.append(self.items[row_index]) if self.__single_items_hd: self.__single_items_hd(self, self.__single_items, row_index, col_index, item_x, item_y) else: insert_index = len(self.items) if self.__move_items_check and self.__save_press_items_index != row_index: for insert_item in self.__single_items: self.items.remove(insert_item) self.items.add_insert(insert_index, insert_item) self.__save_press_items_check = False self.__drag_rect = (None, None, None) self.drag_preview_pixbuf = None elif is_right_button(event): row_index, col_index, item_x, item_y = self.__get_items_mouse_data( event) if self.__right_items_hd: self.__right_items_hd(self, event, row_index, col_index, item_x, item_y)
def __listview_button_release_event(self, widget, event): #print "__listview_button_release_event..." self.__move_column_check = False # 取消移动标题头. # 获取标题头触发的release事件返回的x索引. if is_left_button(event): # 列标头. if self.view == View.DETAILS: col_index, column_x, column_y = self.__get_columns_mouse_data(event) if col_index != None: self.__single_columns = self.columns[col_index] if self.__single_columns_hd: self.__single_columns_hd(self, self.__single_columns, col_index, column_x, column_y) # 获取items触发的release事件返回的x,y索引. row_index, col_index, item_x, item_y = self.__get_items_mouse_data(event) #insert_index = self.__move_column_insert_index insert_index = row_index if not (None in [row_index]): # 发送信号. if self.__save_press_items_index == row_index: if not self.__ctrl_check: self.__single_items = [] # 判断是否重新选择了,如果是就消除掉. if self.items[row_index] in self.__single_items: self.__single_items.remove(self.items[row_index]) else: self.__single_items.append(self.items[row_index]) if self.__single_items_hd: self.__single_items_hd(self, self.__single_items, row_index, col_index, item_x, item_y) else: insert_index = len(self.items) if self.__move_items_check and self.__save_press_items_index != row_index: for insert_item in self.__single_items: self.items.remove(insert_item) self.items.add_insert(insert_index, insert_item) self.__save_press_items_check = False self.__drag_rect = (None, None, None) self.drag_preview_pixbuf = None elif is_right_button(event): row_index, col_index, item_x, item_y = self.__get_items_mouse_data(event) if self.__right_items_hd: self.__right_items_hd(self, event, row_index, col_index, item_x, item_y)
def button_press_icon_view(self, widget, event): ''' Internal callback for `button-press-event` signal. ''' # Grab focus when button press, otherwise key-press signal can't response. self.grab_focus() if len(self.items) > 0: index_info = self.icon_view_get_event_index(event) if index_info: (row_index, column_index, item_index, offset_x, offset_y) = index_info if is_left_button(event): self.emit("button-press-item", self.items[item_index], offset_x - self.padding_x, offset_y - self.padding_y) if is_double_click(event): if index_info: self.double_click_item = index_info[2] else: self.double_click_item = None elif is_single_click(event): if index_info: self.single_click_item = index_info[2] else: self.single_click_item = None elif is_right_button(event): if index_info: self.right_click_item = index_info[2] else: self.right_click_item = None # Set highlight. if index_info: self.clear_highlight() self.set_highlight(self.items[index_info[2]])
def button_press_mac_entry(self, widget, event): self.draw_area.grab_focus() if event.x <= self.cursor_positions[0]: self.set_cursor_index(0) elif event.x >= self.cursor_positions[-1]: self.set_cursor_index(len(self.mac)) else: ip_segment_distance = self.width / self.segment_number segment_index = int(event.x / ip_segment_distance) for (cursor_index, cursor_position) in enumerate(self.cursor_positions): if len(self.mac.split( self.segment_split_char)[segment_index]) == 0: self.set_cursor_index(segment_index) break elif cursor_position < event.x <= self.cursor_positions[ cursor_index + 1]: self.set_cursor_index(cursor_index) break # Hide right menu immediately. self.right_menu.hide() if is_double_click(event): self.highlight_current_segment() elif is_left_button(event): self.clear_highlight_segment() elif is_right_button(event): x, y = self.window.get_root_origin() wx, wy = int(event.x), int(event.y) (offset_x, offset_y) = widget.translate_coordinates(self, 0, 0) (_, px, py, modifier) = widget.get_display().get_pointer() self.right_menu.show( (px - offset_x, py - wy - offset_y + widget.allocation.height)) self.queue_draw()
def handle_button_press(self, widget, event): '''Handle button press.''' # Get input focus. self.grab_focus() # Hide right menu immediately. self.right_menu.hide() # Select all when double click left button. if is_double_click(event): self.double_click_flag = True self.select_all() # Show right menu when click right button. elif is_right_button(event): if self.right_menu_visible_flag: (wx, wy) = self.window.get_root_origin() (cx, cy, modifier) = self.window.get_pointer() self.right_menu.show((cx + wx, cy + wy)) # Change cursor when click left button. elif is_left_button(event): self.left_click_flag = True self.left_click_coordindate = (event.x, event.y) self.drag_start_index = self.get_index_at_event(widget, event)