def manualDiscovery(self): # Validate param... device_uri, sane_uri, fax_uri = device.makeURI(self.param, self.jd_port) if device_uri: log.info("Found device: %s" % device_uri) back_end, is_hp, bus, model, serial, dev_file, host, zc, port = \ device.parseDeviceURI(device_uri) name = host if bus == 'net': try: name = socket.gethostbyaddr(host)[0] except (socket.herror, socket.gaierror): pass self.devices = {device_uri : (model, model, name)} if bus == 'usb': self.UsbRadioButton.setChecked(True) self.setUsbRadioButton(True) elif bus == 'net' and prop.net_build: self.NetworkRadioButton.setChecked(True) self.setNetworkRadioButton(True) elif bus == 'par' and prop.par_build: self.ParallelRadioButton.setChecked(True) self.setParallelRadioButton(True) return True return False
def manualFindPushButton_clicked(self): dlg = SetupManualFind(self.bus, self) if dlg.exec_loop() == QDialog.Accepted: QApplication.setOverrideCursor(QApplication.waitCursor) cups_uri, sane_uri, fax_uri = device.makeURI(dlg.param) if cups_uri: back_end, is_hp, bus, model, serial, dev_file, host, zc, port = device.parseDeviceURI(cups_uri) name = '' if self.bus == 'net': try: name = socket.gethostbyaddr(host)[0] except socket.herror: name = '' QApplication.restoreOverrideCursor() self.updateProbedDevicesPage({cups_uri: (model, model, name)}, dlg.param) else: QApplication.restoreOverrideCursor() self.updateProbedDevicesPage([], dlg.param)
log.set_where(log.LOG_TO_CONSOLE_AND_FILE) log.debug(" hp-check-plugin started") if Plugin_option_Enabled and Systray_Msg_Enabled: log.error("Both -m and -p options can't be used together.") usage() sys.exit(1) log.debug("param=%s" % param) if len(param) < 1: usage() sys.exit() if param: device_uri, sane_uri, fax_uri = device.makeURI(param) if not device_uri: log.error("This is not a valid device") sys.exit(0) log.debug("\nSetting up device: %s\n" % device_uri) #Query model and checks Plugin information. mq = device.queryModelByURI(device_uri) if not mq or mq.get('support-type', SUPPORT_TYPE_NONE) == SUPPORT_TYPE_NONE: log.error("Unsupported printer model.") sys.exit(1) plugin = mq.get('plugin', PLUGIN_NONE) if plugin == PLUGIN_NONE: log.debug("This is not a plugin device.") sys.exit()
if cups.IPP_OK == status: log.info("Successfully deleted %s Print/Fax queue"%selected_device_name) utils.sendEvent(EVENT_CUPS_QUEUES_REMOVED,device_uri, printer_name) clean_exit(0) else: log.error("Failed to delete %s Print/Fax queue. Error : %s"%(selected_device_name,status_str)) clean_exit(1) if not auto: log.info("(Note: Defaults for each question are maked with a '*'. Press <enter> to accept the default.)") log.info("") # ******************************* MAKEURI if param: device_uri, sane_uri, fax_uri = device.makeURI(param, jd_port) # ******************************* CONNECTION TYPE CHOOSER if not device_uri and bus is None: bus = tui.connection_table() if bus is None: clean_exit(0) log.info("\nUsing connection type: %s" % bus[0]) log.info("") # ******************************* DEVICE CHOOSER if not device_uri:
def showPage(self, page): orig_page = page if self.first_page: page = self.start_page self.first_page = False log.debug("%s %s %s" % ("*"*20, "showPage(%s)" % page.name(), "*"*20)) try: log.debug("%s --> %s" % (self.prev_page.name(), page.name())) except AttributeError: log.debug("--> %s" % page.name()) if page is self.ConnectionPage: # start --> ConnectionPage pass elif page is self.ProbedDevicesPage: # ConnectionPage --> ProbedDevicesPage/EnterIPPage/DeviceNotFoundPage devices_found = self.updateProbedDevicesPage() elif page is self.PPDPage: # ProbedDevicesPage --> PPDPage if self.param: device_uri, sane_uri, fax_uri = device.makeURI(self.param, self.jd_port) if device_uri: self.device_uri = device_uri back_end, is_hp, bus, model, serial, dev_file, host, zc, port = \ device.parseDeviceURI(self.device_uri) self.bus = bus self.mq = device.queryModelByURI(self.device_uri) norm_model = models.normalizeModelName(model).lower() core = core_install.CoreInstall() core.set_plugin_version() plugin = self.mq.get('plugin', PLUGIN_NONE) plugin_reason = self.mq.get('plugin-reason', PLUGIN_REASON_NONE) if plugin > PLUGIN_NONE and not core.check_for_plugin(): ok, sudo_ok = pkit.run_plugin_command(plugin == PLUGIN_REQUIRED, plugin_reason) if not sudo_ok: self.FailureUI(self.__tr("<b>Unable to find an appropriate su/sudo utility to run hp-plugin.</b><p>Install kdesu, gnomesu, or gksu.</p>")) return if not ok or not core.check_for_plugin(): if plugin == PLUGIN_REQUIRED: self.FailureUI(self.__tr("<b>The printer you are trying to setup requires a binary driver plug-in and it failed to install.</b><p>Please check your internet connection and try again.</p><p>Visit <u>http://hplipopensource.com</u> for more information.</p>")) return else: self.WarningUI(self.__tr("Either you have chosen to skip the installation of the optional plug-in or that installation has failed. Your printer may not function at optimal performance.")) self.updatePPDPage() elif page is self.PrinterNamePage: self.setDefaultPrinterName() if fax_import_ok and prop.fax_build and \ self.mq.get('fax-type', FAX_TYPE_NONE) not in (FAX_TYPE_NONE, FAX_TYPE_NOT_SUPPORTED): self.faxCheckBox.setEnabled(True) self.faxCheckBox.setEnabled(True) self.faxNameLineEdit.setEnabled(True) self.faxNumberLineEdit.setEnabled(True) self.faxNameCoLineEdit.setEnabled(True) self.faxLocationLineEdit.setEnabled(True) self.faxDescriptionLineEdit.setEnabled(True) self.faxInfoGroupBox.setEnabled(True) self.setup_fax = True self.setDefaultFaxName() self.readwriteFaxInformation(True) else: self.setup_fax = False self.fax_name_ok = True self.defaultFaxNamePushButton.setEnabled(False) self.faxCheckBox.setEnabled(False) self.faxNameLineEdit.setEnabled(False) self.faxNumberLineEdit.setEnabled(False) self.faxNameCoLineEdit.setEnabled(False) self.faxLocationLineEdit.setEnabled(False) self.faxDescriptionLineEdit.setEnabled(False) self.faxInfoGroupBox.setEnabled(False) elif page is self.FinishedPage: self.lineEdit1.setText(self.printer_name) self.lineEdit2.setText(self.location) self.lineEdit3.setText(self.desc) self.lineEdit4.setText(self.ppd_file) #log.debug("Restarting CUPS...") #status, output = utils.run(restart_cups()) #log.debug("Restart CUPS returned: exit=%d output=%s" % (status, output)) self.setupPrinter() if self.setup_fax: self.setupFax() self.readwriteFaxInformation(False) self.lineEdit5.setText(self.fax_number) self.lineEdit6.setText(self.fax_name) self.lineEdit7.setText(self.fax_name_company) self.lineEdit8.setText(self.fax_location) self.lineEdit9.setText(self.fax_desc) self.faxGroupBox.setEnabled(True) else: self.faxGroupBox.setEnabled(False) self.setFinishEnabled(self.FinishedPage, True) if orig_page != page: try: log.debug("%s --> %s" % (self.prev_page.name(), page.name())) except AttributeError: log.debug("--> %s" % page.name()) self.prev_page = page QWizard.showPage(self, page) if page is self.ProbedDevicesPage: # ConnectionPage --> ProbedDevicesPage/EnterIPPage/DeviceNotFoundPage if not devices_found: self.FailureUI(self.__tr("<b>No devices found.</b><p>Please make sure your printer is properly connected and powered-on."))
def __init__(self, bus, param, jd_port=1, parent=None, name=None, modal=0, fl=0): SetupForm_base.__init__(self, parent, name, modal, fl) self.start_page = self.ConnectionPage self.first_page = True if bus is None: self.bus = 'usb' else: self.bus = bus[0] self.start_page = self.ProbedDevicesPage if not prop.par_build: self.parRadioButton.setEnabled(False) if not prop.net_build: self.netRadioButton.setEnabled(False) if not prop.par_build and not prop.net_build: self.bus = 'usb' self.start_page = self.ProbedDevicesPage self.param = param self.jd_port = jd_port if self.param: # Validate param... device_uri, sane_uri, fax_uri = device.makeURI(self.param, self.jd_port) if device_uri: self.device_uri = device_uri self.start_page = self.PPDPage else: self.FailureUI(self.__tr("<b>Device not found.</b> <p>Please make sure your printer is properly connected and powered-on.")) self.setIcon(load_pixmap('hp_logo', '128x128')) self.connectionTypeButtonGroup.setButton(0) self.device_uri = '' self.mq = {} self.prev_page = None self.probe_pat = re.compile(r'(.*?)\s"(.*?)"\s"(.*?)"\s"(.*?)"', re.IGNORECASE) self.printer_name = '' self.ppd_list = [] self.location = '' self.desc = '' self.filter = [] self.search = '' self.ttl = 4 self.timeout = 5 self.printer_name_ok = True self.fax_name_ok = True self.fax_number = '' self.fax_name = '' self.printer_fax_names_same = False self.fax_name_company = '' self.fax_location = '' self.fax_desc = '' self.print_test_page = True self.printerNameLineEdit.setValidator(PrinterNameValidator(self.printerNameLineEdit)) self.faxNameLineEdit.setValidator(PrinterNameValidator(self.faxNameLineEdit)) self.faxNumberLineEdit.setValidator(PhoneNumValidator(self.faxNumberLineEdit)) self.setTitleFont(QFont("Helvetica", 16)) self.setBackEnabled(self.FinishedPage, False) self.bg = self.printerNameLineEdit.paletteBackgroundColor() self.setHelpEnabled(self.ConnectionPage, False) self.setHelpEnabled(self.ProbedDevicesPage, False) self.setHelpEnabled(self.PPDPage, False) self.setHelpEnabled(self.PrinterNamePage, False) self.setHelpEnabled(self.FinishedPage, False) self.faxNameLineEdit.setMaxLength(50) self.printerNameLineEdit.setMaxLength(50) QToolTip.add(self.searchFiltersPushButton2, self.__tr('Current: Filter: [%2] Search: "%3" TTL: %4 Timeout: %5s').arg(','.join(self.filter)).arg(self.search or '').arg(self.ttl).arg(self.timeout)) cups.setPasswordCallback(showPasswordUI)
def showPage(self, page): orig_page = page if self.first_page: page = self.start_page self.first_page = False log.debug("%s %s %s" % ("*"*20, "showPage(%s)" % page.name(), "*"*20)) try: log.debug("%s --> %s" % (self.prev_page.name(), page.name())) except AttributeError: log.debug("--> %s" % page.name()) if page is self.ConnectionPage: # start --> ConnectionPage pass elif page is self.ProbedDevicesPage: # ConnectionPage --> ProbedDevicesPage/EnterIPPage/DeviceNotFoundPage devices_found = self.updateProbedDevicesPage() elif page is self.PPDPage: # ProbedDevicesPage --> PPDPage if self.param: device_uri, sane_uri, fax_uri = device.makeURI(self.param, self.jd_port) if device_uri: self.device_uri = device_uri back_end, is_hp, bus, model, serial, dev_file, host, zc, port = \ device.parseDeviceURI(self.device_uri) self.bus = bus self.mq = device.queryModelByURI(self.device_uri) norm_model = models.normalizeModelName(model).lower() core = core_install.CoreInstall(core_install.MODE_CHECK) core.set_plugin_version() plugin = self.mq.get('plugin', PLUGIN_NONE) plugin_reason = self.mq.get('plugin-reason', PLUGIN_REASON_NONE) if plugin > PLUGIN_NONE and core.check_for_plugin() != PLUGIN_INSTALLED: ok, sudo_ok = pkit.run_plugin_command(plugin == PLUGIN_REQUIRED, plugin_reason) if not sudo_ok: self.FailureUI(self.__tr("<b>Unable to find an appropriate su/sudo utility to run hp-plugin.</b><p>Install kdesu, gnomesu, or gksu.</p>")) return if not ok or core.check_for_plugin() != PLUGIN_INSTALLED: if plugin == PLUGIN_REQUIRED: self.FailureUI(self.__tr("<b>The printer you are trying to setup requires a binary driver plug-in and it failed to install.</b><p>Please check your internet connection and try again.</p><p>Visit <u>http://hplipopensource.com</u> for more information.</p>")) return else: self.WarningUI(self.__tr("Either you have chosen to skip the installation of the optional plug-in or that installation has failed. Your printer may not function at optimal performance.")) self.updatePPDPage() elif page is self.PrinterNamePage: self.setDefaultPrinterName() if fax_import_ok and prop.fax_build and \ self.mq.get('fax-type', FAX_TYPE_NONE) not in (FAX_TYPE_NONE, FAX_TYPE_NOT_SUPPORTED): self.faxCheckBox.setEnabled(True) self.faxCheckBox.setEnabled(True) self.faxNameLineEdit.setEnabled(True) self.faxNumberLineEdit.setEnabled(True) self.faxNameCoLineEdit.setEnabled(True) self.faxLocationLineEdit.setEnabled(True) self.faxDescriptionLineEdit.setEnabled(True) self.faxInfoGroupBox.setEnabled(True) self.setup_fax = True self.setDefaultFaxName() self.readwriteFaxInformation(True) else: self.setup_fax = False self.fax_name_ok = True self.defaultFaxNamePushButton.setEnabled(False) self.faxCheckBox.setEnabled(False) self.faxNameLineEdit.setEnabled(False) self.faxNumberLineEdit.setEnabled(False) self.faxNameCoLineEdit.setEnabled(False) self.faxLocationLineEdit.setEnabled(False) self.faxDescriptionLineEdit.setEnabled(False) self.faxInfoGroupBox.setEnabled(False) elif page is self.FinishedPage: self.lineEdit1.setText(self.printer_name) self.lineEdit2.setText(self.location) self.lineEdit3.setText(self.desc) self.lineEdit4.setText(self.ppd_file) #log.debug("Restarting CUPS...") #status, output = utils.run(restart_cups()) #log.debug("Restart CUPS returned: exit=%d output=%s" % (status, output)) self.setupPrinter() if self.setup_fax: self.setupFax() self.readwriteFaxInformation(False) self.lineEdit5.setText(self.fax_number) self.lineEdit6.setText(self.fax_name) self.lineEdit7.setText(self.fax_name_company) self.lineEdit8.setText(self.fax_location) self.lineEdit9.setText(self.fax_desc) self.faxGroupBox.setEnabled(True) else: self.faxGroupBox.setEnabled(False) self.setFinishEnabled(self.FinishedPage, True) if orig_page != page: try: log.debug("%s --> %s" % (self.prev_page.name(), page.name())) except AttributeError: log.debug("--> %s" % page.name()) self.prev_page = page QWizard.showPage(self, page) if page is self.ProbedDevicesPage: # ConnectionPage --> ProbedDevicesPage/EnterIPPage/DeviceNotFoundPage if not devices_found: self.FailureUI(self.__tr("<b>No devices found.</b><p>Please make sure your printer is properly connected and powered-on."))
try: log.debug("Starting GUI loop...") if ui_toolkit == 'qt4': app.exec_() elif ui_toolkit == 'qt3': dialog.exec_loop() except KeyboardInterrupt: sys.exit(0) sys.exit(0) mod.showTitle() if usb_bus_node is not None: log.debug("USB bus node: %s" % usb_bus_node) device_uri, sane_uri, fax_uri = device.makeURI(usb_bus_node, 1) if not device_uri: log.error("Invalid USB Device ID or USB bus ID. No device found.") sys.exit(1) else: device_uri = mod.getDeviceUri(device_uri, printer_name, filter={'fw-download': (operator.gt, 0)}) if not device_uri: sys.exit(1) try: d = device.Device(device_uri, printer_name) except Error:
try: log.debug("Starting GUI loop...") if ui_toolkit == 'qt4': app.exec_() elif ui_toolkit == 'qt3': dialog.exec_loop() except KeyboardInterrupt: sys.exit(0) sys.exit(0) mod.showTitle() if usb_bus_node is not None: log.debug("USB bus node: %s" % usb_bus_node) device_uri, sane_uri, fax_uri = device.makeURI(usb_bus_node, 1) if not device_uri: log.error("Invalid USB Device ID or USB bus ID. No device found.") sys.exit(1) else: device_uri = mod.getDeviceUri(device_uri, printer_name, filter={'fw-download': (operator.gt, 0)}) try: d = device.Device(device_uri, printer_name) except Error: log.error("Error opening device. Exiting.") sys.exit(1)