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))
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"
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"
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"
def page(): return pglet.page('test_add', no_window=True)
def page(): return pglet.page("test_common_control", no_window=True)
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=
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"))
def page(): return pglet.page("test_update", no_window=True)
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),
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(
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"))
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)
def page(): return pglet.page('test_update', no_window=True)
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)
import pglet from pglet import Text page = pglet.page("hello-world") page.title = "Hello, world!" page.add(Text("Hello, world!"))
import pglet from pglet import Text page = pglet.page(web=True) page.add(Text("Hello, world!"))
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, ), ], ))
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()
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()