Skip to content

Commit 2c34867

Browse files
committed
Config file
1 parent e57d822 commit 2c34867

File tree

7 files changed

+84
-53
lines changed

7 files changed

+84
-53
lines changed

oqtopus.py

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,45 @@
1+
import os
12
import sys
3+
import types
24

3-
try:
4-
from qgis.PyQt.QtWidgets import QApplication
5-
except ImportError:
6-
from PyQt5.QtWidgets import QApplication # Or PyQt6 if your project uses it
5+
from PyQt5.QtGui import QIcon
76

8-
from oqtopus.core.modules_registry import ModulesRegistry
9-
from oqtopus.gui.main_dialog import MainDialog
7+
# Create fake qgis.PyQt modules that point to PyQt5 modules
8+
pyqt5_widgets = __import__("PyQt5.QtWidgets", fromlist=[""])
9+
pyqt5_core = __import__("PyQt5.QtCore", fromlist=[""])
10+
pyqt5_gui = __import__("PyQt5.QtGui", fromlist=[""])
11+
pyqt5_uic = __import__("PyQt5.uic", fromlist=[""])
12+
13+
# Create the qgis, qgis.PyQt, and submodules in sys.modules
14+
qgis = types.ModuleType("qgis")
15+
pyqt = types.ModuleType("qgis.PyQt")
16+
pyqt.QtWidgets = pyqt5_widgets
17+
pyqt.QtCore = pyqt5_core
18+
pyqt.QtGui = pyqt5_gui
19+
pyqt.uic = pyqt5_uic
20+
21+
qgis.PyQt = pyqt
22+
sys.modules["qgis"] = qgis
23+
sys.modules["qgis.PyQt"] = pyqt
24+
sys.modules["qgis.PyQt.QtWidgets"] = pyqt5_widgets
25+
sys.modules["qgis.PyQt.QtCore"] = pyqt5_core
26+
sys.modules["qgis.PyQt.QtGui"] = pyqt5_gui
27+
sys.modules["qgis.PyQt.uic"] = pyqt5_uic
28+
29+
from oqtopus.core.modules_config import load_modules_from_conf # noqa: E402
30+
from oqtopus.gui.main_dialog import MainDialog # noqa: E402
1031

1132

1233
def main():
13-
app = QApplication(sys.argv)
14-
modules_registry = ModulesRegistry()
15-
dialog = MainDialog(modules_registry)
34+
app = pyqt5_widgets.QApplication(sys.argv)
35+
icon = QIcon("oqtopus/icons/oqtopus-logo.png")
36+
app.setWindowIcon(icon)
37+
38+
conf_path = os.path.join(os.path.dirname(__file__), "oqtopus/default_config.conf")
39+
modules_config = load_modules_from_conf(conf_path)
40+
41+
dialog = MainDialog(modules_config)
42+
dialog.setWindowIcon(icon)
1643
dialog.show()
1744
sys.exit(app.exec_())
1845

oqtopus/core/modules_config.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from typing import List
2+
3+
import tomli
4+
from pydantic import BaseModel
5+
6+
7+
class ModuleConfig(BaseModel):
8+
name: str
9+
organisation: str
10+
repository: str
11+
12+
13+
class ModulesConfig(BaseModel):
14+
modules: List[ModuleConfig]
15+
16+
17+
def load_modules_from_conf(conf_path: str) -> ModulesConfig:
18+
with open(conf_path, "rb") as f:
19+
data = tomli.load(f)
20+
return ModulesConfig(**data)

oqtopus/core/modules_registry.py

Lines changed: 0 additions & 25 deletions
This file was deleted.

oqtopus/default_config.conf

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[[modules]]
2+
name = "OPENGIS.ch Wastewater"
3+
organisation = "opengisch"
4+
repository = "wastewater"
5+
6+
[[modules]]
7+
name = "TEKSI Wastewater"
8+
organisation = "teksi"
9+
repository = "wastewater"
10+
11+
[[modules]]
12+
name = "TEKSI District Heating"
13+
organisation = "teksi"
14+
repository = "district_heating"

oqtopus/gui/main_dialog.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
QTreeWidgetItem,
4040
)
4141

42+
from ..core.module import Module
4243
from ..core.package_prepare_task import PackagePrepareTask
4344
from ..libs import pgserviceparser
4445
from ..libs.pum.config import PumConfig
@@ -60,7 +61,7 @@ class MainDialog(QDialog, DIALOG_UI):
6061
COLOR_GREEN = QColor(12, 167, 137)
6162
COLOR_WARNING = QColor(255, 165, 0)
6263

63-
def __init__(self, modules_registry, parent=None):
64+
def __init__(self, modules_config, parent=None):
6465
QDialog.__init__(self, parent)
6566
self.setupUi(self)
6667

@@ -71,7 +72,7 @@ def __init__(self, modules_registry, parent=None):
7172
self.buttonBox.rejected.connect(self.__closeDialog)
7273
self.buttonBox.helpRequested.connect(self.__helpRequested)
7374

74-
self.__modules_registry = modules_registry
75+
self.__modules_config = modules_config
7576
self.__current_module = None
7677

7778
self.__database_connection = None
@@ -107,7 +108,10 @@ def __init__(self, modules_registry, parent=None):
107108
def __initGuiModules(self):
108109
self.module_module_comboBox.clear()
109110
self.module_module_comboBox.addItem(self.tr("Please select a module"), None)
110-
for module in self.__modules_registry.modules():
111+
for config_module in self.__modules_config.modules:
112+
module = Module(
113+
config_module.name, config_module.organisation, config_module.repository
114+
)
111115
self.module_module_comboBox.addItem(module.name, module)
112116

113117
self.module_latestVersion_label.setText("")

oqtopus/oqtopus_plugin.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
import os
2+
13
from qgis.PyQt.QtGui import QIcon
24
from qgis.PyQt.QtWidgets import QAction, QApplication
35

4-
from .core.module import Module
5-
from .core.modules_registry import ModulesRegistry
6+
from .core.modules_config import load_modules_from_conf
67
from .gui.about_dialog import AboutDialog
78
from .gui.main_dialog import MainDialog
89
from .utils.plugin_utils import PluginUtils, logger
@@ -32,18 +33,8 @@ def __init__(self, iface):
3233
self.actions = []
3334
self.main_menu_name = self.tr(f"&{PluginUtils.PLUGIN_NAME}")
3435

35-
self.modules_registry = ModulesRegistry()
36-
self.modules_registry.register_module(
37-
Module(name="OPENGIS.ch Wastewater", organisation="opengisch", repository="wastewater")
38-
)
39-
self.modules_registry.register_module(
40-
Module(name="TEKSI Wastewater", organisation="teksi", repository="wastewater")
41-
)
42-
self.modules_registry.register_module(
43-
Module(
44-
name="TEKSI District Heating", organisation="teksi", repository="district_heating"
45-
)
46-
)
36+
conf_path = os.path.join(os.path.dirname(__file__), "../default_config.conf")
37+
self.modules_config = load_modules_from_conf(conf_path)
4738

4839
# noinspection PyMethodMayBeStatic
4940
def tr(self, source_text):
@@ -163,7 +154,7 @@ def unload(self):
163154
self.iface.removeToolBarIcon(action)
164155

165156
def show_main_dialog(self):
166-
main_dialog = MainDialog(self.modules_registry, self.iface.mainWindow())
157+
main_dialog = MainDialog(self.modules_config, self.iface.mainWindow())
167158
main_dialog.exec_()
168159

169160
def show_logs_folder(self):

oqtopus/utils/qt_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
***************************************************************************/
1717
"""
1818

19-
from PyQt5.QtWidgets import QApplication
19+
from qgis.PyQt.QtWidgets import QApplication
2020

2121

2222
class OverrideCursor:

0 commit comments

Comments
 (0)