def __init__(self, app=None): #QMainWindow.__init__(self, None) super(MainWindow, self).__init__(None) self.setupUi(self) self.app = app self.iface = backend.pm.Iface() self.busy = QProgressIndicator(self) self.busy.setFixedSize(QSize(20, 20)) self.setWindowIcon( QIcon("/usr/share/package-manager/data/tray-zero.svg")) self.setCentralWidget(MainWidget(self)) self.cw = self.centralWidget() self.settingsDialog = SettingsDialog(self) self.initializeActions() self.initializeStatusBar() self.initializeTray() self.connectMainSignals() self.pdsMessageBox = PMessageBox(self)
def __init__(self, parent, url): PAbstractBox.__init__(self, parent.parent) self.setupUi(self) self.parent = parent # PDS Settings self._animation = 1 self._duration = 1 self.enableOverlay() self.setOverlayOpacity(150) # self._disable_parent_in_shown = True self.cancelButton.clicked.connect(self._hide) self.cancelButton.setIcon(KIcon("cancel")) # Hide Scrollbars and context menu in webview self.webView.setContextMenuPolicy(Qt.NoContextMenu) self.webView.page().mainFrame().setScrollBarPolicy( Qt.Vertical, Qt.ScrollBarAlwaysOff) self.webView.page().mainFrame().setScrollBarPolicy( Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.busy = QProgressIndicator(self, "white") self.busy.setMaximumSize(QSize(48, 48)) self.webLayout.addWidget(self.busy) self.busy.hide() self.parent._hide() QTimer.singleShot(0, lambda: self.showPackageScreenShot(url)) self.setOverlayClickMethod(lambda x: self._hide())
def __init__(self, state, parent=None): PAbstractBox.__init__(self, parent) self.iface = backend.pm.Iface() self.state = state self.setupUi(self) self.busy = QProgressIndicator(self, "white") self.busy.setMinimumSize(QSize(48, 48)) self.mainLayout.addWidget(self.busy) # PDS Settings self._animation = 2 self._duration = 500 self.last_msg = None self.enableOverlay() self._disable_parent_in_shown = True self.registerFunction(FINISHED, self.busy.startAnimation) self.registerFunction(OUT, self.busy.stopAnimation) self.connect(self.cancelButton, SIGNAL("clicked()"), self.cancel) self.parent = parent self.setStyleSheet( "QLabel, QTextEdit, QTextBrowser{background:rgba(0,0,0,0);color:white;}" ) self._last_action = '' self._shown = False
def __init__(self, parent, connection): QtGui.QWidget.__init__(self, parent) self.setupUi(self) self.available = True self.parent = parent self.connection = connection bus = parent.bus.get_object(NM_BUS_NAME, str(connection.proxy.object_path)) interface = dbus.Interface(bus, NM_SETTINGS_CONNECTION) interface.connect_to_signal("Removed", parent.fillConnections) interface.connect_to_signal("Updated", self.updateState) self.busy = QProgressIndicator(self) self.busy.setMinimumSize(QSize(32, 32)) self.mainLayout.insertWidget(0, self.busy) self.busy.hide() self.connect(parent, SIGNAL("stateChanged()"), self.updateState) self.button.clicked.connect(lambda: self.parent.setState(self)) self.updateState() self.toggleButtons()
def __init__(self, state, parent=None): PAbstractBox.__init__(self, parent) self.iface = backend.pm.Iface() self.state = state self.setupUi(self) self.busy = QProgressIndicator(self, "white") self.busy.setMinimumSize(QSize(48, 48)) self.mainLayout.addWidget(self.busy) # PDS Settings self._animation = 2 self._duration = 1 self.last_msg = None self.enableOverlay() self.setOverlayOpacity(150) self._disable_parent_in_shown = True self.registerFunction(FINISHED, self.busy.startAnimation) self.registerFunction(OUT, self.busy.stopAnimation) self.cancelButton.clicked.connect(self.cancel) self.cancelButton.setIcon(QIcon.fromTheme("list-remove")) self.parent = parent self.widget.setStyleSheet("QTextEdit { \ background:rgba(0,0,0,0); \ color:white;}") self._last_action = '' self._shown = False
def __init__(self, package, parent, item): QtWidgets.QWidget.__init__(self, None) self.ui = Ui_ServiceItemWidget() self.ui.setupUi(self) self.busy = QProgressIndicator(self) self.busy.setMinimumSize(QtCore.QSize(32, 32)) self.ui.mainLayout.insertWidget(0, self.busy) self.ui.spacer.hide() self.busy.hide() self.ui.labelName.setText(package) self.toggleButtons() self.ui.buttonStart.setIcon(QIcon.fromTheme("media-playback-start")) self.ui.buttonStop.setIcon(QIcon.fromTheme("media-playback-stop")) self.ui.buttonReload.setIcon(QIcon.fromTheme("view-refresh")) self.ui.buttonInfo.setIcon(QIcon.fromTheme("dialog-information")) self.toggled = False self.root = parent self.iface = parent.iface self.item = item self.package = package self.info = ServiceItemInfo(self) self.type = None self.desc = None self.ui.buttonStart.clicked.connect(self.setService) self.ui.buttonStop.clicked.connect(self.setService) self.ui.buttonReload.clicked.connect(self.setService) self.ui.checkStart.clicked.connect(self.setService) self.ui.buttonInfo.clicked.connect(self.info.showDescription)
class PreviewDialog(PAbstractBox, Ui_Preview): def __init__(self, parent, url): PAbstractBox.__init__(self, parent.parent) self.setupUi(self) self.parent = parent # PDS Settings self._animation = 1 self._duration = 1 self.enableOverlay() self.setOverlayOpacity(150) # self._disable_parent_in_shown = True self.cancelButton.clicked.connect(self._hide) self.cancelButton.setIcon(KIcon("cancel")) # Hide Scrollbars and context menu in webview self.webView.setContextMenuPolicy(Qt.NoContextMenu) self.webView.page().mainFrame().setScrollBarPolicy( Qt.Vertical, Qt.ScrollBarAlwaysOff) self.webView.page().mainFrame().setScrollBarPolicy( Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.busy = QProgressIndicator(self, "white") self.busy.setMaximumSize(QSize(48, 48)) self.webLayout.addWidget(self.busy) self.busy.hide() self.parent._hide() QTimer.singleShot(0, lambda: self.showPackageScreenShot(url)) self.setOverlayClickMethod(lambda x: self._hide()) def showPackageScreenShot(self, url): if network_available(): self.webView.loadFinished.connect( lambda x: self.webView.setVisible(x)) self.webView.loadFinished.connect( lambda x: self.busy.setVisible(not x)) self.webView.loadFinished.connect( lambda x: self.cancelButton.setVisible(x)) self.registerFunction(FINISHED, lambda: self.webView.load(url)) self.cancelButton.hide() self.webView.hide() self.busy.busy() self.animate(start=BOTCENTER, stop=MIDCENTER) def _hide(self): self.busy.stopAnimation() self.webView.loadFinished.disconnect() self.animate(start=MIDCENTER, stop=BOTCENTER, direction=OUT) self.parent.animate(start=BOTCENTER, stop=MIDCENTER)
def __init__(self, parent, url): PAbstractBox.__init__(self, parent.parent) self.setupUi(self) self.parent = parent # PDS Settings self._animation = 1 self._duration = 400 self.enableOverlay() # self._disable_parent_in_shown = True self.cancelButton.clicked.connect(self._hide) self.cancelButton.setIcon(KIcon("dialog-close")) # Hide Scrollbars and context menu in webview self.webView.setContextMenuPolicy(Qt.NoContextMenu) self.webView.page().mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) self.webView.page().mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.busy = QProgressIndicator(self, "white") self.busy.setMaximumSize(QSize(48, 48)) self.webLayout.addWidget(self.busy) self.busy.hide() self.parent._hide() QTimer.singleShot(0, lambda: self.showPackageScreenShot(url)) self.setOverlayClickMethod(lambda x:self._hide())
def __init__(self, parent): PAbstractBox.__init__(self, parent) self.ui = Ui_MessageBox() self.ui.setupUi(self) self.busy = QProgressIndicator(self, "white") self.busy.setMinimumSize(QtCore.QSize(32, 32)) self.busy.hide() self.ui.mainLayout.insertWidget(1, self.busy) self._animation = 2 self._duration = 500 self.last_msg = None self.setStyleSheet(PMessageBox.STYLE) self.enableOverlay() self.hide()
def __init__(self, package, parent, item): QtGui.QWidget.__init__(self, None) self.ui = Ui_ServiceItemWidget() self.ui.setupUi(self) self.busy = QProgressIndicator(self) self.busy.setMinimumSize(QtCore.QSize(32, 32)) self.ui.mainLayout.insertWidget(0, self.busy) self.ui.spacer.hide() self.busy.hide() self.ui.labelName.setText(package) self.toggleButtons() self.ui.buttonStart.setIcon(KIcon("media-playback-start")) self.ui.buttonStop.setIcon(KIcon("media-playback-stop")) self.ui.buttonReload.setIcon(KIcon("view-refresh")) self.ui.buttonInfo.setIcon(KIcon("dialog-information")) self.toggled = False self.root = parent self.iface = parent.iface self.item = item self.package = package self.info = ServiceItemInfo(self) self.type = None self.desc = None self.connect(self.ui.buttonStart, SIGNAL("clicked()"), self.setService) self.connect(self.ui.buttonStop, SIGNAL("clicked()"), self.setService) self.connect(self.ui.buttonReload, SIGNAL("clicked()"), self.setService) self.connect(self.ui.checkStart, SIGNAL("clicked()"), self.setService) self.connect(self.ui.buttonInfo, SIGNAL("clicked()"), self.info.showDescription)
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.gl = QtGui.QGridLayout(self) butonh = QtGui.QPushButton("click to hide", self) butons = QtGui.QPushButton("click to show", self) self.busy = QProgressIndicator(self) self.gl.addWidget(butonh) self.gl.addWidget(self.busy) self.gl.addWidget(butons) self.busy.startAnimation() butonh.clicked.connect(self.busy.stopAnimation) butons.clicked.connect(self.busy.startAnimation)
def __init__(self, state, parent=None): PAbstractBox.__init__(self, parent) self.iface = backend.pm.Iface() self.state = state self.setupUi(self) self.busy = QProgressIndicator(self, "white") self.busy.setMinimumSize(QSize(48, 48)) self.mainLayout.addWidget(self.busy) # PDS Settings self._animation = 2 self._duration = 1 self.last_msg = None self.enableOverlay() self.setOverlayOpacity(150) self._disable_parent_in_shown = True self.registerFunction(FINISHED, self.busy.startAnimation) self.registerFunction(OUT, self.busy.stopAnimation) self.connect(self.cancelButton, SIGNAL("clicked()"), self.cancel) self.cancelButton.setIcon(KIcon("cancel")) self.parent = parent self.setStyleSheet("QLabel, QTextEdit, QTextBrowser{background:rgba(0,0,0,0);color:white;}") self._last_action = '' self._shown = False
def __init__(self, app = None): KXmlGuiWindow.__init__(self, None) self.setupUi(self) self.app = app self.iface = backend.pm.Iface() self.busy = QProgressIndicator(self) self.busy.setFixedSize(QSize(20, 20)) #set style self._style = "/usr/share/kde4/apps/package-manager/data/style.qss" self.setStyleSheet(file(self._style).read()) self.setWindowIcon(KIcon(":/data/package-manager.png")) self.setCentralWidget(MainWidget(self)) self.cw = self.centralWidget() self.settingsDialog = SettingsDialog(self) self.initializeActions() self.initializeStatusBar() self.initializeTray() self.connectMainSignals() self.pdsMessageBox = PMessageBox(self)
class PreviewDialog(PAbstractBox, Ui_Preview): def __init__(self, parent, url): PAbstractBox.__init__(self, parent.parent) self.setupUi(self) self.parent = parent # PDS Settings self._animation = 1 self._duration = 1 self.enableOverlay() self.setOverlayOpacity(150) # self._disable_parent_in_shown = True self.cancelButton.clicked.connect(self._hide) self.cancelButton.setIcon(KIcon("cancel")) # Hide Scrollbars and context menu in webview self.webView.setContextMenuPolicy(Qt.NoContextMenu) self.webView.page().mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) self.webView.page().mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.busy = QProgressIndicator(self, "white") self.busy.setMaximumSize(QSize(48, 48)) self.webLayout.addWidget(self.busy) self.busy.hide() self.parent._hide() QTimer.singleShot(0, lambda: self.showPackageScreenShot(url)) self.setOverlayClickMethod(lambda x:self._hide()) def showPackageScreenShot(self, url): if network_available(): self.webView.loadFinished.connect(lambda x: self.webView.setVisible(x)) self.webView.loadFinished.connect(lambda x: self.busy.setVisible(not x)) self.webView.loadFinished.connect(lambda x: self.cancelButton.setVisible(x)) self.registerFunction(FINISHED, lambda: self.webView.load(url)) self.cancelButton.hide() self.webView.hide() self.busy.busy() self.animate(start = BOTCENTER, stop = MIDCENTER) def _hide(self): self.busy.stopAnimation() self.webView.loadFinished.disconnect() self.animate(start = MIDCENTER, stop = BOTCENTER, direction = OUT) self.parent.animate(start = BOTCENTER, stop = MIDCENTER)
def __init__(self, parent): PAbstractBox.__init__(self, parent) self.layout = QtWidgets.QHBoxLayout(self) self.icon = QtWidgets.QLabel(self) self.icon.hide() self.layout.addWidget(self.icon) self.busy = QProgressIndicator(self, "white") self.busy.hide() self.layout.addWidget(self.busy) self.label = QtWidgets.QLabel(self) self.layout.addWidget(self.label) self._animation = 2 self._duration = 500
class UI(QtGui.QWidget): def __init__(self, parent = None): QtGui.QWidget.__init__(self, parent) self.gl = QtGui.QGridLayout(self) butonh = QtGui.QPushButton("click to hide", self) butons = QtGui.QPushButton("click to show", self) self.busy = QProgressIndicator(self) self.gl.addWidget(butonh) self.gl.addWidget(self.busy) self.gl.addWidget(butons) self.busy.startAnimation() butonh.clicked.connect(self.busy.stopAnimation) butons.clicked.connect(self.busy.startAnimation)
class PMessageBox(PAbstractBox): # STYLE SHEET STYLE = """color:white;font-size:16pt;""" OUT_POS = MIDCENTER IN_POS = MIDCENTER STOP_POS = MIDCENTER def __init__(self, parent): PAbstractBox.__init__(self, parent) self.ui = Ui_MessageBox() self.ui.setupUi(self) self.busy = QProgressIndicator(self, "white") self.busy.setMinimumSize(QSize(32, 32)) self.busy.hide() self.ui.mainLayout.insertWidget(1, self.busy) self._animation = 2 self._duration = 1 self.last_msg = None self.setStyleSheet(PMessageBox.STYLE) self.enableOverlay() self.setOverlayOpacity(150) self.hide() def showMessage(self, message, icon=None, busy=False): self.ui.label.setText(message) if busy: self.busy.busy() self.ui.icon.hide() else: if icon: if type(icon) == str: icon = KIcon(icon).pixmap(32, 32) self.ui.icon.setPixmap(QPixmap(icon)) self.ui.icon.show() else: self.ui.icon.hide() self.busy.hide() self.last_msg = self.animate(start=PMessageBox.IN_POS, stop=PMessageBox.STOP_POS) qApp.processEvents() # ??? def hideMessage(self, force=False): if self.isVisible() or force: self.animate(start=PMessageBox.STOP_POS, stop=PMessageBox.OUT_POS, direction=OUT, dont_animate=True)
class PMessageBox(PAbstractBox): Style = """color:white; background-color:rgba(0,0,0,200); border: 1px solid rgba(0,0,0,200); border-radius:4px;""" def __init__(self, parent): PAbstractBox.__init__(self, parent) self.layout = QtWidgets.QHBoxLayout(self) self.icon = QtWidgets.QLabel(self) self.icon.hide() self.layout.addWidget(self.icon) self.busy = QProgressIndicator(self, "White") self.busy.hide() self.layout.addWidget(self.busy) self.label = QtWidgets.QLabel(self) self.layout.addWidget(self.label) self._animation = 2 self._duration = 500 self.raise_() def setMessage(self, message): if message == '': self.label.hide() else: self.label.setText(message) self.label.setAlignment(QtCore.Qt.AlignVCenter) self.adjustSize() def setIcon(self, icon=None): if not icon: self.icon.hide() else: self.icon.setPixmap(icon.pixmap(22, 22)) self.icon.show() self.adjustSize()
def __init__(self, parent): PAbstractBox.__init__(self, parent) self.setupUi(self) self.iface = parent.iface # PDS Settings self._animation = 1 self._duration = 1 self.enableOverlay() self.setOverlayOpacity(150) self._disable_parent_in_shown = True self.registerFunction(IN, lambda: parent.statusBar().hide()) self.registerFunction( FINISHED, lambda: parent.statusBar().setVisible(not self.isVisible())) self._as = 'http://appinfo.pisilinux.org' self.cancelButton.clicked.connect(self._hide) self.cancelButton.setIcon(KIcon("cancel")) # Hide Scrollbars and context menu in webview self.webView.setContextMenuPolicy(Qt.NoContextMenu) self.webView.page().mainFrame().setScrollBarPolicy( Qt.Vertical, Qt.ScrollBarAlwaysOff) self.webView.page().mainFrame().setScrollBarPolicy( Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.webView.page().setLinkDelegationPolicy( QtWebKit.QWebPage.DelegateAllLinks) self.webView.page().linkClicked.connect(self.showFullImage) self.tabWidget.removeTab(0) self.busy = QProgressIndicator(self, "white") self.busy.setMaximumSize(QSize(48, 48)) self.webLayout.addWidget(self.busy) self.busy.hide() self._filesThread = PThread(self, self.getFiles, self.getFilesFinished) self.noconnection.hide() self.parent = parent
class PMessageBox(PAbstractBox): # STYLE SHEET STYLE = """color:white;font-size:16pt;""" OUT_POS = MIDCENTER IN_POS = MIDCENTER STOP_POS = MIDCENTER def __init__(self, parent): PAbstractBox.__init__(self, parent) self.ui = Ui_MessageBox() self.ui.setupUi(self) self.busy = QProgressIndicator(self, "white") self.busy.setMinimumSize(QtCore.QSize(32, 32)) self.busy.hide() self.ui.mainLayout.insertWidget(1, self.busy) self._animation = 2 self._duration = 1 self.last_msg = None self.setStyleSheet(PMessageBox.STYLE) self.enableOverlay() self.setOverlayOpacity(150) self.hide() def showMessage(self, message, icon = None, busy = False): self.ui.label.setText(message) if busy: self.busy.busy() self.ui.icon.hide() else: if icon: if type(icon) == str: icon = QIcon(icon).pixmap(32,32) self.ui.icon.setPixmap(QtGui.QPixmap(icon)) self.ui.icon.show() else: self.ui.icon.hide() self.busy.hide() self.last_msg = self.animate(start = PMessageBox.IN_POS, stop = PMessageBox.STOP_POS) QtWidgets.qApp.processEvents() def hideMessage(self, force = False): if self.isVisible() or force: self.animate(start = PMessageBox.STOP_POS, stop = PMessageBox.OUT_POS, direction = OUT, dont_animate = True)
def __init__(self, app=None): KXmlGuiWindow.__init__(self, None) self.setupUi(self) self.app = app self.iface = backend.pm.Iface() self.busy = QProgressIndicator(self) self.busy.setFixedSize(QSize(20, 20)) self.setWindowIcon(KIcon(":/data/package-manager.png")) self.setCentralWidget(MainWidget(self)) self.cw = self.centralWidget() self.settingsDialog = SettingsDialog(self) self.initializeActions() self.initializeStatusBar() self.initializeTray() self.connectMainSignals() self.pdsMessageBox = PMessageBox(self)
def __init__(self, parent): PAbstractBox.__init__(self, parent) self.layout = QtGui.QHBoxLayout(self) self.icon = QtGui.QLabel(self) self.icon.hide() self.layout.addWidget(self.icon) self.busy = QProgressIndicator(self, "white") self.busy.hide() self.layout.addWidget(self.busy) self.label = QtGui.QLabel(self) self.layout.addWidget(self.label) self._animation = 2 self._duration = 500
def __init__(self, app = None): QMainWindow.__init__(self, None) self.setupUi(self) self.app = app self.iface = backend.pm.Iface() self.busy = QProgressIndicator(self) self.busy.setFixedSize(QSize(20, 20)) self.setWindowIcon(QIcon(":/data/package-manager.png")) self.setCentralWidget(MainWidget(self)) self.cw = self.centralWidget() self.settingsDialog = SettingsDialog(self) self.initializeActions() self.initializeStatusBar() self.initializeTray() self.connectMainSignals() self.pdsMessageBox = PMessageBox(self)
def __init__(self, parent): PAbstractBox.__init__(self, parent) self.setupUi(self) self.iface = parent.iface # PDS Settings self._animation = 1 self._duration = 400 self.enableOverlay() self._disable_parent_in_shown = True self.registerFunction(IN, lambda: parent.statusBar().hide()) self.registerFunction(FINISHED, lambda: parent.statusBar().setVisible(not self.isVisible())) self._as = 'http://onurguzel.com/appinfo' self.cancelButton.clicked.connect(self._hide) self.cancelButton.setIcon(KIcon("dialog-close")) # Hide Scrollbars and context menu in webview self.webView.setContextMenuPolicy(Qt.NoContextMenu) self.webView.page().mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) self.webView.page().mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.webView.page().setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateAllLinks) self.webView.page().linkClicked.connect(self.redirectLinks) self.tabWidget.removeTab(0) self.busy = QProgressIndicator(self, "white") self.busy.setMaximumSize(QSize(48, 48)) self.webLayout.addWidget(self.busy) self.busy.hide() self._filesThread = PThread(self, self.getFiles, self.getFilesFinished) self.filterLine.setListWidget(self.filesList) self.noconnection.hide() self.parent = parent
def __init__(self, parent, connection): QtWidgets.QWidget.__init__(self, parent) self.setupUi(self) self.available = True self.parent = parent self.connection = connection bus = parent.bus.get_object(NM_BUS_NAME, str(connection.proxy.object_path)) interface = dbus.Interface(bus, NM_SETTINGS_CONNECTION) interface.connect_to_signal("Removed", parent.fillConnections) interface.connect_to_signal("Updated", self.updateState) self.busy = QProgressIndicator(self) self.busy.setMinimumSize(QSize(32, 32)) self.mainLayout.insertWidget(0, self.busy) self.busy.hide() self.connect(parent, SIGNAL("stateChanged()"), self.updateState) self.button.clicked.connect(lambda: self.parent.setState(self)) self.updateState() self.toggleButtons()
class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, app = None): #QMainWindow.__init__(self, None) super(MainWindow, self).__init__(None) self.setupUi(self) self.app = app self.iface = backend.pm.Iface() self.busy = QProgressIndicator(self) self.busy.setFixedSize(QSize(20, 20)) self.setWindowIcon(QIcon("/usr/share/package-manager/data/tray-zero.svg")) self.setCentralWidget(MainWidget(self)) self.cw = self.centralWidget() self.settingsDialog = SettingsDialog(self) self.initializeActions() self.initializeStatusBar() self.initializeTray() self.connectMainSignals() self.pdsMessageBox = PMessageBox(self) def connectMainSignals(self): self.cw.connectMainSignals() move_shortcut=QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Tab),self) move_shortcut.activated.connect(lambda: self.moveTab('next')) QShortcut(QKeySequence(Qt.SHIFT + Qt.CTRL + Qt.Key_Tab),self).activated.connect(lambda: self.moveTab('prev')) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_F),self).activated.connect(self.cw.searchLine.setFocus) QShortcut(QKeySequence(Qt.Key_F3),self).activated.connect(self.cw.searchLine.setFocus) self.settingsDialog.generalSettings.packagesChanged.connect(self.cw.initialize) self.settingsDialog.generalSettings.packageViewChanged.connect(self.cw.updateSettings) self.settingsDialog.generalSettings.traySettingChanged.connect(self.tray.settingsChanged) self.cw.state.repositoriesChanged.connect(self.tray.populateRepositoryMenu) self.cw.repositoriesUpdated.connect(self.tray.updateTrayUnread) def moveTab(self, direction): new_index = self.cw.stateTab.currentIndex() - 1 if direction == 'next': new_index = self.cw.stateTab.currentIndex() + 1 if new_index not in range(self.cw.stateTab.count()): new_index = 0 self.cw.stateTab.setCurrentIndex(new_index) def initializeTray(self): self.tray = Tray(self, self.iface) self.cw.operation.finished[str].connect(self.trayAction) self.cw.operation.finished[str].connect(self.tray.stop) self.cw.operation.operationCancelled.connect(self.tray.stop) self.cw.operation.started[str].connect(self.tray.animate) self.tray.showUpdatesSelected.connect(self.trayShowUpdates) # buraya dikkat def trayShowUpdates(self): self.showUpgradeAction.setChecked(True) self.cw.switchState(StateManager.UPGRADE) KApplication.kApplication().updateUserTimestamp() self.show() self.raise_() def trayAction(self, operation): if not self.isVisible() and operation in ["System.Manager.updateRepository", "System.Manager.updateAllRepositories"]: self.tray.showPopup() if self.tray.isVisible() and operation in ["System.Manager.updatePackage", "System.Manager.installPackage", "System.Manager.removePackage"]: self.tray.updateTrayUnread() def initializeStatusBar(self): self.cw.mainLayout.insertWidget(0, self.busy) self.statusBar().addPermanentWidget(self.cw.actions, 1) self.statusBar().show() self.updateStatusBar('') self.cw.selectionStatusChanged[str].connect(self.updateStatusBar) self.cw.updatingStatus.connect(self.statusWaiting) def initializeActions(self): self.initializeOperationActions() def initializeOperationActions(self): self.showAllAction = QAction(QIcon.fromTheme("media-optical"), _translate("Packaga Manager","All Packages"), self) self.showAllAction.triggered.connect(lambda:self.cw.switchState(StateManager.ALL)) self.cw.stateTab.addTab(QWidget(), QIcon.fromTheme("media-optical"), _translate("Packaga Manager","All Packages")) self.showInstallAction = QAction(QIcon.fromTheme("list-remove"), _translate("Packaga Manager","Installable Packages"), self) self.showInstallAction.triggered.connect(lambda:self.cw.switchState(StateManager.INSTALL)) self.cw.stateTab.addTab(QWidget(), QIcon.fromTheme("list-add"), _translate("Packaga Manager","Installable Packages")) self.showRemoveAction = QAction(QIcon.fromTheme("list-add"), _translate("Packaga Manager","Installed Packages"), self) self.showRemoveAction.triggered.connect(lambda:self.cw.switchState(StateManager.REMOVE)) self.cw.stateTab.addTab(QWidget(), QIcon.fromTheme("list-remove"), _translate("Packaga Manager","Installed Packages")) self.showUpgradeAction = QAction(QIcon.fromTheme("system-software-update"), _translate("Packaga Manager","Updates"), self) self.showUpgradeAction.triggered.connect(lambda:self.cw.switchState(StateManager.UPGRADE)) self.cw.stateTab.addTab(QWidget(), QIcon("/usr/share/package-manager/data/star_1.svg"), _translate("Packaga Manager","Updates")) self.showPreferences = QAction(QIcon.fromTheme("preferences-system"), _translate("Packaga Manager","Settings"), self) self.showPreferences.triggered.connect(self.settingsDialog.show_) self.actionHelp = QAction(QIcon.fromTheme("help-about"), _translate("Packaga Manager","Help"), self) self.actionHelp.setShortcuts(QKeySequence.HelpContents) self.actionHelp.triggered.connect(self.showHelp) self.actionQuit = QAction(QIcon.fromTheme("media-eject"), _translate("Packaga Manager","Quit"), self) self.actionQuit.setShortcuts(QKeySequence.Quit) self.actionQuit.triggered.connect(qApp.exit) self.cw.menuButton.setMenu(QMenu('MainMenu', self.cw.menuButton)) self.cw.menuButton.setIcon(QIcon.fromTheme("preferences-system")) self.cw.menuButton.menu().clear() self.cw.contentHistory.hide() self.cw.menuButton.menu().addAction(self.showPreferences) self.cw.menuButton.menu().addSeparator() self.cw.menuButton.menu().addAction(self.actionHelp) self.cw.menuButton.menu().addAction(self.actionQuit) self.cw._states = {self.cw.state.ALL :(0, self.showAllAction), self.cw.state.INSTALL:(1, self.showInstallAction), self.cw.state.REMOVE :(2, self.showRemoveAction), self.cw.state.UPGRADE:(3, self.showUpgradeAction)} self.showAllAction.setChecked(True) self.cw.checkUpdatesButton.hide() self.cw.checkUpdatesButton.setIcon(QIcon.fromTheme("system-reboot")) self.cw.showBasketButton.clicked.connect(self.cw.showBasket) # Little time left for the new ui self.menuBar().setVisible(False) self.cw.switchState(self.cw.state.ALL) def statusWaiting(self): self.updateStatusBar(_translate("Packaga Manager",'Calculating dependencies...'), busy = True) def showHelp(self): self.Pds = pds.Pds() self.lang = localedata.setSystemLocale(justGet = True) if self.lang in os.listdir("/usr/share/package-manager/help"): pass else: self.lang = "en" if self.Pds.session == pds.Kde3 : os.popen("khelpcenter /usr/share/package-manager/help/%s/main_help.html" %(self.lang)) else: helpdialog.HelpDialog(self,helpdialog.MAINAPP) def updateStatusBar(self, text, busy = False): if text == '': text = _translate("Packaga Manager","Currently your basket is empty.") self.busy.hide() self.cw.showBasketButton.hide() else: self.cw.showBasketButton.show() if busy: self.busy.busy() self.cw.showBasketButton.hide() else: self.busy.hide() self.cw.statusLabel.setText(text) self.cw.statusLabel.setToolTip(text) def queryClose(self): if config.PMConfig().systemTray(): self.hide() return False return True def queryExit(self): if not self.iface.operationInProgress(): if self.tray: del self.tray.notification return True return False def CloseEvent(self,event): if self.iface.operationInProgress(): return
class ConnectionItem(QtWidgets.QWidget, Ui_ConnectionItem): def __init__(self, parent, connection): QtWidgets.QWidget.__init__(self, parent) self.setupUi(self) self.available = True self.parent = parent self.connection = connection bus = parent.bus.get_object(NM_BUS_NAME, str(connection.proxy.object_path)) interface = dbus.Interface(bus, NM_SETTINGS_CONNECTION) interface.connect_to_signal("Removed", parent.fillConnections) interface.connect_to_signal("Updated", self.updateState) self.busy = QProgressIndicator(self) self.busy.setMinimumSize(QSize(32, 32)) self.mainLayout.insertWidget(0, self.busy) self.busy.hide() self.connect(parent, SIGNAL("stateChanged()"), self.updateState) self.button.clicked.connect(lambda: self.parent.setState(self)) self.updateState() self.toggleButtons() def updateState(self, *args): if self.available is not True: return active = self.parent.isActive(self.connection) if active: state = self.parent.getState(self.connection) if state == ActiveConnectionState.ACTIVATED.value: self.setIcon(get_icon(self.connection.settings.conn_type, True)) elif state == ActiveConnectionState.ACTIVATING.value: self.showBusy() else: self.setIcon(get_icon(self.connection.settings.conn_type, False)) self.name.setText(unicode(self.connection.settings.id)) self.details.setText(unicode(self.connection.settings.conn_type)) self.button.setText("Disconnect" if active else "Connect") def showBusy(self): self.busy.busy() self.icon.hide() def setIcon(self, icon): self.busy.hide() self.icon.setPixmap(icon) self.icon.show() def resizeEvent(self, event): if self.parent.msgbox: self.parent.msgbox._resizeCallBacks(event) def enterEvent(self, event): if not self.button.isVisible(): self.toggleButtons(True) def leaveEvent(self, event): if self.button.isVisible(): self.toggleButtons() def toggleButtons(self, toggle=False): self.button.setVisible(toggle)
class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, app=None): QMainWindow.__init__(self, None) self.setupUi(self) self.app = app self.iface = backend.pm.Iface() self.busy = QProgressIndicator(self) self.busy.setFixedSize(QSize(20, 20)) self.setWindowIcon(QIcon(":/data/package-manager.png")) self.setCentralWidget(MainWidget(self)) self.cw = self.centralWidget() self.settingsDialog = SettingsDialog(self) self.initializeActions() self.initializeStatusBar() self.initializeTray() self.connectMainSignals() self.pdsMessageBox = PMessageBox(self) activated = pyqtSignal() def connectMainSignals(self): self.cw.connectMainSignals() QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Tab), self).activated.connect(lambda: self.moveTab('next')) QShortcut(QKeySequence(Qt.SHIFT + Qt.CTRL + Qt.Key_Tab), self).activated.connect(lambda: self.moveTab('prev')) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_F), self).activated.connect(self.cw.searchLine.setFocus) QShortcut(QKeySequence(Qt.Key_F3), self).activated.connect(self.cw.searchLine.setFocus) self.settingsDialog.packagesChanged.connect(self.cw.initialize) self.settingsDialog.packageViewChanged.connect(self.cw.updateSettings) self.settingsDialog.traySettingChanged.connect( self.tray.settingsChanged) self.cw.state.repositoriesChanged.connect( self.tray.populateRepositoryMenu) self.cw.repositoriesUpdated.connect(self.tray.updateTrayUnread) qApp.shutDown.connect(self.slotQuit) def moveTab(self, direction): new_index = self.cw.stateTab.currentIndex() - 1 if direction == 'next': new_index = self.cw.stateTab.currentIndex() + 1 if new_index not in range(self.cw.stateTab.count()): new_index = 0 self.cw.stateTab.setCurrentIndex(new_index) def initializeTray(self): self.tray = Tray(self, self.iface) self.cw.operation.finished.connect(self.trayAction) self.cw.operation.finished.connect(self.tray.stop) self.cw.operation.operationCancelled.connect(self.tray.stop) self.cw.operation.started.connect(self.tray.animate) self.tray.showUpdatesSelected.connect(self.trayShowUpdates) def trayShowUpdates(self): self.showUpgradeAction.setChecked(True) self.cw.switchState(StateManager.UPGRADE) KApplication.kApplication().updateUserTimestamp() self.show() self.raise_() def trayAction(self, operation): if not self.isVisible() and operation in [ "System.Manager.updateRepository", "System.Manager.updateAllRepositories" ]: self.tray.showPopup() if self.tray.isVisible() and operation in [ "System.Manager.updatePackage", "System.Manager.installPackage", "System.Manager.removePackage" ]: self.tray.updateTrayUnread() def initializeStatusBar(self): self.cw.mainLayout.insertWidget(0, self.busy) self.statusBar().addPermanentWidget(self.cw.actions, 1) self.statusBar().show() self.updateStatusBar('') self.cw.selectionStatusChanged.connect(self.updateStatusBar) self.cw.updatingStatus.connect(self.statusWaiting) def initializeActions(self): self.initializeOperationActions() def initializeOperationActions(self): self.showAllAction = QAction( KIcon(("applications-other", "package_applications")), self.tr("All Packages"), self) self.showAllAction.triggered.connect( lambda: self.cw.switchState(StateManager.ALL)) self.cw.stateTab.addTab( QWidget(), KIcon(("applications-other", "package_applications")), self.tr("All Packages")) self.showInstallAction = QAction(KIcon(("list-add", "add")), self.tr("Installable Packages"), self) self.showInstallAction.triggered.connect( lambda: self.cw.switchState(StateManager.INSTALL)) self.cw.stateTab.addTab(QWidget(), KIcon(("list-add", "add")), self.tr("Installable Packages")) self.showRemoveAction = QAction(KIcon(("list-remove", "remove")), self.tr("Installed Packages"), self) self.showRemoveAction.triggered.connect( lambda: self.cw.switchState(StateManager.REMOVE)) self.cw.stateTab.addTab(QWidget(), KIcon(("list-remove", "remove")), self.tr("Installed Packages")) self.showUpgradeAction = QAction( KIcon(("system-software-update", "gear")), self.tr("Updates"), self) self.showUpgradeAction.triggered.connect( lambda: self.cw.switchState(StateManager.UPGRADE)) self.cw.stateTab.addTab(QWidget(), KIcon(("system-software-update", "gear")), self.tr("Updates")) self.showPreferences = QAction( KIcon(("preferences-system", "package_settings")), self.tr("Settings"), self) self.showPreferences.triggered.connect(self.settingsDialog.show) self.actionHelp = QAction(KIcon("help"), self.tr("Help"), self) self.actionHelp.setShortcuts(QKeySequence.HelpContents) self.actionHelp.triggered.connect(self.showHelp) self.actionQuit = QAction(KIcon("exit"), self.tr("Quit"), self) self.actionQuit.setShortcuts(QKeySequence.Quit) self.actionQuit.triggered.connect(qApp.exit) self.cw.menuButton.setMenu(QMenu('MainMenu', self.cw.menuButton)) self.cw.menuButton.setIcon( KIcon(("preferences-system", "package_settings"))) self.cw.menuButton.menu().clear() self.cw.contentHistory.hide() self.cw.menuButton.menu().addAction(self.showPreferences) self.cw.menuButton.menu().addSeparator() self.cw.menuButton.menu().addAction(self.actionHelp) self.cw.menuButton.menu().addAction(self.actionQuit) self.cw._states = { self.cw.state.ALL: (0, self.showAllAction), self.cw.state.INSTALL: (1, self.showInstallAction), self.cw.state.REMOVE: (2, self.showRemoveAction), self.cw.state.UPGRADE: (3, self.showUpgradeAction) } self.showAllAction.setChecked(True) self.cw.checkUpdatesButton.hide() self.cw.checkUpdatesButton.setIcon(KIcon(("view-refresh", "reload"))) self.cw.showBasketButton.clicked.connect(self.cw.showBasket) # Little time left for the new ui self.menuBar().setVisible(False) self.cw.switchState(self.cw.state.ALL) def statusWaiting(self): self.updateStatusBar(self.tr('Calculating dependencies...'), busy=True) def showHelp(self): self.Pds = pds.Pds() self.lang = localedata.setSystemLocale(justGet=True) if self.lang in os.listdir("/usr/share/package-manager/help"): pass else: self.lang = "en" if self.Pds.session == pds.Kde3: os.popen( "khelpcenter /usr/share/package-manager/help/%s/main_help.html" % (self.lang)) else: helpdialog.HelpDialog(self, helpdialog.MAINAPP) def updateStatusBar(self, text, busy=False): if text == '': text = self.tr("Currently your basket is empty.") self.busy.hide() self.cw.showBasketButton.hide() else: self.cw.showBasketButton.show() if busy: self.busy.busy() self.cw.showBasketButton.hide() else: self.busy.hide() self.cw.statusLabel.setText(text) self.cw.statusLabel.setToolTip(text) def queryClose(self): if config.PMConfig().systemTray(): self.hide() return False return True def queryExit(self): if not self.iface.operationInProgress(): if self.tray: del self.tray.notification return True return False def slotQuit(self): if self.iface.operationInProgress(): return
def __init__(self, parent=None, step=1): QDialog.__init__(self, parent) self.setupUi(self) self.logger = SimpleLogger() self.log = self.logger.log self.target_repo = REPO_TEMPLATE % 'stable' self.iface = Iface(self) self.connect(self.iface, SIGNAL("notify(PyQt_PyObject)"), self.showMessage) self.msgbox = PMessageBox(self) self.msgbox.setStyleSheet("color:white;") self.msgbox.enableOverlay() # Just for Fun :) self.pageWidget = QPageWidget( self.widget_screens) # , direction = 'ttb') self.layout.addWidget(self.pageWidget) self.button_next.clicked.connect(self.pageWidget.next) self.button_previous.clicked.connect(self.pageWidget.prev) self.button_cancel.clicked.connect(self.reject) # Threads self.thread_step_1 = PThread(self, self.step_1_start, self.step_1_end) self.thread_step_2 = PThread(self, self.step_2_start, self.step_2_end) self.thread_step_3 = PThread(self, self.step_3_start, self.step_3_end) # Update Page Title self.connect(self.pageWidget, SIGNAL("currentChanged()"), lambda:\ self.label_header.setText(self.pageWidget.getCurrentWidget().title)) self.current_step = step if step == 1: self.thread_check = PThread(self, self.findMissingPackages, self.showResults) # Welcome self.pageWidget.createPage( getWidget(ui_screen_1, _("Welcome to Upgrade Manager..."))) # Repo Selection self.pageWidget.createPage( getWidget(ui_screen_2, _("Select Upgrade Repository..."))) # Check Results Page self.pageWidget.createPage(getWidget(ui_screen_3, _("Checking your system...")), inMethod=self.checkSystem, outMethod=self.hideMessage) resultWidget = self.pageWidget.getWidget(2).ui resultWidget.widget.hide() def updateButtons(): if self.button_next.text() == _("Next"): self.button_next.setText(_("Yes, Upgrade")) self.button_previous.setText(_("Cancel")) self.button_cancel.hide() else: self.button_next.setText(_("Next")) self.button_previous.setText(_("Previous")) self.button_cancel.show() # Last Question self.pageWidget.createPage(getWidget(ui_screen_4, ""), inMethod=updateButtons, outMethod=updateButtons) self._step_counter = 0 # Progress Screen self.pageWidget.createPage(getWidget(ui_screen_5, _("Upgrading the system...")), inMethod=self.upgradeStep_1) # Shortcut for Progress Screen UI # Get the last added page as progress page # After the first step completed, um will use just this page ! self.ps = self.pageWidget.getWidget(self.pageWidget.count() - 1).ui # Busy indicator to Progress Screen self.ps.busy = QProgressIndicator(self) self.ps.busy.hide() self.ps.layout.addWidget(self.ps.busy) if step == 2: self.upgradeStep_2() elif step == 3: self.upgradeStep_3()
class ServiceItemWidget(QtGui.QWidget): def __init__(self, package, parent, item): QtGui.QWidget.__init__(self, None) self.ui = Ui_ServiceItemWidget() self.ui.setupUi(self) self.busy = QProgressIndicator(self) self.busy.setMinimumSize(QtCore.QSize(32, 32)) self.ui.mainLayout.insertWidget(0, self.busy) self.ui.spacer.hide() self.busy.hide() self.ui.labelName.setText(package) self.toggleButtons() self.ui.buttonStart.setIcon(KIcon("media-playback-start")) self.ui.buttonStop.setIcon(KIcon("media-playback-stop")) self.ui.buttonReload.setIcon(KIcon("view-refresh")) self.ui.buttonInfo.setIcon(KIcon("dialog-information")) self.toggled = False self.root = parent self.iface = parent.iface self.item = item self.package = package self.info = ServiceItemInfo(self) self.type = None self.desc = None self.connect(self.ui.buttonStart, SIGNAL("clicked()"), self.setService) self.connect(self.ui.buttonStop, SIGNAL("clicked()"), self.setService) self.connect(self.ui.buttonReload, SIGNAL("clicked()"), self.setService) self.connect(self.ui.checkStart, SIGNAL("clicked()"), self.setService) self.connect(self.ui.buttonInfo, SIGNAL("clicked()"), self.info.showDescription) def updateService(self, data, firstRun): self.type, self.desc, serviceState = data self.setState(serviceState, firstRun) self.ui.labelDesc.setText(self.desc) def setState(self, state, firstRun=False): if not firstRun: # There is a raise condition, FIXME in System.Service time.sleep(1) state = self.iface.info(self.package)[2] if state in ('on', 'started', 'conditional_started'): self.running = True icon = 'flag-green' else: self.running = False icon = 'flag-black' self.ui.buttonStop.setEnabled(self.running) self.ui.buttonReload.setEnabled(self.running) self.ui.labelStatus.setPixmap(KIcon(icon).pixmap(32, 32)) self.showStatus() self.runningAtStart = False if state in ('on', 'stopped'): self.runningAtStart = True elif state in ('off', 'started', 'conditional_started'): self.runningAtStart = False self.ui.checkStart.setChecked(self.runningAtStart) self._last_state = self.ui.checkStart.isChecked() # print self.package, state def setService(self): try: self.showBusy() self._last_state = not self.ui.checkStart.isChecked() if self.sender() == self.ui.buttonStart: self.iface.start(self.package) elif self.sender() == self.ui.buttonStop: self.iface.stop(self.package) elif self.sender() == self.ui.buttonReload: self.iface.restart(self.package) elif self.sender() == self.ui.checkStart: self.iface.setEnable(self.package, self.ui.checkStart.isChecked()) except Exception, msg: self.showStatus() self.root.showFail(msg)
class ConnectionItem(QtGui.QWidget, Ui_ConnectionItem): def __init__(self, parent, connection): QtGui.QWidget.__init__(self, parent) self.setupUi(self) self.available = True self.parent = parent self.connection = connection bus = parent.bus.get_object(NM_BUS_NAME, str(connection.proxy.object_path)) interface = dbus.Interface(bus, NM_SETTINGS_CONNECTION) interface.connect_to_signal("Removed", parent.fillConnections) interface.connect_to_signal("Updated", self.updateState) self.busy = QProgressIndicator(self) self.busy.setMinimumSize(QSize(32, 32)) self.mainLayout.insertWidget(0, self.busy) self.busy.hide() self.connect(parent, SIGNAL("stateChanged()"), self.updateState) self.button.clicked.connect(lambda: self.parent.setState(self)) self.updateState() self.toggleButtons() def updateState(self, *args): if self.available is not True: return active = self.parent.isActive(self.connection) if active: state = self.parent.getState(self.connection) if state == ActiveConnectionState.ACTIVATED.value: self.setIcon(get_icon(self.connection.settings.conn_type, True)) elif state == ActiveConnectionState.ACTIVATING.value: self.showBusy() else: self.setIcon(get_icon(self.connection.settings.conn_type, False)) self.name.setText(unicode(self.connection.settings.id)) self.details.setText(unicode(self.connection.settings.conn_type)) self.button.setText("Disconnect" if active else "Connect") def showBusy(self): self.busy.busy() self.icon.hide() def setIcon(self, icon): self.busy.hide() self.icon.setPixmap(icon) self.icon.show() def resizeEvent(self, event): if self.parent.msgbox: self.parent.msgbox._resizeCallBacks(event) def enterEvent(self, event): if not self.button.isVisible(): self.toggleButtons(True) def leaveEvent(self, event): if self.button.isVisible(): self.toggleButtons() def toggleButtons(self, toggle=False): self.button.setVisible(toggle)
class MainWindow(KXmlGuiWindow, Ui_MainWindow): def __init__(self, app=None): KXmlGuiWindow.__init__(self, None) self.setupUi(self) self.app = app self.iface = backend.pm.Iface() self.busy = QProgressIndicator(self) self.busy.setFixedSize(QSize(20, 20)) self.setWindowIcon(KIcon(":/data/package-manager.png")) self.setCentralWidget(MainWidget(self)) self.cw = self.centralWidget() self.settingsDialog = SettingsDialog(self) self.initializeActions() self.initializeStatusBar() self.initializeTray() self.connectMainSignals() self.pdsMessageBox = PMessageBox(self) def connectMainSignals(self): self.cw.connectMainSignals() self.connect(QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Tab), self), SIGNAL("activated()"), lambda: self.moveTab('next')) self.connect( QShortcut(QKeySequence(Qt.SHIFT + Qt.CTRL + Qt.Key_Tab), self), SIGNAL("activated()"), lambda: self.moveTab('prev')) self.connect(QShortcut(QKeySequence(Qt.CTRL + Qt.Key_F), self), SIGNAL("activated()"), self.cw.searchLine.setFocus) self.connect(QShortcut(QKeySequence(Qt.Key_F3), self), SIGNAL("activated()"), self.cw.searchLine.setFocus) self.connect(self.settingsDialog, SIGNAL("packagesChanged()"), self.cw.initialize) self.connect(self.settingsDialog, SIGNAL("packageViewChanged()"), self.cw.updateSettings) self.connect(self.settingsDialog, SIGNAL("traySettingChanged()"), self.tray.settingsChanged) self.connect(self.cw.state, SIGNAL("repositoriesChanged()"), self.tray.populateRepositoryMenu) self.connect(self.cw, SIGNAL("repositoriesUpdated()"), self.tray.updateTrayUnread) self.connect(KApplication.kApplication(), SIGNAL("shutDown()"), self.slotQuit) def moveTab(self, direction): new_index = self.cw.stateTab.currentIndex() - 1 if direction == 'next': new_index = self.cw.stateTab.currentIndex() + 1 if new_index not in range(self.cw.stateTab.count()): new_index = 0 self.cw.stateTab.setCurrentIndex(new_index) def initializeTray(self): self.tray = Tray(self, self.iface) self.connect(self.cw.operation, SIGNAL("finished(QString)"), self.trayAction) self.connect(self.cw.operation, SIGNAL("finished(QString)"), self.tray.stop) self.connect(self.cw.operation, SIGNAL("operationCancelled()"), self.tray.stop) self.connect(self.cw.operation, SIGNAL("started(QString)"), self.tray.animate) self.connect(self.tray, SIGNAL("showUpdatesSelected()"), self.trayShowUpdates) def trayShowUpdates(self): self.showUpgradeAction.setChecked(True) self.cw.switchState(StateManager.UPGRADE) KApplication.kApplication().updateUserTimestamp() self.show() self.raise_() def trayAction(self, operation): if not self.isVisible() and operation in [ "System.Manager.updateRepository", "System.Manager.updateAllRepositories" ]: self.tray.showPopup() if self.tray.isActive() and operation in [ "System.Manager.updatePackage", "System.Manager.installPackage", "System.Manager.removePackage" ]: self.tray.updateTrayUnread() def initializeStatusBar(self): self.cw.mainLayout.insertWidget(0, self.busy) self.statusBar().addPermanentWidget(self.cw.actions, 1) self.statusBar().show() self.updateStatusBar('') self.connect(self.cw, SIGNAL("selectionStatusChanged(QString)"), self.updateStatusBar) self.connect(self.cw, SIGNAL("updatingStatus()"), self.statusWaiting) def initializeActions(self): self.toolBar().setToolButtonStyle(Qt.ToolButtonTextBesideIcon) KStandardAction.quit(KApplication.kApplication().quit, self.actionCollection()) KStandardAction.preferences(self.settingsDialog.show, self.actionCollection()) self.setupGUI( KXmlGuiWindow.Default, "/usr/share/kde4/apps/package-manager/data/packagemanagerui.rc") self.initializeOperationActions() def initializeOperationActions(self): actionGroup = QtGui.QActionGroup(self) self.showAllAction = KToggleAction(KIcon("applications-other"), i18n("All Packages"), self) self.actionCollection().addAction("showAllAction", self.showAllAction) self.connect(self.showAllAction, SIGNAL("triggered()"), lambda: self.cw.switchState(StateManager.ALL)) self.cw.stateTab.addTab(QWidget(), KIcon("applications-other"), i18n("All Packages")) actionGroup.addAction(self.showAllAction) self.showInstallAction = KToggleAction(KIcon("list-add"), i18n("Installable Packages"), self) self.actionCollection().addAction("showInstallAction", self.showInstallAction) self.connect(self.showInstallAction, SIGNAL("triggered()"), lambda: self.cw.switchState(StateManager.INSTALL)) self.cw.stateTab.addTab(QWidget(), KIcon("list-add"), i18n("Installable Packages")) actionGroup.addAction(self.showInstallAction) self.showRemoveAction = KToggleAction(KIcon("list-remove"), i18n("Installed Packages"), self) self.actionCollection().addAction("showRemoveAction", self.showRemoveAction) self.connect(self.showRemoveAction, SIGNAL("triggered()"), lambda: self.cw.switchState(StateManager.REMOVE)) self.cw.stateTab.addTab(QWidget(), KIcon("list-remove"), i18n("Installed Packages")) actionGroup.addAction(self.showRemoveAction) self.showUpgradeAction = KToggleAction(KIcon("system-software-update"), i18n("Updates"), self) self.actionCollection().addAction("showUpgradeAction", self.showUpgradeAction) self.connect(self.showUpgradeAction, SIGNAL("triggered()"), lambda: self.cw.switchState(StateManager.UPGRADE)) self.cw.stateTab.addTab(QWidget(), KIcon("system-software-update"), i18n("Updates")) actionGroup.addAction(self.showUpgradeAction) # self.showHistoryAction = KToggleAction(KIcon("view-refresh"), i18n("History"), self) # self.actionCollection().addAction("showHistoryAction", self.showHistoryAction) # self.connect(self.showHistoryAction, SIGNAL("triggered()"), lambda:self.cw.switchState(StateManager.HISTORY)) # self.cw.stateTab.addTab(QWidget(), KIcon("view-refresh"), i18n("History")) # actionGroup.addAction(self.showHistoryAction) self.cw.menuButton.setMenu(QMenu('MainMenu', self.cw.menuButton)) self.cw.menuButton.setIcon(KIcon('preferences-other')) self.cw.menuButton.menu().clear() self.cw.contentHistory.hide() # self.cw.menuButton.menu().addAction(self.showAllAction) # self.cw.menuButton.menu().addAction(self.showInstallAction) # self.cw.menuButton.menu().addAction(self.showRemoveAction) # self.cw.menuButton.menu().addAction(self.showUpgradeAction) # self.cw.menuButton.menu().addSeparator() self.cw.menuButton.menu().addAction(self.actionCollection().action( KStandardAction.name(KStandardAction.Preferences))) self.cw.menuButton.menu().addAction(self.actionCollection().action( KStandardAction.name(KStandardAction.Help))) self.cw.menuButton.menu().addSeparator() self.cw.menuButton.menu().addAction(self.actionCollection().action( KStandardAction.name(KStandardAction.AboutApp))) self.cw.menuButton.menu().addAction(self.actionCollection().action( KStandardAction.name(KStandardAction.AboutKDE))) self.cw.menuButton.menu().addSeparator() self.cw.menuButton.menu().addAction(self.actionCollection().action( KStandardAction.name(KStandardAction.Quit))) self.cw._states = { self.cw.state.ALL: (0, self.showAllAction), self.cw.state.INSTALL: (1, self.showInstallAction), self.cw.state.REMOVE: (2, self.showRemoveAction), self.cw.state.UPGRADE: (3, self.showUpgradeAction) } # self.cw.state.HISTORY:(4, self.showHistoryAction)} self.showAllAction.setChecked(True) self.cw.checkUpdatesButton.hide() self.cw.checkUpdatesButton.setIcon(KIcon('view-refresh')) self.cw.showBasketButton.clicked.connect(self.cw.showBasket) # Little time left for the new ui self.menuBar().setVisible(False) self.cw.switchState(self.cw.state.ALL) def statusWaiting(self): self.updateStatusBar(i18n('Calculating dependencies...'), busy=True) def updateStatusBar(self, text, busy=False): if text == '': text = i18n("Currently your basket is empty.") self.busy.hide() self.cw.showBasketButton.hide() else: self.cw.showBasketButton.show() if busy: self.busy.busy() self.cw.showBasketButton.hide() else: self.busy.hide() self.cw.statusLabel.setText(text) def queryClose(self): if config.PMConfig().systemTray( ) and not KApplication.kApplication().sessionSaving(): self.hide() return False return True def queryExit(self): if not self.iface.operationInProgress(): if self.tray: del self.tray.notification return True return False def slotQuit(self): if self.iface.operationInProgress(): return
class WebDialog(PAbstractBox, Ui_WebDialog): def __init__(self, parent): PAbstractBox.__init__(self, parent) self.setupUi(self) self.iface = parent.iface # PDS Settings self._animation = 1 self._duration = 400 self.enableOverlay() self._disable_parent_in_shown = True self.registerFunction(IN, lambda: parent.statusBar().hide()) self.registerFunction(FINISHED, lambda: parent.statusBar().setVisible(not self.isVisible())) self._as = 'http://onurguzel.com/appinfo' self.cancelButton.clicked.connect(self._hide) self.cancelButton.setIcon(KIcon("dialog-close")) # Hide Scrollbars and context menu in webview self.webView.setContextMenuPolicy(Qt.NoContextMenu) self.webView.page().mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) self.webView.page().mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.webView.page().setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateAllLinks) self.webView.page().linkClicked.connect(self.redirectLinks) self.tabWidget.removeTab(0) self.busy = QProgressIndicator(self, "white") self.busy.setMaximumSize(QSize(48, 48)) self.webLayout.addWidget(self.busy) self.busy.hide() self._filesThread = PThread(self, self.getFiles, self.getFilesFinished) self.filterLine.setListWidget(self.filesList) self.noconnection.hide() self.parent = parent def redirectLinks(self, url): if url.hasFragment(): if url.fragment() == 'login': self.showLogin() else: PreviewDialog(self, url) def showLogin(self): self._hide() self.parent.settingsDialog.show() self.parent.settingsDialog.tabWidget.setCurrentIndex(4) def showPage(self, addr): if network_available(): self.webView.load(QUrl(addr)) else: self._sync_template(status = False) self.animate(start = BOTCENTER, stop = MIDCENTER) def getFiles(self): return self.iface.getPackageFiles(str(self.packageName.text())) def getFilesFinished(self): self.filesList.addItems(self._filesThread.get()) self.filesList.sortItems() def _tabSwitched(self, index): if index == 0 and self.tabWidget.count() > 1: if self.filesList.count() == 0: self._filesThread.start() def _sync_template(self, status, package = '', summary = '', description = ''): def _replace(key, value): self.webView.page().mainFrame().evaluateJavaScript(\ '%s.innerHTML="%s";' % (key, value)) self.busy.hide() self.busy.stopAnimation() if status: _replace('title', package) _replace('summary', summary) _replace('description', description) self.webWidget.show() self.noconnection.hide() else: self.noconnection.show() self.webWidget.hide() reset_proxy_settings() def showPackageDetails(self, package, installed, summary='', description=''): self.packageName.setText(package) self.key = config.PMConfig().getOpenDesktopKey() self.filesList.clear() self.webView.loadFinished.connect(lambda x: \ self._sync_template(x, package, summary, description)) if network_available(): set_proxy_settings() self.webWidget.hide() self.busy.show() self.busy.startAnimation() params = {'p': package} if self.key: params['k'] = self.key self.webView.load(QUrl('%s/?%s' % (self._as, urlencode(params)))) else: self._sync_template(status = False) self.tabWidget.insertTab(0, self.packageFiles, i18n('Package Files')) self.tabWidget.currentChanged.connect(self._tabSwitched) if not installed: self.tabWidget.removeTab(0) self.tabWidget.currentChanged.disconnect(self._tabSwitched) self.animate(start = BOTCENTER, stop = MIDCENTER) def _hide(self): self.busy.stopAnimation() try: self.webView.loadFinished.disconnect() except: pass self.animate(start = MIDCENTER, stop = BOTCENTER, direction = OUT)
class ProgressDialog(PAbstractBox, Ui_ProgressDialog): def __init__(self, state, parent=None): PAbstractBox.__init__(self, parent) self.iface = backend.pm.Iface() self.state = state self.setupUi(self) self.busy = QProgressIndicator(self, "white") self.busy.setMinimumSize(QSize(48, 48)) self.mainLayout.addWidget(self.busy) # PDS Settings self._animation = 2 self._duration = 500 self.last_msg = None self.enableOverlay() self._disable_parent_in_shown = True self.registerFunction(FINISHED, self.busy.startAnimation) self.registerFunction(OUT, self.busy.stopAnimation) self.connect(self.cancelButton, SIGNAL("clicked()"), self.cancel) self.parent = parent self.setStyleSheet( "QLabel, QTextEdit, QTextBrowser{background:rgba(0,0,0,0);color:white;}" ) self._last_action = '' self._shown = False def _show(self): self.animate(start=MIDCENTER, stop=MIDCENTER) self._shown = True def _hide(self): if self._shown: self.animate(direction=OUT, start=MIDCENTER, stop=MIDCENTER) self.parent.setWindowTitle(i18n("Package Manager")) self._shown = False def updateProgress(self, progress): self.busy.stopAnimation() self.busy.hide() self.widget.show() if not self.isVisible(): if not self.parent.cw._started: self.disableCancel() self._show() self.progressBar.setValue(progress) self.percentage.setText(i18n("<p align='right'>%1 %</p>", progress)) self.parent.setWindowTitle(i18n("Operation - %1%", progress)) def updateOperation(self, operation, arg): if operation in [i18n("configuring"), i18n("extracting")]: self.disableCancel() if operation == "updatingrepo": operationInfo = i18n("Downloading package list of %1", arg) else: operationInfo = i18n('%1 %2', operation, arg) self.operationInfo.setText(operationInfo) def updateStatus(self, packageNo, totalPackages, operation): text = i18n("[%1 / %2]", packageNo, totalPackages) self.actionLabel.setText("%s %s" % (text, self._last_action)) def updateRemainingTime(self, time): self.timeRemaining.setText("<p align='right'>%s</p>" % time) def updateCompletedInfo(self, completed, total, rate): text = i18n("%1 / %2, %3", completed, total, rate) self.completedInfo.setText(text) def updateActionLabel(self, action): self.actionLabel.setText("<i>%s</i>" % self.state.getActionCurrent(action)) self._last_action = self.actionLabel.toPlainText() def enableCancel(self): self.cancelButton.setEnabled(True) def disableCancel(self): self.cancelButton.setEnabled(False) def reset(self): self.widget.hide() self.busy.show() self.actionLabel.setText(i18n("Preparing PiSi...")) self.progressBar.setValue(0) self.operationInfo.setText("") self.completedInfo.setText("") self.timeRemaining.setText("<p align='right'>--:--:--</p>") self.timeRemaining.show() def cancel(self): self.widget.hide() self.busy.show() self.actionLabel.setText(i18n("<b>Cancelling operation...</b>")) self.disableCancel() QTimer.singleShot(100, self.iface.cancel) def repoOperationView(self): self.timeRemaining.setText("") self.timeRemaining.hide()
class ProgressDialog(PAbstractBox, Ui_ProgressDialog): def __init__(self, state, parent=None): PAbstractBox.__init__(self, parent) self.iface = backend.pm.Iface() self.state = state self.setupUi(self) self.busy = QProgressIndicator(self, "white") self.busy.setMinimumSize(QSize(48, 48)) self.mainLayout.addWidget(self.busy) # PDS Settings self._animation = 2 self._duration = 1 self.last_msg = None self.enableOverlay() self.setOverlayOpacity(150) self._disable_parent_in_shown = True self.registerFunction(FINISHED, self.busy.startAnimation) self.registerFunction(OUT, self.busy.stopAnimation) self.cancelButton.clicked.connect(self.cancel) self.cancelButton.setIcon(QIcon.fromTheme("list-remove")) self.parent = parent self.widget.setStyleSheet("QTextEdit { \ background:rgba(0,0,0,0); \ color:white;}") self._last_action = '' self._shown = False def _show(self): self.animate(start=MIDCENTER, stop=MIDCENTER) self._shown = True print("start") def _hide(self): if self._shown: self.animate(direction=OUT, start=MIDCENTER, stop=MIDCENTER) self.parent.setWindowTitle( _translate("Package Manager", "Package Manager")) self._shown = False def updateProgress(self, progress): self.busy.stopAnimation() self.busy.hide() self.widget.show() if not self.isVisible(): if not self.parent.cw._started: self.disableCancel() self._show() self.progressBar.setValue(progress) self.percentage.setText( _translate("Package Manager", "<p align='right'>{0} %</p>").format(progress)) self.parent.setWindowTitle( _translate("Package Manager", "Operation - {0}%").format(progress)) def updateOperation(self, operation, arg): if operation in [ _translate("Package Manager", "configuring"), _translate("Package Manager", "extracting") ]: self.disableCancel() if operation == "updatingrepo": operationInfo = _translate( "Package Manager", "Downloading package list of {0}").format(arg) else: operationInfo = _translate("Package Manager", '{0} {1}').format(operation, arg) self.operationInfo.setText(operationInfo) def updateStatus(self, packageNo, totalPackages, operation): text = _translate("Package Manager", "[{0} / {1}]").format(packageNo, totalPackages) self.actionLabel.setText("%s %s" % (text, self._last_action)) def updateRemainingTime(self, time): self.timeRemaining.setText("<p align='right'>%s</p>" % time) def updateCompletedInfo(self, completed, total, rate): text = _translate("Package Manager", "{0} / {1}, {2}").format(completed, total, rate) self.completedInfo.setText(text) def updateActionLabel(self, action): self.actionLabel.setText("<i>%s</i>" % self.state.getActionCurrent(action)) self._last_action = self.actionLabel.toPlainText() def enableCancel(self): self.cancelButton.setEnabled(True) def disableCancel(self): self.cancelButton.setEnabled(False) def reset(self): self.widget.hide() self.busy.show() self.actionLabel.setText( _translate("Package Manager", "Preparing PiSi...")) self.progressBar.setValue(0) self.operationInfo.setText("") self.completedInfo.setText("") self.timeRemaining.setText("<p align='right'>--:--:--</p>") self.timeRemaining.show() def cancel(self): self.widget.hide() self.busy.show() self.actionLabel.setText( _translate("Package Manager", "<b>Cancelling operation...</b>")) self.disableCancel() QTimer.singleShot(100, self.iface.cancel) def repoOperationView(self): self.timeRemaining.setText("") self.timeRemaining.hide()
class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, app=None): QMainWindow.__init__(self, None) self.setupUi(self) self.app = app self.iface = backend.pm.Iface() self.busy = QProgressIndicator(self) self.busy.setFixedSize(QSize(20, 20)) self.setWindowIcon(QIcon(":/data/package-manager.png")) self.setCentralWidget(MainWidget(self)) self.cw = self.centralWidget() self.settingsDialog = SettingsDialog(self) self.initializeActions() self.initializeStatusBar() self.initializeTray() self.connectMainSignals() self.pdsMessageBox = PMessageBox(self) def connectMainSignals(self): self.cw.connectMainSignals() self.connect( QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Tab), self), SIGNAL("activated()"), lambda: self.moveTab("next") ) self.connect( QShortcut(QKeySequence(Qt.SHIFT + Qt.CTRL + Qt.Key_Tab), self), SIGNAL("activated()"), lambda: self.moveTab("prev"), ) self.connect( QShortcut(QKeySequence(Qt.CTRL + Qt.Key_F), self), SIGNAL("activated()"), self.cw.searchLine.setFocus ) self.connect(QShortcut(QKeySequence(Qt.Key_F3), self), SIGNAL("activated()"), self.cw.searchLine.setFocus) self.connect(self.settingsDialog, SIGNAL("packagesChanged()"), self.cw.initialize) self.connect(self.settingsDialog, SIGNAL("packageViewChanged()"), self.cw.updateSettings) self.connect(self.settingsDialog, SIGNAL("traySettingChanged()"), self.tray.settingsChanged) self.connect(self.cw.state, SIGNAL("repositoriesChanged()"), self.tray.populateRepositoryMenu) self.connect(self.cw, SIGNAL("repositoriesUpdated()"), self.tray.updateTrayUnread) self.connect(qApp, SIGNAL("shutDown()"), self.slotQuit) def moveTab(self, direction): new_index = self.cw.stateTab.currentIndex() - 1 if direction == "next": new_index = self.cw.stateTab.currentIndex() + 1 if new_index not in range(self.cw.stateTab.count()): new_index = 0 self.cw.stateTab.setCurrentIndex(new_index) def initializeTray(self): self.tray = Tray(self, self.iface) self.connect(self.cw.operation, SIGNAL("finished(QString)"), self.trayAction) self.connect(self.cw.operation, SIGNAL("finished(QString)"), self.tray.stop) self.connect(self.cw.operation, SIGNAL("operationCancelled()"), self.tray.stop) self.connect(self.cw.operation, SIGNAL("started(QString)"), self.tray.animate) self.connect(self.tray, SIGNAL("showUpdatesSelected()"), self.trayShowUpdates) def trayShowUpdates(self): self.showUpgradeAction.setChecked(True) self.cw.switchState(StateManager.UPGRADE) KApplication.kApplication().updateUserTimestamp() self.show() self.raise_() def trayAction(self, operation): if not self.isVisible() and operation in [ "System.Manager.updateRepository", "System.Manager.updateAllRepositories", ]: self.tray.showPopup() if self.tray.isVisible() and operation in [ "System.Manager.updatePackage", "System.Manager.installPackage", "System.Manager.removePackage", ]: self.tray.updateTrayUnread() def initializeStatusBar(self): self.cw.mainLayout.insertWidget(0, self.busy) self.statusBar().addPermanentWidget(self.cw.actions, 1) self.statusBar().show() self.updateStatusBar("") self.connect(self.cw, SIGNAL("selectionStatusChanged(QString)"), self.updateStatusBar) self.connect(self.cw, SIGNAL("updatingStatus()"), self.statusWaiting) def initializeActions(self): self.initializeOperationActions() def initializeOperationActions(self): self.showAllAction = QAction(KIcon(("applications-other", "package_applications")), i18n("All Packages"), self) self.connect(self.showAllAction, SIGNAL("triggered()"), lambda: self.cw.switchState(StateManager.ALL)) self.cw.stateTab.addTab(QWidget(), KIcon(("applications-other", "package_applications")), i18n("All Packages")) self.showInstallAction = QAction(KIcon(("list-add", "add")), i18n("Installable Packages"), self) self.connect(self.showInstallAction, SIGNAL("triggered()"), lambda: self.cw.switchState(StateManager.INSTALL)) self.cw.stateTab.addTab(QWidget(), KIcon(("list-add", "add")), i18n("Installable Packages")) self.showRemoveAction = QAction(KIcon(("list-remove", "remove")), i18n("Installed Packages"), self) self.connect(self.showRemoveAction, SIGNAL("triggered()"), lambda: self.cw.switchState(StateManager.REMOVE)) self.cw.stateTab.addTab(QWidget(), KIcon(("list-remove", "remove")), i18n("Installed Packages")) self.showUpgradeAction = QAction(KIcon(("system-software-update", "gear")), i18n("Updates"), self) self.connect(self.showUpgradeAction, SIGNAL("triggered()"), lambda: self.cw.switchState(StateManager.UPGRADE)) self.cw.stateTab.addTab(QWidget(), KIcon(("system-software-update", "gear")), i18n("Updates")) self.showPreferences = QAction(KIcon(("preferences-system", "package_settings")), i18n("Settings"), self) self.connect(self.showPreferences, SIGNAL("triggered()"), self.settingsDialog.show) self.actionQuit = QAction(KIcon("exit"), i18n("Quit"), self) self.actionQuit.setShortcuts(QKeySequence.Quit) self.connect(self.actionQuit, SIGNAL("triggered()"), qApp.exit) self.cw.menuButton.setMenu(QMenu("MainMenu", self.cw.menuButton)) self.cw.menuButton.setIcon(KIcon(("preferences-system", "package_settings"))) self.cw.menuButton.menu().clear() self.cw.contentHistory.hide() self.cw.menuButton.menu().addAction(self.showPreferences) self.cw.menuButton.menu().addSeparator() self.cw.menuButton.menu().addAction(self.actionQuit) self.cw._states = { self.cw.state.ALL: (0, self.showAllAction), self.cw.state.INSTALL: (1, self.showInstallAction), self.cw.state.REMOVE: (2, self.showRemoveAction), self.cw.state.UPGRADE: (3, self.showUpgradeAction), } self.showAllAction.setChecked(True) self.cw.checkUpdatesButton.hide() self.cw.checkUpdatesButton.setIcon(KIcon(("view-refresh", "reload"))) self.cw.showBasketButton.clicked.connect(self.cw.showBasket) # Little time left for the new ui self.menuBar().setVisible(False) self.cw.switchState(self.cw.state.ALL) def statusWaiting(self): self.updateStatusBar(i18n("Calculating dependencies..."), busy=True) def updateStatusBar(self, text, busy=False): if text == "": text = i18n("Currently your basket is empty.") self.busy.hide() self.cw.showBasketButton.hide() else: self.cw.showBasketButton.show() if busy: self.busy.busy() self.cw.showBasketButton.hide() else: self.busy.hide() self.cw.statusLabel.setText(text) self.cw.statusLabel.setToolTip(text) def queryClose(self): if config.PMConfig().systemTray(): self.hide() return False return True def queryExit(self): if not self.iface.operationInProgress(): if self.tray: del self.tray.notification return True return False def slotQuit(self): if self.iface.operationInProgress(): return
class ProgressDialog(PAbstractBox, Ui_ProgressDialog): def __init__(self, state, parent=None): PAbstractBox.__init__(self, parent) self.iface = backend.pm.Iface() self.state = state self.setupUi(self) self.busy = QProgressIndicator(self, "white") self.busy.setMinimumSize(QSize(48, 48)) self.mainLayout.addWidget(self.busy) # PDS Settings self._animation = 2 self._duration = 1 self.last_msg = None self.enableOverlay() self.setOverlayOpacity(150) self._disable_parent_in_shown = True self.registerFunction(FINISHED, self.busy.startAnimation) self.registerFunction(OUT, self.busy.stopAnimation) self.connect(self.cancelButton, SIGNAL("clicked()"), self.cancel) self.cancelButton.setIcon(KIcon("cancel")) self.parent = parent self.setStyleSheet("QLabel, QTextEdit, QTextBrowser{background:rgba(0,0,0,0);color:white;}") self._last_action = '' self._shown = False def _show(self): self.animate(start = MIDCENTER, stop = MIDCENTER) self._shown = True def _hide(self): if self._shown: self.animate(direction = OUT, start = MIDCENTER, stop = MIDCENTER) self.parent.setWindowTitle(i18n("Package Manager")) self._shown = False def updateProgress(self, progress): self.busy.stopAnimation() self.busy.hide() self.widget.show() if not self.isVisible(): if not self.parent.cw._started: self.disableCancel() self._show() self.progressBar.setValue(progress) self.percentage.setText(i18n("<p align='right'>%1 %</p>", progress)) self.parent.setWindowTitle(i18n("Operation - %1%", progress)) def updateOperation(self, operation, arg): if operation in [i18n("configuring"), i18n("extracting")]: self.disableCancel() if operation == "updatingrepo": operationInfo = i18n("Downloading package list of %1", arg) else: operationInfo = i18n('%1 %2', operation, arg) self.operationInfo.setText(operationInfo) def updateStatus(self, packageNo, totalPackages, operation): text = i18n("[%1 / %2]", packageNo, totalPackages) self.actionLabel.setText("%s %s" % (text, self._last_action)) def updateRemainingTime(self, time): self.timeRemaining.setText("<p align='right'>%s</p>" % time) def updateCompletedInfo(self, completed, total, rate): text = i18n("%1 / %2, %3", completed, total, rate) self.completedInfo.setText(text) def updateActionLabel(self, action): self.actionLabel.setText("<i>%s</i>" % self.state.getActionCurrent(action)) self._last_action = self.actionLabel.toPlainText() def enableCancel(self): self.cancelButton.setEnabled(True) def disableCancel(self): self.cancelButton.setEnabled(False) def reset(self): self.widget.hide() self.busy.show() self.actionLabel.setText(i18n("Preparing PiSi...")) self.progressBar.setValue(0) self.operationInfo.setText("") self.completedInfo.setText("") self.timeRemaining.setText("<p align='right'>--:--:--</p>") self.timeRemaining.show() def cancel(self): self.widget.hide() self.busy.show() self.actionLabel.setText(i18n("<b>Cancelling operation...</b>")) self.disableCancel() QTimer.singleShot(100, self.iface.cancel) def repoOperationView(self): self.timeRemaining.setText("") self.timeRemaining.hide()
class WebDialog(PAbstractBox, Ui_WebDialog): def __init__(self, parent): PAbstractBox.__init__(self, parent) self.setupUi(self) self.iface = parent.iface # PDS Settings self._animation = 1 self._duration = 1 self.enableOverlay() self.setOverlayOpacity(150) self._disable_parent_in_shown = True self.registerFunction(IN, lambda: parent.statusBar().hide()) self.registerFunction( FINISHED, lambda: parent.statusBar().setVisible(not self.isVisible())) self._as = 'http://appinfo.pisilinux.org' self.cancelButton.clicked.connect(self._hide) self.cancelButton.setIcon(KIcon("cancel")) # Hide Scrollbars and context menu in webview self.webView.setContextMenuPolicy(Qt.NoContextMenu) self.webView.page().mainFrame().setScrollBarPolicy( Qt.Vertical, Qt.ScrollBarAlwaysOff) self.webView.page().mainFrame().setScrollBarPolicy( Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.webView.page().setLinkDelegationPolicy( QtWebKit.QWebPage.DelegateAllLinks) self.webView.page().linkClicked.connect(self.showFullImage) self.tabWidget.removeTab(0) self.busy = QProgressIndicator(self, "white") self.busy.setMaximumSize(QSize(48, 48)) self.webLayout.addWidget(self.busy) self.busy.hide() self._filesThread = PThread(self, self.getFiles, self.getFilesFinished) self.noconnection.hide() self.parent = parent def showFullImage(self, url): PreviewDialog(self, url) def showPage(self, addr): if network_available(): self.webView.load(QUrl(addr)) else: self._sync_template(status=False) self.animate(start=BOTCENTER, stop=MIDCENTER) def getFiles(self): return self.iface.getPackageFiles(str(self.packageName.text())) def getFilesFinished(self): self.filesList.addItems(self._filesThread.get()) self.filesList.sortItems() def _tabSwitched(self, index): if index == 0 and self.tabWidget.count() > 1: if self.filesList.count() == 0: self._filesThread.start() def _sync_template(self, status, package='', summary='', description=''): def _replace(key, value): self.webView.page().mainFrame().evaluateJavaScript(\ '%s.innerHTML="%s";' % (key, value)) self.busy.hide() self.busy.stopAnimation() if status: _replace('title', package) _replace('summary', summary) _replace('description', description) self.webWidget.show() self.noconnection.hide() else: self.noconnection.show() self.webWidget.hide() reset_proxy_settings() def showPackageDetails(self, package, installed, summary='', description=''): self.packageName.setText(package) self.filesList.clear() self.tabWidget.insertTab(0, self.packageFiles, i18n('Package Files')) self.tabWidget.currentChanged.connect(self._tabSwitched) if config.USE_APPINFO: self.webView.loadFinished.connect(lambda x: \ self._sync_template(x, package, summary, description)) if network_available(): set_proxy_settings() self.webWidget.hide() self.busy.show() self.busy.startAnimation() self.webView.load(QUrl('%s/?p=%s' % (self._as, package))) else: self._sync_template(status=False) else: self.tabWidget.removeTab(1) self._filesThread.start() if not installed: self.tabWidget.removeTab(0) self.tabWidget.currentChanged.disconnect(self._tabSwitched) self.animate(start=BOTCENTER, stop=MIDCENTER) def _hide(self): self.busy.stopAnimation() try: self.webView.loadFinished.disconnect() except: pass self.animate(start=MIDCENTER, stop=BOTCENTER, direction=OUT)
class MainWindow(KXmlGuiWindow, Ui_MainWindow): def __init__(self, app = None): KXmlGuiWindow.__init__(self, None) self.setupUi(self) self.app = app self.iface = backend.pm.Iface() self.busy = QProgressIndicator(self) self.busy.setFixedSize(QSize(20, 20)) self.setWindowIcon(KIcon(":/data/package-manager.png")) self.setCentralWidget(MainWidget(self)) self.cw = self.centralWidget() self.settingsDialog = SettingsDialog(self) self.initializeActions() self.initializeStatusBar() self.initializeTray() self.connectMainSignals() self.pdsMessageBox = PMessageBox(self) def connectMainSignals(self): self.cw.connectMainSignals() self.connect(QShortcut(QKeySequence(Qt.CTRL + Qt.Key_Tab),self), SIGNAL("activated()"), lambda: self.moveTab('next')) self.connect(QShortcut(QKeySequence(Qt.SHIFT + Qt.CTRL + Qt.Key_Tab),self), SIGNAL("activated()"), lambda: self.moveTab('prev')) self.connect(QShortcut(QKeySequence(Qt.CTRL + Qt.Key_F),self), SIGNAL("activated()"), self.cw.searchLine.setFocus) self.connect(QShortcut(QKeySequence(Qt.Key_F3),self), SIGNAL("activated()"), self.cw.searchLine.setFocus) self.connect(self.settingsDialog, SIGNAL("packagesChanged()"), self.cw.initialize) self.connect(self.settingsDialog, SIGNAL("packageViewChanged()"), self.cw.updateSettings) self.connect(self.settingsDialog, SIGNAL("traySettingChanged()"), self.tray.settingsChanged) self.connect(self.cw.state, SIGNAL("repositoriesChanged()"), self.tray.populateRepositoryMenu) self.connect(self.cw, SIGNAL("repositoriesUpdated()"), self.tray.updateTrayUnread) self.connect(KApplication.kApplication(), SIGNAL("shutDown()"), self.slotQuit) def moveTab(self, direction): new_index = self.cw.stateTab.currentIndex() - 1 if direction == 'next': new_index = self.cw.stateTab.currentIndex() + 1 if new_index not in range(self.cw.stateTab.count()): new_index = 0 self.cw.stateTab.setCurrentIndex(new_index) def initializeTray(self): self.tray = Tray(self, self.iface) self.connect(self.cw.operation, SIGNAL("finished(QString)"), self.trayAction) self.connect(self.cw.operation, SIGNAL("finished(QString)"), self.tray.stop) self.connect(self.cw.operation, SIGNAL("operationCancelled()"), self.tray.stop) self.connect(self.cw.operation, SIGNAL("started(QString)"), self.tray.animate) self.connect(self.tray, SIGNAL("showUpdatesSelected()"), self.trayShowUpdates) def trayShowUpdates(self): self.showUpgradeAction.setChecked(True) self.cw.switchState(StateManager.UPGRADE) KApplication.kApplication().updateUserTimestamp() self.show() self.raise_() def trayAction(self, operation): if not self.isVisible() and operation in ["System.Manager.updateRepository", "System.Manager.updateAllRepositories"]: self.tray.showPopup() if self.tray.isActive() and operation in ["System.Manager.updatePackage", "System.Manager.installPackage", "System.Manager.removePackage"]: self.tray.updateTrayUnread() def initializeStatusBar(self): self.cw.mainLayout.insertWidget(0, self.busy) self.statusBar().addPermanentWidget(self.cw.actions, 1) self.statusBar().show() self.updateStatusBar('') self.connect(self.cw, SIGNAL("selectionStatusChanged(QString)"), self.updateStatusBar) self.connect(self.cw, SIGNAL("updatingStatus()"), self.statusWaiting) def initializeActions(self): self.toolBar().setToolButtonStyle(Qt.ToolButtonTextBesideIcon) KStandardAction.quit(KApplication.kApplication().quit, self.actionCollection()) KStandardAction.preferences(self.settingsDialog.show, self.actionCollection()) self.setupGUI(KXmlGuiWindow.Default, "/usr/share/kde4/apps/package-manager/data/packagemanagerui.rc") self.initializeOperationActions() def initializeOperationActions(self): actionGroup = QtGui.QActionGroup(self) self.showAllAction = KToggleAction(KIcon("applications-other"), i18n("All Packages"), self) self.actionCollection().addAction("showAllAction", self.showAllAction) self.connect(self.showAllAction, SIGNAL("triggered()"), lambda:self.cw.switchState(StateManager.ALL)) self.cw.stateTab.addTab(QWidget(), KIcon("applications-other"), i18n("All Packages")) actionGroup.addAction(self.showAllAction) self.showInstallAction = KToggleAction(KIcon("list-add"), i18n("Installable Packages"), self) self.actionCollection().addAction("showInstallAction", self.showInstallAction) self.connect(self.showInstallAction, SIGNAL("triggered()"), lambda:self.cw.switchState(StateManager.INSTALL)) self.cw.stateTab.addTab(QWidget(), KIcon("list-add"), i18n("Installable Packages")) actionGroup.addAction(self.showInstallAction) self.showRemoveAction = KToggleAction(KIcon("list-remove"), i18n("Installed Packages"), self) self.actionCollection().addAction("showRemoveAction", self.showRemoveAction) self.connect(self.showRemoveAction, SIGNAL("triggered()"), lambda:self.cw.switchState(StateManager.REMOVE)) self.cw.stateTab.addTab(QWidget(), KIcon("list-remove"), i18n("Installed Packages")) actionGroup.addAction(self.showRemoveAction) self.showUpgradeAction = KToggleAction(KIcon("system-software-update"), i18n("Updates"), self) self.actionCollection().addAction("showUpgradeAction", self.showUpgradeAction) self.connect(self.showUpgradeAction, SIGNAL("triggered()"), lambda:self.cw.switchState(StateManager.UPGRADE)) self.cw.stateTab.addTab(QWidget(), KIcon("system-software-update"), i18n("Updates")) actionGroup.addAction(self.showUpgradeAction) # self.showHistoryAction = KToggleAction(KIcon("view-refresh"), i18n("History"), self) # self.actionCollection().addAction("showHistoryAction", self.showHistoryAction) # self.connect(self.showHistoryAction, SIGNAL("triggered()"), lambda:self.cw.switchState(StateManager.HISTORY)) # self.cw.stateTab.addTab(QWidget(), KIcon("view-refresh"), i18n("History")) # actionGroup.addAction(self.showHistoryAction) self.cw.menuButton.setMenu(QMenu('MainMenu', self.cw.menuButton)) self.cw.menuButton.setIcon(KIcon('preferences-other')) self.cw.menuButton.menu().clear() self.cw.contentHistory.hide() # self.cw.menuButton.menu().addAction(self.showAllAction) # self.cw.menuButton.menu().addAction(self.showInstallAction) # self.cw.menuButton.menu().addAction(self.showRemoveAction) # self.cw.menuButton.menu().addAction(self.showUpgradeAction) # self.cw.menuButton.menu().addSeparator() self.cw.menuButton.menu().addAction(self.actionCollection().action(KStandardAction.name(KStandardAction.Preferences))) self.cw.menuButton.menu().addAction(self.actionCollection().action(KStandardAction.name(KStandardAction.Help))) self.cw.menuButton.menu().addSeparator() self.cw.menuButton.menu().addAction(self.actionCollection().action(KStandardAction.name(KStandardAction.AboutApp))) self.cw.menuButton.menu().addAction(self.actionCollection().action(KStandardAction.name(KStandardAction.AboutKDE))) self.cw.menuButton.menu().addSeparator() self.cw.menuButton.menu().addAction(self.actionCollection().action(KStandardAction.name(KStandardAction.Quit))) self.cw._states = {self.cw.state.ALL :(0, self.showAllAction), self.cw.state.INSTALL:(1, self.showInstallAction), self.cw.state.REMOVE :(2, self.showRemoveAction), self.cw.state.UPGRADE:(3, self.showUpgradeAction)} # self.cw.state.HISTORY:(4, self.showHistoryAction)} self.showAllAction.setChecked(True) self.cw.checkUpdatesButton.hide() self.cw.checkUpdatesButton.setIcon(KIcon('view-refresh')) self.cw.showBasketButton.clicked.connect(self.cw.showBasket) # Little time left for the new ui self.menuBar().setVisible(False) self.cw.switchState(self.cw.state.ALL) def statusWaiting(self): self.updateStatusBar(i18n('Calculating dependencies...'), busy = True) def updateStatusBar(self, text, busy = False): if text == '': text = i18n("Currently your basket is empty.") self.busy.hide() self.cw.showBasketButton.hide() else: self.cw.showBasketButton.show() if busy: self.busy.busy() self.cw.showBasketButton.hide() else: self.busy.hide() self.cw.statusLabel.setText(text) def queryClose(self): if config.PMConfig().systemTray() and not KApplication.kApplication().sessionSaving(): self.hide() return False return True def queryExit(self): if not self.iface.operationInProgress(): if self.tray: del self.tray.notification return True return False def slotQuit(self): if self.iface.operationInProgress(): return
class WebDialog(PAbstractBox, Ui_WebDialog): finished = pyqtSignal() def __init__(self, parent): PAbstractBox.__init__(self, parent) self.setupUi(self) self.iface = backend.pm.Iface() #parent.iface # PDS Settings self._animation = 1 self._duration = 1 self.enableOverlay() self.setOverlayOpacity(150) self._disable_parent_in_shown = True self.registerFunction(IN, lambda: parent.statusBar().hide()) self.registerFunction(FINISHED, lambda: parent.statusBar().setVisible(not self.isVisible())) self._as = 'http://appinfo.pisilinux.org' self.cancelButton.clicked.connect(self._hide) self.cancelButton.setIcon(QIcon.fromTheme("cancel")) # Hide Scrollbars and context menu in webview self.webView.setContextMenuPolicy(Qt.NoContextMenu) self.webView.page().mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) self.webView.page().mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.webView.page().setLinkDelegationPolicy(QtWebKitWidgets.QWebPage.DelegateAllLinks) self.webView.page().linkClicked.connect(self.showFullImage) self.tabWidget.removeTab(0) self.busy = QProgressIndicator(self, "white") self.busy.setMaximumSize(QSize(48, 48)) self.webLayout.addWidget(self.busy) self.busy.hide() self._filesThread = PThread(self, self.getFiles, self.getFilesFinished) self.noconnection.hide() self.parent = parent def destroyed(self): self.finished.emit() def showFullImage(self, url): PreviewDialog(self, url) def showPage(self, addr): if network_available(): self.webView.load(QUrl(addr)) else: self._sync_template(status = False) self.animate(start = BOTCENTER, stop = MIDCENTER) def getFiles(self): files=self.iface.getPackageFiles(str(self.packageName.text())) self.filesList.addItems(files) self.filesList.sortItems() return files #self.iface.getPackageFiles(str(self.packageName.text())) def getFilesFinished(self): self.filesList.addItems(self._filesThread.get()) self.filesList.sortItems() def _tabSwitched(self, index): if index == 0 and self.tabWidget.count() > 1: if self.filesList.count() == 0: self._filesThread.start() def _sync_template(self, status, package = '', summary = '', description = ''): def _replace(key, value): self.webView.page().mainFrame().evaluateJavaScript(\ '%s.innerHTML="%s";' % (key, value)) self.busy.hide() self.busy.stopAnimation() if status: _replace('title', package) _replace('summary', summary) _replace('description', description) self.webWidget.show() self.noconnection.hide() else: self.noconnection.show() self.webWidget.hide() reset_proxy_settings() def showPackageDetails(self, package, installed, summary='', description=''): package = str(QVariant.value(package)) summary = str(QVariant.value(summary)) description = str(QVariant.value(description)) self.packageName.setText(package) self.filesList.clear() self.tabWidget.insertTab(0, self.packageFiles, _translate("Packaga Manager",'Package Files')) self.tabWidget.currentChanged.connect(self._tabSwitched) if config.USE_APPINFO: self.webView.loadFinished.connect(lambda x: \ self._sync_template(x, package, summary, description)) if network_available(): set_proxy_settings() self.webWidget.hide() self.busy.show() self.busy.startAnimation() self.webView.load(QUrl('%s/?p=%s' % (self._as, package))) else: self._sync_template(status = False) else: self.tabWidget.removeTab(1) self._filesThread.start() if not installed: self.tabWidget.removeTab(0) self.tabWidget.currentChanged.disconnect(self._tabSwitched) self.animate(start = BOTCENTER, stop = MIDCENTER) def _hide(self): self.busy.stopAnimation() try: self.webView.loadFinished.disconnect() except: pass self.animate(start = MIDCENTER, stop = BOTCENTER, direction = OUT)