def _ppds_ready (self, fetchedppds): self._disconnect_signals () ppds = fetchedppds.get_ppds () try: if self.device_id: id_dict = cupshelpers.parseDeviceID (self.device_id) else: id_dict = {} (mfg, mdl) = cupshelpers.ppds.ppdMakeModelSplit (self.device_make_and_model) id_dict["MFG"] = mfg id_dict["MDL"] = mdl id_dict["DES"] = "" id_dict["CMD"] = [] fit = ppds.getPPDNamesFromDeviceID (id_dict["MFG"], id_dict["MDL"], id_dict["DES"], id_dict["CMD"], self.device_uri, self.device_make_and_model) ppdnamelist = ppds.orderPPDNamesByPreference (fit.keys ()) g_killtimer.remove_hold () self.reply_handler (map (lambda x: (x, fit[x]), ppdnamelist)) except Exception, e: try: g_killtimer.remove_hold () except: pass self.error_handler (e)
def run (self): self._dialog.show_all () if self._device_id: self._devid_dict = cupshelpers.parseDeviceID (self._device_id) if self._local_cups and self._device_id and self._bus: self._gpk_device_id = "MFG:%s;MDL:%s;" % (self._devid_dict["MFG"], self._devid_dict["MDL"]) self._query_packagekit () else: self._query_cups ()
def run(self): self._dialog.show_all() if self._device_id: self._devid_dict = cupshelpers.parseDeviceID(self._device_id) if self._local_cups and self._device_id and self._bus: self._gpk_device_id = "MFG:%s;MDL:%s;" % (self._devid_dict["MFG"], self._devid_dict["MDL"]) self._query_packagekit() else: self._query_cups()
def hwid_to_display_string(self, hwid): '''Convert a type:value hardware ID string to a human friendly text.''' try: (type, value) = hwid.split(':', 1) except ValueError: return hwid if type == 'printer_deviceid': try: import cupshelpers except ImportError: return hwid info = cupshelpers.parseDeviceID(value) return info['MFG'] + ' ' + info['MDL'] return hwid
def _ppds_ready (self, fetchedppds): self._disconnect_signals () ppds = fetchedppds.get_ppds () try: if self.device_id: id_dict = cupshelpers.parseDeviceID (self.device_id) else: id_dict = {} (mfg, mdl) = cupshelpers.ppds.ppdMakeModelSplit (self.device_make_and_model) id_dict["MFG"] = mfg id_dict["MDL"] = mdl id_dict["DES"] = "" id_dict["CMD"] = [] self.device_id = "MFG:%s;MDL:%s;" % (mfg, mdl) fit = ppds.getPPDNamesFromDeviceID (id_dict["MFG"], id_dict["MDL"], id_dict["DES"], id_dict["CMD"], self.device_uri, self.device_make_and_model) ppdnamelist = ppds.orderPPDNamesByPreference (fit.keys (), self.installed_files, devid=id_dict, fit=fit) ppdname = ppdnamelist[0] status = fit[ppdname] g_killtimer.remove_hold () self.reply_handler ([(x, fit[x]) for x in ppdnamelist]) except Exception as e: try: g_killtimer.remove_hold () except: pass self.error_handler (e)
def _ppds_ready (self, fetchedppds): if not fetchedppds.is_ready (): # PPDs being reloaded. Wait for next 'ready' signal. return self._disconnect_signals () ppds = fetchedppds.get_ppds () try: if self.device_id: id_dict = cupshelpers.parseDeviceID (self.device_id) else: id_dict = {} (mfg, mdl) = cupshelpers.ppds.ppdMakeModelSplit (self.device_make_and_model) id_dict["MFG"] = mfg id_dict["MDL"] = mdl id_dict["DES"] = "" id_dict["CMD"] = [] self.device_id = "MFG:%s;MDL:%s;" % (mfg, mdl) fit = ppds.getPPDNamesFromDeviceID (id_dict["MFG"], id_dict["MDL"], id_dict["DES"], id_dict["CMD"], self.device_uri, self.device_make_and_model) ppdnamelist = ppds.orderPPDNamesByPreference (fit.keys (), self.installed_files, devid=id_dict, fit=fit) ppdname = ppdnamelist[0] status = fit[ppdname] try: if status != "exact" and not self.download_tried: self.download_tried = True self.dialog = newprinter.NewPrinterGUI() self.dialog.NewPrinterWindow.set_modal (False) self.handles = \ [self.dialog.connect ('dialog-canceled', self.on_dialog_canceled), self.dialog.connect ('driver-download-checked', self.on_driver_download_checked)] self.reply_if_fail = [(x, fit[x]) for x in ppdnamelist] if not self.dialog.init ('download_driver', devid=self.device_id): try: g_killtimer.remove_hold () finally: e = RuntimeError ("Failed to launch dialog") self.error_handler (e) return except: # Ignore driver download if packages needed for the GUI are not # installed or if no windows can be opened pass g_killtimer.remove_hold () self.reply_handler ([(x, fit[x]) for x in ppdnamelist]) except Exception as e: try: g_killtimer.remove_hold () except: pass self.error_handler (e)
def _ppds_ready(self, fetchedppds): if not fetchedppds.is_ready(): # PPDs being reloaded. Wait for next 'ready' signal. return self._disconnect_signals() ppds = fetchedppds.get_ppds() try: if self.device_id: id_dict = cupshelpers.parseDeviceID(self.device_id) else: id_dict = {} (mfg, mdl) = cupshelpers.ppds.ppdMakeModelSplit( self.device_make_and_model) id_dict["MFG"] = mfg id_dict["MDL"] = mdl id_dict["DES"] = "" id_dict["CMD"] = [] self.device_id = "MFG:%s;MDL:%s;" % (mfg, mdl) fit = ppds.getPPDNamesFromDeviceID(id_dict["MFG"], id_dict["MDL"], id_dict["DES"], id_dict["CMD"], self.device_uri, self.device_make_and_model) ppdnamelist = ppds.orderPPDNamesByPreference(fit.keys(), self.installed_files, devid=id_dict, fit=fit) ppdname = ppdnamelist[0] status = fit[ppdname] try: if status != "exact" and not self.download_tried: self.download_tried = True self.dialog = newprinter.NewPrinterGUI() self.dialog.NewPrinterWindow.set_modal(False) self.handles = \ [self.dialog.connect ('dialog-canceled', self.on_dialog_canceled), self.dialog.connect ('driver-download-checked', self.on_driver_download_checked)] self.reply_if_fail = [(x, fit[x]) for x in ppdnamelist] if not self.dialog.init('download_driver', devid=self.device_id): try: g_killtimer.remove_hold() finally: e = RuntimeError("Failed to launch dialog") self.error_handler(r) return except: # Ignore driver download if packages needed for the GUI are not # installed or if no windows can be opened pass g_killtimer.remove_hold() self.reply_handler([(x, fit[x]) for x in ppdnamelist]) except Exception as e: try: g_killtimer.remove_hold() except: pass self.error_handler(e)
def _ppds_ready(self, fetchedppds): self._disconnect_signals() ppds = fetchedppds.get_ppds() try: if self.device_id: id_dict = cupshelpers.parseDeviceID(self.device_id) else: id_dict = {} (mfg, mdl) = cupshelpers.ppds.ppdMakeModelSplit( self.device_make_and_model) id_dict["MFG"] = mfg id_dict["MDL"] = mdl id_dict["DES"] = "" id_dict["CMD"] = [] self.device_id = "MFG:%s;MDL:%s;" % (mfg, mdl) fit = ppds.getPPDNamesFromDeviceID(id_dict["MFG"], id_dict["MDL"], id_dict["DES"], id_dict["CMD"], self.device_uri, self.device_make_and_model) ppdnamelist = ppds.orderPPDNamesByPreference(fit.keys(), self.installed_files, devid=id_dict, fit=fit) ppdname = ppdnamelist[0] status = fit[ppdname] try: if status != "exact" and not self.download_tried: self.download_tried = True self.loop = GObject.MainLoop() self.dialog = newprinter.NewPrinterGUI() self.dialog.NewPrinterWindow.set_modal(False) self.handles = \ [self.dialog.connect ('dialog-canceled', self.on_dialog_canceled), self.dialog.connect ('driver-download-checked', self.on_driver_download_checked)] if self.dialog.init('download_driver', devid=self.device_id): self.loop.run() for handle in self.handles: self.dialog.disconnect(handle) if len(self.installed_files) > 0: debugprint( "GetBestDrivers request: Re-fetch PPDs after driver download" ) g_ppds = FetchedPPDs(self.cupsconn, self.language) self._signals.append( g_ppds.connect('ready', self._ppds_ready)) self._signals.append( g_ppds.connect('error', self._ppds_error)) g_ppds.run() return except: # Ignore driver download if packages needed for the GUI are not # installed or if no windows can be opened pass g_killtimer.remove_hold() self.reply_handler(map(lambda x: (x, fit[x]), ppdnamelist)) except Exception as e: try: g_killtimer.remove_hold() except: pass self.error_handler(e)
import sys from functools import reduce c = cups.Connection () devices = None if len (sys.argv) > 1 and sys.argv[1] == '--help': print("Syntax: check-device-ids <device-make-and-model> <device-id>") print(" or: check-device-ids <device-uri>") print(" or: check-device-ids <queue-name>") print(" or: check-device-ids") sys.exit (1) SPECIFIC_URI = None if len (sys.argv) == 3: id_dict = cupshelpers.parseDeviceID (sys.argv[2]) if id_dict.get ("MFG") and id_dict.get ("MDL"): devices = { 'user-specified:': { 'device-make-and-model': sys.argv[1], 'device-id': sys.argv[2] } } elif len (sys.argv) == 2: if sys.argv[1].find (":/") != -1: SPECIFIC_URI = sys.argv[1] else: # This is a queue name. Work out the URI from that. try: attrs = c.getPrinterAttributes (sys.argv[1]) except cups.IPPError as e: (e, m) = e.args print("Error getting printer attibutes: %s" % m)
import sys cups.setUser ('root') c = cups.Connection () devices = None if len (sys.argv) > 1 and sys.argv[1] == '--help': print "Syntax: check-device-ids <device-make-and-model> <device-id>" print " or: check-device-ids <device-uri>" print " or: check-device-ids <queue-name>" print " or: check-device-ids" sys.exit (1) SPECIFIC_URI = None if len (sys.argv) == 3: id_dict = cupshelpers.parseDeviceID (sys.argv[2]) if id_dict.get ("MFG") and id_dict.get ("MDL"): devices = { 'user-specified:': { 'device-make-and-model': sys.argv[1], 'device-id': sys.argv[2] } } elif len (sys.argv) == 2: if sys.argv[1].find (":/") != -1: SPECIFIC_URI = sys.argv[1] else: # This is a queue name. Work out the URI from that. try: attrs = c.getPrinterAttributes (sys.argv[1]) except cups.IPPError as e: (e, m) = e.args if isinstance(m, bytes):
def _ppds_ready (self, fetchedppds): self._disconnect_signals () ppds = fetchedppds.get_ppds () try: if self.device_id: id_dict = cupshelpers.parseDeviceID (self.device_id) else: id_dict = {} (mfg, mdl) = cupshelpers.ppds.ppdMakeModelSplit (self.device_make_and_model) id_dict["MFG"] = mfg id_dict["MDL"] = mdl id_dict["DES"] = "" id_dict["CMD"] = [] self.device_id = "MFG:%s;MDL:%s;" % (mfg, mdl) fit = ppds.getPPDNamesFromDeviceID (id_dict["MFG"], id_dict["MDL"], id_dict["DES"], id_dict["CMD"], self.device_uri, self.device_make_and_model) ppdnamelist = ppds.orderPPDNamesByPreference (fit.keys (), self.installed_files, devid=id_dict, fit=fit) ppdname = ppdnamelist[0] status = fit[ppdname] try: if status != "exact" and not self.download_tried: self.download_tried = True self.loop = GObject.MainLoop () self.dialog = newprinter.NewPrinterGUI() self.dialog.NewPrinterWindow.set_modal (False) self.handles = \ [self.dialog.connect ('dialog-canceled', self.on_dialog_canceled), self.dialog.connect ('driver-download-checked', self.on_driver_download_checked)] if self.dialog.init ('download_driver', devid=self.device_id): self.loop.run() for handle in self.handles: self.dialog.disconnect (handle) if len(self.installed_files) > 0: debugprint ("GetBestDrivers request: Re-fetch PPDs after driver download") g_ppds = FetchedPPDs (self.cupsconn, self.language) self._signals.append (g_ppds.connect ('ready', self._ppds_ready)) self._signals.append (g_ppds.connect ('error', self._ppds_error)) g_ppds.run () return except: # Ignore driver download if packages needed for the GUI are not # installed or if no windows can be opened pass g_killtimer.remove_hold () self.reply_handler (map (lambda x: (x, fit[x]), ppdnamelist)) except Exception as e: try: g_killtimer.remove_hold () except: pass self.error_handler (e)