From 6c3e953fea91eb0b84edcb03ed2f82591b2d0732 Mon Sep 17 00:00:00 2001
From: sulincix <parduscix@yandex.ru>
Date: Sun, 8 Dec 2024 22:02:41 +0000
Subject: [PATCH 1/2] use __getattr__ for defining gtk builder object

---
 src/MainWindow.py | 442 +---------------------------------------------
 1 file changed, 9 insertions(+), 433 deletions(-)

diff --git a/src/MainWindow.py b/src/MainWindow.py
index 21be3fc..91bb374 100644
--- a/src/MainWindow.py
+++ b/src/MainWindow.py
@@ -46,7 +46,6 @@
 from Utils import Utils
 from Logger import Logger
 
-
 class MainWindow(object):
     def __init__(self, application):
         self.Application = application
@@ -119,357 +118,44 @@ def __init__(self, application):
         self.isPardusSearching = False
         self.isRepoSearching = False
 
-        self.RepoCategoryListBox = self.GtkBuilder.get_object("RepoCategoryListBox")
-
-        self.HomeCategoryFlowBox = self.GtkBuilder.get_object("HomeCategoryFlowBox")
-        self.SubCategoryFlowBox = self.GtkBuilder.get_object("SubCategoryFlowBox")
-        self.MostDownFlowBox = self.GtkBuilder.get_object("MostDownFlowBox")
-        self.MostRateFlowBox = self.GtkBuilder.get_object("MostRateFlowBox")
-        self.LastAddedFlowBox = self.GtkBuilder.get_object("LastAddedFlowBox")
-
-        self.MyAppsListBox = self.GtkBuilder.get_object("MyAppsListBox")
         self.MyAppsListBox.set_filter_func(self.myapps_filter_func)
 
-        self.hometotaldc = self.GtkBuilder.get_object("hometotaldc")
-        self.hometotalrc = self.GtkBuilder.get_object("hometotalrc")
-        self.statstotaldc = self.GtkBuilder.get_object("statstotaldc")
-        self.statstotalrc = self.GtkBuilder.get_object("statstotalrc")
-        self.statsweblabel = self.GtkBuilder.get_object("statsweblabel")
-
-        self.pardus_searchentry = self.GtkBuilder.get_object("pardus_searchentry")
-        self.repo_searchentry = self.GtkBuilder.get_object("repo_searchentry")
-        self.myapps_searchentry = self.GtkBuilder.get_object("myapps_searchentry")
-        self.repo_searchbutton = self.GtkBuilder.get_object("repo_searchbutton")
-        self.reposearch_buttonbox = self.GtkBuilder.get_object("reposearch_buttonbox")
         self.reposearch_buttonbox.set_homogeneous(False)
-        self.topsearchbutton = self.GtkBuilder.get_object("topsearchbutton")
-        self.toprevealer = self.GtkBuilder.get_object("toprevealer")
-        self.bottomrevealer = self.GtkBuilder.get_object("bottomrevealer")
-
-        self.bottomerrorlabel = self.GtkBuilder.get_object("bottomerrorlabel")
-        self.bottomerrorbutton = self.GtkBuilder.get_object("bottomerrorbutton")
-
-        self.bottominterruptlabel = self.GtkBuilder.get_object("bottominterruptlabel")
-        self.bottominterrupt_fix_button = self.GtkBuilder.get_object("bottominterrupt_fix_button")
-        self.bottominterrupthide_button = self.GtkBuilder.get_object("bottominterrupthide_button")
-
-        self.pop_interruptinfo_label = self.GtkBuilder.get_object("pop_interruptinfo_label")
-        self.pop_interruptinfo_spinner = self.GtkBuilder.get_object("pop_interruptinfo_spinner")
-        self.pop_interruptinfo_ok_button = self.GtkBuilder.get_object("pop_interruptinfo_ok_button")
-        self.interruptpopover = self.GtkBuilder.get_object("interruptpopover")
-
-        self.bottomerrordetails_popover = self.GtkBuilder.get_object("bottomerrordetails_popover")
-        self.bottomerrordetails_label = self.GtkBuilder.get_object("bottomerrordetails_label")
-        self.bottomerrordetails_button = self.GtkBuilder.get_object("bottomerrordetails_button")
-
-        self.sortPardusAppsCombo = self.GtkBuilder.get_object("sortPardusAppsCombo")
-        self.SubCatCombo = self.GtkBuilder.get_object("SubCatCombo")
-        self.ui_showapps_buttonbox = self.GtkBuilder.get_object("ui_showapps_buttonbox")
-        self.ui_showall_button = self.GtkBuilder.get_object("ui_showall_button")
-        self.ui_showinstalled_button = self.GtkBuilder.get_object("ui_showinstalled_button")
-        self.ui_shownotinstalled_button = self.GtkBuilder.get_object("ui_shownotinstalled_button")
-        self.ui_showappcount_label = self.GtkBuilder.get_object("ui_showappcount_label")
-
-        self.mainstack = self.GtkBuilder.get_object("mainstack")
-        self.homestack = self.GtkBuilder.get_object("homestack")
-        self.searchstack = self.GtkBuilder.get_object("searchstack")
-        self.bottomstack = self.GtkBuilder.get_object("bottomstack")
-        self.commentstack = self.GtkBuilder.get_object("commentstack")
-        self.prefstack = self.GtkBuilder.get_object("prefstack")
-        self.activatestack = self.GtkBuilder.get_object("activatestack")
-        self.pardusAppsStack = self.GtkBuilder.get_object("pardusAppsStack")
-        self.tryfixstack = self.GtkBuilder.get_object("tryfixstack")
-        self.queuestack = self.GtkBuilder.get_object("queuestack")
-        self.myappsstack = self.GtkBuilder.get_object("myappsstack")
-        self.myappsdetailsstack = self.GtkBuilder.get_object("myappsdetailsstack")
-        self.activate_repo_label = self.GtkBuilder.get_object("activate_repo_label")
-        self.activate_info_label = self.GtkBuilder.get_object("activate_info_label")
-        self.activating_spinner = self.GtkBuilder.get_object("activating_spinner")
-        self.dIcon = self.GtkBuilder.get_object("dIcon")
-        self.dName = self.GtkBuilder.get_object("dName")
-        self.dActionButton = self.GtkBuilder.get_object("dActionButton")
-        self.dActionInfoButton = self.GtkBuilder.get_object("dActionInfoButton")
-        self.dActionCancelButton = self.GtkBuilder.get_object("dActionCancelButton")
-        self.dActionButtonBox = self.GtkBuilder.get_object("dActionButtonBox")
+
         self.dActionButtonBox.set_homogeneous(False)
-        self.dOpenButton = self.GtkBuilder.get_object("dOpenButton")
-        self.dAptUpdateButton = self.GtkBuilder.get_object("dAptUpdateButton")
-        self.dAptUpdateInfoLabel = self.GtkBuilder.get_object("dAptUpdateInfoLabel")
-        self.dAptUpdateSpinner = self.GtkBuilder.get_object("dAptUpdateSpinner")
-        self.dAptUpdateBox = self.GtkBuilder.get_object("dAptUpdateBox")
-        self.dDisclaimerButton = self.GtkBuilder.get_object("dDisclaimerButton")
-        self.DisclaimerPopover = self.GtkBuilder.get_object("DisclaimerPopover")
-        self.RequiredChangesPopover = self.GtkBuilder.get_object("RequiredChangesPopover")
-        self.dapp_packagename_box = self.GtkBuilder.get_object("dapp_packagename_box")
-        self.dapp_toremove_box = self.GtkBuilder.get_object("dapp_toremove_box")
-        self.dapp_toinstall_box = self.GtkBuilder.get_object("dapp_toinstall_box")
-        self.dapp_broken_box = self.GtkBuilder.get_object("dapp_broken_box")
-        self.dapp_fsize_box = self.GtkBuilder.get_object("dapp_fsize_box")
-        self.dapp_dsize_box = self.GtkBuilder.get_object("dapp_dsize_box")
-        self.dapp_isize_box = self.GtkBuilder.get_object("dapp_isize_box")
-        self.dapp_packagename_label = self.GtkBuilder.get_object("dapp_packagename_label")
-        self.dapp_toremove_label = self.GtkBuilder.get_object("dapp_toremove_label")
-        self.dapp_toinstall_label = self.GtkBuilder.get_object("dapp_toinstall_label")
-        self.dapp_broken_label = self.GtkBuilder.get_object("dapp_broken_label")
-        self.dapp_fsize_label = self.GtkBuilder.get_object("dapp_fsize_label")
-        self.dapp_dsize_label = self.GtkBuilder.get_object("dapp_dsize_label")
-        self.dapp_isize_label = self.GtkBuilder.get_object("dapp_isize_label")
-
-        self.dDescriptionLabel = self.GtkBuilder.get_object("dDescriptionLabel")
-        self.dPackage = self.GtkBuilder.get_object("dPackage")
-        self.dMaintainer = self.GtkBuilder.get_object("dMaintainer")
-        self.dVersion = self.GtkBuilder.get_object("dVersion")
-        self.dSize = self.GtkBuilder.get_object("dSize")
-        self.dSizeTitle = self.GtkBuilder.get_object("dSizeTitle")
-        self.dSizeGrid = self.GtkBuilder.get_object("dSizeGrid")
-        self.dComponent = self.GtkBuilder.get_object("dComponent")
-        self.dType = self.GtkBuilder.get_object("dType")
-        self.dCategory = self.GtkBuilder.get_object("dCategory")
-        self.dLicense = self.GtkBuilder.get_object("dLicense")
-        self.licensePopover = self.GtkBuilder.get_object("licensePopover")
-        self.licenseHeader = self.GtkBuilder.get_object("licenseHeader")
-        self.licenseBody = self.GtkBuilder.get_object("licenseBody")
-        self.dCodename = self.GtkBuilder.get_object("dCodename")
-        self.dWeb = self.GtkBuilder.get_object("dWeb")
-        self.dMail = self.GtkBuilder.get_object("dMail")
-        self.dtDownload = self.GtkBuilder.get_object("dtDownload")
-        self.dtTotalRating = self.GtkBuilder.get_object("dtTotalRating")
-        self.dtUserRating = self.GtkBuilder.get_object("dtUserRating")
-        self.dtAverageRating = self.GtkBuilder.get_object("dtAverageRating")
-        self.dViewonweb = self.GtkBuilder.get_object("dViewonweb")
-
-        self.dtStar1 = self.GtkBuilder.get_object("dtStar1")
-        self.dtStar2 = self.GtkBuilder.get_object("dtStar2")
-        self.dtStar3 = self.GtkBuilder.get_object("dtStar3")
-        self.dtStar4 = self.GtkBuilder.get_object("dtStar4")
-        self.dtStar5 = self.GtkBuilder.get_object("dtStar5")
-
-        self.dPardusRating = self.GtkBuilder.get_object("dPardusRating")
-        self.dPardusBar1 = self.GtkBuilder.get_object("dPardusBar1")
-        self.dPardusBar2 = self.GtkBuilder.get_object("dPardusBar2")
-        self.dPardusBar3 = self.GtkBuilder.get_object("dPardusBar3")
-        self.dPardusBar4 = self.GtkBuilder.get_object("dPardusBar4")
-        self.dPardusBar5 = self.GtkBuilder.get_object("dPardusBar5")
-        self.dPardusBarLabel1 = self.GtkBuilder.get_object("dPardusBarLabel1")
-        self.dPardusBarLabel2 = self.GtkBuilder.get_object("dPardusBarLabel2")
-        self.dPardusBarLabel3 = self.GtkBuilder.get_object("dPardusBarLabel3")
-        self.dPardusBarLabel4 = self.GtkBuilder.get_object("dPardusBarLabel4")
-        self.dPardusBarLabel5 = self.GtkBuilder.get_object("dPardusBarLabel5")
-
-        self.dGnomeRating = self.GtkBuilder.get_object("dGnomeRating")
-        self.dGnomeBar1 = self.GtkBuilder.get_object("dGnomeBar1")
-        self.dGnomeBar2 = self.GtkBuilder.get_object("dGnomeBar2")
-        self.dGnomeBar3 = self.GtkBuilder.get_object("dGnomeBar3")
-        self.dGnomeBar4 = self.GtkBuilder.get_object("dGnomeBar4")
-        self.dGnomeBar5 = self.GtkBuilder.get_object("dGnomeBar5")
-        self.dGnomeBarLabel1 = self.GtkBuilder.get_object("dGnomeBarLabel1")
-        self.dGnomeBarLabel2 = self.GtkBuilder.get_object("dGnomeBarLabel2")
-        self.dGnomeBarLabel3 = self.GtkBuilder.get_object("dGnomeBarLabel3")
-        self.dGnomeBarLabel4 = self.GtkBuilder.get_object("dGnomeBarLabel4")
-        self.dGnomeBarLabel5 = self.GtkBuilder.get_object("dGnomeBarLabel5")
-
-        self.wpcStar1 = self.GtkBuilder.get_object("wpcStar1")
-        self.wpcStar2 = self.GtkBuilder.get_object("wpcStar2")
-        self.wpcStar3 = self.GtkBuilder.get_object("wpcStar3")
-        self.wpcStar4 = self.GtkBuilder.get_object("wpcStar4")
-        self.wpcStar5 = self.GtkBuilder.get_object("wpcStar5")
-        self.wpcStarLabel = self.GtkBuilder.get_object("wpcStarLabel")
-        self.wpcinfoLabel = self.GtkBuilder.get_object("wpcinfoLabel")
-        self.wpcComment = self.GtkBuilder.get_object("wpcComment")
-        self.wpcAuthor = self.GtkBuilder.get_object("wpcAuthor")
-        self.wpcSendButton = self.GtkBuilder.get_object("wpcSendButton")
-        self.wpcgetnameLabel = self.GtkBuilder.get_object("wpcgetnameLabel")
-        self.wpcgetcommentLabel = self.GtkBuilder.get_object("wpcgetcommentLabel")
-        self.wpcresultLabel = self.GtkBuilder.get_object("wpcresultLabel")
-        self.wpcformcontrolLabel = self.GtkBuilder.get_object("wpcformcontrolLabel")
-        self.addCommentInfoLabel = self.GtkBuilder.get_object("addCommentInfoLabel")
-        self.addCommentButton = self.GtkBuilder.get_object("addCommentButton")
-        self.wpcCommentBox = self.GtkBuilder.get_object("wpcCommentBox")
-        self.pcMoreButton = self.GtkBuilder.get_object("pcMoreButton")
-        self.gcMoreButtonTR = self.GtkBuilder.get_object("gcMoreButtonTR")
-        self.gcMoreButtonEN = self.GtkBuilder.get_object("gcMoreButtonEN")
-        self.gcStack = self.GtkBuilder.get_object("gcStack")
-        self.CommentsNotebook = self.GtkBuilder.get_object("CommentsNotebook")
-        self.gcInfoLabel = self.GtkBuilder.get_object("gcInfoLabel")
+
         self.gcInfoLabel.set_markup("<small>{}</small>".format(
             _("These comments are pulled from <a href='https://odrs.gnome.org'>GNOME ODRS</a>.")))
 
         self.wpcstar = 0
 
-        self.raction = self.GtkBuilder.get_object("raction")
-        self.ractioninfo = self.GtkBuilder.get_object("ractioninfo")
-        self.raction_buttonbox = self.GtkBuilder.get_object("raction_buttonbox")
         self.raction_buttonbox.set_homogeneous(False)
-        self.rpackage = self.GtkBuilder.get_object("rpackage_name")
-        self.rtitle = self.GtkBuilder.get_object("rtitle")
-        self.rdetail = self.GtkBuilder.get_object("rdetail")
-        self.r_maintainername = self.GtkBuilder.get_object("r_maintainername")
-        self.r_maintainermail = self.GtkBuilder.get_object("r_maintainermail")
-        self.r_homepage = self.GtkBuilder.get_object("r_homepage")
-        self.r_section = self.GtkBuilder.get_object("r_section")
-        self.r_architecture = self.GtkBuilder.get_object("r_architecture")
-        self.r_version = self.GtkBuilder.get_object("r_version")
-        self.r_origin = self.GtkBuilder.get_object("r_origin")
-        self.rstack = self.GtkBuilder.get_object("rstack")
-
-        self.repo_required_changes_popover = self.GtkBuilder.get_object("repo_required_changes_popover")
-        self.repo_required_stack = self.GtkBuilder.get_object("repo_required_stack")
-        self.repo_required_spinner = self.GtkBuilder.get_object("repo_required_spinner")
-        self.rapp_packagename_box = self.GtkBuilder.get_object("rapp_packagename_box")
-        self.rapp_package_broken_box = self.GtkBuilder.get_object("rapp_package_broken_box")
-        self.rapp_toremove_box = self.GtkBuilder.get_object("rapp_toremove_box")
-        self.rapp_toinstall_box = self.GtkBuilder.get_object("rapp_toinstall_box")
-        self.rapp_broken_box = self.GtkBuilder.get_object("rapp_broken_box")
-        self.rapp_size_box = self.GtkBuilder.get_object("rapp_size_box")
-        self.rapp_fsize_box = self.GtkBuilder.get_object("rapp_fsize_box")
-        self.rapp_dsize_box = self.GtkBuilder.get_object("rapp_dsize_box")
-        self.rapp_isize_box = self.GtkBuilder.get_object("rapp_isize_box")
-        self.rapp_packagename_label = self.GtkBuilder.get_object("rapp_packagename_label")
-        self.rapp_toremove_label = self.GtkBuilder.get_object("rapp_toremove_label")
-        self.rapp_toinstall_label = self.GtkBuilder.get_object("rapp_toinstall_label")
-        self.rapp_broken_label = self.GtkBuilder.get_object("rapp_broken_label")
-        self.rapp_fsize_label = self.GtkBuilder.get_object("rapp_fsize_label")
-        self.rapp_dsize_label = self.GtkBuilder.get_object("rapp_dsize_label")
-        self.rapp_isize_label = self.GtkBuilder.get_object("rapp_isize_label")
-
-        self.store_button = self.GtkBuilder.get_object("store_button")
+
         self.store_button.get_style_context().add_class("suggested-action")
-        self.repo_button = self.GtkBuilder.get_object("repo_button")
-        self.myapps_button = self.GtkBuilder.get_object("myapps_button")
+
         self.updates_button = Gtk.Button.new()
         self.updates_button.set_label(_("Updates"))
         self.updates_button.connect("clicked", self.on_updates_button_clicked)
-        self.queue_button = self.GtkBuilder.get_object("queue_button")
-        self.header_buttonbox = self.GtkBuilder.get_object("header_buttonbox")
 
-        self.splashspinner = self.GtkBuilder.get_object("splashspinner")
-        self.splashbar = self.GtkBuilder.get_object("splashbar")
-        self.splashlabel = self.GtkBuilder.get_object("splashlabel")
         self.splashbarstatus = True
 
-        self.upgrade_stack = self.GtkBuilder.get_object("upgrade_stack")
-        self.upgrade_stack_spinnner = self.GtkBuilder.get_object("upgrade_stack_spinnner")
-        self.upgradables_listbox = self.GtkBuilder.get_object("upgradables_listbox")
-        self.upgrade_vte_sw = self.GtkBuilder.get_object("upgrade_vte_sw")
-        self.upgrade_buttonbox = self.GtkBuilder.get_object("upgrade_buttonbox")
         self.upgrade_buttonbox.set_homogeneous(False)
-        self.upgrade_options_popover = self.GtkBuilder.get_object("upgrade_options_popover")
-        self.upgrade_options_defaults_button = self.GtkBuilder.get_object("upgrade_options_defaults_button")
-        self.upgrade_new_conf_radiobutton = self.GtkBuilder.get_object("upgrade_new_conf_radiobutton")
-        self.upgrade_old_conf_radiobutton = self.GtkBuilder.get_object("upgrade_old_conf_radiobutton")
-        self.upgrade_ask_conf_radiobutton = self.GtkBuilder.get_object("upgrade_ask_conf_radiobutton")
-        self.upgrade_withyq_radiobutton = self.GtkBuilder.get_object("upgrade_withyq_radiobutton")
-        self.upgrade_withoutyq_radiobutton = self.GtkBuilder.get_object("upgrade_withoutyq_radiobutton")
-        self.upgrade_info_back_button = self.GtkBuilder.get_object("upgrade_info_back_button")
-        self.upgrade_info_ok_button = self.GtkBuilder.get_object("upgrade_info_ok_button")
-        self.upgrade_info_dpkgfix_button = self.GtkBuilder.get_object("upgrade_info_dpkgfix_button")
-        self.upgrade_info_box = self.GtkBuilder.get_object("upgrade_info_box")
-        self.upgrade_info_label = self.GtkBuilder.get_object("upgrade_info_label")
-        self.upgrade_dsize_label = self.GtkBuilder.get_object("upgrade_dsize_label")
-        self.upgrade_isize_label = self.GtkBuilder.get_object("upgrade_isize_label")
-        self.upgrade_ucount_label = self.GtkBuilder.get_object("upgrade_ucount_label")
-        self.upgrade_ncount_label = self.GtkBuilder.get_object("upgrade_ncount_label")
-        self.upgrade_rcount_label = self.GtkBuilder.get_object("upgrade_rcount_label")
-        self.upgrade_kcount_label = self.GtkBuilder.get_object("upgrade_kcount_label")
-        self.upgrade_dsize_box = self.GtkBuilder.get_object("upgrade_dsize_box")
-        self.upgrade_isize_box = self.GtkBuilder.get_object("upgrade_isize_box")
-        self.upgrade_ucount_box = self.GtkBuilder.get_object("upgrade_ucount_box")
-        self.upgrade_ncount_box = self.GtkBuilder.get_object("upgrade_ncount_box")
-        self.upgrade_rcount_box = self.GtkBuilder.get_object("upgrade_rcount_box")
-        self.upgrade_kcount_box = self.GtkBuilder.get_object("upgrade_kcount_box")
-
-        self.tryfixButton = self.GtkBuilder.get_object("tryfixButton")
-        self.tryfixSpinner = self.GtkBuilder.get_object("tryfixSpinner")
-        self.headerAptUpdateSpinner = self.GtkBuilder.get_object("headerAptUpdateSpinner")
-
-        self.ui_myapps_app = self.GtkBuilder.get_object("ui_myapps_app")
-        self.ui_myapps_package = self.GtkBuilder.get_object("ui_myapps_package")
-        self.ui_myapps_icon = self.GtkBuilder.get_object("ui_myapps_icon")
-        self.ui_myapps_description = self.GtkBuilder.get_object("ui_myapps_description")
-        self.ui_myapps_uninstall_button = self.GtkBuilder.get_object("ui_myapps_uninstall_button")
-        self.ui_myapps_accept_disclaimer = self.GtkBuilder.get_object("ui_myapps_accept_disclaimer")
-        self.ui_myapps_spinner = self.GtkBuilder.get_object("ui_myapps_spinner")
-        self.ui_myapps_disclaimer_label = self.GtkBuilder.get_object("ui_myapps_disclaimer_label")
-        self.ui_myapps_notfoundname_box = self.GtkBuilder.get_object("ui_myapps_notfoundname_box")
-        self.ui_myapps_notfoundname_image = self.GtkBuilder.get_object("ui_myapps_notfoundname_image")
-        self.ui_myapps_notfoundname_name = self.GtkBuilder.get_object("ui_myapps_notfoundname_name")
-        self.ui_myapp_toremove_label = self.GtkBuilder.get_object("ui_myapp_toremove_label")
-        self.ui_myapp_toinstall_label = self.GtkBuilder.get_object("ui_myapp_toinstall_label")
-        self.ui_myapp_broken_label = self.GtkBuilder.get_object("ui_myapp_broken_label")
-        self.ui_myapp_fsize_label = self.GtkBuilder.get_object("ui_myapp_fsize_label")
-        self.ui_myapp_dsize_label = self.GtkBuilder.get_object("ui_myapp_dsize_label")
-        self.ui_myapp_isize_label = self.GtkBuilder.get_object("ui_myapp_isize_label")
-        self.ui_myapp_toremove_box = self.GtkBuilder.get_object("ui_myapp_toremove_box")
-        self.ui_myapp_toinstall_box = self.GtkBuilder.get_object("ui_myapp_toinstall_box")
-        self.ui_myapp_broken_box = self.GtkBuilder.get_object("ui_myapp_broken_box")
-        self.ui_myapp_fsize_box = self.GtkBuilder.get_object("ui_myapp_fsize_box")
-        self.ui_myapp_dsize_box = self.GtkBuilder.get_object("ui_myapp_dsize_box")
-        self.ui_myapp_isize_box = self.GtkBuilder.get_object("ui_myapp_isize_box")
-        self.MyAppsDetailsPopover = self.GtkBuilder.get_object("MyAppsDetailsPopover")
-        self.MyAppsDetailsPopover.set_relative_to(self.MyAppsListBox)
-        self.myapps_apps_sw = self.GtkBuilder.get_object("myapps_apps_sw")
-        self.ma_maintainername = self.GtkBuilder.get_object("ma_maintainername")
-        self.ma_maintainermail = self.GtkBuilder.get_object("ma_maintainermail")
-        self.ma_homepage = self.GtkBuilder.get_object("ma_homepage")
-        self.ma_version = self.GtkBuilder.get_object("ma_version")
-        self.ma_origin = self.GtkBuilder.get_object("ma_origin")
-        self.ma_size = self.GtkBuilder.get_object("ma_size")
-        # self.ma_section = self.GtkBuilder.get_object("ma_section")
-        # self.ma_architecture = self.GtkBuilder.get_object("ma_architecture")
-        self.ma_action_buttonbox = self.GtkBuilder.get_object("ma_action_buttonbox")
-        self.ma_action_button = self.GtkBuilder.get_object("ma_action_button")
-        self.ma_action_info_button = self.GtkBuilder.get_object("ma_action_info_button")
-        self.ma_action_buttonbox.set_homogeneous(False)
-
-        # myapps remove popup
-        self.ui_myapp_pop_stack = self.GtkBuilder.get_object("ui_myapp_pop_stack")
-        self.ui_myapp_pop_spinner = self.GtkBuilder.get_object("ui_myapp_pop_spinner")
-        self.ui_myapp_pop_sw = self.GtkBuilder.get_object("ui_myapp_pop_sw")
 
-        self.ui_myapp_pop_app = self.GtkBuilder.get_object("ui_myapp_pop_app")
-        self.ui_myapp_pop_package = self.GtkBuilder.get_object("ui_myapp_pop_package")
-        self.ui_myapp_pop_icon = self.GtkBuilder.get_object("ui_myapp_pop_icon")
-        self.ui_myapp_pop_uninstall_button = self.GtkBuilder.get_object("ui_myapp_pop_uninstall_button")
-
-        self.ui_myapp_pop_toremove_label = self.GtkBuilder.get_object("ui_myapp_pop_toremove_label")
-        self.ui_myapp_pop_toinstall_label = self.GtkBuilder.get_object("ui_myapp_pop_toinstall_label")
-        self.ui_myapp_pop_broken_label = self.GtkBuilder.get_object("ui_myapp_pop_broken_label")
-        self.ui_myapp_pop_fsize_label = self.GtkBuilder.get_object("ui_myapp_pop_fsize_label")
-        self.ui_myapp_pop_dsize_label = self.GtkBuilder.get_object("ui_myapp_pop_dsize_label")
-        self.ui_myapp_pop_isize_label = self.GtkBuilder.get_object("ui_myapp_pop_isize_label")
-
-        self.ui_myapp_pop_disclaimer_label = self.GtkBuilder.get_object("ui_myapp_pop_disclaimer_label")
+        self.MyAppsDetailsPopover.set_relative_to(self.MyAppsListBox)
 
-        self.ui_myapp_pop_notfound_image = self.GtkBuilder.get_object("ui_myapp_pop_notfound_image")
-        self.ui_myapp_pop_notfound_name = self.GtkBuilder.get_object("ui_myapp_pop_notfound_name")
+        # 
+        # 
 
-        self.ui_myapp_pop_toremove_box = self.GtkBuilder.get_object("ui_myapp_pop_toremove_box")
-        self.ui_myapp_pop_toinstall_box = self.GtkBuilder.get_object("ui_myapp_pop_toinstall_box")
-        self.ui_myapp_pop_broken_box = self.GtkBuilder.get_object("ui_myapp_pop_broken_box")
-        self.ui_myapp_pop_fsize_box = self.GtkBuilder.get_object("ui_myapp_pop_fsize_box")
-        self.ui_myapp_pop_dsize_box = self.GtkBuilder.get_object("ui_myapp_pop_dsize_box")
-        self.ui_myapp_pop_isize_box = self.GtkBuilder.get_object("ui_myapp_pop_isize_box")
+        self.ma_action_buttonbox.set_homogeneous(False)
 
-        self.ui_myapp_to_store_button = self.GtkBuilder.get_object("ui_myapp_to_store_button")
+        # myapps remove popup
 
-        self.PardusAppsIconView = self.GtkBuilder.get_object("PardusAppsIconView")
         self.PardusAppsIconView.set_pixbuf_column(0)
         self.PardusAppsIconView.set_text_column(3)
 
-        self.EditorAppsIconView = self.GtkBuilder.get_object("EditorAppsIconView")
         self.EditorAppsIconView.set_pixbuf_column(0)
         self.EditorAppsIconView.set_text_column(3)
 
-        self.RepoAppsTreeView = self.GtkBuilder.get_object("RepoAppsTreeView")
-
-        self.PardusAppListStore = self.GtkBuilder.get_object("PardusAppListStore")
-        self.EditorListStore = self.GtkBuilder.get_object("EditorListStore")
-        self.RepoAppListStore = self.GtkBuilder.get_object("RepoAppListStore")
-
-        self.HeaderBarMenuButton = self.GtkBuilder.get_object("HeaderBarMenuButton")
-        self.PopoverMenu = self.GtkBuilder.get_object("PopoverMenu")
-
-        self.aboutdialog = self.GtkBuilder.get_object("aboutdialog")
         self.aboutdialog.set_program_name(_("Pardus Software Center"))
         if self.aboutdialog.get_titlebar() is None:
             about_headerbar = Gtk.HeaderBar.new()
@@ -479,95 +165,6 @@ def __init__(self, application):
             about_headerbar.show_all()
             self.aboutdialog.set_titlebar(about_headerbar)
 
-        self.switchUSI = self.GtkBuilder.get_object("switchUSI")
-        self.switchEA = self.GtkBuilder.get_object("switchEA")
-        self.switchSAA = self.GtkBuilder.get_object("switchSAA")
-        self.switchHERA = self.GtkBuilder.get_object("switchHERA")
-        self.switchSGC = self.GtkBuilder.get_object("switchSGC")
-        self.switchUDT = self.GtkBuilder.get_object("switchUDT")
-        self.switchAPTU = self.GtkBuilder.get_object("switchAPTU")
-        self.preflabel = self.GtkBuilder.get_object("preflabel")
-        self.prefServerLabel = self.GtkBuilder.get_object("prefServerLabel")
-        self.prefcachebutton = self.GtkBuilder.get_object("prefcachebutton")
-        self.prefcorrectbutton = self.GtkBuilder.get_object("prefcorrectbutton")
-        self.ui_cache_size = self.GtkBuilder.get_object("ui_cache_size")
-        self.PopoverPrefTip = self.GtkBuilder.get_object("PopoverPrefTip")
-        self.prefTipLabel = self.GtkBuilder.get_object("prefTipLabel")
-        self.tip_usi = self.GtkBuilder.get_object("tip_usi")
-        self.tip_ea = self.GtkBuilder.get_object("tip_ea")
-        self.tip_soaa = self.GtkBuilder.get_object("tip_soaa")
-        self.tip_hera = self.GtkBuilder.get_object("tip_hera")
-        self.tip_icons = self.GtkBuilder.get_object("tip_icons")
-        self.tip_sgc = self.GtkBuilder.get_object("tip_sgc")
-        self.tip_udt = self.GtkBuilder.get_object("tip_udt")
-        self.tip_aptu = self.GtkBuilder.get_object("tip_aptu")
-        self.setServerIconCombo = self.GtkBuilder.get_object("setServerIconCombo")
-        self.selecticonsBox = self.GtkBuilder.get_object("selecticonsBox")
-        self.passwordlessbutton = self.GtkBuilder.get_object("passwordlessbutton")
-
-        self.menubackbutton = self.GtkBuilder.get_object("menubackbutton")
-
-        self.updatecontrolbutton = self.GtkBuilder.get_object("updatecontrolbutton")
-        self.updatetextview = self.GtkBuilder.get_object("updatetextview")
-        self.updatespinner = self.GtkBuilder.get_object("updatespinner")
-
-        self.updateerrorlabel = self.GtkBuilder.get_object("updateerrorlabel")
-
-        self.residualtextview = self.GtkBuilder.get_object("residualtextview")
-        self.removabletextview = self.GtkBuilder.get_object("removabletextview")
-        self.upgradabletextview = self.GtkBuilder.get_object("upgradabletextview")
-
-        self.upgradebutton = self.GtkBuilder.get_object("upgradebutton")
-        self.autoremovebutton = self.GtkBuilder.get_object("autoremovebutton")
-        self.residualbutton = self.GtkBuilder.get_object("residualbutton")
-
-        self.upgradablebox = self.GtkBuilder.get_object("upgradablebox")
-        self.removablebox = self.GtkBuilder.get_object("removablebox")
-        self.residualbox = self.GtkBuilder.get_object("residualbox")
-
-        self.progresstextlabel = self.GtkBuilder.get_object("progresstextlabel")
-        self.topspinner = self.GtkBuilder.get_object("topspinner")
-
-        self.noserverlabel = self.GtkBuilder.get_object("noserverlabel")
-
-        self.NavCategoryImage = self.GtkBuilder.get_object("NavCategoryImage")
-        self.NavCategoryLabel = self.GtkBuilder.get_object("NavCategoryLabel")
-
-        self.menu_suggestapp = self.GtkBuilder.get_object("menu_suggestapp")
-        self.menu_statistics = self.GtkBuilder.get_object("menu_statistics")
-
-        self.SuggestAppName = self.GtkBuilder.get_object("SuggestAppName")
-        self.SuggestCat = self.GtkBuilder.get_object("SuggestCat")
-        self.SuggestDescTR = self.GtkBuilder.get_object("SuggestDescTR")
-        self.SuggestDescEN = self.GtkBuilder.get_object("SuggestDescEN")
-        self.SuggestLicense = self.GtkBuilder.get_object("SuggestLicense")
-        self.SuggestCopyright = self.GtkBuilder.get_object("SuggestCopyright")
-        self.SuggestWeb = self.GtkBuilder.get_object("SuggestWeb")
-        self.SuggestIconChooser = self.GtkBuilder.get_object("SuggestIconChooser")
-        self.SuggestInRepo = self.GtkBuilder.get_object("SuggestInRepo")
-
-        self.SuggestName = self.GtkBuilder.get_object("SuggestName")
-        self.SuggestMail = self.GtkBuilder.get_object("SuggestMail")
-
-        self.SuggestInfoLabel = self.GtkBuilder.get_object("SuggestInfoLabel")
-        self.SuggestSend = self.GtkBuilder.get_object("SuggestSend")
-
-        self.SuggestStack = self.GtkBuilder.get_object("SuggestStack")
-
-        self.SuggestScroll = self.GtkBuilder.get_object("SuggestScroll")
-        self.PardusAppDetailScroll = self.GtkBuilder.get_object("PardusAppDetailScroll")
-
-        self.PardusCommentScroll = self.GtkBuilder.get_object("PardusCommentScroll")
-        self.GnomeTRCommentScroll = self.GtkBuilder.get_object("GnomeTRCommentScroll")
-        self.GnomeENCommentScroll = self.GtkBuilder.get_object("GnomeENCommentScroll")
-
-        self.statstack = self.GtkBuilder.get_object("statstack")
-        self.statmainstack = self.GtkBuilder.get_object("statmainstack")
-        self.stat_spinner = self.GtkBuilder.get_object("stat_spinner")
-        self.stat_ilabel = self.GtkBuilder.get_object("stat_ilabel")
-        self.stats1ViewPort = self.GtkBuilder.get_object("stats1ViewPort")
-        self.stats2ViewPort = self.GtkBuilder.get_object("stats2ViewPort")
-        self.stats3ViewPort = self.GtkBuilder.get_object("stats3ViewPort")
         self.matplot_error = _("matplotlib is not found")
 
         self.PardusCurrentCategory = -1
@@ -588,27 +185,13 @@ def __init__(self, application):
 
         self.store_button_clicked = False
 
-        self.PardusCategoryFilter = self.GtkBuilder.get_object("PardusCategoryFilter")
         self.PardusCategoryFilter.set_visible_func(self.PardusCategoryFilterFunction)
 
-        self.dImage1 = self.GtkBuilder.get_object("dImage1")
-        self.dImage2 = self.GtkBuilder.get_object("dImage2")
-        self.ImagePopover = self.GtkBuilder.get_object("ImagePopover")
-        self.ImagePopoverStack = self.GtkBuilder.get_object("ImagePopoverStack")
-        self.pop1Image = self.GtkBuilder.get_object("pop1Image")
-        self.pop2Image = self.GtkBuilder.get_object("pop2Image")
         self.pixbuf1 = None
         self.pixbuf2 = None
-        self.imgLabel = self.GtkBuilder.get_object("imgLabel")
-        self.appimage1stack = self.GtkBuilder.get_object("appimage1stack")
-        self.appimage2stack = self.GtkBuilder.get_object("appimage2stack")
-        self.fullscreen_image = self.GtkBuilder.get_object("fullscreen_image")
 
         self.mac = self.getMac()
 
-        self.par_desc_more = self.GtkBuilder.get_object("par_desc_more")
-
-        self.MainWindow = self.GtkBuilder.get_object("MainWindow")
         self.MainWindow.set_application(application)
         self.MainWindow.set_title(_("Pardus Software Center"))
         self.controlDisplay()
@@ -752,12 +335,6 @@ def __init__(self, application):
         self.upgrade_vte_sw.add(self.upgrade_vteterm)
 
         self.dpkgconfigure_vteterm = None
-        self.interrupt_vte_box = self.GtkBuilder.get_object("interrupt_vte_box")
-
-        self.PardusCommentListBox = self.GtkBuilder.get_object("PardusCommentListBox")
-        self.GnomeCommentListBoxEN = self.GtkBuilder.get_object("GnomeCommentListBoxEN")
-        self.GnomeCommentListBoxTR = self.GtkBuilder.get_object("GnomeCommentListBoxTR")
-        self.QueueListBox = self.GtkBuilder.get_object("QueueListBox")
 
         # Set version
         # If not getted from __version__ file then accept version in MainWindow.glade file
@@ -2934,7 +2511,6 @@ def set_myapp_popup_details(self, myapp):
             self.ui_myapp_pop_stack.set_visible_child_name("details")
             self.ui_myapp_pop_uninstall_button.grab_focus()
 
-
         else:
             self.Logger.info("package not found")
             self.ui_myapp_pop_stack.set_visible_child_name("notfound")

From a1236be3e7a8432e5ee239a8b7627f074b4b6300 Mon Sep 17 00:00:00 2001
From: sulincix <parduscix@yandex.ru>
Date: Sun, 8 Dec 2024 22:03:45 +0000
Subject: [PATCH 2/2] use __getattr__ for defining gtk builder object

---
 src/MainWindow.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/MainWindow.py b/src/MainWindow.py
index 91bb374..08c8719 100644
--- a/src/MainWindow.py
+++ b/src/MainWindow.py
@@ -47,6 +47,11 @@
 from Logger import Logger
 
 class MainWindow(object):
+    def __getattr__(self, name):
+        # return object if exists
+        if self.GtkBuilder.get_object(name):
+            return self.GtkBuilder.get_object(name)
+
     def __init__(self, application):
         self.Application = application