Rewrite backend with GObject / widget subclassing
This MR implements several new GObject based types. They're replacing the Rust messaging passing approach.
GTK Widgets
- SoukPackageRow
package
- SoukPackageTile
package
Transaction
- SoukTransaction
package
action
state
- SoukTransactionMode [enum]
- SoukTransactionState
message
percentage
mode
Package
- SoukPackage
kind
name
arch
branch
remote
remote_info
installed_info
transaction_action
transaction_state
- SoukPackageAction [enum]
- SoukPackageKind [enum]
- SoukInstalledInfo
commit
installed_size
deploy_dir
- SoukRemoteInfo
commit
installed_size
download_size
Flatpak Backend
- SoukFlatpakBackend
installed_packages
-
new_transaction
[signal]
There are still few open tasks, but I think it's better to implement them in a follow-up MR, since this MR would be get too big otherwise.
-
The search / listview perfomancy is poor. This needs benchmarkingFixed! (Of course there's always room for further improvements ^^) -
There's a memory leak somewhere. Also probably in the search code.Fixed! -
SoukFlatpakBackend::reload_installed_packages()
takes a long time, and is the reason of the high startup times of Souk
Edited by Felix Häcker