class TetrisApp(App): def build_config(self, config): config.setdefaults( 'tetris', { "length": 50, "boader": 12, "activity_cols": 12, "activity_rows": 24 } ) config.setdefaults( 'color', { "root_bgclr": "'0.6, 0.6, 0.6'" } ) def build(self): #self.config = Config.get_configparser('app') self.config = ConfigParser(name='tetris_cfg') self.config.read('tetris.ini') #print "app cfg", self.config.filename #parser = ConfigParser.get_configparser('app') #clr = parser.get("color", "root_bgclr").encode("utf-8") clr = self.config.getdefault("color", "root_bgclr", '1,1,1') m = re.search(r'.*?(\d+).*,.*?(\d+).*,.*?(\d+).*', clr) self.root_bgclr_r = float(m.groups()[0])/255 self.root_bgclr_g = float(m.groups()[1])/255 self.root_bgclr_b = float(m.groups()[2])/255 clr = self.config.getdefault("color", "activity_bgclr", '1,1,1') m = re.search(r'.*?(\d+).*,.*?(\d+).*,.*?(\d+).*', clr) self.activity_bgclr_r = float(m.groups()[0])/255 self.activity_bgclr_g = float(m.groups()[1])/255 self.activity_bgclr_b = float(m.groups()[2])/255 # self.length = parser.getint("tetris", "length") # self.activity_rows = parser.getint("tetris", "activity_rows") # self.activity_cols = parser.getint("tetris", "activity_cols") self.anchor_x = self.config.getdefaultint("tetris", "anchor_x", 50) self.anchor_y = self.config.getdefaultint("tetris", "anchor_y", 50) self.length = self.config.getdefaultint("tetris", "length", 50) self.activity_rows = self.config.getdefaultint("tetris", "activity_rows", 24) self.activity_cols = self.config.getdefaultint("tetris", "activity_cols", 12) self.test = self.config.getdefaultint("tetris", "test", 100) logging.debug("[%d] [%d] [%d] [%d]", self.length, self.activity_rows, self.activity_cols, self.test) rootWidget = RootWidget() rootWidget.StartGame() return rootWidget def clear_canvas(self, obj): self.painter.canvas.clear()
def update_panel(self): '''Update the MenuSidebar ''' self.config_parsers = {} self.interface.menu.buttons_layout.clear_widgets() for _file in os.listdir(self.PROFILES_PATH): _file_path = os.path.join(self.PROFILES_PATH, _file) config_parser = ConfigParser() config_parser.read(_file_path) prof_name = config_parser.getdefault('profile', 'name', 'PROFILE') if not prof_name.strip(): prof_name = 'PROFILE' self.config_parsers[str(prof_name) + '_' + _file_path] = config_parser for _file in sorted(self.config_parsers): prof_name = self.config_parsers[_file].getdefault( 'profile', 'name', 'PROFILE') if not prof_name.strip(): prof_name = 'PROFILE' self.add_json_panel( prof_name, self.config_parsers[_file], os.path.join(get_kd_data_dir(), 'settings', 'build_profile.json')) # force to show the first profile first_panel = self.interface.menu.buttons_layout.children[-1].uid self.interface.content.current_uid = first_panel
def update_panel(self): '''Update the MenuSidebar ''' self.config_parsers = {} self.interface.menu.buttons_layout.clear_widgets() for _file in os.listdir(self.PROFILES_PATH): _file_path = os.path.join(self.PROFILES_PATH, _file) config_parser = ConfigParser() config_parser.read(_file_path) prof_name = config_parser.getdefault('profile', 'name', 'PROFILE') if not prof_name.strip(): prof_name = 'PROFILE' self.config_parsers[ str(prof_name) + '_' + _file_path] = config_parser for _file in sorted(self.config_parsers): prof_name = self.config_parsers[_file].getdefault('profile', 'name', 'PROFILE') if not prof_name.strip(): prof_name = 'PROFILE' self.add_json_panel(prof_name, self.config_parsers[_file], os.path.join( get_kd_data_dir(), 'settings', 'build_profile.json') ) # force to show the first profile first_panel = self.interface.menu.buttons_layout.children[-1].uid self.interface.content.current_uid = first_panel
class DesignerSettings(Settings): '''Subclass of :class:`kivy.uix.settings.Settings` responsible for showing settings of Kivy Designer. ''' config_parser = ObjectProperty(None) '''Config Parser for this class. Instance of :class:`kivy.config.ConfigParser` ''' def load_settings(self): '''This function loads project settings ''' self.config_parser = ConfigParser() DESIGNER_CONFIG = os.path.join(get_kivy_designer_dir(), DESIGNER_CONFIG_FILE_NAME) _dir = os.path.dirname(designer.__file__) _dir = os.path.split(_dir)[0] DEFAULT_CONFIG = os.path.join(_dir, DESIGNER_CONFIG_FILE_NAME) if not os.path.exists(DESIGNER_CONFIG): shutil.copyfile(DEFAULT_CONFIG, DESIGNER_CONFIG) self.config_parser.read(DESIGNER_CONFIG) self.config_parser.upgrade(DEFAULT_CONFIG) self.add_json_panel('Kivy Designer Settings', self.config_parser, os.path.join(_dir, 'designer', 'settings', 'designer_settings.json')) path = self.config_parser.getdefault( 'global', 'python_shell_path', '') if path == "": self.config_parser.set('global', 'python_shell_path', sys.executable) self.config_parser.write() def on_config_change(self, *args): '''This function is default handler of on_config_change event. ''' self.config_parser.write() super(DesignerSettings, self).on_config_change(*args)
class DesignerSettings(Settings): '''Subclass of :class:`kivy.uix.settings.Settings` responsible for showing settings of Kivy Designer. ''' config_parser = ObjectProperty(None) '''Config Parser for this class. Instance of :class:`kivy.config.ConfigParser` ''' def load_settings(self): '''This function loads project settings ''' self.config_parser = ConfigParser() DESIGNER_CONFIG = os.path.join(get_kivy_designer_dir(), DESIGNER_CONFIG_FILE_NAME) _dir = os.path.dirname(designer.__file__) _dir = os.path.split(_dir)[0] DEFAULT_CONFIG = os.path.join(_dir, DESIGNER_CONFIG_FILE_NAME) if not os.path.exists(DESIGNER_CONFIG): shutil.copyfile(DEFAULT_CONFIG, DESIGNER_CONFIG) self.config_parser.read(DESIGNER_CONFIG) self.config_parser.upgrade(DEFAULT_CONFIG) self.add_json_panel( 'Kivy Designer Settings', self.config_parser, os.path.join(_dir, 'designer', 'settings', 'designer_settings.json')) path = self.config_parser.getdefault('global', 'python_shell_path', '') if path == "": self.config_parser.set('global', 'python_shell_path', sys.executable) self.config_parser.write() def on_config_change(self, *args): '''This function is default handler of on_config_change event. ''' self.config_parser.write() super(DesignerSettings, self).on_config_change(*args)
class DesignerSettings(Settings): """Subclass of :class:`kivy.uix.settings.Settings` responsible for showing settings of Kivy Designer. """ config_parser = ObjectProperty(None) """Config Parser for this class. Instance of :class:`kivy.config.ConfigParser` """ def load_settings(self): """This function loads project settings """ self.config_parser = ConfigParser() DESIGNER_CONFIG = os.path.join(get_kivy_designer_dir(), DESIGNER_CONFIG_FILE_NAME) _dir = os.path.dirname(designer.__file__) _dir = os.path.split(_dir)[0] if not os.path.exists(DESIGNER_CONFIG): shutil.copyfile(os.path.join(_dir, DESIGNER_CONFIG_FILE_NAME), DESIGNER_CONFIG) self.config_parser.read(DESIGNER_CONFIG) self.add_json_panel( "Kivy Designer Settings", self.config_parser, os.path.join(_dir, "designer", "settings", "designer_settings.json"), ) path = self.config_parser.getdefault("global", "python_shell_path", "") if path == "": self.config_parser.set("global", "python_shell_path", sys.executable) self.config_parser.write() def on_config_change(self, *args): """This function is default handler of on_config_change event. """ self.config_parser.write() super(DesignerSettings, self).on_config_change(*args)
def get_config(section, key, cls=str, default=""): """ Récupère une valeur dans la configuration de l'application. :param section: str :param key: str :param cls: type du retour souhaité, default = str :param default: fallback. default = "" :return: Any or None si la clé n'est pas présente """ if app := App.get_running_app(): # pragma: no branch config: ConfigParser = app.config # trick pour les tests, ne pas tester if not config: # pragma: no cover_all config = ConfigParser() app.build_config(config) value = config.getdefault(section, key, default) if cls == bool: return bool(int(value)) elif cls == int: return int(value) else: return value # as string
class DesignerSettings(Settings): '''Subclass of :class:`kivy.uix.settings.Settings` responsible for showing settings of Kivy Designer. ''' config_parser = ObjectProperty(None) '''Config Parser for this class. Instance of :class:`kivy.config.ConfigParser` ''' def __init__(self, **kwargs): super(DesignerSettings, self).__init__(*kwargs) self.register_type('list', SettingList) def load_settings(self): '''This function loads project settings ''' self.config_parser = ConfigParser(name='DesignerSettings') DESIGNER_CONFIG = os.path.join(get_kivy_designer_dir(), DESIGNER_CONFIG_FILE_NAME) _dir = os.path.dirname(designer.__file__) _dir = os.path.split(_dir)[0] DEFAULT_CONFIG = os.path.join(_dir, DESIGNER_CONFIG_FILE_NAME) if not os.path.exists(DESIGNER_CONFIG): shutil.copyfile(DEFAULT_CONFIG, DESIGNER_CONFIG) self.config_parser.read(DESIGNER_CONFIG) self.config_parser.upgrade(DEFAULT_CONFIG) # creates a panel before insert it to update code input theme list panel = self.create_json_panel( 'Kivy Designer Settings', self.config_parser, os.path.join(_dir, 'designer', 'settings', 'designer_settings.json')) uid = panel.uid if self.interface is not None: self.interface.add_panel(panel, 'Kivy Designer Settings', uid) # loads available themes for child in panel.children: if child.id == 'code_input_theme_options': child.items = styles.get_all_styles() # tries to find python and buildozer path if it's not defined path = self.config_parser.getdefault('global', 'python_shell_path', '') if path.strip() == '': self.config_parser.set('global', 'python_shell_path', sys.executable) self.config_parser.write() buildozer_path = self.config_parser.getdefault('buildozer', 'buildozer_path', '') if buildozer_path.strip() == '': buildozer_path = find_executable('buildozer') if buildozer_path: self.config_parser.set('buildozer', 'buildozer_path', buildozer_path) self.config_parser.write() self.add_json_panel( 'Buildozer', self.config_parser, os.path.join(_dir, 'designer', 'settings', 'buildozer_settings.json')) self.add_json_panel( 'Hanga', self.config_parser, os.path.join(_dir, 'designer', 'settings', 'hanga_settings.json')) def on_config_change(self, *args): '''This function is default handler of on_config_change event. ''' self.config_parser.write() super(DesignerSettings, self).on_config_change(*args)
class DesignerSettings(Settings): '''Subclass of :class:`kivy.uix.settings.Settings` responsible for showing settings of Kivy Designer. ''' config_parser = ObjectProperty(None) '''Config Parser for this class. Instance of :class:`kivy.config.ConfigParser` ''' def __init__(self, **kwargs): super(DesignerSettings, self).__init__(*kwargs) self.register_type('list', SettingList) self.register_type('shortcut', SettingShortcut) def load_settings(self): '''This function loads project settings ''' self.config_parser = ConfigParser(name='DesignerSettings') DESIGNER_CONFIG = os.path.join(get_config_dir(), DESIGNER_CONFIG_FILE_NAME) _dir = os.path.dirname(designer.__file__) _dir = os.path.split(_dir)[0] DEFAULT_CONFIG = os.path.join(_dir, DESIGNER_CONFIG_FILE_NAME) if not os.path.exists(DESIGNER_CONFIG): shutil.copyfile(DEFAULT_CONFIG, DESIGNER_CONFIG) self.config_parser.read(DESIGNER_CONFIG) self.config_parser.upgrade(DEFAULT_CONFIG) # creates a panel before insert it to update code input theme list panel = self.create_json_panel('Kivy Designer Settings', self.config_parser, os.path.join(_dir, 'designer', 'settings', 'designer_settings.json')) uid = panel.uid if self.interface is not None: self.interface.add_panel(panel, 'Kivy Designer Settings', uid) # loads available themes for child in panel.children: if child.id == 'code_input_theme_options': child.items = styles.get_all_styles() # tries to find python and buildozer path if it's not defined path = self.config_parser.getdefault( 'global', 'python_shell_path', '') if path.strip() == '': self.config_parser.set('global', 'python_shell_path', sys.executable) self.config_parser.write() buildozer_path = self.config_parser.getdefault('buildozer', 'buildozer_path', '') if buildozer_path.strip() == '': buildozer_path = find_executable('buildozer') if buildozer_path: self.config_parser.set('buildozer', 'buildozer_path', buildozer_path) self.config_parser.write() self.add_json_panel('Buildozer', self.config_parser, os.path.join(_dir, 'designer', 'settings', 'buildozer_settings.json')) self.add_json_panel('Hanga', self.config_parser, os.path.join(_dir, 'designer', 'settings', 'hanga_settings.json')) self.add_json_panel('Keyboard Shortcuts', self.config_parser, os.path.join(_dir, 'designer', 'settings', 'shortcuts.json')) def on_config_change(self, *args): '''This function is default handler of on_config_change event. ''' self.config_parser.write() super(DesignerSettings, self).on_config_change(*args)
class DesignerSettings(Settings): """Subclass of :class:`kivy.uix.settings.Settings` responsible for showing settings of Kivy Designer. """ config_parser = ObjectProperty(None) """Config Parser for this class. Instance of :class:`kivy.config.ConfigParser` """ def __init__(self, **kwargs): super(DesignerSettings, self).__init__(*kwargs) self.register_type("list", SettingList) self.register_type("shortcut", SettingShortcut) def load_settings(self): """This function loads project settings """ self.config_parser = ConfigParser(name="DesignerSettings") DESIGNER_CONFIG = os.path.join(get_kivy_designer_dir(), DESIGNER_CONFIG_FILE_NAME) _dir = os.path.dirname(designer.__file__) _dir = os.path.split(_dir)[0] DEFAULT_CONFIG = os.path.join(_dir, DESIGNER_CONFIG_FILE_NAME) if not os.path.exists(DESIGNER_CONFIG): shutil.copyfile(DEFAULT_CONFIG, DESIGNER_CONFIG) self.config_parser.read(DESIGNER_CONFIG) self.config_parser.upgrade(DEFAULT_CONFIG) # creates a panel before insert it to update code input theme list panel = self.create_json_panel( "Kivy Designer Settings", self.config_parser, os.path.join(_dir, "designer", "settings", "designer_settings.json"), ) uid = panel.uid if self.interface is not None: self.interface.add_panel(panel, "Kivy Designer Settings", uid) # loads available themes for child in panel.children: if child.id == "code_input_theme_options": child.items = styles.get_all_styles() # tries to find python and buildozer path if it's not defined path = self.config_parser.getdefault("global", "python_shell_path", "") if path.strip() == "": self.config_parser.set("global", "python_shell_path", sys.executable) self.config_parser.write() buildozer_path = self.config_parser.getdefault("buildozer", "buildozer_path", "") if buildozer_path.strip() == "": buildozer_path = find_executable("buildozer") if buildozer_path: self.config_parser.set("buildozer", "buildozer_path", buildozer_path) self.config_parser.write() self.add_json_panel( "Buildozer", self.config_parser, os.path.join(_dir, "designer", "settings", "buildozer_settings.json") ) self.add_json_panel( "Hanga", self.config_parser, os.path.join(_dir, "designer", "settings", "hanga_settings.json") ) self.add_json_panel( "Keyboard Shortcuts", self.config_parser, os.path.join(_dir, "designer", "settings", "shortcuts.json") ) def on_config_change(self, *args): """This function is default handler of on_config_change event. """ self.config_parser.write() super(DesignerSettings, self).on_config_change(*args)
class mainApp(App): def build(self): Window.clearcolor = (228. / 255., 228. / 255., 228. / 255., 1) self.title = "GrunwaldCalc" Window.minimum_width = 300 Window.minimum_height = 200 self.config = ConfigParser() self.config.read("config.ini") self.config.adddefaultsection("Settings") self.config.setdefault("Settings", "Language", locale.getdefaultlocale()[0]) self.language = self.config.getdefault("Settings", "Language", locale.getdefaultlocale()[0]) self.settings = Settings() self.day_calc = DayCalc.Calculate() self.date_finder = DateFinder.WikiScrape() self.day_calc.changeLanguage(self.language) self.date_finder.changeLanguage(self.language) self.container = BoxLayout(orientation="vertical") self.search_layout = BoxLayout(orientation="horizontal", size_hint=(1, 0.25), height=100) self.results_layout = AnchorLayout(anchor_y="top") self.container.add_widget(self.search_layout) self.container.add_widget(self.results_layout) try: with open("./languages/" + self.language + ".lang", encoding="UTF-8") as language_file: self.language_file = json.load(language_file) except FileNotFoundError: self.language = "en_US" with open("./languages/" + self.language + ".lang", encoding="UTF-8") as language_file: self.language_file = json.load(language_file) self.search_box = TextInput(hint_text=(self.language_file["hint"]), size_hint=(0.7, None), height=50, multiline=False) self.search_button = Button(text=self.language_file["button-text"], size_hint=(0.3, None), height=50) self.search_layout.add_widget(self.search_box) self.search_layout.add_widget(self.search_button) self.search_box.bind(on_text_validate=self.start_main) self.search_button.bind(on_press=self.start_main) return self.container def start_main(self, instance): text_value = ''.join(char for char in self.search_box.text if char.isnumeric()) if 4 < len(text_value) < 9: self.results_layout.clear_widgets() self.date = self.day_calc.findWeekday(text_value) self.result_label = Label( text=self.language_file["single-date"].format(self.date), markup=True) self.results_layout.add_widget(self.result_label) else: self.results_layout.clear_widgets() try: self.event_dates = (self.date_finder.findEventDate( self.search_box.text)) self.event_weekdays = [] for date in self.event_dates: self.event_weekdays.append( self.day_calc.findWeekday(self.event_dates[date])) if len(self.event_dates) == 2: self.result_label = Label( text=self.language_file["from-to-date"].format( self.event_dates['from'], self.event_weekdays[0], self.event_dates['to'], self.event_weekdays[1]), markup=True, size_hint=(1, None)) self.result_label.text_size = (self.results_layout.width - 40, self.results_layout.height) self.results_layout.add_widget(self.result_label) else: self.result_label = Label( text=self.language_file["from-to-date"].format( self.event_dates['date'], self.event_weekdays[0]), markup=True, size_hint=(1, None)) self.result_label.text_size = (self.results_layout.width - 40, self.results_layout.height) self.results_layout.add_widget(self.result_label) except LookupError: self.result_label = Label( text=self.language_file["lookup-error"], markup=True) self.results_layout.add_widget(self.result_label)
9600 ], "ports": [ "/dev/ttyACM0", "/dev/ttyAMA0" ], "baudratePreference": null } }''' if __name__ == '__main__': from octopipanel import OctoPiPanelApp from kivy.config import ConfigParser app = OctoPiPanelApp() path = app.get_application_config() print('config path: ', path) config = ConfigParser('pre-load') config.read(path) api_key = config.get('server', 'api-key') url = config.getdefault('server', 'url', 'http://octopi.local') print('using url:', url) print('using api-key:', api_key) c = OctoPrintClient(url, api_key) print('stat:', c.get_status()) print('con:', c.get_connection()) print('job:', c.get_job())