示例#1
0
    def __init__(self, **kwargs):
        """
        Écran de bienvenue contenant le champ de saisie de l'adresse IP du
        serveur à laquelle se connecter

        :param kwargs: Arguments clé/valeur de la classe parente
        """
        self.register_event_type("on_confirm_ip_address")
        super(WelcomeScreen, self).__init__(**kwargs)

        self.label = Label(
            text="Please enter the IP address of the server",
            color=(0, 0, 0, 1),
            size_hint=(.8, .08),
            pos_hint={'x': .1, 'y': .6}
        )

        self.textInput = TextInput(
            multiline=False,
            size_hint=(.8, .08),
            pos_hint={'x': .1, 'y': .5}
        )

        self.confirmButton = Button(
            text="OK",
            size_hint=(.8, .08),
            pos_hint={'x': .1, 'y': .4}
        )
        self.confirmButton.bind(on_release=self.handleSubmitAddress)

        self.popup = CustomPopup(
            "Error",
            "Please enter a valid IP address\n\nEx: 192.168.0.10")

        self.add_widget(self.label)
        self.add_widget(self.textInput)
        self.add_widget(self.confirmButton)
示例#2
0
    def handleSignUpValidation(self, userInfosAreValid):
        """
        Permet de gérer la réception d'une validation d'une demande d'enregistrement
        à l'application

        :param userInfosAreValid: Indique si les informations entrées sont valides
        :type userInfosAreValid: bool
        :return:
        :rtype: None
        """
        # Affichage d'un message popup de bienvenue ou d'erreur
        if userInfosAreValid:
            popup = CustomPopup("Welcome", "You can now sign in")
        else:
            popup = CustomPopup("Error", "Username/Password already taken")

        # Retour à l'écran de bienvenue lorsque le popup est fermé
        popup.bind(on_dismiss=self.displaySignInScreen)
        popup.open()
示例#3
0
    def handleConnectionError(self, instance):
        """
        Gestion d'une erreur de connexion avec le serveur: affichage d'un message
        d'erreur

        :param instance: L'instance ayant appelée la méthode
        :type instance: Client
        :return:
        :rtype: None
        """
        popup = CustomPopup("Error", "Could not connect to the server")
        popup.open()
        popup.bind(on_dismiss=self.stop)
示例#4
0
    def handleSignInValidation(self, userInfosAreValid, userData):
        """
        Permet de gérer la réception d'une validation de demande de connexion
        à l'application

        :param userInfosAreValid: Indique si les informations entrées sont valides
        :type userInfosAreValid: bool
        :param userData: Les données concernant l'utilisateur
        :type userData: dict
        :return:
        :rtype: None
        """
        # Si la demande est valide, affichage de l'écran de profil
        if userInfosAreValid:
            user = self.dto.unserializeLoggedInUser(userData)
            self.profileScreen.displayUserProfile(user)
            self.screenManager.current = "Profile"
        # Sinon, affichage d'un message d'erreur
        else:
            CustomPopup("Error", "Username/Password incorrect").open()
示例#5
0
    def handleConnectionLost(self, instance):
        """
        Gestion d'une perte de connexion avec le serveur: affichage d'un message
        d'erreur

        :param instance: L'instance ayant appelée la méthode
        :type instance: Client
        :return:
        :rtype: None
        """
        self.client = None

        popup = CustomPopup("Error", "Connection lost")
        popup.open()
        popup.bind(on_dismiss=self.stop)
示例#6
0
    def connectToServer(self, instance, ipAddress):
        """
        Permet de gérer la connexion au serveur: lancement de la boucle de la
        partie client du modèle client-serveur et passage à l'écran de connexion
        à l'application

        :param instance: L'écran de bienvenue
        :type instance: WelcomeScreen
        :param ipAddress: L'addresse IP à laquelle se connecter
        :type ipAddress: str
        :return:
        :rtype: None
        """
        self.client = Client(ipAddress)
        self.client.bind(on_connection_lost=self.handleConnectionLost)
        self.client.bind(on_data_received=self.handleDataReceived)

        if self.client.isConnected():
            thread = Thread(target=self.client.start)
            thread.start()
            self.initializeScreens()
            self.displaySignInScreen()
        else:
            CustomPopup("Error", "Could not connect to the server").open()
示例#7
0
class WelcomeScreen(CustomScreen):

    def __init__(self, **kwargs):
        """
        Écran de bienvenue contenant le champ de saisie de l'adresse IP du
        serveur à laquelle se connecter

        :param kwargs: Arguments clé/valeur de la classe parente
        """
        self.register_event_type("on_confirm_ip_address")
        super(WelcomeScreen, self).__init__(**kwargs)

        self.label = Label(
            text="Please enter the IP address of the server",
            color=(0, 0, 0, 1),
            size_hint=(.8, .08),
            pos_hint={'x': .1, 'y': .6}
        )

        self.textInput = TextInput(
            multiline=False,
            size_hint=(.8, .08),
            pos_hint={'x': .1, 'y': .5}
        )

        self.confirmButton = Button(
            text="OK",
            size_hint=(.8, .08),
            pos_hint={'x': .1, 'y': .4}
        )
        self.confirmButton.bind(on_release=self.handleSubmitAddress)

        self.popup = CustomPopup(
            "Error",
            "Please enter a valid IP address\n\nEx: 192.168.0.10")

        self.add_widget(self.label)
        self.add_widget(self.textInput)
        self.add_widget(self.confirmButton)

    def handleSubmitAddress(self, instance):
        """
        Permet de gérer la confirmation de l'addresse IP entrée par l'utilisateur:
        déclenceh l'événement <on_confirm_ip_address> si l'addresse IP entrée est
        valide

        :param instance: Le bouton de confirmation
        :type instance: Button
        :return:
        :rtype: None
        """
        if re.match("\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}", self.textInput.text):
            self.dispatch("on_confirm_ip_address", self.textInput.text)
        else:
            self.popup.open()

        self.textInput.text = ""

    def on_confirm_ip_address(self, address):
        """
        L'événement <on_confirm_ip_address>: passe l'addresse IP entrée par
        l'utilisateur au récepteur

        :param address: L'addresse IP entrée par l'utilisateur
        :type: str
        :return:
        :rtype: None
        """
        pass