def _context_changed(self, e: PropertyChangedEventArgs): if e.property_name == "image": if self._image is not None: self._scene.remove_effect(self._image) self._image = None if isinstance(self._data_context.image, HTTPError): err: HTTPError = self._data_context.image msg = str(err.code) + "\n" + err.reason self._scene.add_effect( PopUpDialog(self._screen, msg, ["Close"], on_close=self._back, theme="user_theme")) elif isinstance(self._data_context.image, URLError): err: URLError = self._data_context.image self._scene.add_effect( PopUpDialog(self._screen, str(err.reason), ["Close"], on_close=self._back, theme="user_theme")) else: self._image = Print( self.screen, ColourImageFile(self._screen, self._data_context.image, height=self._screen.height), -1) self._scene.add_effect(self._image)
def start_trace(self, saved_data, real_data): try: if (len(self.data['COMPUTE'].strip()) == 0): self._scene.add_effect(PopUpDialog(self._screen, "Please enter a compute node name.", ["OK"])) return if not (TRACE.compute_list.has_key(self.data['COMPUTE'].strip())): self._scene.add_effect( PopUpDialog(self._screen, 'No ' + self.data["COMPUTE"].strip() + '(COMPUTE NODE) registered', ["OK"])) return if len(saved_data) == 0: self._scene.add_effect(PopUpDialog(self._screen, "Please enter a flow-trace condition.", ["OK"])) return num = len(self.trace_history) + 1 data = (saved_data, num) self.trace_history.insert(0, data) self.real_trace.append(real_data) self._list_view.value = len(self.trace_history) cmd_rt = TRACE.exec_trace(TRACE.compute_id, TRACE.compute_list[self.data['COMPUTE'].strip()], real_data) self._trace_result.value = cmd_rt except: LOG.exception_err_write()
def test_pop_up_widget(self): """ Check widget tab stops work as expected. """ def test_on_click(selection): raise NextScene(str(selection)) screen = MagicMock(spec=Screen, colours=8, unicode_aware=False) scene = MagicMock(spec=Scene) canvas = Canvas(screen, 10, 40, 0, 0) form = PopUpDialog(canvas, "Message", ["Yes", "No"], test_on_click) form.register_scene(scene) form.reset() # Check that the pop-up is rendered correctly. form.update(0) self.assert_canvas_equals( canvas, " \n" + " \n" + " +------------------+ \n" + " |Message | \n" + " | | \n" + " | < Yes > < No > | \n" + " +------------------+ \n" + " \n" + " \n" + " \n") # Check that mouse input triggers the close function. with self.assertRaises(NextScene): self.process_mouse(form, [(14, 5, MouseEvent.LEFT_CLICK)]) # Check that the pop-up swallows all events. event = object() self.assertIsNone(form.process_event(event))
def _on_action_selected(self, action): if action == 0: self._scene.add_effect(PopUpDialog(self._screen, "Historie.", ["Nakupy", "Prodeje", "Odpisy", "Zpet"], self._on_history_selected, True, u'green')) elif action == 1: raise NextScene("AddStock") elif action == 2: raise NextScene("ReduceStock") elif action == 3: raise NextScene("EditItem") elif action == 4: self._scene.add_effect(PopUpDialog(self._screen, "Opravdu smazat?.", ["Ano", "Ne"], self._delete_on_close, True, u'warning')) else : return
def _ok(self): try: self.save(validate=True) row = Row(self.data.values()) row.set_types(self.table.get_column_types()) self.table.edit_current_row(row) self._cancel() except InvalidFields: popup = PopUpDialog( self.__screen, 'Error: An invalid value vas entered into form', ['OK'], has_shadow=True) popup.set_theme('monochrome') self._scene.add_effect(popup)
def test_shadow(self): """ Check Frames support shadows. """ def test_on_click(selection): raise NextScene(str(selection)) screen = MagicMock(spec=Screen, colours=8) scene = MagicMock(spec=Scene) canvas = Canvas(screen, 10, 40, 0, 0) for y in range(10): canvas.print_at("X" * 40, 0, y) form = PopUpDialog( canvas, "Message", ["Yes", "No"], test_on_click, has_shadow=True) form.register_scene(scene) form.reset() # Check that the pop-up is rendered correctly. form.update(0) self.assert_canvas_equals( canvas, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "XXXXXXXXXX+------------------+XXXXXXXXXX\n" + "XXXXXXXXXX|Message | XXXXXXXXX\n" + "XXXXXXXXXX| | XXXXXXXXX\n" + "XXXXXXXXXX| < Yes > < No > | XXXXXXXXX\n" + "XXXXXXXXXX+------------------+ XXXXXXXXX\n" + "XXXXXXXXXXX XXXXXXXXX\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n")
def test_cjk_popup(self): """ Check PopUpDialog widgets work with CJK double-width characters. """ # Apologies to anyone who actually speaks this language! I just need some double-width # glyphs so have re-used the ones from the original bug report. screen = MagicMock(spec=Screen, colours=8, unicode_aware=False) scene = MagicMock(spec=Scene) canvas = Canvas(screen, 10, 40, 0, 0) form = PopUpDialog(canvas, u"你確定嗎? 你確定嗎? 你確定嗎?", [u"是", u"否"]) form.register_scene(scene) form.reset() # Check that the pop-up is rendered correctly. form.update(0) self.assert_canvas_equals( canvas, " \n" + " \n" + " +------------------------+ \n" + " |你你確確定定嗎嗎?? 你你確確定定嗎嗎?? | \n" + " |你你確確定定嗎嗎?? O \n" + " | | \n" + " | < 是是 > < 否否 > | \n" + " +------------------------+ \n" + " \n" + " \n")
def _delete(self): def act_on_selection(selection): if selection == 0: # Yes is selected self.save() self.table.current_row = self.data['row_index'] self.table.del_current_row() self._reload_list() popup = PopUpDialog(self.__screen, "Hey dumbass. Are you sure you want to proceed?", ["Yes", "No"], has_shadow=True, on_close=act_on_selection) popup.set_theme('monochrome') self._scene.add_effect(popup)
def _asset_load_change(self, percent, **kwargs): del kwargs if self._asset_percent: self.scene.remove_effect(self._asset_percent) self._asset_percent = PopUpDialog(self.screen, 'LOADING ASSETS: {}%'.format(percent), []) self.scene.add_effect(self._asset_percent) self._schedule_draw_screen()
def _bcp_connection_attempt(self, name, host, port, **kwargs): del name del kwargs self._pending_bcp_connection = PopUpDialog(self.screen, 'WAITING FOR MEDIA CONTROLLER {}:{}'.format(host, port), []) self.scene.add_effect(self._pending_bcp_connection) self._schedule_draw_screen()
def _ok(self): self.save() try: self._model.stock.update_current_item(self.data['name'], self.data['price']) except Exception as ex: self._scene.add_effect(PopUpDialog(self._screen, "Chyba: "+str(ex), ["OK"], None, True, u'warning')) raise NextScene("StockView")
def _quit(self): def _yes_no(selected): if selected == 0: raise StopApplication("bye") self._scene.add_effect( PopUpDialog(self._screen, "确定咩", ["OK", "NO"], on_close=_yes_no))
def fail(msg): dialog = PopUpDialog(self._screen, f" {msg} ", buttons=["OK"], theme="warning") self._scene.add_effect(dialog) return False
def display_error(self, exception): error_popup = PopUpDialog( self._screen, f"{type(exception).__name__}, {exception}", ["Ok"], theme="tlj256") self._scene.add_effect(error_popup)
def _quit(self: StartMenuView) -> None: self._scene.add_effect( PopUpDialog(self._screen, self._("Вы уверенны?"), [self._("Да"), self._("Нет")], has_shadow=True, on_close=self._quit_on_yes))
def _view(self): # Build result of this form and display it. self.save() message = "Values entered are:\n\n" for key, value in self.data.items(): message += "- {}: {}\n".format(key, value) self._scene.add_effect(PopUpDialog(self._screen, message, ["OK"]))
def _keyerror_handler(self: StartChatView) -> None: self._scene.add_effect( PopUpDialog(self._screen, self._("Пожалуйста, заполните все поля!"), [self._("Ок"), self._("Назад")], has_shadow=True, on_close=self._errors_handler_on_yes))
def _back(self: ChatsListView) -> None: self._scene.add_effect( PopUpDialog(self._screen, self._(f"Вы уверенны?"), [self._("Да"), self._("Нет")], has_shadow=True, on_close=self._quit_on_yes))
def _quit(self): self._scene.add_effect( PopUpDialog(self._screen, "Are you sure?", ["Yes", "No"], has_shadow=True, on_close=self._quit_on_yes))
def _open_help(self): self._scene.add_effect( PopUpDialog( self._screen, HELP, ["Ok"], # has_shadow=True, theme="default"))
def _registration_error_handler(self: RegistrationView, msg: str) -> None: self._scene.add_effect( PopUpDialog( self._screen, msg, [self._("Ok"), self._("Назад")], has_shadow=True, on_close=self._errors_handler_on_yes ) )
def _load(self): self.save() try: self._model.orders.load(url=self.data["xmlUrl"]) except Exception as e: self._scene.add_effect(PopUpDialog(self._screen, "Nelze nacist: "+str(e), ["OK"], self._on_error, True, u'warning')) else: raise NextScene("ProcessOrders")
def test_pop_up_widget(self): """ Check widget tab stops work as expected. """ def test_on_click(selection): raise NextScene(str(selection)) screen = MagicMock(spec=Screen, colours=8) scene = MagicMock(spec=Scene) canvas = Canvas(screen, 10, 40, 0, 0) form = PopUpDialog(canvas, "Message", ["Yes", "No"], test_on_click) form.register_scene(scene) form.reset() # Check that the pop-up is rendered correctly. form.update(0) self.assert_canvas_equals( canvas, " \n" + " \n" + " +------------------+ \n" + " |Message | \n" + " | | \n" + " | < Yes > < No > | \n" + " +------------------+ \n" + " \n" + " \n" + " \n") # Check that mouse input triggers the close function. with self.assertRaises(NextScene): self.process_mouse(form, [(14, 5, MouseEvent.LEFT_CLICK)])
def _login(self): username = self._text_name.value pwd = self._text_pwd.value _my, err = Game.Login(username, pwd) if err is not None: self._scene.add_effect( PopUpDialog(self._screen, err.__str__(), ["OK"])) return raise NextScene("Game")
def _view(self): try: self.save(validator=True) message = "Values entered are:\n\n" for key, value in self.data.items(): message += "-{}: {}\n".formate(key, value) except InvalidFields as exc: message = "The following fields are invalid:\n\n" for field in exc.fields: message += "-{}\n".formate(field) self.scene.add_effect(PopUpDialog(self._screen, message, ["OK"]))
def _check_answer(self): self.save() for key, value in self.data.items(): if key == "answer": if value == str(self._excercise.result): self._excercise.solved = True self.game.player.addPoints(1) self.game.save() self._scene.add_effect( PopUpDialog(self._screen, "Richtig!", ["Weiter"], on_close=self._next_round)) else: self._scene.add_effect( PopUpDialog(self._screen, "Falsch!", ["Neuer Versuch"], on_close=self._again))
def _register(self): username = self._text_name.value nickname = self._text_nickname.value pwd = self._text_pwd.value gender = self._radio_gender.value err = Game.Register(username, nickname, pwd, gender) if err is not None: self._scene.add_effect( PopUpDialog(self._screen, err.__str__(), ["OK"])) return raise NextScene('Main')
def on_select(self): global root_dir # Update the list data as needed. if self._list.value and os.path.isdir(self._list.value): self._root = root_dir = self._list.value self._populate_list() else: self._scene.add_effect( PopUpDialog(self._screen, "You selected: {}".format(self._list.value), ["OK"])) # Force a refresh for improved responsiveness self._last_frame = 0
def _on_action_selected(self, action): if action == 0: try: self._model.orders.apply_selected() except Exception as exc: self._scene.add_effect(PopUpDialog(self._screen, str(exc), ["OK"], None, True, u'warning')) self._reload_list() elif action == 1: self._model.orders.ignore_selected() self._reload_list() else : return
def test_clone(self): """ Check Frame cloning works. """ def test_on_click(selection): raise NextScene(str(selection)) screen = MagicMock(spec=Screen, colours=8) scene = MagicMock(spec=Scene) scene2 = Scene([], 10) canvas = Canvas(screen, 10, 40, 0, 0) # Check that pop-up dialogs get copied to the new Scene form = PopUpDialog( canvas, "Message", ["Yes", "No"], test_on_click, has_shadow=True) form.register_scene(scene) form.clone(canvas, scene2) self.assertEqual(len(scene2.effects), 1) self.assertEqual(scene2.effects[0]._text, "Message") self.assertEqual(scene2.effects[0]._buttons, ["Yes", "No"]) # Check that normal Frame data gets copied to the new Scene. frame = TestFrame(canvas) frame2 = TestFrame(canvas) scene2 = Scene([frame2], 10) frame.register_scene(scene) frame2.register_scene(scene) frame.data = {"TA": "something"} frame2.data = {} self.assertEqual(frame2.data, {}) self.assertNotEqual(frame2.data, frame.data) frame.clone(canvas, scene2) self.assertEqual(frame2.data, frame.data)
def screen(scr, scene, data): scene_decorators = [StartupView(scr, data)] result = prerequisite_check() if result: scene_decorators.append( PopUpDialog(scr, result, [_("OK")], on_close=stop_wizard)) scenes = [ Scene(scene_decorators, -1, name="Welcome"), Scene([ModulesView(scr, data)], -1, name="Modules"), Scene([ModulesSetupView(scr, data)], -1, name="ModulesSetup") ] scene = scene or scenes[0] scr.play(scenes, stop_on_resize=True, start_scene=scene)