diff -ur system-config-printer-1.0.14/system-config-printer.py system-config-printer-1.0.14.new/system-config-printer.py --- system-config-printer-1.0.14/system-config-printer.py 2009-02-11 16:00:05.000000000 +0100 +++ system-config-printer-1.0.14.new/system-config-printer.py 2009-02-11 23:14:48.000000000 +0100 @@ -27,6 +27,7 @@ import sys, os, tempfile, time, traceback, re, httplib import subprocess import signal, thread +import mdv_printer_custom import dbus try: import gtk.glade @@ -621,6 +622,12 @@ self.btnChangePPD.clicked () break iter = model.iter_next (iter) + # task-printing-hp is needed even if you dont have a HP printer. (hp-makeuri, hp-info..) + if not mdv_printer_custom.is_installed_packages(['task-printing-server', 'task-printing-hp']): + if not mdv_printer_custom.install_packages(['task-printing-server', 'task-printing-hp']): + sys.exit (1) + os.system("service cups start") + self.on_btnRefresh_clicked(None) def dests_iconview_item_activated (self, iconview, path): model = iconview.get_model () @@ -2560,6 +2567,7 @@ # new printer def on_new_printer_activate(self, widget): self.busy (self.MainWindow) + mdv_printer_custom.reload_parport() self.newPrinterGUI.init("printer") self.ready (self.MainWindow) @@ -3333,6 +3341,10 @@ reloaded = 2 else: reloaded = 2 + elif self.device.uri and self.device.uri.startswith ("parallel"): + (p_make, p_model) = mdv_printer_custom.probe_parport_info(self.device.uri) + self.auto_make = p_make + self.auto_model = p_model else: (status, ppdname) = self.ppds.\ getPPDNameFromDeviceID ("Generic", @@ -3350,6 +3362,24 @@ self.auto_model = model except: nonfatalException () + + # mandriva hook: ask to install the right driver + driver_packages=None + if self.auto_make and not self.device.type in ("lpd", "ipp", "bluetooth", "smb"): + if self.device.id_dict['DES'] != "AppSocket/HP JetDirect": + driver_packages = mdv_printer_custom.guess_driver_packages(self.auto_make, self.auto_model) + if self.auto_make and driver_packages: + if not mdv_printer_custom.is_installed_packages(driver_packages): + status = gtk.RESPONSE_YES + while status != gtk.RESPONSE_NO: + if not mdv_printer_custom.install_packages(driver_packages): + dialog = gtk.MessageDialog(self.NewPrinterWindow, + buttons=gtk.BUTTONS_YES_NO, + message_format=_("The required driver package is missing, try again?")) + status = dialog.run() + dialog.destroy() + else: + break if not self.remotecupsqueue: self.fillMakeList() @@ -3726,6 +3756,8 @@ make_and_model = None if len (device.make_and_model) > 7: make_and_model = device.make_and_model + # force auto id generation below if we found the make and model + device.id = None elif len (device.info) > 7: make_and_model = device.info make_and_model = re.sub("\s*(\(|\d+\.\d+\.\d+\.\d+).*$", "", make_and_model) @@ -4515,6 +4547,11 @@ # the selected device. if device.type == "parallel": text = _("A printer connected to the parallel port.") + (p_make, p_model) = mdv_printer_custom.probe_parport_info(device.uri) + if p_make and p_model: + make_model = p_make + " " + p_model + info = make_model + " ("+ device.info + ")" + device.info = info elif device.type == "usb": text = _("A printer connected to a USB port.") elif device.type == "hp": @@ -4941,7 +4978,7 @@ found = False for make in makes: iter = model.append((make,)) - if make==self.auto_make: + if make.lower()==mdv_printer_custom.make2simplename(self.auto_make).lower(): path = model.get_path(iter) self.tvNPMakes.set_cursor (path) self.tvNPMakes.scroll_to_cell(path, None, @@ -4975,7 +5012,8 @@ selected = False for pmodel in models: iter = model.append((pmodel,)) - if self.NPMake==self.auto_make and pmodel==self.auto_model: + if self.NPMake.lower()==mdv_printer_custom.make2simplename(self.auto_make) and \ + pmodel.lower()==self.auto_model.lower(): path = model.get_path(iter) self.tvNPModels.set_cursor (path) self.tvNPModels.scroll_to_cell(path, None,