molde 0.1.4__py3-none-any.whl → 0.1.5__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 CHANGED
@@ -1,22 +1,21 @@
1
1
  import os, sys
2
- from qtpy.QtWidgets import QMainWindow, QApplication, QMessageBox, QLineEdit, QTableWidgetItem, QPushButton, QLabel
3
- from qtpy.QtGui import QColor
4
- from qtpy import uic
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__(parent)
19
- uic.loadUi(MOLDE_DIR / "stylesheets/mainwindow.ui", self)
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 = vtkUnsignedCharArray()
54
- selected_pixels.DeepCopy(self._saved_pixels)
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
- for x in range(min_x, max_x, 2):
57
- for y in range(min_y, max_y, 2):
58
- pixel = y * size[0] + x
59
- selected_pixels.SetTuple(pixel, self.selection_color)
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, "w") as file:
167
+ with open(path, "wb") as file:
168
168
  image.save(file)
169
169
 
170
170
  def create_axes(self):
@@ -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("\\", "/"),
@@ -27,7 +27,7 @@ QSlider::handle {
27
27
  QSlider::sub-page:horizontal:disabled,
28
28
  QSlider::add-page:vertical:disabled,
29
29
  QSlider::handle:disabled {
30
- background: @disabled-background;
30
+ background: "@alternative-disabled-background";
31
31
  }
32
32
 
33
33
  QSlider::add-page:horizontal,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: molde
3
- Version: 0.1.4
3
+ Version: 0.1.5
4
4
  Summary:
5
5
  Author: André Fernandes
6
6
  Author-email: fpf.andre@gmail.com
@@ -1,5 +1,5 @@
1
1
  molde/__init__.py,sha256=yzVoIVI6c9QqRYLQ3qaEr9wzAiFNkWxdKhjfbrrt5b4,413
2
- molde/__main__.py,sha256=YQ1PGJvDe4UI8g8ENQcjkLjJDhKB_HuMQmTZ1NK3IHg,2501
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=3KIj4lWajpuhS1eMZzGZeugmRVp7LrQO9gkefVugYQM,2549
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=nrLwKomLuICnHsmMxLp4aDJpa5_po05fH4iUfbsAv1k,15456
42
- molde/stylesheets/__init__.py,sha256=gor0BWT8Z4srqR9MyAcYOGW_v8qDtlj46lm4HmLB1Ic,5408
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=w7kpfV89X1smmZCxenwflz37e2Ff5K2WvYQdegFH3vs,938
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.4.dist-info/METADATA,sha256=3O2EA02KcKADuzQZxwOwkWFZr7EPWRzkGlZtvxABN8E,2196
67
- molde-0.1.4.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
68
- molde-0.1.4.dist-info/RECORD,,
66
+ molde-0.1.5.dist-info/METADATA,sha256=b83QlUOBbQaFdjhwT_5CCLAKgY15FyiWFFjk2PrImtk,2196
67
+ molde-0.1.5.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
68
+ molde-0.1.5.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.0.1
2
+ Generator: poetry-core 2.1.2
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any