ocarina/src/extra/gtknodes/node.py

95 lines
1.8 KiB
Python

#! /usr/bin/python
# To change this template, choose Tools | Templates
# and open the template in the editor.
__author__="bjschuma"
__date__ ="$May 16, 2010 10:27:25 PM$"
from ct import call
#from ct.call import *
from gtknodes import make
class Node:
def __init__(self,elm):
call.write("Creating node: "+elm.nodeName, 2)
self.elm = elm
self.part = None
self.function = None
self.init2()
def __del__(self):
call.write("Deleting node: "+self.elm.nodeName, 2)
def init2(self):
self.name = self.elm.nodeName.lower()
self.attrs = dict()
self.children = self.getchildren()
def __setitem__(self,key,value):
self.attrs[str(key).lower()] = str(value).lower()
def __getitem__(self,key):
return self.attrs[str(key).lower()]
def keys(self):
return self.attrs.keys()
def show(self):
self.part.show()
def hide(self):
self.part.hide()
def setattrs(self):
if ("show" in self.keys()) == False:
self["show"] = "true"
if ("click" in self.keys()) == False:
self["click"] = "none"
self["viewport"] = "false"
if self.elm.hasAttributes() == True:
for i in range( self.elm.attributes.length ):
item = self.elm.attributes.item(i)
self[item.name.lower()] = item.nodeValue.lower()
self.function = self["click"]
if self.part != None:
try:
self.part.connect("clicked", self.onclick)
except:
pass
if self["show"] == "true":
self.part.show()
def onclick(self,item):
if self.function!="none":
exec "call."+self.function+"()"
def getchildren(self):
if self.elm.hasChildNodes() == False:
return []
children = []
for node in self.elm.childNodes:
if not node.nodeName[0] == "#":
child = self.make(node)
if child != None:
children += [child]
return children
def make(self,child):
return make(child)