import sys from pyfzf.pyfzf import FzfPrompt from model import Model from params import Params from bcolors import bcolors class Config: def __init__(self): self.model = Model() self.params = Params() self.fzf = FzfPrompt() def manage(self): print(bcolors.HEADER + 'Managing configs' + bcolors.ENDC) done = 'off' if self.params.get('done'): done = 'on' print(bcolors.WARNING + 'Show done tasks: [' + done + ']' + bcolors.ENDC) self.manage_menu() def manage_menu(self): menu = input(bcolors.OKBLUE + '~config: ' + bcolors.OKGREEN + 'What you want to do? (?!vt#<q) ' + bcolors.ENDC) if menu == 'q': self.bye() elif menu == '?': self.manage_about() self.manage_menu() elif menu == 'v': self.toggle_done() self.manage() elif menu == 't': self.manage_timeslot() self.manage_menu() elif menu == '<': return else: print(bcolors.FAIL + 'This is not implemented...' + bcolors.ENDC) self.manage_menu() def manage_about(self): print(bcolors.WARNING + ''' Short instruction ----------------- ? - help (this dialog) ! - toggle active tasks v - toggle done tasks t - manage time slots # - backup/restore < - back q - exit ''' + bcolors.ENDC) def toggle_done(self): done = self.params.get('done') self.params.update('done', not done) print(bcolors.OKBLUE + '[parameter "done" has been toggled]' + bcolors.ENDC) def manage_timeslot(self): self.manage_timeslot_menu() def manage_timeslot_menu(self): menu = input(bcolors.OKBLUE + '~config: ' + bcolors.OKGREEN + 'What you want to do? (?!vt#<q) ' + bcolors.ENDC) if menu == 'q': self.bye() elif menu == '/': self.search_time_slot() self.manage_menu() elif menu == '?': self.manage_timeslot_about() elif menu == '+': self.add_time_slot() elif menu == '-': self.remove_time_slot() elif menu == '<': return else: print(bcolors.FAIL + 'This is not implemented...' + bcolors.ENDC) self.manage_menu() def manage_timeslot_about(self): print(bcolors.WARNING + ''' Short instruction ----------------- ? - help (this dialog) ! - toggle active tasks v - toggle done tasks t - manage time slots # - backup/restore < - back q - exit ''' + bcolors.ENDC) self.manage() def add_time_slot(self): print(bcolors.HEADER + 'Adding time slot' + bcolors.ENDC) name = input('Name (short): ') description = input('Description: ') tid = self.model.create_time_slot(name, description) print(bcolors.OKBLUE + '[time slot has been created]' + bcolors.ENDC) self.manage() def search_tag(self, tid=None): tagsData = self.model.get_all_tags() if not tagsData: self.add_tag() tagsData = self.model.get_all_tags() tags = [] for t in tagsData: tags.append(t['name']) selected = self.fzf.prompt(tags) if selected: tag = self.model.get_tag_by_name(selected[0]) self.manage_tag(tag['id']) else: print(bcolors.FAIL + 'Tag was not selected...' + bcolors.ENDC) def remove_tag(self, tid=None): tagsData = self.model.get_all_tags() if not tagsData: print(bcolors.FAIL + 'Where is no tags...' + bcolors.ENDC) self.manage_tag_menu() tags = [] for t in tagsData: tags.append(t['name']) selected = self.fzf.prompt(tags) if selected: self.model.remove_tag_by_name(selected[0]) print(bcolors.OKBLUE + '[tag has been deleted]' + bcolors.ENDC) self.manage_tag() else: print(bcolors.FAIL + 'Tag was not selected...' + bcolors.ENDC) def bye(self): print(bcolors.FAIL + 'bye o/' + bcolors.ENDC) sys.exit(0)