Skip to content

Commit

Permalink
zoombar
Browse files Browse the repository at this point in the history
  • Loading branch information
zkovari committed Aug 16, 2023
1 parent 62eb35b commit 7a7666a
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 8 deletions.
9 changes: 6 additions & 3 deletions src/main/python/plotlyst/view/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
from fbs_runtime import platform
from overrides import overrides
from qtanim import fade_out
from qthandy import hbox, vbox, margins, gc
from qthandy import hbox, vbox, margins, gc, transparent

from src.main.python.plotlyst.env import app_env

Expand Down Expand Up @@ -372,7 +372,7 @@ def insert_after(parent: QWidget, widget: QWidget, reference: QWidget):


def tool_btn(icon: QIcon, tooltip: str = '', checkable: bool = False, base: bool = False,
icon_resize: bool = True) -> QToolButton:
icon_resize: bool = True, transparent_: bool = False, parent=None) -> QToolButton:
btn = QToolButton()
btn.setIcon(icon)
btn.setToolTip(tooltip)
Expand All @@ -382,7 +382,10 @@ def tool_btn(icon: QIcon, tooltip: str = '', checkable: bool = False, base: bool
btn.setProperty('base', True)
if icon_resize:
btn.installEventFilter(ButtonPressResizeEventFilter(btn))

if transparent_:
transparent(btn)
if parent:
btn.setParent(parent)
return btn


Expand Down
36 changes: 31 additions & 5 deletions src/main/python/plotlyst/view/widget/events_map.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@
from typing import Optional, List

from PyQt6.QtCore import QRectF, Qt, QPointF, pyqtSignal, QRect, QPoint
from PyQt6.QtGui import QColor, QPainter, QPen, QKeyEvent, QFontMetrics
from PyQt6.QtGui import QColor, QPainter, QPen, QKeyEvent, QFontMetrics, QResizeEvent
from PyQt6.QtWidgets import QGraphicsScene, QWidget, QAbstractGraphicsShapeItem, QGraphicsSceneHoverEvent, \
QGraphicsSceneMouseEvent, QStyleOptionGraphicsItem, QGraphicsTextItem, QApplication
QGraphicsSceneMouseEvent, QStyleOptionGraphicsItem, QGraphicsTextItem, QApplication, QFrame
from overrides import overrides
from qthandy import transparent
from qthandy import transparent, hbox
from qtmenu import MenuWidget

from src.main.python.plotlyst.common import PLOTLYST_SECONDARY_COLOR
from src.main.python.plotlyst.core.domain import Novel, Character, CharacterNode, Node
from src.main.python.plotlyst.view.common import action
from src.main.python.plotlyst.view.icons import avatars
from src.main.python.plotlyst.view.common import action, tool_btn, shadow
from src.main.python.plotlyst.view.icons import avatars, IconRegistry
from src.main.python.plotlyst.view.widget.graphics import BaseGraphicsView, NodeItem, ConnectorItem
from src.main.python.plotlyst.view.widget.input import AutoAdjustableLineEdit

Expand Down Expand Up @@ -435,6 +435,28 @@ def __init__(self, novel: Novel, parent=None):
self._scene.addNewNode.connect(self._displayNewNodeMenu)
self._scene.editEvent.connect(self._editEvent)

self._wdgZoomBar = QFrame(self)
self._wdgZoomBar.setFrameShape(QFrame.Shape.StyledPanel)
self._wdgZoomBar.setProperty('relaxed-white-bg', True)
shadow(self._wdgZoomBar)
hbox(self._wdgZoomBar, 0, spacing=1)

self._btnZoomIn = tool_btn(IconRegistry.plus_circle_icon('lightgrey'), 'Zoom in', transparent_=True,
parent=self._wdgZoomBar)
self._btnZoomOut = tool_btn(IconRegistry.minus_icon('lightgrey'), 'Zoom out', transparent_=True,
parent=self._wdgZoomBar)
self._btnZoomIn.clicked.connect(lambda: self.scale(1.1, 1.1))
self._btnZoomOut.clicked.connect(lambda: self.scale(0.9, 0.9))

self._wdgZoomBar.layout().addWidget(self._btnZoomOut)
self._wdgZoomBar.layout().addWidget(self._btnZoomIn)
self.__arrangeZoomButtons()

@overrides
def resizeEvent(self, event: QResizeEvent) -> None:
super(EventsMindMapView, self).resizeEvent(event)
self.__arrangeZoomButtons()

def _displayNewNodeMenu(self, placeholder: PlaceholderItem):
menu = MenuWidget(self)
menu.addAction(
Expand All @@ -453,3 +475,7 @@ def setText(text: str):
popup.exec(self.mapToGlobal(view_pos))

popup.aboutToHide.connect(lambda: setText(popup.text()))

def __arrangeZoomButtons(self):
self._wdgZoomBar.setGeometry(10, self.height() - self._wdgZoomBar.height() - 10, self._wdgZoomBar.width(),
self._wdgZoomBar.height())

0 comments on commit 7a7666a

Please sign in to comment.