123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- import time
- from threading import Thread
- import PySimpleGUI
- from sqlalchemy.orm import sessionmaker
- from time_recoder.time_recoder_gui.time_recorder_gui_config import PAUSE_BUTTON_TEXT, START_BUTTON_TEXT, \
- STOP_BUTTON_TEXT, \
- STOP_BUTTON_INTRODUCTION_TEXT, PAUSE_BUTTON_INTRODUCTION_TEXT, WINDOW_SIZE, SELECT_TASK_INTRODUCTION_TEXT, \
- ADD_TASK_INTRODUCTION_TEXT, ADD_TASK_BUTTON_TEXT, NEW_TASK_TEXT_KEY, TASK_TREE_COMBO_NAME, TIMER_KEY
- from time_recoder import save_recorded_time_in_table
- from time_recoder.time_recoder_gui.time_recorder_task_handler import TaskHandler
- from time_recoder.time_recoder_gui.time_recorder_timer import Timer
- from time_recoder.time_recorder_database.create_db import ENGINE
- Session = sessionmaker(bind=ENGINE)
- taskHandler = TaskHandler()
- timer = Timer()
- def create_layout():
- return [
- [PySimpleGUI.Text(PAUSE_BUTTON_INTRODUCTION_TEXT)],
- [PySimpleGUI.Text(STOP_BUTTON_INTRODUCTION_TEXT)],
- [PySimpleGUI.Button(START_BUTTON_TEXT),
- PySimpleGUI.Button(PAUSE_BUTTON_TEXT),
- PySimpleGUI.Button(STOP_BUTTON_TEXT)],
- [PySimpleGUI.Text('', size=(8, 1), font=('Helvetica', 20), justification='center', key=TIMER_KEY)],
- [PySimpleGUI.Text(SELECT_TASK_INTRODUCTION_TEXT),
- PySimpleGUI.Combo(taskHandler.get_task_tree_name_strings(taskHandler.root_task),
- size=(30, 1),
- default_value='root',
- key=TASK_TREE_COMBO_NAME)],
- [PySimpleGUI.Text(ADD_TASK_INTRODUCTION_TEXT),
- PySimpleGUI.InputText(size=(15, 1), key=NEW_TASK_TEXT_KEY),
- PySimpleGUI.Button(ADD_TASK_BUTTON_TEXT)]
- ]
- def create_window(layout):
- return PySimpleGUI.Window('END_TR300 Arbeitserfassungstool ', layout=layout, size=WINDOW_SIZE)
- def window_is_closed(event):
- return event == PySimpleGUI.WIN_CLOSED
- def stop_button_is_pushed(event):
- return event == STOP_BUTTON_TEXT
- def start_button_is_pushed(event):
- return event == START_BUTTON_TEXT
- def pause_button_is_pushed(event):
- return event == PAUSE_BUTTON_TEXT
- def add_sub_task_button_is_pushed(event):
- return event == ADD_TASK_BUTTON_TEXT
- def event_loop(window):
- while True:
- event, values = window.read(timeout=10)
- window[TIMER_KEY].update(timer.get_value_string())
- if window_is_closed(event):
- break
- if start_button_is_pushed(event):
- print('Start Time')
- timer.start()
- if pause_button_is_pushed(event):
- print('Pause Timer Activated')
- timer.pause()
- if stop_button_is_pushed(event):
- worked_time_in_minutes = timer.get_passed_time() / 60
- selected_task_name = window.Element(TASK_TREE_COMBO_NAME).get()
- if selected_task_name:
- current_task = taskHandler.get_task_by_id(taskHandler.get_task_id(selected_task_name))
- current_branch = taskHandler.get_task_branch_as_string(current_task)
- try:
- save_recorded_time_in_table.save_recorded_time_in_table(worked_time_in_minutes, current_branch)
- timer.stop()
- print('Timer stopped recording for task: ' + selected_task_name.strip())
- except PermissionError:
- print("Error: couldn't write into table file. Please close any program that uses the table" +
- " and press 'Stop Timer' again")
- else:
- print('Please select a Task before stopping the timer')
- if add_sub_task_button_is_pushed(event):
- sub_task_name = window.Element(NEW_TASK_TEXT_KEY).get()
- sub_task_name_already_in_use = sub_task_name in taskHandler.get_task_tree_name_strings(
- taskHandler.root_task)
- if sub_task_name_already_in_use:
- print('Error: Task name ' + sub_task_name + ' already used, please enter another one')
- elif sub_task_name:
- parent_task_name = window.Element(TASK_TREE_COMBO_NAME).get()
- if parent_task_name:
- parent_task_id = taskHandler.get_task_id(parent_task_name)
- print('Adding new Sub-Task: ' + sub_task_name + ' to ' + parent_task_name.strip())
- taskHandler.add_task(parent_task_id, sub_task_name)
- window.Element(TASK_TREE_COMBO_NAME).update(
- values=taskHandler.get_task_tree_name_strings(taskHandler.root_task))
- else:
- print('Please select a Task before adding a subtask')
- def gui_main():
- layout = create_layout()
- window = create_window(layout)
- event_loop(window)
- window.close()
- if __name__ == '__main__':
- gui_main()
- taskHandler.close_session()
|