Beispiel #1
0
class GameApp(App):
    sm = ObjectProperty()
    screen = ObjectProperty()
    score = NumericProperty(0)
    is_touch = BooleanProperty()
    music = ObjectProperty()

    def build(self):
        self.sm = ScreenManager(transition = FallOutTransition(duration = 0.3))
        self.switch_screen("logo")
        try:
            import android
            self.is_touch = 1
        except ImportError:
            self.is_touch = 0
        return self.sm

    def switch_screen(self, screen_name, *args):
        if screen_name == "logo":
            self.screen = LogoScreen(name="logo", app=self)
        elif screen_name == "menu":
            self.screen = ScreenMenu(name="menu", app=self)
        elif screen_name == "one":
            self.screen = ScreenOne(name="one", app=self)
        elif screen_name == "two":
            self.screen = ScreenTwo(name="two", app=self)
        elif screen_name == "three":
            self.screen = ScreenThree(name="three", app=self)
        elif screen_name == "four":
            self.screen = ScreenFour(name="four", app=self)
        elif screen_name == "temp":
            self.screen = ScreenTemp(name="temp", app=self)
        elif screen_name == "five":
            self.screen = ScreenFive(name="five", app=self)
        elif screen_name == "six":
            self.screen = ScreenSix(name="six", app=self)
        elif screen_name == "seven":
            self.screen = ScreenSeven(name="seven", app=self)
        elif screen_name == "eight":
            self.screen = ScreenEight(name="eight", app=self)
        elif screen_name == "nine":
            self.screen = ScreenNine(name="nine", app=self)
        elif screen_name == "help":
            self.screen = ScreenHelp(name="help", app=self)
        self.sm.clear_widgets()
        self.sm.add_widget(self.screen)
        self.sm.current = self.screen.name
Beispiel #2
0
class MessengerApp(App):
    def build(self):
        self.screen_manager = ScreenManager()

        self.login_page = LoginPage()
        screen = Screen(name='Login')
        screen.add_widget(self.login_page)
        self.screen_manager.add_widget(screen)

        if token_true()[0]:
            self.create_chats_page()
            self.screen_manager.current = 'Chats'

        return self.screen_manager
        # if token_true()[0]:
        #     return ChatsPage()
        # return LoginPage()

    def create_chats_page(self):
        try:
            self.screen_manager.clear_widgets()
        except:
            pass
        self.chats_page = ChatsMenuPage()
        screen = Screen(name='Chats')
        screen.add_widget(self.chats_page)
        self.screen_manager.add_widget(screen)

    def create_chat_page(self, chat_id):
        try:
            self.screen_manager.clear_widgets()
        except:
            pass
        self.chat_page = ChatPage(chat_id=chat_id)
        print('chat_id =', chat_id)
        screen = Screen(name='Chat')
        screen.add_widget(self.chat_page)
        self.screen_manager.add_widget(screen)
Beispiel #3
0
class CurriculaApp(App):
    def __init__(self):
        App.__init__(self)
        self.db_adapter = DBAdapter()
        self.screen_manager = ScreenManager()
        self.client_model = ClientModel(self.db_adapter)

    def build(self):
        self.screen_manager.clear_widgets()
        screen_list = []
        screen_list.append(LoginScreen(root_app=self))
        screen_list.append(MainScreen(root_app=self))
        screen_list.append(CurriculumDashboardScreen(root_app=self))
        screen_list.append(CourseDashboardScreen(root_app=self))
        screen_list.append(AddNewScreen(root_app=self))
        screen_list.append(NewCurriculumScreen(root_app=self))
        screen_list.append(NewPersonScreen(root_app=self))
        screen_list.append(NewGoalScreen(root_app=self))
        screen_list.append(NewTopicScreen(root_app=self))
        screen_list.append(NewCourseScreen(root_app=self))
        screen_list.append(NewSectionScreen(root_app=self))
        screen_list.append(NewCurriculumTopicScreen(root_app=self))
        screen_list.append(ViewSectionStatsScreen(root_app=self))
        screen_list.append(AddRealGradesScreen(root_app=self))
        screen_list.append(NewCourseGoalScreen(root_app=self))
        screen_list.append(NewCourseTopicScreen(root_app=self))
        screen_list.append(NewCurriculumCourseScreen(root_app=self))
        screen_list.append(EditCurriculumScreen(root_app=self))
        screen_list.append(EditCourseScreen(root_app=self))

        for screen in screen_list:
            self.screen_manager.add_widget(screen)

        return self.screen_manager

    def changeScreen(self, screen):
        print(screen)
Beispiel #4
0
class SegretoApp(App):

    def build(self):
        self.icon = 'data/icon/segreto_icon.png' # Don't know why icon isn't set :(
        self.title = 'Segreto 3'
        self.init()
        return self.screenmanager

    def init(self):
        self.username = ''
        self.password = ''
        self.crypt_file_path = ''
        self.screenmanager = ScreenManager(transition=SwapTransition())
        self.loginscreen = LoginScreen(name='screen-login')
        self.loginscreen.bind(on_login=self.login)
        self.ideascreen = IdeaScreen(name='screen-idea')
        self.ideascreen.bind(on_quit_app=self.quit)
        self.screenmanager.add_widget(self.loginscreen)
        self.screenmanager.add_widget(self.ideascreen)
        self.screenmanager.current = 'screen-login'

    def encrypt_store_data(self, crypt_file_path, password, idea_collection):
        self.screenmanager.clear_widgets()
        ser_data = jsonpickle.encode(idea_collection)
        enc_data = simplecrypt.encrypt(password, ser_data)
        with open(crypt_file_path, 'wb') as f:
            f.write(enc_data)
        self.stop()

    def login(self, *args):
        uname = self.loginscreen.ids['grid'].username
        paswd = self.loginscreen.ids['grid'].password
        config = configparser.ConfigParser()
        config.read('settings.ini')
        for section in config.sections():
            username = config.get(section, 'username')
            if username == uname:
                self.crypt_file_path = config.get(section, 'file')
                self.username = uname
                with open(self.crypt_file_path, 'ab+') as f:
                    f.seek(0)
                    crypt_data = f.read()
                    if crypt_data == b'':
                        self.password = paswd
                        self.screenmanager.current = 'screen-idea'
                    else:
                        self.start_decrypt_thread(crypt_data, paswd)
        if self.username == '':
            self.loginscreen.login_failure('User not found')
            self.username = ''
            self.password = ''
            self.crypt_file_path = ''

    def decrypt_data(self, crypt_data, password):
        try:
            dec_data = simplecrypt.decrypt(password, crypt_data)
            self.password = password
            self.idea_collection = jsonpickle.decode(dec_data.decode('utf8'))
            self.ideascreen.set_idea_collection(self.idea_collection)
            self.screenmanager.current = 'screen-idea'
        except simplecrypt.DecryptionException:
            self.loginscreen.login_failure('Password error')
            self.username = ''
            self.password = ''
            self.crypt_file_path = ''

    def start_decrypt_thread(self, crypt_data, paswd):
        t = threading.Thread(target=self.decrypt_data,
                             args=(crypt_data, paswd))
        t.daemon = True
        t.start()

    def start_encrypt_thread(self, crypt_file_path, password, idea_collection):
        t = threading.Thread(target=self.encrypt_store_data, args=(
            crypt_file_path, password, idea_collection))
        t.daemon = True
        t.start()

    def quit(self, *args):
        idea_collection = self.ideascreen.idea_collection
        self.start_encrypt_thread(
            self.crypt_file_path, self.password, idea_collection)

    def on_pause(self):
        return True
Beispiel #5
0
class MainApp(App):
    def build(self):

        bl = BoxLayout(orientation='vertical')
        statistic_box = BoxLayout(size_hint=(1, .05))
        statistic_stack = StackLayout()
        for i in range(5):
            statistic_stack.add_widget(Button(text=str(i), size_hint=(.1, 1)))
        statistic_box.add_widget(statistic_stack)
        button_box = BoxLayout(size_hint=(1, .1))
        self.sm = ScreenManager(size_hint=(1, .85))
        creatures_screen = CustomScreen(name='main')
        biomes_screen = CustomScreen(name='biom')
        supply_screen = CustomScreen(name='supply')
        self.biomes_grid = GridLayout(cols=2)
        self.creatures_grid = GridLayout(cols=2)
        biomes_screen.add_widget(self.biomes_grid)
        creatures_screen.add_widget(self.creatures_grid)
        self.unremovable_screens = sorted(
            [creatures_screen, biomes_screen, supply_screen])

        popup = Popup(title='Test popup',
                      content=Label(text='Hello world'),
                      size_hint=(None, None))
        supply_screen.add_widget(Button(text='supply', on_press=popup.open))
        self.sm.add_widget(creatures_screen)
        self.sm.add_widget(biomes_screen)
        self.sm.add_widget(supply_screen)

        to_biom = Button(
            text='to biom',
            on_press=lambda *args: switch_page(self.sm, biomes_screen.name))

        to_creatures = Button(
            text='to_creatures',
            on_press=lambda *args: switch_page(self.sm, creatures_screen.name))

        to_supply = Button(
            text='to supply',
            on_press=lambda *args: switch_page(self.sm, supply_screen.name))
        make_turn_btn = Button(text='make_turn',
                               on_press=lambda *args: self.make_turn(*args))

        button_box.add_widget(make_turn_btn)
        button_box.add_widget(to_biom)
        button_box.add_widget(to_creatures)
        button_box.add_widget(to_supply)

        bl.add_widget(statistic_box)
        bl.add_widget(self.sm)
        bl.add_widget(button_box)
        return bl

    def make_turn(self, button):
        turn_data = TurnManager.make_turn()
        self.general_preparations()
        self.prepare_biomes(turn_data['biomes_data'])
        self.prepare_creatures(turn_data['creatures_data'])

    def general_preparations(self):
        # clearing updating widgets
        if sorted(self.sm.screens) != self.unremovable_screens:
            self.sm.clear_widgets(screens=[
                sc for sc in self.sm.screens
                if sc not in self.unremovable_screens
            ])
        self.biomes_grid.clear_widgets()
        self.creatures_grid.clear_widgets()

    def prepare_biomes(self, data):
        for item in data:
            self.biomes_grid.add_widget(self.create_inner_grid(item, 'b'))

    def prepare_creatures(self, data):
        for item in data:
            self.creatures_grid.add_widget(self.create_creature_grid(
                item, 'c'))

    def create_inner_grid(self, item, prefix):
        grid_id = item.pop('id')
        inner_grid = CustomInnerGrid(rows=2,
                                     padding=5,
                                     grid_id=grid_id,
                                     sm=self.sm,
                                     on_press=lambda obj: switch_page(
                                         self.sm, f'{prefix}{obj.grid_id}'))
        screen = CustomScreen(name=f'{prefix}{grid_id}')
        screen.add_widget(Button(text=f'{prefix}{grid_id}'))
        self.sm.add_widget(screen)

        for data_item in item:
            bl = BoxLayout()
            bl.add_widget(
                Image(
                    source=f'{SC_PATH}/{data_item}.png',
                    size_hint=(1, 1),
                ))
            bl.add_widget(Label(text=str(item[data_item])))
            inner_grid.add_widget(bl)
        return inner_grid

    def create_creature_grid(self, item, prefix):
        grid_id = item.pop('id')
        flag = item.pop('flag')
        inner_grid = CustomInnerGrid(rows=2,
                                     padding=5,
                                     grid_id=grid_id,
                                     sm=self.sm,
                                     on_press=lambda obj: switch_page(
                                         self.sm, f'{prefix}{obj.grid_id}'))
        screen = CustomScreen(name=f'{prefix}{grid_id}')
        bl = BoxLayout()
        left_part = BoxLayout()
        right_part = GridLayout(cols=3, padding=5)
        for i in range(30):
            right_part.add_widget(Button(
                text=f'{i}',
                size_hint_y=None,
            ))
        bl.add_widget(left_part)
        bl.add_widget(right_part)
        screen.add_widget(bl)
        self.sm.add_widget(screen)

        for data_item in item:
            bl = BoxLayout()
            bl.add_widget(
                Image(
                    source=f'{SC_PATH}/mock.png',
                    size_hint=(1, 1),
                ))
            bl.add_widget(Label(text=str(item[data_item])))
            inner_grid.add_widget(bl)
        return inner_grid
Beispiel #6
0
class SegretoApp(App):
    def build(self):
        self.icon = 'data/icon/segreto_icon.png'  # Don't know why icon isn't set :(
        self.title = 'Segreto 3'
        self.init()
        return self.screenmanager

    def init(self):
        self.username = ''
        self.password = ''
        self.crypt_file_path = ''
        self.screenmanager = ScreenManager(transition=SwapTransition())
        self.loginscreen = LoginScreen(name='screen-login')
        self.loginscreen.bind(on_login=self.login)
        self.ideascreen = IdeaScreen(name='screen-idea')
        self.ideascreen.bind(on_quit_app=self.quit)
        self.screenmanager.add_widget(self.loginscreen)
        self.screenmanager.add_widget(self.ideascreen)
        self.screenmanager.current = 'screen-login'

    def encrypt_store_data(self, crypt_file_path, password, idea_collection):
        self.screenmanager.clear_widgets()
        ser_data = jsonpickle.encode(idea_collection)
        enc_data = simplecrypt.encrypt(password, ser_data)
        with open(crypt_file_path, 'wb') as f:
            f.write(enc_data)
        self.stop()

    def login(self, *args):
        uname = self.loginscreen.ids['grid'].username
        paswd = self.loginscreen.ids['grid'].password
        config = configparser.ConfigParser()
        config.read('settings.ini')
        for section in config.sections():
            username = config.get(section, 'username')
            if username == uname:
                self.crypt_file_path = config.get(section, 'file')
                self.username = uname
                with open(self.crypt_file_path, 'ab+') as f:
                    f.seek(0)
                    crypt_data = f.read()
                    if crypt_data == b'':
                        self.password = paswd
                        self.screenmanager.current = 'screen-idea'
                    else:
                        self.start_decrypt_thread(crypt_data, paswd)
        if self.username == '':
            self.loginscreen.login_failure('User not found')
            self.username = ''
            self.password = ''
            self.crypt_file_path = ''

    def decrypt_data(self, crypt_data, password):
        try:
            dec_data = simplecrypt.decrypt(password, crypt_data)
            self.password = password
            self.idea_collection = jsonpickle.decode(dec_data.decode('utf8'))
            self.ideascreen.set_idea_collection(self.idea_collection)
            self.screenmanager.current = 'screen-idea'
        except simplecrypt.DecryptionException:
            self.loginscreen.login_failure('Password error')
            self.username = ''
            self.password = ''
            self.crypt_file_path = ''

    def start_decrypt_thread(self, crypt_data, paswd):
        t = threading.Thread(target=self.decrypt_data,
                             args=(crypt_data, paswd))
        t.daemon = True
        t.start()

    def start_encrypt_thread(self, crypt_file_path, password, idea_collection):
        t = threading.Thread(target=self.encrypt_store_data,
                             args=(crypt_file_path, password, idea_collection))
        t.daemon = True
        t.start()

    def quit(self, *args):
        idea_collection = self.ideascreen.idea_collection
        self.start_encrypt_thread(self.crypt_file_path, self.password,
                                  idea_collection)

    def on_pause(self):
        return True