def __init__(self): TreeView.__init__(self, enable_drag_drop=False, enable_multiple_select=True) targets = [("text/deepin-songs", gtk.TARGET_SAME_APP, 1), ("text/uri-list", 0, 2), ("text/plain", 0, 3)] self.drag_dest_set(gtk.DEST_DEFAULT_MOTION | gtk.DEST_DEFAULT_DROP, targets, gtk.gdk.ACTION_COPY) self.pl = None self.add_song_cache = [] sort_key = ["file", "album", "genre", "#track", "artist", "title", "#playcount", "#added"] self.sort_reverse = {key : False for key in sort_key } self.connect_after("drag-data-received", self.on_drag_data_received) self.connect("double-click-item", self.double_click_item_cb) self.connect("button-press-event", self.button_press_cb) self.connect("delete-select-items", self.try_emit_empty_signal) self.connect("motion-notify-item", self.on_motion_notify_item) self.connect("press-return", self.on_press_return) self.draw_area.connect("leave-notify-event", self.on_leave_notify_event) self.set_hide_columns([1]) self.set_expand_column(None) MediaDB.connect("removed", self.__remove_songs) MediaDB.connect("simple-changed", self.__songs_changed) self.song_notify = SongNotify() self.notify_timeout_id = None self.notify_timeout = 400 # ms self.delay_notify_item = None self.notify_offset_x = 5 self.invaild_items = set()