dahenson / agenda

A simple, fast, no-nonsense to-do (task) list.
GNU General Public License v3.0
92 stars 23 forks source link

Refactor The File Store And GUI #143

Open dahenson opened 2 years ago

dahenson commented 2 years ago

Purpose

This is a major refactor that started with my dissatisfaction with the close coupling of the GUI with the actual list store and file saving interface.

My intent is to separate the "backend" concerns from the "frontend" concerns by encapsulating the "backend" code in lib/ and the "frontend" code in src/. Once the two concerns are separated, it should be easier in the future to apply features without needing to intimately know how every piece of the app works. Refactors should be easier with an agreed-upon backend interface, and (hopefully) online syncing with services like libecal.

With this rewrite, I am switching to a ListBox for the GUI to allow for more customization with each task.

Before Merging!

In order to reach feature parity with the current GUI, the new app GUI needs to be able to do the following things:

gxhamster commented 2 years ago

Absolutely agree. I will look into this. Btw I am in no way an experienced Vala programmer. Just started two days ago

gxhamster commented 2 years ago

I think we should first try to ge the app to compile. So it would be easier for development

gxhamster commented 2 years ago

Why dont we use glade to construct the core widgets ?

dahenson commented 2 years ago

I think we should first try to ge the app to compile. So it would be easier for development

The rewritten app is currently compiling into [builddir]/app/agenda. You should be able to run it if you've already run meson install or ninja install to make sure the gschema is installed. At the moment, you can add a task and check or uncheck complete. Those two operations are persisted. I still have some work to do on editing, reordering, and removing tasks.

dahenson commented 2 years ago

Why dont we use glade to construct the core widgets ?

I prefer not to add glade as a dependency. If I was building the app using C, I might be tempted to avoid alll of the boilerplate involved in setting up custom widgets. In vala, it is much easier to declare your widgets, and the GUI and the business logic is all written in one common syntax.