--- /dev/null
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file '/home/andrew/Projects/qtgentools/ui/mainwindow.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.1
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ MainWindow.setObjectName("MainWindow")
+ MainWindow.resize(714, 450)
+ self.centralWidget = QtWidgets.QWidget(MainWindow)
+ self.centralWidget.setObjectName("centralWidget")
+ self.gridLayout_2 = QtWidgets.QGridLayout(self.centralWidget)
+ self.gridLayout_2.setObjectName("gridLayout_2")
+ self.tw_1 = QtWidgets.QTabWidget(self.centralWidget)
+ self.tw_1.setObjectName("tw_1")
+ self.tab_search = QtWidgets.QWidget()
+ self.tab_search.setObjectName("tab_search")
+ self.gridLayout = QtWidgets.QGridLayout(self.tab_search)
+ self.gridLayout.setObjectName("gridLayout")
+ self.s_pb_expand_pkg = QtWidgets.QPushButton(self.tab_search)
+ self.s_pb_expand_pkg.setObjectName("s_pb_expand_pkg")
+ self.gridLayout.addWidget(self.s_pb_expand_pkg, 5, 1, 1, 2)
+ self.s_pb_updatedb = QtWidgets.QPushButton(self.tab_search)
+ self.s_pb_updatedb.setObjectName("s_pb_updatedb")
+ self.gridLayout.addWidget(self.s_pb_updatedb, 5, 5, 1, 2)
+ self.s_le_search = QtWidgets.QLineEdit(self.tab_search)
+ self.s_le_search.setText("")
+ self.s_le_search.setObjectName("s_le_search")
+ self.gridLayout.addWidget(self.s_le_search, 0, 8, 1, 2)
+ self.s_le_command = QtWidgets.QLineEdit(self.tab_search)
+ self.s_le_command.setEnabled(False)
+ self.s_le_command.setObjectName("s_le_command")
+ self.gridLayout.addWidget(self.s_le_command, 5, 7, 1, 4)
+ self.s_pb_search = QtWidgets.QPushButton(self.tab_search)
+ self.s_pb_search.setObjectName("s_pb_search")
+ self.gridLayout.addWidget(self.s_pb_search, 0, 10, 1, 1)
+ spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Minimum)
+ self.gridLayout.addItem(spacerItem, 2, 9, 1, 1)
+ self.s_pb_expand_all = QtWidgets.QPushButton(self.tab_search)
+ self.s_pb_expand_all.setObjectName("s_pb_expand_all")
+ self.gridLayout.addWidget(self.s_pb_expand_all, 5, 0, 1, 1)
+ self.s_pb_collapse = QtWidgets.QPushButton(self.tab_search)
+ self.s_pb_collapse.setObjectName("s_pb_collapse")
+ self.gridLayout.addWidget(self.s_pb_collapse, 5, 3, 1, 2)
+ spacerItem1 = QtWidgets.QSpacerItem(81, 48, QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
+ self.gridLayout.addItem(spacerItem1, 1, 10, 2, 1)
+ self.s_tv_results = QtWidgets.QTreeView(self.tab_search)
+ self.s_tv_results.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
+ self.s_tv_results.setProperty("showDropIndicator", False)
+ self.s_tv_results.setAlternatingRowColors(True)
+ self.s_tv_results.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection)
+ self.s_tv_results.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectItems)
+ self.s_tv_results.setSortingEnabled(True)
+ self.s_tv_results.setWordWrap(False)
+ self.s_tv_results.setObjectName("s_tv_results")
+ self.s_tv_results.header().setSortIndicatorShown(True)
+ self.gridLayout.addWidget(self.s_tv_results, 3, 0, 1, 11)
+ self.verticalLayout_4 = QtWidgets.QVBoxLayout()
+ self.verticalLayout_4.setObjectName("verticalLayout_4")
+ self.s_cb_stable = QtWidgets.QCheckBox(self.tab_search)
+ self.s_cb_stable.setObjectName("s_cb_stable")
+ self.verticalLayout_4.addWidget(self.s_cb_stable)
+ self.s_rb_any = QtWidgets.QRadioButton(self.tab_search)
+ self.s_rb_any.setCheckable(True)
+ self.s_rb_any.setObjectName("s_rb_any")
+ self.verticalLayout_4.addWidget(self.s_rb_any)
+ self.s_rb_iuse = QtWidgets.QRadioButton(self.tab_search)
+ self.s_rb_iuse.setObjectName("s_rb_iuse")
+ self.verticalLayout_4.addWidget(self.s_rb_iuse)
+ self.gridLayout.addLayout(self.verticalLayout_4, 0, 0, 3, 1)
+ self.s_pbar = QtWidgets.QProgressBar(self.tab_search)
+ self.s_pbar.setProperty("value", 0)
+ self.s_pbar.setTextVisible(True)
+ self.s_pbar.setFormat("")
+ self.s_pbar.setObjectName("s_pbar")
+ self.gridLayout.addWidget(self.s_pbar, 4, 0, 1, 11)
+ self.s_lcd_results = QtWidgets.QLCDNumber(self.tab_search)
+ self.s_lcd_results.setDigitCount(5)
+ self.s_lcd_results.setSegmentStyle(QtWidgets.QLCDNumber.Flat)
+ self.s_lcd_results.setObjectName("s_lcd_results")
+ self.gridLayout.addWidget(self.s_lcd_results, 2, 8, 1, 1)
+ spacerItem2 = QtWidgets.QSpacerItem(101, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.gridLayout.addItem(spacerItem2, 1, 8, 1, 2)
+ self.verticalLayout_3 = QtWidgets.QVBoxLayout()
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.s_cb_testing = QtWidgets.QCheckBox(self.tab_search)
+ self.s_cb_testing.setObjectName("s_cb_testing")
+ self.verticalLayout_3.addWidget(self.s_cb_testing)
+ self.s_rb_decription = QtWidgets.QRadioButton(self.tab_search)
+ self.s_rb_decription.setObjectName("s_rb_decription")
+ self.verticalLayout_3.addWidget(self.s_rb_decription)
+ self.s_rb_use_enabled = QtWidgets.QRadioButton(self.tab_search)
+ self.s_rb_use_enabled.setObjectName("s_rb_use_enabled")
+ self.verticalLayout_3.addWidget(self.s_rb_use_enabled)
+ self.gridLayout.addLayout(self.verticalLayout_3, 0, 1, 3, 2)
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout()
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.s_cb_installed = QtWidgets.QCheckBox(self.tab_search)
+ self.s_cb_installed.setObjectName("s_cb_installed")
+ self.verticalLayout_2.addWidget(self.s_cb_installed)
+ self.s_rb_category = QtWidgets.QRadioButton(self.tab_search)
+ self.s_rb_category.setObjectName("s_rb_category")
+ self.verticalLayout_2.addWidget(self.s_rb_category)
+ self.s_rb_use_disabled = QtWidgets.QRadioButton(self.tab_search)
+ self.s_rb_use_disabled.setObjectName("s_rb_use_disabled")
+ self.verticalLayout_2.addWidget(self.s_rb_use_disabled)
+ self.gridLayout.addLayout(self.verticalLayout_2, 0, 3, 3, 2)
+ self.verticalLayout = QtWidgets.QVBoxLayout()
+ self.verticalLayout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.s_cb_overlay = QtWidgets.QCheckBox(self.tab_search)
+ self.s_cb_overlay.setTristate(False)
+ self.s_cb_overlay.setObjectName("s_cb_overlay")
+ self.verticalLayout.addWidget(self.s_cb_overlay)
+ self.s_rb_name = QtWidgets.QRadioButton(self.tab_search)
+ self.s_rb_name.setObjectName("s_rb_name")
+ self.verticalLayout.addWidget(self.s_rb_name)
+ self.s_l_results = QtWidgets.QLabel(self.tab_search)
+ self.s_l_results.setAlignment(QtCore.Qt.AlignCenter)
+ self.s_l_results.setObjectName("s_l_results")
+ self.verticalLayout.addWidget(self.s_l_results)
+ self.gridLayout.addLayout(self.verticalLayout, 0, 5, 3, 3)
+ self.tw_1.addTab(self.tab_search, "")
+ self.tab_depgraph = QtWidgets.QWidget()
+ self.tab_depgraph.setObjectName("tab_depgraph")
+ self.gridLayout_3 = QtWidgets.QGridLayout(self.tab_depgraph)
+ self.gridLayout_3.setObjectName("gridLayout_3")
+ self.d_rb_select = QtWidgets.QRadioButton(self.tab_depgraph)
+ self.d_rb_select.setChecked(True)
+ self.d_rb_select.setObjectName("d_rb_select")
+ self.gridLayout_3.addWidget(self.d_rb_select, 0, 0, 1, 1)
+ self.d_cb_category = QtWidgets.QComboBox(self.tab_depgraph)
+ self.d_cb_category.setObjectName("d_cb_category")
+ self.d_cb_category.addItem("")
+ self.gridLayout_3.addWidget(self.d_cb_category, 0, 1, 1, 2)
+ self.d_cb_package = QtWidgets.QComboBox(self.tab_depgraph)
+ self.d_cb_package.setObjectName("d_cb_package")
+ self.d_cb_package.addItem("")
+ self.gridLayout_3.addWidget(self.d_cb_package, 0, 3, 1, 1)
+ self.d_cb_version = QtWidgets.QComboBox(self.tab_depgraph)
+ self.d_cb_version.setObjectName("d_cb_version")
+ self.d_cb_version.addItem("")
+ self.gridLayout_3.addWidget(self.d_cb_version, 0, 4, 1, 1)
+ self.d_label_depth = QtWidgets.QLabel(self.tab_depgraph)
+ self.d_label_depth.setMaximumSize(QtCore.QSize(60, 16777215))
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.d_label_depth.setFont(font)
+ self.d_label_depth.setLayoutDirection(QtCore.Qt.LeftToRight)
+ self.d_label_depth.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.d_label_depth.setObjectName("d_label_depth")
+ self.gridLayout_3.addWidget(self.d_label_depth, 0, 5, 1, 1)
+ self.d_le_depth = QtWidgets.QLineEdit(self.tab_depgraph)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.d_le_depth.sizePolicy().hasHeightForWidth())
+ self.d_le_depth.setSizePolicy(sizePolicy)
+ self.d_le_depth.setMaximumSize(QtCore.QSize(80, 16777215))
+ self.d_le_depth.setSizeIncrement(QtCore.QSize(5, 0))
+ self.d_le_depth.setBaseSize(QtCore.QSize(30, 0))
+ self.d_le_depth.setInputMask("")
+ self.d_le_depth.setObjectName("d_le_depth")
+ self.gridLayout_3.addWidget(self.d_le_depth, 0, 6, 1, 1)
+ spacerItem3 = QtWidgets.QSpacerItem(50, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.gridLayout_3.addItem(spacerItem3, 0, 7, 1, 1)
+ self.d_pb_calculate = QtWidgets.QPushButton(self.tab_depgraph)
+ self.d_pb_calculate.setObjectName("d_pb_calculate")
+ self.gridLayout_3.addWidget(self.d_pb_calculate, 0, 8, 1, 2)
+ self.d_rb_manual = QtWidgets.QRadioButton(self.tab_depgraph)
+ self.d_rb_manual.setObjectName("d_rb_manual")
+ self.gridLayout_3.addWidget(self.d_rb_manual, 1, 0, 1, 1)
+ self.d_le_package = QtWidgets.QLineEdit(self.tab_depgraph)
+ self.d_le_package.setEnabled(False)
+ self.d_le_package.setObjectName("d_le_package")
+ self.gridLayout_3.addWidget(self.d_le_package, 1, 1, 1, 4)
+ self.d_ckb_installed = QtWidgets.QCheckBox(self.tab_depgraph)
+ self.d_ckb_installed.setObjectName("d_ckb_installed")
+ self.gridLayout_3.addWidget(self.d_ckb_installed, 1, 5, 1, 4)
+ self.d_tv_results = QtWidgets.QTreeView(self.tab_depgraph)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.d_tv_results.sizePolicy().hasHeightForWidth())
+ self.d_tv_results.setSizePolicy(sizePolicy)
+ self.d_tv_results.setMinimumSize(QtCore.QSize(0, 250))
+ self.d_tv_results.setObjectName("d_tv_results")
+ self.gridLayout_3.addWidget(self.d_tv_results, 2, 0, 1, 10)
+ self.d_pbar = QtWidgets.QProgressBar(self.tab_depgraph)
+ self.d_pbar.setProperty("value", 0)
+ self.d_pbar.setTextVisible(True)
+ self.d_pbar.setFormat("")
+ self.d_pbar.setObjectName("d_pbar")
+ self.gridLayout_3.addWidget(self.d_pbar, 3, 0, 1, 10)
+ self.d_pb_expand = QtWidgets.QPushButton(self.tab_depgraph)
+ self.d_pb_expand.setObjectName("d_pb_expand")
+ self.gridLayout_3.addWidget(self.d_pb_expand, 4, 0, 1, 1)
+ self.d_pb_collapse = QtWidgets.QPushButton(self.tab_depgraph)
+ self.d_pb_collapse.setObjectName("d_pb_collapse")
+ self.gridLayout_3.addWidget(self.d_pb_collapse, 4, 1, 1, 1)
+ spacerItem4 = QtWidgets.QSpacerItem(372, 27, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.gridLayout_3.addItem(spacerItem4, 4, 2, 1, 8)
+ self.tw_1.addTab(self.tab_depgraph, "")
+ self.tab_update = QtWidgets.QWidget()
+ self.tab_update.setObjectName("tab_update")
+ self.gridLayout_5 = QtWidgets.QGridLayout(self.tab_update)
+ self.gridLayout_5.setObjectName("gridLayout_5")
+ self.e_rb_new_use = QtWidgets.QRadioButton(self.tab_update)
+ self.e_rb_new_use.setCheckable(True)
+ self.e_rb_new_use.setChecked(False)
+ self.e_rb_new_use.setObjectName("e_rb_new_use")
+ self.use_buttongroup = QtWidgets.QButtonGroup(MainWindow)
+ self.use_buttongroup.setObjectName("use_buttongroup")
+ self.use_buttongroup.addButton(self.e_rb_new_use)
+ self.gridLayout_5.addWidget(self.e_rb_new_use, 0, 0, 1, 1)
+ self.e_rb_update = QtWidgets.QRadioButton(self.tab_update)
+ font = QtGui.QFont()
+ font.setBold(False)
+ font.setUnderline(False)
+ font.setWeight(50)
+ self.e_rb_update.setFont(font)
+ self.e_rb_update.setCheckable(True)
+ self.e_rb_update.setChecked(False)
+ self.e_rb_update.setObjectName("e_rb_update")
+ self.tree_buttongroup = QtWidgets.QButtonGroup(MainWindow)
+ self.tree_buttongroup.setObjectName("tree_buttongroup")
+ self.tree_buttongroup.addButton(self.e_rb_update)
+ self.gridLayout_5.addWidget(self.e_rb_update, 0, 1, 1, 1)
+ self.e_cb_deep = QtWidgets.QCheckBox(self.tab_update)
+ self.e_cb_deep.setChecked(True)
+ self.e_cb_deep.setObjectName("e_cb_deep")
+ self.gridLayout_5.addWidget(self.e_cb_deep, 0, 2, 1, 1)
+ self.e_rb_world = QtWidgets.QRadioButton(self.tab_update)
+ self.e_rb_world.setChecked(True)
+ self.e_rb_world.setObjectName("e_rb_world")
+ self.atom_buttongroup = QtWidgets.QButtonGroup(MainWindow)
+ self.atom_buttongroup.setObjectName("atom_buttongroup")
+ self.atom_buttongroup.addButton(self.e_rb_world)
+ self.gridLayout_5.addWidget(self.e_rb_world, 0, 3, 1, 1)
+ self.e_rb_atom = QtWidgets.QRadioButton(self.tab_update)
+ self.e_rb_atom.setObjectName("e_rb_atom")
+ self.atom_buttongroup.addButton(self.e_rb_atom)
+ self.gridLayout_5.addWidget(self.e_rb_atom, 0, 4, 1, 1)
+ spacerItem5 = QtWidgets.QSpacerItem(44, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.gridLayout_5.addItem(spacerItem5, 0, 5, 1, 1)
+ self.e_pb_go = QtWidgets.QPushButton(self.tab_update)
+ self.e_pb_go.setObjectName("e_pb_go")
+ self.gridLayout_5.addWidget(self.e_pb_go, 0, 6, 1, 1)
+ self.e_rb_ch_use = QtWidgets.QRadioButton(self.tab_update)
+ self.e_rb_ch_use.setObjectName("e_rb_ch_use")
+ self.use_buttongroup.addButton(self.e_rb_ch_use)
+ self.gridLayout_5.addWidget(self.e_rb_ch_use, 1, 0, 1, 1)
+ self.e_rb_emptytree = QtWidgets.QRadioButton(self.tab_update)
+ self.e_rb_emptytree.setAutoExclusive(True)
+ self.e_rb_emptytree.setObjectName("e_rb_emptytree")
+ self.tree_buttongroup.addButton(self.e_rb_emptytree)
+ self.gridLayout_5.addWidget(self.e_rb_emptytree, 1, 1, 1, 1)
+ self.e_cb_nodeps = QtWidgets.QCheckBox(self.tab_update)
+ self.e_cb_nodeps.setObjectName("e_cb_nodeps")
+ self.gridLayout_5.addWidget(self.e_cb_nodeps, 1, 2, 1, 1)
+ self.e_rb_system = QtWidgets.QRadioButton(self.tab_update)
+ self.e_rb_system.setObjectName("e_rb_system")
+ self.atom_buttongroup.addButton(self.e_rb_system)
+ self.gridLayout_5.addWidget(self.e_rb_system, 1, 3, 1, 1)
+ self.e_le_atom = QtWidgets.QLineEdit(self.tab_update)
+ self.e_le_atom.setObjectName("e_le_atom")
+ self.gridLayout_5.addWidget(self.e_le_atom, 1, 4, 1, 3)
+ self.e_lv_results = QtWidgets.QListView(self.tab_update)
+ self.e_lv_results.setObjectName("e_lv_results")
+ self.gridLayout_5.addWidget(self.e_lv_results, 2, 0, 1, 7)
+ self.e_pbar = QtWidgets.QProgressBar(self.tab_update)
+ self.e_pbar.setProperty("value", 0)
+ self.e_pbar.setTextVisible(True)
+ self.e_pbar.setFormat("")
+ self.e_pbar.setObjectName("e_pbar")
+ self.gridLayout_5.addWidget(self.e_pbar, 3, 0, 1, 7)
+ self.u_le_cmd = QtWidgets.QLineEdit(self.tab_update)
+ self.u_le_cmd.setObjectName("u_le_cmd")
+ self.gridLayout_5.addWidget(self.u_le_cmd, 4, 0, 1, 7)
+ self.tw_1.addTab(self.tab_update, "")
+ self.gridLayout_2.addWidget(self.tw_1, 0, 1, 1, 1)
+ MainWindow.setCentralWidget(self.centralWidget)
+
+ self.retranslateUi(MainWindow)
+ self.tw_1.setCurrentIndex(1)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "PyGentools"))
+ self.s_pb_expand_pkg.setToolTip(_translate("MainWindow", "<html><head/><body><p>Expand all categories to show packages</p></body></html>"))
+ self.s_pb_expand_pkg.setText(_translate("MainWindow", "Expand Pkgs"))
+ self.s_pb_updatedb.setToolTip(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
+"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
+"p, li { white-space: pre-wrap; }\n"
+"</style></head><body style=\" font-family:\'Noto Sans\'; font-size:8pt; font-weight:400; font-style:normal;\">\n"
+"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Update eix\'s database, runs:</p>\n"
+"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">sudo eix-update</p></body></html>"))
+ self.s_pb_updatedb.setText(_translate("MainWindow", "Update DB"))
+ self.s_le_search.setPlaceholderText(_translate("MainWindow", "Enter search term"))
+ self.s_le_command.setText(_translate("MainWindow", "eix"))
+ self.s_pb_search.setToolTip(_translate("MainWindow", "<html><head/><body><p>Starts searching with the specified parameters</p></body></html>"))
+ self.s_pb_search.setText(_translate("MainWindow", "Search"))
+ self.s_pb_expand_all.setToolTip(_translate("MainWindow", "<html><head/><body><p>Expand all tree entries</p></body></html>"))
+ self.s_pb_expand_all.setText(_translate("MainWindow", "Expand All"))
+ self.s_pb_collapse.setToolTip(_translate("MainWindow", "<html><head/><body><p>Collapse tree</p></body></html>"))
+ self.s_pb_collapse.setText(_translate("MainWindow", "Collapse"))
+ self.s_tv_results.setToolTip(_translate("MainWindow", "<html><head/><body><p>Results show here</p></body></html>"))
+ self.s_cb_stable.setToolTip(_translate("MainWindow", "<html><head/><body><p>Include only packages with a stable version</p></body></html>"))
+ self.s_cb_stable.setText(_translate("MainWindow", "Stable"))
+ self.s_rb_any.setToolTip(_translate("MainWindow", "Search any field"))
+ self.s_rb_any.setText(_translate("MainWindow", "Any"))
+ self.s_rb_iuse.setToolTip(_translate("MainWindow", "<html><head/><body><p>Search for packages that support a specific use flag(s)</p></body></html>"))
+ self.s_rb_iuse.setText(_translate("MainWindow", "Use Support"))
+ self.s_cb_testing.setToolTip(_translate("MainWindow", "<html><head/><body><p>Include only packages with a testing version</p></body></html>"))
+ self.s_cb_testing.setText(_translate("MainWindow", "Testing"))
+ self.s_rb_decription.setToolTip(_translate("MainWindow", "Search the description field"))
+ self.s_rb_decription.setText(_translate("MainWindow", "Description"))
+ self.s_rb_use_enabled.setToolTip(_translate("MainWindow", "<html><head/><body><p>Search for packages installed with a specific use flag enabled</p></body></html>"))
+ self.s_rb_use_enabled.setText(_translate("MainWindow", "Use Enabled"))
+ self.s_cb_installed.setToolTip(_translate("MainWindow", "<html><head/><body><p>Include only installed packages</p></body></html>"))
+ self.s_cb_installed.setText(_translate("MainWindow", "Installed"))
+ self.s_rb_category.setToolTip(_translate("MainWindow", "Search the category field"))
+ self.s_rb_category.setText(_translate("MainWindow", "Category"))
+ self.s_rb_use_disabled.setToolTip(_translate("MainWindow", "<html><head/><body><p>Search for packages instealled with a specific use flag disabled</p></body></html>"))
+ self.s_rb_use_disabled.setText(_translate("MainWindow", "Use Disabled"))
+ self.s_cb_overlay.setToolTip(_translate("MainWindow", "<html><head/><body><p>Include only packages with at least one version in an overlay</p></body></html>"))
+ self.s_cb_overlay.setText(_translate("MainWindow", "Overlay"))
+ self.s_rb_name.setToolTip(_translate("MainWindow", "Search the name field"))
+ self.s_rb_name.setText(_translate("MainWindow", "Name"))
+ self.s_l_results.setText(_translate("MainWindow", "Results: "))
+ self.tw_1.setTabText(self.tw_1.indexOf(self.tab_search), _translate("MainWindow", "Search"))
+ self.d_rb_select.setText(_translate("MainWindow", "Select Package"))
+ self.d_cb_category.setToolTip(_translate("MainWindow", "<html><head/><body><p>Select a package category from the list</p></body></html>"))
+ self.d_cb_category.setItemText(0, _translate("MainWindow", "Select Category"))
+ self.d_cb_package.setToolTip(_translate("MainWindow", "<html><head/><body><p>Select a package from the list</p></body></html>"))
+ self.d_cb_package.setItemText(0, _translate("MainWindow", "Select Package"))
+ self.d_cb_version.setToolTip(_translate("MainWindow", "<html><head/><body><p>Select a package version from the list</p></body></html>"))
+ self.d_cb_version.setItemText(0, _translate("MainWindow", "Select Version"))
+ self.d_label_depth.setToolTip(_translate("MainWindow", "Max depgrah depth (0=no max)"))
+ self.d_label_depth.setText(_translate("MainWindow", "Depth:"))
+ self.d_le_depth.setToolTip(_translate("MainWindow", "<html><head/><body><p>Set the depth to which the dependencies are calculated (0 = full depth)</p></body></html>"))
+ self.d_le_depth.setText(_translate("MainWindow", "1"))
+ self.d_pb_calculate.setToolTip(_translate("MainWindow", "<html><head/><body><p>Click to do stuff</p></body></html>"))
+ self.d_pb_calculate.setText(_translate("MainWindow", "Calculate"))
+ self.d_rb_manual.setText(_translate("MainWindow", "Enter Package"))
+ self.d_le_package.setPlaceholderText(_translate("MainWindow", "=category/package-version"))
+ self.d_ckb_installed.setToolTip(_translate("MainWindow", "<html><head/><body><p>Experimental feature:</p><p>May result in spurious parent/child relationships in depgraph</p><p>The packages listed are still the correct dependencies.</p></body></html>"))
+ self.d_ckb_installed.setText(_translate("MainWindow", "Do Not Include Installed Packages"))
+ self.d_pb_expand.setText(_translate("MainWindow", "Expand All"))
+ self.d_pb_collapse.setText(_translate("MainWindow", "Collapse All"))
+ self.tw_1.setTabText(self.tw_1.indexOf(self.tab_depgraph), _translate("MainWindow", "Dep Graph"))
+ self.e_rb_new_use.setToolTip(_translate("MainWindow", "<html><head/><body><p>Adds the --newuse (-N) option to the emerge command</p></body></html>"))
+ self.e_rb_new_use.setText(_translate("MainWindow", "New Use"))
+ self.e_rb_update.setToolTip(_translate("MainWindow", "<html><head/><body><p>Adds the --update (-u) option to the emerge command</p></body></html>"))
+ self.e_rb_update.setText(_translate("MainWindow", "Update"))
+ self.e_cb_deep.setText(_translate("MainWindow", "Deep"))
+ self.e_rb_world.setText(_translate("MainWindow", "@World"))
+ self.e_rb_atom.setToolTip(_translate("MainWindow", "<html><head/><body><p>Enter a specific atom or set in the box below to use this option</p></body></html>"))
+ self.e_rb_atom.setText(_translate("MainWindow", "Atom Below"))
+ self.e_pb_go.setToolTip(_translate("MainWindow", "<html><head/><body><p>Executes the command with the set parameters</p><p>All command run with \'--pretend\' set. </p><p>\'--pretend\' is substituted for \'--ask\' on the displayed command, for quick copy and pasting.</p></body></html>"))
+ self.e_pb_go.setText(_translate("MainWindow", "Execute"))
+ self.e_rb_ch_use.setToolTip(_translate("MainWindow", "<html><head/><body><p>Adds the --changed-use (-U) option to the emerge command</p></body></html>"))
+ self.e_rb_ch_use.setText(_translate("MainWindow", "Changed Use"))
+ self.e_rb_emptytree.setToolTip(_translate("MainWindow", "<html><head/><body><p>Adds the --emptytree (-e) option to the emerge command</p></body></html>"))
+ self.e_rb_emptytree.setText(_translate("MainWindow", "Empty Tree"))
+ self.e_cb_nodeps.setToolTip(_translate("MainWindow", "<html><head/><body><p>Adds the --nodeps option to the emerge command (speeds up checking for use changes on a single package)</p></body></html>"))
+ self.e_cb_nodeps.setText(_translate("MainWindow", "No Deps"))
+ self.e_rb_system.setText(_translate("MainWindow", "@System"))
+ self.e_le_atom.setPlaceholderText(_translate("MainWindow", "Enter atom or set here"))
+ self.u_le_cmd.setToolTip(_translate("MainWindow", "<html><head/><body><p>Command to run in a terminal to make proposed changes</p></body></html>"))
+ self.tw_1.setTabText(self.tw_1.indexOf(self.tab_update), _translate("MainWindow", "Emerge"))
+
+
+if __name__ == "__main__":
+ import sys
+ app = QtWidgets.QApplication(sys.argv)
+ MainWindow = QtWidgets.QMainWindow()
+ ui = Ui_MainWindow()
+ ui.setupUi(MainWindow)
+ MainWindow.show()
+ sys.exit(app.exec_())
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>848</width>
+ <height>506</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MainWindow</string>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <widget class="QLineEdit" name="u_le_cmd">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>420</y>
+ <width>671</width>
+ <height>28</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QWidget" name="layoutWidget_2">
+ <property name="geometry">
+ <rect>
+ <x>120</x>
+ <y>10</y>
+ <width>100</width>
+ <height>54</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QRadioButton" name="e_rb_new_use">
+ <property name="text">
+ <string>New Use</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="e_rb_ch_use">
+ <property name="text">
+ <string>Changed Use</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QListView" name="e_lv_results">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>110</y>
+ <width>671</width>
+ <height>231</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QProgressBar" name="e_pbar">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>350</y>
+ <width>671</width>
+ <height>23</height>
+ </rect>
+ </property>
+ <property name="value">
+ <number>24</number>
+ </property>
+ </widget>
+ <widget class="QWidget" name="">
+ <property name="geometry">
+ <rect>
+ <x>370</x>
+ <y>15</y>
+ <width>321</width>
+ <height>71</height>
+ </rect>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QRadioButton" name="e_rb_world">
+ <property name="text">
+ <string>@World</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QRadioButton" name="e_rb_atom">
+ <property name="text">
+ <string>Atom Below</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QRadioButton" name="e_rb_system">
+ <property name="text">
+ <string>@System</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" colspan="2">
+ <widget class="QLineEdit" name="e_le_atom"/>
+ </item>
+ <item row="0" column="2">
+ <widget class="QPushButton" name="e_pb_go">
+ <property name="text">
+ <string>Execute</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="">
+ <property name="geometry">
+ <rect>
+ <x>227</x>
+ <y>10</y>
+ <width>91</width>
+ <height>54</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QCheckBox" name="e_cb_deep">
+ <property name="text">
+ <string>Deep</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="e_cb_nodeps">
+ <property name="text">
+ <string>No Deps</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="">
+ <property name="geometry">
+ <rect>
+ <x>20</x>
+ <y>10</y>
+ <width>90</width>
+ <height>54</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QRadioButton" name="e_rb_update">
+ <property name="text">
+ <string>Update</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="e_rb_emptytree">
+ <property name="text">
+ <string>Empty Tree</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <widget class="QMenuBar" name="menubar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>848</width>
+ <height>26</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QStatusBar" name="statusbar"/>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+# -*- coding: utf-8 -*-
+
+from PyQt5.QtWidgets import QApplication,QMainWindow
+from .Ui_mainwindow import Ui_MainWindow
+from subprocess import PIPE,Popen,TimeoutExpired
+import re
+from PyQt5.QtGui import QStandardItemModel,QStandardItem
+
+class d_Category:
+ def __init__(self):
+ self.Name=''
+ self.Packages=[]
+
+class d_Package:
+ def __init__(self):
+ self.Name=''
+ self.Versions=[]
+
+class s_Category:
+ def __init__(self):
+ self.UID=1
+ self.PUID=0
+ self.Name=''
+ self.Packages=[]
+
+class s_Package:
+ def __init__(self):
+ self.UID=0
+ self.PUID=0
+ self.Name=''
+ self.Description=''
+ self.Homepage=''
+ self.Installed=[]
+ self.Available=[]
+
+class s_Installed:
+ def __init__(self):
+ self.UID=0
+ self.PUID=0
+ self.Version=''
+ self.Use=''
+ self.Homepage='Installed ->'
+
+class s_Available:
+ def __init__(self):
+ self.UID=0
+ self.PUID=0
+ self.Version=''
+ self.Use=''
+ self.Homepage='Available ->'
+
+class s_Result:
+ def __init__(self):
+ self.UID=0
+ self.PUID=0
+ self.Category=''
+ self.Name=''
+ self.Description=''
+ self.Homepage=''
+ self.Version=''
+ self.Use=''
+
+class MainWindow(QMainWindow, Ui_MainWindow):
+ def __init__(self, parent=None):
+ super(MainWindow, self).__init__(parent)
+ self.setupUi(self)
+ self.d_catsupop=True
+ self.s_cb_option={
+ 's_cb_stable':[self.s_cb_stable,'--stable'],
+ 's_cb_testing':[self.s_cb_testing,'--testing'],
+ 's_cb_installed':[self.s_cb_installed,'--installed'],
+ 's_cb_overlay':[self.s_cb_overlay,'--overlay'],
+ }
+ self.s_rb_option={
+ 's_rb_decription':[self.s_rb_decription,'--description'],
+ 's_rb_use_disabled':[self.s_rb_use_disabled,'--installed-without-use'],
+ 's_rb_any':[self.s_rb_any,'--any'],
+ 's_rb_name':[self.s_rb_name,'--name'],
+ 's_rb_category':[self.s_rb_category,'--category'],
+ 's_rb_iuse':[self.s_rb_iuse,'--use'],
+ 's_rb_use_enabled':[self.s_rb_use_enabled,'--installed-with-use'],
+ }
+ self.s_cats=0
+ self.s_find={
+ 'Category':[re.compile('^\[[0-9I]\] [A-z0-9]|^\* [A-z]'),self.s_getCat,0],
+ 'Name':[re.compile('^\[[0-9I]\] [A-z0-9]|^\* [A-z0-9]'),self.s_getName,1],
+ 'Description':[re.compile('Description:'),self.s_getDesc,2],
+ 'Homepage':[re.compile('Homepage:'),self.s_getHome,3],
+ 'Installed':[re.compile('Installed versions:'),self.s_getInstVers,4],
+ 'Installed_use':re.compile('\)\([A-z3\-]'),
+ 'Available':[re.compile('Available versions:'),self.s_getAvailVers,6],
+ 'Available_use':re.compile(' \[[A-z0-9="+_ \(\)-]*\]'),
+ 'avail_ver':re.compile(' *(\*\*|[0-9]|\(~\)|\[[Mm]\])'),
+ 'inst_ver':re.compile('([0-9]|c|a)\('),
+ }
+ self.resize(952, 492)
+
+#global class functions
+ def redraw_window(self):
+ self.update()
+ QApplication.processEvents()
+
+ def fold_use(self,use,trim):
+ if len(use)>trim:
+ uselist=use.split(' ')
+ nbp=trim
+ use=''
+ for usept in uselist:
+ usept=uselist.pop(0)
+ if len(use)+len(usept)>nbp:
+ use='%s\n'%use
+ trim+=2
+ nbp+=trim
+ use='%s %s'%(use,usept)
+ return use
+
+#section depgraph tab section
+ def on_d_rb_select_toggled(self,p0):
+ self.d_cb_category.setEnabled(p0)
+ self.d_cb_package.setEnabled(p0)
+ self.d_cb_version.setEnabled(p0)
+ self.d_le_package.setEnabled(not p0)
+
+ def on_d_le_depth_returnPressed(self):
+ self.d_on_pb_calculate_released()
+
+ def on_d_le_depth_textChanged(self, p0):
+ if p0=='':return
+ try:
+ int(p0)
+ except:
+ self.d_le_depth.setText('1')
+
+ def on_d_pb_calculate_released(self):
+ pkg=self.d_sanity_check()
+ if pkg:
+ self.d_gen_results(pkg)
+
+ def on_d_tv_results_expanded(self, index):
+ pass
+
+ def on_d_pbar_valueChanged(self, value):
+ pass
+
+ def on_d_pb_expand_released(self):
+ self.d_tv_results.expandAll()
+
+
+ def on_d_cb_category_currentTextChanged(self, p0):
+ if self.d_catsupop:return
+ self.d_pkgs=[]
+ self.d_cb_package.clear()
+ self.d_cb_package.addItem('Select Package')
+ if p0=='Select Category':return
+ for cat in self.d_cats:
+ if cat.Name==p0:
+ break
+ for pkg in cat.Packages:
+ self.d_cb_package.addItem(pkg.Name)
+ self.d_pkgs.append(pkg)
+
+ def on_d_cb_package_currentTextChanged(self, p0):
+ if not p0 or p0=='Select Package':return
+ cat=self.d_cb_category.currentText()
+ if cat=='Select Category':return
+ self.d_cb_version.clear()
+ self.d_cb_version.addItem('Select version')
+ str='%s/%s'%(cat,p0)
+ cmd=['eix','-n','-e','--versionlines',str]
+ process=Popen(cmd,encoding='utf-8',stdout=PIPE)
+ enders=re.compile('Installed versions:|Homepage:|Description:')
+ in_results=False
+ while True:
+ output = process.stdout.readline()
+ if output == '' and process.poll() is not None:
+ break
+ output=output.strip()
+ if not in_results and output!='Available versions:':
+ continue
+ if output=='Available versions:':
+ in_results=True
+ continue
+ if enders.match(output):
+ break
+ if in_results:
+ output=re.sub('\(~\)','~',output)
+ output=re.sub('~ {1,9}','~',output)
+ output=re.sub('\*\*',' ',output)
+ output=output.split()[0]
+ if output[0]=='(':continue
+ self.d_cb_version.addItem(output)
+
+ def on_tw_1_currentChanged(self,p0):
+ if p0==1 and self.d_catsupop:
+ cmd=['eix','-n','--non-masked','--only-names']
+ process=Popen(cmd,encoding='utf-8',stdout=PIPE)
+ cats=[]
+ cat=d_Category()
+ while True:
+ output = process.stdout.readline()
+ if output == '' and process.poll() is not None:
+ break
+ cat_name,pkg_name=output.split('/')
+ if cat.Name!=cat_name:
+ cat=d_Category()
+ cat.Name=cat_name
+ cats.append(cat)
+ pkg=d_Package()
+ pkg.Name=pkg_name.strip()
+ cat.Packages.append(pkg)
+ self.d_cb_category.clear()
+ self.d_cb_category.addItem('Select version')
+ for cat in cats:
+ self.d_cb_category.addItem(cat.Name)
+ self.d_cats=cats
+ self.d_catsupop=False
+
+ def on_d_cb_version_currentTextChanged(self, p0):
+ pass
+
+ def on_d_pb_collapse_released(self):
+ self.d_tv_results.collapseAll()
+
+ def d_sanity_check(self):
+ if self.d_rb_select.isChecked():
+ cat=self.d_cb_category.currentText()
+ pkg=self.d_cb_package.currentText()
+ ver=self.d_cb_version.currentText()
+ for a in cat,pkg,ver:
+ if a.split(' ')[0]=='Select':return False
+ if ver[0]=='~':ver=ver[1:]
+ package='=%s/%s-%s'%(cat,pkg,ver)
+ else:
+ package=self.d_le_package.text()
+ return package
+
+ def d_gen_results(self,pkg):
+ self.d_pbar.setValue(0)
+ self.d_pbar.setFormat('Running equery g %s...'%pkg)
+ self.update()
+ QApplication.processEvents()
+ try:
+ depth=int(self.d_le_depth.text())
+ except:
+ depth=1
+ cmd=['equery','-C','g',pkg,'--depth=%s'%depth]
+ process=Popen(cmd,encoding='utf-8',stdout=PIPE)
+ re_depth=re.compile('\[ {0,2}[0-9]{1,3}\]')
+ uid=0
+ pdict={}
+ items={}
+ model = QStandardItemModel()
+ model.setHorizontalHeaderLabels(['Package Name'])
+ results=[]
+ while True:
+ output = process.stdout.readline()
+ if output == '' and process.poll() is not None:
+ break
+ results.append(output)
+ self.d_pbar.setMaximum(len(results)-2)
+ self.d_pbar.setFormat('Processing dependancy tree...')
+ self.update()
+ for output in results:
+ if output.find('[')<0:continue
+ deploc=re_depth.search(output)
+ depth=int(output[deploc.start()+1:deploc.end()-1])
+ pkg=output[deploc.end()+2:].strip()
+ self.d_pbar.setValue(uid+1)
+ self.update()
+ QApplication.processEvents()
+ if depth==0:
+ items[uid]=pkg
+ parent=model.invisibleRootItem()
+ pdict[depth]=uid
+ parent.appendRow([QStandardItem(pkg)])
+ items[uid]=parent.child(parent.rowCount()-1)
+ uid+=1
+ else:
+ items[uid]=pkg
+ parent=items[pdict[depth-1]]
+ pdict[depth]=uid
+ parent.appendRow([QStandardItem(pkg)])
+ items[uid]=parent.child(parent.rowCount()-1)
+ uid+=1
+ self.d_tv_results.setModel(model)
+#endsection
+
+
+
+#search tab section ##
+ def on_s_pb_expand_pkg_released(self):
+ model=self.s_tv_results.model()
+ if not model:return
+ for a in range(0,self.s_cats+1):
+ self.s_tv_results.expand(model.createIndex(a,1))
+
+ def on_s_pb_updatedb_released(self):
+ child=Popen(['sudo','eix-update'])
+ child.wait()
+
+ def on_s_pb_search_released(self):
+ options=['eix','-l','-n']
+ for rb in self.s_rb_option:
+ if self.s_rb_option[rb][0].isChecked():
+ options.append(self.s_rb_option[rb][1])
+ break
+ for cb in self.s_cb_option:
+ if self.s_cb_option[cb][0].isChecked():
+ options.append(self.s_cb_option[cb][1])
+ terms=re.sub(' ','|',self.s_le_search.text())
+ options.append(terms)
+ self.s_le_command.setText(' '.join(options))
+ self.s_doSearch(options)
+
+ def on_s_pb_expand_all_released(self):
+ self.s_tv_results.expandAll()
+
+ def on_s_pb_collapse_released(self):
+ self.s_tv_results.collapseAll()
+ self.s_le_search.setText=('gecko')
+
+ def on_s_le_search_returnPressed(self):
+ self.on_s_pb_search_released()
+
+ def on_s_tv_results_doubleClicked(self,p0):
+ url=p0.model().data(p0)
+ match=re.match('^https?://.*?( |$)',url)
+ if match:
+ url=url[:match.end()]
+ helpers=['xdg-open','kde-open5',]
+ for helper in helpers:
+ try:
+ child=Popen([helper,url])
+ if child.wait(timeout=5)==0:
+ return
+ except FileNotFoundError:
+ continue
+ except TimeoutExpired:
+ child.kill()
+ continue
+
+ def s_doSearch(self,options):
+ self.s_pbar.setValue(0)
+ results=[]
+ result=[]
+ in_result=False
+ starter=re.compile('^\[[0-9I]\] [A-z0-9]|^\* [A-z0-9]')
+ overlay=re.compile('^\[[0-9]\] "')
+ process=Popen(options,encoding='utf-8',stdout=PIPE)
+ self.s_pbar.setFormat('Running command: %s'%' '.join(options))
+ self.s_pbar.setTextVisible(True)
+ self.redraw_window()
+ counter=nudp=0
+ while True:
+ output=re.sub('\t',' ',process.stdout.readline())
+ if output=='' and process.poll() is not None:
+ break
+ if starter.match(output):
+ in_result=True
+ counter+=1
+ self.s_lcd_results.display(counter)
+ if counter>nudp:
+ self.redraw_window()
+ nudp=counter+int(counter/10)
+ elif output=='\n':
+ in_result=False
+ elif overlay.match(output) and not in_result:
+ list=output.split(' ')
+ result=['* Overlays/%s: %s'%(list[1][1:-1],list[0]),'Description: %s'%list[2]]
+ in_result=False
+ if output and in_result:
+ while output.find(' ')>=0:
+ output=re.sub(' ',' ',output)
+ result.append(output.strip())
+ elif result and not in_result:
+ results.append(result)
+ result=[]
+ self.s_lcd_results.display(counter)
+ self.s_pbar.setMaximum(len(results))
+ self.s_pbar.setFormat('Processing Data: Pass 1/2...')
+ self.redraw_window()
+ model=self.s_createResultsModel(self)
+ uid=1
+ prog=1
+ cats=[]
+ for result in results:
+ cats,uid=self.s_formatResult(cats,uid,result)
+ self.s_pbar.setValue(prog)
+ prog+=1
+ ex_cats=self.s_sortResults(cats)
+ self.s_addResults(model,ex_cats)
+ self.s_cats=len(cats)
+ self.s_tv_results.setModel(model)
+ self.s_pbar.setFormat('Done')
+
+ def s_createResultsModel(self,parent):
+ headers=['Category','Name','Description','Homepage' ]
+ model=QStandardItemModel()
+ model.setHorizontalHeaderLabels(headers)
+ return model
+
+ def s_formatResult(self,cats,uid,result):
+ cat=None
+ in_avail=False
+ in_inst=False
+ for field in result:
+ if self.s_find['Category'][0].search(field):
+ cat_name=self.s_find['Category'][1](field)
+ for pcat in cats:
+ if pcat.Name==cat_name:
+ cat=pcat
+ break
+ if not cat:
+ cat=s_Category()
+ cat.Name=cat_name
+ cat.UID=uid
+ cats.append(cat)
+ uid+=1
+ pkg=s_Package()
+ pkg.Name=self.s_find['Name'][1](field)
+ pkg.UID=uid
+ uid+=1
+ pkg.PUID=cat.UID
+ cat.Packages.append(pkg)
+ continue
+ if self.s_find['Description'][0].search(field):
+ in_avail=in_inst=False
+ pkg.Description=self.s_find['Description'][1](field)
+ continue
+ if self.s_find['Homepage'][0].search(field):
+ in_avail=in_inst=False
+ pkg.Homepage=self.s_find['Homepage'][1](field)
+ continue
+ if self.s_find['Installed'][0].search(field) or in_inst:
+ in_avail=False
+ in_inst=True
+ installed,use=self.s_find['Installed'][1](field)
+ inst=s_Installed()
+ inst.Version=installed
+ inst.Use=use
+ inst.PUID=pkg.UID
+ inst.UID=uid
+ uid+=1
+ pkg.Installed.append(inst)
+ continue
+ if self.s_find['Available'][0].search(field):
+ in_avail=True
+ continue
+ if in_avail:
+ version,use=self.s_find['Available'][1](field)
+ if version:
+ avail=s_Available()
+ avail.Version=version
+ avail.PUID=pkg.UID
+ avail.UID=uid
+ avail.Use=use
+ uid+=1
+ pkg.Available.append(avail)
+ return cats,uid
+
+ def s_getName(self,str):
+ return str.split('/')[1].strip()
+
+ def s_getCat(self,str):
+ return str.split(' ')[1].split('/')[0].strip()
+
+ def s_getAvailVers(self,str):
+ if str.strip()[0]=='(':return None,None
+ poppers=('[P]')
+ use,ind=self.s_getAuse(str)
+ ver=''
+ str=str[:ind].strip()
+ fields=str.split(' ')
+ if fields[0].find('~')>=0:
+ ver='~'
+ fields.pop(0)
+ if fields[0].find('*')>=0:
+ ver='**'
+ fields.pop(0)
+ if fields[0] in poppers:
+ fields.pop(0)
+ ver='%s%s'%(ver,fields[0])
+ return ver,use
+
+ def s_getAuse(self,str):
+ t=self.s_find['Available_use'].search(str)
+ use=''
+ ind=None
+ if t:use,ind=str[t.start()+2:t.end()-1],t.start()+1
+ if use:use=self.fold_use('Available use flags: %s'%use,120)
+ return use,ind
+
+ def s_getInstVers(self,str):
+ str=self.s_sanitise(str)
+ ver=None
+ use,ind=self.s_getIuse(str)
+ str=str[:ind].strip()
+ m=self.s_find['inst_ver'].search(str)
+ if m:
+ ver=str[:m.start()+1]
+ ver=self.s_clean(ver)
+ return ver,use
+
+ def s_getIuse(self,str):
+ m=self.s_find['Installed_use'].search(str)
+ iuse=''
+ ind=None
+ if m:iuse,ind=str[m.end()-1:str.rfind(')')],m.end()
+ if iuse:iuse=self.fold_use('Installed use flags: %s'%iuse,120)
+ return iuse,ind
+
+ def s_getHome(self,str):
+ t=self.s_find['Homepage'][0].match(str)
+ home=str[t.end()+1:].strip()
+ return home
+
+ def s_getDesc(self,str):
+ t=self.s_find['Description'][0].match(str)
+ desc=str[t.end()+1:].strip()
+ return desc
+
+ def s_sanitise(self,str):
+ strippers={ '\^[a-z]{1,3}':'','\*l':'','\(~\)':'~','\[.\]':'','Installed versions: *':''}
+ for stripper in strippers:
+ str=re.sub(stripper,strippers[stripper],str)
+ return str
+
+ def s_clean(self,str):
+ strippers={ '\^[a-z]{1,3}':'','\*l':'','\(~\)':'~','\(([0-9]{2}:){2}[0-9]{2} ([0-9]{2}/){2}[0-9]{2}\)':''}
+ for stripper in strippers:
+ str=re.sub(stripper,strippers[stripper],str)
+ return str
+
+ def s_sortResults(self,results):
+ sorted=[]
+ for cat in results:
+ result=s_Result()
+ result.UID=cat.UID
+ result.Category=cat.Name
+ sorted.append(result)
+ for pkg in cat.Packages:
+ result=s_Result()
+ result.Name=pkg.Name
+ result.UID=pkg.UID
+ result.PUID=pkg.PUID
+ result.Description=pkg.Description
+ result.Homepage=pkg.Homepage
+ sorted.append(result)
+ for inst in pkg.Installed:
+ result=s_Result()
+ result.UID=inst.UID
+ result.PUID=inst.PUID
+ result.Name=inst.Homepage
+ result.Description=inst.Version
+ result.Homepage=inst.Use
+ sorted.append(result)
+ for avail in pkg.Available:
+ result=s_Result()
+ result.UID=avail.UID
+ result.PUID=avail.PUID
+ result.Name=avail.Homepage
+ result.Description=avail.Version
+ result.Homepage=avail.Use
+ sorted.append(result)
+ return sorted
+
+ def s_addResults(self,model,results):
+ prog=1
+ self.s_pbar.setMaximum(len(results))
+ self.s_pbar.setFormat('Processing Data: Pass 2/2...')
+ items={}
+ for result in results:
+ if result.PUID==0:
+ parent=model.invisibleRootItem()
+ else:
+ parent=items[result.PUID]
+ parent.appendRow([ QStandardItem(result.Category),
+ QStandardItem(result.Name),
+ QStandardItem(result.Description),
+ QStandardItem(result.Homepage),
+ ])
+ items[result.UID] = parent.child(parent.rowCount()-1)
+ self.s_pbar.setValue(prog)
+ prog+=1
+ return model
+#endsection
+
+
+#emerge tab section ##
+ def on_e_rb_new_use_toggled(self, checked):
+ pass
+
+ def on_e_rb_update_toggled(self, checked):
+ pass
+
+ def on_e_cb_deep_toggled(self, checked):
+ pass
+
+ def on_e_rb_world_toggled(self, checked):
+ pass
+
+ def on_e_rb_atom_toggled(self, checked):
+ pass
+
+ def on_e_pb_go_released(self):
+ pass
+
+ def on_e_rb_ch_use_toggled(self, checked):
+ pass
+
+ def on_e_rb_emptytree_toggled(self, checked):
+ pass
+
+ def on_e_cb_nodeps_toggled(self, checked):
+ pass
+
+ def on_e_rb_system_toggled(self, checked):
+ pass
+
+ def on_e_pbar_valueChanged(self, value):
+ pass
+#endsection
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>714</width>
+ <height>450</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>PyGentools</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="1">
+ <widget class="QTabWidget" name="tw_1">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="tab_search">
+ <attribute name="title">
+ <string>Search</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="5" column="1" colspan="2">
+ <widget class="QPushButton" name="s_pb_expand_pkg">
+ <property name="toolTip">
+ <string><html><head/><body><p>Expand all categories to show packages</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Expand Pkgs</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="5" colspan="2">
+ <widget class="QPushButton" name="s_pb_updatedb">
+ <property name="toolTip">
+ <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Noto Sans'; font-size:8pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Update eix's database, runs:</p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">sudo eix-update</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Update DB</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="8" colspan="2">
+ <widget class="QLineEdit" name="s_le_search">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="placeholderText">
+ <string>Enter search term</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="7" colspan="4">
+ <widget class="QLineEdit" name="s_le_command">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>eix</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="10">
+ <widget class="QPushButton" name="s_pb_search">
+ <property name="toolTip">
+ <string><html><head/><body><p>Starts searching with the specified parameters</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Search</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="9">
+ <spacer name="horizontalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::MinimumExpanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="5" column="0">
+ <widget class="QPushButton" name="s_pb_expand_all">
+ <property name="toolTip">
+ <string><html><head/><body><p>Expand all tree entries</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Expand All</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="3" colspan="2">
+ <widget class="QPushButton" name="s_pb_collapse">
+ <property name="toolTip">
+ <string><html><head/><body><p>Collapse tree</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Collapse</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="10" rowspan="2">
+ <spacer name="horizontalSpacer_6">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Preferred</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>81</width>
+ <height>48</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="3" column="0" colspan="11">
+ <widget class="QTreeView" name="s_tv_results">
+ <property name="toolTip">
+ <string><html><head/><body><p>Results show here</p></body></html></string>
+ </property>
+ <property name="editTriggers">
+ <set>QAbstractItemView::NoEditTriggers</set>
+ </property>
+ <property name="showDropIndicator" stdset="0">
+ <bool>false</bool>
+ </property>
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::NoSelection</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectItems</enum>
+ </property>
+ <property name="sortingEnabled">
+ <bool>true</bool>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ <attribute name="headerShowSortIndicator" stdset="0">
+ <bool>true</bool>
+ </attribute>
+ </widget>
+ </item>
+ <item row="0" column="0" rowspan="3">
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QCheckBox" name="s_cb_stable">
+ <property name="toolTip">
+ <string><html><head/><body><p>Include only packages with a stable version</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Stable</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="s_rb_any">
+ <property name="toolTip">
+ <string>Search any field</string>
+ </property>
+ <property name="text">
+ <string>Any</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="s_rb_iuse">
+ <property name="toolTip">
+ <string><html><head/><body><p>Search for packages that support a specific use flag(s)</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Use Support</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="4" column="0" colspan="11">
+ <widget class="QProgressBar" name="s_pbar">
+ <property name="value">
+ <number>0</number>
+ </property>
+ <property name="textVisible">
+ <bool>true</bool>
+ </property>
+ <property name="format">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="8">
+ <widget class="QLCDNumber" name="s_lcd_results">
+ <property name="digitCount">
+ <number>5</number>
+ </property>
+ <property name="segmentStyle">
+ <enum>QLCDNumber::Flat</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="8" colspan="2">
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>101</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="1" rowspan="3" colspan="2">
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QCheckBox" name="s_cb_testing">
+ <property name="toolTip">
+ <string><html><head/><body><p>Include only packages with a testing version</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Testing</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="s_rb_decription">
+ <property name="toolTip">
+ <string>Search the description field</string>
+ </property>
+ <property name="text">
+ <string>Description</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="s_rb_use_enabled">
+ <property name="toolTip">
+ <string><html><head/><body><p>Search for packages installed with a specific use flag enabled</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Use Enabled</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="0" column="3" rowspan="3" colspan="2">
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QCheckBox" name="s_cb_installed">
+ <property name="toolTip">
+ <string><html><head/><body><p>Include only installed packages</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Installed</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="s_rb_category">
+ <property name="toolTip">
+ <string>Search the category field</string>
+ </property>
+ <property name="text">
+ <string>Category</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="s_rb_use_disabled">
+ <property name="toolTip">
+ <string><html><head/><body><p>Search for packages instealled with a specific use flag disabled</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Use Disabled</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="0" column="5" rowspan="3" colspan="3">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetDefaultConstraint</enum>
+ </property>
+ <item>
+ <widget class="QCheckBox" name="s_cb_overlay">
+ <property name="toolTip">
+ <string><html><head/><body><p>Include only packages with at least one version in an overlay</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Overlay</string>
+ </property>
+ <property name="tristate">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="s_rb_name">
+ <property name="toolTip">
+ <string>Search the name field</string>
+ </property>
+ <property name="text">
+ <string>Name</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="s_l_results">
+ <property name="text">
+ <string>Results: </string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab_depgraph">
+ <attribute name="title">
+ <string>Dep Graph</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="0" column="0">
+ <widget class="QRadioButton" name="d_rb_select">
+ <property name="text">
+ <string>Select Package</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" colspan="2">
+ <widget class="QComboBox" name="d_cb_category">
+ <property name="toolTip">
+ <string><html><head/><body><p>Select a package category from the list</p></body></html></string>
+ </property>
+ <item>
+ <property name="text">
+ <string>Select Category</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QComboBox" name="d_cb_package">
+ <property name="toolTip">
+ <string><html><head/><body><p>Select a package from the list</p></body></html></string>
+ </property>
+ <item>
+ <property name="text">
+ <string>Select Package</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="0" column="4">
+ <widget class="QComboBox" name="d_cb_version">
+ <property name="toolTip">
+ <string><html><head/><body><p>Select a package version from the list</p></body></html></string>
+ </property>
+ <item>
+ <property name="text">
+ <string>Select Version</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="0" column="5">
+ <widget class="QLabel" name="d_label_depth">
+ <property name="maximumSize">
+ <size>
+ <width>60</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="toolTip">
+ <string>Max depgrah depth (0=no max)</string>
+ </property>
+ <property name="layoutDirection">
+ <enum>Qt::LeftToRight</enum>
+ </property>
+ <property name="text">
+ <string>Depth:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="6">
+ <widget class="QLineEdit" name="d_le_depth">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>80</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="sizeIncrement">
+ <size>
+ <width>5</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="baseSize">
+ <size>
+ <width>30</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string><html><head/><body><p>Set the depth to which the dependencies are calculated (0 = full depth)</p></body></html></string>
+ </property>
+ <property name="inputMask">
+ <string/>
+ </property>
+ <property name="text">
+ <string>1</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="7">
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>50</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="8" colspan="2">
+ <widget class="QPushButton" name="d_pb_calculate">
+ <property name="toolTip">
+ <string><html><head/><body><p>Click to do stuff</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Calculate</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QRadioButton" name="d_rb_manual">
+ <property name="text">
+ <string>Enter Package</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" colspan="4">
+ <widget class="QLineEdit" name="d_le_package">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="placeholderText">
+ <string>=category/package-version</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="5" colspan="4">
+ <widget class="QCheckBox" name="d_ckb_installed">
+ <property name="toolTip">
+ <string><html><head/><body><p>Experimental feature:</p><p>May result in spurious parent/child relationships in depgraph</p><p>The packages listed are still the correct dependencies.</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Do Not Include Installed Packages</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="10">
+ <widget class="QTreeView" name="d_tv_results">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>250</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="10">
+ <widget class="QProgressBar" name="d_pbar">
+ <property name="value">
+ <number>0</number>
+ </property>
+ <property name="textVisible">
+ <bool>true</bool>
+ </property>
+ <property name="format">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QPushButton" name="d_pb_expand">
+ <property name="text">
+ <string>Expand All</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QPushButton" name="d_pb_collapse">
+ <property name="text">
+ <string>Collapse All</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2" colspan="8">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>372</width>
+ <height>27</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab_update">
+ <attribute name="title">
+ <string>Emerge</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_5">
+ <item row="0" column="0">
+ <widget class="QRadioButton" name="e_rb_new_use">
+ <property name="toolTip">
+ <string><html><head/><body><p>Adds the --newuse (-N) option to the emerge command</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>New Use</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">use_buttongroup</string>
+ </attribute>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QRadioButton" name="e_rb_update">
+ <property name="font">
+ <font>
+ <weight>50</weight>
+ <bold>false</bold>
+ <underline>false</underline>
+ </font>
+ </property>
+ <property name="toolTip">
+ <string><html><head/><body><p>Adds the --update (-u) option to the emerge command</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Update</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">tree_buttongroup</string>
+ </attribute>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QCheckBox" name="e_cb_deep">
+ <property name="text">
+ <string>Deep</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QRadioButton" name="e_rb_world">
+ <property name="text">
+ <string>@World</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">atom_buttongroup</string>
+ </attribute>
+ </widget>
+ </item>
+ <item row="0" column="4">
+ <widget class="QRadioButton" name="e_rb_atom">
+ <property name="toolTip">
+ <string><html><head/><body><p>Enter a specific atom or set in the box below to use this option</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Atom Below</string>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">atom_buttongroup</string>
+ </attribute>
+ </widget>
+ </item>
+ <item row="0" column="5">
+ <spacer name="horizontalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>44</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="6">
+ <widget class="QPushButton" name="e_pb_go">
+ <property name="toolTip">
+ <string><html><head/><body><p>Executes the command with the set parameters</p><p>All command run with '--pretend' set. </p><p>'--pretend' is substituted for '--ask' on the displayed command, for quick copy and pasting.</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Execute</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QRadioButton" name="e_rb_ch_use">
+ <property name="toolTip">
+ <string><html><head/><body><p>Adds the --changed-use (-U) option to the emerge command</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Changed Use</string>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">use_buttongroup</string>
+ </attribute>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QRadioButton" name="e_rb_emptytree">
+ <property name="toolTip">
+ <string><html><head/><body><p>Adds the --emptytree (-e) option to the emerge command</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>Empty Tree</string>
+ </property>
+ <property name="autoExclusive">
+ <bool>true</bool>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">tree_buttongroup</string>
+ </attribute>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QCheckBox" name="e_cb_nodeps">
+ <property name="toolTip">
+ <string><html><head/><body><p>Adds the --nodeps option to the emerge command (speeds up checking for use changes on a single package)</p></body></html></string>
+ </property>
+ <property name="text">
+ <string>No Deps</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <widget class="QRadioButton" name="e_rb_system">
+ <property name="text">
+ <string>@System</string>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">atom_buttongroup</string>
+ </attribute>
+ </widget>
+ </item>
+ <item row="1" column="4" colspan="3">
+ <widget class="QLineEdit" name="e_le_atom">
+ <property name="placeholderText">
+ <string>Enter atom or set here</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="7">
+ <widget class="QListView" name="e_lv_results"/>
+ </item>
+ <item row="3" column="0" colspan="7">
+ <widget class="QProgressBar" name="e_pbar">
+ <property name="value">
+ <number>0</number>
+ </property>
+ <property name="textVisible">
+ <bool>true</bool>
+ </property>
+ <property name="format">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="7">
+ <widget class="QLineEdit" name="u_le_cmd">
+ <property name="toolTip">
+ <string><html><head/><body><p>Command to run in a terminal to make proposed changes</p></body></html></string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <resources/>
+ <connections/>
+ <buttongroups>
+ <buttongroup name="use_buttongroup">
+ <property name="exclusive">
+ <bool>true</bool>
+ </property>
+ </buttongroup>
+ <buttongroup name="atom_buttongroup"/>
+ <buttongroup name="tree_buttongroup"/>
+ </buttongroups>
+</ui>