-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
132 lines (108 loc) · 5.4 KB
/
Copy pathmain.py
File metadata and controls
132 lines (108 loc) · 5.4 KB
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
from kivymd.app import MDApp
from kivymd.uix.button import MDFlatButton
from kivymd.uix.dialog import MDDialog
from kivymd.uix.list import OneLineAvatarIconListItem
from kivymd.uix.snackbar import Snackbar
from adapter.Connect2Broker import MqttManager
from screens.GF_PickerPlaceConfiguration import GF_PickerPlaceConfiguration
from pandas import read_sql_table, Series
from functools import partial
class SettingsConfirmation(OneLineAvatarIconListItem):
def set_icon(self, instance_check):
instance_check.active = True
check_list = instance_check.get_widgets(instance_check.group)
for check in check_list:
if check != instance_check:
check.active = False
class MainApp(MDApp):
def build_config(self, config):
config.setdefaults(
'base', {
'broker-ip': '10.42.0.1',
'broker-port': 1883,
'language': 'German'
}
)
config.setdefaults(
'config', {
'mqtt_topic': 'master01/tracking/config/+/abs_worker_positions',
'redundant_pattern': 'master01/tracking/config/, /abs_worker_positions',
'proposed_place_config_topic': 'master01/qr_position_setting/picker_place_config/+/proposal',
'redundant_patterns_proposed': 'master01/qr_position_setting/picker_place_config/, /proposal',
'persistant_left_place_config_topic': 'master01/tracking/config/left/abs_worker_positions',
'persistant_right_place_config_topic': 'master01/tracking/config/right/abs_worker_positions',
'redundant_patterns_persistant': 'master01/tracking/config/, /abs_worker_positions'
}
)
return
def build_settings(self, settings):
settings.add_json_panel('Settings', self.config, filename='.//config.json')
return
def on_config_change(self, config, section, key, value) -> None:
if config is self.config:
token = (section, key)
if token == ('base', 'language'):
self.__init_all_text()
if token in {('base', 'broker-ip'), ('base', 'broker-port')}:
self.__init_topic_management()
return
def get_translations(self) -> Series:
active_language = self.config.get('base', 'language')
statements_dict = read_sql_table('Dictionary', 'sqlite:///./gurkenflieger_app.db',
columns=['PhraseID', active_language])
return statements_dict.set_index(statements_dict.columns[0]).squeeze()
def __init_all_text(self) -> None:
statements = self.get_translations()
# print('language selected: {}'.format(statements))
self.root.ids['diagrams'].text = statements['diagrams']
self.root.ids['documentation'].text = statements['documentation']
self.root.ids['configuration'].text = statements['configuration']
self.root.ids['diagnosis'].text = statements['diagnosis']
# self.root.ids.configuration.children[0].ids.left_headline.text = statements.left_positions
# self.root.ids.configuration.children[0].ids.right_headline.text = statements.right_positions
return
def __get_translation_for(self, phrase_id: str) -> str:
statements = self.get_translations()
return statements[phrase_id]
def __init__(self, **kwargs):
super(MainApp, self).__init__(**kwargs)
# style of the app
self.theme_cls.primary_palette = "Blue"
self.role_dialog = None
self.right_wing_config = None
return
def select_role(self, button):
if not self.role_dialog:
dialog_items = [SettingsConfirmation(text=i) for i in ['Vorarbeiter', 'Entwickler']]
self.role_dialog = MDDialog(
title="Auswahl der Mitarbeiter-Rolle",
type="confirmation",
items=dialog_items,
buttons=[
MDFlatButton(text="CANCEL", text_color=self.theme_cls.primary_color),
MDFlatButton(text="OK", text_color=self.theme_cls.primary_color),
],
)
self.role_dialog.open()
def __init_topic_management(self):
# set the MQTT-configuration for the screens
self.root.ids.configuration.children[0].broker_ip_addr = \
self.config.get('base', 'broker-ip')
self.root.ids.configuration.children[0].broker_port = \
self.config.getint('base', 'broker-port')
self.root.ids.configuration.children[0].proposed_place_config_topic = \
self.config.get('config', 'proposed_place_config_topic')
self.root.ids.configuration.children[0].redundant_patterns_proposed = \
self.config.get('config', 'redundant_patterns_proposed').split(', ')
self.root.ids.configuration.children[0].persistant_left_place_config_topic = \
self.config.get('config', 'persistant_left_place_config_topic')
self.root.ids.configuration.children[0].persistant_right_place_config_topic = \
self.config.get('config', 'persistant_right_place_config_topic')
self.root.ids.configuration.children[0].redundant_patterns_persistant = \
self.config.get('config', 'redundant_patterns_persistant').split(', ')
return
def on_start(self):
self.__init_all_text()
self.__init_topic_management()
return
MainApp().run()