@@ -31,7 +31,8 @@ def __init__(self, dagnode, parent=None):
3131 self .bufferX = 3
3232 self .bufferY = 3
3333 self .pen_width = 1.5 # pen width for NoteBackground
34-
34+ self .handle_size = 6 # size of the resize handle
35+
3536 # fonts
3637 self ._font = 'SansSerif'
3738 self ._font_size = self .dagnode .font_size
@@ -53,6 +54,8 @@ def __init__(self, dagnode, parent=None):
5354 # temp resizing attributes
5455 self .top_left = ()
5556 self .btm_right = ()
57+ self .min_width = 75 # widget minimum size
58+ self .min_height = 60 # widget minimum size
5659
5760 # label
5861 self ._evaluate_tag = False # indicates the node is set to "evaluate" (a la Houdini)
@@ -168,8 +171,8 @@ def mouseMoveEvent(self, event):
168171 self .btm_right = (scene_pos .x (), scene_pos .y ())
169172 # create a temporary rectangle with the current selection
170173 rect = QtCore .QRectF (QtCore .QPointF (* self .top_left ), QtCore .QPointF (* self .btm_right ))
171- self .dagnode .width = rect .width ()
172- self .dagnode .height = rect .height ()
174+ self .dagnode .width = abs ( rect .width () )
175+ self .dagnode .height = abs ( rect .height () )
173176
174177 def mousePressEvent (self , event ):
175178 """
@@ -193,7 +196,13 @@ def mouseReleaseEvent(self, event):
193196 self .handle_selected = False
194197 #self.setPos(cpos.x(), cpos.y())
195198 QtGui .QGraphicsItem .mouseReleaseEvent (self , event )
196-
199+
200+ # tidy up
201+ if self .dagnode .width < self .min_width :
202+ self .dagnode .width = self .min_width
203+
204+ if self .dagnode .height < self .min_height :
205+ self .dagnode .height = self .min_height
197206
198207 def dagnodeUpdated (self , * args , ** kwargs ):
199208 """
@@ -357,12 +366,11 @@ def handleRect(self):
357366 * testing
358367 """
359368 rect = self .boundingRect ()
360- size = 6
361- buffer = 2
362- p1 = rect .bottomRight () # need as p1
363- p2 = QtCore .QPointF (p1 .x () - (size + buffer ), p1 .y ())
364- topLeft = QtCore .QPointF (p2 .x (), p2 .y () - (size + buffer ))
365- return QtCore .QRectF (topLeft , QtCore .QSize (size , size ))
369+ hbuffer = self .handle_size / 3.0
370+ p1 = rect .bottomRight ()
371+ p2 = QtCore .QPointF (abs (p1 .x ()) - (self .handle_size + hbuffer ), p1 .y ())
372+ topLeft = QtCore .QPointF (p2 .x (), p2 .y () - (self .handle_size + hbuffer ))
373+ return QtCore .QRectF (topLeft , QtCore .QSize (self .handle_size , self .handle_size ))
366374
367375 def paint (self , painter , option , widget ):
368376 """
@@ -452,11 +460,16 @@ def paint(self, painter, option, widget):
452460 painter .setBrush (qbrush )
453461
454462 # draw background
455- painter .drawPolygon (note_shape )
463+ if not self .handle_selected :
464+ painter .drawPolygon (note_shape )
465+ else :
466+ painter .drawRect (self .boundingRect ())
456467 painter .setBrush (cbrush )
457468 painter .setPen (cpen )
469+
458470 # draw corner
459- painter .drawPolygon (corner_shape )
471+ if not self .handle_selected :
472+ painter .drawPolygon (corner_shape )
460473
461474 self .center_label .hide ()
462475 cpos = self .mapToScene (self .boundingRect ().center ())
@@ -472,7 +485,7 @@ def paint(self, painter, option, widget):
472485 if self ._debug :
473486 self .center_label .show ()
474487 self .center_label .setPos (0 ,0 )
475- self .setPos (cpos .x (),cpos .y ())
488+ self .setPos (cpos .x (),cpos .y ())
476489 self .resize_handle .setRect (self .handleRect ())
477490
478491 def setDebug (self , val ):
0 commit comments