Skip to content

Commit

Permalink
Display descriptions in plot principle menu
Browse files Browse the repository at this point in the history
  • Loading branch information
zkovari committed Jul 26, 2023
1 parent ef511f7 commit 9b31aa9
Showing 1 changed file with 15 additions and 10 deletions.
25 changes: 15 additions & 10 deletions src/main/python/plotlyst/view/widget/plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
from PyQt6.QtCharts import QSplineSeries, QValueAxis
from PyQt6.QtCore import pyqtSignal, Qt, QSize
from PyQt6.QtGui import QColor, QIcon, QPen, QCursor
from PyQt6.QtWidgets import QWidget, QFrame, QWidgetAction, QMenu, QPushButton, QTextEdit
from PyQt6.QtWidgets import QWidget, QFrame, QWidgetAction, QMenu, QPushButton, QTextEdit, QLabel
from overrides import overrides
from qthandy import bold, flow, incr_font, \
margins, btn_popup_menu, ask_confirmation, italic, retain_when_hidden, vbox, transparent, \
Expand All @@ -44,12 +44,13 @@
from src.main.python.plotlyst.events import CharacterChangedEvent, CharacterDeletedEvent
from src.main.python.plotlyst.service.persistence import RepositoryPersistenceManager, delete_plot
from src.main.python.plotlyst.settings import STORY_LINE_COLOR_CODES
from src.main.python.plotlyst.view.common import action, fade_out_and_gc, pointy, ButtonPressResizeEventFilter
from src.main.python.plotlyst.view.common import action, fade_out_and_gc, pointy, ButtonPressResizeEventFilter, wrap
from src.main.python.plotlyst.view.dialog.novel import PlotValueEditorDialog
from src.main.python.plotlyst.view.dialog.utility import IconSelectorDialog
from src.main.python.plotlyst.view.generated.plot_editor_widget_ui import Ui_PlotEditor
from src.main.python.plotlyst.view.generated.plot_widget_ui import Ui_PlotWidget
from src.main.python.plotlyst.view.icons import IconRegistry
from src.main.python.plotlyst.view.style.base import apply_white_menu
from src.main.python.plotlyst.view.widget.button import SecondaryActionPushButton
from src.main.python.plotlyst.view.widget.characters import CharacterSelectorButton
from src.main.python.plotlyst.view.widget.chart import BaseChart
Expand Down Expand Up @@ -136,6 +137,7 @@ class _PlotPrincipleToggle(QWidget):
def __init__(self, pincipleType: PlotPrincipleType, parent=None):
super(_PlotPrincipleToggle, self).__init__(parent)
hbox(self)
margins(self, bottom=0)
self._principleType = pincipleType

self._label = QPushButton()
Expand All @@ -156,15 +158,16 @@ def __init__(self, pincipleType: PlotPrincipleType, parent=None):
self.toggle.toggled.connect(self._label.setChecked)


class PlotPrincipleSelectorMenu(QMenu):
class PlotPrincipleSelectorMenu(MenuWidget):
principleToggled = pyqtSignal(PlotPrincipleType, bool)

def __init__(self, plot: Plot, parent=None):
super(PlotPrincipleSelectorMenu, self).__init__(parent)
self._plot = plot

self._selector = QWidget()
vbox(self._selector)
self._selectors = QWidget()
apply_white_menu(self)
vbox(self._selectors, spacing=0)

active_types = set([x.type for x in self._plot.principles])

Expand All @@ -175,11 +178,14 @@ def __init__(self, plot: Plot, parent=None):
if principle in active_types:
wdg.toggle.setChecked(True)
wdg.toggle.toggled.connect(partial(self.principleToggled.emit, principle))
self._selector.layout().addWidget(wdg)
self._selectors.layout().addWidget(wdg)
desc = QLabel(principle_hints[principle])
desc.setProperty('description', True)
self._selectors.layout().addWidget(wrap(desc, margin_left=10, margin_bottom=5))

action = QWidgetAction(self)
action.setDefaultWidget(self._selector)
self.addAction(action)
self.addSection('Select those principles that are relevant to this plot line')
self.addSeparator()
self.addWidget(self._selectors)


class PlotPrincipleEditor(QWidget):
Expand Down Expand Up @@ -478,7 +484,6 @@ def __init__(self, novel: Novel, plot: Plot, parent=None):

self._principleSelectorMenu = PlotPrincipleSelectorMenu(self.plot, self.btnPincipleEditor)
self._principleSelectorMenu.principleToggled.connect(self._principleToggled)
btn_popup_menu(self.btnPincipleEditor, self._principleSelectorMenu)
self.btnPincipleEditor.installEventFilter(ButtonPressResizeEventFilter(self.btnPincipleEditor))
self.btnPincipleEditor.installEventFilter(OpacityEventFilter(self.btnPincipleEditor, leaveOpacity=0.7))
self._principles: Dict[PlotPrincipleType, PlotPrincipleEditor] = {}
Expand Down

0 comments on commit 9b31aa9

Please sign in to comment.