-
Notifications
You must be signed in to change notification settings - Fork 20
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
tralph3
wants to merge
49
commits into
master
Choose a base branch
from
gtk_gui
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sorry for the huge commit, I was doing tons of tests. Hopefully won't bite me back later.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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:
Tell me what you think. I'll just leave a checklist here of what's yet to be done: