diff options
| author | Adrien Tétar | 2015-06-12 22:20:49 +0200 | 
|---|---|---|
| committer | Adrien Tétar | 2015-06-12 22:20:49 +0200 | 
| commit | 9faef52dee40d3f39e7e85c9ca1db97022ffb066 (patch) | |
| tree | a4590f1b1df48db8b6539b34435eb3b13b53c62e /Lib/defconQt/fontView.py | |
| parent | cd296f4613191f474a700e8330ec29c2a0917189 (diff) | |
| download | trufont-9faef52dee40d3f39e7e85c9ca1db97022ffb066.tar.bz2 | |
Shufflings, more correctness for selection code (but needs refactoring b/w press/release), more glyphView functionality
Diffstat (limited to 'Lib/defconQt/fontView.py')
| -rw-r--r-- | Lib/defconQt/fontView.py | 43 | 
1 files changed, 25 insertions, 18 deletions
| diff --git a/Lib/defconQt/fontView.py b/Lib/defconQt/fontView.py index d35c0ab..b15ba66 100644 --- a/Lib/defconQt/fontView.py +++ b/Lib/defconQt/fontView.py @@ -243,18 +243,20 @@ class CharacterWidget(QWidget):              key = (event.y() // self.squareSize) * self.columns + event.x() // self.squareSize              if key > len(self.glyphs)-1: return              modifiers = event.modifiers() -            if modifiers & Qt.ShiftModifier and len(self._selection)==1: +            if modifiers & Qt.ShiftModifier and len(self._selection) == 1:                  self.lastKey = self._selection.pop()                  self.moveKey = key -            elif key in self._selection: +            elif modifiers & Qt.ControlModifier: +                self.lastKey = key +                self.moveKey = self.lastKey +            elif key in self._selection and not modifiers & Qt.ShiftModifier:                  self._maybeDragPosition = event.pos()                  event.accept()                  return              else: +                self._selection = set()                  self.lastKey = key                  self.moveKey = self.lastKey -            if not modifiers & Qt.ControlModifier: -                self._selection = set()              self.computeCharacterSelected()              event.accept() @@ -268,14 +270,14 @@ class CharacterWidget(QWidget):                  if ((event.pos() - self._maybeDragPosition).manhattanLength() \                      < QApplication.startDragDistance()): return                  # TODO: needs ordering or not? -                # TODO: see about dropping join tuples -                glyphList = " ".join((self.glyphs[key].name for key in self._selection)) +                glyphList = " ".join(self.glyphs[key].name for key in self._selection)                  drag = QDrag(self)                  mimeData = QMimeData()                  mimeData.setData("text/plain", glyphList)                  drag.setMimeData(mimeData)                  dropAction = drag.exec_() +                self._maybeDragPosition = None                  event.accept()                  return              key = (event.y() // self.squareSize) * self.columns + min(event.x() // self.squareSize, self.columns-1) @@ -291,20 +293,25 @@ class CharacterWidget(QWidget):      def mouseReleaseEvent(self, event):          if event.button() == Qt.LeftButton:              self._maybeDragPosition = None -            lastKey = self.lastKey if self.lastKey < len(self.glyphs) else len(self.glyphs)-1 -            moveKey = self.moveKey if self.moveKey < len(self.glyphs) else len(self.glyphs)-1 -            if event.modifiers() & Qt.ControlModifier: -                if moveKey > lastKey: -                    self._selection ^= set(range(lastKey, moveKey+1)) -                else: -                    self._selection ^= set(range(moveKey, lastKey+1)) +            if self.lastKey == -1: +                if self._maybeDragPosition is None: +                    self._selection = {(event.y() // self.squareSize) * self.columns + event.x() // self.squareSize} +                    self.computeCharacterSelected()              else: -                if moveKey > lastKey: -                    self._selection = set(range(lastKey, moveKey+1)) +                lastKey = self.lastKey if self.lastKey < len(self.glyphs) else len(self.glyphs)-1 +                moveKey = self.moveKey if self.moveKey < len(self.glyphs) else len(self.glyphs)-1 +                if event.modifiers() & Qt.ControlModifier: +                    if moveKey > lastKey: +                        self._selection ^= set(range(lastKey, moveKey+1)) +                    else: +                        self._selection ^= set(range(moveKey, lastKey+1))                  else: -                    self._selection = set(range(moveKey, lastKey+1)) -            self.lastKey = -1 -            self.moveKey = -1 +                    if moveKey > lastKey: +                        self._selection = set(range(lastKey, moveKey+1)) +                    else: +                        self._selection = set(range(moveKey, lastKey+1)) +                self.lastKey = -1 +                self.moveKey = -1              event.accept()              self.update()          else: | 
