Initial GUI-Development progress - 2022-02-26-16:42

This commit is contained in:
janis
2022-02-26 16:44:03 +01:00
parent f3b47e0f5b
commit 1a60b68461
10 changed files with 161 additions and 114 deletions

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@@ -5,14 +5,4 @@ This module configures PCs but relies heavily on external modules that are inclu
class ConfigCreator:
def __init__(self):
print("""
Welcome to the PC-Configurator!
--------------------------------
We still need a couple of informations so we can make sure you get the best configuration possible!
No more questions? Let's start!
""")
print("")

View File

@@ -1,45 +0,0 @@
import bin.lib.csv_parsers
import requests
import datetime
cvr = bin.lib.csv_parsers.CsvRead()
cvw = bin.lib.csv_parsers.CsvWrite()
class PriceExtractor:
def __init__(self):
def update_all_prices(self, folder):
self.digitec_extractor()
def digitec_extractor(self):
"""Run through the entire list of links specified in the csv file that was selected either when loading the
function or when specified through the method \"readfile\". NOTE: This method does not require any additional
arguments and also does run through the entire file!"""
while
while self.__productnumber < self.__productcount:
self.__ingest = self.__raw_list.pop(0)
self.__website = self.__ingest.pop(1)
self.__productnumber = int(self.__ingest.pop(0))
print("fetching data... This step might take a couple of seconds")
self.__res = requests.get(self.__website)
print("recieved data from", self.__website)
self.__check = str(self.__res)
if self.__check == "<Response [404]>":
print("Ressource unavailable, skipping..")
else:
self.__request_done = self.__res.text
self.__priceIdx = self.__request_done.index('property="product:price:amount')
self.__raw_price = self.__request_done[self.__priceIdx + 41:self.__priceIdx + 60]
self.__price_extract = ""
for buchstabe in self.__raw_price:
if buchstabe == "\"":
break
else:
self.__price_extract += buchstabe
self.__price = float(self.__price_extract)
print("The price is following: ", self.__price, "CHF\n")
with open("../../data/prices.csv", "a") as pricedata:
writing = csv.writer(pricedata, delimiter=',', quoting=csv.QUOTE_MINIMAL)
writing.writerow([self.__productnumber, self.__price])

0
data/config.csv Normal file
View File

View File

@@ -1,5 +1,5 @@
version from,2022-02-17 09:30:53.233664
1,559.0
version from,2022-02-26 11:06:52.832345
1,495.0
2,290.0
3,9.2
3,9.3
4,359.0
1 version from 2022-02-17 09:30:53.233664 2022-02-26 11:06:52.832345
2 1 559.0 495.0
3 2 290.0 290.0
4 3 9.2 9.3
5 4 359.0 359.0

32
dev_tools/hotreloader.py Normal file
View File

@@ -0,0 +1,32 @@
from kivy.lang import Builder
from kivymd.app import MDApp
KV = '''
#:import KivyLexer kivy.extras.highlight.KivyLexer
#:import HotReloadViewer kivymd.utils.hot_reload_viewer.HotReloadViewer
BoxLayout:
HotReloadViewer:
size_hint_x: .3
path: app.path_to_kv_file
errors: True
errors_text_color: 1, 1, 0, 1
errors_background_color: app.theme_cls.bg_dark
'''
class Example(MDApp):
path_to_kv_file = "../gui_main/configurator.kv"
def build(self):
self.theme_cls.theme_style = "Dark"
return Builder.load_string(KV)
def update_kv_file(self, text):
with open(self.path_to_kv_file, "w") as kv_file:
kv_file.write(text)
Example().run()

16
gui_main/configurator.kv Normal file
View File

@@ -0,0 +1,16 @@
MDScreen:
name: "Config"
md_bg_color: (0,0,1,0.5)
MDFloatLayout:
cols:1
MDFlatButton:
text: "Back"
pos_hint: {"x": 0.15, "y": 0.1}
font_size: 20
md_bg_color: (0, 0, 0, 1)
size_hint: 0.1, 0.05
on_release:
app.root.current = "HomeScreen"
root.manager.transition.direction = "left"
MDFlatButton:
text: "Test"

31
gui_main/main-gui.kv Normal file
View File

@@ -0,0 +1,31 @@
Home:
name: "HomeScreen"
radius: [25, 25, 25, 25]
md_bg_color: app.theme_cls.accent_color
GridLayout:
cols: 1
Label:
text: "PC-Configurator"
font_size: 50
color: (50, 50, 255, 1)
bold: True
italic: True
FloatLayout:
GridLayout:
cols: 3
size_hint: 0.94, 0.8
pos_hint: {"x":0.03, "y":0.1}
Button:
text: "Configure"
background_color: (0.1, 0.1, 1, 0.5)
on_release:
app.root.current = "Config"
root.manager.transition.direction = "right"
Button:
text: "Settings"
background_color: (0.1, 0.1, 1, 0.5)
on_release:
root.test()
Button:
text: "Quit"
background_color: (0.1, 0.1, 1, 0.5)

24
gui_main/splashscreen.kv Normal file
View File

@@ -0,0 +1,24 @@
MDScreen:
name: "Splash"
on_enter: self.ids.progress.start()
md_bg_color: app.theme_cls.accent_color
GridLayout:
cols: 1
Label:
text: "PC-Configurator"
bold: True
italic: True
font_size: 40
color: app.theme_cls.primary_color
FloatLayout:
BoxLayout:
pos_hint: {"center_y": .3, "center_x": .5}
padding: "10dp"
size_hint_x: .7
MDProgressBar:
id: progress
orientation: "horizontal"
type: "indeterminate"
running_duration: 1
catching_duration: 1

View File

@@ -1,69 +1,62 @@
# This is the main runtime of the simplePCBuilding-PC-Configurator
# IMPORTS
import time
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.uix.popup import Popup
from kivy.app import App
from kivy.lang import Builder
from kivy.clock import mainthread
from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen
from kivy.clock import Clock
version = "alpha 1.0"
print("""
--------------------------------------------------------------------
WELCOME TO THE simplePCBuilding PC CONFIGURATOR
YOU ARE CURRENTLY RUNNING VERSION""", version, """
---------------------------------------------------------------------""")
time.sleep(1)
print("""
print(f"Launching the simplePCBuilding-PC-Configurator Version {version}!...\nthis might take some time...")
Please note that this software is developed and distributed by simplePCBuilding
and as such you are not allowed to sell and / or distribute this software on
your own. If you want to share this project with others, please refer to our
guidelines and do only provide the official download-link.
""")
time.sleep(1)
print("""This software is split up into different modules you can use.
Select the appropriate one:
MODULE LIST:
- Configurator (c)
- Updater (u)
- Package manager (p)
- Quit (q)
###########
# SCREENS
###########
To select a module, please type the correct letter (found in brackets behind
the module name in the above list) in through your keyboard
""")
i = input("please choose the module you want to use: ")
go = 1
while go == 1:
if i == "c":
print("starting configurator...")
go = 0
class Splash(MDScreen):
pass
elif i == "u":
print("starting updater...")
go = 0
elif i == "p":
print("starting package manager...")
go = 0
class Home(MDScreen):
def test(self):
print("class")
elif i == "q":
print("killing processes....")
time.sleep(0.5)
print("Terminating...")
go = 0
else:
print("\nUnknown entry, please retry.\n ")
time.sleep(0.5)
print("""This software is split up into different modules you can use.
Select the appropriate one:
MODULE LIST:
- Configurator (c)
- Updater (u)
- Package manager (p)
- Quit (q)
class ConfigureScreen(MDScreen):
pass
To select a module, please type the correct letter (found in brackets behind
the module name in the above list) in through your keyboard
""")
i = input("Please select a module and type in the corresponding letter: ")
#################
# SCREEN-MANAGER
#################
class PCConfigurator(MDApp):
global screen_manager
screen_manager = ScreenManager()
def build(self):
self.title = "simplePCBuilding-PC-Configurator"
self.theme_cls.primary_palette = "Blue"
self.theme_cls.accent_palette = "BlueGray"
# self.icon = "./BiogasControllerAppLogo.png"
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"))
return screen_manager
def on_start(self):
Clock.schedule_once(self.launch_app, 1)
def launch_app(self, dt):
screen_manager.current = "HomeScreen"
if __name__ == "__main__":
PCConfigurator().run()