Skip to content

Commit ded773c

Browse files
committed
backdrop node wrap updates
1 parent c34cf06 commit ded773c

File tree

1 file changed

+34
-33
lines changed

1 file changed

+34
-33
lines changed

NodeGraphQt/qgraphics/node_backdrop.py

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,19 @@ def itemChange(self, change, value):
5353
def mouseDoubleClickEvent(self, event):
5454
item = self.parentItem()
5555
item.on_sizer_double_clicked()
56+
super(BackdropSizer, self).mouseDoubleClickEvent(event)
57+
58+
def mousePressEvent(self, event):
59+
self.__prev_xy = (self.pos().x(), self.pos().y())
60+
super(BackdropSizer, self).mousePressEvent(event)
61+
62+
def mouseReleaseEvent(self, event):
63+
current_xy = (self.pos().x(), self.pos().y())
64+
if current_xy != self._prev_xy:
65+
item = self.parentItem()
66+
item.on_sizer_pos_mouse_release()
67+
del self.__prev_xy
68+
super(BackdropSizer, self).mouseReleaseEvent(event)
5669

5770
def paint(self, painter, option, widget):
5871
"""
@@ -143,8 +156,18 @@ def on_sizer_pos_changed(self, pos):
143156
self._width = pos.x() + self._sizer.size
144157
self._height = pos.y() + self._sizer.size
145158

159+
def on_sizer_pos_mouse_release(self):
160+
size = {
161+
'pos': self.xy_pos,
162+
'width': self._width,
163+
'height': self._height}
164+
self.viewer().node_backdrop_updated.emit(
165+
self.id, 'sizer_mouse_release', size)
166+
146167
def on_sizer_double_clicked(self):
147-
self.auto_resize()
168+
size = self.calc_backdrop_size()
169+
self.viewer().node_backdrop_updated.emit(
170+
self.id, 'sizer_double_clicked', size)
148171

149172
def paint(self, painter, option, widget):
150173
"""
@@ -217,39 +240,17 @@ def get_nodes(self, inc_intersects=False):
217240
nodes.append(item)
218241
return nodes
219242

220-
def auto_resize(self, nodes=None):
243+
def calc_backdrop_size(self, nodes=None):
221244
nodes = nodes or self.get_nodes(True)
222-
if nodes:
223-
padding = 40
224-
nodes_rect = self._combined_rect(nodes)
225-
self.xy_pos = [nodes_rect.x() - padding, nodes_rect.y() - padding]
226-
self._sizer.set_pos(nodes_rect.width() + (padding * 2),
227-
nodes_rect.height() + (padding * 2))
228-
return
229-
230-
width, height = self._min_size
231-
self._sizer.set_pos(width, height)
232-
233-
def pre_init(self, viewer, pos=None):
234-
"""
235-
Called before node has been added into the scene.
236-
237-
Args:
238-
viewer (NodeGraphQt.widgets.viewer.NodeViewer): main viewer.
239-
pos (tuple): cursor pos.
240-
"""
241-
nodes = viewer.selected_nodes()
242-
if nodes:
243-
padding = 40
244-
scene = viewer.scene()
245-
group = scene.createItemGroup(nodes)
246-
rect = group.boundingRect()
247-
scene.destroyItemGroup(group)
248-
self.xy_pos = [rect.x() - padding, rect.y() - padding]
249-
self._sizer.set_pos(rect.width() + (padding * 2),
250-
rect.height() + (padding * 2))
251-
else:
252-
self.xy_pos = pos
245+
padding = 40
246+
nodes_rect = self._combined_rect(nodes)
247+
return {
248+
'pos': [
249+
nodes_rect.x() - padding, nodes_rect.y() - padding
250+
],
251+
'width': nodes_rect.width() + (padding * 2),
252+
'height': nodes_rect.height() + (padding * 2)
253+
}
253254

254255
@property
255256
def minimum_size(self):

0 commit comments

Comments
 (0)