Skip to content

Commit

Permalink
Added implementation of alternate switch
Browse files Browse the repository at this point in the history
  • Loading branch information
eeintech committed Feb 22, 2023
1 parent 45a94e0 commit e8278be
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 16 deletions.
2 changes: 2 additions & 0 deletions kintree/config/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,8 @@ def set_enable_flag(key: str, value: bool):
user_settings['ENABLE_INVENTREE'] = value
elif key == 'alternate':
user_settings['ENABLE_ALTERNATE'] = value
else:
print(f'[INFO] Key {key} does not exist')

# Save
config_interface.dump_file(user_settings, os.path.join(CONFIG_USER_FILES, 'general.yaml'))
Expand Down
4 changes: 2 additions & 2 deletions kintree/gui/views/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
'nav_rail_icon_size': 40,
'nav_rail_text_size': 16,
'nav_rail_padding': 10,
'textfield_width': 600,
'textfield_dense': False,
'textfield_width': 400,
'textfield_dense': True,
'textfield_space_after': 3,
'dropdown_width': 600,
'dropdown_dense': False,
Expand Down
118 changes: 104 additions & 14 deletions kintree/gui/views/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,18 +190,22 @@ def show_error_dialog(self, message):
if 'create' in self.fields:
self.enable_create(True)

def process_enable(self, e, ignore=['enable']):
disable = True
if e.data.lower() == 'true':
disable = False
def process_enable(self, e, disable=None, ignore=['enable']):
disabled = False
if e.data.lower() == 'false':
disabled = True

# print(e.control.label, not(disable))
# Overwrite
if disable is not None:
disabled = disable

# print(e.control.label, not disabled)
key = e.control.label.lower()
settings.set_enable_flag(key, not disable)
settings.set_enable_flag(key, not disabled)

for name, field in self.fields.items():
if name not in ignore:
field.disabled = disable
field.disabled = disabled
field.update()
self.push_data(e)

Expand Down Expand Up @@ -372,10 +376,41 @@ class InventreeView(MainView):

title = 'InvenTree'
fields = {
'enable': ft.Switch(label='InvenTree', value=settings.ENABLE_INVENTREE, on_change=None),
'alternate': ft.Switch(label='Alternate', value=False, disabled=True),
'load_categories': ft.ElevatedButton('Reload InvenTree Categories', height=36, icon=ft.icons.REPLAY, disabled=True),
'Category': DropdownWithSearch(label='Category', dr_width=400, sr_width=400, dense=True, options=[]),
'enable': ft.Switch(
label='InvenTree',
value=settings.ENABLE_INVENTREE,
),
'alternate': ft.Switch(
label='Alternate',
value=settings.ENABLE_ALTERNATE if settings.ENABLE_INVENTREE else False,
disabled=not settings.ENABLE_INVENTREE,
),
'load_categories': ft.ElevatedButton(
'Reload InvenTree Categories',
height=36,
icon=ft.icons.REPLAY,
disabled=True,
),
'Category': DropdownWithSearch(
label='Category',
dr_width=GUI_PARAMS['textfield_width'],
sr_width=GUI_PARAMS['textfield_width'],
dense=GUI_PARAMS['textfield_dense'],
disabled=settings.ENABLE_ALTERNATE,
options=[],
),
'Existing Part ID': ft.TextField(
label='Existing Part ID',
width=GUI_PARAMS['textfield_width'],
dense=GUI_PARAMS['textfield_dense'],
visible=settings.ENABLE_INVENTREE and settings.ENABLE_ALTERNATE,
),
'Existing Part IPN': ft.TextField(
label='Existing Part IPN',
width=GUI_PARAMS['textfield_width'],
dense=GUI_PARAMS['textfield_dense'],
visible=settings.ENABLE_INVENTREE and settings.ENABLE_ALTERNATE,
),
}
category_separator = '/'

Expand All @@ -394,9 +429,36 @@ def sanitize_data(self):
if category_tree:
self.data['Category'] = self.clean_split_category_tree(category_tree)

def process_enable(self, e, ignore=['enable', 'alternate', 'load_categories']):
return super().process_enable(e, ignore)
def process_enable(self, e):
if e.data.lower() == 'false':
self.fields['alternate'].value = False
self.fields['alternate'].update()
self.process_alternate(e, value=False)
return super().process_enable(e, ignore=['enable', 'load_categories'])

def process_alternate(self, e, value=None):
if value:
visible = value
else:
visible = False
if e.data.lower() == 'true':
visible = True
if visible:
self.build_snackbar(True, 'Enter Existing Part ID or Part IPN')
self.show_dialog()
settings.set_enable_flag('alternate', visible)
self.fields['Existing Part ID'].visible = visible
self.fields['Existing Part ID'].update()
self.fields['Existing Part IPN'].visible = visible
self.fields['Existing Part IPN'].update()

if visible:
self.fields['Category'].value = None
self.fields['Category'].disabled = visible
self.fields['Category'].update()

self.push_data(e)

def reload_categories(self, e):
# TODO: Implement pulling categories from InvenTree
print('Loading categories from InvenTree...')
Expand Down Expand Up @@ -429,8 +491,12 @@ def build_tree(tree, left_to_go, level):
self.fields['Category'].options = category_options
self.fields['Category'].on_change = self.push_data

self.fields['alternate'].on_change = self.process_alternate
self.fields['load_categories'].on_click = self.reload_categories

self.fields['Existing Part ID'].on_change = self.push_data
self.fields['Existing Part IPN'].on_change = self.push_data

self.column = ft.Column(
controls=[
ft.Row(),
Expand All @@ -441,7 +507,11 @@ def build_tree(tree, left_to_go, level):
self.fields['load_categories'],
]
),
self.fields['Category'],
ft.Row([self.fields['Category'],]),
ft.Row([
self.fields['Existing Part ID'],
self.fields['Existing Part IPN'],
]),
],
)

Expand Down Expand Up @@ -520,6 +590,26 @@ def build_column(self):

self.column.controls.extend(kicad_inputs)

def did_mount(self):
if 'InvenTree' in data_from_views:
# Get value of alternate switch
alternate = data_from_views['InvenTree'].get('alternate', False)
e = ft.ControlEvent(
target=None,
name='did_mount_kicad_enable',
data='true' if alternate else 'false',
page=self.page,
control=self.fields['enable'],
)
self.process_enable(e, disable=alternate)
self.fields['enable'].disabled = alternate
if alternate:
self.fields['enable'].value = False
self.build_snackbar(False, 'InvenTree Alternate switch is enabled')
self.show_dialog()

return super().did_mount()


class CreateView(MainView):
'''Create view'''
Expand Down

0 comments on commit e8278be

Please sign in to comment.