-
Notifications
You must be signed in to change notification settings - Fork 1
/
about_dialog.py
72 lines (61 loc) · 2.54 KB
/
about_dialog.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import os
from typing import Dict, Optional
from qgis.PyQt.QtCore import QLocale
from qgis.PyQt.QtWidgets import QWidget, QDialog
from qgis.PyQt import uic
from qgis.core import QgsSettings
from qgis.utils import pluginMetadata
FORM_CLASS, _ = uic.loadUiType(
os.path.join(os.path.dirname(__file__), "about_dialog_base.ui")
)
class AboutDialog(QDialog, FORM_CLASS):
def __init__(self, package_name: str, parent: Optional[QWidget] = None):
super().__init__(parent)
self.setupUi(self)
self.__package_name = package_name
replacemens = self.__replacemens()
self.pluginName.setText(
self.pluginName.text().replace(
"{plugin_name}", replacemens["{plugin_name}"]
)
)
self.setWindowTitle(
self.windowTitle().format(plugin_name=replacemens["{plugin_name}"])
)
html = self.textBrowser.toHtml()
for key, value in replacemens.items():
html = html.replace(key, value)
self.textBrowser.setHtml(html)
def __locale(self) -> str:
override_locale = QgsSettings().value(
"locale/overrideFlag", False, type=bool
)
if not override_locale:
locale_full_name = QLocale.system().name()
else:
locale_full_name = QgsSettings().value("locale/userLocale", "")
return locale_full_name[0:2]
def __replacemens(self) -> Dict[str, str]:
locale = self.__locale()
is_ru = locale in ["ru", "uk"]
def metadata_value(key: str) -> str:
value = pluginMetadata(self.__package_name, f"{key}[{locale}]")
if value == "__error__":
value = pluginMetadata(self.__package_name, key)
return value
about = metadata_value("about")
about_stop_phrase = "Разработан компанией" if is_ru else "Developed by"
if about.find(about_stop_phrase) > 0:
about = about[: about.find(about_stop_phrase)]
return {
"{plugin_name}": metadata_value("name"),
"{description}": metadata_value("description"),
"{about}": about,
"{authors}": metadata_value("author"),
"{video_url}": metadata_value("video"),
"{homepage_url}": metadata_value("repository"),
"{tracker_url}": metadata_value("tracker"),
"{main_url}": f"https://nextgis.{'ru' if is_ru else 'com'}",
"{utm}": "?utm_source=qgis_plugin&utm_medium=about&utm_campaign="
+ self.__package_name,
}