-
Notifications
You must be signed in to change notification settings - Fork 0
/
settings_panel.py
181 lines (130 loc) · 6.89 KB
/
settings_panel.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
import kivy
kivy.require('1.11.1')
from kivy.app import App
from kivy.lang import Builder
from kivy.config import Config
from kivy.config import ConfigParser
from kivy.uix.settings import Settings, SettingItem, SettingsPanel, SettingTitle
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.graphics import Color, Point
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition, SlideTransition
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.popup import Popup
from kivy.uix.recycleboxlayout import RecycleBoxLayout
from kivy.uix.recycleview import RecycleView
import kivy.properties as kivy_property
from kivy.uix.behaviors import FocusBehavior
from kivy.uix.recycleview.layout import LayoutSelectionBehavior
from kivy.uix.recycleview.views import RecycleDataViewBehavior
from kivy.uix.dropdown import DropDown
from tinydb import TinyDB, Query, where
db_rezepte = TinyDB('Datenbanken/Rezepte.json' , sort_keys=True, indent=4, separators=(',', ': '))
db_settings = TinyDB('Datenbanken/Settings.json' , sort_keys=True, indent=4, separators=(',', ': '))
class Fachinhalt_Setting(BoxLayout):
text = kivy_property.StringProperty()
fach_id = kivy_property.StringProperty()
current_fachinhalt = kivy_property.StringProperty()
drinks_list = kivy_property.ListProperty()
def __init__(self, **kwargs):
super(Fachinhalt_Setting, self).__init__(**kwargs)
table_spirituosen = db_rezepte.table( 'spirituosen' )
if not 'fachlader_nr' in globals():
global fachlader_nr
fachlader_nr = 1
self.fach_id = str(fachlader_nr)
print ('Aktuelle Fachinhalte werden geladen von Fach ' + str(fachlader_nr))
gesetzt = False
drinks_new_list = []
for json_object in table_spirituosen:
drinks_new_list.append(json_object.get("name") + ", " +
str(json_object.get("vol_prozent")).replace(".", ",") + "% vol., " +
str(json_object.get("volumen")) + "ml")
drinks_new_list.append("< Fach leer >")
self.drinks_list = drinks_new_list
result_fachinhalte = db_settings.get(where('name') == 'fachinhalte')
id = result_fachinhalte.get("slot_" + str(fachlader_nr))
print("Aktuelle ID des Drinks in Fach " + str(fachlader_nr) + ": ")
print(id)
if id != "null" and not gesetzt:
doc = db_rezepte.table( 'spirituosen' ).get(doc_id = id)
self.current_fachinhalt = doc.get("name") + ", " + str(doc.get("vol_prozent")) + "% vol., " + str(doc.get("volumen")) + "ml"
gesetzt = True
elif not gesetzt:
self.current_fachinhalt = "< Fach leer >"
fachlader_nr = fachlader_nr + 1
def on_spinner_select(self, text, fach_id):
print (fach_id)
print (text)
result_fachinhalte = db_settings.get(where('name') == 'fachinhalte')
id = result_fachinhalte.get("slot_" + fach_id)
print("Aktuelle ID des Drinks in Fach " + fach_id + ": ")
print(id)
splitter_drink = re.split(", |% vol., |ml", text)
table_spirituosen = db_rezepte.table('spirituosen')
result_drinks = table_spirituosen.get((where('name') == splitter_drink[0]) & (where('vol_prozent') == float(str(splitter_drink[1]).replace(',', '.'))) & (where('volumen') == int(splitter_drink[2])))
if result_drinks is not None:
id = result_drinks.doc_id
print(result_drinks)
print(id)
db_settings.update({"slot_" + fach_id : id}, where('name') == 'fachinhalte')
class Calibration_Setting(BoxLayout):
text = kivy_property.StringProperty()
fach_id = kivy_property.StringProperty()
fach_id_plus = kivy_property.StringProperty()
fach_id_minus = kivy_property.StringProperty()
fach_id_plusplus = kivy_property.StringProperty()
fach_id_minusminus = kivy_property.StringProperty()
kalibrierungswert = kivy_property.StringProperty()
color = kivy_property.ListProperty([1, 1, 1, 1])
def __init__(self, **kwargs):
super(Calibration_Setting, self).__init__(**kwargs)
if not 'fachkalibrierung_nr' in globals():
global fachkalibrierung_nr
fachkalibrierung_nr = 1
self.fach_id = "Kalibrierung_Fach_" + str(fachkalibrierung_nr)
self.fach_id_plus = "Kalibrierung_plus_Fach_" + str(fachkalibrierung_nr)
self.fach_id_minus = "Kalibrierung_minus_Fach_" + str(fachkalibrierung_nr)
self.fach_id_plusplus = "Kalibrierung_plusplus_Fach_" + str(fachkalibrierung_nr)
self.fach_id_minusminus = "Kalibrierung_minusminus_Fach_" + str(fachkalibrierung_nr)
print ('Aktuelle Kalibrierungen werden geladen von Fach ' + str(fachkalibrierung_nr))
result_kalibrierung = db_settings.get(where('name') == 'kalibrierung')
kalibrierungswert = result_kalibrierung.get("slot_" + str(fachkalibrierung_nr))
print("Aktueller Kalibrierungswert der Spirituose in Fach " + str(fachkalibrierung_nr) + ": ")
print(kalibrierungswert)
self.kalibrierungswert = str(kalibrierungswert)
fachkalibrierung_nr = fachkalibrierung_nr + 1
def on_kalibration_select(self, id):
id_bereinigt = str(id).replace('Kalibrierung_','').replace('_Fach_','')
fach_nr = id_bereinigt.replace('plus','').replace('minus','').replace('minusminus','').replace('plusplus','')
plus_or_minus = id_bereinigt.replace(fach_nr, '')
print(fach_nr)
wert = int(self.kalibrierungswert)
print(wert)
if plus_or_minus == 'plus':
wert = wert + 1
elif plus_or_minus == 'minus':
wert = wert - 1
elif plus_or_minus == 'plusplus':
wert = wert + 10
elif plus_or_minus == 'minusminus':
wert = wert - 10
print(wert)
self.color = [1, 0, 0, 1]
self.kalibrierungswert = str(wert)
def on_save_select(self, id):
fach_id = str(id).replace('Kalibrierung_Fach_','')
kalibrierungswert = self.kalibrierungswert
print(fach_id)
print(kalibrierungswert)
print ('Aktuelle Kalibrierungen werden aktualisiert von Fach ' + str(fach_id))
db_settings.update({"slot_" + fach_id : int(kalibrierungswert)}, where('name') == 'kalibrierung')
result_kalibrierung = db_settings.get(where('name') == 'kalibrierung')
kalibrierungswert = result_kalibrierung.get("slot_" + str(fach_id))
print("Neuer Kalibrierungswert der Spirituose in Fach " + fach_id + ": ")
print(kalibrierungswert)
self.color = [1, 1, 1, 1]
self.kalibrierungswert = str(kalibrierungswert)