Skip to content
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

Complete app rewrite with GTK GUI #50

Open
wants to merge 49 commits into
base: master
Choose a base branch
from
Open

Complete app rewrite with GTK GUI #50

wants to merge 49 commits into from

Conversation

tralph3
Copy link
Owner

@tralph3 tralph3 commented Jun 16, 2024

Hi all. This is not yet ready for merge, but it is quite close to completion and I wanted to share the progress so far.

When I initially wrote SME I wasn't very skilled in software development. I don't think I'm that good today either, but I'm better off than I was back then, that's for sure.

Instead of dropping everything into a single gigantic file, the rewrite is a more modular and structured program, which will hopefully pay off in the long run when something breaks.

Instead of having to dig through spaghetti code, I'll have to dig through modular spaghetti code, which is an improvement.

I have also separated the logic for the parsing (encoding and decoding) of the appinfo file, and included one for text VDF files which allows me to easily retrieve the installation paths of the apps.

Those modules are also unit tested! Hopefully that'll add some robustness to this thing.

The GUI itself contains more logic than I would like, but most of it is about extracting and setting data into text fields, the data itself is held and managed by the "models", and the GUI just asks the models for data, or tells the model to save some data.

There's also a very simple but serviceable event system which the GUI uses to react to user events.

And one of the best things of the rewrite is that I've ditched Tkinter completely. Now it's written entirely in GTK4 with some libadwaita components here and there.

GTK4 feels much smoother and looks much nicer.

I have decided to continue with the idea of mimicking somewhat the Steam theme, instead of using the system's theme, since it's not a program that you'll be using that much. If there's enough demand maybe I ditch this, don't know.

I do realize however, that introducing a GTK GUI means introducing a dependency on GTK.

Whereas before SME worked with Python only (since it ships with Tkinter), now it also needs GTK.

I doubt this will be an issue to most, but when I merge this I'll make a release of the last Tkinter version in case anyone happens to need it. It will be unmaintained tho.

Here's a preview of how the new GUI looks like:
image

Tell me what you think. I'll just leave a checklist here of what's yet to be done:

  • Appinfo parser
  • TextVDF parser
  • Event system
  • Load apps
  • Save modifications
  • Date selection dialog
  • Launch menu list
  • Modify launch menu entries (add/delete/update)
  • Detect installed apps
  • Executable file chooser
  • Working directory chooser
  • Silent patching
  • Load previous modifications
  • CLI arguments
  • Reorder launch menu entries (not sure how to do this, might scrap it)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant