From 355b368b31c3b20e147e04450a1fa9f2c4ba764f Mon Sep 17 00:00:00 2001 From: janis Date: Mon, 16 May 2022 17:01:13 +0200 Subject: [PATCH] added logger and set up settings screen --- beta_modules/top_games.py | 4 +-- bin/config/os.py | 27 +++++++++++++++++++ bin/modules/configurator.py | 7 +++++ config/settings.ini | 6 +++++ gui_main/settings.kv | 8 ++++++ simplePCBuilding-PC-Configurator-alpha1.py | 30 +++++++++++++++++++--- 6 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 config/settings.ini diff --git a/beta_modules/top_games.py b/beta_modules/top_games.py index 48a04af..951fbc6 100644 --- a/beta_modules/top_games.py +++ b/beta_modules/top_games.py @@ -31,12 +31,10 @@ class TopGamesUpdater: break else: self.__output += self.letter + print(self.__output) self.__return_value.append(self.__output) except ValueError: self.__go = 0 return self.__return_value - - -TopGamesUpdater().updater() diff --git a/bin/config/os.py b/bin/config/os.py index e69de29..1095437 100644 --- a/bin/config/os.py +++ b/bin/config/os.py @@ -0,0 +1,27 @@ +import bin.lib.csv_parsers + + +cvr = bin.lib.csv_parsers.CsvRead() + + +class OSAssigner: + def __init__(self): + self.__budget = 0 + self.__import = [] + self.__extracted = "" + self.__price = [] + + def os_chooser(self, budget, os_choice, os_price_file, availability=False): + self.__budget = budget + self.__import = cvr.importing(os_price_file) + for self.item in self.__import: + self.__price.append(self.item.pop(1)) + + if os_choice == "Windows 10 Home" or "Windows 11 Home" and availability is False: + self.__budget -= self.__price.pop(0) + elif os_choice == "Windows 10 Pro" or "Windows 11 Pro" and availability is False: + self.__budget -= self.__price.pop(1) + else: + pass + + return self.__budget diff --git a/bin/modules/configurator.py b/bin/modules/configurator.py index cc098d7..868cf7b 100644 --- a/bin/modules/configurator.py +++ b/bin/modules/configurator.py @@ -2,6 +2,8 @@ This module configures PCs but relies heavily on external modules that are included with the package. """ import bin.lib.csv_parsers +import bin.config.os +import bin.config.case cvr = bin.lib.csv_parsers.CsvRead() @@ -11,6 +13,11 @@ cvw = bin.lib.csv_parsers.CsvWrite() class ConfigCreator: def __init__(self): self.__info_import = [] + self.__budget = 0 + self.__os_choice = "" + self.__os_path = "" def start_config(self, path): self.__info_import = cvr.importing(path) + self.__budget = bin.config.os.OSAssigner().os_chooser(self.__budget, self.__os_choice, self.__os_path) + self.__budget = bin.config.case diff --git a/config/settings.ini b/config/settings.ini new file mode 100644 index 0000000..481160e --- /dev/null +++ b/config/settings.ini @@ -0,0 +1,6 @@ +[Info] +version = 0.1 +subVersion = -dev1 + +[Dev Settings] +log_level = DEBUG \ No newline at end of file diff --git a/gui_main/settings.kv b/gui_main/settings.kv index e69de29..afa6cc7 100644 --- a/gui_main/settings.kv +++ b/gui_main/settings.kv @@ -0,0 +1,8 @@ +ConfigureScreen: + name: "Settings" + GridLayout: + cols: 1 + Button: + text: "back" + on_release: + app.root.current = "HomeScreen" \ No newline at end of file diff --git a/simplePCBuilding-PC-Configurator-alpha1.py b/simplePCBuilding-PC-Configurator-alpha1.py index e504ad0..750c15c 100644 --- a/simplePCBuilding-PC-Configurator-alpha1.py +++ b/simplePCBuilding-PC-Configurator-alpha1.py @@ -1,6 +1,8 @@ # This is the main runtime of the simplePCBuilding-PC-Configurator # IMPORTS -import time +import datetime +import configparser +import logging from kivy.uix.screenmanager import ScreenManager from kivy.uix.popup import Popup from kivy.lang import Builder @@ -9,7 +11,26 @@ from kivymd.app import MDApp from kivymd.uix.screen import MDScreen from kivy.clock import Clock -version = "alpha 1.0" +config = configparser.ConfigParser() +config.read('./config/settings.ini') + +version_app = f"{config['Info']['version']}{config['Info']['subVersion']}" + +################################################################ +# LOGGER SETUP +################## +logging.basicConfig(level=logging.DEBUG, filename="./log/main_log.log", filemode="w") +logs = f"./log/{datetime.datetime.now()}-log-main.log" +logger = logging.getLogger(__name__) +handler = logging.FileHandler(logs) +formatter = logging.Formatter("%(levelname)s - %(asctime)s - %(name)s: %(message)s -- %(lineno)d") +handler.setFormatter(formatter) +logger.addHandler(handler) + +logger.setLevel(config['Dev Settings']['log_level']) +logger.info(f"Logger initialized, app is running Version: {version_app}") +################################################################ + ########### @@ -45,15 +66,18 @@ class PCConfigurator(MDApp): screen_manager.add_widget(Builder.load_file("./gui_main/splashscreen.kv")) screen_manager.add_widget(Builder.load_file("./gui_main/main-gui.kv")) screen_manager.add_widget(Builder.load_file("./gui_main/configurator.kv")) - + screen_manager.add_widget(Builder.load_file("./gui_main/settings.kv")) return screen_manager def on_start(self): + logger.info("App mainframe started, executing checks") Clock.schedule_once(self.launch_app, 1) def launch_app(self, dt): + # Here the launch script will be launched and the screen will automatically be changed to the home screen screen_manager.current = "HomeScreen" if __name__ == "__main__": + logger.info("Launching App...") PCConfigurator().run()