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
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)
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)
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
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
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