adsfolio.gui.notifications

Compact non-modal notifications for the desktop GUI.

class adsfolio.gui.notifications.Notice(key, message, severity='info', action_label=None, payload=None, root=None, action=None, details=None, manual_entry=False, reveal_path=None, update_by_id=False, candidate_bibcode=None, candidate_sha256=None, candidate_fingerprint=None, candidate_confirmable=False)[source]

Bases: object

Immutable display data and opaque action payload for one notice.

Parameters:
action: adsfolio.gui.notifications.NoticeAction | None = None
action_label: str | None = None
candidate_bibcode: str | None = None
candidate_confirmable: bool = False
candidate_fingerprint: str | None = None
candidate_sha256: str | None = None
details: str | None = None
key: str
manual_entry: bool = False
message: str
payload: object | None = None
reveal_path: pathlib.Path | None = None
root: pathlib.Path | None = None
severity: str = 'info'
update_by_id: bool = False
class adsfolio.gui.notifications.NoticeAction(*values)[source]

Bases: str, enum.Enum

Typed action identity with its user-facing label.

IDENTIFY = 'Identify…'
IDENTIFY_RENAME = 'Identify & Rename'
MERGE_EDITIONS = 'Review Merge…'
RETRY = 'Retry'
SHOW_CONFLICT = 'Review Both PDFs…'
VIEW_RELEASE = 'Update Details'
class adsfolio.gui.notifications.NoticeBar(parent=None)[source]

Bases: PySide6.QtWidgets.QFrame

Show every queued notice with independently routed action controls.

Parameters:

parent (QWidget | None)

action_all_requested
action_requested
ads_entry_requested
changed
clear_root(root)[source]

Remove notices explicitly associated with root.

Parameters:

root (pathlib.Path)

Return type:

None

dismiss(key)[source]

Remove one keyed notice if it is queued.

Parameters:

key (str)

Return type:

None

dismiss_all_requested
dismiss_requested
enqueue(notice)[source]

Add or replace one notice without changing its queue position.

Parameters:

notice (adsfolio.gui.notifications.Notice)

Return type:

None

manual_entry_requested
open_requested
queued_keys()[source]

Return queued notice keys in display order.

Return type:

tuple[str, …]

queued_notices()[source]

Return notices in display order without changing the queue.

Return type:

tuple[adsfolio.gui.notifications.Notice, …]

reveal_requested
staticMetaObject = PySide6.QtCore.QMetaObject("NoticeBar" inherits "QFrame": Methods:   #33 type=Signal, signature=action_requested(PyObject), parameters=PyObject   #34 type=Signal, signature=manual_entry_requested(PyObject), parameters=PyObject   #35 type=Signal, signature=update_by_id_requested(PyObject), parameters=PyObject   #36 type=Signal, signature=open_requested(PyObject), parameters=PyObject   #37 type=Signal, signature=ads_entry_requested(QString), parameters=QString   #38 type=Signal, signature=use_id_requested(PyObject), parameters=PyObject   #39 type=Signal, signature=reveal_requested(PyObject), parameters=PyObject   #40 type=Signal, signature=dismiss_requested(PyObject), parameters=PyObject   #41 type=Signal, signature=action_all_requested(PyObject), parameters=PyObject   #42 type=Signal, signature=dismiss_all_requested(PyObject), parameters=PyObject   #43 type=Signal, signature=changed() )
update_by_id_requested
use_id_requested
class adsfolio.gui.notifications.NotificationButton(parent=None)[source]

Bases: adsfolio.gui.icons.BadgeToolButton

Keep notification access in the toolbar without changing its height.

Parameters:

parent (QWidget | None)

event(event)[source]

Display the notification tooltip immediately on hover or focus.

Parameters:

event (PySide6.QtCore.QEvent)

Return type:

bool

staticMetaObject = PySide6.QtCore.QMetaObject("NotificationButton" inherits "BadgeToolButton": )
class adsfolio.gui.notifications.NotificationPanel(parent=None)[source]

Bases: PySide6.QtWidgets.QFrame

Display queued notices and view help outside the main pane layout.

Parameters:

parent (QWidget | None)

keyPressEvent(event)[source]

Close the panel on Escape without dismissing queued notices.

Parameters:

event (PySide6.QtGui.QKeyEvent)

Return type:

None

set_guidance(text, *, identify)[source]

Update view help without changing the main window’s geometry.

Parameters:
  • text (str) – Explanation for the selected sidebar group. Empty hides the help.

  • identify (bool) – Whether the help offers the Identify papers action.

Return type:

None

show_for(anchor)[source]

Open the scrollable panel beside its toolbar control.

Parameters:

anchor (PySide6.QtWidgets.QWidget) – Toolbar control whose screen and position place the panel.

Return type:

None

staticMetaObject = PySide6.QtCore.QMetaObject("NotificationPanel" inherits "QFrame": )