aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LightInstallation.py3
-rw-r--r--config/Outdoor.xml13
-rw-r--r--renderers/Pygame.xml7
-rw-r--r--renderers/SixStripUDP.xml18
-rw-r--r--tests/testdata/compositeTESTout.xml10
-rw-r--r--tests/testdata/compositeTRUTH.xml10
-rw-r--r--tests/testdata/inheritanceTESTout.xml2
-rw-r--r--tests/testdata/override.xml2
-rw-r--r--util/Config.py15
9 files changed, 60 insertions, 20 deletions
diff --git a/LightInstallation.py b/LightInstallation.py
index 9f9f6da..01fea1c 100644
--- a/LightInstallation.py
+++ b/LightInstallation.py
@@ -26,7 +26,6 @@ class LightInstallation:
compReg.initRegistry()
compReg.registerComponent(self.screen, 'Screen') #TODO: move to constants file
config = configGetter.loadConfigFile(configFileName)
- pdb.set_trace()
#read configs from xml
rendererConfig = config.find('RendererConfiguration')
pixelConfig = config.find('PixelConfiguration')
@@ -103,7 +102,7 @@ class LightInstallation:
main_log.error('Error importing ' + module+'.'+'.className. Component not\
initialized.')
continue #TODO: verify functions as expected
- args = configGetter.generateArgDict(configItem.find('Args'))
+ args = configGetter.pullArgsFromItem(configItem)
args['parentScope'] = self #TODO: we shouldn't give away scope
#like this, find another way.
try:
diff --git a/config/Outdoor.xml b/config/Outdoor.xml
index 8ba7962..cae610b 100644
--- a/config/Outdoor.xml
+++ b/config/Outdoor.xml
@@ -26,7 +26,12 @@
</PixelMapper>
</PixelMapperConfiguration>
<RendererConfiguration>
- <InheritsFrom>renderers/SixStripUDPPygame.xml</InheritsFrom>
+ <Renderer>
+ <InheritsFrom>renderers/SixStripUDP.xml</InheritsFrom>
+ </Renderer>
+ <Renderer>
+ <InheritsFrom>renderers/Pygame.xml</InheritsFrom>
+ </Renderer>
</RendererConfiguration>
<InputConfiguration>
<InputElement>
@@ -36,7 +41,7 @@
<RefreshInterval>100</RefreshInterval>
</Args>
</InputElement>
- <InputElement>
+ <InputElement Id="followmouse">
<InheritsFrom>inputs/MouseFollower.xml</InheritsFrom>
</InputElement>
</InputConfiguration>
@@ -49,14 +54,14 @@
<RenderToScreen>False</RenderToScreen>
</Args>
</Behavior>
- <Behavior>
+ <Behavior Id="colorchange">
<Class>behaviors.ColorChangerBehavior</Class>
<Args>
<Id>colorchange</Id>
<z-index>0</z-index>
<RenderToScreen>False</RenderToScreen>
<!--<ColorList>
- <Color>(255,0,0)</Color>
+ <Color>(255,0,0)</Color>
</ColorList>-->
<Inputs>
<Id>pygame</Id>
diff --git a/renderers/Pygame.xml b/renderers/Pygame.xml
new file mode 100644
index 0000000..e37739d
--- /dev/null
+++ b/renderers/Pygame.xml
@@ -0,0 +1,7 @@
+<Renderer>
+ <Class>renderers.PygameRenderer</Class>
+ <Args>
+ <Id>pygamerender</Id>
+ <displaySize>(1300,50)</displaySize>
+ </Args>
+</Renderer>
diff --git a/renderers/SixStripUDP.xml b/renderers/SixStripUDP.xml
new file mode 100644
index 0000000..f3c9e75
--- /dev/null
+++ b/renderers/SixStripUDP.xml
@@ -0,0 +1,18 @@
+<Renderer>
+ <Class>renderers.IndoorRenderer</Class>
+ <Args>
+ <Id>indoorRenderer</Id>
+ <PowerSupply>
+ <IP>10.31.255.233</IP>
+ <PortMapping>{'strip1':1, 'strip2':2}</PortMapping>
+ </PowerSupply>
+ <PowerSupply>
+ <IP>10.32.97.17</IP>
+ <PortMapping>{'strip3':1, 'strip4':2}</PortMapping>
+ </PowerSupply>
+ <PowerSupply>
+ <IP>10.32.96.211</IP>
+ <PortMapping>{'strip5':1, 'strip6':2}</PortMapping>
+ </PowerSupply>
+ </Args>
+</Renderer>
diff --git a/tests/testdata/compositeTESTout.xml b/tests/testdata/compositeTESTout.xml
index 435b75a..a306190 100644
--- a/tests/testdata/compositeTESTout.xml
+++ b/tests/testdata/compositeTESTout.xml
@@ -1,11 +1,11 @@
<Override>
<A>
- <override>overide parameter</override>
+ <blah>test</blah>
+ <foo>bar</foo>
+<override>overide parameter</override>
</A>
-<B OverrideBehavior="Merge">
- <this>taht</this>
- <that>this</that>
-<SomeNewParam>blah</SomeNewParam>
+<B OverrideBehavior="Replace">
+ <SomeNewParam>blah</SomeNewParam>
</B>
<A>
<someparam>appenedA</someparam>
diff --git a/tests/testdata/compositeTRUTH.xml b/tests/testdata/compositeTRUTH.xml
index 435b75a..a306190 100644
--- a/tests/testdata/compositeTRUTH.xml
+++ b/tests/testdata/compositeTRUTH.xml
@@ -1,11 +1,11 @@
<Override>
<A>
- <override>overide parameter</override>
+ <blah>test</blah>
+ <foo>bar</foo>
+<override>overide parameter</override>
</A>
-<B OverrideBehavior="Merge">
- <this>taht</this>
- <that>this</that>
-<SomeNewParam>blah</SomeNewParam>
+<B OverrideBehavior="Replace">
+ <SomeNewParam>blah</SomeNewParam>
</B>
<A>
<someparam>appenedA</someparam>
diff --git a/tests/testdata/inheritanceTESTout.xml b/tests/testdata/inheritanceTESTout.xml
index e8fb228..0d4bba0 100644
--- a/tests/testdata/inheritanceTESTout.xml
+++ b/tests/testdata/inheritanceTESTout.xml
@@ -2,7 +2,7 @@
<B>
<SubB>
<SubSubB>
- <A>
+ <A param3="val3">
<param1>1</param1>
<param2>2</param2>
</A>
diff --git a/tests/testdata/override.xml b/tests/testdata/override.xml
index 1108fb0..722554a 100644
--- a/tests/testdata/override.xml
+++ b/tests/testdata/override.xml
@@ -2,7 +2,7 @@
<A>
<override>overide parameter</override>
</A>
-<B OverrideBehavior="Merge">
+<B OverrideBehavior="Replace">
<SomeNewParam>blah</SomeNewParam>
</B>
<APPEND>
diff --git a/util/Config.py b/util/Config.py
index dd0b790..4c1eb1e 100644
--- a/util/Config.py
+++ b/util/Config.py
@@ -7,6 +7,7 @@ import util.Search as Search
from logger import main_log, exception_log
classArgsMem = {}
CONFIG_PATH = 'config/'
+DEFAULT_OVERRIDE_MODE = 'Merge'
def loadParamRequirementDict(className):
if not className in classArgsMem: #WOO CACHING
classArgsMem[className] = fileToDict(CONFIG_PATH + className)
@@ -38,7 +39,8 @@ def compositeXMLTrees(parentTree, overridingTree): #TODO: break up into sub-meth
if parentTree == None:
return overridingTree
if overridingTree == None:
- return parentTree
+ return parentTree #TODO: this will probably cause a bug since it isn't in-place on
+ #overridingTree
parentTree = getElement(parentTree)
overridingTree = getElement(overridingTree)
parentItems = parentTree.getchildren()
@@ -55,7 +57,7 @@ def compositeXMLTrees(parentTree, overridingTree): #TODO: break up into sub-meth
main_log.warn('ABUSE! Override of multiple items isn\'t well defined. Don\'t do\
it!')
interEl = intersectingElements[0]
- mode = 'Replace'
+ mode = DEFAULT_OVERRIDE_MODE
if Strings.OVERRIDE_BEHAVIOR in interEl.attrib:
mode = interEl.attrib[Strings.OVERRIDE_BEHAVIOR]
if mode != 'Replace' and mode != 'Merge':
@@ -93,6 +95,15 @@ def fileToDict(fileName):
exception_log.info(fileName + ' is not a well formed python dict. Parsing failed')
return eval(fileText)
#parses arguments into python objects if possible, otherwise leaves as strings
+def pullArgsFromItem(parentNode):
+ attribArgs = {}
+ for arg in parentNode.attrib: #automatically pull attributes into the argdict
+ attribArgs[arg] = parentNode.attrib[arg]
+ argNode = parentNode.find('Args')
+ args = generateArgDict(argNode)
+ for key in attribArgs:
+ args[key] = attribArgs[key]
+ return args
def generateArgDict(parentNode, recurse=False):
args = {}
for arg in parentNode.getchildren():