-
Notifications
You must be signed in to change notification settings - Fork 168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Gtk4 + New Core + Listview Megaport #894
Gtk4 + New Core + Listview Megaport #894
Conversation
For anyone following this: the sidebar is really coming together. It loads and displays all tags, does the context menu and the tag editor also works 100%. Drag and drop parenting mostly works, but unparenting does some funny things. One interesting effect from using a listview is that now all tags are visible. Even if they have zero tasks, I'm wondering if this should be fixed or we should keep the new behaviour. It can be useful to always be able to select a tag and use the quick add input (even if you completed all the tasks in it). @nekohayo any thoughts? Next step is to figure out how to fix unparenting and the expanders, then clean the unholy mess that is the code (and the commits). After that, is on to saved searches. Which will probably take a while since they need a new editor and menu. |
Hmm, I'm not against this per se, and this is partially how 0.3.x used to work outside workview/actionable view; if you were not in workview mode, it would show all the tags, and in workview mode it would only show the tags set to show "only in workview mode"... but I know that what you're talking about here is something different: also showing tags with 0 tasks associated with them. Ideally I'd prefer if the user has some control over that (like maybe 2 or 3 states that can be controlled from some pref widget in the sidebar or the hamburger menu?), though it could be argued that if a user doesn't want to see a particular tag with 0 tasks in it, either they need to create tasks for it or they need to delete the tag, perhaps... In any case, always showing all tags "even unused ones" will force you to fix issue #605 as you will quickly go insane with the amount of erroneous/duplicate tags that get created and never get cleared ;) |
Do you mean the panes/tabs?
Might be worth keeping until I get to the editor then :P Note to my future self: add a filter to toggle which tags are visible (also for panes) |
Another quick update: I've finished the saved searches section of the sidebar. The only missing thing is the task count, we'll have to figure out how to do that efficiently at some point. Next up, I'm going to add basic click handlers for all the things in the sidebar. This means bumping the minimum Gtk to 4.6 since BitsetIter was broken for Python before. |
Another update: I managed to squeeze more stuff in the week, mostly copy-pasting previous stuff. Selections in the sidebar are now working. This means the minimum Gtk now is 4.6, previous versions will crash as soon as you click on a tag. Screenshot of the work so far (missing a ton of polish) |
Welp, couldn't do much during the week but still managed a few things. Dismissing, closing and re-opening tasks with the keyboard shortcuts is working with the new core. I also added a css class for closed tasks. The crisis around here is kicking into high(er) gear, so I had to rush to buy things and ended up running out of time for the weekend. I'll try to complete the editor, fix the delete tasks and batch tag dialogs, and re-organize the commits next weekend. Then it's onto sorters and filters. |
7224a81
to
d6cee35
Compare
Another update: let's see if I can remember everything. Squashed and organized some of the commits. Quick add input is now working with the new core. The checkbox is now toggling active/done status. The editor is mostly stable now. Added the sorters and filters. Clicking on a tag(s) in the sidebar works now. The sorting menu in the taskview is also working. The tasks context menu shows up but every option is a trap that slides you into a parallel universe. Up next: |
Another update: Searching and saved searches are in. Panes are working, the task pane title is changing. The task context menu is working I'm going to take a week or two to keep the burnout at bay and do something else. Once I get back I'll continue with:
|
Thank you for your very extensive work thus far, take care and I will look forward to seeing further action! Given how big this is, I would say, try to get it to the point where it 90-99% works (without critical issues) rather than 100%, to be able to merge somewhat early and let other contributors help you fix the remainder with a checklist, if possible :) |
Thanks for checking in :D Fixed some bugs and visual issues this weekend. Started to make the task list use Up next, bring back ranchester's tag pill widget so we can bind everything (in the sidebar too), emit expand all when clicking on something in the sidebar, add a filter for tasks with no tags, fix dark mode and colored rows in preferences |
Managed to get all that done, next up is plugins |
Plugins are ported, probably full of bugs tho Also there are some weird issues with the task view when using Besides the bug fixing and workaround-ing, the only two big missing pieces are backends and recurring |
Managed to push forward some more. Task counts now update properly, the tasklist hides the expander arrows and has better padding. Remaining issues:
|
Hi guys, sorry this is still moving at a glacial pace -_- |
Latest changes:
@zeddo123 I took the liberty of doing a quick n dirty port so we can land this in master ASAP. Feel free to hack on it once it's merged, or replace it with the new stuff you've been working on The last big problem is proper filtering. ATM, subtasks that whose parent task isn't expanded "dont exist" in the model, so when a filter (a tag) is applied they are not taken into account. |
Tested the current state of the branch tonight; it at least launches on Python 3.12 / Fedora 39, and overall works pretty well! I had to clear my tmp/ subdirectory to ensure I was indeed loading the 0.6 data file from my samples directory, instead of the previously-incorrectly-written file from the last time I ran the branch, so that I could see the tag's hierarchy preserved. In the laundry list of issues I reported above, this issue was marked as done:
...but it has a weird bug going on still. The colors are imported, but they are rendered incorrectly every 1 out 2 startups. In the GTG 0.6.x data format, I had this:
Color In the resulting
But here's the crazy part... if you restart GTG, then it shows up as the correct blue, and the other tags also show up with the correct colors… until you restart, then it will flip all the colors around again… and when you restart yet again it will show correct colors, etc. It really seems to alternate on every launch, providing correct colors 50% of the time and incorrect colors the other 50% of the time. Here are a few other "real bugs" I found now, that I hadn't noticed last time:
Newly found minor bugs:
I presume there are probably some other bugs lurking around, but probably not showstoppers and I will probably have to do another round of close-up inspection to find them (and arguably, maybe it's best to do that only after once we fix the existing inventory of bugs found in the previous comment and this one, bugfixing that is presumably only going to happen after merging?) |
New issues discovered now that the nonactionable attr for tags gets imported thanks to commit f37d842 :
Update:
|
Edited the latest comment above to clarify the currently inverted An additional issue that was found in recent days is:
…with large datasets (such as my anonymized personal dataset from december 2021), on the 1st startup (where the import and presumably conversion from 0.6 -> 0.7 happens), GTG will enter a busy loop eating 100% of one of the logical CPUs. The cProfile for this led us to generate this flameprof flame chart: The |
There's a bug with that currently: #1023 After going to the Actionable view within a task, and marking a bunch of tasks as done, task count does not match reality |
Hi, I try to test new GTG develop version. I use https://github.com/diegogangl/gtg.git - branch all_ports. GTG opened correctly with start data, I noticed that I can't delete tasks:
Traceback (most recent call last):
File "/home/piio/.archive/src/gtg-newcore-all-ports/.local_build/install/lib/python3.12/site-packages/GTG/gtk/browser/delete_task.py", line 40, in on_response
self.on_delete_confirm(tasklist)
File "/home/piio/.archive/src/gtg-newcore-all-ports/.local_build/install/lib/python3.12/site-packages/GTG/gtk/browser/delete_task.py", line 49, in on_delete_confirm
self.ds.tasks.remove(task.id)
File "/home/piio/.archive/src/gtg-newcore-all-ports/.local_build/install/lib/python3.12/site-packages/GTG/core/tasks.py", line 914, in remove
item = self.lookup[item_id]
~~~~~~~~~~~^^^^^^^^^
KeyError: '2d427a77-3077-4277-904c-073fcfcb4842' Software versions:
Best regards, |
This avoids an infinite loop when using the previous solution with non-existent tasks
Thanks for catching an extra bug or two, @piio! From my side, here are today's bugs I mentioned via chat, but in detail / better organized here... General parenting bugs (including ones reported before) - refiled as #1018 :
Other bugs:
|
To be improved later
Lots of performance improvements to be made here
I have now refiled all of the remaining noteworthy issues I reported above, into the main official bug tracker, most of them with the "regression" label and generally targetted to the 0.7 milestone if they are core UX regressions. |
This PR rebases and solves the conflicts in @ranchester2 's Gtk4 port (sometimes succesfully). It will also include my work on listviews and will finally plug the new core completely into the new UI.
🔥 Note that everything in this branch is broken and on fire. It will take quite a while before this is even testable. 🔥
Current Status
Will fill this up more as I go along.
Other Changes
Clean-up and other todos
replace_tag
andremove_tag
(in tasks)unwrap()
in a utils somewhere[:2]
hacks for colorsGio.ListModel
in the store classes directlybind()
in task panebg_func
in plugins now that we use cssFixes, etc for Github
fixes #307
fixes #874
closes #308
fixes #904
fixes #817
fixes #302
fixes #240
fixes #420
fixes #123
fixes #859