• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

nens / ThreeDiToolbox / #2589

19 Sep 2025 08:50AM UTC coverage: 35.01% (-0.1%) from 35.146%
#2589

push

coveralls-python

web-flow
Merge 38792c162 into f6f4be1e7

62 of 260 new or added lines in 40 files covered. (23.85%)

6 existing lines in 5 files now uncovered.

4859 of 13879 relevant lines covered (35.01%)

0.35 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

45.71
/tool_sideview/sideview.py
1
from qgis.PyQt.QtCore import Qt, pyqtSlot
1✔
2
from threedi_results_analysis.tool_sideview.sideview_view import SideViewDockWidget
1✔
3
from threedi_results_analysis.threedi_plugin_model import ThreeDiGridItem, ThreeDiResultItem
1✔
4
from threedi_results_analysis.threedi_plugin_tool import ThreeDiPluginTool
1✔
5
import qgis
1✔
6
import os
1✔
7

8

9
class ThreeDiSideView(ThreeDiPluginTool):
1✔
10

11
    def __init__(self, iface, model):
1✔
12
        super().__init__()
1✔
13

14
        self.iface = iface
1✔
15
        self.model = model
1✔
16
        self.icon_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "icons", "icon_route.png")
1✔
17
        self.menu_text = u"Side view tool"
1✔
18
        self.dock_widgets = []
1✔
19
        self.widget_nr = 0
1✔
20

21
    def on_unload(self):
1✔
22
        """
23
        on close of sideview plugin
24
        """
25
        for widget in self.dock_widgets:
×
26
            widget.close()
×
27

28
    @pyqtSlot(ThreeDiGridItem)
1✔
29
    def result_added(self, item: ThreeDiResultItem):
1✔
30
        for dock_widget in self.dock_widgets:
×
31
            dock_widget.result_added(item)
×
32

33
    @pyqtSlot(ThreeDiGridItem)
1✔
34
    def result_removed(self, item: ThreeDiResultItem):
1✔
35
        for dock_widget in self.dock_widgets:
×
36
            dock_widget.result_removed(item)
×
37

38
    @pyqtSlot(ThreeDiGridItem)
1✔
39
    def result_changed(self, item: ThreeDiResultItem):
1✔
40
        for dock_widget in self.dock_widgets:
×
41
            dock_widget.result_changed(item)
×
42

43
    @pyqtSlot(ThreeDiGridItem)
1✔
44
    def grid_added(self, item: ThreeDiGridItem):
1✔
45
        for dock_widget in self.dock_widgets:
×
46
            dock_widget.grid_added(item)
×
47
        self.action_icon.setEnabled(self.model.number_of_grids() > 0)
×
48

49
    @pyqtSlot(ThreeDiGridItem)
1✔
50
    def grid_removed(self, item: ThreeDiGridItem):
1✔
51
        for dock_widget in self.dock_widgets:
×
52
            dock_widget.grid_removed(item)
×
53

54
    @pyqtSlot(ThreeDiGridItem)
1✔
55
    def grid_changed(self, item: ThreeDiGridItem):
1✔
56
        for dock_widget in self.dock_widgets:
×
57
            dock_widget.grid_changed(item)
×
58

59
    @pyqtSlot()
1✔
60
    def update_waterlevels(self):
1✔
61
        for dock_widget in self.dock_widgets:
×
62
            dock_widget.update_waterlevel()
×
63

64
    def on_close_child_widget(self, widget_nr):
1✔
65
        """Cleanup necessary items here when plugin dockwidget is closed"""
66
        nr = None
×
67

68
        # find widget based on nr
69
        for i in range(0, len(self.dock_widgets)):
×
70
            widget = self.dock_widgets[i]
×
71
            if widget.nr == widget_nr:
×
72
                nr = i
×
73

74
        # close widget
75
        if nr is not None:
×
76
            widget = self.dock_widgets[nr]
×
77
            widget.closingWidget.disconnect(self.on_close_child_widget)
×
78

79
            del self.dock_widgets[nr]
×
80

81
    def run(self):
1✔
82

83
        self.widget_nr += 1
×
84
        new_widget = SideViewDockWidget(
×
85
            self.iface,
86
            nr=self.widget_nr,
87
            model=self.model
88
        )
89
        self.dock_widgets.append(new_widget)
×
90

91
        # connect cleanup on closing of dockwidget
92
        new_widget.closingWidget.connect(self.on_close_child_widget)
×
93

94
        # show the dockwidget
NEW
95
        self.iface.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, new_widget)
×
96

97
        # make stack of dock widgets (instead of next to each other)
98
        if len(self.dock_widgets) > 1:
×
99
            window = qgis.core.QgsApplication.activeWindow()
×
100
            window.tabifyDockWidget(self.dock_widgets[0], new_widget)
×
101

102
        new_widget.show()
×
103

104
        # When loading the first dockwidget, automatically activate first grid
105
        if self.widget_nr == 1:  # just added the first
×
106
            if self.model.get_grids():
×
107
                new_widget.grid_selected(0)
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc