I have felt the same, thinking back to handling xml in the past. I was
thinking that you draw a SVG in inkscape, which xml is read for python UI.

It looks like its a pythonic way if you need xml, but I've only used it in
small protos. I'm curious if anyone has used "amara" in bigger projects?

(Not saying specifically this project, for anything.)

http://www.xml3k.org/Amara/QuickRef [ link to amara1.0  quickref, since 2.0

if curious: random snippit, using ETree vs amara.
http://stackoverflow.com/questions/1926512/editing-the-xml-attributes-from-a-xml-file-using-python/1934375#1934375

Here's something I whipped up. Loads window containing list of buttons.

# testing amara for xml
# see also: eclipse://jakeref/xml-amara.py
def test():
    # quick example for UI interface
    xml_ui = """
<window type="dialog.ok cancel" text="ok?">
    <button type="ok" text="save" selected="true">
        <loc x="100" y="240" w="40" h="10" />
    </button>
    <button type="cancel" text="cancel">
        <loc x="300" y="240" w="40" h="10" />
    </button>
</window>"""

    import amara
    from amara import bindery
    import pygame
    from pygame.locals import Rect

    class Window():
        def __str__(self): return "Window<type='%s', text='%s'>" %
(self.type, self.text)
    class Button():
        def __str__(self): return "\tButton<type='%s', text='%s',
rect='%s'>" % (self.type, self.text, self.rect)

    doc = bindery.parse(xml_ui)

    win = Window()
    win.widgets = []
    win.text, win.type = doc.window.text, doc.window.type

    for cur in doc.window.button:
        b = Button()
        b.rect = pygame.Rect( int(cur.loc.x), int(cur.loc.y),
int(cur.loc.w), int(cur.loc.h))
        b.type = cur.type
        b.text = cur.text

        win.widgets.append(b)
    """output:
    Window<type='dialog.ok cancel', text='ok?'>
        Button<type='ok' text='save',    rect='<rect(100, 240, 40, 10)>'>
        Button<type='cancel' text='cancel',    rect='<rect(300, 240, 40,
10)>'>
    """
    print win
    for cur in win.widgets: print cur


-- 
Jake

Reply via email to