def interface():
    def update_task(task):
        set_usb_voltage(power.getVbusVoltage())
        set_usb_pwr(power.getVbusCurrent())
        if power.isBatteryConnect():
            set_batt_voltage(power.getBattVoltage())
            if power.isChargeing():
                set_batt_pwr("Charging", power.getBattChargeCurrent())
                batt_percent.set_hidden(True)
            else:
                set_batt_pwr("Discharging", power.getBattDischargeCurrent())
                set_batt_per(power.getBattPercentage())
                batt_percent.set_hidden(False)

    def event_cb(obj, event):
        if event == lv.EVENT.VALUE_CHANGED:
            tft.set_backlight_level(obj.get_value())

    def set_usb_pwr(pwr):
        usb_pwr.set_text("USB current: {} mA".format(pwr))

    def set_usb_voltage(volts):
        usb_voltage.set_text("USB voltage: {} mV".format(volts))

    def set_batt_voltage(volts):
        batt_voltage.set_text("Battery voltage: {} mV".format(volts))

    def set_batt_pwr(mode, pwr):
        batt_pwr.set_text("{} battery \ncurrent: {} mA".format(mode, pwr))

    def set_batt_per(per):
        batt_percent.set_text("Battery percent: {}%".format(per))

    scr = lv.obj()
    tabview = lv.tabview(scr)
    vbus_tab = tabview.add_tab("USB")
    usb_voltage = lv.label(vbus_tab)
    usb_pwr = lv.label(vbus_tab)
    usb_pwr.set_y(usb_voltage.get_y() + 20)
    la = lv.switch(vbus_tab)
    batt_tab = tabview.add_tab("Battery")
    batt_voltage = lv.label(batt_tab)
    batt_pwr = lv.label(batt_tab)
    batt_pwr.set_y(batt_voltage.get_y() + 20)
    batt_percent = lv.label(batt_tab)
    batt_percent.set_y(batt_pwr.get_y() + 40)
    brightness_slider = lv.slider(batt_tab)
    brightness_slider.align(None, lv.ALIGN.IN_BOTTOM_MID, 0, 0)
    brightness_slider.set_range(0, 100)
    brightness_slider.set_value(100, 1)
    brightness_slider.set_event_cb(event_cb)
    update_task(None)
    lv.scr_load(scr)
    watch.tft.backlight_fade(100)
    lv.task_create(update_task, 1000, 5, None)
示例#2
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
示例#3
0
    def setup_page(self,tile_num):
        example_setup_tile = self.mainbar.get_tile_obj(tile_num)
        setup_style = lv.style_t()
        setup_style.copy(self.mainbar.get_style())
        setup_style.set_bg_color(lv.obj.PART.MAIN, lv_colors.GRAY)
        setup_style.set_bg_opa(lv.obj.PART.MAIN, lv.OPA.COVER)
        setup_style.set_border_width(lv.obj.PART.MAIN, 0)
        example_setup_tile.add_style(lv.obj.PART.MAIN, setup_style)

        exit_cont = lv.obj(example_setup_tile,None)
        exit_cont.set_size(lv.scr_act().get_disp().driver.hor_res,40)
        exit_cont.add_style(lv.obj.PART.MAIN, setup_style)

        exit_btn = lv.imgbtn(example_setup_tile,None)
        exit_btn.set_src(lv.btn.STATE.RELEASED,self.mainbar.get_exit_btn_dsc())
        exit_btn.set_src(lv.btn.STATE.PRESSED,self.mainbar.get_exit_btn_dsc())
        exit_btn.set_src(lv.btn.STATE.CHECKED_RELEASED,self.mainbar.get_exit_btn_dsc())
        exit_btn.set_src(lv.btn.STATE.CHECKED_PRESSED,self.mainbar.get_exit_btn_dsc())
        exit_btn.align(exit_cont,lv.ALIGN.IN_TOP_LEFT, 10, 0)
        exit_btn.set_event_cb(self.exit_example_app_setup_event_cb)

        exit_label = lv.label(exit_cont,None)
        exit_label.add_style(lv.obj.PART.MAIN, setup_style)
        exit_label.set_text("my app setup")
        exit_label.align(exit_btn, lv.ALIGN.OUT_RIGHT_MID, 5, 0 )

        foobar_switch_cont = lv.obj(example_setup_tile,None)
        foobar_switch_cont.set_size(lv.scr_act().get_disp().driver.hor_res,40)
        foobar_switch_cont.add_style(lv.obj.PART.MAIN, setup_style)
        foobar_switch_cont.align(exit_cont,lv.ALIGN.OUT_BOTTOM_LEFT, 0, 0 )

        foobar_switch = lv.switch(foobar_switch_cont,None)
        foobar_switch.add_protect(lv.PROTECT.CLICK_FOCUS)
        foobar_switch.add_style(lv.switch.PART.INDIC, setup_style)
        foobar_switch.off(lv.ANIM.ON)
        foobar_switch.align(foobar_switch_cont,lv.ALIGN.IN_RIGHT_MID, -5, 0 )
        self.log.debug("setting up the foobar switch callback")
        foobar_switch.set_event_cb(self.example_app_foobar_switch_event_cb)
        
        foobar_switch_label = lv.label(foobar_switch_cont,None)
        foobar_switch_label.add_style(lv.obj.PART.MAIN, setup_style)
        foobar_switch_label.set_text("foo bar")
        foobar_switch_label.align(foobar_switch_cont,lv.ALIGN.IN_LEFT_MID, 5, 0 )
示例#4
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)
示例#5
0
def controls_create(parent):
    lv.page.set_scrl_layout(lv.page.__cast__(parent), lv.LAYOUT.PRETTY_TOP)
    if LV_DEMO_WIDGETS_SLIDESHOW == 0:
        btns = ["Cancel", "Ok", ""]
        m = lv.msgbox(lv.scr_act(), None)
        m.add_btns(btns)
        btnm = lv.btnmatrix.__cast__(m.get_btnmatrix())
        # print("type(btnm): ",type(btnm))
        btnm.set_btn_ctrl(1, lv.btnmatrix.CTRL.CHECK_STATE)

    h = lv.cont(parent, None)
    h.set_layout(lv.LAYOUT.PRETTY_MID)
    h.add_style(lv.cont.PART.MAIN, style_box)
    h.set_drag_parent(True)

    h.set_style_local_value_str(lv.cont.PART.MAIN, lv.STATE.DEFAULT, "Basics")

    disp_size = display.get_size_category()
    if disp_size <= lv.DISP_SIZE.SMALL:
        grid_w = lv.page.get_width_grid(lv.page.__cast__(parent), 1, 1)
        # print("grid_w: ",grid_w)
    else:
        grid_w = lv.page.get_width_grid(lv.page.__cast__(parent), 2, 1)
        # print("grid_w: ",grid_w)

    h.set_fit2(lv.FIT.NONE, lv.FIT.TIGHT)
    h.set_width(grid_w)
    btn = lv.btn(h, None)
    btn.set_fit2(lv.FIT.NONE, lv.FIT.TIGHT)
    if disp_size <= lv.DISP_SIZE.SMALL:
        button_width = h.get_width_grid(1, 1)
    else:
        button_width = h.get_width_grid(2, 1)
    # print("button_width: %d"%button_width)

    btn.set_width(button_width)
    label = lv.label(btn, None)
    label.set_text("Button")

    btn = lv.btn(h, btn)
    btn.toggle()
    label = lv.label(btn, None)
    label.set_text("Button")

    lv.switch(h, None)

    lv.checkbox(h, None)

    fit_w = h.get_width_fit()

    slider = lv.slider(h, None)
    slider.set_value(40, lv.ANIM.OFF)
    slider.set_event_cb(slider_event_cb)
    slider.set_width_margin(fit_w)

    # Use the knobs style value the display the current value in focused state
    slider.set_style_local_margin_top(lv.slider.PART.BG, lv.STATE.DEFAULT,
                                      LV_DPX(25))
    slider.set_style_local_value_font(lv.slider.PART.KNOB, lv.STATE.DEFAULT,
                                      lv.theme_get_font_small())
    slider.set_style_local_value_ofs_y(lv.slider.PART.KNOB, lv.STATE.FOCUSED,
                                       -LV_DPX(25))
    slider.set_style_local_value_opa(lv.slider.PART.KNOB, lv.STATE.DEFAULT,
                                     lv.OPA.TRANSP)
    slider.set_style_local_value_opa(lv.slider.PART.KNOB, lv.STATE.FOCUSED,
                                     lv.OPA.COVER)
    slider.set_style_local_transition_time(lv.slider.PART.KNOB,
                                           lv.STATE.DEFAULT, 300)
    slider.set_style_local_transition_prop_5(lv.slider.PART.KNOB,
                                             lv.STATE.DEFAULT,
                                             lv.STYLE.VALUE_OFS_Y)
    slider.set_style_local_transition_prop_6(lv.slider.PART.KNOB,
                                             lv.STATE.DEFAULT,
                                             lv.STYLE.VALUE_OPA)

    slider = lv.slider(h, None)
    slider.set_type(lv.slider.TYPE.RANGE)
    slider.set_value(70, lv.ANIM.OFF)
    slider.set_left_value(30, lv.ANIM.OFF)
    slider.set_style_local_value_ofs_y(lv.slider.PART.INDIC, lv.STATE.DEFAULT,
                                       -LV_DPX(25))
    slider.set_style_local_value_font(lv.slider.PART.INDIC, lv.STATE.DEFAULT,
                                      lv.theme_get_font_small())
    slider.set_style_local_value_opa(lv.slider.PART.INDIC, lv.STATE.DEFAULT,
                                     lv.OPA.COVER)
    slider.set_event_cb(slider_event_cb)
    lv.event_send(slider, lv.EVENT.VALUE_CHANGED, None)  # To refresh the text
    if slider.get_width() > fit_w:
        slider.set_width(fit_w)

    h = lv.cont(parent, h)
    h.set_fit(lv.FIT.NONE)
    h.set_style_local_value_str(lv.cont.PART.MAIN, lv.STATE.DEFAULT,
                                "Text input")

    ta = lv.textarea(h, None)
    lv.cont.set_fit2(h, lv.FIT.PARENT, lv.FIT.NONE)
    ta.set_text("")
    ta.set_placeholder_text("E-mail address")
    ta.set_one_line(True)
    ta.set_cursor_hidden(True)
    #lv_obj_set_event_cb(ta, ta_event_cb);

    ta = lv.textarea(h, ta)
    ta.set_pwd_mode(True)
    ta.set_placeholder_text("Password")

    ta = lv.textarea(h, None)
    lv.cont.set_fit2(h, lv.FIT.PARENT, lv.FIT.NONE)
    ta.set_text("")
    ta.set_placeholder_text("Message")
    ta.set_cursor_hidden(True)
    #lv_obj_set_event_cb(ta, ta_event_cb);
    lv.cont.set_fit4(h, lv.FIT.PARENT, lv.FIT.PARENT, lv.FIT.NONE,
                     lv.FIT.PARENT)
示例#6
0
        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)


tv = lv.tabview(lv.scr_act(), None)
display = scr.get_disp()
disp_size = display.get_size_category()
tv.set_style_local_pad_left(lv.tabview.PART.TAB_BG, lv.STATE.DEFAULT,
                            disp_drv.hor_res // 2)

sw = lv.switch(lv.scr_act(), None)
if lv.theme_get_flags() & lv.THEME_MATERIAL_FLAG.DARK:
    sw.on(LV_ANIM_OFF)
sw.set_event_cb(color_chg_event_cb)
sw.set_pos(LV_DPX(10), LV_DPX(10))
sw.set_style_local_value_str(lv.switch.PART.BG, lv.STATE.DEFAULT, "Dark")
sw.set_style_local_value_align(lv.switch.PART.BG, lv.STATE.DEFAULT,
                               lv.ALIGN.OUT_RIGHT_MID)
sw.set_style_local_value_ofs_x(lv.switch.PART.BG, lv.STATE.DEFAULT,
                               LV_DPI // 35)

t1 = tv.add_tab("Controls")
t2 = tv.add_tab("Visuals")
t3 = tv.add_tab("Selectors")

style_box = lv.style_t()
def gui_other_settings():

    global scr4, ta, kb

    def btn_event(task, params):

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

        elif params['name'] == 'wifi':
            global ssid
            global ta

            e = task.get_code()
            obj = task.get_target()
            ssid = obj.get_child(1).get_text()
            print('Wifi {}'.format(ssid))
            wifi_list.add_flag(lv.obj.FLAG.HIDDEN)
            ta.clear_flag(lv.obj.FLAG.HIDDEN)
            ta.set_placeholder_text('Insert Password for {}'.format(ssid))
            kb.clear_flag(lv.obj.FLAG.HIDDEN)

    def ta_event_cb(e, kb):
        code = e.get_code()
        ta = e.get_target()
        if code == lv.EVENT.FOCUSED:
            kb.set_textarea(ta)
            kb.clear_flag(lv.obj.FLAG.HIDDEN)

        if code == lv.EVENT.DEFOCUSED:

            user = ssid
            password = ta.get_text()

            sta_if.connect(user, password)
            print('connecting {} {}'.format(str(user), str(password)))
            ta.add_flag(lv.obj.FLAG.HIDDEN)
            kb.add_flag(lv.obj.FLAG.HIDDEN)

    def keyboard_event(e, ta):

        code = e.get_code()

        if code == lv.KEY.ENTER:
            user = ssid
            password = ta.get_text()

            sta_if.connect(user, password)
            ta.add_flag(lv.obj.FLAG.HIDDEN)
            kb.add_flag(lv.obj.FLAG.HIDDEN)

    def switch_handler(event):
        e = event.get_code()
        obj = event.get_target()

        if e == lv.EVENT.VALUE_CHANGED:
            if obj.has_state(lv.STATE.CHECKED):
                print('Turn On Wifi')
                sta_if.active(True)

            elif obj.has_state(lv.STATE.DISABLED):
                print('Turn of Wifi')
                sta_if.active(False)

    scr4 = lv.obj()
    lv.scr_load(scr4)

    btn1 = lv.btn(scr4)
    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(scr4, lv.ALIGN.TOP_LEFT, 0, 0)
    btn1.add_event_cb(lambda task: btn_event(task, 'cancel'), lv.EVENT.CLICKED,
                      None)

    btn2 = lv.btn(scr4)
    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(scr4, lv.ALIGN.TOP_RIGHT, 0, 0)

    label1 = lv.label(scr4)
    label1.set_text('Others settings')
    label1.align_to(btn1, lv.ALIGN.OUT_BOTTOM_LEFT, 10, 10)

    label2 = lv.label(scr4)

    def refresh_label():
        label2.set_text('Enable Wifi : Connected? {}'.format(
            sta_if.isconnected()))

    lv.timer_create(lambda task: refresh_label(), 800, None)

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

    switch_wifi = lv.switch(scr4)
    switch_wifi.align_to(label2, lv.ALIGN.OUT_LEFT_TOP, 290, 0)

    wifi_data = []

    if sta_if.active() == True:
        switch_wifi.add_state(lv.STATE.CHECKED)
        wifi_data = sta_if.scan()

    elif sta_if.active() == False:
        switch_wifi.add_state(lv.STATE.DISABLED)

    switch_wifi.add_event_cb(lambda event: switch_handler(event), lv.EVENT.ALL,
                             None)

    wifi_list = lv.list(scr4)
    wifi_list.set_size(250, 200)
    wifi_list.align_to(label2, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 15)

    for wifi in wifi_data:
        wifi_list.add_btn(lv.SYMBOL.WIFI, str(wifi[0], 'utf-8'))
        current_item = wifi_list.get_child_cnt()
        wifi_item = wifi_list.get_child(current_item - 1)
        wifi_item.add_event_cb(
            lambda task: btn_event(task, {
                'name': 'wifi',
                'ssid': str(wifi[0], 'utf-8')
            }), lv.EVENT.CLICKED, None)

    ta = lv.textarea(scr4)
    ta.align_to(label2, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    ta.set_size(280, 50)
    ta.add_event_cb(lambda e: ta_event_cb(e, kb), lv.EVENT.ALL, None)
    ta.add_flag(lv.obj.FLAG.HIDDEN)

    kb = lv.keyboard(scr4)
    kb.align_to(ta, lv.ALIGN.OUT_BOTTOM_LEFT, -10, 10)
    kb.add_flag(lv.obj.FLAG.HIDDEN)
    kb.add_event_cb(lambda e: keyboard_event(e, ta), lv.EVENT.KEY, None)
示例#8
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)
示例#9
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)
def add_new():
    '''button events'''
    def btn_event(obj, param):

        if param == "Cancel":
            lv.scr_act().clean()
            home()

        if param == "Reset 1":
            roller1.set_selected(0, lv.ANIM.ON)
            roller2.set_selected(0, lv.ANIM.ON)
            roller3.set_selected(0, lv.ANIM.ON)

        if param == "Set AM 1":
            roller1.set_selected(6, lv.ANIM.ON)
            roller2.set_selected(0, lv.ANIM.ON)
            roller3.set_selected(0, lv.ANIM.ON)

        if param == "Set PM 1":
            roller1.set_selected(13, lv.ANIM.ON)
            roller2.set_selected(0, lv.ANIM.ON)
            roller3.set_selected(0, lv.ANIM.ON)

        if param == "Reset 2":
            roller4.set_selected(0, lv.ANIM.ON)
            roller5.set_selected(0, lv.ANIM.ON)
            roller6.set_selected(0, lv.ANIM.ON)

        if param == "Reset hour":
            roller4.set_selected(0, lv.ANIM.ON)

        if param == "Reset minute":
            roller5.set_selected(0, lv.ANIM.ON)

        if param == "Save":
            '''storing settings in DB routine'''

            print('Debug val')

            #textarea cannot be empty
            key = text_area.get_text()

            if key == "":
                print('Key cannot be empty')
                lv.msgbox(lv.scr_act(), "Error", "Tigger name cannot be empty",
                          [], True)

            #textare cannot be more than 8 char
            if len(key) >= 8:
                print('Trigger name too long')
                lv.msgbox(lv.scr_act(), "Error", "Tigger name too long", [],
                          True)

            print(text_area.get_text())

            #beginhour
            bhour = roller1.get_selected()
            bminute = roller2.get_selected()
            bsecs = roller3.get_selected()

            begin_time = "{:02}{:02}{:02}".format(bhour, bminute, bsecs)
            print(begin_time)

            #duration
            hdur = int(roller4.get_selected()) * 60 * 60
            mdur = int(roller5.get_selected()) * 60
            sdur = int(roller6.get_selected())

            duration = str(hdur + mdur + sdur)
            print(str(duration))

            #enable flow sensor?
            flow_enable_state = flow_sensor_switch.has_state(lv.STATE.CHECKED)
            print(flow_enable_state)

            #check flow sensor for 5 sec
            flow_debounce_state = flow_debounce_checkbox.has_state(
                lv.STATE.CHECKED)
            print(flow_debounce_state)

            #check min reading
            flow_max_state = flow_debounce_checkbox.has_state(lv.STATE.CHECKED)
            print(flow_max_state)

            #max flow limit
            flow_max_val = flow_max_spinbox.get_value()
            flow_max_val = flow_max_spinbox.get_value()
            print(flow_max_val)

            #enable rain sensor
            rain_sensor_enable_state = rain_sensor_switch.has_state(
                lv.STATE.CHECKED)
            print(rain_sensor_enable_state)

            rain_debounce_state = rain_sensor_debounce.has_state(
                lv.STATE.CHECKED)
            print(rain_debounce_state)

            #Generate keys to store in DB
            '''create unique id'''
            def new_id():
                return random.randint(0, 9999)

            temp_db_keys = []
            for key in db:
                temp_db_keys.append(eval(key))

            temp_key = new_id()

            if temp_key in temp_db_keys:
                temp_key = new_id()
                return temp_key

            create_trigger(unique_id=temp_key,
                           name=key,
                           begin=begin_time,
                           duration=duration,
                           flow_enable_state=flow_enable_state,
                           flow_debounce_state=flow_debounce_state,
                           flow_max_state=flow_max_state,
                           flow_max_val=flow_max_val,
                           rain_enable_state=rain_sensor_enable_state,
                           rain_debounce_state=rain_debounce_state)

    def ta_event_cb(e, keyboard):

        code = e.get_code()
        text_area = e.get_target()

        if code == lv.EVENT.FOCUSED:
            keyboard.set_textarea(text_area)
            keyboard.clear_flag(lv.obj.FLAG.HIDDEN)
            keyboard.move_foreground()
            cont.add_flag(lv.obj.FLAG.HIDDEN)

        if code == lv.EVENT.DEFOCUSED:
            keyboard.set_textarea(None)
            keyboard.add_flag(lv.obj.FLAG.HIDDEN)
            cont.clear_flag(lv.obj.FLAG.HIDDEN)

    '''main scr'''
    scr = lv.obj()
    scr.clean()

    lv.scr_load(scr)

    btn_cancel = lv.btn(scr)
    btn_cancel.add_event_cb(lambda e: btn_event(e, "Cancel"), lv.EVENT.CLICKED,
                            None)
    btn_cancel_text = lv.label(btn_cancel)
    btn_cancel_text.set_text('Cancel')

    btn_save = lv.btn(scr)
    btn_save.align_to(btn_cancel, lv.ALIGN.OUT_RIGHT_TOP, 185, 0)
    btn_save.add_event_cb(lambda e: btn_event(e, "Save"), lv.EVENT.CLICKED,
                          None)
    btn_save_text = lv.label(btn_save)
    btn_save_text.set_text('Save')

    label = lv.label(scr)
    label.set_text('Add New Trigger')
    label.align_to(btn_cancel, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)

    label2 = lv.label(scr)
    label2.set_text('Trigger Name (Max: 8 char)')
    label2.align_to(label, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)

    text_area = lv.textarea(scr)
    text_area.set_height(40)
    text_area.align_to(label2, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 0)
    text_area.add_event_cb(lambda e: ta_event_cb(e, keyboard), lv.EVENT.ALL,
                           None)

    keyboard = lv.keyboard(scr)
    keyboard.align_to(scr, lv.ALIGN.BOTTOM_MID, 0, 0)
    keyboard.set_textarea(text_area)
    keyboard.add_flag(lv.obj.FLAG.HIDDEN)

    label3 = lv.label(lv.scr_act())
    label3.set_text("Set Time to begin Trigger")
    label3.align_to(text_area, lv.ALIGN.OUT_BOTTOM_LEFT, 5, 10)
    '''cont width'''

    cont_width = 280
    '''cont : Roller Time '''
    cont = lv.obj(lv.scr_act())
    cont.align_to(label3, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 0)
    cont.set_height(150)
    cont.set_width(cont_width)
    '''roller options'''
    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)
    '''roller trigger time'''
    roller1 = lv.roller(cont)
    roller1.align_to(cont, lv.ALIGN.LEFT_MID, 0, 20)
    roller1.set_width(50)
    roller1.set_options(opts1, lv.roller.MODE.NORMAL)
    roller1.set_visible_row_count(3)
    roller1.set_selected(8, lv.ANIM.ON)

    roller2 = lv.roller(cont)
    roller2.align_to(roller1, lv.ALIGN.OUT_RIGHT_TOP, 5, 0)
    roller2.set_width(50)
    roller2.set_options(opts2, lv.roller.MODE.NORMAL)
    roller2.set_visible_row_count(3)
    roller2.set_selected(30, lv.ANIM.ON)

    roller3 = lv.roller(cont)
    roller3.align_to(roller2, lv.ALIGN.OUT_RIGHT_TOP, 5, 0)
    roller3.set_width(50)
    roller3.set_options(opts2, lv.roller.MODE.NORMAL)
    roller3.set_visible_row_count(3)
    roller3.set_selected(0, lv.ANIM.ON)

    label4 = lv.label(cont)
    label4.align_to(roller1, lv.ALIGN.OUT_TOP_MID, 0, 0)
    label4.set_text('hour')

    label5 = lv.label(cont)
    label5.align_to(roller2, lv.ALIGN.OUT_TOP_MID, 0, 0)
    label5.set_text('min')

    label6 = lv.label(cont)
    label6.align_to(roller3, lv.ALIGN.OUT_TOP_MID, 0, 0)
    label6.set_text('sec')
    '''reset button trigger'''
    btn_reset = lv.btn(cont)
    btn_reset.align_to(roller3, lv.ALIGN.OUT_RIGHT_TOP, 10, 0)
    btn_reset.add_event_cb(lambda e: btn_event(e, "Reset 1"), lv.EVENT.CLICKED,
                           None)
    btn_reset_lbl = lv.label(btn_reset)
    btn_reset_lbl.set_text("RESET")

    btn_am = lv.btn(cont)
    btn_am.align_to(btn_reset, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 0)
    btn_am.add_event_cb(lambda e: btn_event(e, "Set AM 1"), lv.EVENT.CLICKED,
                        None)
    btn_am_lbl = lv.label(btn_am)
    btn_am_lbl.set_text('am')

    btn_pm = lv.btn(cont)
    btn_pm.align_to(btn_am, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 0)
    btn_pm.add_event_cb(lambda e: btn_event(e, "Set PM 1"), lv.EVENT.CLICKED,
                        None)
    btn_pm_lbl = lv.label(btn_pm)
    btn_pm_lbl.set_text('pm')

    label7 = lv.label(scr)
    label7.align_to(cont, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    label7.set_text('Set Duration')
    '''cont 2 : Roller Duration'''

    cont2 = lv.obj(scr)
    cont2.align_to(label7, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 0)
    cont2.set_height(150)
    cont2.set_width(cont_width)
    '''roller duration'''
    roller4 = lv.roller(cont2)
    roller4.align_to(cont2, lv.ALIGN.LEFT_MID, 0, 20)
    roller4.set_width(50)
    roller4.set_options(opts1, lv.roller.MODE.NORMAL)
    roller4.set_visible_row_count(3)
    roller4.set_selected(0, lv.ANIM.ON)

    roller5 = lv.roller(cont2)
    roller5.align_to(roller4, lv.ALIGN.OUT_RIGHT_TOP, 5, 0)
    roller5.set_width(50)
    roller5.set_options(opts2, lv.roller.MODE.NORMAL)
    roller5.set_visible_row_count(3)
    roller5.set_selected(0, lv.ANIM.ON)

    roller6 = lv.roller(cont2)
    roller6.align_to(roller5, lv.ALIGN.OUT_RIGHT_TOP, 5, 0)
    roller6.set_width(50)
    roller6.set_options(opts2, lv.roller.MODE.NORMAL)
    roller6.set_visible_row_count(3)
    roller6.set_selected(30, lv.ANIM.ON)

    label8 = lv.label(cont2)
    label8.align_to(roller4, lv.ALIGN.OUT_TOP_MID, 0, 0)
    label8.set_text('hour')

    label9 = lv.label(cont2)
    label9.align_to(roller5, lv.ALIGN.OUT_TOP_MID, 0, 0)
    label9.set_text('min')

    label10 = lv.label(cont2)
    label10.align_to(roller6, lv.ALIGN.OUT_TOP_MID, 0, 0)
    label10.set_text('sec')
    '''reset button duration'''
    btn_reset2 = lv.btn(cont2)
    btn_reset2.align_to(roller6, lv.ALIGN.OUT_RIGHT_TOP, 10, 0)
    btn_reset2.add_event_cb(lambda e: btn_event(e, "Reset 2"),
                            lv.EVENT.CLICKED, None)
    btn_reset_lbl2 = lv.label(btn_reset2)
    btn_reset_lbl2.set_text("RESET")

    btn_am2 = lv.btn(cont2)
    btn_am2.align_to(btn_reset2, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 0)
    btn_am2.add_event_cb(lambda e: btn_event(e, "Reset hour"),
                         lv.EVENT.CLICKED, None)
    btn_am_lbl2 = lv.label(btn_am2)
    btn_am_lbl2.set_text('hour')

    btn_pm2 = lv.btn(cont2)
    btn_pm2.align_to(btn_am2, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 0)
    btn_pm2.add_event_cb(lambda e: btn_event(e, "Reset minute"),
                         lv.EVENT.CLICKED, None)
    btn_pm_lbl2 = lv.label(btn_pm2)
    btn_pm_lbl2.set_text('minute')

    label10 = lv.label(scr)
    label10.align_to(cont2, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    label10.set_text('Set Automatic disable trigger settings')
    '''cont 3 : Flow sensor'''

    cont3 = lv.obj(scr)
    cont3.align_to(label10, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 0)
    cont3.set_height(150)
    cont3.set_width(cont_width)

    flow_sensor_lbl = lv.label(cont3)
    flow_sensor_lbl.align_to(cont3, lv.ALIGN.TOP_LEFT, 0, 5)
    flow_sensor_lbl.set_text("Enable Flow Sensor")

    flow_sensor_switch = lv.switch(cont3)
    flow_sensor_switch.align_to(cont3, lv.ALIGN.TOP_RIGHT, 0, -5)

    #label12 = lv.label(cont3)
    #label12.align_to(label11, lv.ALIGN.OUT_BOTTOM_LEFT,0,0)
    #label12.set_text('5 sec threshold')

    flow_debounce_checkbox = lv.checkbox(cont3)
    flow_debounce_checkbox.align_to(flow_sensor_lbl, lv.ALIGN.OUT_BOTTOM_LEFT,
                                    5, 10)
    flow_debounce_checkbox.set_text("Debounce protection")

    flow_max_checkbox = lv.checkbox(cont3)
    flow_max_checkbox.align_to(flow_debounce_checkbox,
                               lv.ALIGN.OUT_BOTTOM_LEFT, 0, 5)
    flow_max_checkbox.set_text('Max flow protection')

    flow_max_spinbox = lv.spinbox(cont3)
    flow_max_spinbox.align_to(flow_max_checkbox, lv.ALIGN.OUT_BOTTOM_LEFT, 0,
                              0)
    flow_max_spinbox.set_range(0, 9999)

    h = flow_max_spinbox.get_height()

    flow_max_spinbox_btn1 = lv.btn(cont3)
    flow_max_spinbox_btn1.align_to(flow_max_spinbox, lv.ALIGN.OUT_RIGHT_TOP, 0,
                                   0)
    flow_max_spinbox_btn1.set_style_bg_img_src(lv.SYMBOL.PLUS, 0)
    flow_max_spinbox_btn1.set_size(h, h)

    flow_max_spinbox_btn2 = lv.btn(cont3)
    flow_max_spinbox_btn2.align_to(flow_max_spinbox_btn1,
                                   lv.ALIGN.OUT_RIGHT_TOP, 0, 0)
    flow_max_spinbox_btn2.set_style_bg_img_src(lv.SYMBOL.MINUS, 0)
    flow_max_spinbox_btn2.set_size(h, h)
    '''Cont 4: Rain sensor'''

    cont4 = lv.obj(scr)
    cont4.align_to(cont3, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    cont4.set_height(90)
    cont4.set_width(cont_width)

    rain_sensor_lbl = lv.label(cont4)
    rain_sensor_lbl.align_to(cont4, lv.ALIGN.TOP_LEFT, 0, 5)
    rain_sensor_lbl.set_text("Enable Rain Sensor")

    rain_sensor_switch = lv.switch(cont4)
    rain_sensor_switch.align_to(cont4, lv.ALIGN.TOP_RIGHT, 0, -5)

    rain_sensor_debounce = lv.checkbox(cont4)
    rain_sensor_debounce.align_to(rain_sensor_lbl, lv.ALIGN.OUT_BOTTOM_LEFT, 5,
                                  10)
    rain_sensor_debounce.set_text("Debounce protection")
    '''Calender'''

    cont5 = lv.obj(scr)
    cont5.align_to(cont4, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    cont5.set_height(290)
    cont5.set_width(cont_width)

    label14 = lv.label(cont5)
    label14.align_to(cont5, lv.ALIGN.TOP_LEFT, 0, 5)
    label14.set_text("Enable days")

    calendar_switch = lv.switch(cont5)
    calendar_switch.align_to(cont5, lv.ALIGN.TOP_RIGHT, 0, -5)

    cal_1_checkbox = lv.checkbox(cont5)
    cal_1_checkbox.align_to(label14, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    cal_1_checkbox.set_text("Monday")

    cal_2_checkbox = lv.checkbox(cont5)
    cal_2_checkbox.align_to(cal_1_checkbox, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    cal_2_checkbox.set_text("Tuesday")

    cal_3_checkbox = lv.checkbox(cont5)
    cal_3_checkbox.align_to(cal_2_checkbox, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    cal_3_checkbox.set_text("Wednesday")

    cal_4_checkbox = lv.checkbox(cont5)
    cal_4_checkbox.align_to(cal_3_checkbox, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    cal_4_checkbox.set_text("Thursday")

    cal_5_checkbox = lv.checkbox(cont5)
    cal_5_checkbox.align_to(cal_4_checkbox, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    cal_5_checkbox.set_text("Friday")

    cal_6_checkbox = lv.checkbox(cont5)
    cal_6_checkbox.align_to(cal_5_checkbox, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    cal_6_checkbox.set_text("Saturday")

    cal_7_checkbox = lv.checkbox(cont5)
    cal_7_checkbox.align_to(cal_6_checkbox, lv.ALIGN.OUT_BOTTOM_LEFT, 0, 10)
    cal_7_checkbox.set_text("Sunday")
示例#11
0

def event_handler(e):
    code = e.get_code()
    obj = e.get_target()
    if code == lv.EVENT.VALUE_CHANGED:
        if obj.has_state(lv.STATE.CHECKED):
            print("State: on")
        else:
            print("State: off")


lv.scr_act().set_flex_flow(lv.FLEX_FLOW.COLUMN)
lv.scr_act().set_flex_align(lv.FLEX_ALIGN.CENTER, lv.FLEX_ALIGN.CENTER, lv.FLEX_ALIGN.CENTER)

sw = lv.switch(lv.scr_act())
sw.add_event_cb(event_handler,lv.EVENT.ALL, None)

sw = lv.switch(lv.scr_act())
sw.add_state(lv.STATE.CHECKED)
sw.add_event_cb(event_handler, lv.EVENT.ALL, None)

sw = lv.switch(lv.scr_act())
sw.add_state(lv.STATE.DISABLED)
sw.add_event_cb(event_handler, lv.EVENT.ALL, None)

sw = lv.switch(lv.scr_act())
sw.add_state(lv.STATE.CHECKED | lv.STATE.DISABLED)
sw.add_event_cb(event_handler, lv.EVENT.ALL, None)

示例#12
0
#!/opt/bin/lv_micropython -i
import lvgl as lv
import display_driver
import time


def event_handler(obj, evt):
    if evt == lv.EVENT.VALUE_CHANGED:
        state = obj.get_state()
        if state:
            print("State: On")
        else:
            print("State: Off")


#Create a switch and apply the styles
sw1 = lv.switch(lv.scr_act(), None)
sw1.align(None, lv.ALIGN.CENTER, 0, -50)
sw1.set_event_cb(event_handler)

# Copy the first switch and turn it ON
sw2 = lv.switch(lv.scr_act(), sw1)
sw2.on(lv.ANIM.ON)
sw2.set_event_cb(event_handler)
sw2.align(None, lv.ALIGN.CENTER, 0, 50)
示例#13
0
    def main_page(self, tile_num):
        alarm_clock_main_tile = self.mainbar.get_tile_obj(tile_num)
        alarm_clock_main_style = lv.style_t()
        alarm_clock_main_style.copy(self.mainbar.get_style())

        self.activated_cont = lv.obj(alarm_clock_main_tile, None)
        self.activated_cont.set_width(lv.scr_act().get_disp().driver.hor_res)
        self.activated_cont.set_height(30)
        self.activated_cont.add_style(lv.label.PART.MAIN,
                                      alarm_clock_main_style)

        self.activated_label = lv.label(self.activated_cont, None)

        self.activated_label.align(self.activated_cont, lv.ALIGN.IN_LEFT_MID,
                                   10, 0)  # align left
        self.activated_label.set_text("Activated")
        self.activated_label.add_style(lv.label.PART.MAIN,
                                       alarm_clock_main_style)

        # create the activate switch
        self.activated_switch = lv.switch(self.activated_cont, None)
        self.activated_switch.align(self.activated_cont, lv.ALIGN.IN_RIGHT_MID,
                                    -10, 0)

        self.day_cont_style = lv.style_t()
        self.day_cont_style.copy(self.mainbar.get_style())
        self.day_cont_style.set_pad_inner(lv.STATE.DEFAULT, 1)
        self.day_cont_style.set_pad_left(lv.STATE.DEFAULT, 10)
        self.day_cont_style.set_pad_top(lv.STATE.DEFAULT, 4)

        self.day_cont = lv.cont(alarm_clock_main_tile, None)
        self.day_cont.set_width(lv.scr_act().get_disp().driver.hor_res)
        self.day_cont.set_layout(lv.LAYOUT.PRETTY_BOTTOM)
        self.day_cont.set_fit(lv.FIT.NONE)
        self.day_cont.align(self.activated_cont, lv.ALIGN.OUT_BOTTOM_MID, 0, 0)
        self.day_cont.add_style(lv.cont.PART.MAIN, self.day_cont_style)

        # create the day buttons
        day_style = lv.style_t()
        day_style.set_radius(lv.STATE.DEFAULT, 3)

        for i in range(7):
            # create the button
            self.day_button[i] = lv.btn(self.day_cont, None)
            self.day_button[i].set_checkable(True)
            self.day_button[i].add_style(lv.btn.PART.MAIN, day_style)
            self.day_button[i].set_size(30, 30)
            self.day_label[i] = lv.label(self.day_button[i])
            # print("Setting label %d text to: %s"%(i,self.weekDayTable_2[i]))
            self.day_label[i].set_text(self.alarm_clock_week_day_2[i])

        # create a roller for the hours
        for i in range(23):
            self.hours += (str(i) + "\n")
        self.hours += str(23)
        #print(self.hours)
        self.hourRoller = lv.roller(alarm_clock_main_tile, None)
        self.hourRoller.set_auto_fit(False)
        self.hourRoller.set_width(60)
        self.hourRoller.set_visible_row_count(4)
        self.hourRoller.set_options(self.hours, lv.roller.MODE.INFINITE)
        self.hourRoller.align(self.day_cont, lv.ALIGN.OUT_BOTTOM_LEFT, 50, 0)

        for i in range(59):
            # self.minutes += (str(i)+"\n")
            self.minutes += "%02d\n" % i
        self.minutes += str(59)
        self.minuteRoller = lv.roller(alarm_clock_main_tile, None)
        self.minuteRoller.set_auto_fit(False)
        self.minuteRoller.set_width(60)
        self.minuteRoller.set_visible_row_count(4)
        self.minuteRoller.set_options(self.minutes, lv.roller.MODE.INFINITE)
        self.minuteRoller.align(self.day_cont, lv.ALIGN.OUT_BOTTOM_RIGHT, -50,
                                0)

        self.colon = lv.label(alarm_clock_main_tile, None)
        self.colon.set_text(":")
        self.colon.add_style(lv.label.PART.MAIN, self.day_cont_style)
        self.colon.align(self.hourRoller, lv.ALIGN.OUT_RIGHT_MID, 0, 0)

        exit_btn = lv.imgbtn(self.alarm_clock_main_tile, None)
        exit_btn.set_src(lv.btn.STATE.RELEASED,
                         self.mainbar.get_exit_btn_dsc())
        exit_btn.add_style(lv.imgbtn.PART.MAIN, alarm_clock_main_style)
        exit_btn.align(self.alarm_clock_main_tile, lv.ALIGN.IN_BOTTOM_LEFT, 10,
                       -10)
        self.log.debug("setting up exit callback")
        exit_btn.set_event_cb(self.exit_alarm_clock_main_event_cb)

        setup_btn = lv.imgbtn(self.alarm_clock_main_tile, None)
        setup_btn.set_src(lv.btn.STATE.RELEASED,
                          self.mainbar.get_setup_btn_dsc())
        setup_btn.add_style(lv.imgbtn.PART.MAIN, alarm_clock_main_style)
        setup_btn.align(self.alarm_clock_main_tile, lv.ALIGN.IN_BOTTOM_RIGHT,
                        -10, -10)
        self.log.debug("setting up setup callback")
示例#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)
示例#15
0
def m6():    #Wifi Settings
    
    
    #list event callback
    
    
    
    #button call back
    
    def list_event(obj, event):
        
        list_btn = lv.list.__cast__(obj)
        
        if event == lv.EVENT.CLICKED:
            
            print(list_btn.get_btn_text())
            
            m6_1(list_btn.get_btn_text())
            
    def btn_event(obj, event):
        
        if obj == home and event == lv.EVENT.CLICKED:
            m5()
            
        if obj == switch and event == lv.EVENT.VALUE_CHANGED:
            print('Value change : ' + str(obj.get_state()))
            
            if obj.get_state() == True:
                
                print('Enabling Wifi')
                sta_if.active(True)
                data = sta_if.scan()
                
                list = lv.list(scr)
                list.align(cont1, lv.ALIGN.OUT_BOTTOM_MID,0,0)
                                
                for d in data:
                    list.add_btn(lv.SYMBOL.RIGHT, str(d[0].decode('UTF-8'))).set_event_cb(list_event)
            
            if obj.get_state() == False:
                
                print('Disabling Wifi')
                sta_if.active(False)
                
                
    
    
    scr = lv.obj()
    lv.scr_load(scr)
    
    #top tab dengan home button
    cont = lv.cont(scr)
    cont.set_auto_realign(True)
    cont.set_style_local_radius(0,0,0)
    cont.align(scr, lv.ALIGN.IN_TOP_MID,0,0)
    cont.set_fit2(lv.FIT.PARENT, lv.FIT.TIGHT)
    
    #home button
    home = lv.btn(cont)
    home.align(cont, lv.ALIGN.IN_LEFT_MID, 0,10)
    home.set_fit2(lv.FIT.TIGHT, lv.FIT.TIGHT)
    home.set_event_cb(btn_event)
    lbl_home = lv.label(home)
    lbl_home.set_text(lv.SYMBOL.HOME)
    
    #label top tab
    
    lbl_top = lv.label(cont)
    lbl_top.set_text("Wifi Config")
    lbl_top.align(home, lv.ALIGN.OUT_RIGHT_MID,10,0)
    
    #set wifi
    
    cont1 = lv.cont(scr)
    cont1.set_auto_realign(True)
    cont1.align(cont, lv.ALIGN.OUT_BOTTOM_MID,0,20)
    cont1.set_fit2(lv.FIT.TIGHT, lv.FIT.TIGHT)
    
    lbl_en_wifi = lv.label(cont1)
    lbl_en_wifi.set_text("Enable Wifi")
    lbl_en_wifi.align(cont1, lv.ALIGN.IN_LEFT_MID, 10, 10)
    switch = lv.switch(cont1)
    switch.align(lbl_en_wifi, lv.ALIGN.OUT_RIGHT_MID, 100, 0)
    switch.set_event_cb(btn_event)