molde 0.1.11__py3-none-any.whl → 0.1.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- molde/__init__.py +12 -12
- molde/__main__.py +81 -81
- molde/actors/__init__.py +5 -5
- molde/actors/common_symbols_actor.py +148 -164
- molde/actors/ghost_actor.py +12 -12
- molde/actors/lines_actor.py +31 -31
- molde/actors/round_points_actor.py +7 -7
- molde/actors/square_points_actor.py +32 -32
- molde/colors/__init__.py +1 -1
- molde/colors/color.py +150 -150
- molde/colors/color_names.py +124 -124
- molde/interactor_styles/__init__.py +2 -2
- molde/interactor_styles/arcball_camera_style.py +288 -288
- molde/interactor_styles/box_selection_style.py +87 -87
- molde/main_window.ui +864 -864
- molde/pickers/__init__.py +2 -2
- molde/pickers/cell_area_picker.py +61 -61
- molde/pickers/cell_property_area_picker.py +84 -84
- molde/poly_data/__init__.py +13 -13
- molde/poly_data/lines_data.py +23 -23
- molde/poly_data/vertices_data.py +24 -24
- molde/render_widgets/__init__.py +2 -2
- molde/render_widgets/animated_render_widget.py +164 -164
- molde/render_widgets/common_render_widget.py +429 -429
- molde/stylesheets/__init__.py +122 -122
- molde/stylesheets/common.qss +15 -15
- molde/stylesheets/create_color_page.py +61 -61
- molde/stylesheets/mainwindow.ui +646 -646
- molde/stylesheets/qcheckbox.qss +23 -23
- molde/stylesheets/qinputs.qss +81 -81
- molde/stylesheets/qlayouts.qss +23 -23
- molde/stylesheets/qmenubar.qss +12 -12
- molde/stylesheets/qprogressbar.qss +11 -11
- molde/stylesheets/qpushbutton.qss +89 -89
- molde/stylesheets/qradiobutton.qss +30 -30
- molde/stylesheets/qscrollbar.qss +29 -29
- molde/stylesheets/qslider.qss +61 -61
- molde/stylesheets/qtablewidget.qss +27 -27
- molde/stylesheets/qtabwidget.qss +28 -28
- molde/stylesheets/qtoolbar.qss +63 -63
- molde/stylesheets/qtoolbuttons.qss +14 -14
- molde/stylesheets/qtreewidget.qss +25 -25
- molde/ui_files/messages/new_loading_window.ui +73 -73
- molde/utils/__init__.py +8 -8
- molde/utils/format_sequences.py +44 -44
- molde/utils/poly_data_utils.py +66 -66
- molde/utils/tree_info.py +52 -52
- molde/windows/loading_window.py +189 -189
- {molde-0.1.11.dist-info → molde-0.1.12.dist-info}/METADATA +1 -1
- molde-0.1.12.dist-info/RECORD +68 -0
- molde-0.1.11.dist-info/RECORD +0 -68
- {molde-0.1.11.dist-info → molde-0.1.12.dist-info}/WHEEL +0 -0
molde/pickers/__init__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
from .cell_area_picker import CellAreaPicker
|
2
|
-
from .cell_property_area_picker import CellPropertyAreaPicker
|
1
|
+
from .cell_area_picker import CellAreaPicker
|
2
|
+
from .cell_property_area_picker import CellPropertyAreaPicker
|
@@ -1,61 +1,61 @@
|
|
1
|
-
from vtkmodules.vtkCommonDataModel import vtkPolyData
|
2
|
-
from vtkmodules.vtkFiltersGeneral import vtkExtractSelectedFrustum
|
3
|
-
from vtkmodules.vtkRenderingCore import (
|
4
|
-
vtkActor,
|
5
|
-
vtkAreaPicker,
|
6
|
-
vtkCellPicker,
|
7
|
-
vtkPropPicker,
|
8
|
-
vtkRenderer,
|
9
|
-
)
|
10
|
-
|
11
|
-
|
12
|
-
class CellAreaPicker(vtkPropPicker):
|
13
|
-
def __init__(self) -> None:
|
14
|
-
super().__init__()
|
15
|
-
self._picked_cells = []
|
16
|
-
self._picked_actors = []
|
17
|
-
self._picked = dict()
|
18
|
-
|
19
|
-
self._area_picker = vtkAreaPicker()
|
20
|
-
self._cell_picker = vtkCellPicker()
|
21
|
-
self._cell_picker.SetTolerance(0.01)
|
22
|
-
|
23
|
-
def pick(self, x: float, y: float, z: float, renderer: vtkRenderer):
|
24
|
-
self._picked.clear()
|
25
|
-
self._cell_picker.Pick(x, y, z, renderer)
|
26
|
-
self._picked[self._cell_picker.GetActor()] = [self._cell_picker.GetCellId()]
|
27
|
-
|
28
|
-
# # select a small area around the mouse click
|
29
|
-
# delta = 10
|
30
|
-
# self.area_pick(x-delta, y-delta, x+delta, y+delta, renderer)
|
31
|
-
|
32
|
-
# # keep at most a single cell selected for every picked actor
|
33
|
-
# for actor, selection in self._picked.items():
|
34
|
-
# self._picked[actor] = selection[:1]
|
35
|
-
|
36
|
-
def area_pick(
|
37
|
-
self, x0: float, y0: float, x1: float, y1: float, renderer: vtkRenderer
|
38
|
-
):
|
39
|
-
self._picked.clear()
|
40
|
-
self._area_picker.AreaPick(x0, y0, x1, y1, renderer)
|
41
|
-
extractor = vtkExtractSelectedFrustum()
|
42
|
-
extractor.SetFrustum(self._area_picker.GetFrustum())
|
43
|
-
|
44
|
-
for actor in self._area_picker.GetProp3Ds():
|
45
|
-
if not isinstance(actor, vtkActor):
|
46
|
-
continue
|
47
|
-
|
48
|
-
data: vtkPolyData = actor.GetMapper().GetInput()
|
49
|
-
if data is None:
|
50
|
-
continue
|
51
|
-
|
52
|
-
cells = []
|
53
|
-
for i in range(data.GetNumberOfCells()):
|
54
|
-
bounds = [0, 0, 0, 0, 0, 0]
|
55
|
-
data.GetCellBounds(i, bounds)
|
56
|
-
if extractor.OverallBoundsTest(bounds):
|
57
|
-
cells.append(i)
|
58
|
-
self._picked[actor] = cells
|
59
|
-
|
60
|
-
def get_picked(self):
|
61
|
-
return dict(self._picked)
|
1
|
+
from vtkmodules.vtkCommonDataModel import vtkPolyData
|
2
|
+
from vtkmodules.vtkFiltersGeneral import vtkExtractSelectedFrustum
|
3
|
+
from vtkmodules.vtkRenderingCore import (
|
4
|
+
vtkActor,
|
5
|
+
vtkAreaPicker,
|
6
|
+
vtkCellPicker,
|
7
|
+
vtkPropPicker,
|
8
|
+
vtkRenderer,
|
9
|
+
)
|
10
|
+
|
11
|
+
|
12
|
+
class CellAreaPicker(vtkPropPicker):
|
13
|
+
def __init__(self) -> None:
|
14
|
+
super().__init__()
|
15
|
+
self._picked_cells = []
|
16
|
+
self._picked_actors = []
|
17
|
+
self._picked = dict()
|
18
|
+
|
19
|
+
self._area_picker = vtkAreaPicker()
|
20
|
+
self._cell_picker = vtkCellPicker()
|
21
|
+
self._cell_picker.SetTolerance(0.01)
|
22
|
+
|
23
|
+
def pick(self, x: float, y: float, z: float, renderer: vtkRenderer):
|
24
|
+
self._picked.clear()
|
25
|
+
self._cell_picker.Pick(x, y, z, renderer)
|
26
|
+
self._picked[self._cell_picker.GetActor()] = [self._cell_picker.GetCellId()]
|
27
|
+
|
28
|
+
# # select a small area around the mouse click
|
29
|
+
# delta = 10
|
30
|
+
# self.area_pick(x-delta, y-delta, x+delta, y+delta, renderer)
|
31
|
+
|
32
|
+
# # keep at most a single cell selected for every picked actor
|
33
|
+
# for actor, selection in self._picked.items():
|
34
|
+
# self._picked[actor] = selection[:1]
|
35
|
+
|
36
|
+
def area_pick(
|
37
|
+
self, x0: float, y0: float, x1: float, y1: float, renderer: vtkRenderer
|
38
|
+
):
|
39
|
+
self._picked.clear()
|
40
|
+
self._area_picker.AreaPick(x0, y0, x1, y1, renderer)
|
41
|
+
extractor = vtkExtractSelectedFrustum()
|
42
|
+
extractor.SetFrustum(self._area_picker.GetFrustum())
|
43
|
+
|
44
|
+
for actor in self._area_picker.GetProp3Ds():
|
45
|
+
if not isinstance(actor, vtkActor):
|
46
|
+
continue
|
47
|
+
|
48
|
+
data: vtkPolyData = actor.GetMapper().GetInput()
|
49
|
+
if data is None:
|
50
|
+
continue
|
51
|
+
|
52
|
+
cells = []
|
53
|
+
for i in range(data.GetNumberOfCells()):
|
54
|
+
bounds = [0, 0, 0, 0, 0, 0]
|
55
|
+
data.GetCellBounds(i, bounds)
|
56
|
+
if extractor.OverallBoundsTest(bounds):
|
57
|
+
cells.append(i)
|
58
|
+
self._picked[actor] = cells
|
59
|
+
|
60
|
+
def get_picked(self):
|
61
|
+
return dict(self._picked)
|
@@ -1,84 +1,84 @@
|
|
1
|
-
from vtkmodules.vtkCommonDataModel import vtkPolyData
|
2
|
-
from vtkmodules.vtkFiltersGeneral import vtkExtractSelectedFrustum
|
3
|
-
from vtkmodules.vtkRenderingCore import (
|
4
|
-
vtkActor,
|
5
|
-
vtkAreaPicker,
|
6
|
-
vtkCellPicker,
|
7
|
-
vtkPropPicker,
|
8
|
-
vtkRenderer,
|
9
|
-
)
|
10
|
-
|
11
|
-
|
12
|
-
class CellPropertyAreaPicker(vtkPropPicker):
|
13
|
-
def __init__(self, property_name: str, desired_actor: vtkActor) -> None:
|
14
|
-
super().__init__()
|
15
|
-
|
16
|
-
self.property_name = property_name
|
17
|
-
self.desired_actor = desired_actor
|
18
|
-
self._picked = set()
|
19
|
-
|
20
|
-
self._cell_picker = vtkCellPicker()
|
21
|
-
self._area_picker = vtkAreaPicker()
|
22
|
-
self._cell_picker.SetTolerance(0.005)
|
23
|
-
|
24
|
-
def pick(self, x: float, y: float, z: float, renderer: vtkRenderer):
|
25
|
-
# maybe a behaviour like the one implemented in CellAreaPicker
|
26
|
-
# would fit nicely here
|
27
|
-
self._picked.clear()
|
28
|
-
self._cell_picker.Pick(x, y, z, renderer)
|
29
|
-
|
30
|
-
if self.desired_actor != self._cell_picker.GetActor():
|
31
|
-
return self.get_picked()
|
32
|
-
|
33
|
-
data: vtkPolyData = self.desired_actor.GetMapper().GetInput()
|
34
|
-
if data is None:
|
35
|
-
return self.get_picked()
|
36
|
-
|
37
|
-
property_array = data.GetCellData().GetArray(self.property_name)
|
38
|
-
if property_array is None:
|
39
|
-
return self.get_picked()
|
40
|
-
|
41
|
-
cell = self._cell_picker.GetCellId()
|
42
|
-
property_val = property_array.GetValue(cell)
|
43
|
-
self._picked.add(property_val)
|
44
|
-
return self.get_picked()
|
45
|
-
|
46
|
-
def area_pick(
|
47
|
-
self, x0: float, y0: float, x1: float, y1: float, renderer: vtkRenderer
|
48
|
-
):
|
49
|
-
self._picked.clear()
|
50
|
-
self._area_picker.AreaPick(x0, y0, x1, y1, renderer)
|
51
|
-
extractor = vtkExtractSelectedFrustum()
|
52
|
-
extractor.SetFrustum(self._area_picker.GetFrustum())
|
53
|
-
|
54
|
-
if self.desired_actor not in self._area_picker.GetProp3Ds():
|
55
|
-
return self.get_picked()
|
56
|
-
|
57
|
-
data: vtkPolyData = self.desired_actor.GetMapper().GetInput()
|
58
|
-
if data is None:
|
59
|
-
return self.get_picked()
|
60
|
-
|
61
|
-
property_array = data.GetCellData().GetArray(self.property_name)
|
62
|
-
if property_array is None:
|
63
|
-
return self.get_picked()
|
64
|
-
|
65
|
-
if property_array.GetNumberOfValues() < data.GetNumberOfCells():
|
66
|
-
return self.get_picked()
|
67
|
-
|
68
|
-
for cell in range(data.GetNumberOfCells()):
|
69
|
-
property_val = property_array.GetValue(cell)
|
70
|
-
|
71
|
-
# if the property was already picked
|
72
|
-
# we don't even need to check if the cell
|
73
|
-
# is inside the selection box
|
74
|
-
if property_val in self._picked:
|
75
|
-
continue
|
76
|
-
|
77
|
-
bounds = [0, 0, 0, 0, 0, 0]
|
78
|
-
data.GetCellBounds(cell, bounds)
|
79
|
-
if extractor.OverallBoundsTest(bounds):
|
80
|
-
self._picked.add(property_val)
|
81
|
-
return self.get_picked()
|
82
|
-
|
83
|
-
def get_picked(self):
|
84
|
-
return set(self._picked)
|
1
|
+
from vtkmodules.vtkCommonDataModel import vtkPolyData
|
2
|
+
from vtkmodules.vtkFiltersGeneral import vtkExtractSelectedFrustum
|
3
|
+
from vtkmodules.vtkRenderingCore import (
|
4
|
+
vtkActor,
|
5
|
+
vtkAreaPicker,
|
6
|
+
vtkCellPicker,
|
7
|
+
vtkPropPicker,
|
8
|
+
vtkRenderer,
|
9
|
+
)
|
10
|
+
|
11
|
+
|
12
|
+
class CellPropertyAreaPicker(vtkPropPicker):
|
13
|
+
def __init__(self, property_name: str, desired_actor: vtkActor) -> None:
|
14
|
+
super().__init__()
|
15
|
+
|
16
|
+
self.property_name = property_name
|
17
|
+
self.desired_actor = desired_actor
|
18
|
+
self._picked = set()
|
19
|
+
|
20
|
+
self._cell_picker = vtkCellPicker()
|
21
|
+
self._area_picker = vtkAreaPicker()
|
22
|
+
self._cell_picker.SetTolerance(0.005)
|
23
|
+
|
24
|
+
def pick(self, x: float, y: float, z: float, renderer: vtkRenderer):
|
25
|
+
# maybe a behaviour like the one implemented in CellAreaPicker
|
26
|
+
# would fit nicely here
|
27
|
+
self._picked.clear()
|
28
|
+
self._cell_picker.Pick(x, y, z, renderer)
|
29
|
+
|
30
|
+
if self.desired_actor != self._cell_picker.GetActor():
|
31
|
+
return self.get_picked()
|
32
|
+
|
33
|
+
data: vtkPolyData = self.desired_actor.GetMapper().GetInput()
|
34
|
+
if data is None:
|
35
|
+
return self.get_picked()
|
36
|
+
|
37
|
+
property_array = data.GetCellData().GetArray(self.property_name)
|
38
|
+
if property_array is None:
|
39
|
+
return self.get_picked()
|
40
|
+
|
41
|
+
cell = self._cell_picker.GetCellId()
|
42
|
+
property_val = property_array.GetValue(cell)
|
43
|
+
self._picked.add(property_val)
|
44
|
+
return self.get_picked()
|
45
|
+
|
46
|
+
def area_pick(
|
47
|
+
self, x0: float, y0: float, x1: float, y1: float, renderer: vtkRenderer
|
48
|
+
):
|
49
|
+
self._picked.clear()
|
50
|
+
self._area_picker.AreaPick(x0, y0, x1, y1, renderer)
|
51
|
+
extractor = vtkExtractSelectedFrustum()
|
52
|
+
extractor.SetFrustum(self._area_picker.GetFrustum())
|
53
|
+
|
54
|
+
if self.desired_actor not in self._area_picker.GetProp3Ds():
|
55
|
+
return self.get_picked()
|
56
|
+
|
57
|
+
data: vtkPolyData = self.desired_actor.GetMapper().GetInput()
|
58
|
+
if data is None:
|
59
|
+
return self.get_picked()
|
60
|
+
|
61
|
+
property_array = data.GetCellData().GetArray(self.property_name)
|
62
|
+
if property_array is None:
|
63
|
+
return self.get_picked()
|
64
|
+
|
65
|
+
if property_array.GetNumberOfValues() < data.GetNumberOfCells():
|
66
|
+
return self.get_picked()
|
67
|
+
|
68
|
+
for cell in range(data.GetNumberOfCells()):
|
69
|
+
property_val = property_array.GetValue(cell)
|
70
|
+
|
71
|
+
# if the property was already picked
|
72
|
+
# we don't even need to check if the cell
|
73
|
+
# is inside the selection box
|
74
|
+
if property_val in self._picked:
|
75
|
+
continue
|
76
|
+
|
77
|
+
bounds = [0, 0, 0, 0, 0, 0]
|
78
|
+
data.GetCellBounds(cell, bounds)
|
79
|
+
if extractor.OverallBoundsTest(bounds):
|
80
|
+
self._picked.add(property_val)
|
81
|
+
return self.get_picked()
|
82
|
+
|
83
|
+
def get_picked(self):
|
84
|
+
return set(self._picked)
|
molde/poly_data/__init__.py
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
from .lines_data import LinesData
|
2
|
-
from .vertices_data import VerticesData
|
3
|
-
from .arrows import (
|
4
|
-
create_arrow_source,
|
5
|
-
create_long_arrow_source,
|
6
|
-
create_double_arrow_source,
|
7
|
-
create_outwards_arrow_source,
|
8
|
-
)
|
9
|
-
|
10
|
-
from .simple_shapes import (
|
11
|
-
create_cone_source,
|
12
|
-
create_cube_source,
|
13
|
-
)
|
1
|
+
from .lines_data import LinesData
|
2
|
+
from .vertices_data import VerticesData
|
3
|
+
from .arrows import (
|
4
|
+
create_arrow_source,
|
5
|
+
create_long_arrow_source,
|
6
|
+
create_double_arrow_source,
|
7
|
+
create_outwards_arrow_source,
|
8
|
+
)
|
9
|
+
|
10
|
+
from .simple_shapes import (
|
11
|
+
create_cone_source,
|
12
|
+
create_cube_source,
|
13
|
+
)
|
molde/poly_data/lines_data.py
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
from vtkmodules.vtkCommonCore import vtkPoints
|
2
|
-
from vtkmodules.vtkCommonDataModel import VTK_LINE, vtkPolyData
|
3
|
-
|
4
|
-
|
5
|
-
class LinesData(vtkPolyData):
|
6
|
-
def __init__(self, lines_list) -> None:
|
7
|
-
super().__init__()
|
8
|
-
|
9
|
-
self.lines_list = lines_list
|
10
|
-
self.build()
|
11
|
-
|
12
|
-
def build(self):
|
13
|
-
points = vtkPoints()
|
14
|
-
self.Allocate(len(self.lines_list))
|
15
|
-
|
16
|
-
current_point = 0
|
17
|
-
for x0, y0, z0, x1, y1, z1 in self.lines_list:
|
18
|
-
points.InsertPoint(current_point, x0, y0, z0)
|
19
|
-
points.InsertPoint(current_point + 1, x1, y1, z1)
|
20
|
-
self.InsertNextCell(VTK_LINE, 2, [current_point, current_point + 1])
|
21
|
-
current_point += 2
|
22
|
-
|
23
|
-
self.SetPoints(points)
|
1
|
+
from vtkmodules.vtkCommonCore import vtkPoints
|
2
|
+
from vtkmodules.vtkCommonDataModel import VTK_LINE, vtkPolyData
|
3
|
+
|
4
|
+
|
5
|
+
class LinesData(vtkPolyData):
|
6
|
+
def __init__(self, lines_list) -> None:
|
7
|
+
super().__init__()
|
8
|
+
|
9
|
+
self.lines_list = lines_list
|
10
|
+
self.build()
|
11
|
+
|
12
|
+
def build(self):
|
13
|
+
points = vtkPoints()
|
14
|
+
self.Allocate(len(self.lines_list))
|
15
|
+
|
16
|
+
current_point = 0
|
17
|
+
for x0, y0, z0, x1, y1, z1 in self.lines_list:
|
18
|
+
points.InsertPoint(current_point, x0, y0, z0)
|
19
|
+
points.InsertPoint(current_point + 1, x1, y1, z1)
|
20
|
+
self.InsertNextCell(VTK_LINE, 2, [current_point, current_point + 1])
|
21
|
+
current_point += 2
|
22
|
+
|
23
|
+
self.SetPoints(points)
|
molde/poly_data/vertices_data.py
CHANGED
@@ -1,24 +1,24 @@
|
|
1
|
-
from vtkmodules.vtkCommonCore import vtkPoints
|
2
|
-
from vtkmodules.vtkCommonDataModel import VTK_VERTEX, vtkPolyData
|
3
|
-
|
4
|
-
|
5
|
-
class VerticesData(vtkPolyData):
|
6
|
-
"""
|
7
|
-
This class describes a polydata composed by a set of points.
|
8
|
-
"""
|
9
|
-
|
10
|
-
def __init__(self, points_list: list[tuple[int, int, int]]) -> None:
|
11
|
-
super().__init__()
|
12
|
-
|
13
|
-
self.points_list = points_list
|
14
|
-
self.build()
|
15
|
-
|
16
|
-
def build(self):
|
17
|
-
points = vtkPoints()
|
18
|
-
self.Allocate(len(self.points_list))
|
19
|
-
|
20
|
-
for i, (x, y, z) in enumerate(self.points_list):
|
21
|
-
points.InsertNextPoint(x, y, z)
|
22
|
-
self.InsertNextCell(VTK_VERTEX, 1, [i])
|
23
|
-
|
24
|
-
self.SetPoints(points)
|
1
|
+
from vtkmodules.vtkCommonCore import vtkPoints
|
2
|
+
from vtkmodules.vtkCommonDataModel import VTK_VERTEX, vtkPolyData
|
3
|
+
|
4
|
+
|
5
|
+
class VerticesData(vtkPolyData):
|
6
|
+
"""
|
7
|
+
This class describes a polydata composed by a set of points.
|
8
|
+
"""
|
9
|
+
|
10
|
+
def __init__(self, points_list: list[tuple[int, int, int]]) -> None:
|
11
|
+
super().__init__()
|
12
|
+
|
13
|
+
self.points_list = points_list
|
14
|
+
self.build()
|
15
|
+
|
16
|
+
def build(self):
|
17
|
+
points = vtkPoints()
|
18
|
+
self.Allocate(len(self.points_list))
|
19
|
+
|
20
|
+
for i, (x, y, z) in enumerate(self.points_list):
|
21
|
+
points.InsertNextPoint(x, y, z)
|
22
|
+
self.InsertNextCell(VTK_VERTEX, 1, [i])
|
23
|
+
|
24
|
+
self.SetPoints(points)
|
molde/render_widgets/__init__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
from .animated_render_widget import AnimatedRenderWidget
|
2
|
-
from .common_render_widget import CommonRenderWidget
|
1
|
+
from .animated_render_widget import AnimatedRenderWidget
|
2
|
+
from .common_render_widget import CommonRenderWidget
|