nowfocus 0.4.4__py3-none-any.whl → 0.5.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nowfocus/__main__.py +1 -1
- nowfocus/conf.py +2 -2
- nowfocus/install.py +2 -2
- nowfocus/task_window.py +1 -1
- nowfocus/utils.py +81 -62
- {nowfocus-0.4.4.dist-info → nowfocus-0.5.1.dist-info}/METADATA +2 -2
- {nowfocus-0.4.4.dist-info → nowfocus-0.5.1.dist-info}/RECORD +11 -11
- {nowfocus-0.4.4.dist-info → nowfocus-0.5.1.dist-info}/WHEEL +0 -0
- {nowfocus-0.4.4.dist-info → nowfocus-0.5.1.dist-info}/entry_points.txt +0 -0
- {nowfocus-0.4.4.dist-info → nowfocus-0.5.1.dist-info}/licenses/LICENSE +0 -0
- {nowfocus-0.4.4.dist-info → nowfocus-0.5.1.dist-info}/top_level.txt +0 -0
nowfocus/__main__.py
CHANGED
|
@@ -437,7 +437,7 @@ class Application(Gtk.Application):
|
|
|
437
437
|
self.task_running_menu_additions()
|
|
438
438
|
|
|
439
439
|
self.menu.show_all()
|
|
440
|
-
|
|
440
|
+
dbg("Starting",task_data['extended_label'])
|
|
441
441
|
|
|
442
442
|
if task_data['id'] in conf.user['task_commands']:
|
|
443
443
|
command_data = conf.user['task_commands'][task_data['id']]
|
nowfocus/conf.py
CHANGED
|
@@ -162,8 +162,8 @@ for key, val in prototype_settings.items():
|
|
|
162
162
|
# print(json.dumps(connectors['todolists'], indent=4))
|
|
163
163
|
|
|
164
164
|
|
|
165
|
-
with open(settings_file,"w") as
|
|
166
|
-
json.dump(user,
|
|
165
|
+
with open(settings_file,"w") as file:
|
|
166
|
+
json.dump(user, file)
|
|
167
167
|
|
|
168
168
|
todo_connectors = {}
|
|
169
169
|
timetracker_connectors = {}
|
nowfocus/install.py
CHANGED
|
@@ -62,11 +62,11 @@ def db_init():
|
|
|
62
62
|
|
|
63
63
|
# , tags TEXT
|
|
64
64
|
|
|
65
|
-
db_query("CREATE TABLE sessions (start_time TEXT, duration INTEGER, task_id TEXT, parent_id TEXT, todolist TEXT, extended_label TEXT, notes TEXT, timetracker TEXT);")
|
|
65
|
+
db_query("CREATE TABLE sessions (start_time TEXT, duration INTEGER, task_id TEXT, parent_id TEXT, todolist TEXT, extended_label TEXT, notes TEXT, priority INTEGER DEFAULT 0, timetracker TEXT);")
|
|
66
66
|
|
|
67
67
|
db_query("CREATE TABLE system (field TEXT PRIMARY KEY NOT NULL, value TEXT);")
|
|
68
68
|
|
|
69
|
-
db_query("INSERT INTO system(field, value) VALUES('db_schema_version', '0.
|
|
69
|
+
db_query("INSERT INTO system(field, value) VALUES('db_schema_version', '0.5')")
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
def copy_desktop_integration_files():
|
nowfocus/task_window.py
CHANGED
|
@@ -390,7 +390,7 @@ class TaskWindow(Gtk.Window):
|
|
|
390
390
|
self.r_sidebar.set_size_request(350, -1)
|
|
391
391
|
|
|
392
392
|
focus_percent_label = Gtk.Label()
|
|
393
|
-
focus_percent_label.set_markup("<b>
|
|
393
|
+
focus_percent_label.set_markup("<b>"+str(utils.get_percent_time_focused())+"% Focused. "+str(utils.get_percent_time_priority())+"% Priority Tasks</b>")
|
|
394
394
|
self.r_sidebar.pack_start(focus_percent_label, False, True, 25)
|
|
395
395
|
|
|
396
396
|
self.sessions_scrolledwindow = Gtk.ScrolledWindow()
|
nowfocus/utils.py
CHANGED
|
@@ -30,72 +30,45 @@ notify.init(conf.app_name)
|
|
|
30
30
|
lists = {}
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
def dbg(*data,
|
|
34
|
-
''' Any number of positional args
|
|
35
|
-
l
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
If the optional 'notify' arg is true, a notification will be generated.
|
|
40
|
-
|
|
41
|
-
if the optional 'e' arg is present and an exception object its traceback will be printed
|
|
33
|
+
def dbg(*data, s="", l=2, e=None, notify=None):
|
|
34
|
+
''' Any number of positional args optionally
|
|
35
|
+
l: level {-1: Default output, 0:Error, 1:Warning, 2:Info, 3:Details}
|
|
36
|
+
s: system (Debuggable systems: 'taskwindow','signals','todoloading','user_settings', 'targets', 'performance')
|
|
37
|
+
notify: Show a notification with the content of notify.
|
|
38
|
+
e (Exception object) traceback will be printed
|
|
42
39
|
|
|
43
40
|
'''
|
|
44
41
|
|
|
45
42
|
levels = {-1:'', 0:'Error', 1:'Warning', 2:'Info', 3:'Details'}
|
|
46
43
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
level = 2
|
|
50
|
-
|
|
51
|
-
if 's' in kwargs: system = kwargs['s']
|
|
44
|
+
system = s
|
|
45
|
+
level = int(l)
|
|
52
46
|
|
|
53
|
-
if 'l' in kwargs: level = int(kwargs['l'])
|
|
54
|
-
|
|
55
|
-
if 'e' in kwargs and isinstance(kwargs['e'],Exception):
|
|
56
|
-
print(data)
|
|
57
|
-
traceback.print_tb(kwargs['e'].__traceback__)
|
|
58
47
|
|
|
59
48
|
if "all" in conf.debug_systems or system in conf.debug_systems or level <= conf.debug_level:
|
|
60
49
|
|
|
61
|
-
if
|
|
62
|
-
|
|
63
|
-
notify.Notification.new(conf.app_name+" "+levels[level], str(kwargs['notify']), None).show()
|
|
50
|
+
if notify:
|
|
51
|
+
notify.Notification.new(conf.app_name+" "+levels[level], str(notify), None).show()
|
|
64
52
|
|
|
65
|
-
# o = "Debug "+system+" "+levels[level], tuple(filter(None,data))
|
|
66
53
|
filter(None,data)
|
|
67
54
|
if len(data) == 1:
|
|
68
55
|
data = data[0]
|
|
69
56
|
if system:
|
|
70
57
|
system = "- "+system
|
|
71
58
|
|
|
72
|
-
print(data, system+" "+levels[level])
|
|
73
|
-
|
|
74
|
-
# if isinstance(data,str):
|
|
75
|
-
# # print('str dbg data')
|
|
76
|
-
# print(data, system+" "+levels[level])
|
|
77
|
-
# else:
|
|
78
|
-
# print('dbg data',type(data),len(data))
|
|
79
|
-
# print(data)
|
|
80
|
-
# # o = tuple(filter(None,data)), "("+system+" "+levels[level]+")"
|
|
81
|
-
# o = data, system+" "+levels[level]
|
|
82
|
-
# pretty_print(o)
|
|
59
|
+
print(json.dumps(data,indent=2), system+" "+levels[level])
|
|
83
60
|
|
|
84
61
|
# else:
|
|
85
|
-
#
|
|
86
|
-
#
|
|
87
|
-
# # pretty_print(data)
|
|
62
|
+
# print("Not displaying dbg s:",system,'conf.debug_systems',conf.debug_systems)
|
|
63
|
+
# pretty_print(data)
|
|
88
64
|
|
|
65
|
+
if e and isinstance(e,Exception):
|
|
66
|
+
traceback.print_tb(e.__traceback__)
|
|
89
67
|
|
|
90
68
|
def error_notice(title, details = None, e = None):
|
|
91
69
|
print('ERROR',title,details,e)
|
|
92
|
-
|
|
93
70
|
notify.Notification.new(str(title),str(details), None).show()
|
|
94
71
|
|
|
95
|
-
# try:
|
|
96
|
-
# raise FileExistsError("This is not except-able!")
|
|
97
|
-
# except Exception as e:
|
|
98
|
-
# dbg('test exception',e=e)
|
|
99
72
|
|
|
100
73
|
def pretty_dict(i, item_sep = ", ", use_indents=True, indent=''):
|
|
101
74
|
o = ''
|
|
@@ -128,15 +101,19 @@ def pretty_print(i):
|
|
|
128
101
|
|
|
129
102
|
|
|
130
103
|
def timeit(process=None):
|
|
104
|
+
# if 'performance' in conf.debug_systems or conf.debug_level >= 2:
|
|
131
105
|
if not process:
|
|
132
106
|
process = inspect.currentframe().f_back.f_code.co_name
|
|
133
107
|
|
|
134
108
|
if process in conf.timers.keys():
|
|
135
|
-
|
|
109
|
+
timer = time.time() - conf.timers[process]
|
|
110
|
+
dbg(process, 'took', timer, 'seconds', s='performance',l=2)
|
|
136
111
|
del conf.timers[process]
|
|
112
|
+
return timer
|
|
137
113
|
else:
|
|
138
|
-
|
|
114
|
+
dbg(process, 'performance timer started',s='performance',l=3)
|
|
139
115
|
conf.timers[process] = time.time()
|
|
116
|
+
return process
|
|
140
117
|
|
|
141
118
|
|
|
142
119
|
def time_to_sec(time=None):
|
|
@@ -385,14 +362,12 @@ def db_schema_update():
|
|
|
385
362
|
|
|
386
363
|
db_query("ALTER TABLE sessions ADD COLUMN extended_label TEXT")
|
|
387
364
|
|
|
388
|
-
# add default values for priority and data
|
|
389
365
|
# Since these column are just a cache, replace instead of copying columns
|
|
390
366
|
db_query("ALTER TABLE tasks DROP COLUMN priority")
|
|
391
367
|
db_query("ALTER TABLE tasks DROP COLUMN data")
|
|
392
368
|
db_query("ALTER TABLE lists DROP COLUMN priority")
|
|
393
369
|
db_query("ALTER TABLE lists DROP COLUMN data")
|
|
394
370
|
|
|
395
|
-
# add new columns
|
|
396
371
|
db_query("ALTER TABLE lists ADD COLUMN priority INTEGER DEFAULT 0")
|
|
397
372
|
db_query("ALTER TABLE lists ADD COLUMN data TEXT DEFAULT '{}'")
|
|
398
373
|
db_query("ALTER TABLE tasks ADD COLUMN priority INTEGER DEFAULT 0")
|
|
@@ -419,16 +394,31 @@ def db_schema_update():
|
|
|
419
394
|
print('adding timetracker column to session table')
|
|
420
395
|
|
|
421
396
|
for todolist_id, todo in conf.user['todolists'].items():
|
|
422
|
-
print("set timetracker to ",todo['timetracker'], " for sessions from ",todolist_id)
|
|
423
|
-
|
|
424
397
|
db_query("UPDATE sessions SET timetracker = ? WHERE todolist = ?",(todo['timetracker'],todolist_id) )
|
|
425
398
|
|
|
426
399
|
db_schema_version = 0.4
|
|
427
400
|
|
|
428
|
-
|
|
401
|
+
if db_schema_version == 0.4:
|
|
402
|
+
print('Adding priority column to session table')
|
|
403
|
+
|
|
404
|
+
db_query("ALTER TABLE sessions ADD COLUMN priority INTEGER DEFAULT 0")
|
|
405
|
+
|
|
406
|
+
for session in db_query("SELECT DISTINCT task_id, extended_label FROM sessions"):
|
|
407
|
+
t = db_get_item_by_id(session['task_id'],dgb_error_level_for_failure=3)
|
|
408
|
+
if t and t['priority'] > 0:
|
|
409
|
+
print("setting",session['extended_label']," session priority to ",t['priority'] )
|
|
410
|
+
|
|
411
|
+
db_query("UPDATE sessions SET priority = ? WHERE task_id = ?",(t['priority'],session['task_id']))
|
|
412
|
+
|
|
413
|
+
print("Total hours priority sessions",round(divide(db_query("SELECT SUM(duration) as total FROM sessions WHERE priority > 0")[0]['total'],3600),2))
|
|
414
|
+
db_query("REPLACE INTO system(field, value) VALUES('db_schema_version', '0.5')")
|
|
415
|
+
|
|
416
|
+
db_schema_version = 0.5
|
|
417
|
+
|
|
418
|
+
# if db_schema_version == 0.5:
|
|
429
419
|
# db_query("ALTER TABLE tasks ADD COLUMN tags TEXT DEFAULT '{}'")
|
|
430
420
|
# db_query("REPLACE INTO system(field, value) VALUES('db_schema_version', '0.5')")
|
|
431
|
-
# db_schema_version = 0.
|
|
421
|
+
# db_schema_version = 0.6
|
|
432
422
|
|
|
433
423
|
|
|
434
424
|
dbg('db_schema_version', db_schema_version,s='db')
|
|
@@ -694,10 +684,10 @@ def db_cleanup(widget = None):
|
|
|
694
684
|
print('Relinking',s['task_id'],'to', match['id'])
|
|
695
685
|
db_query("UPDATE sessions SET task_id = ?, parent_id = ? WHERE task_id = ?",(match['id'],match['parent_id'],s['task_id']))
|
|
696
686
|
# print(pretty_print(possible_matches))
|
|
697
|
-
else:
|
|
687
|
+
# else:
|
|
698
688
|
# not very good yet...
|
|
699
|
-
search = db_query("SELECT *, rank FROM taskindex WHERE extended_label MATCH ? ORDER BY rank DESC",(s['extended_label'].replace('>','').replace('?',''),))
|
|
700
|
-
print('fuzzy search results',(search,))
|
|
689
|
+
# search = db_query("SELECT *, rank FROM taskindex WHERE extended_label MATCH ? ORDER BY rank DESC",(s['extended_label'].replace('>','').replace('?',''),))
|
|
690
|
+
# print('fuzzy search results',(search,))
|
|
701
691
|
|
|
702
692
|
# update extended_labels
|
|
703
693
|
# mismatched_sessions = db_query("SELECT * FROM sessions WHERE extended_label NOT IN (SELECT extended_label FROM tasks)")
|
|
@@ -710,7 +700,7 @@ def db_cleanup(widget = None):
|
|
|
710
700
|
|
|
711
701
|
# exit()
|
|
712
702
|
|
|
713
|
-
def db_get_item_by_id(id,table = 'tasks'):
|
|
703
|
+
def db_get_item_by_id(id,table = 'tasks',dgb_error_level_for_failure=0):
|
|
714
704
|
|
|
715
705
|
if table in ['task','list']:
|
|
716
706
|
table = table+'s'
|
|
@@ -724,11 +714,11 @@ def db_get_item_by_id(id,table = 'tasks'):
|
|
|
724
714
|
if data:
|
|
725
715
|
return proc_db_item(data[0],table)
|
|
726
716
|
else:
|
|
727
|
-
dbg('db_get_item_by_id from '+table+' failed for id
|
|
717
|
+
dbg('db_get_item_by_id from '+table+' failed for id',id,l=dgb_error_level_for_failure)
|
|
728
718
|
return {}
|
|
729
719
|
|
|
730
720
|
except Exception as e:
|
|
731
|
-
dbg('db_get_item_by_id failed',e,l=
|
|
721
|
+
dbg('db_get_item_by_id failed',e,l=dgb_error_level_for_failure)
|
|
732
722
|
|
|
733
723
|
|
|
734
724
|
def get_todo_by_id(todo_or_todo_id = None):
|
|
@@ -765,6 +755,7 @@ def db_get_todolist(todolist_id):
|
|
|
765
755
|
|
|
766
756
|
|
|
767
757
|
def db_save_session(session):
|
|
758
|
+
dbg("db_save_session",session)
|
|
768
759
|
prepared_session = {
|
|
769
760
|
'start_time' : str(session['start_time'].strftime("%Y-%m-%d %H:%M:%S")),
|
|
770
761
|
'duration': round(session['duration']),
|
|
@@ -774,9 +765,13 @@ def db_save_session(session):
|
|
|
774
765
|
'extended_label': str(session['extended_label']),
|
|
775
766
|
'timetracker': str(session['timetracker']),
|
|
776
767
|
'notes': str(session['notes']),
|
|
768
|
+
'priority': "0",
|
|
777
769
|
}
|
|
770
|
+
|
|
771
|
+
if 'priority' in session['task']:
|
|
772
|
+
prepared_session['priority']: str(session['task']['priority'])
|
|
778
773
|
|
|
779
|
-
db_query("INSERT INTO sessions(start_time, duration, task_id, parent_id, todolist, extended_label,timetracker, notes) VALUES(:start_time, :duration, :task_id, :parent_id, :todolist, :extended_label, :timetracker, :notes )",prepared_session)
|
|
774
|
+
db_query("INSERT INTO sessions(start_time, duration, task_id, parent_id, todolist, extended_label,timetracker, notes, priority) VALUES(:start_time, :duration, :task_id, :parent_id, :todolist, :extended_label, :timetracker, :notes, :priority )",prepared_session)
|
|
780
775
|
|
|
781
776
|
reindex(session['task'])
|
|
782
777
|
|
|
@@ -803,6 +798,18 @@ def default_session():
|
|
|
803
798
|
return o
|
|
804
799
|
|
|
805
800
|
|
|
801
|
+
def get_sessions(conditions_sql = None, order_by = 'start_time', limit = 35, use_sessions_timeframe_setting = False):
|
|
802
|
+
|
|
803
|
+
conditions = ''
|
|
804
|
+
|
|
805
|
+
if conditions_sql:
|
|
806
|
+
conditions += " AND "+conditions_sql
|
|
807
|
+
|
|
808
|
+
if use_sessions_timeframe_setting:
|
|
809
|
+
conditions += " AND "+sessions_timeframe_sql()
|
|
810
|
+
|
|
811
|
+
return db_query(" SELECT * FROM sessions WHERE 1=1 "+conditions+" ORDER BY "+order_by+" DESC LIMIT ? ",(limit,))
|
|
812
|
+
|
|
806
813
|
|
|
807
814
|
def show_sessions(widget = None, self = None, sessions_box = None, label_text = "Most Recent Sessions", order_by = 'start_time', limit = 35, passed_sessions = None, truncate = None ):
|
|
808
815
|
|
|
@@ -844,6 +851,7 @@ def show_sessions(widget = None, self = None, sessions_box = None, label_text =
|
|
|
844
851
|
|
|
845
852
|
sessions_box.show_all()
|
|
846
853
|
|
|
854
|
+
|
|
847
855
|
def db_set_session_cache(s):
|
|
848
856
|
''' Add active session to system db table. Not to be confused with db_save_session '''
|
|
849
857
|
db_session = copy.deepcopy(s)
|
|
@@ -885,16 +893,28 @@ def get_total_time(id, category = 'tasks', start_time = None, end_time = None, g
|
|
|
885
893
|
|
|
886
894
|
def get_percent_time_focused():
|
|
887
895
|
|
|
888
|
-
rand_seconds = db_query("SELECT SUM(duration) as seconds FROM sessions WHERE sessions.task_id = 'Randomness' AND "+ sessions_timeframe_sql())[0]['seconds']
|
|
896
|
+
rand_seconds = force_number(db_query("SELECT SUM(duration) as seconds FROM sessions WHERE sessions.task_id = 'Randomness' AND "+ sessions_timeframe_sql())[0]['seconds'])
|
|
889
897
|
|
|
890
|
-
focus_seconds = db_query("SELECT SUM(duration) as seconds FROM sessions WHERE sessions.task_id != 'Randomness' AND "+ sessions_timeframe_sql())[0]['seconds']
|
|
898
|
+
focus_seconds = force_number(db_query("SELECT SUM(duration) as seconds FROM sessions WHERE sessions.task_id != 'Randomness' AND "+ sessions_timeframe_sql())[0]['seconds'])
|
|
891
899
|
|
|
892
|
-
percent = round(divide(focus_seconds,(focus_seconds + rand_seconds)) * 100
|
|
900
|
+
percent = round(divide(focus_seconds,(focus_seconds + rand_seconds)) * 100)
|
|
893
901
|
|
|
894
902
|
dbg('get_percent_time_focused', str(percent)+"%", 'focus_seconds', focus_seconds, 'rand_seconds', rand_seconds)
|
|
895
903
|
|
|
896
904
|
return percent
|
|
897
905
|
|
|
906
|
+
def get_percent_time_priority():
|
|
907
|
+
|
|
908
|
+
priority_seconds = force_number(db_query("SELECT SUM(duration) as seconds FROM sessions WHERE sessions.task_id = 'Randomness' AND "+ sessions_timeframe_sql())[0]['seconds'])
|
|
909
|
+
|
|
910
|
+
total_seconds = force_number(db_query("SELECT SUM(duration) as seconds FROM sessions WHERE "+ sessions_timeframe_sql())[0]['seconds'])
|
|
911
|
+
|
|
912
|
+
percent = round(divide(priority_seconds,(total_seconds)) * 100)
|
|
913
|
+
|
|
914
|
+
dbg('get_percent_time_focused', str(percent)+"%", 'focus_seconds', priority_seconds, 'rand_seconds', total_seconds)
|
|
915
|
+
|
|
916
|
+
return percent
|
|
917
|
+
|
|
898
918
|
|
|
899
919
|
def get_recent_tasks(count = 15):
|
|
900
920
|
data = db_query("SELECT DISTINCT tasks.* FROM tasks JOIN sessions ON sessions.task_id = tasks.id WHERE tasks.status = 1 GROUP BY tasks.id ORDER BY MAX(sessions.start_time) DESC LIMIT ?",(count,))
|
|
@@ -1067,7 +1087,6 @@ def handle_todo_file_read_error(todo_conf,e):
|
|
|
1067
1087
|
dbg(todo_conf['label']+ " Deactivated",e,l=-1,notify=True)
|
|
1068
1088
|
|
|
1069
1089
|
|
|
1070
|
-
|
|
1071
1090
|
def get_todolists(use_db_cache = False):
|
|
1072
1091
|
tasks = {}
|
|
1073
1092
|
lists = {}
|
|
@@ -1261,7 +1280,7 @@ def add_todos_to_menu(target_menu = None, menu_tasks = None, list_menus = None,
|
|
|
1261
1280
|
list_menus[l['parent_id']].append(list_menu_items[list_id])
|
|
1262
1281
|
|
|
1263
1282
|
except Exception as e:
|
|
1264
|
-
dbg('Error adding list to menu',l,e=e,l=0)
|
|
1283
|
+
dbg('Error adding list to menu',l['extended_label'],e=e,l=0,s='menu')
|
|
1265
1284
|
|
|
1266
1285
|
|
|
1267
1286
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nowfocus
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.1
|
|
4
4
|
Summary: nowfocus: the open source task-tracking self-control panel.
|
|
5
5
|
Author: AltruistEnterprises
|
|
6
6
|
Project-URL: Homepage, https://www.nowfocus.org
|
|
@@ -173,7 +173,7 @@ Open nowfocus **Settings** from the indicator menu or tasks window and connect y
|
|
|
173
173
|
git clone https://codeberg.org/AltruistEnterprises/nowfocus.git
|
|
174
174
|
cd nowfocus
|
|
175
175
|
python3 -m venv .venv/nowfocus-build
|
|
176
|
-
source .venv/nowfocus-build/bin/activate
|
|
176
|
+
source .venv/nowfocus-build/bin/activate
|
|
177
177
|
pip install -r build-requirements.txt
|
|
178
178
|
python3 -m build
|
|
179
179
|
pipx install -e --force YOUR_INSTALL_PATH
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
nowfocus/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
2
|
-
nowfocus/__main__.py,sha256=
|
|
3
|
-
nowfocus/conf.py,sha256=
|
|
2
|
+
nowfocus/__main__.py,sha256=pJhJsaKUFVbXTjZiQBxHZJ_aIcxkkVzm-FIhITtfc_Y,33014
|
|
3
|
+
nowfocus/conf.py,sha256=KV0iouYSSpYUITLlG-lPvmk1sHFVQsykwqmvb9wyTdk,6693
|
|
4
4
|
nowfocus/example-todo.txt,sha256=o-ZRNiTlSGFbTK9jpdDIi07qHBrpvP0JhBZSk0VlpQU,246
|
|
5
|
-
nowfocus/install.py,sha256=
|
|
5
|
+
nowfocus/install.py,sha256=tcds4l6b492HTC7DfapatafgeMmDWvBfy8nwi1CjFXk,3040
|
|
6
6
|
nowfocus/new_task_dialog.py,sha256=GG49tOAwXiUKAHeaKnCG8Q3SZlL5pJijRZEcSjMwQng,4350
|
|
7
7
|
nowfocus/session_edit_dialog.py,sha256=V2QWSdNaxsQHRcG28CJBQM2sa45m5RNcu_suQF26mkM,6912
|
|
8
8
|
nowfocus/session_options.py,sha256=mOnyEM3-usKgVvBhESY0TNBcy4FTG-AHP6ETMgB1fQ4,5071
|
|
9
9
|
nowfocus/sessions.csv,sha256=kYpr06yQg_J86NQ4AiYw4RnQchcw3ouPKVYa1lYDUNo,39
|
|
10
10
|
nowfocus/settings.py,sha256=Ufabuqd90tTDlzXB68jsbDz7233CEMsjnmPzaTSEHLI,35150
|
|
11
11
|
nowfocus/styles.css,sha256=PG1SrLkwSSay8M2VKeRcE0UdK54ndsEDFnRLRkmP-9M,510
|
|
12
|
-
nowfocus/task_window.py,sha256=
|
|
12
|
+
nowfocus/task_window.py,sha256=FgmjAIJqDJXAx2WkkAeTFSE3O0uednHSHh2j2v60Rdo,28478
|
|
13
13
|
nowfocus/user_idle_time.py,sha256=kPZ_bhoBdVMIBJXn2602FUfS4r-u8FnTq5Ze9D5QfHE,2363
|
|
14
|
-
nowfocus/utils.py,sha256=
|
|
14
|
+
nowfocus/utils.py,sha256=IyOKoFDRxXOugUJmfUmAatUxdlpTu1nMx88TtNOI1r0,50080
|
|
15
15
|
nowfocus/version_migrator.py,sha256=q8T1C8-DLOwUQUM5IPcMjPbVbsLTO4VsqADlAAXd9gw,628
|
|
16
16
|
nowfocus/connectors/activitywatch.py,sha256=QbkOmjIOiVwccWc2xhhePd0Abww5vEiVpCNjeqOyYGg,921
|
|
17
17
|
nowfocus/connectors/caldav.py,sha256=PeM_9yJC8W17L8Y5AyS75o6GfzTrPoMYKIvetND8T78,5089
|
|
@@ -52,9 +52,9 @@ nowfocus/icon/settings.svg,sha256=fgkGJouPPtZLxZn2nr_5pEp9MdhRSRaW9mtdxhJHDuQ,39
|
|
|
52
52
|
nowfocus/sound/bell-xylophone-g.mp3,sha256=1OBcRWvD87AGNcq1uZFR8HqG0nanJykImERfVDVxHD4,53891
|
|
53
53
|
nowfocus/sound/dinner-bell.mp3,sha256=hjjO0xqA4uXpYw9KLwwlBnrVfRhVq1K5OXzwlMXhRn4,113620
|
|
54
54
|
nowfocus/sound/xylophone-chord.mp3,sha256=gwgBSqhMt5PMzT5N03Z6TvDgipQZfnkEz_o81Rq5Z1U,131806
|
|
55
|
-
nowfocus-0.
|
|
56
|
-
nowfocus-0.
|
|
57
|
-
nowfocus-0.
|
|
58
|
-
nowfocus-0.
|
|
59
|
-
nowfocus-0.
|
|
60
|
-
nowfocus-0.
|
|
55
|
+
nowfocus-0.5.1.dist-info/licenses/LICENSE,sha256=fSJzoHs1EOCwEd7FIyokFeGEma7NKmTVEdHkCr5OIV4,35127
|
|
56
|
+
nowfocus-0.5.1.dist-info/METADATA,sha256=gtOx1Ra5RrMXl8xLq3gRW2zUHnefbR_1-WuVI4idMjk,6804
|
|
57
|
+
nowfocus-0.5.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
58
|
+
nowfocus-0.5.1.dist-info/entry_points.txt,sha256=RbYY19-irSoNVglNeNnL9D36cHft7aKsaEGEYoSH3pA,51
|
|
59
|
+
nowfocus-0.5.1.dist-info/top_level.txt,sha256=3uLd9BwmfarZwqVUxkSJuVwJ8qHzjThte8rt_UYG7tE,9
|
|
60
|
+
nowfocus-0.5.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|