Sophie

Sophie

distrib > Mandriva > 2009.0 > x86_64 > media > main-testing-src > by-pkgid > 31aa94742bb6cc6735ea4eaf2978fce1 > files > 3

system-config-printer-1.0.16-0.1mdv2009.0.src.rpm

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,