Advertisement
Guest User

Untitled

a guest
May 25th, 2021
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.06 KB | None | 0 0
  1. # -*- coding: iso-8859-15 -*-
  2. import os
  3. import urwid, sys
  4. import urwid.curses_display
  5. g_radio_button_group = []
  6.  
  7. def on_mode_button(button, state):
  8.     global g_selected
  9.     if state:
  10.         g_selected= button.get_label()
  11.  
  12. def exit_command(*args):
  13.     raise urwid.ExitMainLoop()
  14.  
  15. def refresh_form():
  16.     if not login_user_id:
  17.         user_input.set_edit_text("")
  18.         pile_content = user_screen_pile
  19.         pile_content.set_focus(user_padded)
  20.     elif current_screen=='CARTON':
  21.         carton_input.set_edit_text("")
  22.         carton_error.set_text("")
  23.         pile_content = carton_screen_pile
  24.         pile_content.set_focus(carton_padded)
  25.     elif current_screen=='CARTON_ERROR':
  26.         return
  27.  
  28.     root_filler_mapped = urwid.AttrMap(urwid.Filler(pile_content, 'top'), 'background')
  29.     loop.widget = root_filler_mapped
  30.  
  31.  
  32. def change_screen(screen_name):
  33.     global  pile_content, current_screen, root_filler_mapped, loop, hint_text, g_radio_button_group
  34.     if screen_name=='LOAD':
  35.         current_screen='LOAD'
  36.         hint_text.set_text("CTRL-R : Refrescar\nCTRL-X : Salir")
  37.         pile_content = substitute_screen_pile
  38.         load_input.set_edit_text('')
  39.         pile_content.set_focus(load_padded)
  40.     elif screen_name=='CARTON':
  41.         current_screen='CARTON'
  42.         carton_input.set_edit_text("")
  43.         hint_text.set_text("CTRL-R : Refrescar\nCTRL-X : Salir")
  44.         pile_content = carton_screen_pile
  45.         pile_content.set_focus(carton_padded)
  46.     elif screen_name=='SELECT_SUBSTITUTE':
  47.         current_screen='SELECT_SUBSTITUTE'
  48.         hint_text.set_text("CTRL-R : Refrescar\nCTRL-X : Salir")
  49.         pile_content = substitute_screen_pile
  50.     elif screen_name=='CARTON_ERROR':
  51.         current_screen='CARTON_ERROR'
  52.         hint_text.set_text("CTRL-A : Aceptar")
  53.         pile_content = carton_error_pile
  54.  
  55.     root_filler_mapped = urwid.AttrMap(urwid.Filler(pile_content, 'top'), 'background')
  56.     loop.widget = root_filler_mapped
  57.  
  58. def unhandled_input(key):
  59.     global valid_message_visible, current_screen
  60.     if current_screen=='CARTON_ERROR':
  61.         if key =="ctrl a":
  62.             carton_error.set_text('')
  63.             change_screen('CARTON')
  64.         else:
  65.             return
  66.  
  67.     if key == "ctrl x":
  68.         exit_command()
  69.         return
  70.  
  71.     if key == "ctrl r":
  72.         refresh_form()
  73.         return
  74.  
  75.     if key == "ctrl a":
  76.         if valid_message_visible:
  77.             hide_valid_message()
  78.         return
  79.  
  80.     return
  81.  
  82. class EditUser(urwid.Edit):
  83.  
  84.     def validate(self, maintain_screen_state=False):
  85.         global login_user_id
  86.         self.set_edit_text(self.get_edit_text().upper())
  87.         temp_login_user_id = self.get_edit_text()
  88.  
  89.         if not maintain_screen_state:
  90.             change_screen('CARTON')
  91.  
  92.         return True
  93.  
  94.  
  95.     def keypress(self, size, key):
  96.         self.set_edit_text(self.get_edit_text().upper())
  97.         user_error.set_text('')
  98.         if key in ("tab", "enter"):
  99.             self.validate()
  100.             return
  101.  
  102.         ret = urwid.Edit.keypress(self, size, key)
  103.  
  104.         return ret
  105.  
  106. class EditCarton(urwid.Edit):
  107.  
  108.     def validate(self, maintain_screen_state=False):
  109.         global g_radio_button_group, locn_list_options
  110.         self.set_edit_text(self.get_edit_text().upper())
  111.         carton_nbr = self.get_edit_text()
  112.         g_radio_button_group=[]
  113.         for i in range(1,5):
  114.             b = urwid.RadioButton(g_radio_button_group, '%d'%(i), False, on_state_change=on_mode_button)
  115.         locn_list_options = urwid.GridFlow(g_radio_button_group, 15, 3, 1, 'left')
  116.         change_screen('SELECT_SUBSTITUTE')
  117.         return True
  118.  
  119.     def keypress(self, size, key):
  120.         self.set_edit_text(self.get_edit_text().upper())
  121.         carton_error.set_text('')
  122.         if key in ("tab", "enter"):
  123.             self.validate()
  124.             return
  125.         ret = urwid.Edit.keypress(self, size, key)
  126.         return ret
  127.  
  128. palette = [("background", "", ""),("header", "dark green", ""),('editfield','black, underline', 'light gray','underline'),("error", "dark red", ""),("success", "dark green", ""),("hint", "brown", ""),("info", "white", ""),]
  129.  
  130. header = urwid.Text("\nRadio Button Sample\n")
  131. header_mapped = urwid.AttrWrap(header, 'header')
  132.  
  133. blank_label = urwid.Text("")
  134. blank_label_mapped = urwid.AttrMap(blank_label, "info")
  135.  
  136. user_input = EditUser(("background", "Usuario: "))
  137. user_mapped = urwid.AttrWrap(user_input, 'editfield')
  138. user_padded = urwid.Padding(user_mapped, width=len("Usuario: ") + 20)
  139. user_error = urwid.Text("")
  140. user_error_mapped = urwid.AttrMap(user_error, "error")
  141.  
  142. r_button = urwid.RadioButton(g_radio_button_group, 'Hi', False, on_state_change=on_mode_button)
  143. locn_list_options = urwid.GridFlow(g_radio_button_group, 15, 3, 1, 'left')
  144. carton_input = EditCarton(("background", "CTN : "))
  145. carton_mapped = urwid.AttrWrap(carton_input, 'editfield')
  146. carton_padded = urwid.Padding(carton_mapped, width=len("CTN : ") + 20)
  147. carton_error = urwid.Text("")
  148. carton_error_mapped = urwid.AttrMap(carton_error, "error")
  149. carton_label = urwid.Text("")
  150. carton_label_mapped = urwid.AttrMap(carton_label, "info")
  151.  
  152. hint_text = urwid.Text("CTRL-R : Refrescar\nCTRL-X : Salir")
  153. hint_text_mapped = urwid.AttrWrap(hint_text, 'hint')
  154.  
  155. user_screen_pile = urwid.Pile([header_mapped, user_padded, blank_label_mapped, user_error_mapped, blank_label_mapped, hint_text_mapped])
  156. carton_screen_pile = urwid.Pile([header_mapped, carton_padded, blank_label_mapped, carton_error_mapped, blank_label_mapped, hint_text_mapped])
  157. substitute_screen_pile = urwid.Pile([header_mapped, carton_label_mapped, blank_label_mapped, locn_list_options , hint_text_mapped])
  158.  
  159.  
  160. pile_content = user_screen_pile
  161. root_filler_mapped = urwid.AttrMap(urwid.Filler(pile_content, 'top'), 'background')
  162. screen = urwid.curses_display.Screen()
  163. loop = urwid.MainLoop(root_filler_mapped, palette,screen, unhandled_input=unhandled_input)
  164.  
  165.  
  166. try:
  167.     old = screen.tty_signal_keys('undefined', 'undefined', 'undefined', 'undefined', 'undefined')
  168.     loop.run()
  169. except Exception,e:
  170.     raise
  171. finally:
  172.     screen.tty_signal_keys(*old)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement