From 413abc6dfd58a3a328f7f9dbf0624ed1f8fe0818 Mon Sep 17 00:00:00 2001 From: ovosimpatico Date: Sun, 12 Nov 2023 01:06:52 -0300 Subject: [PATCH] main menu implemented --- .gitignore | 4 +--- db.json | 16 ++++++++++++++ libs.py | 49 +++++++++++++++++++++++++++++++++++++++++- main.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 127 insertions(+), 5 deletions(-) create mode 100644 db.json diff --git a/.gitignore b/.gitignore index dea26fe..5e49b42 100644 --- a/.gitignore +++ b/.gitignore @@ -158,6 +158,4 @@ cython_debug/ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ - -db.json \ No newline at end of file +#.idea/ \ No newline at end of file diff --git a/db.json b/db.json new file mode 100644 index 0000000..d00f064 --- /dev/null +++ b/db.json @@ -0,0 +1,16 @@ +{ + "children": [ + { + "birth": "11/11/2006", + "id": 1, + "name": "Josias" + }, + { + "birth": "24/07/2008", + "id": 2, + "name": "Chris" + } + ], + "password": "pass", + "username": "admin" +} \ No newline at end of file diff --git a/libs.py b/libs.py index 2df712c..5346d81 100644 --- a/libs.py +++ b/libs.py @@ -33,4 +33,51 @@ def validate_login(username, password): if password == read_json_value("password"): return True return False - return False \ No newline at end of file + return False + +def get_children(): + data = read_json() + children = [] + + if 'children' in data: + for child in data['children']: + children.append([child['id'], child['name'], child['birth']]) + return children + +def get_child_by_name(name): + data = read_json() + + if 'children' in data: + for child in data['children']: + if child['name'] == name: + return [child['id'], child['name'], child['birth']] + return None + +def remove_child_by_id(child_id): + data = read_json() + if 'children' in data: + updated_children = [] + for child in data['children']: + if child['id'] != child_id: + updated_children.append(child) + + data['children'] = updated_children + + write_json('children', data['children']) + + +def add_child(child_id, name, birth): + data = read_json() + + new_child = { + "id": child_id, + "name": name, + "birth": birth + } + + if 'children' not in data: + data['children'] = [] + + data['children'].append(new_child) + + write_json('children', data['children']) \ No newline at end of file diff --git a/main.py b/main.py index dc4bdc2..1833318 100644 --- a/main.py +++ b/main.py @@ -41,5 +41,66 @@ def main(): print("Login sucessful") else: print("Login unsucessful") +########################################################################################## +sg.theme('BlueMono') -main() \ No newline at end of file +info_col = [[sg.T('Name: '), sg.T('', key='-NAME-')], + [sg.T('Birth: '), sg.T('', key='-BIRTH-')], + [sg.T('ID: '), sg.T('', key='-ID-')]] + + +layout = [ + [sg.Text('Children')], + [sg.Listbox(values=[row[1] for row in get_children()], size=(30, 10), key='-CHILDREN-', enable_events=True), sg.Col(info_col)], + [sg.Button('Add'), sg.Button('Remove')] +] + +window = sg.Window('Children App', layout) + +while True: + event, values = window.read() + if event == sg.WIN_CLOSED: + break + if event == '-CHILDREN-': + selected = values['-CHILDREN-'] + id, name, birth = get_child_by_name(selected[0]) + + window['-NAME-'].update(name) + window['-BIRTH-'].update(birth) + window['-ID-'].update(id) + + if event == 'Add': + add_layout = [ + [sg.T('Name')], + [sg.In(key='-NAME-')], + [sg.T('Birth')], + [sg.In(key='-BIRTH-')], + [sg.T('ID')], + [sg.In(key='-ID-')], + [sg.Button(button_text="OK")] + ] + + add_window = sg.Window('Add Child', add_layout) + add_event, add_values = add_window.read() + + if add_event == 'OK': + add_child(int(add_values['-ID-']), add_values['-NAME-'], add_values['-BIRTH-']) + window['-CHILDREN-'].update(values=[row[1] for row in get_children()]) + add_window.close() + + if event == 'Remove': + + id_layout = [[sg.T('Enter ID to remove')], + [sg.In(key='-ID-')], + [sg.Button(button_text="OK")]] + + id_window = sg.Window('Remove Child', id_layout) + id_event, id_values = id_window.read() + + if id_event == 'OK': + remove_child_by_id(int(id_values['-ID-'])) + window['-CHILDREN-'].update(values=[row[1] for row in get_children()]) + + id_window.close() + +window.close()