コード例 #1
0
    def __init__(self):
        self.screen = Screen.open()
        self.scenes = []
        self.akt_sender_str = "Deutschlandradio"
        self.akt_sender_nr = 0
        self.volume = 25
        self.number_of_stations = 0

        # Prepare frame for the presets
        self.preset_frame = Frame(self.screen,
                                  7,
                                  29,
                                  can_scroll=False,
                                  title="Tastenbelegung",
                                  x=0,
                                  y=10,
                                  reduce_cpu=True)
        self.pr_layout = Layout([10, 90], fill_frame=True)
        self.preset_frame.add_layout(self.pr_layout)

        # Prepare frame for the sender list
        self.sender_frame = Frame(self.screen,
                                  17,
                                  50,
                                  can_scroll=False,
                                  title="Senderliste",
                                  x=30,
                                  y=0,
                                  reduce_cpu=True)
        self.sender_layout0 = Layout([10, 80, 10], fill_frame=True)
        self.sender_frame.add_layout(self.sender_layout0)

        # Load the json config-file
        self.cfg = self.load_config()

        # Prepare the layouts, add spaces etc
        self.format_sl_layout(self.sender_layout0)

        # Nicht mehr nötig nach aktuellem Stand
        # format_pr_layout(pr_layout)

        # Create the sender-labels and fill them initially. Return them for
        # later changing
        self.sender_labels = self.gen_and_add_sender_labels(
            self.sender_layout0, self.parse_sender())
        self.preset_labels = self.gen_and_add_preset_labels(
            self.pr_layout, self.parse_presets())

        self.preset_frame.fix()
        self.sender_frame.fix()
コード例 #2
0
    def test_cjk_forms(self):
        """
        Check form widgets work with CJK characters.
        """
        # Create a dummy screen.
        screen = MagicMock(spec=Screen, colours=8, unicode_aware=False)
        scene = MagicMock(spec=Scene)
        canvas = Canvas(screen, 10, 40, 0, 0)

        # Create the form we want to test.
        form = Frame(canvas, canvas.height, canvas.width, has_border=False)
        layout = Layout([100], fill_frame=True)
        mc_list = MultiColumnListBox(4, [3, 5, 0], [
            (["1", "2", "3"], 1),
            ([u"你", u"確", u"定"], 2),
        ],
                                     titles=[u"你確定嗎?", u"你確定嗎?", u"你確定嗎?"])
        text = Text()
        text_box = TextBox(3)
        form.add_layout(layout)
        layout.add_widget(mc_list)
        layout.add_widget(text)
        layout.add_widget(text_box)
        form.fix()
        form.register_scene(scene)
        form.reset()

        # Set some interesting values...
        text.value = u"你確定嗎? 你確定嗎? 你確定嗎?"
        text_box.value = [u"你確定嗎", u"?"]

        # Check that the CJK characters render correctly - no really this is correctly aligned!
        self.maxDiff = None
        form.update(0)
        self.assert_canvas_equals(
            canvas, u"你你 你你確確 你你確確定定嗎嗎??                      \n" +
            u"1  2    3                               \n" +
            u"你你 確確   定定                              \n" +
            u"                                        \n" +
            u"你你確確定定嗎嗎?? 你你確確定定嗎嗎?? 你你確確定定嗎嗎??        \n" +
            u"你你確確定定嗎嗎                                \n" +
            u"??                                      \n" +
            u"                                        \n" +
            u"                                        \n" +
            u"                                        \n")

        # Check that mouse input takes into account the glyph width
        self.process_mouse(form, [(5, 4, MouseEvent.LEFT_CLICK)])
        self.process_keys(form, ["b"])
        self.process_mouse(form, [(2, 4, MouseEvent.LEFT_CLICK)])
        self.process_keys(form, ["p"])
        form.save()
        self.assertEqual(text.value, u"你p確b定嗎? 你確定嗎? 你確定嗎?")

        self.process_mouse(form, [(2, 5, MouseEvent.LEFT_CLICK)])
        self.process_keys(form, ["p"])
        self.process_mouse(form, [(1, 6, MouseEvent.LEFT_CLICK)])
        self.process_keys(form, ["b"])
        form.save()
        self.assertEqual(text_box.value, [u"你p確定嗎", u"b?"])
コード例 #3
0
    def test_disabled_text(self):
        """
        Check disabled TextBox can be used for pre-formatted output.
        """
        # Create a dummy screen.
        screen = MagicMock(spec=Screen, colours=8, unicode_aware=False)
        scene = MagicMock(spec=Scene)
        canvas = Canvas(screen, 10, 40, 0, 0)

        # Create the form we want to test.
        form = Frame(canvas, canvas.height, canvas.width, has_border=False)
        layout = Layout([100], fill_frame=True)
        form.add_layout(layout)
        text_box = TextBox(1, as_string=True)
        text_box.disabled = True
        layout.add_widget(text_box)
        form.fix()
        form.register_scene(scene)
        form.reset()

        # Check that input has no effect on the programmed value.
        text_box.value = "A test"
        self.process_keys(form, ["A"])
        form.save()
        self.assertEqual(text_box.value, "A test")

        # Check that we can provide a custom colour.  Since the default palette has no "custom"
        # key, this will throw an exception.
        self.assertEqual(text_box._pick_colours("blah"),
                         form.palette["disabled"])
        with self.assertRaises(KeyError) as cm:
            text_box.custom_colour = "custom"
            text_box._pick_colours("blah")
        self.assertIn("custom", str(cm.exception))
コード例 #4
0
ファイル: text_ui.py プロジェクト: Clohman11/mpf
    def _create_window(self):
        self.screen = Screen.open()
        self.frame = Frame(self.screen,
                           self.screen.height,
                           self.screen.width,
                           has_border=False,
                           title="Test")
        self.frame.set_theme("mpf_theme")

        title_layout = Layout([1, 5, 1])
        self.frame.add_layout(title_layout)

        title_left = Label("")
        title_left.custom_colour = "title"
        title_layout.add_widget(title_left, 0)

        title = 'Mission Pinball Framework v{}'.format(
            mpf._version.__version__)  # noqa
        title_text = Label(title, align="^")
        title_text.custom_colour = "title"
        title_layout.add_widget(title_text, 1)

        exit_label = Label("< CTRL + C > TO EXIT", align=">")
        exit_label.custom_colour = "title_exit"

        title_layout.add_widget(exit_label, 2)

        self.layout = MpfLayout([1, 1, 1, 1], fill_frame=True)
        self.frame.add_layout(self.layout)

        footer_layout = Layout([1, 1, 1])
        self.frame.add_layout(footer_layout)
        self.footer_memory = Label("", align=">")
        self.footer_memory.custom_colour = "footer_memory"
        self.footer_uptime = Label("", align=">")
        self.footer_uptime.custom_colour = "footer_memory"
        self.footer_mc_cpu = Label("")
        self.footer_mc_cpu.custom_colour = "footer_mc_cpu"
        self.footer_cpu = Label("")
        self.footer_cpu.custom_colour = "footer_cpu"
        footer_path = Label(self.machine.machine_path)
        footer_path.custom_colour = "footer_path"
        footer_empty = Label("")
        footer_empty.custom_colour = "footer_memory"

        footer_layout.add_widget(footer_path, 0)
        footer_layout.add_widget(self.footer_cpu, 0)
        footer_layout.add_widget(footer_empty, 1)
        footer_layout.add_widget(self.footer_mc_cpu, 1)
        footer_layout.add_widget(self.footer_uptime, 2)
        footer_layout.add_widget(self.footer_memory, 2)

        self.scene = Scene([self.frame], -1)
        self.screen.set_scenes([self.scene], start_scene=self.scene)

        # prevent main from scrolling out the footer
        self.layout.set_max_height(self.screen.height - 2)
コード例 #5
0
ファイル: screens.py プロジェクト: Trevonte/fairgame
    def __init__(self):
        self.loop = asyncio.get_event_loop()
        self.screen = Screen.open()
        self.effects = []

        frame = Frame(self.screen, 80, 20, has_border=False)
        layout = Layout([1, 1, 1, 1])
        frame.add_layout(layout)

        end_time = self.loop.time() + 5.0
        self.loop.call_soon(self.update_screen, end_time, self.loop, self.screen)
        self.screen.set_scenes([Scene(frame,500)])
        self.screen.set_title()
コード例 #6
0
def preinit():
    
    screen = Screen.open()
    test1.intro(screen)
    junk = Frame(screen,
                                        screen.height * 2 // 3,
                                        screen.width * 2 // 3,
                                        hover_focus=True,
                                        has_border=True,
                                        title="Game Settings",
                                        reduce_cpu=False)
    oldpalette = copy.deepcopy(junk.palette)
    Scenes = []
    debug = [True]
    game = []
    data = MainMenu(game,screen,debug,oldpalette)
コード例 #7
0
def DeathMenu(game, screen, debug, oldpalette):
    None

    def endgame():
        screen.close()
        quit()
        sys.exit(0)
        None

    def Restart():
        game = GameState.GameState()
        MainMenu(game, screen, debug, oldpalette)
        None

    Dmenu = Frame(screen,
                  screen.height * 2 // 3,
                  screen.width * 2 // 3,
                  hover_focus=True,
                  has_border=True,
                  title="YOU HAVE DIED",
                  reduce_cpu=False)

    mapping = Layout([100], fill_frame=True)

    for entry in Dmenu.palette:
        if entry != "focus_button":
            Dmenu.palette[entry] = (1, 1, 1)
        else:
            Dmenu.palette[entry] = (0, 1, 5)
    Dmenu.add_layout(mapping)
    mapping.add_widget(
        Label(str("Your Final Score Is:  " + str(game.score)), 1))
    bottomrow = Layout([1, 1, 1, 1])
    Dmenu.add_layout(bottomrow)
    bottomrow.add_widget(Button("Exit", endgame), 1)
    bottomrow.add_widget(Button("Restart", Restart), 3)
    Dmenu.fix()

    #return Mmenu
    #Mmenu._on_pic

    Scenes = [Scene([Dmenu], -1)]

    screen.play(Scenes)
    return Dmenu.data
コード例 #8
0
ファイル: demo.py プロジェクト: DumasDED/RoadRigCLI
def demo(screen, scene):
    frame = Frame(screen,
                  screen.height // 3,
                  screen.width // 3,
                  hover_focus=True,
                  has_border=False,
                  title="Main Menu")

    frame.palette = palette

    layout3 = Layout([100])
    frame.add_layout(layout3)

    layout3.add_widget(Label("Test"), 0)
    layout3.add_widget(Divider(draw_line=False))

    layout1 = Layout([100], fill_frame=True)
    frame.add_layout(layout1)

    layout1.add_widget(
        ListBox(Widget.FILL_FRAME, [("One", 1), ("Two", 3), ("Three", 2),
                                    ("Four", 4), ("Five", 5), ("Six", 6),
                                    ("Seven", 7), ("Eight", 8), ("Nine", 9),
                                    ("Ten", 10), ("Eleven", 11),
                                    ("Twelve", 12), ("Thirteen", 13),
                                    ("Fourteen", 14), ("Fifteen", 15),
                                    ("Sixteen", 16), ("Seventeen", 17),
                                    ("Eighteen", 18), ("Nineteen", 19),
                                    ("Twenty", 20), ("Loop", 1)],
                name="List Thing"))
    layout1.add_widget(Divider(draw_line=False))

    layout2 = Layout([1, 1, 1, 1])
    frame.add_layout(layout2)

    layout2.add_widget(Button("OK", leave), 1)
    layout2.add_widget(Button("Cancel", leave), 2)

    frame.fix()

    scenes = [Scene([frame], -1, name="Test")]

    screen.play(scenes, stop_on_resize=True, start_scene=scene)
コード例 #9
0
ファイル: looptest.py プロジェクト: dasteihn/visio
def demo(screen):
    scenes = []
    frame = Frame(screen, 20, 80, can_scroll=False, title="Sender")
    layout = Layout([40, 10, 40, 10], fill_frame=True)
    frame.add_layout(layout)

    optionen = [("Erster", 1), ("Zweiter", 2)]

    sender = ["Erster hihihihihihi", "Zweiter", "Dritter"]

    for s in sender:
        layout.add_widget(Label(s, align=u'^'))

    layout.add_widget(Label("<<<<", align='<'), 1)

    layout.add_widget(Button("hihi!", None))

    frame.fix()

    effects = [frame]

    scenes.append(Scene(effects, -1))
    screen.play(scenes)
コード例 #10
0
def MainMenu(game, screen, debug, oldpalette):
    def endgame():
        screen.close()
        quit()
        sys.exit(0)
        None

    def endmenu():
        debug[0] = False
        game = GameState.GameState()
        game.hero.inventory = []
        Mmenu.save()
        looksy = Mmenu.data
        if looksy['seedval'] != "":
            converted = 0
            if str.isnumeric(looksy['seedval']):
                game.seed = int(looksy['seedval'])
            else:
                for char in looksy['seedval']:
                    converted += ord(char)
                game.seed = int(converted)
        random.seed(game.seed)
        if looksy['nameval'] != "":
            if len(looksy["nameval"]) >= 20:
                game.name = str(looksy['nameval'])[:21]
            else:
                game.name = str(looksy['nameval'])
        debug[0] = looksy['Debug']
        #visual.blackout(screen)
        main(game, debug, looksy, screen)
        test1.deadscreen(game, screen)
        DeathMenu(game, screen, debug, oldpalette)
        return Mmenu.data

    endval = True
    Mmenu = Frame(screen,
                  screen.height * 2 // 3,
                  screen.width * 2 // 3,
                  hover_focus=True,
                  has_border=True,
                  title="Game Settings",
                  reduce_cpu=False)

    #Mmenu.palette['background'] = (0,0,1)
    Mmenu.palette = oldpalette
    mapping = Layout([100], fill_frame=True)
    Mmenu.add_layout(mapping)
    mapping.add_widget(Text("Seed:", "seedval"))
    mapping.add_widget(Text("Adventurer Name:", "nameval"))
    mapping.add_widget(CheckBox("Debug Mode:", "Debug", "Debug"))

    bottomrow = Layout([1, 1, 1, 1])
    Mmenu.add_layout(bottomrow)
    bottomrow.add_widget(Button("Exit Game", endgame), 0)
    bottomrow.add_widget(Button("Start Level", endmenu), 3)
    Mmenu.fix()

    #Mmenu._on_pic

    Scenes = [Scene([Mmenu], -1)]

    screen.play(Scenes)
    return Mmenu.data
コード例 #11
0
    def test_multi_column_list_box(self):
        """
        Check MultiColumnListBox works as expected.
        """
        # Create a dummy screen.
        screen = MagicMock(spec=Screen, colours=8, unicode_aware=False)
        scene = MagicMock(spec=Scene)
        canvas = Canvas(screen, 10, 40, 0, 0)

        # Create the form we want to test.
        form = Frame(canvas, canvas.height, canvas.width, has_border=False)
        layout = Layout([100], fill_frame=True)
        mc_list = MultiColumnListBox(
            Widget.FILL_FRAME, [3, "4", ">4", "<4", ">10%", "100%"], [
                (["1", "2", "3", "4", "5", "6"], 1),
                (["11", "222", "333", "444", "555", "6"], 2),
                (["111", "2", "3", "4", "5", "6"], 3),
                (["1", "2", "33333", "4", "5", "6"], 4),
                (["1", "2", "3", "4", "5", "6666666666666666666666"], 5),
            ],
            titles=["A", "B", "C", "D", "E", "F"],
            name="mc_list")
        form.add_layout(layout)
        layout.add_widget(mc_list)
        form.fix()
        form.register_scene(scene)
        form.reset()

        # Check we have a default value for our list.
        form.save()
        self.assertEqual(form.data, {"mc_list": 1})

        # Check that UP/DOWN change selection.
        self.process_keys(form, [Screen.KEY_DOWN])
        form.save()
        self.assertEqual(form.data, {"mc_list": 2})
        self.process_keys(form, [Screen.KEY_UP])
        form.save()
        self.assertEqual(form.data, {"mc_list": 1})

        # Check that PGUP/PGDN change selection.
        self.process_keys(form, [Screen.KEY_PAGE_DOWN])
        form.save()
        self.assertEqual(form.data, {"mc_list": 5})
        self.process_keys(form, [Screen.KEY_PAGE_UP])
        form.save()
        self.assertEqual(form.data, {"mc_list": 1})

        # Check that the widget is rendered correctly.
        form.update(0)
        self.assert_canvas_equals(
            canvas, "A  B      C D      E F                  \n" +
            "1  2      3 4      5 6                  \n" +
            "11 222  333 444  555 6                  \n" +
            "...2      3 4      5 6                  \n" +
            "1  2   3... 4      5 6                  \n" +
            "1  2      3 4      5 6666666666666666666\n" +
            "                                        \n" +
            "                                        \n" +
            "                                        \n" +
            "                                        \n")

        # Check that mouse input changes selection.
        self.process_mouse(form, [(2, 2, MouseEvent.LEFT_CLICK)])
        form.save()
        self.assertEqual(form.data, {"mc_list": 2})
        self.process_mouse(form, [(2, 1, MouseEvent.LEFT_CLICK)])
        form.save()
        self.assertEqual(form.data, {"mc_list": 1})

        # Check that the start_line can be read and set - and enforces good behaviour
        mc_list.start_line = 0
        self.assertEqual(mc_list.start_line, 0)
        mc_list.start_line = len(mc_list.options) - 1
        self.assertEqual(mc_list.start_line, len(mc_list.options) - 1)
        mc_list.start_line = 10000000
        self.assertEqual(mc_list.start_line, len(mc_list.options) - 1)

        # Check that options can be read and set.
        mc_list.options = [(["a", "b", "c", "d", "e", "f"], 0)]
        self.assertEqual(mc_list.options,
                         [(["a", "b", "c", "d", "e", "f"], 0)])
        mc_list.options = []
        self.assertEqual(mc_list.options, [])

        # Check that the form re-renders correctly afterwards.
        form.update(1)
        self.assert_canvas_equals(
            canvas, "A  B      C D      E F                  \n" +
            "                                        \n" +
            "                                        \n" +
            "                                        \n" +
            "                                        \n" +
            "                                        \n" +
            "                                        \n" +
            "                                        \n" +
            "                                        \n" +
            "                                        \n")

        # Check that the current focus ignores unknown events.
        event = object()
        self.assertEqual(event, form.process_event(event))
コード例 #12
0
ファイル: asciio.py プロジェクト: dasteihn/visio
def demo(screen):
    scenes = []
    preset_frame = Frame(screen,
                         11,
                         26,
                         can_scroll=False,
                         title="Tastenbelegung",
                         x=SF_X,
                         y=SF_Y,
                         reduce_cpu=True)
    pr_layout = Layout([10, 90], fill_frame=True)
    preset_frame.add_layout(pr_layout)

    sender_frame = Frame(screen,
                         11,
                         26,
                         can_scroll=False,
                         title="Senderliste",
                         x=27,
                         y=6,
                         reduce_cpu=True)
    sender_layout0 = Layout([10, 90, 10], fill_frame=True)

    sender_frame.add_layout(sender_layout0)

    optionen = [(" ", 1), ("Zweiter", 2), ("Dritter", 3), ("Vierter", 4),
                ("Deutschlandradio", 5), ("Absolut Relax", 6), ("Siebter", 7),
                ("hmm", 8)]

    sender = [
        "123456789012345678901", "Erster", "Zweiter", "Dritter", "Vierter",
        "Fünfter", "Sechster"
    ]
    Senderkiste = ListBox(8, optionen, False)
    sender_layout0.add_widget(Senderkiste, 1)
    Senderkiste.blur()
    Senderkiste.start_line = 1

    format_sl_layout(sender_layout0)
    # format_pr_layout(pr_layout)
    for i, s in zip(range(1, 6), sender):
        pr_layout.add_widget(Label(str(i), 1, align=u'^'))
        pr_layout.add_widget(Label(s, 1, align='^'), 1)

    preset_frame.fix()
    sender_frame.fix()

    effects = [
        preset_frame,
        sender_frame,
        Print(screen, Box(26, 15, True), x=UHR_K_X, y=UHR_K_Y),
        Print(screen, Box(80, 8, True), x=0, y=17),
        Clock(screen, 67, 7, 6),
        Print(screen, FigletText("Retroradio!"), x=0, y=0),
        #            Print(screen, BarChart(4, 80, [get_vol], colour=2, scale=100,
        #                axes=BarChart.X_AXIS, intervals=25, labels=True, border=False), x=0, y=26,
        #                transparent=False),
        # Print(screen, SpeechBubble("Lautstärke"), x=0, y=23),
        Print(screen, FigletText("Deutschlandradio"), x=1, y=18),
        Print(screen,
              BarChart(4,
                       80, [get_vol],
                       colour=2,
                       char=' ',
                       bg=7,
                       scale=100,
                       axes=BarChart.X_AXIS,
                       intervals=25,
                       labels=True,
                       border=False),
              x=0,
              y=26,
              transparent=False,
              speed=2)
    ]

    scenes.append(Scene(effects, -1))
    screen.play(scenes)
コード例 #13
0
ファイル: asciio_layout_v2.py プロジェクト: dasteihn/visio
def run_display(screen):
    scenes = []
    AKT_SENDER = "Retro rockt!"

    # Prepare frame for the presets
    preset_frame = Frame(screen,
                         7,
                         29,
                         can_scroll=False,
                         title="Tastenbelegung",
                         x=0,
                         y=10,
                         reduce_cpu=True)
    pr_layout = Layout([10, 90], fill_frame=True)
    preset_frame.add_layout(pr_layout)

    # Prepare frame for the sender list
    sender_frame = Frame(screen,
                         17,
                         50,
                         can_scroll=False,
                         title="Senderliste",
                         x=30,
                         y=0,
                         reduce_cpu=True)
    sender_layout0 = Layout([10, 80, 10], fill_frame=True)
    sender_frame.add_layout(sender_layout0)

    # Load the json config-file
    cfg = load_config()

    # Prepare the layouts, add spaces etc
    format_sl_layout(sender_layout0)

    # Nicht mehr nötig nach aktuellem Stand
    # format_pr_layout(pr_layout)

    # Create the sender-labels and fill them initially. Return them for
    # later changing
    sender_labels = gen_and_add_sender_labels(sender_layout0,
                                              parse_sender(cfg, 0))
    preset_labels = gen_and_add_preset_labels(pr_layout, parse_presets(cfg))

    preset_frame.fix()
    sender_frame.fix()

    # Effects are all the stuff which will be shown on the display
    effects = [
        preset_frame,
        sender_frame,
        # Print(screen, Box(26, 15, True), x=54, y=0),
        Print(screen, Box(80, 8, True), x=0, y=17, speed=2),
        # Clock(screen, 68, 7, 5),
        Print(screen,
              ColourImageFile(screen, LOGO, 9, bg=7),
              x=0,
              y=0,
              speed=2),
        Print(screen, FigletText(asciisierer(AKT_SENDER)), x=1, y=18),
        Print(screen,
              BarChart(4,
                       80, [get_vol],
                       colour=2,
                       char=' ',
                       bg=7,
                       scale=100,
                       axes=BarChart.X_AXIS,
                       intervals=25,
                       labels=True,
                       border=False),
              x=0,
              y=26,
              transparent=False,
              speed=2)
    ]

    # Start displaying
    scenes.append(Scene(effects, -1))
    screen.play(scenes)