Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"""
A basic radiobutton (an exclusive checkbox).
New Attributes
==============
- marked: Boolean: Whether the checkbox is checked or not.
- group: String: All RadioButtons with the same group name
can only be checked exclusively.
Data
====
The marked status can be read and set via L{distributeData} and L{collectData}
"""
ATTRIBUTES = BasicTextWidget.ATTRIBUTES + [BoolAttr('marked'),Attr('group')]
def __init__(self,group="_no_group_",**kwargs):
self.real_widget = fife.RadioButton()
super(RadioButton,self).__init__(**kwargs)
self.group = group
# Prepare Data collection framework
self.accepts_data = True
self._realGetData = self._isMarked
self._realSetData = self._setMarked
# Initial data stuff inherited.
def _isMarked(self): return self.real_widget.isSelected()
def _setMarked(self,mark): self.real_widget.setSelected(mark)
posi = widget.position
widget.position = (10, posi[1])
Here they are.
- x: Integer: The horizontal part of the position attribute.
- y: Integer: The vertical part of the position attribute.
- width: Integer: The horizontal part of the size attribute.
- height: Integer: The vertical part of the size attribute.
"""
ATTRIBUTES = [ Attr('name'), PointAttr('position'),
PointAttr('min_size'), PointAttr('size'), PointAttr('max_size'),
ColorAttr('base_color'),ColorAttr('background_color'),ColorAttr('foreground_color'),ColorAttr('selection_color'),
Attr('style'), Attr('font'),IntAttr('border_size'),Attr('position_technique'),
UnicodeAttr('helptext')
]
DEFAULT_NAME = '__unnamed__'
HIDE_SHOW_ERROR = """\
You can only show/hide the top widget of a hierachy.
Use 'addChild' or 'removeChild' to add/remove labels for example.
"""
def __init__(self,parent = None, name = DEFAULT_NAME,
size = (-1,-1), min_size=(0,0), max_size=(5000,5000),
helptext=u"",
style = None, **kwargs):
assert( hasattr(self,'real_widget') )
# Set X position, leave Y alone
widget.x = 10
# Same here
posi = widget.position
widget.position = (10, posi[1])
Here they are.
- x: Integer: The horizontal part of the position attribute.
- y: Integer: The vertical part of the position attribute.
- width: Integer: The horizontal part of the size attribute.
- height: Integer: The vertical part of the size attribute.
"""
ATTRIBUTES = [ Attr('name'), PointAttr('position'),
PointAttr('min_size'), PointAttr('size'), PointAttr('max_size'),
ColorAttr('base_color'),ColorAttr('background_color'),ColorAttr('foreground_color'),ColorAttr('selection_color'),
Attr('style'), Attr('font'),IntAttr('border_size'),Attr('position_technique'),
UnicodeAttr('helptext')
]
DEFAULT_NAME = '__unnamed__'
HIDE_SHOW_ERROR = """\
You can only show/hide the top widget of a hierachy.
Use 'addChild' or 'removeChild' to add/remove labels for example.
"""
def __init__(self,parent = None, name = DEFAULT_NAME,
size = (-1,-1), min_size=(0,0), max_size=(5000,5000),
helptext=u"",
class ImageButton(BasicTextWidget):
"""
A basic push button with three different images for the up, down and hover state.
B{Work in progress.}
New Attributes
==============
- up_image: String: The source location of the Image for the B{unpressed} state.
- down_image: String: The source location of the Image for the B{pressed} state.
- hover_image: String: The source location of the Image for the B{unpressed hovered} state.
"""
ATTRIBUTES = BasicTextWidget.ATTRIBUTES + [Attr('up_image'),Attr('down_image'),PointAttr('offset'),Attr('hover_image')]
def __init__(self,up_image="",down_image="",hover_image="",offset=(0,0),**kwargs):
self.real_widget = fife.TwoButton()
super(ImageButton,self).__init__(**kwargs)
self.up_image = up_image
self.down_image = down_image
self.hover_image = hover_image
self.offset = offset
def _setUpImage(self, source):
if isinstance(source,str):
self._upimage_source = source
try:
self._upimage = get_manager().loadImage(source)
self.real_widget.setUpImage( self._upimage )
class ToggleButton(BasicTextWidget):
"""
A basic push button that can be toggled.
Unfortunately a bit of code duplication from ImageButton.
New Attributes
==============
- group: String: The group the button belongs to. Only one button in each group will be toggled at one time.
- toggled: Boolean: Whether the button is toggled or not.
"""
ATTRIBUTES = BasicTextWidget.ATTRIBUTES + [
Attr('up_image'),Attr('down_image'),Attr('hover_image'),
PointAttr('offset'),Attr('group')
]
def __init__(self,up_image="",down_image="",hover_image="",offset=(0,0),group="",**kwargs):
self.real_widget = fife.ToggleButton()
super(ToggleButton,self).__init__(**kwargs)
self.group = group
self.up_image = up_image
self.down_image = down_image
self.hover_image = hover_image
self.offset = offset
def _setGroup(self,group):
self.real_widget.setGroup( group )
be position via the position attribute. If you want to use the layout engine,
you have to use derived containers with vertical or horizontal orientation
(L{VBox} or L{HBox})
New Attributes
==============
- padding - Integer: Not used in the Container class istelf, distance between child widgets.
- background_image - Set this to a GuiImage or a resource location (simply a filename).
The image will be tiled over the background area.
- opaque - Boolean: Whether the background should be drawn at all. Set this to False
to make the widget transparent.
- children - Just contains the list of contained child widgets. Do NOT modify.
"""
ATTRIBUTES = Widget.ATTRIBUTES + [ IntAttr('padding'), Attr('background_image'), BoolAttr('opaque'),PointAttr('margins') ]
def __init__(self,padding=5,margins=(5,5),_real_widget=None, **kwargs):
self.real_widget = _real_widget or fife.Container()
self.children = []
self.margins = margins
self.padding = padding
self._background = []
self._background_image = None
super(Container,self).__init__(**kwargs)
def addChild(self, widget):
widget.parent = self
self.children.append(widget)
self.real_widget.add(widget.real_widget)
def removeChild(self,widget):
text = property(_getText,_setText)
def resizeToContent(self, recurse = True):
self.height = self.real_font.getHeight() + self.margins[1]*2
self.width = self.real_font.getWidth(_text2gui(self.text)) + self.margins[0]*2
class Icon(Widget):
"""
An image icon.
New Attributes
==============
- image: String or GuiImage: The source location of the Image or a direct GuiImage
"""
ATTRIBUTES = Widget.ATTRIBUTES + [Attr('image')]
def __init__(self,image="",**kwargs):
self.real_widget = fife.Icon(None)
super(Icon,self).__init__(**kwargs)
self._source = self._image = None
if image:
self.image = image
def _setImage(self,source):
if isinstance(source,str):
self._source = source
self._image = get_manager().loadImage(source)
elif isinstance(source,fife.GuiImage):
self._source = None
self._image = source
else:
class TextBox(Widget):
"""
An editable B{multiline} text edit widget.
New Attributes
==============
- text: The text in the TextBox.
- filename: A write-only attribute - assigning a filename will cause the widget to load it's text from it.
Data
====
The text can be read and set via L{distributeData} and L{collectData}.
"""
ATTRIBUTES = Widget.ATTRIBUTES + [UnicodeAttr('text'),Attr('filename')]
def __init__(self,text=u"",filename = "", **kwargs):
self.real_widget = fife.TextBox()
self.text = text
self.filename = filename
super(TextBox,self).__init__(**kwargs)
# Prepare Data collection framework
self.accepts_data = True
self.accepts_initial_data = True # Make sense in a way ...
self._realSetInitialData = self._setText
self._realSetData = self._setText
self._realGetData = self._getText
def _getFileName(self): return self._filename
def _loadFromFile(self,filename):
ADVERTISED = [Attrs.CradleService]
# SERVICES = [Attrs.DeviceService]
SERVICES = [Attrs.CradleService]
CHARACTERISTICS = [Attrs.AuthenticationCode, Attrs.Command, Attrs.Response, Attrs.ShareMessageReceiver, Attrs.ShareMessageResponse, Attrs.HeartBeat, Attrs.DeviceService, Attrs.PowerLevel]
UART_SERVICE_UUID = Attrs.CradleService
TX_CHAR_UUID = Attrs.Command
RX_CHAR_UUID = Attrs.Response
pass
class Share2UART (OriginalUART):
# ADVERTISED = [Attrs.CradleService2]
# ADVERTISED = [Attrs.VENDOR_UUID]
ADVERTISED = [Attrs.VENDOR_UUID]
# SERVICES = [Attrs.DeviceService]
# SERVICES = [Attrs.CradleService2, Attrs.VENDOR_UUID]
SERVICES = [Attrs.VENDOR_UUID, Attrs.DeviceService]
# CHARACTERISTICS = [Attrs.AuthenticationCode2, Attrs.Command2, Attrs.Response2, Attrs.ShareMessageReceiver2, Attrs.ShareMessageResponse2, Attrs.HeartBeat2, Attrs.DeviceService, Attrs.PowerLevel]
CHARACTERISTICS = [ ]
HEARTBEAT_UUID = Attrs.HeartBeat2
# UART_SERVICE_UUID = Attrs.CradleService2
UART_SERVICE_UUID = Attrs.VENDOR_UUID
TX_CHAR_UUID = Attrs.ShareMessageReceiver2
RX_CHAR_UUID = Attrs.ShareMessageResponse2
SendDataUUID = Attrs.ShareMessageReceiver2
RcveDataUUID = Attrs.ShareMessageResponse2
CommandUUID = Attrs.Command2
ResponseUUID = Attrs.Response2
AUTH_UUID = Attrs.AuthenticationCode2
def __init__(self, device, **kwds):
"""Initialize UART from provided bluez device."""
# Find the UART service and characteristics associated with the device.
ADVERTISED = [Attrs.VENDOR_UUID]
# SERVICES = [Attrs.DeviceService]
# SERVICES = [Attrs.CradleService2, Attrs.VENDOR_UUID]
SERVICES = [Attrs.VENDOR_UUID, Attrs.DeviceService]
# CHARACTERISTICS = [Attrs.AuthenticationCode2, Attrs.Command2, Attrs.Response2, Attrs.ShareMessageReceiver2, Attrs.ShareMessageResponse2, Attrs.HeartBeat2, Attrs.DeviceService, Attrs.PowerLevel]
CHARACTERISTICS = [ ]
HEARTBEAT_UUID = Attrs.HeartBeat2
# UART_SERVICE_UUID = Attrs.CradleService2
UART_SERVICE_UUID = Attrs.VENDOR_UUID
TX_CHAR_UUID = Attrs.ShareMessageReceiver2
RX_CHAR_UUID = Attrs.ShareMessageResponse2
SendDataUUID = Attrs.ShareMessageReceiver2
RcveDataUUID = Attrs.ShareMessageResponse2
CommandUUID = Attrs.Command2
ResponseUUID = Attrs.Response2
AUTH_UUID = Attrs.AuthenticationCode2
def __init__(self, device, **kwds):
"""Initialize UART from provided bluez device."""
# Find the UART service and characteristics associated with the device.
log = logging.getLogger(__name__)
self.log = log.getChild('uart')
self._uart = device.find_service(self.UART_SERVICE_UUID)
log.info("UART %s", self._uart)
self._queue = Queue.Queue()
r = device.is_paired
self.serial = kwds.pop('SERIAL', None)
log.info("paired? %s", r)
if not r:
log.info("pairing...")
# help(device._device)
# help(device._device.Pair)