Advertisement
Guest User

Untitled

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