diff options
Diffstat (limited to 'gui.py')
-rw-r--r-- | gui.py | 102 |
1 files changed, 56 insertions, 46 deletions
@@ -6,9 +6,7 @@ class Conversation(object): def __init__(self): self.column1_edit = urwid.Edit(caption="Send: ") self.column1_check = urwid.CheckBox("Link to other",state=True,on_state_change=self.on_link1_changed) - self.column1_disconnect = urwid.Button("Disconnect", lambda x: - self.add_message(time.strftime("%H:%M:%S: ") + "FOO") - ) + self.column1_disconnect = urwid.Button("Disconnect", self.on_column1_disconnect) self.column1 = urwid.ListBox([ self.column1_edit, self.column1_check, @@ -16,9 +14,7 @@ class Conversation(object): self.column2_edit = urwid.Edit(caption="Send: ") self.column2_check = urwid.CheckBox("Link to other",state=True,on_state_change=self.on_link2_changed) - self.column2_disconnect = urwid.Button("Disconnect", lambda x: - self.add_message(time.strftime("%H:%M:%S: ") + "FOO") - ) + self.column2_disconnect = urwid.Button("Disconnect", self.on_column1_disconnect) self.column2 = urwid.ListBox([ self.column2_edit, self.column2_check, @@ -46,8 +42,9 @@ class Conversation(object): def add_message(self,msg): w=urwid.Text(msg) - self.messages.append(w) - self.textbox.set_focus(len(self.messages)) + self.messages.contents.append(w) + self.textbox.set_focus(len(self.messages.contents)) + def main(self): self.ui = urwid.curses_display.Screen() self.ui.register_palette([ @@ -59,52 +56,65 @@ class Conversation(object): def run(self): size = self.ui.get_cols_rows() - - while True: - try: + running=True + try: + while running: keys = self.ui.get_input() - except KeyboardInterrupt: - sys.exit(0) - - for k in keys: - if k == "window resize": - size = self.ui.get_cols_rows() - elif k == "enter": - if self.body.get_focus() == self.columns \ - and self.columns.get_focus() == self.column1 \ - and self.column1.get_focus()[0] == self.column1_edit: - self.add_message(self.column1_edit.get_text()[0]) - elif self.body.get_focus() == self.columns \ - and self.columns.get_focus() == self.column2 \ - and self.column2.get_focus()[0] == self.column2_edit: - self.add_message(self.column2_edit.get_text()[0]) + + for k in keys: + if k == "window resize": + size = self.ui.get_cols_rows() + elif k == "enter": + if self.body.get_focus() == self.columns \ + and self.columns.get_focus() == self.column1 \ + and self.column1.get_focus()[0] == self.column1_edit: + self.on_column1_send(self.column1_edit.get_text()[0]) + elif self.body.get_focus() == self.columns \ + and self.columns.get_focus() == self.column2 \ + and self.column2.get_focus()[0] == self.column2_edit: + self.on_column2_send(self.column2_edit.get_text()[0]) + else: + self.top.keypress( size, k ) + elif k == "tab": + self.focus_ring.reverse() + elem = self.focus_ring.pop() + for pair in elem: + pair[0].set_focus(pair[1]) + self.focus_ring.insert(0,elem) + self.focus_ring.reverse() + elif k == "f2": + self.column1_check.toggle_state() + elif k == "f3": + self.column2_check.toggle_state() + elif k == "f10": + running=False else: self.top.keypress( size, k ) - elif k == "tab": - self.focus_ring.reverse() - elem = self.focus_ring.pop() - for pair in elem: - pair[0].set_focus(pair[1]) - self.focus_ring.insert(0,elem) - self.focus_ring.reverse() - elif k == "f2": - self.column1_check.toggle_state() - elif k == "f3": - self.column2_check.toggle_state() - elif k == "f10": - sys.exit(0) - else: - self.top.keypress( size, k ) - - self.draw_screen( size ) + + self.draw_screen( size ) + except KeyboardInterrupt: + pass def draw_screen(self, size): canvas = self.top.render( size, focus=True ) self.ui.draw_screen( size, canvas ) - def on_link1_changed(self,a,b): - pass + def on_link1_changed(self,*args): + self.add_message("DEBUG: on_link1_changed") + def on_link2_changed(self,a,b): - pass + self.add_message("DEBUG: on_link2_changed") + + def on_column1_send(self,message): + self.add_message("DEBUG: on_column1_send message=%s"%message) + + def on_column2_send(self,message): + self.add_message("DEBUG: on_column2_send message=%s"%message) + + def on_column1_disconnect(self,*args): + self.add_message("DEBUG: on_column1_disconnect") + + def on_column2_disconnect(self,*args): + self.add_message("DEBUG: on_column2_disconnect") Conversation().main() |