def on_drag_data_received(self, TV, drag_context, x, y, selection_data, info, timestamp): if(selection_data.get_target() == 'text/plain'): #fin d'un DND destRow = self.TreeView.get_dest_row_at_pos(x, y) T = eval(selection_data.get_text()) # eval => permet de retransformer la chaîne de caractères en tableau de dictionnaires #for dic in T: bdd = BDD() self.addTracks(bdd.getTracks(T), destRow)
def dropEvent(self, e): print "DROP EVENT" data = e.mimeData() print data.formats() if data.hasFormat('bullseye/library.items'): dic = eval(str(data.data('bullseye/library.items'))) bdd = BDD() tracks = bdd.getTracks(dic) self.model.insert(tracks, self.rowAt(e.pos().y())) elif(data.hasFormat('bullseye/queue.items')): indexes = self.selectedIndexes() print indexes movedTracks = [] if len(indexes) > 0: targetedTrack = self.getTrackAt(self.rowAt(e.pos().y())) print targetedTrack first = indexes[0] last = indexes[-1] row = -1 for index in indexes: if(index.row() != row): track = self.getTrackAt(index) if(targetedTrack == track): return movedTracks.append(track) self.model.removeTrack(track) row = index.row() self.model.insertAfter(movedTracks, targetedTrack) QtGui.QTableView.dropEvent(self, e) elif data.hasUrls(): tracks = [] for url in data.urls(): path = url.toLocalFile() track = Track.fromPath(path) if track is not None: tracks.append(track) self.model.insert(tracks, self.rowAt(e.pos().y()))
def loadState(self): """ TODO Use one sql query by queue (using parametized IN clause) and thread this self.memcursor.execute('''SELECT id, matbefore, matafter, name, date FROM main WHERE name IN (%s)''' % ','.join('?'*len(offset)), (offset,)) """ bdd = BDD() queues = settings.get_option('session/queues', None) if(queues is not None): for key in queues.iterkeys(): if type(key).__name__=='int': self.addQueue() self.addSelection(bdd.getTracksFromIDs(queues[key])) else: playlist = self.addQueue(key) for track_id in queues[key]: self.addSelection(bdd.getTracks({'track_ID':track_id})) playlist.Liste.connect("row-changed", playlist.setModified) else: self.addQueue()
def addPlaylist(self, label, IDList): bdd = BDD() playlist = self.addQueue(label) self.addSelection(bdd.getTracksFromIDs(IDList), playlist) playlist.watchForChange()
def addTracks(IDs, queue): bdd = BDD() self.addSelection(bdd.getTracksFromIDs(IDs), queue)