Beispiel #1
0
    def __init__(self, page, screen):
        self.page = page
        self.screen = screen
        self.server = None
        self.wlan = network.WLAN(network.STA_IF)

        # use relative path on unix, absolute root else
        if hasattr(network, "UNIX"):
            self.config_file = "wifi.json"
        else:
            self.config_file = "/wifi.json"

        # read network config if possible
        self.config = self.read_wifi_config()

        # create dropdown, but disable it for now
        self.ssids = lv.dropdown(page)
        self.ssids.set_size(160, 32)
        self.ssids.align(page, lv.ALIGN.IN_TOP_MID, -20, 10)
        self.ssids.set_event_cb(self.on_ssid)

        # pre-populate list from stored wifi data if present
        if len(self.config["keys"]) > 0:
            ssids = list(self.config["keys"].keys())
            self.networks = [{
                "ssid": x,
                "open": not self.config["keys"][x]
            } for x in ssids]
            self.set_ssid_list(ssids)
        else:
            self.ssids.set_options("")
            self.ssids.set_text("No Networks")
            self.ssids.set_show_selected(False)
            self.ssids.set_click(False)

        # scan button
        self.scan_btn = lv.btn(page)
        self.scan_btn.set_size(32, 32)
        self.scan_btn.align(page, lv.ALIGN.IN_TOP_MID, 85, 10)
        self.scan_btn.set_event_cb(self.on_scan_btn)
        label = lv.label(self.scan_btn)
        label.set_text(lv.SYMBOL.REFRESH)

        # info/status label
        self.label = lv.label(page)
        self.label.set_long_mode(lv.label.LONG.BREAK)
        self.label.set_width(210)
        self.label.set_text("")
        self.label.set_align(lv.label.ALIGN.CENTER)
        self.label.align(page, lv.ALIGN.IN_TOP_MID, 0, 60)

        # enable wlan
        self.wlan.active(True)
        self.wlan.config(dhcp_hostname=self.config["name"])

        # check if there is info about a last successfully
        # used network
        if "last" in self.config:
            print("Trying last network", self.config["last"], "...")
            self.connect(self.config["last"])
Beispiel #2
0
    def __init__(self, app, page):
        self.app = app
        self.page = page

        # slider
        self.slider = lv.slider(page)
        self.slider.set_width(160)
        self.slider.align(page, lv.ALIGN.IN_TOP_LEFT, 20, 20)
        self.slider_label = lv.label(page)
        self.slider_label.align(self.slider, lv.ALIGN.OUT_RIGHT_MID, 15, 0)
        self.slider.set_event_cb(self.on_slider_changed)
        self.on_slider_changed(None)

        # style selector
        self.styles = [('Gray', ColorStyle(0xCCC)), ('Red', ColorStyle(0xF00)),
                       ('Green', ColorStyle(0x0F0)),
                       ('Blue', ColorStyle(0x00F))]

        self.style_selector = lv.dropdown(page)
        self.style_selector.add_style(self.style_selector.PART.MAIN,
                                      ShadowStyle())
        self.style_selector.align(self.slider, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 40)
        self.style_selector.set_options('\n'.join(x[0] for x in self.styles))
        self.style_selector.set_event_cb(self.on_style_selector_changed)

        # counter button
        self.counter_btn = lv.btn(page)
        self.counter_btn.set_size(80, 80)
        self.counter_btn.align(self.page, lv.ALIGN.IN_BOTTOM_MID, 0, -20)
        self.counter_label = lv.label(self.counter_btn)
        self.counter_label.set_text("Count")
        self.counter_btn.set_event_cb(self.on_counter_btn)
        self.counter = 0
Beispiel #3
0
def widget_new(type, parm = None):
    config = sys.modules['llvgl'].config        
    content = config["win"].get_content()
    lv_obj = None
    if type == TYPE.LABEL:    
        lv_obj = lv.label(content)
    elif type == TYPE.BUTTON:    
        lv_obj = lv.btn(content)
        # buttons don't scale with the content by default
        lv_obj.set_fit(lv.FIT.TIGHT)  # MAX, NONE, PARENT, TIGHT
    elif type == TYPE.SWITCH:    
        lv_obj = lv.switch(content)
    elif type == TYPE.SLIDER:    
        lv_obj = lv.slider(content)
        # sliders default width is too wide for the 240x320 screen
        lv_obj.set_width(180)
    elif type == TYPE.CHECKBOX:    
        lv_obj = lv.checkbox(content)
    elif type == TYPE.LED:    
        lv_obj = lv.led(content)
        # leds default size is a little big for the 240x320 screen
        lv_obj.set_size(30,30)
    elif type == TYPE.GAUGE:    
        lv_obj = lv.gauge(content)
    elif type == TYPE.CHART:
        lv_obj = lv.chart(content)
        # leds default size is a little big for the 240x320 screen
        lv_obj.set_size(180,180)
    elif type == TYPE.DROPDOWN:
        lv_obj = lv.dropdown(content)
    else:
        print("Unknown type:", type);
        return None

    # add new object to internal list
    obj =  { "lv_obj": lv_obj, "type": type }    
    config["objects"].append(obj)

    # set optional parameter if widget support
    if type == TYPE.LABEL or type == TYPE.BUTTON or type == TYPE.CHECKBOX:    
        widget_set_text(obj, parm)
    elif type == TYPE.SWITCH or type == TYPE.LED or type == TYPE.SLIDER:    
        widget_set_value(obj, parm)    
    
    # install default event handler
    lv_obj.set_event_cb(lambda o, e: on_event(obj, e))

    return obj
    def __init__(self, app, page):
        self.app = app
        self.page = page
        self.test_events = []

        self.page.set_flex_flow(lv.FLEX_FLOW.COLUMN)
        self.page.set_flex_align(lv.FLEX_ALIGN.SPACE_EVENLY,
                                 lv.FLEX_ALIGN.CENTER, lv.FLEX_ALIGN.CENTER)

        # slider
        self.slider = lv.slider(page)
        self.slider.set_width(lv.pct(80))
        self.slider_label = lv.label(page)
        self.slider.add_event_cb(self.on_slider_changed,
                                 lv.EVENT.VALUE_CHANGED, None)
        self.on_slider_changed(None)

        # style selector
        self.styles = [('Gray', ColorStyle(0xCCC)), ('Red', ColorStyle(0xF00)),
                       ('Green', ColorStyle(0x0F0)),
                       ('Blue', ColorStyle(0x00F))]

        self.style_selector = lv.dropdown(page)
        self.style_selector.add_style(ShadowStyle(), lv.PART.MAIN)
        self.style_selector.align(lv.ALIGN.OUT_BOTTOM_LEFT, 0, 40)
        self.style_selector.set_options('\n'.join(x[0] for x in self.styles))
        self.style_selector.add_event_cb(self.on_style_selector_changed,
                                         lv.EVENT.VALUE_CHANGED, None)

        # counter button
        self.counter_btn = lv.btn(page)
        self.counter_btn.set_size(80, 80)
        self.counter_label = lv.label(self.counter_btn)
        self.counter_label.set_text("Count")
        self.counter_label.align(lv.ALIGN.CENTER, 0, 0)
        self.counter_btn.add_event_cb(self.on_counter_btn, lv.EVENT.CLICKED,
                                      None)
        self.counter = 0
Beispiel #5
0
#!/opt/bin/lv_micropython -i
import lvgl as lv
import display_driver
import time

# Create a drop down list
ddlist = lv.dropdown(lv.scr_act())
ddlist.set_options("\n".join(
    ["Apple", "Banana", "Orange", "Melon", "Grape", "Raspberry"]))

ddlist.set_dir(lv.dropdown.DIR.LEFT)
ddlist.set_symbol(None)
ddlist.set_show_selected(False)
ddlist.set_text("Fruits")
# It will be called automatically when the size changes
ddlist.align(None, lv.ALIGN.IN_TOP_RIGHT, 0, 20)

# Copy the drop LEFT list
ddlist = lv.dropdown(lv.scr_act(), ddlist)
ddlist.align(None, lv.ALIGN.IN_TOP_RIGHT, 0, 100)
Beispiel #6
0
def m4():

    scr = lv.obj()
    lv.scr_load(scr)

    #container for drop and switch
    cont = lv.cont(scr)
    cont.set_auto_realign(True)
    cont.set_fit2(lv.FIT.PARENT, lv.FIT.TIGHT)
    cont.set_layout(lv.LAYOUT.PRETTY_MID)
    cont.align(scr, lv.ALIGN.IN_TOP_MID, 0, 0)

    #dropdown
    drop = lv.dropdown(cont)
    drop.set_style_local_border_post(lv.BORDER_SIDE.NONE, lv.BORDER_SIDE.NONE,
                                     lv.BORDER_SIDE.NONE)
    drop.set_options(
        "Trigger 1\nTrigger 2\nTrigger 3\nTrigger 4\nTrigger 5\nTrigger 6\nTrigger 7\nTrigger 8\nTrigger 9\n Trigger 10"
    )

    #label
    lbl1 = lv.label(cont)
    lbl1.set_text("Arm?")

    #switch
    switch = lv.switch(cont)

    #tabview

    tab = lv.tabview(scr)
    tab.align(cont, lv.ALIGN.OUT_BOTTOM_MID, 0, 0)

    tab1 = tab.add_tab("Time")
    tab2 = tab.add_tab("Auto")
    tab3 = tab.add_tab("Switches")

    #tab1

    lbl2 = lv.label(tab1)
    lbl2.set_text("Start time [h][m][s]")
    lbl2.align(tab1, lv.ALIGN.IN_TOP_MID, 0, 0)

    trig_btn = lv.btnmatrix(tab1)
    trig_btn.set_height(200)
    trig_btn.align(lbl2, lv.ALIGN.OUT_BOTTOM_MID, 0, 0)

    def remap():
        btn_map = [
            lv.SYMBOL.UP, lv.SYMBOL.UP, lv.SYMBOL.UP, "\n",
            str(trigger[0].bhour),
            str(trigger[0].bminute),
            str(trigger[0].bsecond), "\n", lv.SYMBOL.DOWN, lv.SYMBOL.DOWN,
            lv.SYMBOL.DOWN, "\n", lv.SYMBOL.SAVE, "", ""
        ]

        print('remapped called')

        return btn_map

    trig_btn.set_map(remap())

    #trig_btn.set_style

    def event_handler(obj, event):
        if event == lv.EVENT.VALUE_CHANGED:
            txt = obj.get_active_btn()
            print("{} was pressed".format(txt))

            if (txt == 0):
                trigger[0].bhour += 1

            if (txt == 1):
                trigger[0].bminute += 1

            if (txt == 2):
                trigger[0].bsecond += 1

            if (txt == 6):
                trigger[0].bhour -= 1

            if (txt == 7):
                trigger[0].bminute -= 1

            if (txt == 8):
                trigger[0].bsecond -= 1

            trig_btn.set_map(remap())

    trig_btn.set_event_cb(event_handler)

    #label set duration
    lbl3 = lv.label(tab1)
    lbl3.align(trig_btn, lv.ALIGN.OUT_BOTTOM_MID, -100, 0)
    lbl3.set_text("Set trigger duration [h][m][s]")

    roller = lv.roller(tab1)
Beispiel #7
0
def m3():

    global trigger

    print("This is callback for M3")

    scr = lv.obj()
    lv.scr_load(scr)

    #make container
    con = lv.cont(scr)
    con.set_auto_realign(True)
    #con.set_layout(lv.LAYOUT.PRETTY_TOP)
    con.align(scr, lv.ALIGN.IN_TOP_MID, 0, 0)
    con.set_fit2(lv.FIT.PARENT, lv.FIT.TIGHT)
    con.set_style_local_radius(0, 0, 0)

    #label = lv.label(con)
    #label.set_text("Trigger No:")
    #label.align(con, lv.ALIGN.IN_TOP_LEFT,10,10)

    drop = lv.dropdown(con)
    drop.align(con, lv.ALIGN.IN_LEFT_MID, 10, 0)
    drop.set_drag(False)
    drop.set_options(
        "trigger 1\ntrigger 2\ntrigger 3\ntrigger 4\ntrigger 5\ntrigger 6\ntrigger 7\n"
    )
    drop.set_event_cb(lambda obj, event: m3_1()
                      if event == lv.EVENT.VALUE_CHANGED else None)

    btn = lv.btn(con)
    label_btn = lv.label(btn)
    btn.set_height(drop.get_height())
    label_btn.set_text("New")
    btn.align(con, lv.ALIGN.IN_RIGHT_MID, -10, 0)

    def m3_1():

        #load values to begin and duration

        con2 = lv.cont(scr)
        con2.align(con, lv.ALIGN.OUT_BOTTOM_MID, 0, 0)
        con2.set_fit2(lv.FIT.PARENT, lv.FIT.TIGHT)
        con2.set_style_local_radius(0, 0, 0)

        position = drop.get_selected()

        con3 = lv.cont(con2)
        con3.align(con2, lv.ALIGN.IN_TOP_MID, 0, 0)
        con3.set_fit2(lv.FIT.PARENT, lv.FIT.TIGHT)
        tittle = lv.label(con3)
        tittle.align(con3, lv.ALIGN.CENTER, 0, 0)
        tittle.set_text("Set Begin Time")

        minute_btn = lv.btn(con2)
        minute_btn.align(con3, lv.ALIGN.OUT_BOTTOM_MID, 0, 0)
        minute_btn.set_style_local_radius(0, 0, 0)
        minute_btn.set_fit(lv.FIT.TIGHT)
        lbl_minute_btn = lv.label(minute_btn)
        lbl_minute_btn.set_text(str(trigger[position].bminute))

        hour_btn = lv.btn(con2)
        hour_btn.align(minute_btn, lv.ALIGN.OUT_LEFT_MID, 0, 0)
        hour_btn.set_style_local_radius(0, 0, 0)
        hour_btn.set_fit(lv.FIT.TIGHT)
        lbl_hour_btn = lv.label(hour_btn)
        lbl_hour_btn.set_text(str(trigger[position].bhour))

        second_btn = lv.btn(con2)
        second_btn.align(minute_btn, lv.ALIGN.OUT_RIGHT_MID, 0, 0)
        second_btn.set_style_local_radius(0, 0, 0)
        second_btn.set_fit(lv.FIT.TIGHT)
        lvl_second_btn = lv.label(second_btn)
        lvl_second_btn.set_text(str(trigger[position].bsecond))

    m3_1()
import lvgl as lv
import display_driver

#
# Create a drop down, up, left and right menus
#

opts = "\n".join(
    ["Apple\n"
     "Banana\n"
     "Orange\n"
     "Melon\n"
     "Grape\n"
     "Raspberry"])

dd = lv.dropdown(lv.scr_act())
dd.set_options_static(opts)
dd.align(lv.ALIGN.TOP_MID, 0, 10)
dd = lv.dropdown(lv.scr_act())
dd.set_options_static(opts)
dd.set_dir(lv.DIR.BOTTOM)
dd.set_symbol(lv.SYMBOL.UP)
dd.align(lv.ALIGN.BOTTOM_MID, 0, -10)

dd = lv.dropdown(lv.scr_act())
dd.set_options_static(opts)
dd.set_dir(lv.DIR.RIGHT)
dd.set_symbol(lv.SYMBOL.RIGHT)
dd.align(lv.ALIGN.LEFT_MID, 10, 0)

dd = lv.dropdown(lv.scr_act())
Beispiel #9
0
def selectors_create(parent):
    page = lv.page.__cast__(parent)
    lv.page.set_scrl_layout(page, lv.LAYOUT.PRETTY_MID)

    grid_h = page.get_height_grid(1, 1)

    if disp_size <= lv.DISP_SIZE.SMALL:
        grid_w = page.get_width_grid(1, 1)
    else:
        grid_w = page.get_width_grid(2, 1)

    cal = lv.calendar(parent, None)
    cal.set_drag_parent(True)
    if disp_size > lv.DISP_SIZE.MEDIUM:
        cal.set_size(min(grid_h, grid_w), min(grid_h, grid_w))
    else:
        cal.set_size(grid_w, grid_w)
        if disp_size <= lv.DISP_SIZE.SMALL:
            cal.set_style_local_text_font(lv.calendat.PART.BG,
                                          lv.STATE.DEFAULT,
                                          lv.theme_get_font_small())

    hl = [{
        "year": 2020,
        "month": 1,
        "day": 5
    }, {
        "year": 2020,
        "month": 1,
        "day": 9
    }]

    h = lv.cont(parent, None)
    h.set_drag_parent(True)
    if disp_size <= lv.DISP_SIZE.SMALL:
        h.set_fit2(lv.FIT.NONE, lv.FIT.TIGHT)
        h.set_width(lv.page.get_width_fit(page))
        h.set_layout(lv.LAYOUT.COLUMN_MID)
    elif disp_size <= lv.DISP_SIZE.MEDIUM:
        h.set_size(lv.obj.get_width(lv.obj.__cast__(cal)),
                   lv.obj.get_height(lv.obj.__cast__(cal)))
        h.set_layout(lv.LAYOUT.PRETTY_TOP)
    else:
        h.set_click(False)
        h.set_style_local_bg_opa(lv.PART.MAIN, lv.STATE.DEFAULT, lv.OPA.TRANSP)
        h.set_style_local_border_opa(lv.PART.MAIN, lv.STATE.DEFAULT,
                                     lv.OPA.TRANSP)
        h.set_style_local_pad_left(lv.cont.PART.MAIN, lv.STATE.DEFAULT, 0)
        h.set_style_local_pad_right(lv.cont.PART.MAIN, lv.STATE.DEFAULT, 0)
        h.set_style_local_pad_top(lv.cont.PART_MAIN, LV_STATE_DEFAULT, 0)
        h.set_size(min(grid_h, grid_w), min(grid_h, grid_w))
        h.set_layout(lv.LAYOUT.PRETTY_TOP)

    roller = lv.roller(h, None)
    roller.add_style(lv.cont.PART.MAIN, style_box)
    roller.set_style_local_value_str(lv.cont.PART.MAIN, lv.STATE.DEFAULT,
                                     "Roller")
    roller.set_auto_fit(False)
    roller.set_align(lv.label.ALIGN.CENTER)
    roller.set_visible_row_count(4)
    if disp_size <= lv.DISP_SIZE.SMALL:
        roller.set_width(lv.cont.get_width_grid(h, 1, 1))
    else:
        roller.set_width(lv.cont.get_width_grid(h, 2, 1))

    dd = lv.dropdown(h, None)
    dd.add_style(lv.cont.PART.MAIN, style_box)
    dd.set_style_local_value_str(lv.cont.PART.MAIN, lv.STATE.DEFAULT,
                                 "Dropdown")
    if disp_size <= lv.DISP_SIZE.SMALL:
        dd.set_width(lv.cont.get_width_grid(h, 1, 1))
    else:
        dd.set_width(lv.cont.get_width_grid(h, 2, 1))

    dd.set_options(
        "Alpha\nBravo\nCharlie\nDelta\nEcho\nFoxtrot\nGolf\nHotel\nIndia\nJuliette\nKilo\nLima\nMike\nNovember\n"
        "Oscar\nPapa\nQuebec\nRomeo\nSierra\nTango\nUniform\nVictor\nWhiskey\nXray\nYankee\nZulu"
    )

    list = lv.list(parent, None)
    list.set_scroll_propagation(True)
    list.set_size(grid_w, grid_h)

    txts = [
        lv.SYMBOL.SAVE, "Save", lv.SYMBOL.CUT, "Cut", lv.SYMBOL.COPY, "Copy",
        lv.SYMBOL.OK, "This is a quite long text to scroll on the list",
        lv.SYMBOL.EDIT, "Edit", lv.SYMBOL.WIFI, "Wifi", lv.SYMBOL.BLUETOOTH,
        "Bluetooth", lv.SYMBOL.GPS, "GPS", lv.SYMBOL.USB, "USB",
        lv.SYMBOL.SD_CARD, "SD card", lv.SYMBOL.CLOSE, "Close"
    ]

    for i in range(0, len(txts) // 2, 2):
        btn = list.add_btn(txts[i], txts[i + 1])
        lv.btn.set_checkable(lv.btn.__cast__(btn), True)

        # Make a button disabled
        if i == 4:
            btn.set_state(lv.btn.STATE.DISABLED)

    cal.set_highlighted_dates(hl, 2)
Beispiel #10
0
})


def event_cb(e):
    dropdown = lv.dropdown.__cast__(e.get_target())
    option = " " * 64  # should be large enough to store the option
    dropdown.get_selected_str(option, len(option))
    print(option.strip() + " is selected")


#
# Create a menu from a drop-down list and show some drop-down list features and styling
#

# Create a drop down list
dropdown = lv.dropdown(lv.scr_act())
dropdown.align(lv.ALIGN.TOP_LEFT, 10, 10)
dropdown.set_options("".join([
    "New project\n", "New file\n", "Open project\n", "Recent projects\n",
    "Preferences\n", "Exit"
]))

# Set a fixed text to display on the button of the drop-down list
dropdown.set_text("Menu")

# Use a custom image as down icon and flip it when the list is opened
# LV_IMG_DECLARE(img_caret_down)
dropdown.set_symbol(img_caret_down_argb)
dropdown.set_style_transform_angle(1800, lv.STATE.CHECKED)

# In a menu we don't need to show the last clicked item
def gui_edit_trigger(num, flag):
    #num is to call trigger[num]
    #flag is to check 'new' or 'edit'
    #changes are stored in temp_trigger_item

    print('Printing Num : {}'.format(num))

    temp_trigger_item = trigger

    if flag == 'edit':
        temp_trigger_item = trigger[num]
        print('Btn Pressed : {}'.format(str(temp_trigger_item)))

    elif flag == 'new':
        print('Creating new Trigger')
        #template should match with INITIAL TIMERS
        temp_trigger_item = {
            'name': 'New Trigger',
            'hb': 0,
            'mb': 0,
            'sb': 5,
            'dur': 5,
            'pin': 5,
            'timerno': 0,
            'cardnum': 0,
            'daysoweek': [0, 1, 2, 3, 4, 5, 6],
            'sec_start': 0
        }

    def check_daysoweek(checkbox_array):

        temp_daysoweek = []

        for num, check in enumerate(checkbox_array, 0):
            if check.get_state() == True:
                temp_daysoweek.append(num)

        print(temp_daysoweek)
        return temp_daysoweek

    def btn_event(task, params):

        if params == 'cancel':
            lv.scr_load(scr)

        elif params['param'] == 'save' and params['flag'] == 'edit':
            print(params)
            temp_trigger_item['name'] = params['name']
            temp_trigger_item['hb'] = params['hb']
            temp_trigger_item['mb'] = params['mb']
            temp_trigger_item['sb'] = params['sb']
            temp_trigger_item['dur'] = params['dur']
            temp_trigger_item['pin'] = params['pin']
            temp_trigger_item['timerno'] = params['timerno']
            temp_trigger_item['cardnum'] = params['cardnum']
            temp_trigger_item['daysoweek'] = params['daysoweek']
            temp_trigger_item['sec_start'] = params['sec_start']
            print('Triger Edit : Settings saved')

            lv.scr_load(scr)

        elif params['param'] == 'save' and params['flag'] == 'new':

            del params['param']
            del params['flag']

            trigger.append(params)
            gui_main()

            print('new key added : {}'.format(params))

    global scr3

    scr3 = lv.obj()
    lv.scr_load(scr3)

    btn1 = lv.btn(scr3)
    btn1.set_size(150, 40)
    btn1.set_style_bg_color(primary, 0)
    btn1_label = lv.label(btn1)
    btn1_label.set_text('Cancel')
    btn1_label.center()
    btn1.align_to(scr3, lv.ALIGN.TOP_LEFT, 0, 0)
    btn1.add_event_cb(lambda task: btn_event(task, 'cancel'), lv.EVENT.CLICKED,
                      None)

    btn2 = lv.btn(scr3)
    btn2.set_size(150, 40)
    btn2.set_style_bg_color(primary, 0)
    btn2_label = lv.label(btn2)
    btn2_label.set_text('Save')
    btn2_label.center()
    btn2.align_to(scr3, lv.ALIGN.TOP_RIGHT, 0, 0)

    pinname = {'0': 21, '1': 19, '2': 18, '3': 5}

    btn2.add_event_cb(
        lambda task: btn_event(task,
                               params={
                                   'param':
                                   'save',
                                   'flag':
                                   flag,
                                   'name':
                                   ta_name.get_text(),
                                   'hb':
                                   r1.get_selected(),
                                   'mb':
                                   r2.get_selected(),
                                   'sb':
                                   r3.get_selected(),
                                   'dur':
                                   ((r4.get_selected() * 60 * 60) +
                                    (r5.get_selected() * 60) + r6.get_selected(
                                    )),
                                   'pin':
                                   pinname[str(drpdwn.get_selected())],
                                   'timerno':
                                   0,
                                   'cardnum':
                                   0,
                                   'daysoweek':
                                   check_daysoweek(checkbox),
                                   'sec_start':
                                   0
                               }), lv.EVENT.CLICKED, None)

    def refresh_label():
        #label for activation time
        label3.set_text(
            'Set trigger activation time\n{:02} : {:02} : {:02}'.format(
                r1.get_selected(), r2.get_selected(), r3.get_selected()))

        #label for duration
        durations = (r4.get_selected() * 60 * 60) + (r5.get_selected() *
                                                     60) + r6.get_selected()

        label4.set_text(
            'Set Duration for trigger\n{:,} in seconds'.format(durations))

    label1 = lv.label(scr3)

    if flag == 'edit':
        label1.set_text('Edit Trigger Settings')

    elif flag == 'new':
        label1.set_text('New Trigger Settings')

    label1.align_to(btn1, lv.ALIGN.OUT_BOTTOM_LEFT, 10, 10)

    label2 = lv.label(scr3)
    label2.set_text('Trigger Name')
    label2.align_to(label1, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)

    def keyboard_event(task, kb, scr3):
        event = task.get_code()
        ta = task.get_target()  #get ta object

        if event == lv.EVENT.FOCUSED:
            #enable keyboard
            kb.set_textarea(ta)
            kb.clear_flag(lv.obj.FLAG.HIDDEN)

            #hide others
            for i in range(6, scr3.get_child_cnt()):
                scr3.get_child(i).add_flag(lv.obj.FLAG.HIDDEN)

        if event == lv.EVENT.DEFOCUSED:
            #disable keyboard and hide
            kb.set_textarea(None)
            kb.add_flag(lv.obj.FLAG.HIDDEN)

            #show others
            for i in range(6, scr3.get_child_cnt()):
                scr3.get_child(i).clear_flag(lv.obj.FLAG.HIDDEN)

    ta_name = lv.textarea(scr3)
    ta_name.align_to(label2, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    ta_name.add_text(temp_trigger_item['name'])
    ta_name.set_size(205, 40)
    ta_name.add_state(lv.STATE.FOCUSED)
    ta_name.add_event_cb(lambda task: keyboard_event(task, kb, scr3),
                         lv.EVENT.ALL, None)

    kb = lv.keyboard(scr3)
    kb.align_to(ta_name, lv.ALIGN.OUT_BOTTOM_LEFT, -10, 10)
    kb.set_textarea(ta_name)
    kb.add_flag(lv.obj.FLAG.HIDDEN)

    label3 = lv.label(scr3)
    label3.set_text('Set trigger activation time')
    label3.align_to(ta_name, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)

    dump = []
    for i in range(0, 24):
        dump.append(str(i))

    opts1 = "\n".join(dump)
    del dump

    dump = []
    for i in range(0, 60):
        dump.append(str(i))

    opts2 = "\n".join(dump)
    del dump

    #Hour, Minute and Seconds to begin set using rollers
    r1 = lv.roller(scr3)
    r1.set_width(80)
    r1.set_height(80)
    r1.set_options(opts1, lv.roller.MODE.NORMAL)
    r1.align_to(label3, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 35)

    r2 = lv.roller(scr3)
    r2.set_width(80)
    r2.set_height(80)
    r2.set_options(opts2, lv.roller.MODE.NORMAL)
    r2.align_to(r1, lv.ALIGN.OUT_RIGHT_TOP, 10, 0)

    r3 = lv.roller(scr3)
    r3.set_width(80)
    r3.set_height(80)
    r3.set_options(opts2, lv.roller.MODE.NORMAL)
    r3.align_to(r2, lv.ALIGN.OUT_RIGHT_TOP, 10, 0)

    if flag == 'edit':
        r1.set_selected(temp_trigger_item['hb'], lv.ANIM.ON)
        r2.set_selected(temp_trigger_item['mb'], lv.ANIM.ON)
        r3.set_selected(temp_trigger_item['sb'], lv.ANIM.ON)

    r1_lbl = lv.label(scr3)
    r1_lbl.set_text('Hour')
    r1_lbl.align_to(r1, lv.ALIGN.OUT_TOP_MID, 0, 0)

    r2_lbl = lv.label(scr3)
    r2_lbl.set_text('Minute')
    r2_lbl.align_to(r2, lv.ALIGN.OUT_TOP_MID, 0, 0)

    r3_lbl = lv.label(scr3)
    r3_lbl.set_text('Seconds')
    r3_lbl.align_to(r3, lv.ALIGN.OUT_TOP_MID, 0, 0)

    #Duration. Duration information is set in refresh_label()
    label4 = lv.label(scr3)
    label4.align_to(r1, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)

    r4 = lv.roller(scr3)
    r4.set_width(80)
    r4.set_height(80)
    r4.set_options(opts1, lv.roller.MODE.NORMAL)
    r4.align_to(label4, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 35)

    r5 = lv.roller(scr3)
    r5.set_width(80)
    r5.set_height(80)
    r5.set_options(opts2, lv.roller.MODE.NORMAL)
    r5.align_to(r4, lv.ALIGN.OUT_RIGHT_TOP, 10, 0)

    r6 = lv.roller(scr3)
    r6.set_width(80)
    r6.set_height(80)
    r6.set_options(opts2, lv.roller.MODE.NORMAL)
    r6.align_to(r5, lv.ALIGN.OUT_RIGHT_TOP, 10, 0)

    def convert(seconds):
        min, sec = divmod(seconds, 60)
        hour, min = divmod(min, 60)

        return [hour, min, sec]

    if flag == 'edit':
        convert(temp_trigger_item['dur'])
        r4.set_selected(convert(temp_trigger_item['dur'])[0], lv.ANIM.ON)
        r5.set_selected(convert(temp_trigger_item['dur'])[1], lv.ANIM.ON)
        r6.set_selected(convert(temp_trigger_item['dur'])[2], lv.ANIM.ON)

    r4_lbl = lv.label(scr3)
    r4_lbl.set_text('Hour')
    r4_lbl.align_to(r4, lv.ALIGN.OUT_TOP_MID, 0, 0)

    r5_lbl = lv.label(scr3)
    r5_lbl.set_text('Minute')
    r5_lbl.align_to(r5, lv.ALIGN.OUT_TOP_MID, 0, 0)

    r6_lbl = lv.label(scr3)
    r6_lbl.set_text('Seconds')
    r6_lbl.align_to(r6, lv.ALIGN.OUT_TOP_MID, 0, 0)

    #Relay Setup

    label5 = lv.label(scr3)
    label5.set_text('Assign Relay to Trigger')
    label5.align_to(r4, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)

    drpdwn = lv.dropdown(scr3)
    drpdwn.align_to(label5, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    drpdwn.set_options("\n".join(['Relay 1', 'Relay 2', 'Relay 3', 'Relay 4']))

    relayname = {21: '0', 19: '1', 18: '2', 5: '3'}

    if flag == 'edit':
        drpdwn.set_selected(int(relayname[temp_trigger_item['pin']]))

    label6 = lv.label(scr3)
    label6.set_text('Set days of week to turn trigger :')
    label6.align_to(drpdwn, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)

    checkbox = []
    checkbox_lbl = [
        'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday',
        'Saturday'
    ]

    for i in range(0, 6):

        checkbox.append(lv.checkbox(scr3))
        if i == 0:
            checkbox[i].align_to(label6, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
        else:
            checkbox[i].align_to(checkbox[i - 1], lv.ALIGN.OUT_BOTTOM_LEFT, 0,
                                 10)

        checkbox[i].set_text(checkbox_lbl[i])

        if flag == 'edit':
            if i in temp_trigger_item['daysoweek']:
                checkbox[i].add_state(lv.STATE.CHECKED)

        elif flag == 'new':
            checkbox[i].add_state(lv.STATE.CHECKED)

    if flag == 'edit':
        del_btn = lv.btn(scr3)
        del_btn_lbl = lv.label(del_btn)
        del_btn_lbl.set_text('Delete This Trigger!')
        del_btn.set_style_bg_color(red, 0)
        del_btn.align_to(checkbox[5], lv.ALIGN.BOTTOM_MID, 80, 100)

    lv.timer_create(lambda task: refresh_label(), 900, None)
Beispiel #12
0
    def scan_next_event_cb(self, obj, evt):
        LV_IMG_ZOOM_NONE = 250
        if evt == lv.EVENT.CLICKED:
            self.anim_out_all(lv.scr_act(), 0)

            delay = 400

            back = self.add_back(self.back_to_home_event_cb)
            self.anim_in(back, delay)

            title = self.add_title("ADJUST IMAGE")
            self.anim_in(title, delay)

            box_w = 400
            self.scan_img.set_pivot(0, 0)
            self.scan_img.set_antialias(False)

            a = lv.anim_t()
            a.init()
            a.set_var(self.scan_img)
            a.set_custom_exec_cb(
                lambda a, val: self.set_zoom(self.scan_img, val))
            a.set_values(LV_IMG_ZOOM_NONE, 190)
            a.set_time(200)
            a.set_delay(200)
            lv.anim_t.start(a)

            # self.scan_img = None    # To allow anim out

            dropdown_box = lv.obj(lv.scr_act(), None)
            dropdown_box.set_size(box_w, self.LV_VER_RES // 5)
            dropdown_box.align(None, lv.ALIGN.IN_BOTTOM_LEFT, 40, -20)

            dropdown = lv.dropdown(dropdown_box, None)
            dropdown.align(None, lv.ALIGN.IN_LEFT_MID, self.LV_HOR_RES // 60,
                           0)
            dropdown.set_max_height(self.LV_VER_RES // 3)
            dropdown.set_options_static("Best\nNormal\nDraft")
            dropdown.set_width((box_w - 3 * self.LV_HOR_RES // 60) // 2)
            self.theme.apply(dropdown, lv.THEME.DROPDOWN)

            dropdown = lv.dropdown(dropdown_box, dropdown)
            dropdown.align(None, lv.ALIGN.IN_RIGHT_MID, -self.LV_HOR_RES // 60,
                           0)
            dropdown.set_options_static(
                "72 DPI\n96 DPI\n150 DPI\n300 DPI\n600 DPI\n900 DPI\n1200 DPI")
            self.theme.apply(dropdown, lv.THEME.DROPDOWN)

            box_w = 320 - 40
            settings_box = lv.obj(lv.scr_act(), None)
            settings_box.set_size(box_w, self.LV_VER_RES // 2)
            settings_box.align(None, lv.ALIGN.IN_TOP_RIGHT, -40, 100)

            numbox = lv.cont(settings_box, None)
            self.theme.apply(numbox, LV_DEMO_PRINTER_THEME_BOX_BORDER)
            numbox.set_size(self.LV_HOR_RES // 7, self.LV_HOR_RES // 13)
            numbox.align(settings_box, lv.ALIGN.IN_TOP_MID, 0,
                         self.LV_VER_RES // 10)
            numbox.set_style_local_value_str(lv.obj.PART.MAIN,
                                             lv.STATE.DEFAULT, "Copies")
            numbox.set_style_local_value_align(lv.obj.PART.MAIN,
                                               lv.STATE.DEFAULT,
                                               lv.ALIGN.OUT_TOP_MID)
            numbox.set_style_local_value_ofs_y(lv.obj.PART.MAIN,
                                               lv.STATE.DEFAULT,
                                               -self.LV_VER_RES // 50)
            numbox.set_style_local_value_font(lv.obj.PART.MAIN,
                                              lv.STATE.DEFAULT,
                                              self.theme.get_font_subtitle())
            numbox.set_layout(lv.LAYOUT.CENTER)

            self.print_cnt = 1
            self.print_cnt_label = lv.label(numbox, None)
            self.print_cnt_label.set_text("1")
            self.print_cnt_label.set_style_local_text_font(
                lv.label.PART.MAIN, lv.STATE.DEFAULT,
                self.theme.get_font_subtitle())

            btn = lv.btn(settings_box, None)
            btn.set_size(self.LV_HOR_RES // 13, self.LV_HOR_RES // 13)
            btn.align(numbox, lv.ALIGN.OUT_LEFT_MID, -self.LV_VER_RES // 60, 0)
            btn.set_style_local_value_str(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                          lv.SYMBOL.DOWN)
            btn.set_style_local_value_font(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                           self.theme.get_font_subtitle())
            btn.set_event_cb(self.print_cnt_btn_event_cb)
            btn.set_ext_click_area(10, 10, 10, 10)
            self.theme.apply(btn, lv.THEME.BTN)

            sw = lv.switch(settings_box, None)
            sw.set_size(self.LV_HOR_RES // 10, self.LV_VER_RES // 12)
            sw.align(btn, lv.ALIGN.OUT_BOTTOM_LEFT, self.LV_HOR_RES // 50,
                     self.LV_VER_RES // 7)
            sw.set_style_local_value_ofs_y(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                           -self.LV_VER_RES // 50)
            sw.set_style_local_value_align(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                           lv.ALIGN.OUT_TOP_MID)
            sw.set_style_local_value_str(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                         "Color")
            sw.set_style_local_value_font(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                          self.theme.get_font_subtitle())
            self.theme.apply(sw, lv.THEME.SWITCH)

            btn = lv.btn(settings_box, btn)
            btn.align(numbox, lv.ALIGN.OUT_RIGHT_MID, self.LV_VER_RES // 60, 0)
            btn.set_style_local_value_str(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                          lv.SYMBOL.UP)
            btn.set_event_cb(self.print_cnt_btn_event_cb)
            self.theme.apply(btn, lv.THEME.BTN)

            sw = lv.switch(settings_box, sw)
            sw.align(btn, lv.ALIGN.OUT_BOTTOM_RIGHT, -self.LV_HOR_RES // 50,
                     self.LV_VER_RES // 7)
            sw.set_style_local_value_str(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                         "Vertical")

            print_btn = lv.btn(lv.scr_act(), None)
            self.theme.apply(print_btn, LV_DEMO_PRINTER_THEME_BTN_CIRCLE)
            print_btn.set_size(box_w, 60)
            print_btn.set_event_cb(self.print_start_event_cb)

            btn_ofs_y = (dropdown_box.get_height() -
                         print_btn.get_height()) // 2
            print_btn.align(settings_box, lv.ALIGN.OUT_BOTTOM_MID, 0,
                            self.LV_HOR_RES // 30 + btn_ofs_y)
            print_btn.set_style_local_value_str(lv.obj.PART.MAIN,
                                                lv.STATE.DEFAULT, "PRINT")
            print_btn.set_style_local_value_font(
                lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                self.theme.get_font_subtitle())
            print_btn.set_style_local_bg_color(lv.obj.PART.MAIN,
                                               lv.STATE.DEFAULT,
                                               LV_DEMO_PRINTER_GREEN)
            print_btn.set_style_local_bg_color(
                lv.obj.PART.MAIN, lv.STATE.PRESSED,
                LV_DEMO_PRINTER_GREEN.color_darken(lv.OPA._20))

            delay += self.LV_DEMO_PRINTER_ANIM_DELAY
            self.anim_in(settings_box, delay)

            delay += self.LV_DEMO_PRINTER_ANIM_DELAY
            self.anim_in(dropdown_box, delay)

            delay += self.LV_DEMO_PRINTER_ANIM_DELAY
            self.anim_in(print_btn, delay)

            self.anim_bg(0, LV_DEMO_PRINTER_BLUE,
                         self.LV_DEMO_PRINTER_BG_NORMAL)
Beispiel #13
0
    def usb_icon_event_cb(self, obj, evt):
        if evt == lv.EVENT.CLICKED:
            self.anim_out_all(lv.scr_act(), 0)

            delay = 200

            back = self.add_back(self.back_to_print_event_cb)
            self.anim_in(back, delay)

            title = self.add_title("PRINTING FROM USB DRIVE")
            self.anim_in(title, delay)

            box_w = self.LV_HOR_RES * 5 // 10
            list = lv.list(lv.scr_act(), None)
            list.set_size(box_w, self.LV_VER_RES // 2)
            list.align(None, lv.ALIGN.IN_TOP_LEFT, self.LV_HOR_RES // 20,
                       self.LV_VER_RES // 5)

            dummy_file_list = [
                "Contract 12.pdf", "Scanned_05_21.pdf", "Photo_132210.jpg",
                "Photo_232141.jpg", "Photo_091640.jpg", "Photo_124019.jpg",
                "Photo_232032.jpg", "Photo_232033.jpg", "Photo_232034.jpg",
                "Monday schedule.pdf", "Email from John.txt", "New file.txt",
                "Untitled.txt", "Untitled (1).txt", "Gallery_40.jpg",
                "Gallery_41.jpg", "Gallery_42.jpg", "Gallery_43.jpg",
                "Gallery_44.jpg"
            ]

            for filename in dummy_file_list:
                btn = lv.btn.__cast__(list.add_btn(lv.SYMBOL.FILE, filename))
                btn.set_checkable(True)
                self.theme.apply(btn, lv.THEME.LIST_BTN)

            dropdown_box = lv.obj(lv.scr_act(), None)
            dropdown_box.set_size(box_w, self.LV_VER_RES // 5)
            dropdown_box.align(list, lv.ALIGN.OUT_BOTTOM_MID, 0,
                               self.LV_HOR_RES // 30)

            dropdown = lv.dropdown(dropdown_box, None)
            dropdown.align(None, lv.ALIGN.IN_LEFT_MID, self.LV_HOR_RES // 60,
                           0)
            dropdown.set_max_height(self.LV_VER_RES // 3)
            dropdown.set_options_static("Best\nNormal\nDraft")
            dropdown.set_width((box_w - 3 * self.LV_HOR_RES // 60) // 2)
            dropdown.set_ext_click_area(5, 5, 5, 5)
            self.theme.apply(dropdown, lv.THEME.DROPDOWN)

            dropdown = lv.dropdown(dropdown_box, dropdown)
            dropdown.align(None, lv.ALIGN.IN_RIGHT_MID, -self.LV_HOR_RES // 60,
                           0)
            # dropdown.set_options_static("100 DPI\n200 DPI\n300 DPI\n400 DPI\n500 DPI\n1500 DPI")
            dropdown.set_options_static("\n".join([
                "100 DPI", "200 DPI", "300 DPI", "400 DPI", "500 DPI",
                "1500 DPI"
            ]))
            self.theme.apply(dropdown, lv.THEME.DROPDOWN)

            box_w = 320 - 40
            settings_box = lv.obj(lv.scr_act(), None)
            settings_box.set_size(box_w, self.LV_VER_RES // 2)
            settings_box.align(list, lv.ALIGN.OUT_RIGHT_TOP,
                               self.LV_HOR_RES // 20, 0)

            self.print_cnt = 1
            numbox = lv.cont(settings_box, None)
            self.theme.apply(numbox, LV_DEMO_PRINTER_THEME_BOX_BORDER)
            numbox.set_size(self.LV_HOR_RES // 7, self.LV_HOR_RES // 13)
            numbox.align(settings_box, lv.ALIGN.IN_TOP_MID, 0,
                         self.LV_VER_RES // 10)
            numbox.set_style_local_value_str(lv.obj.PART.MAIN,
                                             lv.STATE.DEFAULT, "Copies")
            numbox.set_style_local_value_align(lv.obj.PART.MAIN,
                                               lv.STATE.DEFAULT,
                                               lv.ALIGN.OUT_TOP_MID)
            numbox.set_style_local_value_ofs_y(lv.obj.PART.MAIN,
                                               lv.STATE.DEFAULT,
                                               -self.LV_VER_RES // 50)
            numbox.set_style_local_value_font(lv.obj.PART.MAIN,
                                              lv.STATE.DEFAULT,
                                              self.theme.get_font_subtitle())
            numbox.set_layout(lv.LAYOUT.CENTER)

            self.print_cnt_label = lv.label(numbox, None)
            self.print_cnt_label.set_text("1")
            self.print_cnt_label.set_style_local_text_font(
                lv.label.PART.MAIN, lv.STATE.DEFAULT,
                self.theme.get_font_subtitle())

            btn = lv.btn(settings_box, None)
            btn.set_size(self.LV_HOR_RES // 13, self.LV_HOR_RES // 13)
            btn.align(numbox, lv.ALIGN.OUT_LEFT_MID, -self.LV_VER_RES // 60, 0)
            btn.set_style_local_value_str(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                          lv.SYMBOL.DOWN)
            btn.set_style_local_value_font(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                           self.theme.get_font_subtitle())
            btn.set_event_cb(self.print_cnt_btn_event_cb)
            btn.set_ext_click_area(10, 10, 10, 10)
            self.theme.apply(btn, lv.THEME.BTN)

            sw = lv.switch(settings_box, None)
            sw.set_size(self.LV_HOR_RES // 10, self.LV_VER_RES // 12)
            sw.align(btn, lv.ALIGN.OUT_BOTTOM_LEFT, self.LV_HOR_RES // 50,
                     self.LV_VER_RES // 7)
            sw.set_style_local_value_ofs_y(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                           -self.LV_VER_RES // 50)
            sw.set_style_local_value_align(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                           lv.ALIGN.OUT_TOP_MID)
            sw.set_style_local_value_str(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                         "Color")
            sw.set_style_local_value_font(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                          self.theme.get_font_subtitle())
            self.theme.apply(sw, lv.THEME.SWITCH)

            btn = lv.btn(settings_box, btn)
            btn.align(numbox, lv.ALIGN.OUT_RIGHT_MID, self.LV_VER_RES // 60, 0)
            btn.set_style_local_value_str(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                          lv.SYMBOL.UP)
            btn.set_style_local_value_font(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                           self.theme.get_font_subtitle())
            self.theme.apply(btn, lv.THEME.BTN)
            btn.set_event_cb(self.print_cnt_btn_event_cb)

            sw = lv.switch(settings_box, sw)
            sw.align(btn, lv.ALIGN.OUT_BOTTOM_RIGHT, -self.LV_HOR_RES // 50,
                     self.LV_VER_RES // 7)
            sw.set_style_local_value_str(lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                                         "Vertical")
            self.theme.apply(sw, lv.THEME.SWITCH)

            print_btn = lv.btn(lv.scr_act(), None)
            self.theme.apply(print_btn, LV_DEMO_PRINTER_THEME_BTN_CIRCLE)
            print_btn.set_size(box_w, 60)

            btn_ofs_y = (dropdown_box.get_height() -
                         print_btn.get_height()) // 2
            print_btn.align(settings_box, lv.ALIGN.OUT_BOTTOM_MID, 0,
                            self.LV_HOR_RES // 30 + btn_ofs_y)
            print_btn.set_style_local_value_str(lv.obj.PART.MAIN,
                                                lv.STATE.DEFAULT, "PRINT")
            print_btn.set_style_local_value_font(
                lv.obj.PART.MAIN, lv.STATE.DEFAULT,
                self.theme.get_font_subtitle())
            print_btn.set_style_local_bg_color(lv.obj.PART.MAIN,
                                               lv.STATE.DEFAULT,
                                               LV_DEMO_PRINTER_GREEN)
            print_btn.set_style_local_bg_color(
                lv.obj.PART.MAIN, lv.STATE.PRESSED,
                LV_DEMO_PRINTER_GREEN.color_darken(lv.OPA._20))
            print_btn.set_event_cb(self.print_start_event_cb)

            delay += self.LV_DEMO_PRINTER_ANIM_DELAY
            self.anim_in(list, delay)

            delay += self.LV_DEMO_PRINTER_ANIM_DELAY
            self.anim_in(settings_box, delay)

            delay += self.LV_DEMO_PRINTER_ANIM_DELAY
            self.anim_in(dropdown_box, delay)

            delay += self.LV_DEMO_PRINTER_ANIM_DELAY
            self.anim_in(print_btn, delay)

            self.anim_bg(0, LV_DEMO_PRINTER_BLUE,
                         self.LV_DEMO_PRINTER_BG_NORMAL)
Beispiel #14
0
def m4():

    position = 0

    scr = lv.obj()
    lv.scr_load(scr)

    #container for drop and switch
    cont = lv.cont(scr)
    cont.set_auto_realign(True)
    cont.set_fit2(lv.FIT.PARENT, lv.FIT.TIGHT)
    cont.set_layout(lv.LAYOUT.PRETTY_MID)
    cont.align(scr, lv.ALIGN.IN_TOP_MID, 0, 0)
    cont.set_style_local_radius(0, 0, 0)

    #dropdown - event

    def drop_event(obj, event):

        if event == lv.EVENT.VALUE_CHANGED:

            position = drop.get_selected()
            print("changing trigger position to {}".format(str(position)))
            m4_1(position)  #call to refresh roller position

    #dropdown
    drop = lv.dropdown(cont)
    drop.set_style_local_border_post(lv.BORDER_SIDE.NONE, lv.BORDER_SIDE.NONE,
                                     lv.BORDER_SIDE.NONE)
    drop.set_options(
        "Trigger 1\nTrigger 2\nTrigger 3\nTrigger 4\nTrigger 5\nTrigger 6\nTrigger 7\nTrigger 8\nTrigger 9\n Trigger 10"
    )
    drop.set_event_cb(drop_event)

    #tabview

    tab = lv.tabview(scr)
    tab.align(cont, lv.ALIGN.OUT_BOTTOM_MID, 0, 0)

    tab1 = tab.add_tab("Time")
    tab2 = tab.add_tab("Auto")
    tab3 = tab.add_tab("Switches")
    tab4 = tab.add_tab("Desc")

    ####Tab 1

    #label
    lbl1 = lv.label(cont)
    lbl1.set_text("Arm?")

    #switch
    switch = lv.switch(cont)

    lbl2 = lv.label(tab1)
    lbl2.set_text("Set time to begin trigger :")

    lbl2.align(tab1, lv.ALIGN.IN_TOP_MID, 0, 10)

    #contain - sort vert
    cont2 = lv.cont(tab1)
    cont2.align(lbl2, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
    cont2.set_auto_realign(True)
    cont2.set_layout(lv.LAYOUT.ROW_MID)
    cont2.set_fit(lv.FIT.TIGHT)

    roller_hour = lv.roller(cont2)
    roller_hour.set_options(
        "00\n01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23",
        lv.roller.MODE.NORMAL)
    roller_minute = lv.roller(cont2)
    roller_minute.set_options(
        "00\n01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59",
        lv.roller.MODE.NORMAL)
    roller_sec = lv.roller(cont2)
    roller_sec.set_options(
        "00\n01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59",
        lv.roller.MODE.NORMAL)

    btn = lv.btn(cont2)
    lbl_btn = lv.label(btn)
    lbl_btn.set_text("SET")

    #duration

    lbl3 = lv.label(tab1)
    lbl3.set_text("Set duration for trigger : ")
    lbl3.align(cont2, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)

    cont3 = lv.cont(tab1)
    cont3.align(lbl3, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
    cont3.set_auto_realign(True)
    cont3.set_layout(lv.LAYOUT.ROW_MID)
    cont3.set_fit(lv.FIT.TIGHT)

    roller_hour_dur = lv.roller(cont3)
    roller_hour_dur.set_options(
        "00\n01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23",
        lv.roller.MODE.NORMAL)
    roller_minute_dur = lv.roller(cont3)
    roller_minute_dur.set_options(
        "00\n01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59",
        lv.roller.MODE.NORMAL)
    roller_sec_dur = lv.roller(cont3)
    roller_sec_dur.set_options(
        "00\n01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59",
        lv.roller.MODE.NORMAL)

    #button (set timer) - event

    def btn_event(obj, event):

        if obj == btn and event == lv.EVENT.CLICKED:

            position = drop.get_selected()

            trigger[position].bhour = roller_hour.get_selected()
            trigger[position].bminute = roller_minute.get_selected()
            trigger[position].bsecond = roller_sec.get_selected()

            print("btn - event : position {}, bhour {}, bminute {}, bsec{}".
                  format(str(position), str(roller_hour.get_selected()),
                         str(roller_minute.get_selected()),
                         str(roller_sec.get_selected())))

        if obj == btn2 and event == lv.EVENT.CLICKED:

            position = drop.get_selected()

            trigger[position].hourdur = roller_hour_dur.get_selected()
            trigger[position].minutedur = roller_minute_dur.get_selected()
            trigger[position].seconddur = roller_sec_dur.get_selected()

            print("btn2 - event")

        if obj == switch and event == lv.EVENT.VALUE_CHANGED:

            position = drop.get_selected()
            trigger[position].isArmed = switch.get_state()

            print("Arming trigger {}".format(switch.get_state()))

        if obj == btn_t4_1 and event == lv.EVENT.CLICKED:
            m5()

    btn2 = lv.btn(cont3)
    lbl_btn2 = lv.label(btn2)
    lbl_btn2.set_text("SET")

    #button event call
    btn.set_event_cb(btn_event)
    btn2.set_event_cb(btn_event)
    switch.set_event_cb(btn_event)

    def m4_1(_position):  #run after dropdown selected or pos 0 default

        position = _position
        print("M4_1() calling position {}".format(position))

        roller_hour.set_selected(trigger[position].bhour, lv.ANIM.ON)
        roller_minute.set_selected(trigger[position].bminute, lv.ANIM.ON)
        roller_sec.set_selected(trigger[position].bsecond, lv.ANIM.ON)

        roller_hour_dur.set_selected(trigger[position].hourdur, lv.ANIM.ON)
        roller_minute_dur.set_selected(trigger[position].minutedur, lv.ANIM.ON)
        roller_sec_dur.set_selected(trigger[position].seconddur, lv.ANIM.ON)

        #set proper state of switch

        if switch.get_state() != trigger[position].isArmed:
            switch.toggle(lv.ANIM.ON)

    m4_1(position)

    #####Tab 2 - Automation

    tab2.set_height(320)

    lbl_t2 = lv.label(tab2)
    lbl_t2.align(tab1, lv.ALIGN.IN_TOP_MID, 210, 10)
    lbl_t2.set_text("Automatic trigger disable settings")

    cont3 = lv.cont(tab2)
    cont3.set_auto_realign(True)
    cont3.set_layout(lv.LAYOUT.PRETTY_MID)
    cont3.align(lbl_t2, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
    cont3.set_fit2(lv.FIT.TIGHT, lv.FIT.TIGHT)

    lbl_t2_2 = lv.label(cont3)
    lbl_t2_2.set_text("Enable Flow Sensor")

    switch_t2_1 = lv.switch(cont3)

    lbl_t2_3 = lv.label(cont3)
    lbl_t2_3.set_text("Enable Rain Sensor")

    switch_t2_2 = lv.switch(cont3)

    lbl_t2_4 = lv.label(cont3)
    lbl_t2_4.set_text("Enable MET weather API")

    switch_t2_3 = lv.switch(cont3)

    lbl_t2_5 = lv.label(cont3)
    lbl_t2_5.set_text("Enable Soil Sensor")

    switch_t2_4 = lv.switch(cont3)

    gauge_t2 = lv.gauge(tab2)
    gauge_t2.align(cont3, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)

    ####Tab 3 - Switches

    tab3.set_height(320)
    lbl_t3 = lv.label(tab3)
    lbl_t3.align(tab3, lv.ALIGN.IN_TOP_MID, -80, 10)
    lbl_t3.set_text("Assign Pin to be triggered")

    #page4 = lv.page(tab3)
    #page4.set_auto_realign(True)
    #page4.align(lbl_t3, lv.ALIGN.OUT_BOTTOM_MID,0,10)
    #page4.set_size(290,800)

    btnmtx_t3 = lv.btnmatrix(tab3)
    btnmtx_t3.align(lbl_t3, lv.ALIGN.OUT_BOTTOM_MID, 0, 0)
    btnmtx_t3.set_width(250)
    btnmtx_t3.set_height(600)

    btn_map_t3 = [
        "3.3v", "GND", "\n", "EN", "23", "\n", "36", "22", "\n", "39", "01",
        "\n", "34", "03", "\n", "35", "21", "\n", "32", "GND", "\n", "33",
        "19", "\n", "25", "18", "\n", "26", "05", "\n", "27", "17", "\n", "14",
        "16", "\n", "12", "04", "\n", "GND", "00", "\n", "13", "02", "\n",
        "09", "15", "\n", "10", "08", "\n", "11", "07", "\n", "VIN", "06", ""
    ]

    btnmtx_t3.set_map(btn_map_t3)
    btnmtx_t3.set_btn_ctrl_all(btnmtx_t3.CTRL.CHECKABLE)

    btn_t3_save = lv.btn(tab3)
    btn_t3_save.align(btnmtx_t3, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
    lbl_btn_t3_save = lv.label(btn_t3_save)
    lbl_btn_t3_save.set_text("Save Toggles")

    #### Tab 4 Description

    btn_t4_1 = lv.btn(tab4)
    btn_t4_1.align(tab4, lv.ALIGN.CENTER, 0, 0)
    btn_t4_1.set_event_cb(btn_event)
    lbl_btn_t4_1 = lv.label(btn_t4_1)
    lbl_btn_t4_1.set_text(lv.SYMBOL.HOME)