molde 0.1.4__py3-none-any.whl → 0.1.6__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/__main__.py +10 -7
- molde/interactor_styles/box_selection_style.py +27 -10
- molde/render_widgets/common_render_widget.py +1 -1
- molde/stylesheets/__init__.py +2 -0
- molde/stylesheets/qslider.qss +1 -1
- {molde-0.1.4.dist-info → molde-0.1.6.dist-info}/METADATA +1 -2
- {molde-0.1.4.dist-info → molde-0.1.6.dist-info}/RECORD +8 -8
- {molde-0.1.4.dist-info → molde-0.1.6.dist-info}/WHEEL +1 -1
molde/__main__.py
CHANGED
@@ -1,22 +1,21 @@
|
|
1
1
|
import os, sys
|
2
|
-
from
|
3
|
-
from
|
4
|
-
from
|
5
|
-
from qtpy.QtCore import Qt
|
2
|
+
from PySide6.QtWidgets import QMainWindow, QApplication, QMessageBox, QLineEdit, QTableWidgetItem, QPushButton, QLabel, QSlider
|
3
|
+
from PySide6.QtGui import QColor
|
4
|
+
from PySide6.QtCore import Qt
|
6
5
|
from time import time
|
7
6
|
|
8
7
|
from vtkmodules.vtkFiltersSources import vtkCylinderSource
|
9
8
|
from vtkmodules.vtkRenderingCore import vtkPolyDataMapper, vtkActor
|
10
9
|
|
11
|
-
from molde import MOLDE_DIR
|
10
|
+
from molde import MOLDE_DIR, load_ui
|
12
11
|
from molde import stylesheets
|
13
12
|
from molde.render_widgets.common_render_widget import CommonRenderWidget
|
14
13
|
|
15
14
|
|
16
15
|
class Example(QMainWindow):
|
17
16
|
def __init__(self, parent=None) -> None:
|
18
|
-
super().__init__(
|
19
|
-
|
17
|
+
super().__init__()
|
18
|
+
load_ui(MOLDE_DIR / "stylesheets/mainwindow.ui", self, MOLDE_DIR / "stylesheets")
|
20
19
|
self.current_theme = "light"
|
21
20
|
|
22
21
|
self.change_theme_button.clicked.connect(self.change_theme)
|
@@ -36,9 +35,13 @@ class Example(QMainWindow):
|
|
36
35
|
|
37
36
|
self.botao1 = QPushButton()
|
38
37
|
self.label = QLabel("Olha o sapooo")
|
38
|
+
self.slider = QSlider(Qt.Orientation.Horizontal)
|
39
|
+
self.slider.setValue(50)
|
39
40
|
self.botao1.setText("Olha a faca")
|
40
41
|
self.toolbar_2.addWidget(self.label)
|
41
42
|
self.toolbar_2.addWidget(self.botao1)
|
43
|
+
self.toolbar_2.addWidget(self.slider)
|
44
|
+
self.toolbar_2.setDisabled(True)
|
42
45
|
|
43
46
|
item = QTableWidgetItem("fr")
|
44
47
|
item.setBackground(QColor("#FF0000"))
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import numpy as np
|
2
2
|
from vtkmodules.vtkCommonCore import vtkUnsignedCharArray
|
3
|
-
|
4
3
|
from .arcball_camera_style import ArcballCameraInteractorStyle
|
4
|
+
from vtkmodules.util.numpy_support import vtk_to_numpy, numpy_to_vtk
|
5
|
+
|
5
6
|
|
6
7
|
|
7
8
|
class BoxSelectionInteractorStyle(ArcballCameraInteractorStyle):
|
@@ -42,25 +43,41 @@ class BoxSelectionInteractorStyle(ArcballCameraInteractorStyle):
|
|
42
43
|
def update_selection(self):
|
43
44
|
if not self.is_selecting:
|
44
45
|
return
|
45
|
-
|
46
|
+
|
46
47
|
size = self.GetInteractor().GetSize()
|
47
48
|
min_x, max_x = sorted([self._click_position[0], self._mouse_position[0]])
|
48
49
|
min_y, max_y = sorted([self._click_position[1], self._mouse_position[1]])
|
49
50
|
min_x, max_x = np.clip([min_x, max_x], 0, size[0])
|
50
51
|
min_y, max_y = np.clip([min_y, max_y], 0, size[1])
|
51
52
|
|
52
|
-
# Copy the saved screen state and draw over it
|
53
|
-
selected_pixels =
|
54
|
-
|
53
|
+
# Copy the saved screen state, transform to numpy and draw over it
|
54
|
+
selected_pixels = (
|
55
|
+
vtk_to_numpy(self._saved_pixels)
|
56
|
+
.reshape(size[1], size[0], 4)
|
57
|
+
.copy()
|
58
|
+
)
|
55
59
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
+
# Draw the borders
|
61
|
+
line_width = 2
|
62
|
+
selected_pixels[min_y : min_y + line_width, min_x:max_x] = self.selection_color # bottom
|
63
|
+
selected_pixels[max_y : max_y + line_width, min_x:max_x] = self.selection_color # top
|
64
|
+
selected_pixels[min_y:max_y, min_x : min_x + line_width] = self.selection_color # left
|
65
|
+
selected_pixels[min_y:max_y, max_x : max_x + line_width] = self.selection_color # right
|
66
|
+
|
67
|
+
# Fill the box with a transparent color
|
68
|
+
transparency = 0.3
|
69
|
+
def lerp(a, b, t):
|
70
|
+
return t*a + (1-t) * b
|
71
|
+
|
72
|
+
selected_pixels[min_y:max_y, min_x:max_x] = lerp(
|
73
|
+
np.array(self.selection_color),
|
74
|
+
selected_pixels[min_y:max_y, min_x:max_x],
|
75
|
+
transparency
|
76
|
+
)
|
60
77
|
|
61
78
|
renderWindow = self.GetInteractor().GetRenderWindow()
|
62
79
|
renderWindow.SetRGBACharPixelData(
|
63
|
-
0, 0, size[0] - 1, size[1] - 1, selected_pixels, 0
|
80
|
+
0, 0, size[0] - 1, size[1] - 1, numpy_to_vtk(selected_pixels.reshape(-1, 4)), 0
|
64
81
|
)
|
65
82
|
renderWindow.Frame()
|
66
83
|
|
@@ -164,7 +164,7 @@ class CommonRenderWidget(QFrame):
|
|
164
164
|
Supported formats are JPEG, JPG, PNG, BMP, ICO, TIFF, PPM and others.
|
165
165
|
"""
|
166
166
|
image = self.get_screenshot()
|
167
|
-
with open(path, "
|
167
|
+
with open(path, "wb") as file:
|
168
168
|
image.save(file)
|
169
169
|
|
170
170
|
def create_axes(self):
|
molde/stylesheets/__init__.py
CHANGED
@@ -40,6 +40,7 @@ def get_variables(theme:Literal["light", "dark"] = "light") -> dict:
|
|
40
40
|
|
41
41
|
"@disabled-background": color_names.GRAY_8.to_hex(),
|
42
42
|
"@disabled-color": color_names.GRAY_7.to_hex(),
|
43
|
+
"@alternative-disabled-background" : color_names.GRAY_6.to_hex(),
|
43
44
|
|
44
45
|
"@hover-arrow-color": color_names.GRAY_8.to_hex(),
|
45
46
|
"@arrow-up-image-icon": str(MOLDE_DIR / "icons/arrow_up_light_theme.svg").replace("\\", "/"),
|
@@ -77,6 +78,7 @@ def get_variables(theme:Literal["light", "dark"] = "light") -> dict:
|
|
77
78
|
|
78
79
|
"@disabled-background": color_names.GRAY_0.to_hex(),
|
79
80
|
"@disabled-color": color_names.GRAY_4.to_hex(),
|
81
|
+
"@alternative-disabled-background" : color_names.GRAY_2.to_hex(),
|
80
82
|
|
81
83
|
"@hover-arrow-color": color_names.GRAY_1.to_hex(),
|
82
84
|
"@arrow-up-image-icon": str(MOLDE_DIR / "icons/arrow_up_dark_theme.svg").replace("\\", "/"),
|
molde/stylesheets/qslider.qss
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: molde
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.6
|
4
4
|
Summary:
|
5
5
|
Author: André Fernandes
|
6
6
|
Author-email: fpf.andre@gmail.com
|
@@ -12,7 +12,6 @@ Classifier: Programming Language :: Python :: 3.12
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.13
|
13
13
|
Requires-Dist: moviepy (>=1.0.3,<2.0.0)
|
14
14
|
Requires-Dist: numpy (>=2.0,<3.0)
|
15
|
-
Requires-Dist: pyside6 (>=6.8.1,<7.0.0) ; python_version >= "3.10" and python_version < "3.14"
|
16
15
|
Requires-Dist: qtpy (>=2.4.2,<3.0.0)
|
17
16
|
Requires-Dist: vtk (>=9.3.1,<10.0.0)
|
18
17
|
Description-Content-Type: text/markdown
|
@@ -1,5 +1,5 @@
|
|
1
1
|
molde/__init__.py,sha256=yzVoIVI6c9QqRYLQ3qaEr9wzAiFNkWxdKhjfbrrt5b4,413
|
2
|
-
molde/__main__.py,sha256=
|
2
|
+
molde/__main__.py,sha256=AZfEpn9qxK_WEPKC5_hMwZQjhxJ0SQJHr_v4SerMXjw,2702
|
3
3
|
molde/actors/__init__.py,sha256=hIWbRlKTYleqyVWtcGE7X8Nu9oiZoc2ceRdQ5gZfe3c,266
|
4
4
|
molde/actors/common_symbols_actor.py,sha256=gv6swuV8pje7JyQjGDaRVi8r7Clc7mz6qNN-DRbMY9o,5067
|
5
5
|
molde/actors/ghost_actor.py,sha256=m7fu_bhIZM1kWhObZ_c8t_w9ZsAdDo9SlAT-pYUu_Lg,493
|
@@ -26,7 +26,7 @@ molde/icons/arrow_up_light_theme.svg,sha256=bpon_eUC97Q3nYlHvLPGBDoToUlZq2VHqGJs
|
|
26
26
|
molde/icons/check_box_image.svg,sha256=5rKzmsoHYtp52jPY4TpWK0jd7mPLPTteYfbLUF2RJbY,335
|
27
27
|
molde/interactor_styles/__init__.py,sha256=oIpp9E-g3cFBtfDPi3PbLTwP8zOQWN4Ms2T3sNm6104,124
|
28
28
|
molde/interactor_styles/arcball_camera_style.py,sha256=-lQRztk3XSwdsKKqH6GrDECkL4vCfxjWMRnNXIgBpaY,10392
|
29
|
-
molde/interactor_styles/box_selection_style.py,sha256=
|
29
|
+
molde/interactor_styles/box_selection_style.py,sha256=t19Pffi4zWkdrl8yFOG_bK9_Q_bpsNEtHT6xQ41CwoM,3291
|
30
30
|
molde/main_window.ui,sha256=xxFOehzGpGr5cFshil2gFLpF_r1Bnqjc8paw79PrIq0,25629
|
31
31
|
molde/pickers/__init__.py,sha256=VbpLJU6xEcFsF8fqa6Wmf6OXYunoBWsbJqIAc9wTZDI,107
|
32
32
|
molde/pickers/cell_area_picker.py,sha256=44i5CjbqGeg0zotjfRbz7jDoS0OKtokIdrfFRkTHO98,2053
|
@@ -38,8 +38,8 @@ molde/poly_data/simple_shapes.py,sha256=h43qE-PDxY9d3pZ6B0_XQ0hBFYGHxGppACQsJrJD
|
|
38
38
|
molde/poly_data/vertices_data.py,sha256=jqmEhVdb3-qh_kIjCb0s0Cljx1FFY3NLUOuFa4sGA1Y,673
|
39
39
|
molde/render_widgets/__init__.py,sha256=SOU9bax48D2bP_zhtF_o_Yh7HAK4clIPcjxfjYOnSVM,110
|
40
40
|
molde/render_widgets/animated_render_widget.py,sha256=Ek9a9s4NTVonJJ3BVulI4bxKWRgd9mb9s1xZeImRMa0,5352
|
41
|
-
molde/render_widgets/common_render_widget.py,sha256=
|
42
|
-
molde/stylesheets/__init__.py,sha256=
|
41
|
+
molde/render_widgets/common_render_widget.py,sha256=cFHK-b6DHnNpZ3ZuAx2Zjy-W82UWScED7CM028vHtr0,15457
|
42
|
+
molde/stylesheets/__init__.py,sha256=wf2vFpun9-qcqXKgVhh7JCq9aXlCM9JelgldnOA_rJM,5564
|
43
43
|
molde/stylesheets/common.qss,sha256=ChLGnIIwhUt0q9FH3uYwU7CckGucacTvz4dvjfmnnd0,304
|
44
44
|
molde/stylesheets/create_color_page.py,sha256=t9w_CMQXZXegqv_2_3Te6RW7jV3Q_uixvwYkbiJDjaM,1714
|
45
45
|
molde/stylesheets/mainwindow.ui,sha256=u5z_DOxWtbP7sDDsBykDx1GowYnXI8ab4jwoYETwgQc,17115
|
@@ -51,7 +51,7 @@ molde/stylesheets/qprogressbar.qss,sha256=LkC7WfMz_NAL1GXrfmVnGvLRgirsJjP5XMHDqI
|
|
51
51
|
molde/stylesheets/qpushbutton.qss,sha256=APx_PPy-XiEIWlbVe3hhydxDiBYV-4LiscYRYq7oeew,1983
|
52
52
|
molde/stylesheets/qradiobutton.qss,sha256=1eo-UOm4AlQWm2EWA39C2Efk3vW0j8qrZjrRJfoXohU,585
|
53
53
|
molde/stylesheets/qscrollbar.qss,sha256=8eB-kzQBI_M0IHqPUdig9S0BnH2voyUo0TrfHi-N95s,823
|
54
|
-
molde/stylesheets/qslider.qss,sha256=
|
54
|
+
molde/stylesheets/qslider.qss,sha256=YEo3DMsqew8zqwpGlDqGjsfAPPzMbZMnDxBdLxQWQDg,952
|
55
55
|
molde/stylesheets/qtablewidget.qss,sha256=8uuX07mOKrHM4GCn-66skVZY-KIJ0hPm1yt4FD76Z_Y,481
|
56
56
|
molde/stylesheets/qtabwidget.qss,sha256=Iel50ZzKiP4Uz3UA7X2WAy_a7rxgBZNOV2IcCu2u16g,532
|
57
57
|
molde/stylesheets/qtoolbar.qss,sha256=4rPOZngCTkdaZDgclzpvylxC9BZtsI40aboAoW97BaY,868
|
@@ -63,6 +63,6 @@ molde/utils/format_sequences.py,sha256=RHxWGpWBRi89jTk3F4sdlGsKqeheRD49PZMeM36Rs
|
|
63
63
|
molde/utils/poly_data_utils.py,sha256=WoeW46ciuSZB4KO9oh0ksPoxARUbheQDROcjwlpjL4c,2125
|
64
64
|
molde/utils/tree_info.py,sha256=FxgT_uKjtgi0-NVcH41LBoqRmAKt26NJmsjBk1WTqt8,1760
|
65
65
|
molde/windows/loading_window.py,sha256=3U1VEujSKWWWIu1aSqSkYCupTpstI0xks6csJhdKh5Y,6288
|
66
|
-
molde-0.1.
|
67
|
-
molde-0.1.
|
68
|
-
molde-0.1.
|
66
|
+
molde-0.1.6.dist-info/METADATA,sha256=4i9xkQonB1cdOYBi_VlKeEz4BoAEmOZHu3jFuEMBFJg,2101
|
67
|
+
molde-0.1.6.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
68
|
+
molde-0.1.6.dist-info/RECORD,,
|