Source code for GLXCurses.libs.Group
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# It script it publish under GNU GENERAL PUBLIC LICENSE
# http://www.gnu.org/licenses/gpl-3.0.en.html
# Author: the Galaxie Curses Team, all rights reserved
import GLXCurses
[docs]class Group(object):
def __init__(self):
self.__members = None
self.__position = None
self.members = list()
self.position = 0
@property
def members(self):
return self.__members
@members.setter
def members(self, value=None):
if value is None:
value = list()
if type(value) != list:
raise TypeError('"members value must be a list type or None"')
if self.members != value:
self.__members = value
@property
def position(self):
"""
Extra space to put between the child and its neighbors, in chars.
Flags: Read / Write
Allowed values: <= G_MAXINT
Default value: 0
:return: Extra space to put between the child and its neighbors, in chars.
:rtype: int
"""
return self.__position
@position.setter
def position(self, position=None):
if position is None:
position = 0
if type(position) != int:
raise TypeError('"position" must be a int type or None')
if self.position != position:
self.__position = position
@property
def widget(self):
if len(self.members) > 0 and isinstance(
self.members[self.position], GLXCurses.GroupElement
):
return self.members[self.position].widget
return None
[docs] def is_member(self, widget=None):
if widget is None:
return False
if not isinstance(widget, GLXCurses.Widget):
raise TypeError("'widget' must be an instance of GLXCurses.Widget")
for member in self.members:
if member.widget is not None and member.widget.id == widget.id:
return True
return False
[docs] def add(self, widget=None):
"""
Adds widget to the group .
Typically used for group widget's , by example RadioButton, MenuElement, GlobalFocus
For more complicated layout containers such as Box or Grid, this function will pick default packing
parameters that may not be correct.
:param widget: a widget to be placed inside container
:type widget: GLXCurses.Widget
:raise TypeError: if ``widget`` is not a instance of GLXCurses.Widget
"""
# Try to exit as soon of possible
if not isinstance(widget, GLXCurses.Widget):
raise TypeError("'widget' must be an instance of GLXCurses.Widget")
if not self.is_member(widget=widget):
group_element = GLXCurses.GroupElement()
group_element.widget = widget
self.members.append(group_element)
[docs] def remove(self, widget=None):
if not isinstance(widget, GLXCurses.Widget):
raise TypeError("'widget' must be an instance of GLXCurses.Widget")
if self.is_member(widget):
for member in self.members:
if widget == member.widget:
self.members.remove(member)
[docs] def up(self):
if self.position + 1 > len(self.members) - 1:
self.position = 0
else:
self.position += 1
[docs] def down(self):
if self.position - 1 < 0:
self.position = len(self.members) - 1
else:
self.position -= 1