Verified Kaydet (Commit) ac50cda8 authored tarafından Erdem Ersoy's avatar Erdem Ersoy

Rewrite Flatpak GUI mess (1/X):

* Rewrite mainwindow.py __init__ function (1/X)
üst 58d65077
...@@ -26,6 +26,7 @@ from pardusflatpakgui.version import Version ...@@ -26,6 +26,7 @@ from pardusflatpakgui.version import Version
import gettext import gettext
import locale import locale
import sys
import gi import gi
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '3.0')
gi.require_version('GLib', '2.0') gi.require_version('GLib', '2.0')
...@@ -43,163 +44,176 @@ gettext.install("pardus-flatpak-gui", "po/") ...@@ -43,163 +44,176 @@ gettext.install("pardus-flatpak-gui", "po/")
class MainWindow(object): class MainWindow(object):
def __init__(self, application): def __init__(self, application):
self.Application = application self.Application = application
self.url = "https://dl.flathub.org/repo/appstream/"
self.urlext = "flatpakref"
try: try:
MainGUIFile = "ui/mainwindow.glade" main_gui_file = "ui/mainwindow.glade"
MainBuilder = Gtk.Builder.new_from_file(MainGUIFile) main_builder = Gtk.Builder.new_from_file(main_gui_file)
MainBuilder.connect_signals(self) main_builder.connect_signals(self)
except GLib.GError: except GLib.GError:
print(_("Error reading GUI file: ") + MainGUIFile) print(_("Error reading GUI file: ") + main_gui_file)
raise raise
try: try:
AboutGUIFile = "ui/aboutdialog.glade" about_gui_file = "ui/aboutdialog.glade"
AboutBuilder = Gtk.Builder.new_from_file(AboutGUIFile) about_builder = Gtk.Builder.new_from_file(about_gui_file)
AboutBuilder.connect_signals(self) about_builder.connect_signals(self)
except GLib.GError: except GLib.GError:
print(_("Error reading About dialog GUI file: ") + AboutGUIFile) print(_("Error reading About dialog GUI file: ") + about_gui_file)
raise raise
try: try:
MessagesGUIFile = "ui/messagedialogs.glade" messages_gui_file = "ui/messagedialogs.glade"
MessagesBuilder = Gtk.Builder.new_from_file(MessagesGUIFile) messages_builder = Gtk.Builder.new_from_file(messages_gui_file)
MessagesBuilder.connect_signals(self) messages_builder.connect_signals(self)
except GLib.GError: except GLib.GError:
print(_("Error reading message dialogs GUI file: ") + print(_("Error reading message dialogs GUI file: ") +
MessagesGUIFile) messages_gui_file)
raise raise
self.MainWindow = MainBuilder.get_object("MainWindow") self.FlatpakInstallation = Flatpak.Installation.new_system()
self.MainWindow.set_application(application) self.InstalledRefsList = self.FlatpakInstallation.list_installed_refs()
self.FlatHubRefsList = self.FlatpakInstallation.list_remote_refs_sync(
"flathub", Gio.Cancellable.new())
self.NonInstalledRefsList = []
if not self.InstalledRefsList:
for item in self.FlatHubRefsList:
self.NonInstalledRefsList.append(item)
else:
for item in self.InstalledRefsList:
for item2 in self.FlatHubRefsList:
if item.get_name() != item2.get_name():
self.NonInstalledRefsList.append(item2)
self.ListStoreMain = main_builder.get_object("ListStoreMain")
self.HeaderBarMain = MainBuilder.get_object("HeaderBarMain") self.MessageDialogError = messages_builder.get_object("MessageDialogError")
for item in self.FlatHubRefsList:
if item.get_kind() == Flatpak.RefKind.APP and \
item.get_arch() == Flatpak.get_default_arch():
if isinstance(item, Flatpak.RemoteRef):
item_is_installed = False
elif isinstance(item, Flatpak.InstalledRef):
item_is_installed = True
else:
item_is_installed = None
real_name = item.get_name()
arch = item.get_arch()
branch = item.get_branch()
installed_size = item.get_installed_size()
installed_size_mib = installed_size / 1048576
installed_size_mib_str = f"{installed_size_mib:.2f}" + " MiB"
if not item_is_installed:
if item in self.FlatHubRefsList:
remote_name = "flathub"
else:
remote_name = ""
download_size = item.get_download_size()
download_size_mib = download_size / 1048576
download_size_mib_str = f"{download_size_mib:.2f}" + " MiB"
name = ""
elif item_is_installed:
remote_name = item.get_origin()
download_size_mib_str = ""
name = item.get_appdata_name()
else:
self.MessageDialogError.set_markup(
_("<big><b>Invalid Flatpak Reference Error</b></big>"))
self.MessageDialogError.format_secondary_text(
_("Invalid Flatpak reference is: " + "app/" + real_name + "/" + arch + "/" + branch))
self.MessageDialogError.run()
self.MessageDialogError.hide()
sys.exit(1)
self.ListStoreMain.append([real_name,
arch,
branch,
remote_name,
installed_size_mib_str,
download_size_mib_str,
name])
else:
continue
self.HeaderBarMain = main_builder.get_object("HeaderBarMain")
self.HeaderBarMain.set_title(_("Pardus Flatpak GUI")) self.HeaderBarMain.set_title(_("Pardus Flatpak GUI"))
self.HeaderBarMain.set_subtitle(_("Manage Flatpak softwares via GUI on Pardus")) self.HeaderBarMain.set_subtitle(_("Manage Flatpak softwares via GUI on Pardus"))
self.RunMenuItem = MainBuilder.get_object("RunMenuItem") self.RunMenuItem = main_builder.get_object("RunMenuItem")
self.RunMenuItem.set_label(_("_Run")) self.RunMenuItem.set_label(_("_Run"))
self.InfoMenuItem = MainBuilder.get_object("InfoMenuItem") self.InfoMenuItem = main_builder.get_object("InfoMenuItem")
self.InfoMenuItem.set_label(_("_Info")) self.InfoMenuItem.set_label(_("_Info"))
self.UninstallMenuItem = MainBuilder.get_object("UninstallMenuItem") self.UninstallMenuItem = main_builder.get_object("UninstallMenuItem")
self.UninstallMenuItem.set_label(_("_Uninstall")) self.UninstallMenuItem.set_label(_("_Uninstall"))
self.InstallMenuItem = MainBuilder.get_object("InstallMenuItem") self.InstallMenuItem = main_builder.get_object("InstallMenuItem")
self.InstallMenuItem.set_label(_("I_nstall")) self.InstallMenuItem.set_label(_("I_nstall"))
self.ActionsMenu = MainBuilder.get_object("ActionsMenu") self.ActionsMenu = main_builder.get_object("ActionsMenu")
self.InstallFromEntryMenuItem = MainBuilder.get_object("InstallFromEntryMenuItem")
self.InstallFromEntryMenuItem.set_label(_("Install From _Entry"))
self.InstallFromFileMenuItem = MainBuilder.get_object( self.InstallFromFileMenuItem = main_builder.get_object(
"InstallFromFileMenuItem") "InstallFromFileMenuItem")
self.InstallFromFileMenuItem.set_label(_("Install From _File")) self.InstallFromFileMenuItem.set_label(_("Install From _File"))
self.UpdateAllMenuItem = MainBuilder.get_object("UpdateAllMenuItem") self.InstallFromEntryMenuItem = main_builder.get_object("InstallFromEntryMenuItem")
self.InstallFromEntryMenuItem.set_label(_("Install From _Entry"))
self.UpdateAllMenuItem = main_builder.get_object("UpdateAllMenuItem")
self.UpdateAllMenuItem.set_label(_("_Update All")) self.UpdateAllMenuItem.set_label(_("_Update All"))
self.AboutMenuItem = MainBuilder.get_object("AboutMenuItem") self.AboutMenuItem = main_builder.get_object("AboutMenuItem")
self.AboutMenuItem.set_label(_("_About")) self.AboutMenuItem.set_label(_("_About"))
self.TreeViewColumnRealName = MainBuilder.get_object( self.TreeViewColumnRealName = main_builder.get_object(
"TreeViewColumnRealName") "TreeViewColumnRealName")
self.TreeViewColumnRealName.set_title(_("Real Name")) self.TreeViewColumnRealName.set_title(_("Real Name"))
self.TreeViewColumnArch = MainBuilder.get_object("TreeViewColumnArch") self.TreeViewColumnArch = main_builder.get_object("TreeViewColumnArch")
self.TreeViewColumnArch.set_title(_("Arch")) self.TreeViewColumnArch.set_title(_("Arch"))
self.TreeViewColumnBranch = MainBuilder.get_object("TreeViewColumnBranch") self.TreeViewColumnBranch = main_builder.get_object("TreeViewColumnBranch")
self.TreeViewColumnBranch.set_title(_("Branch")) self.TreeViewColumnBranch.set_title(_("Branch"))
self.TreeViewColumnRemoteName = MainBuilder.get_object( self.TreeViewColumnRemoteName = main_builder.get_object(
"TreeViewColumnRemoteName") "TreeViewColumnRemoteName")
self.TreeViewColumnRemoteName.set_title(_("Remote Name")) self.TreeViewColumnRemoteName.set_title(_("Remote Name"))
self.TreeViewColumnInstalledSize = MainBuilder.get_object( self.TreeViewColumnInstalledSize = main_builder.get_object(
"TreeViewColumnInstalledSize") "TreeViewColumnInstalledSize")
self.TreeViewColumnInstalledSize.set_title(_("Installed Size")) self.TreeViewColumnInstalledSize.set_title(_("Installed Size"))
self.TreeViewColumnDownloadSize = MainBuilder.get_object( self.TreeViewColumnDownloadSize = main_builder.get_object(
"TreeViewColumnDownloadSize") "TreeViewColumnDownloadSize")
self.TreeViewColumnDownloadSize.set_title(_("Download Size")) self.TreeViewColumnDownloadSize.set_title(_("Download Size"))
self.TreeViewColumnName = MainBuilder.get_object("TreeViewColumnName") self.TreeViewColumnName = main_builder.get_object("TreeViewColumnName")
self.TreeViewColumnName.set_title(_("Name")) self.TreeViewColumnName.set_title(_("Name"))
self.FlatpakInstallation = Flatpak.Installation.new_system() self.TreeViewMain = main_builder.get_object("TreeViewMain")
self.FlatpakRefsList = self.FlatpakInstallation.list_installed_refs()
self.FlatHubRefsList = self.FlatpakInstallation.list_remote_refs_sync(
"flathub", Gio.Cancellable.new())
for item in self.FlatpakRefsList:
for item2 in self.FlatHubRefsList:
if item.get_name() == item2.get_name():
self.FlatHubRefsList.remove(item2)
self.FlatpakRefsList = self.FlatpakRefsList + self.FlatHubRefsList
self.ListStoreMain = MainBuilder.get_object("ListStoreMain")
for item in self.FlatpakRefsList: self.SearchEntryMain = main_builder.get_object("SearchEntryMain")
if item.get_kind() == Flatpak.RefKind.APP and \ self.SearchEntryMain.set_placeholder_text(_("Click here for search"))
item.get_arch() == Flatpak.get_default_arch():
isremoteref = isinstance(item, Flatpak.RemoteRef)
isinstalledref = isinstance(item, Flatpak.InstalledRef)
RealName = item.get_name() self.SearchFilter = main_builder.get_object("SearchFilter")
Arch = item.get_arch()
Branch = item.get_branch()
InstalledSize = item.get_installed_size()
InstalledSizeMiB = InstalledSize / 1048576
InstalledSizeMiBAsString = f"{InstalledSizeMiB:.2f}" + " MiB"
if isremoteref:
if item in self.FlatHubRefsList:
RemoteName = "flathub"
else:
RemoteName = ""
DownloadSize = item.get_download_size()
DownloadSizeMiB = DownloadSize / 1048576
DownloadSizeMiBAsString = f"{DownloadSizeMiB:.2f}" + " MiB"
Name = ""
elif isinstalledref:
RemoteName = item.get_origin()
DownloadSizeMiBAsString = ""
Name = item.get_appdata_name()
self.ListStoreMain.append([RealName,
Arch,
Branch,
RemoteName,
InstalledSizeMiBAsString,
DownloadSizeMiBAsString,
Name])
else:
continue
self.TreeViewMain = MainBuilder.get_object("TreeViewMain")
self.SearchEntryMain = MainBuilder.get_object("SearchEntryMain")
self.SearchFilter = MainBuilder.get_object("SearchFilter")
self.SearchFilter.set_visible_func(self.SearchFilterFunction) self.SearchFilter.set_visible_func(self.SearchFilterFunction)
self.HeaderBarShowButton = MainBuilder.get_object("HeaderBarShowButton") self.HeaderBarShowButton = main_builder.get_object("HeaderBarShowButton")
self.HeaderBarShowButton.set_label(_("Show Installed Apps")) self.HeaderBarShowButton.set_label(_("Show Installed Apps"))
self.AboutDialog = AboutBuilder.get_object("AboutDialog") self.AboutDialog = about_builder.get_object("AboutDialog")
self.AboutDialog.set_comments(_("Flatpak GUI for Pardus")) self.AboutDialog.set_comments(_("Flatpak GUI for Pardus"))
self.AboutDialog.set_copyright(_("Copyright (C) 2020 Erdem Ersoy")) self.AboutDialog.set_copyright(_("Copyright (C) 2020 Erdem Ersoy"))
self.AboutDialog.set_program_name(_("Pardus Flatpak GUI")) self.AboutDialog.set_program_name(_("Pardus Flatpak GUI"))
self.AboutDialog.set_version(Version.getVersion()) self.AboutDialog.set_version(Version.getVersion())
self.AboutDialog.set_website_label(_("Pardus Flatpak GUI Web Site")) self.AboutDialog.set_website_label(_("Pardus Flatpak GUI Web Site"))
self.MessageDialogError = MessagesBuilder.get_object( self.MainWindow = main_builder.get_object("MainWindow")
"MessageDialogError") self.MainWindow.set_application(application)
self.MainWindow.show() self.MainWindow.show()
def SearchFilterFunction(self, model, iteration, data): def SearchFilterFunction(self, model, iteration, data):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment