• 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

34.92
/tool_fraction_analysis/fraction_analysis.py
1
from qgis.PyQt.QtCore import pyqtSlot
1✔
2
from qgis.PyQt.QtCore import Qt
1✔
3
from threedi_results_analysis.threedi_plugin_model import ThreeDiGridItem
1✔
4
from threedi_results_analysis.threedi_plugin_model import ThreeDiResultItem
1✔
5
from threedi_results_analysis.threedi_plugin_tool import ThreeDiPluginTool
1✔
6
from threedi_results_analysis.tool_fraction_analysis.fraction_dock_view import (
1✔
7
    FractionDockWidget,
8
)
9
from threedi_results_analysis.tool_fraction_analysis.fraction_utils import (
1✔
10
    has_wq_results,
11
)
12

13
import os
1✔
14
import qgis
1✔
15

16

17
class FractionAnalysis(ThreeDiPluginTool):
1✔
18

19
    def __init__(self, iface, model):
1✔
20
        super().__init__()
×
21

22
        self.iface = iface
×
23
        self.model = model
×
24
        self.icon_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "icons", "icon_fraction.png")
×
25
        self.menu_text = "Fraction analysis tool"
×
26

27
        self.dock_widgets = []
×
28
        self.widget_nr = 0
×
29

30
    def on_unload(self):
1✔
31
        """
32
        on close of graph plugin
33
        """
34
        for widget in self.dock_widgets:
×
35
            widget.close()
×
36
            del widget
×
37
        self.dock_widgets = []
×
38

39
    def on_close_child_widget(self, widget_nr):
1✔
40
        """Cleanup necessary items here when plugin dockwidget is closed"""
41
        for i in range(0, len(self.dock_widgets)):
×
42
            widget = self.dock_widgets[i]
×
43
            if widget.nr == widget_nr:
×
44
                widget.closingWidget.disconnect(self.on_close_child_widget)
×
45
                del self.dock_widgets[i]
×
46
                return
×
47

48
    @pyqtSlot(ThreeDiResultItem)
1✔
49
    def result_added(self, result_item: ThreeDiResultItem):
1✔
50
        if has_wq_results(result_item):
×
51
            self.action_icon.setEnabled(True)
×
52

53
        for dock_widget in self.dock_widgets:
×
54
            dock_widget.result_added(result_item)
×
55

56
    @pyqtSlot(ThreeDiResultItem)
1✔
57
    def result_removed(self, removed_result: ThreeDiResultItem):
1✔
58
        for dock_widget in self.dock_widgets:
×
59
            dock_widget.result_removed(removed_result)
×
60

61
        for result_item in self.model.get_results(checked_only=False):
×
62
            if has_wq_results(result_item) and removed_result.id != result_item.id:
×
63
                self.action_icon.setEnabled(True)
×
64
                return
×
65
        self.action_icon.setEnabled(False)
×
66

67
    @pyqtSlot(ThreeDiResultItem)
1✔
68
    def result_changed(self, result_item: ThreeDiResultItem):
1✔
69
        for dock_widget in self.dock_widgets:
×
70
            dock_widget.result_changed(result_item)
×
71

72
    @pyqtSlot(ThreeDiGridItem)
1✔
73
    def grid_changed(self, grid_item: ThreeDiGridItem):
1✔
74
        for dock_widget in self.dock_widgets:
×
75
            dock_widget.grid_changed(grid_item)
×
76

77
    def run(self):
1✔
78
        new_widget = FractionDockWidget(
×
79
            iface=self.iface,
80
            nr=self.widget_nr,
81
            model=self.model,
82
        )
83
        self.dock_widgets.append(new_widget)
×
84

85
        self.widget_nr += 1
×
86

87
        # connect cleanup on closing of dockwidget
88
        new_widget.closingWidget.connect(self.on_close_child_widget)
×
89

90
        # show the dockwidget
NEW
91
        self.iface.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, new_widget)
×
92

93
        # make stack of graph widgets (instead of next to each other)
94
        if len(self.dock_widgets) > 1:
×
95
            window = qgis.core.QgsApplication.activeWindow()
×
96
            window.tabifyDockWidget(self.dock_widgets[0], new_widget)
×
97

98
        new_widget.show()
×
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