コード例 #1
0
def create_simple_player(savable):

    colorama_init()
    print()

    player_input = KeyboardInputGetter()
    player_input.start()

    output = ImmediateStreamOutput()

    player = Player(player_input, output, savable)

    return player, [output], lambda: None
コード例 #2
0
def create_fancy_player(stdscr, savable):
    from textprint.input import InputLineUpdater
    from textprint.section import Section
    from textprint.textprinter import TextPrinter

    curses_init()
    std_init(stdscr)
    colorama_init()

    input_section = Section(None, fill_up_left_over=False)  # we want to allow it to go for as many lines it needs
    temp_section = Section(None, fill_up_left_over=False)
    print_section = Section(None, fake_line=(Color.BLUE >> "~"))
    title_section = Section(1)
    printer = TextPrinter([input_section, temp_section, print_section, title_section],
                          print_from_top=False, stdscr=stdscr)
    printer.update_dimensions()
    # print_section.fake_line = Color.RED + Color.BOLD + "|" + (" " * (printer.dimensions[1] - 3)) + "|"

    updater = InputLineUpdater(printer, input_section.println(printer, "", flush=True), stdscr)
    player_input = TextPrinterInputGetter(updater)
    # input_manager = InputLineUpdaterManager(updater)  # calls updater's update
    output = OutputNotifierSender(TextPrinterOutput(printer, print_section),
                                  lambda: temp_output.section.clear_lines(printer, flush=True))
    temp_output = TextPrinterOutput(printer, temp_section)
    player = Player(player_input, output, savable)

    def interrupt_handler():
        if updater.current_line().is_clear():
            temp_output.send_message(Message(Color.YELLOW >> "Press CTRL+D to exit", message_type=MessageType.IMMEDIATE))
            print_section.update_lines(printer, flush=True, force_reprint=True)
        else:
            updater.current_line().clear()

    add_interrupt_handler(interrupt_handler)  # clear line when CTRL+C is pressed

    title_manager = LocationTitleBarManager(player, printer, title_section.println(printer, ""))

    return player, [player_input, output, temp_output, title_manager], lambda: curses_end()