nowfocus 0.5.3__tar.gz → 0.5.4__tar.gz

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.
Files changed (65) hide show
  1. {nowfocus-0.5.3/src/nowfocus.egg-info → nowfocus-0.5.4}/PKG-INFO +1 -1
  2. {nowfocus-0.5.3 → nowfocus-0.5.4}/pyproject.toml +1 -1
  3. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/__main__.py +2 -1
  4. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/task_window.py +3 -3
  5. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/utils.py +41 -33
  6. {nowfocus-0.5.3 → nowfocus-0.5.4/src/nowfocus.egg-info}/PKG-INFO +1 -1
  7. {nowfocus-0.5.3 → nowfocus-0.5.4}/LICENSE +0 -0
  8. {nowfocus-0.5.3 → nowfocus-0.5.4}/README.md +0 -0
  9. {nowfocus-0.5.3 → nowfocus-0.5.4}/setup.cfg +0 -0
  10. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/__init__.py +0 -0
  11. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/conf.py +0 -0
  12. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/connectors/activitywatch.py +0 -0
  13. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/connectors/caldav.py +0 -0
  14. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/connectors/csv.py +0 -0
  15. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/connectors/psc_timetracker.py +0 -0
  16. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/connectors/taskwarrior.py +0 -0
  17. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/connectors/timewarrior.py +0 -0
  18. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/connectors/todo_template.py +0 -0
  19. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/connectors/todotxt.py +0 -0
  20. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/connectors/trello.py +0 -0
  21. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/connectors/txt.py +0 -0
  22. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/connectors/vikunja.py +0 -0
  23. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/desktop-extras/nowfocus.desktop +0 -0
  24. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/desktop-extras/nowfocus.png +0 -0
  25. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/desktop-extras/nowfocus.svg +0 -0
  26. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/example-todo.txt +0 -0
  27. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/cancel.png +0 -0
  28. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/cancel.svg +0 -0
  29. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/edit.png +0 -0
  30. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/edit.svg +0 -0
  31. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon-0.svg +0 -0
  32. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon-1.svg +0 -0
  33. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon-2.svg +0 -0
  34. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon-3.svg +0 -0
  35. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon-4.svg +0 -0
  36. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon-5.svg +0 -0
  37. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon-6.svg +0 -0
  38. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon-7.svg +0 -0
  39. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon-8.svg +0 -0
  40. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon-9.svg +0 -0
  41. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon-red.svg +0 -0
  42. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/icon.svg +0 -0
  43. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/mark-done.png +0 -0
  44. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/mark-done.svg +0 -0
  45. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/pause.png +0 -0
  46. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/pause.svg +0 -0
  47. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/settings.png +0 -0
  48. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/icon/settings.svg +0 -0
  49. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/install.py +0 -0
  50. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/new_task_dialog.py +0 -0
  51. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/session_edit_dialog.py +0 -0
  52. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/session_options.py +0 -0
  53. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/sessions.csv +0 -0
  54. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/settings.py +0 -0
  55. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/sound/bell-xylophone-g.mp3 +0 -0
  56. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/sound/dinner-bell.mp3 +0 -0
  57. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/sound/xylophone-chord.mp3 +0 -0
  58. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/styles.css +0 -0
  59. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/user_idle_time.py +0 -0
  60. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus/version_migrator.py +0 -0
  61. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus.egg-info/SOURCES.txt +0 -0
  62. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus.egg-info/dependency_links.txt +0 -0
  63. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus.egg-info/entry_points.txt +0 -0
  64. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus.egg-info/requires.txt +0 -0
  65. {nowfocus-0.5.3 → nowfocus-0.5.4}/src/nowfocus.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nowfocus
3
- Version: 0.5.3
3
+ Version: 0.5.4
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nowfocus"
3
- version = "0.5.3"
3
+ version = "0.5.4"
4
4
  authors = [
5
5
  { name="AltruistEnterprises" },
6
6
  ]
@@ -100,8 +100,9 @@ class Application(Gtk.Application):
100
100
  # time.sleep(3)
101
101
  # self.open_session_options_dialog('test_param')
102
102
  # self.open_settings_window() #for testing
103
- # self.open_new_task_dialog() #for testing
103
+ self.open_new_task_dialog() #for testing
104
104
  # self.print_time_totals()
105
+ # self.new_task_dialog()
105
106
 
106
107
  signal.signal(signal.SIGINT, self.quit)
107
108
  signal.signal(signal.SIGUSR1, self.signal_handler)
@@ -407,7 +407,7 @@ class TaskWindow(Gtk.Window):
407
407
  # self.r_sidebar.connect("enter-notify-event",self.test)
408
408
 
409
409
 
410
- self.l_sidebar.add(choose_from_lists(self.select_list_callback, 'None', None, False))
410
+ self.l_sidebar.add(choose_from_lists(self.select_list_callback, 'None', None, False, show_todolist_headers=False))
411
411
 
412
412
  self.SessionEditDialog = SessionEditDialog # passed to show_sessions via self
413
413
  sidebar_sessions = get_sessions(use_sessions_timeframe_setting=False)
@@ -491,8 +491,8 @@ class TaskWindow(Gtk.Window):
491
491
 
492
492
  extended_label = GLib.markup_escape_text(t['extended_label'])
493
493
 
494
- if len(extended_label) > 110:
495
- extended_label = extended_label[:110]+"..."
494
+ if len(extended_label) > 100:
495
+ extended_label = extended_label[:100]+"..."
496
496
 
497
497
  if len(self.search_term) > 1:
498
498
 
@@ -1157,7 +1157,7 @@ def get_most_recent_list(session = None):
1157
1157
  return last_session[0]['parent_id']
1158
1158
 
1159
1159
 
1160
- def choose_from_lists(callback, selected_list_id = None, session = None, accepts_tasks = True):
1160
+ def choose_from_lists(callback, selected_list_id = None, session = None, accepts_tasks = True, skip_top_level_lists = False, show_todolist_headers = True):
1161
1161
  ''' Returns a Gtk.ScrolledWindow widget with radio buttons'''
1162
1162
 
1163
1163
  # TODO: consider using TreeView https://lazka.github.io/pgi-docs/Gtk-3.0/classes/TreeView.html#Gtk.TreeView
@@ -1167,6 +1167,7 @@ def choose_from_lists(callback, selected_list_id = None, session = None, accepts
1167
1167
  selected_list_id = get_most_recent_list(session = None)
1168
1168
 
1169
1169
  box = Gtk.VBox()
1170
+ box.set_spacing(8)
1170
1171
 
1171
1172
  scrolled_window = Gtk.ScrolledWindow()
1172
1173
  scrolled_window.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
@@ -1178,48 +1179,55 @@ def choose_from_lists(callback, selected_list_id = None, session = None, accepts
1178
1179
 
1179
1180
  where = " WHERE status = '1' "
1180
1181
 
1181
- if accepts_tasks:
1182
- where += " AND data like '%\"accepts_tasks\": true%' "
1183
- else:
1184
- # HACK: to not show op level lists
1185
- # TODO: think of a better way
1186
- where += " AND parent_label != '' "
1187
-
1182
+ if skip_top_level_lists:
1183
+ where += " AND parent_label IS NOT NULL "
1188
1184
 
1189
- lists = db_query("SELECT * FROM lists "+where+" ORDER BY todolist, extended_label ASC ", None, 'id')
1185
+ lists = db_query("SELECT lists.*, (SELECT start_time FROM sessions WHERE todolist = lists.todolist ORDER BY start_time DESC LIMIT 1 ) as last_session_on_todo FROM lists "+where+" ORDER BY last_session_on_todo DESC, CASE WHEN parent_id IS NULL THEN 1 ELSE 2 END, extended_label ASC ", None, 'id')
1186
+
1187
+ r_button = None
1188
+ todolist_id = None
1190
1189
 
1191
1190
  for id, l in lists.items():
1192
- l['data'] = json.loads(l['data'])
1193
- # print("AddTask list ",l['label'])
1191
+ try:
1192
+ l['data'] = json.loads(l['data'])
1194
1193
 
1195
- if todolist == None:
1196
- # initial button group
1197
- button_group = Gtk.RadioButton(label=l['label'])
1198
- item = button_group
1199
- else:
1200
1194
  indent = len(get_lists_for_item(l)['ids'])
1201
- label = f'{" " * indent}' + l['label']
1202
- item = Gtk.RadioButton(label=GLib.markup_escape_text(label), group=button_group)
1203
-
1204
- if todolist != l['todolist']:
1205
- # new buttongroup for new todolist
1206
- todolist = l['todolist']
1207
- l['header'] = Gtk.Label()
1195
+ label = f'{" · " * indent}' + GLib.markup_escape_text(l['label'])
1196
+
1197
+ if todolist_id != l['todolist']:
1198
+ todolist_id = l['todolist']
1199
+ if show_todolist_headers:
1200
+ label = "<b>" + label + "</b>"
1201
+ if r_button:
1202
+ r_button.set_margin_bottom(20)
1203
+ else:
1204
+ continue
1208
1205
 
1209
- try:
1210
- l['header'].set_markup("<b>"+conf.user['todolists'][todolist]["label"]+"</b>")
1211
- except Exception as e:
1212
- dbg('Exception creating button group header for list',l, e=e, l=0)
1213
-
1214
- box.add(l['header'])
1206
+ label_widget = Gtk.Label()
1207
+ label_widget.set_halign(Gtk.Align.START)
1208
+ label_widget.set_markup(label)
1215
1209
 
1216
- if l['id'] == selected_list_id:
1217
- item.set_active(True)
1210
+ if accepts_tasks and l['data']['accepts_tasks'] == False:
1211
+ label_widget.set_markup(' '+label)
1212
+
1213
+ box.add(label_widget)
1214
+
1215
+ else:
1216
+ r_button = Gtk.RadioButton(group=r_button)
1217
+ r_button.add(label_widget)
1218
1218
 
1219
- item.connect("toggled", callback, l) #
1220
- box.add(item)
1219
+
1220
+ if l['id'] == selected_list_id:
1221
+ r_button.set_active(True)
1222
+
1223
+ r_button.connect("toggled", callback, l)
1224
+ box.add(r_button)
1225
+
1226
+ except Exception as e:
1227
+ dbg('Exception adding to choose_from_lists list', l, e=e, l=0)
1221
1228
 
1222
1229
  # TODO: allow a height argument to account for other things that require space, and possibly a global screen height value?
1230
+
1223
1231
  # Optimize the height, 27px per item with max of 700 px and a min of 50
1224
1232
  height = max(50,min(500, (len(lists) * 27)))
1225
1233
  scrolled_window.set_size_request(-1, height)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nowfocus
3
- Version: 0.5.3
3
+ Version: 0.5.4
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
File without changes
File without changes
File without changes
File without changes