Пример #1
0
    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)
Пример #2
0
    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 ()
Пример #3
0
    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()
Пример #4
0
    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
Пример #5
0
    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)
Пример #9
0
    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)
Пример #11
0
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):
Пример #12
0
    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)