From 295c970dced68244545508dda5e5c352813145f0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Thu, 9 Oct 2014 17:53:39 +0200 Subject: [PATCH] =?utf8?q?Impl=C3=A9mentation=20du=20d=C3=A9placement=20d'?= =?utf8?q?une=20s=C3=A9lection=20au=20del=C3=A0=20de=20la=20position=20du?= =?utf8?q?=20dernier=20=C3=A9l=C3=A9ment.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- HugePlinnFolder.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/HugePlinnFolder.py b/HugePlinnFolder.py index 563bf18..d158fdd 100644 --- a/HugePlinnFolder.py +++ b/HugePlinnFolder.py @@ -138,6 +138,8 @@ class HugePlinnFolder(BTreeFolder2Base, PlinnFolder) : def moveObjectsAfter(self, ids, targetId, suppress_events=False): assert targetId not in ids + # id2pos = dict(self._id2pos_index).copy() + # pos2id = dict(self._pos2id_index).copy() id2pos = self._id2pos_index pos2id = self._pos2id_index targetPos = id2pos[targetId] @@ -150,8 +152,8 @@ class HugePlinnFolder(BTreeFolder2Base, PlinnFolder) : id2posUpdate = {} pos2idUpdate = {} - # moved before the firt item position if targetPos < minMovedPos : + # selection moved before the first item position for i, id in enumerate(ids) : pos = i + targetPos + 1 id2posUpdate[id] = pos @@ -167,9 +169,18 @@ class HugePlinnFolder(BTreeFolder2Base, PlinnFolder) : print "déposé entre la première et la dernière de la sélection" raise NotImplementedError() else : - print minMovedPos, maxMovedPos, targetPos - print "déposé après la dernière" - raise NotImplementedError() + # selection moved after the last item position + pos = minMovedPos + for id in IndexIterator(pos2id, targetPos, start=minMovedPos+1) : + id2posUpdate[id] = pos + pos2idUpdate[pos] = id + pos += 1 + + pos = targetPos - len(ids) + 1 + for id in ids : + id2posUpdate[id] = pos + pos2idUpdate[pos] = id + pos +=1 id2pos.update(id2posUpdate) pos2id.update(pos2idUpdate) @@ -178,6 +189,7 @@ class HugePlinnFolder(BTreeFolder2Base, PlinnFolder) : for pos in xrange(len(self)) : assert pos2id.has_key(pos) assert id2pos.has_key(pos2id[pos]) + if not suppress_events : for id, pos in id2posUpdate.items() : notify(ObjectPositionModified(self[id], self, pos)) -- 2.20.1