Skip to content

Commit

Permalink
Update scene chapter ref when scene card is moved, closes #1427
Browse files Browse the repository at this point in the history
  • Loading branch information
zkovari committed Oct 17, 2024
1 parent 8a49a44 commit 55f0554
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 7 deletions.
2 changes: 1 addition & 1 deletion src/main/python/plotlyst/view/characters_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ def _card_selected(self, card: CharacterCard):
self.ui.btnDelete.setEnabled(True)
self.ui.btnEdit.setEnabled(True)

def _characters_swapped(self, characters: List[Character]):
def _characters_swapped(self, characters: List[Character], _: CharacterCard):
self.novel.characters[:] = characters

self.selected_card = None
Expand Down
15 changes: 14 additions & 1 deletion src/main/python/plotlyst/view/scenes_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -717,7 +717,20 @@ def _on_delete(self):
if chapters:
self.ui.treeChapters.removeChapter(chapters[0])

def _on_scene_cards_swapped(self, scenes: List[Scene]):
def _on_scene_cards_swapped(self, scenes: List[Scene], droppedCard: SceneCard):
droppedScene = droppedCard.scene
i = scenes.index(droppedScene)
if i == 0 and len(scenes) > 1: # first pos
if scenes[1].chapter:
droppedScene.chapter = scenes[1].chapter
self.repo.update_scene(droppedScene)
elif i == len(scenes) - 1 and i > 0: # last pos
droppedScene.chapter = scenes[i - 1].chapter
self.repo.update_scene(droppedScene)
elif i < len(scenes) - 1:
droppedScene.chapter = scenes[i + 1].chapter
self.repo.update_scene(droppedScene)

self.novel.scenes[:] = scenes
self._handle_scene_order_changed()
self.selected_card = None
Expand Down
11 changes: 6 additions & 5 deletions src/main/python/plotlyst/view/widget/cards.py
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,7 @@ class CardsView(QFrame):
cardEntered = pyqtSignal(Card)
cardDoubleClicked = pyqtSignal(Card)
cardCustomContextMenuRequested = pyqtSignal(Card, QPoint)
orderChanged = pyqtSignal(list)
orderChanged = pyqtSignal(list, Card) # dropped Card
selectionCleared = pyqtSignal()

def __init__(self, parent=None):
Expand Down Expand Up @@ -517,19 +517,20 @@ def _dragMoved(self, card: Card, edge: Qt.Edge, _: QPoint):

def _dropped(self, _: QMimeData):
self.clearSelection()
card = self._dragged.copy()
self._initCardWidget(card)
droppedCard = self._dragged.copy()
self._initCardWidget(droppedCard)

i = self._layout.indexOf(self._dragPlaceholder)
self._layout.insertWidget(i, card)
self._layout.insertWidget(i, droppedCard)

data = []
for i in range(self._layout.count()):
card: Card = self._layout.itemAt(i).widget()
if card is self._dragPlaceholder or card is self._dragged:
continue
data.append(card.data())
QTimer.singleShot(10, lambda: self.orderChanged.emit(data))

QTimer.singleShot(10, lambda: self.orderChanged.emit(data, droppedCard))
gc(self._dragPlaceholder)
self._dragPlaceholder = None

Expand Down

0 comments on commit 55f0554

Please sign in to comment.