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.") %