Esempio n. 1
0
def test_page():
    # create page
    p = pglet.page('test_page', no_window=True)

    assert p.url != "" and p.url.startswith('http'), "Test failed"
    assert p.conn_id != "", "Test failed"
    assert p.conn_id != "", "Test failed"

    p.update(Page(title="Hello, title!", padding=0))
Esempio n. 2
0
def test_add_textbox():
    # open page
    p = pglet.page('test_textbox', no_window=True)

    tb_value = "Line1\nLine2\nLine3"

    # add textbox
    txt1 = Textbox(value=tb_value, multiline=True)
    tb = p.add(txt1)
    assert tb.id.startswith('_'), "Test failed"
    assert tb.id == txt1.id, "Test failed"

    # get textbox value
    ret_tb_value = p.get_value(tb)
    assert ret_tb_value == tb_value, "Test failed"
Esempio n. 3
0
def test_nested_stacks_update():
    stack = Stack(controls=[
        Textbox(id="firstName"),
        Textbox(id="lastName"),
        Stack(horizontal=True, controls=[
            Button(id="ok", text="OK"),
            Button(id="cancel", text="Cancel")
        ])
    ])

    # open page
    p = pglet.page(no_window=True)
    ctrls = p.add(stack)

    assert ['_1', 'firstName', 'lastName', '_2', 'ok', 'cancel'] == [ctrls[0].id, ctrls[1].id, ctrls[2].id, ctrls[3].id, ctrls[4].id, ctrls[5].id], "Test failed"

    # empty update
    assert stack.get_cmd_str(update=True) == "", "Test failed"

    # update stack element
    ctrls[0].horizontal=True
    assert stack.get_cmd_str(update=True) == '"_1" horizontal="true"', "Test failed"

    # update inner elements
    ctrls[1].value = "John"
    ctrls[2].value = "Smith"
    ctrls[4].primary = True

    #raise Exception(stack.get_cmd_str(update=True))

    assert stack.get_cmd_str(update=True) == (
        '"firstName" value="John"\n'
        '"lastName" value="Smith"\n'
        '"ok" primary="true"'
    ), "Test failed"    

    

    # assert stack.get_cmd_str(update=True) == (
    #     'stack\n'
    #     '  textbox id="firstName"\n'
    #     '  textbox id="lastName"\n'
    #     '  stack horizontal="true"\n'
    #     '    button id="ok" text="OK"\n'
    #     '    button id="cancel" text="Cancel"'
    # ), "Test failed"
Esempio n. 4
0
def test_nav_update():
    n = pglet.Nav(id="list1", value="list1", items=[
        Item("key1"),
        Item("key2")
    ])

    p = pglet.page(no_window=True)
    p.add(n)

    assert n.get_cmd_str(update=True) == '', "Test failed"

    n.items[0].key = 1
    n.items[1].text = "Key 2"

    assert n.get_cmd_str(update=True) == (
        '"list1:_1" key="1"\n'
        '"list1:_2" text="Key 2"'
    ), "Test failed"
Esempio n. 5
0
def page():
    return pglet.page('test_add', no_window=True)
Esempio n. 6
0
def page():
    return pglet.page("test_common_control", no_window=True)
Esempio n. 7
0
import logging

import pglet
from pglet import Button, Image, Stack, Text

logging.basicConfig(level=logging.DEBUG)

page = pglet.page("autoscroll", update=False, no_window=True, permissions="")
# page.theme_primary_color = "green"
# page.gap = 100
# page.padding = 100
# page.update()

st = Stack(scroll_y=True, auto_scroll=True)

scroll_box = Stack(height="400",
                   width="100%",
                   bgcolor="#f0f0f0",
                   vertical_align="end",
                   controls=[st])


def add_click(e):
    page.i += 1
    st.controls.append(
        Stack(
            horizontal=True,
            vertical_align="center",
            controls=[
                Image(
                    src=
Esempio n. 8
0
import os,sys,inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0,parentdir)

import time
import pglet
from pglet import Page, Text, Textbox, Button, Progress

page = pglet.page("index", no_window=True)
page.update(Page(title="Hello, pglet!"))
page.clean()

def say_hello_click_wrong(e):
    print('This should not be called!')

def say_hello_click(e):
    name = page.get_value(txt)
    if name == "":
        txt.error_message = "Name cannot be blank"
        btn.text = "Say it again!"
        page.update(txt, btn)
    else:
        page.remove(txt, btn)
        page.add(Text(value=f'Hello, {name}!'), at=0)

txt = Textbox(label="Your name", required=True)
psw = Textbox(label="Password", password=True)
btn = Button(text="Say hello", primary=True)
btn.onclick = say_hello_click_wrong
cancel = Button(text="Cancel", onclick=lambda e: print("Cancel clicked"))
Esempio n. 9
0
def page():
    return pglet.page("test_update", no_window=True)
Esempio n. 10
0
import pglet
from pglet import ComboBox, combobox

page = pglet.page("combobox-test")
page.horizontal_align = "stretch"
page.add(
    ComboBox(
        label="Your favorite color",
        value="c",
        on_focus=lambda e: print("on_focus!"),
        on_blur=lambda e: print("on_blur!"),
        on_change=lambda e: print("on_change!"),
        options=[
            combobox.Option("RGB", item_type="header"),
            combobox.Option("red"),
            combobox.Option("green"),
            combobox.Option("blue"),
            combobox.Option("div1", item_type="divider"),
            combobox.Option("CMYK", item_type="header"),
            combobox.Option("c", "Cyan"),
            combobox.Option("m", "Magenta"),
            combobox.Option("y", "Yellow"),
            combobox.Option("k", "Black"),
        ],
    ),
    ComboBox(
        label="Your favorite car makers",
        multi_select=True,
        value=["BMW, Volkswagen"],
        width="50%",
        on_change=lambda e: print("selected cars:", e.control.value),
Esempio n. 11
0
import logging

import pglet
from pglet import SplitStack, Stack, Text
from pglet.button import Button

logging.basicConfig(level=logging.DEBUG)


def split_resize(e):
    for c in e.control.controls:
        print("size", c.width if e.control.horizontal else c.height)


page = pglet.page("split1")
page.title = "Split test"
page.horizontal_align = "stretch"
page.vertical_fill = True
st = SplitStack(
    height="100%",
    horizontal=True,
    # gutter_color="#eee",
    gutter_size=10,
    on_resize=split_resize,
    controls=[
        Stack(width="200",
              min_width="200",
              height="100%",
              controls=[Text("Column A")]),
        Stack(height="100%", controls=[Text("Column B")]),
        Stack(
Esempio n. 12
0
import pglet
from pglet import Persona

page = pglet.page("persona-test")
page.add(Persona("Jack Reacher", secondary_text="Designed", size=8))
page.add(Persona("John Smith", secondary_text="Student", size=24))
page.add(Persona("Marry Poppins", size=32, presence="busy", hide_details=True))
page.add(
    Persona(
        "Feodor",
        size=32,
        image_url="https://avatars.githubusercontent.com/u/5041459?s=88&v=4",
        presence="online",
    )
)
page.add(Persona("Alice Brown", size=72, secondary_text="Wonderer"))
Esempio n. 13
0
import pglet
from pglet import Page, Text, Dropdown, Button, Stack, Textbox

page = pglet.page("inesa-calc")
page.update(Page(title="Calculator"))
page.clean()

#initiation
operand1 = '0'  #previous value
operator = '+'
start_new = True  #will start new sequence in the 'result' textbox
history_id = None


def format_number(num):
    if num % 1 == 0:
        return int(num)
    else:
        return num


def calculate(x, y, action):
    if action == '+':
        return format_number(x + y)
    elif action == '-':
        return format_number(x - y)
    elif action == '*':
        return format_number(x * y)
    elif action == '/':
        return format_number(x / y)
Esempio n. 14
0
def page():
    return pglet.page('test_update', no_window=True)
Esempio n. 15
0
import pglet
from pglet import Button, Checkbox, Panel, Text

with pglet.page("panel-custom") as page:

    def button_clicked(e):

        p.light_dismiss = light_dismiss.value
        p.auto_dismiss = auto_dismiss.value
        p.blocking = blocking.value
        values.value = (
            f"Panel properties are:  {p.light_dismiss}, {p.auto_dismiss}, {p.blocking}."
        )
        p.open = True
        page.update()

    values = Text()
    light_dismiss = Checkbox(label="Light dismiss", value=False)
    auto_dismiss = Checkbox(label="Auto-dismiss", value=True)
    blocking = Checkbox(label="Blocking", value=True)
    b = Button(text="Open panel", on_click=button_clicked)
    page.add(light_dismiss, auto_dismiss, blocking, b, values)

    t = Text("Content goes here")

    p = Panel(
        title="Panel with dismiss options",
        controls=[t],
    )

    page.add(p)
Esempio n. 16
0
import pglet
from pglet import Text

page = pglet.page("hello-world")
page.title = "Hello, world!"
page.add(Text("Hello, world!"))
Esempio n. 17
0
import pglet
from pglet import Text

page = pglet.page(web=True)
page.add(Text("Hello, world!"))
Esempio n. 18
0
import pglet
from pglet import Stack, Text

page = pglet.page("text")
page.add(
    Stack(
        horizontal=True,
        controls=[
            Text(
                "This-is-a-very-long-text",
                width=50,
                height=50,
                border_style="double",
                border_width=1,
                # vertical_align="center",
                block=True,
                nowrap=True,
            ),
            Text(
                "This-is-a-very-long-text",
                width=50,
                height=50,
                border_style="double",
                border_width=1,
                vertical_align="center",
                block=True,
                nowrap=True,
            ),
        ],
    ))
Esempio n. 19
0
import pglet
from pglet import Page, Text, Button, Stack, Textbox

page = pglet.page("index")
page.update(Page(title="Greeter"))
page.clean()


def on_click(e):
    name = page.get_value('name')
    page.add(Text(value='Hello, ' + name))


page.add(
    Stack(controls=[Text(value='Please enter your name:'),
                    Textbox(id='name')]),
    Stack(horizontal=True,
          controls=[
              Button(text='OK', onclick=on_click, data='OK'),
          ]))

page.wait_close()
Esempio n. 20
0
import logging

import pglet
from pglet import Slider, Stack, Text

logging.basicConfig(level=logging.DEBUG)

with pglet.page("horizontal-stack-wrapping") as page:

    bg_color = "#ddddee"
    page.horizontal_align = "stretch"

    def items(count):
        return [
            Text(
                value=i + 1,
                align="center",
                vertical_align="center",
                width=30,
                height=30,
                bgcolor="BlueMagenta10",
                color="white",
                padding=5,
            ) for i in range(count)
        ]

    def wrap_slider_change(e):
        print("wrap_slider_change", e)
        width = int(e.control.value)
        wrap_stack.width = f"{width}%"
        wrap_stack.update()