# -*- coding: utf-8 -*- # # (c) Copyright 2011-2015 HP Development Company, L.P. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Authors: Amarnath Chitumalla # #global import os import os.path import sys import signal # Local from base.g import * from base import utils from prnt import cups from base.codes import * from base import validation from .ui_utils import * # Qt from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * HPLIP_INFO_SITE ="http://hplip.sourceforge.net/hplip_web.conf" class Ui_Dialog(object): def setupUi(self, Dialog, printerName, device_uri,Error_msg): Dialog.setObjectName("Dialog") Dialog.resize(700, 180) self.printerName=printerName self.device_uri=device_uri self.Error_msg=Error_msg self.gridlayout = QGridLayout(Dialog) self.gridlayout.setObjectName("gridlayout") self.StackedWidget = QStackedWidget(Dialog) self.StackedWidget.setObjectName("StackedWidget") self.page = QWidget() self.page.setObjectName("page") self.gridlayout1 = QGridLayout(self.page) self.gridlayout1.setObjectName("gridlayout1") self.label = QLabel(self.page) font = QFont() font.setPointSize(16) self.label.setFont(font) self.label.setObjectName("label") self.gridlayout1.addWidget(self.label, 0, 0, 1, 1) self.line = QFrame(self.page) self.line.setFrameShape(QFrame.HLine) self.line.setFrameShadow(QFrame.Sunken) self.line.setObjectName("line") self.gridlayout1.addWidget(self.line, 1, 0, 1, 2) self.TitleLabel = QLabel(self.page) self.TitleLabel.setWordWrap(True) self.TitleLabel.setObjectName("TitleLabel") self.gridlayout1.addWidget(self.TitleLabel, 2, 0, 1, 2) spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) spacerItem2 = QSpacerItem(200, 51, QSizePolicy.Minimum, QSizePolicy.Expanding) self.gridlayout1.addItem(spacerItem2, 5, 1, 1, 1) self.StackedWidget.addWidget(self.page) self.gridlayout.addWidget(self.StackedWidget, 0, 0, 1, 5) self.line_2 = QFrame(Dialog) self.line_2.setFrameShape(QFrame.HLine) self.line_2.setFrameShadow(QFrame.Sunken) self.line_2.setObjectName("line_2") self.gridlayout.addWidget(self.line_2, 1, 0, 1, 4) self.NextButton = QPushButton(Dialog) self.NextButton.setObjectName("NextButton") self.gridlayout.addWidget(self.NextButton, 2, 3, 1, 1) self.CancelButton = QPushButton(Dialog) self.CancelButton.setObjectName("CancelButton") self.gridlayout.addWidget(self.CancelButton, 2, 4, 1, 1) self.retranslateUi(Dialog) self.StackedWidget.setCurrentIndex(0) QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): if self.Error_msg == QUEUES_SMART_INSTALL_ENABLED: Dialog.setWindowTitle(QApplication.translate("Dialog", "HP SmartInstall/Mass storage Disabler", None)) else: Dialog.setWindowTitle(QApplication.translate("Dialog", "HP Device Manager - Queues diagnose", None)) if self.Error_msg == QUEUES_PAUSED: self.label.setText(QApplication.translate("Dialog", "Print/Fax Queue is Paused", None)) elif self.Error_msg == QUEUES_SMART_INSTALL_ENABLED: self.label.setText(QApplication.translate("Dialog", "Smart Install Device(s) Detected", None)) else: self.label.setText(QApplication.translate("Dialog", "Queue needs to be reconfigured", None)) if self.Error_msg == QUEUES_SMART_INSTALL_ENABLED: text= "Smart Install is enabled in "+ self.printerName + " device(s). \nDo you want to download and disable smart install to perform device functionalities?" elif self.Error_msg == QUEUES_INCORRECT_PPD: text= "'"+ self.printerName + "' is using incorrect PPD file. Do you want to remove and reconfigure queue?" elif self.Error_msg == QUEUES_PAUSED: text="'"+ self.printerName + "' is paused. Do you want to enable queue?" elif self.Error_msg == QUEUES_CONFIG_ERROR: text="'"+ self.printerName + "' is not configured using hp-setup utility. Click 'Remove and Setup' to remove and reconfigure queue." if self.Error_msg != QUEUES_MSG_SENDING: self.TitleLabel.setText(QApplication.translate("Dialog", text, None)) # if self.Error_msg == QUEUES_PAUSED or self.Error_msg == QUEUES_INCORRECT_PPD or self.Error_msg == QUEUES_SMART_INSTALL_ENABLED: if self.Error_msg == QUEUES_PAUSED or self.Error_msg == QUEUES_INCORRECT_PPD: self.NextButton.setText(QApplication.translate("Dialog", "Yes", None)) self.CancelButton.setText(QApplication.translate("Dialog", "No", None)) elif self.Error_msg == QUEUES_SMART_INSTALL_ENABLED: self.NextButton.setText(QApplication.translate("Dialog", "Download and Disable", None)) self.CancelButton.setText(QApplication.translate("Dialog", "Cancel", None)) else: self.NextButton.setText(QApplication.translate("Dialog", "Remove and Setup", None)) self.CancelButton.setText(QApplication.translate("Dialog", "Cancel", None)) # Ui class QueuesDiagnose(QDialog, Ui_Dialog): def __init__(self, parent, printerName, device_uri, Error_msg,passwordObj=None): QDialog.__init__(self, parent) self.result = False self.printerName = printerName self.device_uri = device_uri self.Error_msg = Error_msg self.passwordObj = passwordObj self.setupUi(self, self.printerName, self.device_uri,self.Error_msg) self.user_settings = UserSettings() self.user_settings.load() self.user_settings.debug() self.initUi() def init(self, printerName, device_uri, Error_msg): QDialog.__init__(self,None) self.printerName = printerName self.device_uri = device_uri self.Error_msg = Error_msg self.setupUi(self, printerName, device_uri,Error_msg) self.user_settings = UserSettings() self.user_settings.load() self.user_settings.debug() self.initUi() def initUi(self): # connect signals/slots self.CancelButton.clicked.connect(self.CancelButton_clicked) self.NextButton.clicked.connect(self.NextButton_clicked) signal.signal(signal.SIGINT, signal.SIG_DFL) # Application icon self.setWindowIcon(QIcon(load_pixmap('hp_logo', '128x128'))) # # Misc # def displayPage(self, page): self.updateStepText(page) self.StackedWidget.setCurrentIndex(page) def CancelButton_clicked(self): self.close() def NextButton_clicked(self): beginWaitCursor() try: if self.Error_msg == QUEUES_SMART_INSTALL_ENABLED: self.disable_smart_install() elif self.Error_msg == QUEUES_PAUSED: cups.enablePrinter(self.printerName) msg ="'"+self.printerName+"' is enabled successfully" SuccessUI(self, self.__tr(msg)) else: status, status_str = cups.cups_operation(cups.delPrinter, GUI_MODE, 'qt4', self, self.printerName) if status != cups.IPP_OK: msg="Failed to remove ' "+self.printerName+" ' queue.\nRemove using hp-toolbox..." FailureUI(self, self.__tr(msg)) else: msg="' "+self.printerName+" ' removed successfully.\nRe-configuring this printer by hp-setup..." log.debug(msg) path = utils.which('hp-setup') if path: log.debug("Starting hp-setup") utils.run('hp-setup --gui') finally: endWaitCursor() self.result = True self.close() def showMessage(self,msg): FailureUI(self, self.__tr(msg)) def showSuccessMessage(self,msg): SuccessUI(self, self.__tr(msg)) def __tr(self,s,c = None): return qApp.translate("PluginDialog",s,c) def disable_smart_install(self): if not utils.check_network_connection(): FailureUI(self, queryString(ERROR_NO_NETWORK)) else: sts, HPLIP_file = utils.download_from_network(HPLIP_INFO_SITE) if sts == 0: hplip_si_conf = ConfigBase(HPLIP_file) source = hplip_si_conf.get("SMART_INSTALL","url","") if not source : FailureUI(self, queryString(ERROR_FAILED_TO_DOWNLOAD_FILE, 0, HPLIP_INFO_SITE)) return response_file, smart_install_run = utils.download_from_network(source) response_asc, smart_install_asc = utils.download_from_network(source+'.asc') if response_file == 0 and response_asc == 0: gpg_obj = validation.GPG_Verification() digsig_sts, error_str = gpg_obj.validate(smart_install_run, smart_install_asc) if ERROR_SUCCESS == digsig_sts: sts, out = utils.run("sh %s"%smart_install_run) else: if QMessageBox.question(self, " ", self.__tr("<b>%s</b><p>Without this, it is not possible to authenticate and validate this tool prior to installation.</p>Do you still want to run Smart Install disabler?" %error_str), QMessageBox.Yes | QMessageBox.No, QMessageBox.No) == QMessageBox.Yes: # Disabling without verification. sts, out = utils.run("sh %s"%smart_install_run) else: if response_asc: FailureUI(self, queryString(ERROR_FAILED_TO_DOWNLOAD_FILE, 0, source + ".asc")) else: FailureUI(self, queryString(ERROR_FAILED_TO_DOWNLOAD_FILE, 0, source))
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
__init__.py | File | 786 B | 0644 |
|
aboutdialog.py | File | 1.7 KB | 0644 |
|
aboutdialog_base.py | File | 8.17 KB | 0644 |
|
aligndialog.py | File | 31.94 KB | 0644 |
|
aligndialog_base.py | File | 24.36 KB | 0644 |
|
cleandialog.py | File | 12.28 KB | 0644 |
|
cleandialog_base.py | File | 11.37 KB | 0644 |
|
colorcaldialog.py | File | 14.36 KB | 0644 |
|
colorcaldialog_base.py | File | 23.15 KB | 0644 |
|
devicesetupdialog.py | File | 8.57 KB | 0644 |
|
devicesetupdialog_base.py | File | 4.48 KB | 0644 |
|
deviceuricombobox.py | File | 5.4 KB | 0644 |
|
devmgr5.py | File | 83.79 KB | 0644 |
|
devmgr5_base.py | File | 23.22 KB | 0644 |
|
devmgr_ext.py | File | 2.51 KB | 0644 |
|
fabgrouptable.py | File | 2.26 KB | 0644 |
|
fabnametable.py | File | 1.2 KB | 0644 |
|
fabwindow.py | File | 23.7 KB | 0644 |
|
fabwindow_base.py | File | 8.61 KB | 0644 |
|
faxsetupdialog.py | File | 8.97 KB | 0644 |
|
faxsetupdialog_base.py | File | 5.33 KB | 0644 |
|
filetable.py | File | 15.45 KB | 0644 |
|
firmwaredialog.py | File | 3 KB | 0644 |
|
firmwaredialog_base.py | File | 3.5 KB | 0644 |
|
infodialog.py | File | 10.22 KB | 0644 |
|
infodialog_base.py | File | 5.67 KB | 0644 |
|
linefeedcaldialog.py | File | 3.52 KB | 0644 |
|
linefeedcaldialog_base.py | File | 2.61 KB | 0644 |
|
loadpapergroupbox.py | File | 3.3 KB | 0644 |
|
makecopiesdialog.py | File | 2.55 KB | 0644 |
|
makecopiesdialog_base.py | File | 2.33 KB | 0644 |
|
mimetypesdialog.py | File | 1.76 KB | 0644 |
|
mimetypesdialog_base.py | File | 4.07 KB | 0644 |
|
nodevicesdialog.py | File | 2.26 KB | 0644 |
|
nodevicesdialog_base.py | File | 5.96 KB | 0644 |
|
plugindiagnose.py | File | 3.03 KB | 0644 |
|
plugindiagnose_base.py | File | 2.93 KB | 0644 |
|
plugindialog.py | File | 12.2 KB | 0644 |
|
plugindialog_base.py | File | 6.61 KB | 0644 |
|
pluginlicensedialog.py | File | 1.34 KB | 0644 |
|
pluginlicensedialog_base.py | File | 4.68 KB | 0644 |
|
pqdiagdialog.py | File | 3.34 KB | 0644 |
|
pqdiagdialog_base.py | File | 2.58 KB | 0644 |
|
printdialog.py | File | 6 KB | 0644 |
|
printdialog_base.py | File | 5.35 KB | 0644 |
|
printernamecombobox.py | File | 5.46 KB | 0644 |
|
printsettings_base.py | File | 210 B | 0644 |
|
printsettingsdialog.py | File | 3.46 KB | 0644 |
|
printsettingsdialog_base.py | File | 2.62 KB | 0644 |
|
printsettingstoolbox.py | File | 79.17 KB | 0644 |
|
printtestpagedialog.py | File | 4.78 KB | 0644 |
|
printtestpagedialog_base.py | File | 4.13 KB | 0644 |
|
queuesconf.py | File | 10.61 KB | 0644 |
|
readonlyradiobutton.py | File | 1.63 KB | 0644 |
|
scandialog.py | File | 85.62 KB | 0644 |
|
sendfaxdialog.py | File | 37.13 KB | 0644 |
|
sendfaxdialog_base.py | File | 23.87 KB | 0644 |
|
settingsdialog.py | File | 4.15 KB | 0644 |
|
settingsdialog_base.py | File | 16.77 KB | 0644 |
|
setupdialog.py | File | 51.93 KB | 0644 |
|
setupdialog_base.py | File | 23.29 KB | 0644 |
|
setupdialog_base5.py | File | 23.17 KB | 0644 |
|
systemtray.py | File | 32.63 KB | 0644 |
|
systrayframe.py | File | 8.2 KB | 0644 |
|
systrayframe_base.py | File | 5.87 KB | 0644 |
|
ui_utils.py | File | 20.76 KB | 0644 |
|
upgradedialog.py | File | 4.59 KB | 0644 |
|
upgradedialog_base.py | File | 3.29 KB | 0644 |
|
wifisetupdialog.py | File | 31.42 KB | 0644 |
|
wifisetupdialog_base.py | File | 39.61 KB | 0644 |
|