Skip to content

Commit

Permalink
ui(main): add a custom toolbar and missing shortcut icons
Browse files Browse the repository at this point in the history
  • Loading branch information
Guts committed Apr 30, 2024
1 parent ce3889b commit 7aebc1a
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 15 deletions.
9 changes: 9 additions & 0 deletions qtribu/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,15 @@
from typing import Optional
from urllib.parse import urlparse

# 3rd party
from qgis.PyQt.QtGui import QIcon

# plugin
from qtribu.__about__ import DIR_PLUGIN_ROOT

ICON_ARTICLE = QIcon(str(DIR_PLUGIN_ROOT.joinpath("resources/images/article.svg")))
ICON_GEORDP = QIcon(str(DIR_PLUGIN_ROOT.joinpath("resources/images/geordp.svg")))


# Classes
@dataclass
Expand Down
4 changes: 1 addition & 3 deletions qtribu/gui/dlg_contents.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from qgis.PyQt.QtWidgets import QDialog, QTreeWidgetItem, QWidget

from qtribu.__about__ import DIR_PLUGIN_ROOT
from qtribu.constants import ICON_ARTICLE, ICON_GEORDP
from qtribu.gui.form_article import ArticleForm
from qtribu.gui.form_rdp_news import RdpNewsForm
from qtribu.logic import RssItem
Expand All @@ -21,9 +22,6 @@
from qtribu.toolbelt.commons import open_url_in_browser, open_url_in_webviewer

# -- GLOBALS --

ICON_ARTICLE = QIcon(str(DIR_PLUGIN_ROOT.joinpath("resources/images/article.svg")))
ICON_GEORDP = QIcon(str(DIR_PLUGIN_ROOT.joinpath("resources/images/geordp.svg")))
MARKER_VALUE = "---"

# -- CLASSES --
Expand Down
60 changes: 48 additions & 12 deletions qtribu/plugin_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@

# project
from qtribu.__about__ import DIR_PLUGIN_ROOT, __icon_path__, __title__, __uri_homepage__
from qtribu.constants import ICON_ARTICLE, ICON_GEORDP
from qtribu.gui.dlg_contents import GeotribuContentsDialog
from qtribu.gui.dlg_settings import PlgOptionsFactory
from qtribu.gui.form_article import ArticleForm
from qtribu.gui.form_rdp_news import RdpNewsForm
from qtribu.logic import RssMiniReader, SplashChanger
from qtribu.toolbelt import NetworkRequestsManager, PlgLogger, PlgOptionsManager
Expand Down Expand Up @@ -77,9 +79,13 @@ def initGui(self):
self.options_factory = PlgOptionsFactory()
self.iface.registerOptionsWidgetFactory(self.options_factory)

# toolbar
self.toolbar = self.iface.addToolBar("ToolbarGeotribu")

# -- Forms
self.form_rdp_news = None
self.form_article = None
self.form_contents = None
self.form_rdp_news = None

# -- Actions
self.action_run = QAction(
Expand All @@ -99,12 +105,19 @@ def initGui(self):
self.action_contents.setToolTip(self.tr("Contents"))
self.action_contents.triggered.connect(self.contents)

self.action_rdp_news = QAction(
QIcon(QgsApplication.iconPath("mActionHighlightFeature.svg")),
self.action_form_rdp_news = QAction(
ICON_GEORDP,
self.tr("Propose a news to the next GeoRDP"),
self.iface.mainWindow(),
)
self.action_rdp_news.triggered.connect(self.open_form_rdp_news)
self.action_form_rdp_news.triggered.connect(self.open_form_rdp_news)

self.action_form_article = QAction(
ICON_ARTICLE,
self.tr("Submit an article"),
self.iface.mainWindow(),
)
self.action_form_article.triggered.connect(self.open_form_article)

self.action_help = QAction(
QIcon(QgsApplication.iconPath("mActionHelpContents.svg")),
Expand All @@ -130,7 +143,8 @@ def initGui(self):
# -- Menu
self.iface.addPluginToWebMenu(__title__, self.action_run)
self.iface.addPluginToWebMenu(__title__, self.action_contents)
self.iface.addPluginToWebMenu(__title__, self.action_rdp_news)
self.iface.addPluginToWebMenu(__title__, self.action_form_rdp_news)
self.iface.addPluginToWebMenu(__title__, self.action_form_article)
self.iface.addPluginToWebMenu(__title__, self.action_splash)
self.iface.addPluginToWebMenu(__title__, self.action_settings)
self.iface.addPluginToWebMenu(__title__, self.action_help)
Expand Down Expand Up @@ -173,9 +187,10 @@ def initGui(self):
self.iface.helpMenu().addAction(self.action_osgeofr)

# -- Toolbar
self.iface.addToolBarIcon(self.action_run)
self.iface.addToolBarIcon(self.action_contents)
self.iface.addToolBarIcon(self.action_rdp_news)
self.toolbar.addAction(self.action_run)
self.toolbar.addAction(self.action_contents)
self.toolbar.addAction(self.action_form_rdp_news)
self.toolbar.addAction(self.action_form_article)

# -- Post UI initialization
self.iface.initializationCompleted.connect(self.post_ui_init)
Expand All @@ -184,7 +199,8 @@ def unload(self):
"""Cleans up when plugin is disabled/uninstalled."""
# -- Clean up menu
self.iface.removePluginWebMenu(__title__, self.action_help)
self.iface.removePluginWebMenu(__title__, self.action_rdp_news)
self.iface.removePluginWebMenu(__title__, self.action_form_article)
self.iface.removePluginWebMenu(__title__, self.action_form_rdp_news)
self.iface.removePluginWebMenu(__title__, self.action_run)
self.iface.removePluginWebMenu(__title__, self.action_contents)
self.iface.removePluginWebMenu(__title__, self.action_settings)
Expand All @@ -195,9 +211,7 @@ def unload(self):
self.iface.pluginHelpMenu().removeAction(self.action_osgeofr)

# -- Clean up toolbar
self.iface.removeToolBarIcon(self.action_run)
self.iface.removeToolBarIcon(self.action_contents)
self.iface.removeToolBarIcon(self.action_rdp_news)
del self.toolbar

# -- Clean up preferences panel in QGIS settings
self.iface.unregisterOptionsWidgetFactory(self.options_factory)
Expand Down Expand Up @@ -319,6 +333,28 @@ def contents(self):
self.form_contents = GeotribuContentsDialog()
self.form_contents.show()

def open_form_article(self) -> None:
"""Open the form to create a GeoRDP news."""
if not self.form_article:
self.form_article = ArticleForm()
self.form_article.setModal(True)
self.form_article.finished.connect(self._post_form_article)
self.form_article.show()

def _post_form_article(self, dialog_result: int) -> None:
"""Perform actions after the GeoRDP news form has been closed.
:param dialog_result: dialog's result code. Accepted (1) or Rejected (0)
:type dialog_result: int
"""
if self.form_article:
# if accept button, save user inputs
if dialog_result == 1:
self.form_article.wdg_author.save_settings()
# clean up
self.form_article.deleteLater()
self.form_article = None

def open_form_rdp_news(self) -> None:
"""Open the form to create a GeoRDP news."""
if not self.form_rdp_news:
Expand Down

0 comments on commit 7aebc1a

Please sign in to comment.