Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: iso-8859-15 -*-
- import os
- import urwid, sys
- import urwid.curses_display
- g_radio_button_group = []
- def on_mode_button(button, state):
- global g_selected
- if state:
- g_selected= button.get_label()
- def exit_command(*args):
- raise urwid.ExitMainLoop()
- def refresh_form():
- if not login_user_id:
- user_input.set_edit_text("")
- pile_content = user_screen_pile
- pile_content.set_focus(user_padded)
- elif current_screen=='CARTON':
- carton_input.set_edit_text("")
- carton_error.set_text("")
- pile_content = carton_screen_pile
- pile_content.set_focus(carton_padded)
- elif current_screen=='CARTON_ERROR':
- return
- root_filler_mapped = urwid.AttrMap(urwid.Filler(pile_content, 'top'), 'background')
- loop.widget = root_filler_mapped
- def change_screen(screen_name):
- global pile_content, current_screen, root_filler_mapped, loop, hint_text, g_radio_button_group
- if screen_name=='LOAD':
- current_screen='LOAD'
- hint_text.set_text("CTRL-R : Refrescar\nCTRL-X : Salir")
- pile_content = substitute_screen_pile
- load_input.set_edit_text('')
- pile_content.set_focus(load_padded)
- elif screen_name=='CARTON':
- current_screen='CARTON'
- carton_input.set_edit_text("")
- hint_text.set_text("CTRL-R : Refrescar\nCTRL-X : Salir")
- pile_content = carton_screen_pile
- pile_content.set_focus(carton_padded)
- elif screen_name=='SELECT_SUBSTITUTE':
- current_screen='SELECT_SUBSTITUTE'
- hint_text.set_text("CTRL-R : Refrescar\nCTRL-X : Salir")
- pile_content = substitute_screen_pile
- elif screen_name=='CARTON_ERROR':
- current_screen='CARTON_ERROR'
- hint_text.set_text("CTRL-A : Aceptar")
- pile_content = carton_error_pile
- root_filler_mapped = urwid.AttrMap(urwid.Filler(pile_content, 'top'), 'background')
- loop.widget = root_filler_mapped
- def unhandled_input(key):
- global valid_message_visible, current_screen
- if current_screen=='CARTON_ERROR':
- if key =="ctrl a":
- carton_error.set_text('')
- change_screen('CARTON')
- else:
- return
- if key == "ctrl x":
- exit_command()
- return
- if key == "ctrl r":
- refresh_form()
- return
- if key == "ctrl a":
- if valid_message_visible:
- hide_valid_message()
- return
- return
- class EditUser(urwid.Edit):
- def validate(self, maintain_screen_state=False):
- global login_user_id
- self.set_edit_text(self.get_edit_text().upper())
- temp_login_user_id = self.get_edit_text()
- if not maintain_screen_state:
- change_screen('CARTON')
- return True
- def keypress(self, size, key):
- self.set_edit_text(self.get_edit_text().upper())
- user_error.set_text('')
- if key in ("tab", "enter"):
- self.validate()
- return
- ret = urwid.Edit.keypress(self, size, key)
- return ret
- class EditCarton(urwid.Edit):
- def validate(self, maintain_screen_state=False):
- global g_radio_button_group, locn_list_options
- self.set_edit_text(self.get_edit_text().upper())
- carton_nbr = self.get_edit_text()
- g_radio_button_group=[]
- for i in range(1,5):
- b = urwid.RadioButton(g_radio_button_group, '%d'%(i), False, on_state_change=on_mode_button)
- locn_list_options = urwid.GridFlow(g_radio_button_group, 15, 3, 1, 'left')
- change_screen('SELECT_SUBSTITUTE')
- return True
- def keypress(self, size, key):
- self.set_edit_text(self.get_edit_text().upper())
- carton_error.set_text('')
- if key in ("tab", "enter"):
- self.validate()
- return
- ret = urwid.Edit.keypress(self, size, key)
- return ret
- palette = [("background", "", ""),("header", "dark green", ""),('editfield','black, underline', 'light gray','underline'),("error", "dark red", ""),("success", "dark green", ""),("hint", "brown", ""),("info", "white", ""),]
- header = urwid.Text("\nRadio Button Sample\n")
- header_mapped = urwid.AttrWrap(header, 'header')
- blank_label = urwid.Text("")
- blank_label_mapped = urwid.AttrMap(blank_label, "info")
- user_input = EditUser(("background", "Usuario: "))
- user_mapped = urwid.AttrWrap(user_input, 'editfield')
- user_padded = urwid.Padding(user_mapped, width=len("Usuario: ") + 20)
- user_error = urwid.Text("")
- user_error_mapped = urwid.AttrMap(user_error, "error")
- r_button = urwid.RadioButton(g_radio_button_group, 'Hi', False, on_state_change=on_mode_button)
- locn_list_options = urwid.GridFlow(g_radio_button_group, 15, 3, 1, 'left')
- carton_input = EditCarton(("background", "CTN : "))
- carton_mapped = urwid.AttrWrap(carton_input, 'editfield')
- carton_padded = urwid.Padding(carton_mapped, width=len("CTN : ") + 20)
- carton_error = urwid.Text("")
- carton_error_mapped = urwid.AttrMap(carton_error, "error")
- carton_label = urwid.Text("")
- carton_label_mapped = urwid.AttrMap(carton_label, "info")
- hint_text = urwid.Text("CTRL-R : Refrescar\nCTRL-X : Salir")
- hint_text_mapped = urwid.AttrWrap(hint_text, 'hint')
- user_screen_pile = urwid.Pile([header_mapped, user_padded, blank_label_mapped, user_error_mapped, blank_label_mapped, hint_text_mapped])
- carton_screen_pile = urwid.Pile([header_mapped, carton_padded, blank_label_mapped, carton_error_mapped, blank_label_mapped, hint_text_mapped])
- substitute_screen_pile = urwid.Pile([header_mapped, carton_label_mapped, blank_label_mapped, locn_list_options , hint_text_mapped])
- pile_content = user_screen_pile
- root_filler_mapped = urwid.AttrMap(urwid.Filler(pile_content, 'top'), 'background')
- screen = urwid.curses_display.Screen()
- loop = urwid.MainLoop(root_filler_mapped, palette,screen, unhandled_input=unhandled_input)
- try:
- old = screen.tty_signal_keys('undefined', 'undefined', 'undefined', 'undefined', 'undefined')
- loop.run()
- except Exception,e:
- raise
- finally:
- screen.tty_signal_keys(*old)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement