52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
'''
|
|
Created on May 20, 2016
|
|
|
|
@author: graffy
|
|
'''
|
|
|
|
import wx
|
|
|
|
|
|
class Widget(object):
|
|
'''
|
|
The widget representing an interactive object in the dataflow (an operator, a plug, etc.)
|
|
'''
|
|
|
|
def __init__(self, data_flow_view):
|
|
"""
|
|
:param data_flow_view: the dataflowview to which this operator belongs
|
|
:type data_flow_view: datafloweditor.DataflowView
|
|
"""
|
|
self._container_group = None # the 2d scene graph group node representing this widget
|
|
self._data_flow_view = data_flow_view
|
|
|
|
@property
|
|
def scenegraph_group(self):
|
|
"""
|
|
:rtype: scenegraph.Group
|
|
"""
|
|
return self._container_group
|
|
|
|
@scenegraph_group.setter
|
|
def scenegraph_group(self, scenegraph_group):
|
|
"""
|
|
:type scenegraph_group: scenegraph.Group
|
|
"""
|
|
print('Widget.scenegraph_group.setter : scenegraph_group=%s' % str(scenegraph_group))
|
|
self._container_group = scenegraph_group
|
|
self._data_flow_view.scenegraph_group_to_widget[scenegraph_group] = self
|
|
|
|
def get_bounding_box(self, border=0):
|
|
"""
|
|
:param int border: the width of the border surrounding the box
|
|
:return wx.Rect: the smallest box containing this widget
|
|
"""
|
|
(x_min, y_min), (x_max, y_max) = self.scenegraph_group.aabbox() # (scenegraph_group.setter seen as a method, see https://github.com/PyCQA/pylint/issues/870) pylint: disable=no-member
|
|
return wx.Rect(x_min - border, y_min - border, x_max - x_min + border * 2, y_max - y_min + border * 2)
|
|
|
|
def on_hover(self, is_entering):
|
|
'''
|
|
:param is_entering: True is the mouse pointer enters this widget, False if it leaves the widget
|
|
'''
|
|
pass
|