Sophie

Sophie

distrib > Mageia > 2 > x86_64 > by-pkgid > 2fd7bd28fb7072a7fb9b8f3d35e2e9cb > files > 10

system-config-printer-1.3.9-3.mga2.src.rpm

diff --git a/applet.py b/applet.py
index 221291a..e665b7a 100644
--- a/applet.py
++ b/applet.py
@@ -17,6 +17,11 @@
 ## along with this program; if not, write to the Free Software
 ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
+# Added for Mageia
+import mga_printer_custom
+import os
+## End added for mageia
+
 import cups
 cups.require ("1.9.42")
 import sys
@@ -109,6 +114,174 @@ class NewPrinterNotification(dbus.service.Object):
 
         return False
 
+    @dbus.service.method(PDS_IFACE, in_signature='', out_signature='b')
+    def InstallSpooler (self):
+        import os
+        packages2install = ['task-printing-server', 'hplip-model-data']
+        """,
+        'cups',
+        'foomatic-db',
+        'foomatic-db-engine',
+        'foomatic-db-hpijs',
+        'foomatic-filters',
+        'gutenprint-cups',
+        'gutenprint-foomatic',
+        'hplip-model-data']
+        """
+        packages = []
+        for package in packages2install:
+            if not mga_printer_custom.is_installed_packages([package]):
+                packages.append(package)
+
+        # spooler installed if packages is empty
+        if packages.__len__() == 0:
+            return True
+
+        title = _("Installing Printing System..")
+        text = _("Installing Printing System. Please wait...")
+        n = pynotify.Notification (title, text, 'printer')
+        n.set_urgency (pynotify.URGENCY_NORMAL)
+        n.show()
+
+        if mga_printer_custom.install_packages(packages):
+            return True
+        else:
+            return False
+    @dbus.service.method(PDS_IFACE, in_signature='ss', out_signature='')
+    def InstallingPrinter (self, make, model):
+        printer = make+" "+model
+        title = _("Installing printer")
+        text = _("Installing `%s'. Please wait...") % (printer)
+        n = pynotify.Notification (title, text, 'printer')
+        n.set_urgency (pynotify.URGENCY_NORMAL)
+        n.show()
+
+    @dbus.service.method(PDS_IFACE, in_signature='ss', out_signature='')
+    def PrinterDisabled (self, make, model):
+        printer = make+" "+model
+        title = _("Printer disabled")
+        text = _("The printer `%s' is disabled") % (printer)
+        n = pynotify.Notification (title, text, 'printer')
+        n.set_urgency (pynotify.URGENCY_CRITICAL)
+        n.show()
+
+    @dbus.service.method(PDS_IFACE, in_signature='', out_signature='')
+    def InstallSpoolerFailed (self):
+        title = _("Installation failed")
+        text = _("The printing system installation has failed")
+        n = pynotify.Notification (title, text, 'printer')
+        n.set_urgency (pynotify.URGENCY_CRITICAL)
+        n.set_timeout (pynotify.EXPIRES_NEVER)
+        n.show()
+
+    @dbus.service.method(PDS_IFACE, in_signature='', out_signature='')
+    def SpoolerStartFailed (self):
+        title = _("Printing system failed")
+        text = _("It was not possible to start the printing system")
+        n = pynotify.Notification (title, text, 'printer')
+        n.set_urgency (pynotify.URGENCY_CRITICAL)
+        n.set_timeout (pynotify.EXPIRES_NEVER)
+        n.show()
+
+    @dbus.service.method(PDS_IFACE, in_signature='ss', out_signature='b')
+    def PrinterFirmwareDownload (self, make, model):
+        import gtk
+        printer = make+" "+model
+        title = _("Firmware Required")
+        text = _("The printer `%s' requires firmware") % (printer)
+        n = pynotify.Notification (title, text, 'printer')
+        n.set_urgency (pynotify.URGENCY_NORMAL)
+        n.show()
+        if mga_printer_custom.make2simplename(make) == "hp":
+            os.system("hp-setup")
+            return os.system("hp-firmware -n")
+        return False
+
+    @dbus.service.method(PDS_IFACE, in_signature='ss', out_signature='')
+    def PrinterEnabled (self, make, model):
+        #self.wake_up ()
+        """Hack to make kde4 system tray show the icon"""
+        #viewer.set_special_statusicon (SEARCHING_ICON)
+        #viewer.unset_special_statusicon ()
+
+        printer = make+" "+model
+        title = _("Printer enabled")
+        text = _("The printer `%s' is enabled") % (printer)
+        n = pynotify.Notification (title, text, 'printer')
+        n.set_urgency (pynotify.URGENCY_NORMAL)
+        n.show()
+
+    @dbus.service.method(PDS_IFACE, in_signature='ss', out_signature='')
+    def MissingDriver (self, make, model):
+        printer = make+" "+model
+        title = _("Missing printer driver")
+        text = _("It is not possible to install `%s' without the right driver") % (printer)
+        n = pynotify.Notification (title, text, 'printer')
+        n.set_urgency (pynotify.URGENCY_CRITICAL)
+        n.set_timeout (pynotify.EXPIRES_NEVER)
+        n.show()
+
+    @dbus.service.method(PDS_IFACE, in_signature='ssas', out_signature='b')
+    def InstallDriver (self, make, model, packages):
+        import os
+        printer = make+" "+model
+        title = _("Install printer driver")
+        text = _("`%s' requires driver installation") % (printer)
+        n = pynotify.Notification (title, text, 'printer')
+        n.set_urgency (pynotify.URGENCY_NORMAL)
+        n.show()
+        if mga_printer_custom.install_packages(packages):
+             return True
+        else:
+             return False
+
+    @dbus.service.method(PDS_IFACE, in_signature='ss', out_signature='b')
+    def CheckAndInstallDrivers (self, make, model):
+        import os
+        packages = mga_printer_custom.guess_driver_packages(make,model);
+        if packages:
+            if mga_printer_custom.is_installed_packages(packages):
+                return True
+            else:
+                printer = make+" "+model
+                title = _("Install printer driver")
+                text = _("`%s' requires driver installation") % (printer)
+                n = pynotify.Notification (title, text, 'printer')
+                n.set_urgency (pynotify.URGENCY_NORMAL)
+                n.show()
+                if mga_printer_custom.install_packages(packages):
+                    return True
+                else:
+                    return False
+        return True
+
+    @dbus.service.method(PDS_IFACE, in_signature='ss', out_signature='b')
+    def CheckInstalledDrivers (self, make, model):
+        import os
+        packages = mga_printer_custom.guess_driver_packages(make,model);
+        if packages:
+            if mga_printer_custom.is_installed_packages(packages):
+                return True
+            else:
+                return False
+        return True
+
+    @dbus.service.method(PDS_IFACE, in_signature='', out_signature='b')
+    def CheckInstalledSpooler (self):
+        import os
+        packages2install = ['task-printing-server', 'hplip-model-data']
+        packages = []
+        for package in packages2install:
+            if not mga_printer_custom.is_installed_packages([package]):
+                packages.append(package)
+
+        # spooler installed if packages is empty
+        if packages.__len__() == 0:
+            return True
+        else:
+            return False
+
+
     @dbus.service.method(PDS_IFACE, in_signature='isssss', out_signature='')
     def NewPrinter (self, status, name, mfg, mdl, des, cmd):
         if name.find("/") >= 0:
@@ -173,7 +346,7 @@ class NewPrinterNotification(dbus.service.Object):
                 pkgs = reduce (lambda x,y: x + ", " + y, missing_pkgs)
                 title = _("Install printer driver")
                 text = _("`%s' requires driver installation: %s.") % (name, pkgs)
-                n = pynotify.Notification (title, text)
+                n = pynotify.Notification (title, text, 'printer')
                 import installpackage
                 if "actions" in pynotify.get_server_caps():
                     try:
@@ -204,6 +377,7 @@ class NewPrinterNotification(dbus.service.Object):
                                       self.print_test_page (x, y, name))
                     n.add_action ("configure", _("Configure"),
                                   lambda x, y: self.configure (x, y, name))
+		    n.show()
             else: # Model mismatch
                 devid = "MFG:%s;MDL:%s;DES:%s;CMD:%s;" % (mfg, mdl, des, cmd)
                 text = (_("`%s' has been added, using the `%s' driver.") %