예제 #1
0
    def __init__(self, ipaddr="", **kwargs):
        super().__init__(**kwargs)
        self.dbRW = MyDb()
        self.ipaddr = ipaddr
        self.ids.ip.text, \
            self.ids.port.text = ipaddr.split(":")
        addrScnHist = self.dbRW.getAllProxyScan(ipaddr)
        from main import ProxyShowList

        for i, p in enumerate(addrScnHist):
            self.ids.md_list.add_widget(ProxyShowList(
                text=f"{agoConv(p[5])}",
                text1=f"{p[4]}",
                text2=f" {sec_to_mins(float((p[2])))}",
                text3=f" {p[1]} MB",
                text4=f" {size(p[3], system=alternative)}/s",
                _height=dp(20)
            ))
        firstTime = TrNumBool(self.dbRW.getConfig("openNo")[0], 'r', 0)
        if firstTime:
            fulladdrCopyTT = MDTapTargetView(
                widget=self.ids.adds,
                title_text="Copy IP:PORT by tapping ':'",
                description_text="That's way you can\ncopy full address \nfaster way.",  # noqa
                widget_position="left_bottom"
            )
            fulladdrCopyTT.bind(
                on_open=lambda x: self.textColorChange('o'),
                on_close=lambda x: self.textColorChange('c')
            )
            fulladdrCopyTT.start()
            self.dbRW.updateConfig("openNo", firstTime)
예제 #2
0
    def on_enter(self):
        self.ids.lbl.opacity = 0
        self.ids.logo.opacity = 1
        self._complete = False

        ttv4 = MDTapTargetView(
            widget=self.ids.add_btn,
            outer_radius=dp(320),
            cancelable=True,
            outer_circle_color=self.app.theme_cls.primary_color[:-1],
            outer_circle_alpha=0.9,
            title_text="This is an add button",
            description_text="You can cancel it by clicking outside",
            widget_position="left_bottom",
        )
        ttv4.bind(on_close=self.complete)

        ttv3 = MDTapTargetView(
            widget=self.ids.info_btn,
            outer_radius=dp(440),
            outer_circle_color=self.app.theme_cls.primary_color[:-1],
            outer_circle_alpha=0.8,
            target_circle_color=[255 / 255, 34 / 255, 212 / 255],
            title_text="This is the info button",
            description_text="No information available yet!",
            widget_position="center",
            title_position="left_bottom",
        )
        ttv3.bind(on_close=ttv4.start)

        ttv2 = MDTapTargetView(
            widget=self.ids.search_btn,
            outer_circle_color=[155 / 255, 89 / 255, 182 / 255],
            target_circle_color=[0.2, 0.2, 0.2],
            title_text="This is the search button",
            description_text="It won't search anything for now.",
            widget_position="center",
            title_position="left_bottom",
        )
        ttv2.bind(on_close=ttv3.start)

        ttv1 = MDTapTargetView(
            widget=self.ids.menu_btn,
            outer_circle_color=self.app.theme_cls.primary_color[:-1],
            outer_circle_alpha=0.85,
            title_text="Menu Button",
            description_text="Opens up the drawer",
            widget_position="center",
            title_position="right_bottom",
        )
        ttv1.bind(on_close=ttv2.start)
        ttv1.start()
예제 #3
0
파일: main.py 프로젝트: tenzindayoe/example
class MainApp(MDApp):
    data = {
        "help-circle-outline": "Help",
        "mapbox": "Add Trashcan",
        "settings": "settings"
    }
    myscreen = ObjectProperty()
    search_menu = None

    def on_start(self):

        try:
            self.root.ids.avatar_usr.source = ac_db_cur.execute(
                "SELECT * FROM avatar").fetchall()[0][0]
            self.root.ids.avatar_usr_2.source = ac_db_cur.execute(
                "SELECT * FROM avatar").fetchall()[0][0]
            self.root.ids.uad_username.text = usr_ac_cred[0][1]
            self.root.ids.uad_email.text = usr_ac_cred[0][0]
            self.root.ids.nav_username.text = usr_ac_cred[0][1]
            self.root.ids.nav_email.text = usr_ac_cred[0][0]
            #initialize gps

        except:
            pass

    def build(self):

        #Accessing settings database
        cur.execute("SELECT mode from settings where attribute='darkmode' ")
        GpsHelper().run()
        #App theme and UI color schemes
        darkmode_opt_list = cur.fetchall()
        darkmode_opt = darkmode_opt_list[0][0]
        self.theme_cls.primary_palette = "Cyan"
        self.theme_cls.primary_hue = "800"
        self.theme_cls.accent_palette = "Gray"
        self.theme_cls.accent_hue = "50"
        self.search_menu = SearchPopupMenu()

        self.tap_target_view = MDTapTargetView(
            widget=self.root.ids.button,
            title_text="Click here to locate you.",
            description_text="Make sure we are right over you",
            widget_position="left_bottom",
        )
        if darkmode_opt == "on":
            print("dark mode on")
            self.theme_cls.theme_style = "Dark"
            self.root.ids.darkmode_switch.active = True
        else:
            print("light mode on")
            self.theme_cls.theme_style = "Light"
            self.root.ids.darkmode_switch.active = False

        if logged_in == True:
            self.root.ids.manager.current = "Home"
            self.root.ids.ecomap.add_marker(MapMarker(lat=60, lon=30))
            myloc = MapMarker(lat=30.3433, lon=77.8839)
            self.root.ids.ecomap.add_marker(myloc)

            def repos(button):
                self.root.ids.ecomap.center_on(31.901303405681098, 76.5568)
                self.root.ids.ecomap.zoom = 18

            self.tap_target_view.bind(on_close=repos)

            def drop_marker_db(button):
                pass
                # temp_marker = MapMarker(lat=val[0], lon=val[1])
                # screen.ids.ecomap.add_marker(temp_marker)

            try:
                self.start_anim.cancel()
            except:
                pass
            self.start_anim = Clock.schedule_once(self.start_tp_anim, 3.5)

        elif logged_in == False:
            self.root.ids.parent_manager.current = "account_setup"

    def start_app(self):

        self.root.ids.parent_manager.current = "parent"
        self.root.ids.manager.current = "Home"
        usr_ac_cred = ac_db_cur.execute("SELECT * FROM accounts").fetchall()
        self.root.ids.uad_username.text = usr_ac_cred[0][1]
        self.root.ids.uad_email.text = usr_ac_cred[0][0]
        self.root.ids.nav_username.text = usr_ac_cred[0][1]
        self.root.ids.nav_email.text = usr_ac_cred[0][0]

    def start_tp_anim(self, *args):
        self.tap_target_start()

    def init_dark_mode(self, select, value):
        if value:
            self.theme_cls.theme_style = "Dark"
            cur.execute(
                "UPDATE settings SET mode='on' WHERE attribute = 'darkmode'")
            settings_db.commit()
        else:
            self.theme_cls.theme_style = "Light"
            cur.execute(
                "UPDATE settings SET mode='off' WHERE attribute = 'darkmode'")
            settings_db.commit()

    def tap_target_start(self):
        if self.tap_target_view.state == "close":
            self.tap_target_view.start()
        else:
            self.tap_target_view.stop()

    def callback(self, instance):
        if instance.icon == "settings":
            self.root.ids.manager.transition = SlideTransition()
            self.root.ids.manager.current = "Settings"
        elif instance.icon == "mapbox":
            self.register_trashcan()
        elif instance.icon == "help-circle-outline":
            pass

    def open_account(self):
        self.root.ids.parent_manager.current = "User_account_details"

    def open_home(self):
        self.root.ids.manager.current = "Home"

    def sign_up(self):
        username = self.root.ids.name_field.text
        email = self.root.ids.email_field.text
        password = self.root.ids.password_field.text
        Acc_list = ["acc", username, email, password]
        Acc_list = str(Acc_list)

        s.sendto(Acc_list.encode("utf-8"), server)
        response, response_addr = s.recvfrom(1024)

        response = response.decode("utf-8")
        if response == "ACCOUNT CREATED":
            sql_script = "INSERT INTO accounts VALUES('" + email + "', '" + username + "' , '" + password + "')"
            ac_db_cur.execute(sql_script)
            account_db.commit()
            self.root.ids.parent_manager.current = "profile_picture_opt"
            self.root.ids.uad_username.text = username
            self.root.ids.uad_email.text = email
            self.root.ids.nav_username.text = username
            self.root.ids.nav_email.text = email

        #register this account to server database

        #register this account credentials to localhost database

    def go_to_login(self):
        self.root.ids.parent_manager.current = "login_screen"

    def login(self):
        if self.root.ids.login_email_field == "" or self.root.ids.login_pw_field == "":
            print("Empty fields detected")
        else:
            cred_cont = [(self.root.ids.login_email_field.text, "",
                          self.root.ids.login_pw_field.text), "ch_acc_cred"]
            s.sendto(str(cred_cont).encode("utf-8"), server)
            response, response_addr = s.recvfrom(1024)
            response = response.decode("utf-8")
            if response == "error_lia":
                pass
            else:
                response = eval(response)
                if response[0] == "verified":
                    sql_scr1 = "DELETE FROM accounts"
                    sql_scr2 = "INSERT INTO accounts VALUES('" + self.root.ids.login_email_field.text + "', '" + response[
                        1] + "' , '" + self.root.ids.login_pw_field.text + "')"
                    ac_db_cur.execute(sql_scr1)
                    ac_db_cur.execute(sql_scr2)
                    account_db.commit()
                    global logged_in
                    logged_in = True
                    self.root.ids.parent_manager.current = "profile_picture_opt"

    def confirm_av(self):
        usr_av = None
        selected = None

        for avatar in [
                self.root.ids.m1, self.root.ids.m2, self.root.ids.m3,
                self.root.ids.m4, self.root.ids.m5, self.root.ids.m6,
                self.root.ids.m7, self.root.ids.w1, self.root.ids.w2,
                self.root.ids.w3, self.root.ids.w4, self.root.ids.w5,
                self.root.ids.w6, self.root.ids.w7
        ]:

            if avatar.size == [130, 130]:

                selected = True
                break
        if selected == True:
            ac_db_cur.execute("DELETE FROM avatar")
            ac_db_cur.execute("INSERT INTO avatar VALUES('" + avatar.icon +
                              "')")
            account_db.commit()
            self.start_app()
            av = ac_db_cur.execute("SELECT * FROM avatar").fetchall()[0][0]

            self.root.ids.avatar_usr.source = av
            self.root.ids.avatar_usr_2.source = av
        else:
            pass

    def register_trashcan(self):
        lat = self.root.ids.blinker.lat
        lon = self.root.ids.blinker.lon
        list = ["tr_reg", [lat, lon]]
        s.sendto(str(list).encode("utf-8"), server)
        self.snackbar = Snackbar(text="Trashcan added.Will be shown soon!")
        self.snackbar.show()