2024-05-31 20:16:31 +00:00
|
|
|
##########################################################
|
|
|
|
# This is the Python interface to the pyxforms C module
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
import sys
|
2024-06-03 14:38:36 +00:00
|
|
|
from . import (
|
|
|
|
xforms,
|
|
|
|
forms,
|
|
|
|
objects,
|
|
|
|
bitmaps,
|
|
|
|
pixmaps,
|
|
|
|
box,
|
|
|
|
browser,
|
|
|
|
button,
|
|
|
|
choice,
|
|
|
|
clock,
|
|
|
|
counter,
|
|
|
|
dial,
|
|
|
|
frame,
|
|
|
|
input,
|
|
|
|
menu,
|
|
|
|
positioner,
|
|
|
|
slider,
|
|
|
|
timer,
|
|
|
|
)
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# These are function needed to run the XForms library
|
|
|
|
# Needs a LOT of work
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
def xfinit(appname, appclass, argv0):
|
|
|
|
xforms.init(appname, appclass, argv0)
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# This is the synthetic event-loop to use under python:
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
_objects = {}
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
def runforms():
|
2024-06-03 14:38:36 +00:00
|
|
|
while 1:
|
|
|
|
ob = _objects[str(xforms.do_forms())]
|
|
|
|
ob.cb(ob.args)
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# This is the default callback function:
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
def _nocb(args):
|
2024-06-03 14:38:36 +00:00
|
|
|
print("This object has no Callback!")
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
##############################################################################
|
2024-06-03 14:38:36 +00:00
|
|
|
# This is the Form class
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
class Form:
|
2024-06-03 14:38:36 +00:00
|
|
|
def __init__(self, t=6, w=200, h=200):
|
|
|
|
self.id = forms.create(0, w, h)
|
|
|
|
self.__box = Box(t, 0, 0, w, h, "")
|
|
|
|
self.Add(self.__box)
|
|
|
|
self.__box.c1 = 11
|
|
|
|
self.__box.c2 = 15
|
|
|
|
self.__minx = 1 # Reasonable defaults for things that
|
|
|
|
self.__miny = 1 # I can't get from XForms
|
|
|
|
self.__maxx = 10000 # Notice that if the C code changes them
|
|
|
|
self.__maxy = 10000 # They get out of sync!
|
|
|
|
self.__title = sys.argv[0] # the "preferred" form title
|
|
|
|
self.__placement = 16388
|
|
|
|
self.__decoration = 1
|
|
|
|
self.objs = () # A place to store the obj list. Useful?
|
|
|
|
|
|
|
|
def Show(self):
|
|
|
|
self.winid = forms.show(
|
|
|
|
self.id, self.__placement, self.__decoration, self.title
|
|
|
|
)
|
|
|
|
|
|
|
|
def Hide(self):
|
|
|
|
forms.hide(self.id)
|
|
|
|
|
|
|
|
def Freeze(self):
|
|
|
|
forms.freeze(self.id)
|
|
|
|
|
|
|
|
def Unfreeze(self):
|
|
|
|
forms.unfreeze(self.id)
|
|
|
|
|
|
|
|
def Activate(self):
|
|
|
|
forms.activate(self.id)
|
|
|
|
|
|
|
|
def Deactivate(self):
|
|
|
|
forms.deactivate(self.id)
|
|
|
|
|
|
|
|
def Scale(self, x, y):
|
|
|
|
forms.scale(self.id, x, y)
|
|
|
|
|
|
|
|
def Redraw(self):
|
|
|
|
forms.redraw(self.id)
|
|
|
|
|
|
|
|
def Add(self, object):
|
|
|
|
forms.add_object(self.id, object.id)
|
|
|
|
object.parent = self
|
|
|
|
|
|
|
|
def Setminsize(self, x, y):
|
|
|
|
forms.set_minsize(self.id, x, y)
|
|
|
|
self.__minx = x # The __ is needed to avoid endless looping
|
|
|
|
self.__miny = y # on min[xy], which are non-gettable from XForms
|
|
|
|
|
|
|
|
def Setmaxsize(self, x, y):
|
|
|
|
forms.set_maxsize(self.id, x, y)
|
|
|
|
self.__maxx = x
|
|
|
|
self.__maxy = y
|
|
|
|
|
|
|
|
def Settitle(self, title):
|
|
|
|
forms.set_title(self.id, title)
|
|
|
|
self.__title = title
|
|
|
|
|
|
|
|
def Gettitle(self):
|
|
|
|
if self.visible:
|
|
|
|
return forms.get_title(self.id)
|
|
|
|
else:
|
|
|
|
return self.__title
|
|
|
|
|
|
|
|
def Setcolor(c1, c2):
|
|
|
|
self.__box.Setcolor(c1, c2)
|
|
|
|
|
|
|
|
def __setattr__(self, name, value):
|
|
|
|
if name == "x":
|
|
|
|
(tx, ty, tw, th) = forms.get_geometry(self.id)
|
|
|
|
forms.set_geometry(self.id, value, ty, tw, th)
|
|
|
|
elif name == "y":
|
|
|
|
(tx, ty, tw, th) = forms.get_geometry(self.id)
|
|
|
|
forms.set_geometry(self.id, tx, value, tw, th)
|
|
|
|
elif name == "w":
|
|
|
|
(tx, ty, tw, th) = forms.get_geometry(self.id)
|
|
|
|
forms.set_geometry(self.id, tx, ty, value, th)
|
|
|
|
elif name == "h":
|
|
|
|
(tx, ty, tw, th) = forms.get_geometry(self.id)
|
|
|
|
forms.set_geometry(self.id, tx, ty, tw, value)
|
|
|
|
elif name == "dblbuffer":
|
|
|
|
forms.set_dblbuffer(self.id, value)
|
|
|
|
elif name == "frozen":
|
|
|
|
if value:
|
|
|
|
self.Freeze()
|
|
|
|
else:
|
|
|
|
self.Unfreeze()
|
|
|
|
elif name == "active":
|
|
|
|
if value:
|
|
|
|
self.Activate()
|
|
|
|
else:
|
|
|
|
self.Deactivate()
|
|
|
|
elif name == "visible":
|
|
|
|
if value:
|
|
|
|
self.Show()
|
|
|
|
else:
|
|
|
|
self.Hide()
|
|
|
|
elif name == "minx":
|
|
|
|
self.Setminsize(value, self.__miny)
|
|
|
|
elif name == "miny":
|
|
|
|
self.Setminsize(self.__minx, value)
|
|
|
|
elif name == "maxx":
|
|
|
|
self.Setminsize(value, self.__maxy)
|
|
|
|
elif name == "maxy":
|
|
|
|
self.Setminsize(self.__maxx, value)
|
|
|
|
elif name == "title":
|
|
|
|
self.Settitle(value)
|
|
|
|
elif name == "c1":
|
|
|
|
self.__box.c1 = value
|
|
|
|
elif name == "c2":
|
|
|
|
self.__box.c2 = value
|
|
|
|
else:
|
|
|
|
self.__dict__[name] = value
|
|
|
|
|
|
|
|
def __getattr__(self, name):
|
|
|
|
if name == "x":
|
|
|
|
(tx, ty, tw, th) = forms.get_geometry(self.id)
|
|
|
|
return tx
|
|
|
|
elif name == "y":
|
|
|
|
(tx, ty, tw, th) = forms.get_geometry(self.id)
|
|
|
|
return ty
|
|
|
|
elif name == "w":
|
|
|
|
(tx, ty, tw, th) = forms.get_geometry(self.id)
|
|
|
|
return tw
|
|
|
|
elif name == "h":
|
|
|
|
(tx, ty, tw, th) = forms.get_geometry(self.id)
|
|
|
|
return th
|
|
|
|
elif name == "minx":
|
|
|
|
return self.__minx
|
|
|
|
elif name == "miny":
|
|
|
|
return self.__miny
|
|
|
|
elif name == "maxx":
|
|
|
|
return self.__maxx
|
|
|
|
elif name == "maxy":
|
|
|
|
return self.__maxy
|
|
|
|
elif name == "vmode":
|
|
|
|
(vmode, active, dblbuffer, frozen, visible, border, other) = forms.get_attr(
|
|
|
|
self.id
|
|
|
|
)
|
|
|
|
return vmode
|
|
|
|
elif name == "active":
|
|
|
|
(vmode, active, dblbuffer, frozen, visible, border, other) = forms.get_attr(
|
|
|
|
self.id
|
|
|
|
)
|
|
|
|
return active
|
|
|
|
elif name == "dblbuffer":
|
|
|
|
(vmode, active, dblbuffer, frozen, visible, border, other) = forms.get_attr(
|
|
|
|
self.id
|
|
|
|
)
|
|
|
|
return dblbuffer
|
|
|
|
elif name == "frozen":
|
|
|
|
(vmode, active, dblbuffer, frozen, visible, border, other) = forms.get_attr(
|
|
|
|
self.id
|
|
|
|
)
|
|
|
|
return frozen
|
|
|
|
elif name == "visible":
|
|
|
|
(vmode, active, dblbuffer, frozen, visible, border, other) = forms.get_attr(
|
|
|
|
self.id
|
|
|
|
)
|
|
|
|
return visible
|
|
|
|
elif name == "border":
|
|
|
|
(vmode, active, dblbuffer, frozen, visible, border, other) = forms.get_attr(
|
|
|
|
self.id
|
|
|
|
)
|
|
|
|
return border
|
|
|
|
elif name == "other":
|
|
|
|
(vmode, active, dblbuffer, frozen, visible, border, other) = forms.get_attr(
|
|
|
|
self.id
|
|
|
|
)
|
|
|
|
return other
|
|
|
|
elif name == "title":
|
|
|
|
return self.Gettitle()
|
|
|
|
elif name == "c1":
|
|
|
|
return self.__box.c1
|
|
|
|
elif name == "c2":
|
|
|
|
return self.__box.c2
|
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
# I'm not sure if this is a nice thing to do
|
|
|
|
# forms.free (self.id)
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
###############################################################################
|
2024-06-03 14:38:36 +00:00
|
|
|
# This is the XFObject class, for generic XForms objects
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
class XFObject:
|
2024-06-03 14:38:36 +00:00
|
|
|
def __init__(self):
|
|
|
|
self.id = 0
|
|
|
|
self.__c1 = 11
|
|
|
|
self.__c2 = 15
|
|
|
|
|
|
|
|
def Setgravity(self, a, b):
|
|
|
|
objects.set_gravity(self.id, a, b)
|
|
|
|
|
|
|
|
def Redraw(self):
|
|
|
|
objects.redraw(self.id)
|
|
|
|
|
|
|
|
def Scale(self, x, y):
|
|
|
|
objects.scale(self.id, x, y)
|
|
|
|
|
|
|
|
def Show(self):
|
|
|
|
objects.show(self.id)
|
|
|
|
self.Setcolor(self.__c1, self.__c2)
|
|
|
|
|
|
|
|
def Hide(self):
|
|
|
|
objects.hide(self.id)
|
|
|
|
|
|
|
|
def Delete(self):
|
|
|
|
objects.delete(self.id)
|
|
|
|
|
|
|
|
def Setcolor(self, c1, c2):
|
|
|
|
self.__c1 = c1
|
|
|
|
self.__c2 = c2
|
|
|
|
objects.set_color(self.id, c1, c2)
|
|
|
|
|
|
|
|
def Activate(self):
|
|
|
|
objects.activate(self.id)
|
|
|
|
|
|
|
|
def Deactivate(self):
|
|
|
|
objects.deactivate(self.id)
|
|
|
|
|
|
|
|
def __setattr__(self, name, value):
|
|
|
|
if name == "boxtype":
|
|
|
|
objects.set_boxtype(self.id, value)
|
|
|
|
elif name == "bw":
|
|
|
|
objects.set_bw(self.id, value)
|
|
|
|
elif name == "labelsize":
|
|
|
|
objects.set_ls(self.id, value)
|
|
|
|
elif name == "labelstyle":
|
|
|
|
objects.set_lstyle(self.id, value)
|
|
|
|
elif name == "labelcolor":
|
|
|
|
objects.set_lcol(self.id, value)
|
|
|
|
elif name == "labelalign":
|
|
|
|
objects.set_lalign(self.id, value)
|
|
|
|
elif name == "label":
|
|
|
|
objects.set_label(self.id, value)
|
|
|
|
elif name == "shortcut":
|
|
|
|
objects.set_shortcut(self.id, value, 1)
|
|
|
|
elif name == "dblbuffer":
|
|
|
|
objects.set_dblbuffer(self.id, value)
|
|
|
|
elif name == "x":
|
|
|
|
(tx, ty, tw, th) = objects.get_geometry(self.id)
|
|
|
|
objects.set_geometry(self.id, value, ty, tw, th)
|
|
|
|
elif name == "y":
|
|
|
|
(tx, ty, tw, th) = objects.get_geometry(self.id)
|
|
|
|
objects.set_geometry(self.id, tx, value, tw, th)
|
|
|
|
elif name == "w":
|
|
|
|
(tx, ty, tw, th) = objects.get_geometry(self.id)
|
|
|
|
objects.set_geometry(self.id, tx, ty, value, th)
|
|
|
|
elif name == "h":
|
|
|
|
(tx, ty, tw, th) = objects.get_geometry(self.id)
|
|
|
|
objects.set_geometry(self.id, tx, ty, tw, value)
|
|
|
|
elif name == "resize":
|
|
|
|
objects.set_resize(self.id, value)
|
|
|
|
elif name == "c1":
|
|
|
|
self.Setcolor(value, self.__c2)
|
|
|
|
elif name == "c2":
|
|
|
|
self.Setcolor(self.__c1, value)
|
|
|
|
else:
|
|
|
|
self.__dict__[name] = value
|
|
|
|
|
|
|
|
def __getattr__(self, name):
|
|
|
|
if name == "c1":
|
|
|
|
return self.__c1
|
|
|
|
elif name == "c2":
|
|
|
|
return self.__c2
|
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
# probably a BAD idea
|
|
|
|
objects.free(self.id)
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# The Bitmap Class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
class Bitmap(XFObject):
|
2024-06-03 14:38:36 +00:00
|
|
|
def __init__(self, t=0, x=10, y=10, w=100, h=100, l="Bitmap"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = bitmaps.create(t, x, y, w, h, l)
|
|
|
|
|
|
|
|
def Load(self, file):
|
|
|
|
bitmaps.set_file(self.id, file)
|
|
|
|
|
|
|
|
def __setattr__(self, name, value):
|
|
|
|
if name == "background":
|
|
|
|
objects.set_color(self.id, value, 0)
|
|
|
|
elif name == "foreground":
|
|
|
|
objects.set_lcol(self.id, value)
|
|
|
|
else:
|
|
|
|
XFObject.__setattr__(self, name, value)
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# The Pixmap Class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
class Pixmap(XFObject):
|
2024-06-03 14:38:36 +00:00
|
|
|
def __init__(self, t=0, x=10, y=10, w=100, h=100, l="Pixmap"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = pixmaps.create(t, x, y, w, h, l)
|
|
|
|
|
|
|
|
def Load(self, file):
|
|
|
|
pixmaps.set_file(self.id, file)
|
|
|
|
|
|
|
|
def __setattr__(self, name, value):
|
|
|
|
if name == "background":
|
|
|
|
objects.set_color(self.id, value, 0)
|
|
|
|
elif name == "foreground":
|
|
|
|
objects.set_lcol(self.id, value)
|
|
|
|
else:
|
|
|
|
XFObject.__setattr__(self, name, value)
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# The Box Class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
class Box(XFObject):
|
2024-06-03 14:38:36 +00:00
|
|
|
def __init__(self, t=6, x=10, y=10, w=90, h=90, l="Box"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = box.create(t, x, y, w, h, l)
|
|
|
|
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
###############################################################################
|
|
|
|
# The Browser class
|
|
|
|
#
|
|
|
|
# I want the Browser class to act just like what it is: a list
|
|
|
|
# only with a "few" more methods and stuff
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Browser(XFObject):
|
|
|
|
def __init__(self, t=1, x=10, y=10, w=90, h=120, l="Browser"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = browser.create(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
def Add(self, line):
|
|
|
|
browser.add_line(self.id, line)
|
|
|
|
|
|
|
|
def Addto(self, line):
|
|
|
|
browser.addto(self.id, line)
|
|
|
|
|
|
|
|
def Insert(self, n, line):
|
|
|
|
browser.insert_line(self.id, n, line)
|
|
|
|
|
|
|
|
def Delete(self, n):
|
|
|
|
browser.delete_line(self.id, n)
|
|
|
|
|
|
|
|
def Replace(self, n, line):
|
|
|
|
browser.replace_line(self.id, n, line)
|
|
|
|
|
|
|
|
def Getline(self, n):
|
|
|
|
return browser.get_line(self.id, n)
|
|
|
|
|
|
|
|
def Load(self, path):
|
|
|
|
return browser.load(self.id, path)
|
|
|
|
|
|
|
|
def Select(self, n):
|
|
|
|
browser.select_line(self.id, n)
|
|
|
|
|
|
|
|
def Deselect(self, n):
|
|
|
|
browser.deselect_line(self.id, n)
|
|
|
|
|
|
|
|
def Deselectall(self):
|
|
|
|
browser.deselect(self.id)
|
|
|
|
|
|
|
|
def Isselected(self, n):
|
|
|
|
return browser.isselected_line(self.id, n)
|
|
|
|
|
|
|
|
def Gettopline(self):
|
|
|
|
return browser.get_topline(self.id)
|
|
|
|
|
|
|
|
def Get(self):
|
|
|
|
return browser.get(self.id)
|
|
|
|
|
|
|
|
def Getmaxline(self):
|
|
|
|
return browser.get_maxline(self.id)
|
|
|
|
|
|
|
|
def Screenlines(self):
|
|
|
|
return browser.get_screenlines(self.id)
|
|
|
|
|
|
|
|
def Settopline(self, n):
|
|
|
|
browser.set_topline(self.id, n)
|
|
|
|
|
|
|
|
def Setfontsize(self, n):
|
|
|
|
browser.set_fontsize(self.id, n)
|
|
|
|
|
|
|
|
def Setfontstyle(self, n):
|
|
|
|
browser.set_fontstyle(self.id, n)
|
|
|
|
|
|
|
|
def Setspecialkey(self, c):
|
|
|
|
browser.set_specialkey(self.id, c)
|
|
|
|
|
|
|
|
def Setleftslider(self, l):
|
|
|
|
browser.set_leftslider(self.id, l)
|
|
|
|
|
|
|
|
def __setattr__(self, name, value):
|
|
|
|
if name == "leftslider":
|
|
|
|
self.Setleftslider(value)
|
|
|
|
elif name == "specialkey":
|
|
|
|
self.Setspecialkey(value)
|
|
|
|
elif name == "fontstyle":
|
|
|
|
self.Setfontstyle(value)
|
|
|
|
elif name == "fontsize":
|
|
|
|
self.Setfontsize(value)
|
|
|
|
elif name == "topline":
|
|
|
|
self.Settopline(value)
|
|
|
|
else:
|
|
|
|
XFObject.__setattr__(self, name, value)
|
|
|
|
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
###############################################################################
|
2024-06-03 14:38:36 +00:00
|
|
|
# This is the Button class.
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
class Button(XFObject):
|
2024-06-03 14:38:36 +00:00
|
|
|
def __init__(self, t=0, x=10, y=10, w=90, h=30, l="Button"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = button.create(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
def __call__(self, v=-1):
|
|
|
|
# I think this is nice: if you have a button called b,
|
|
|
|
# b() returns the button's value
|
|
|
|
# b(1) or b(0) SETS the button value.
|
|
|
|
# You can also set/get it with b.value, though
|
|
|
|
if v == -1:
|
|
|
|
return button.get(self.id)
|
|
|
|
else:
|
|
|
|
button.set(self.id, v)
|
|
|
|
|
|
|
|
def __setattr__(self, name, value):
|
|
|
|
if name == "value":
|
|
|
|
self(value)
|
|
|
|
else:
|
|
|
|
XFObject.__setattr__(self, name, value)
|
|
|
|
|
|
|
|
def __getattr__(self, name):
|
|
|
|
if name == "value":
|
|
|
|
return self()
|
|
|
|
elif name == "numb":
|
|
|
|
return button.get_numb(self.id)
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
return XFObject.__getattr__(self, name)
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# This is the Roundbutton class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Roundbutton(Button):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=90, h=30, l="Roundbutton"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = button.create_round(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
###############################################################################
|
|
|
|
# This is the Lightbutton class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Lightbutton(Button):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=90, h=30, l="Lightbutton"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = button.create_light(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
###############################################################################
|
|
|
|
# This is the Checkbutton class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Checkbutton(Button):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=90, h=30, l="Checkbutton"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = button.create_check(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
###############################################################################
|
|
|
|
# This is the Bitmapbutton class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Bitmapbutton(Button):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=90, h=30, l="Bitmapbutton"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = button.create_bitmap(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
###############################################################################
|
|
|
|
# This is the Pixmapbutton class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Pixmapbutton(Button):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=90, h=30, l="Pixmapbutton"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = button.create_pixmap(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
###############################################################################
|
|
|
|
# This is the Choice Class
|
2024-06-03 14:38:36 +00:00
|
|
|
# This one needs a getattr, setattr pair
|
|
|
|
|
|
|
|
|
|
|
|
class Choice(XFObject):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=90, h=30, l="Choice"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = choice.create(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
def Clear(self):
|
|
|
|
choice.clear(self.id)
|
|
|
|
|
|
|
|
def Addto(self, s):
|
|
|
|
choice.addto(self.id, s)
|
|
|
|
|
|
|
|
def Replace(self, n, s):
|
|
|
|
choice.replace(self.id, n, s)
|
|
|
|
|
|
|
|
def Delete(self, n):
|
|
|
|
choice.delete(self.id, n)
|
|
|
|
|
|
|
|
def Set(self, n):
|
|
|
|
choice.set(self.id, n)
|
|
|
|
|
|
|
|
def Settext(self, s):
|
|
|
|
choice.set_text(self.id, s)
|
|
|
|
|
|
|
|
def Get(self):
|
|
|
|
return choice.get(self.id)
|
|
|
|
|
|
|
|
def Getmaxitems(self):
|
|
|
|
return choice.get_maxitems(self.id)
|
|
|
|
|
|
|
|
def Gettext(self):
|
|
|
|
return choice.get_text(self.id)
|
|
|
|
|
|
|
|
def Setfontsize(self, n):
|
|
|
|
choice.set_fontsize(self.id, n)
|
|
|
|
|
|
|
|
def Setalign(self, n):
|
|
|
|
choice.set_align(self.id, n)
|
|
|
|
|
|
|
|
def Setmode(self, n, m):
|
|
|
|
choice.set_item_mode(self.id, n, m)
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
# This is the clock class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Clock(XFObject):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=90, h=90, l="Clock"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = clock.create(t, x, y, w, h, l)
|
|
|
|
|
|
|
|
def Get(self):
|
|
|
|
return clock.get(self.id)
|
|
|
|
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
##############################################################################
|
|
|
|
# This is the counter class
|
|
|
|
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
class Counter(XFObject):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=90, h=30, l="Counter"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = counter.create(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
def Set(self, v):
|
|
|
|
counter.set_value(self.id, v)
|
|
|
|
|
|
|
|
def Setbounds(self, min, max):
|
|
|
|
counter.set_bounds(self.id, min, max)
|
|
|
|
|
|
|
|
def Setstep(self, s1, s2):
|
|
|
|
counter.set_step(self.id, s1, s2)
|
|
|
|
|
|
|
|
def Setprecision(self, p):
|
|
|
|
counter.set_precision(self.id, p)
|
|
|
|
|
|
|
|
def Get(self):
|
|
|
|
return counter.get_value(self.id)
|
|
|
|
|
|
|
|
def Setreturn(self, v):
|
|
|
|
counter.set_return(self.id, v)
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
# This is the Dial class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Dial(XFObject):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=60, h=60, l="Dial"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = dial.create(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
def Set(self, v):
|
|
|
|
dial.set_value(self.id, v)
|
|
|
|
|
|
|
|
def Get(self):
|
|
|
|
return dial.get_value(self.id)
|
|
|
|
|
|
|
|
def Setbounds(self, min, max):
|
|
|
|
dial.set_bounds(self.id, min, max)
|
|
|
|
|
|
|
|
def Getbounds(self):
|
|
|
|
return dial.get_bounds(self.id)
|
|
|
|
|
|
|
|
def Setstep(self, v):
|
|
|
|
dial.set_step(self.id, v)
|
|
|
|
|
|
|
|
def Setreturn(self, v):
|
|
|
|
dial.set_return(self.id, v)
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# This is the Frame class
|
2024-06-03 14:38:36 +00:00
|
|
|
class Frame(XFObject):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=60, h=60, l="Frame"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = frame.create(t, x, y, w, h, l)
|
|
|
|
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
###############################################################################
|
|
|
|
# This is the Input class
|
|
|
|
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
class Input(XFObject):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=60, h=30, l="Input"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = input.create(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
def Set(self, s):
|
|
|
|
input.set(self.id, s)
|
|
|
|
|
|
|
|
def Setcolor(self, c1, c2):
|
|
|
|
input.set_color(self.id, c1, c2)
|
|
|
|
|
|
|
|
def Get(self):
|
|
|
|
return input.get(self.id)
|
|
|
|
|
|
|
|
def Setreturn(self, v):
|
|
|
|
input.set_return(self.id, v)
|
|
|
|
|
|
|
|
def Setscroll(self, v):
|
|
|
|
input.set_scroll(self.id, v)
|
|
|
|
|
|
|
|
def Setcursorpos(self, x, y=1):
|
|
|
|
input.set_cursorpos(self.id, x, y)
|
|
|
|
|
|
|
|
def Setselected(self, v):
|
|
|
|
input.set_selected(self.id, v)
|
|
|
|
|
|
|
|
def Setselectedrange(self, x1, x2):
|
|
|
|
input.set_selected_range(self.id, x1, x2)
|
|
|
|
|
|
|
|
def __setattr__(self, name, value):
|
|
|
|
if name == "value":
|
|
|
|
self.Set(value)
|
|
|
|
else:
|
|
|
|
XFObject.__setattr__(self, name, value)
|
|
|
|
|
|
|
|
def __getattr__(self, name):
|
|
|
|
if name == "value":
|
|
|
|
return self.Get()
|
|
|
|
else:
|
|
|
|
return XFObject.__getattr__(self, name)
|
|
|
|
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
###############################################################################
|
|
|
|
# This is the Menu class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Menu(XFObject):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=60, h=30, l="Menu"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = menu.create(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
def Clear(self):
|
|
|
|
menu.clear(self.id)
|
|
|
|
|
|
|
|
def Set(self, s):
|
|
|
|
menu.set(self.id, s)
|
|
|
|
|
|
|
|
def Addto(self, s):
|
|
|
|
menu.addto(self.id, s)
|
|
|
|
|
|
|
|
def Replace(self, n, s):
|
|
|
|
menu.replace_item(self.id, n, s)
|
|
|
|
|
|
|
|
def Delete(self, n):
|
|
|
|
menu.delete_item(self.id, n)
|
|
|
|
|
|
|
|
def Setshortcut(self, n, s):
|
|
|
|
menu.set_item_shortcut(self.id, n, s)
|
|
|
|
|
|
|
|
def Setmode(self, n, m):
|
|
|
|
menu.set_item_mode(self.id, n, m)
|
|
|
|
|
|
|
|
def Showsymbol(self, n):
|
|
|
|
menu.show_symbol(self.id, n)
|
|
|
|
|
|
|
|
def Get(self):
|
|
|
|
return menu.get(self.id)
|
|
|
|
|
|
|
|
def Getmaxitems(self):
|
|
|
|
return menu.get_maxitems(self.id)
|
|
|
|
|
|
|
|
def Gettext(self):
|
|
|
|
return menu.get_text(self.id)
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# This is the Positioner class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Positioner(XFObject):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=60, h=60, l="Positioner"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = positioner.create(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
def Setx(self, v):
|
|
|
|
positioner.set_xvalue(self.id, v)
|
|
|
|
|
|
|
|
def Sety(self, v):
|
|
|
|
positioner.set_yvalue(self.id, v)
|
|
|
|
|
|
|
|
def Setxbounds(self, x1, x2):
|
|
|
|
positioner.set_xbounds(self.id, x1, x2)
|
|
|
|
|
|
|
|
def Setybounds(self, y1, y2):
|
|
|
|
positioner.set_ybounds(self.id, y1, y2)
|
|
|
|
|
|
|
|
def Setxstep(self, v):
|
|
|
|
positioner.set_xstep(self.id, v)
|
|
|
|
|
|
|
|
def Setystep(self, v):
|
|
|
|
positioner.set_ystep(self.id, v)
|
|
|
|
|
|
|
|
def Getx(self):
|
|
|
|
return positioner.get_xvalue(self.id)
|
|
|
|
|
|
|
|
def Gety(self):
|
|
|
|
return positioner.get_yvalue(self.id)
|
|
|
|
|
|
|
|
def Getxbounds(self):
|
|
|
|
positioner.get_xbounds(self.id)
|
|
|
|
|
|
|
|
def Getybounds(self):
|
|
|
|
positioner.get_ybounds(self.id)
|
|
|
|
|
|
|
|
def Setreturn(self, v):
|
|
|
|
positioner.set_return(self.id, v)
|
|
|
|
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
###############################################################################
|
|
|
|
# This is the Slider class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Slider(XFObject):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=60, h=30, l="Slider"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = slider.create(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
def Get(self):
|
|
|
|
return slider.get_value(self.id)
|
|
|
|
|
|
|
|
def Set(self, v):
|
|
|
|
slider.set_value(self.id, v)
|
|
|
|
|
|
|
|
def Getbounds(self):
|
|
|
|
return slider.get_bounds(self.id)
|
|
|
|
|
|
|
|
def Setbounds(self, v1, v2):
|
|
|
|
slider.set_bounds(self.id, v1, v2)
|
|
|
|
|
|
|
|
def Setreturn(self, v):
|
|
|
|
slider.set_return(self.id, v)
|
|
|
|
|
|
|
|
def Setstep(self, v):
|
|
|
|
slider.set_step(self.id, v)
|
|
|
|
|
|
|
|
def Setsize(self, v):
|
|
|
|
slider.set_size(self.id, v)
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
# This is the Valslider class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Valslider(Slider):
|
|
|
|
def __init__(self, t=0, x=10, y=10, w=60, h=30, l="Valslider"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = slider.create_val(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
def Setprecision(self, v):
|
|
|
|
slider.set_precision(self.id, v)
|
|
|
|
|
2024-05-31 20:16:31 +00:00
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
# This is the Timer class
|
|
|
|
|
2024-06-03 14:38:36 +00:00
|
|
|
|
|
|
|
class Timer(XFObject):
|
|
|
|
def __init__(self, t=1, x=10, y=10, w=60, h=30, l="Timer"):
|
|
|
|
XFObject.__init__(self)
|
|
|
|
self.id = timer.create(t, x, y, w, h, l)
|
|
|
|
_objects[str(self.id)] = self
|
|
|
|
self.cb = _nocb
|
|
|
|
self.args = self
|
|
|
|
|
|
|
|
def Set(self, v):
|
|
|
|
timer.set(self.id, v)
|
|
|
|
|
|
|
|
def Get(self):
|
|
|
|
return timer.get(self.id)
|