Skip to content

Commit

Permalink
progress
Browse files Browse the repository at this point in the history
  • Loading branch information
zkovari committed Oct 10, 2024
1 parent beb4a31 commit 731fbee
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 9 deletions.
19 changes: 16 additions & 3 deletions src/main/python/plotlyst/view/widget/input.py
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,17 @@ def _remove(self, lblWdg: LabelWidget):


class DecoratedLineEdit(QWidget):
def __init__(self, parent=None, maxWidth: Optional[int] = None):
iconChanged = pyqtSignal(str, str)

def __init__(self, parent=None, maxWidth: Optional[int] = None, iconEditable: bool = False):
super().__init__(parent)
hbox(self, 0, 0)
self.icon = QToolButton()
transparent(self.icon)
if iconEditable:
pointy(self.icon)
self.icon.installEventFilter(OpacityEventFilter(self.icon, leaveOpacity=1.0, enterOpacity=0.7))
self.icon.clicked.connect(self._changeIcon)
self.lineEdit = AutoAdjustableLineEdit(defaultWidth=50, maxWidth=maxWidth)
transparent(self.lineEdit)

Expand All @@ -1334,17 +1340,24 @@ def setIcon(self, icon: QIcon):
def setText(self, text: str):
self.lineEdit.setText(text)

def _changeIcon(self):
result = IconSelectorDialog.popup()
if result:
self.icon.setIcon(IconRegistry.from_name(result[0], result[1].name()))
self.iconChanged.emit(result[0], result[1].name())


class TextEditBubbleWidget(QFrame):
removed = pyqtSignal()

def __init__(self, parent=None, titleEditable: bool = False, titleMaxWidth: Optional[int] = None):
def __init__(self, parent=None, titleEditable: bool = False, titleMaxWidth: Optional[int] = None,
iconEditable: bool = False):
super().__init__(parent)
self._removalEnabled: bool = False

vbox(self)
if titleEditable:
self._title = DecoratedLineEdit(maxWidth=titleMaxWidth)
self._title = DecoratedLineEdit(maxWidth=titleMaxWidth, iconEditable=iconEditable)
bold(self._title.lineEdit)
else:
self._title = QPushButton()
Expand Down
12 changes: 9 additions & 3 deletions src/main/python/plotlyst/view/widget/world/conceit.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,10 @@
class ConceitBubble(TextEditBubbleWidget):
nameEdited = pyqtSignal()
textChanged = pyqtSignal()
iconChanged = pyqtSignal()

def __init__(self, conceit: WorldConceit, parent=None):
super().__init__(parent, titleEditable=True, titleMaxWidth=150)
super().__init__(parent, titleEditable=True, titleMaxWidth=150, iconEditable=True)
self.conceit = conceit

self._removalEnabled = True
Expand All @@ -47,6 +48,7 @@ def __init__(self, conceit: WorldConceit, parent=None):
self._title.setIcon(IconRegistry.from_name(icon, '#510442'))
self._title.setText(self.conceit.name)
self._title.lineEdit.textEdited.connect(self._titleEdited)
self._title.iconChanged.connect(self._iconChanged)
self._textedit.setPlaceholderText('An element of wonder that deviates from our world')
self._textedit.setStyleSheet('''
QTextEdit {
Expand All @@ -57,7 +59,6 @@ def __init__(self, conceit: WorldConceit, parent=None):
}
''')
self._textedit.setText(self.conceit.text)
self._textedit.textChanged.connect(self._textChanged)

def _titleEdited(self, text: str):
self.conceit.name = text
Expand All @@ -67,6 +68,11 @@ def _textChanged(self):
self.conceit.text = self._textedit.toPlainText()
self.textChanged.emit()

def _iconChanged(self, icon: str, color: str):
self.conceit.icon = icon
self.conceit.icon_color = color
self.iconChanged.emit()


class ConceitNode(ItemBasedNode):
added = pyqtSignal()
Expand All @@ -91,7 +97,7 @@ def item(self) -> WorldConceit:
def refresh(self):
self._lblTitle.setText(self._conceit.name if self._conceit.name else 'Conceit')
if self._conceit.icon:
self._icon.setIcon(IconRegistry.from_name(self._conceit.icon))
self._icon.setIcon(IconRegistry.from_name(self._conceit.icon, self._conceit.icon_color))
else:
self._icon.setIcon(IconRegistry.dot_icon())

Expand Down
17 changes: 14 additions & 3 deletions src/main/python/plotlyst/view/widget/world/editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
from PyQt6.QtGui import QTextCharFormat, QTextCursor, QFont, QResizeEvent, QMouseEvent, QColor, QIcon, QImage, \
QShowEvent, QPixmap, QCursor, QEnterEvent
from PyQt6.QtWidgets import QWidget, QSplitter, QLineEdit, QDialog, QGridLayout, QSlider, QToolButton, QButtonGroup, \
QLabel, QToolTip
QLabel, QToolTip, QSpacerItem, QSizePolicy
from overrides import overrides
from qthandy import vspacer, clear_layout, transparent, vbox, margins, hbox, sp, retain_when_hidden, decr_icon, pointy, \
grid, flow, spacer, line, incr_icon, gc, translucent, incr_font, vline, bold
Expand Down Expand Up @@ -775,12 +775,13 @@ def _addNewConceit(self, conceitType: WorldConceitType):

def _initBubble(self, conceit: WorldConceit) -> ConceitBubble:
bubble = ConceitBubble(conceit)
bubble.nameEdited.connect(partial(self._conceitNameChanged, conceit))
bubble.nameEdited.connect(partial(self._conceitChanged, conceit))
bubble.iconChanged.connect(partial(self._conceitChanged, conceit))
bubble.textChanged.connect(self.save)
bubble.removed.connect(partial(self._conceitRemoved, bubble))
return bubble

def _conceitNameChanged(self, conceit: WorldConceit):
def _conceitChanged(self, conceit: WorldConceit):
self._wdgTree.updateItem(conceit)
self.save()

Expand All @@ -793,6 +794,16 @@ def _conceitRemoved(self, bubble: ConceitBubble):

def _conceitSelected(self, conceit: WorldConceit):
clear_layout(self._wdgDisplay)

bubble = self._initBubble(conceit)
self._wdgDisplay.layout().addWidget(bubble)
self._wdgDisplay.layout().addItem(QSpacerItem(0, 5, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Maximum))
if conceit.children:
lbl = label('Subtypes', underline=True)
self._wdgDisplay.layout().addWidget(lbl)
self._wdgDisplay.layout().addItem(
QSpacerItem(0, 5, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Maximum))

for conceit in conceit.children:
bubble = self._initBubble(conceit)
self._wdgDisplay.layout().addWidget(bubble)
Expand Down

0 comments on commit 731fbee

Please sign in to comment.