diff options
-rw-r--r-- | LightInstallation.py | 3 | ||||
-rw-r--r-- | config/Outdoor.xml | 13 | ||||
-rw-r--r-- | renderers/Pygame.xml | 7 | ||||
-rw-r--r-- | renderers/SixStripUDP.xml | 18 | ||||
-rw-r--r-- | tests/testdata/compositeTESTout.xml | 10 | ||||
-rw-r--r-- | tests/testdata/compositeTRUTH.xml | 10 | ||||
-rw-r--r-- | tests/testdata/inheritanceTESTout.xml | 2 | ||||
-rw-r--r-- | tests/testdata/override.xml | 2 | ||||
-rw-r--r-- | util/Config.py | 15 |
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(): |