hi!

i have some problems getting an overlay widget to work.
can you help me please and have a quick look at the following code?

this is the error if i press 'h' which triggers the code:
"ValueError: need more than 1 value to unpack"

i looked at the examples but didn't find any hint why my code doesn't work but
the example's one does.

thank your for this good piece of software!

regards
thomas prochaska

#!/usr/bin/env python
##      gajimnox.py
##
##
## Copyright (C) 2007 Thomas Prochaska <[EMAIL PROTECTED]>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published
## by the Free Software Foundation; version 2 only.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##

import urwid.curses_display
import urwid

class Gajimnox:
        palette = [
                ('header', 'white', 'dark blue', 'standout'),
                ('footer', 'black', 'light gray', 'standout'),
                ('body', 'white', 'black'),
                ('help', 'white', 'black')]

        def popRoster(self, nickname):
                w = urwid.Edit(nickname)
                self.roster.append(w)

        def setup_views(self):
                # main interface
                # header bauen
                headertxt = urwid.Text('Gajim 0.11.1 :: online with account 
[EMAIL PROTECTED] :: 21:30', align='left')
                headertxt = urwid.AttrWrap(headertxt, 'header')

                # footer bauen
                footertxt = urwid.Text('STATUS - Press "ALT+q" to exit or "h" 
for help', align='center')
                footertxt = urwid.AttrWrap(footertxt, 'footer')

                # body bauen
                roster = urwid.ListBox(urwid.SimpleListWalker(self.roster))
                accounts = 
urwid.ListBox(urwid.SimpleListWalker([urwid.Edit(('body', 'Accounts\n'))]))
                body = urwid.Columns([roster, accounts], 2, 'roster')

                # frame bauen
                topframe = urwid.Frame(body, headertxt, footertxt)

                # help overlay message
                # FIXME: overlay funktioniert ned.
                help = urwid.Text('Help\n----\n"h"\t ... this help 
screen\n"ESC"\t ... exit this help screen\n"ALT+q"\t ... exit the programm', 
align='center')
                help = urwid.AttrWrap(help, 'help')
                help = urwid.Overlay(help, topframe, 'center', None, 'middle', 
None)
                #help = urwid.Overlay(help, topframe, 'center', 1, 'middle', 
None)

                return topframe, help

        def main(self):
                self.roster = []
                a = urwid.Edit('a')
                b = urwid.Edit('b')
                self.roster.append(a)
                self.roster.append(b)
                self.ui = urwid.curses_display.Screen()
                self.ui.register_palette(self.palette)
                self.view, self.help_view = self.setup_views()
                self.ui.run_wrapper(self.run)

        def run(self):
                size = self.ui.get_cols_rows()
                canvas = self.view.render(size)
                self.ui.draw_screen(size, canvas)

                while True:
                        canvas = self.view.render(size, focus=True)
                        self.ui.draw_screen(size, canvas)
                        keys = self.ui.get_input()
                        if 'meta q' in keys:
                                break
                        for k in keys:
                                if k == 'window resize':
                                        size = self.ui.get_cols_rows()
                                        continue
                                elif k == 'h':
                                        canvas = self.help_view.render(size)
                                        self.ui.draw_screen(size, canvas)
                                        while True:
                                                canvas = 
self.help_view.render(size)
                                                self.ui.draw_screen(size, 
canvas)
                                                keys = self.ui.get_input()
                                                if 'esc' in keys:
                                                        break
                                                for k in keys:
                                                        if k == 'window resize':
                                                                size = 
self.ui.get_cols_rows()
                                                        elif k == 'x':
                                                                print 'x'
                                                                break
                                elif k == 'r':
                                        self.popRoster('r')
                                        self.view, self.help_view = 
self.setup_views()
                                elif k == 'a':
                                        self.popRoster('a')
                                        self.view, self.help_view = 
self.setup_views()

def main():
        Gajimnox().main()

if '__main__' == __name__:
        main()

Attachment: pgpME6jKT4YIM.pgp
Description: PGP signature

_______________________________________________
Urwid mailing list
[email protected]
http://lists.excess.org/mailman/listinfo/urwid

Reply via email to