diff --git a/system-config-printer-arrows.patch b/system-config-printer-arrows.patch new file mode 100644 index 0000000..d04e80f --- /dev/null +++ b/system-config-printer-arrows.patch @@ -0,0 +1,79 @@ +diff -up system-config-printer-1.1.8/glade/NewPrinterWindow.glade.arrows system-config-printer-1.1.8/glade/NewPrinterWindow.glade +--- system-config-printer-1.1.8/glade/NewPrinterWindow.glade.arrows 2009-06-03 09:20:26.000000000 +0100 ++++ system-config-printer-1.1.8/glade/NewPrinterWindow.glade 2009-07-03 18:18:50.640997051 +0100 +@@ -3662,6 +3662,7 @@ DTR/DSR (Hardware) + False + False + False ++ + + + +@@ -3693,6 +3694,7 @@ DTR/DSR (Hardware) + + + True ++ False + True + True + GTK_RELIEF_NORMAL +@@ -3771,6 +3773,7 @@ DTR/DSR (Hardware) + + + True ++ False + True + True + GTK_RELIEF_NORMAL +@@ -3823,6 +3826,7 @@ DTR/DSR (Hardware) + False + False + False ++ + + + +diff -up system-config-printer-1.1.8/system-config-printer.py.arrows system-config-printer-1.1.8/system-config-printer.py +--- system-config-printer-1.1.8/system-config-printer.py.arrows 2009-07-03 18:18:36.478996538 +0100 ++++ system-config-printer-1.1.8/system-config-printer.py 2009-07-03 18:18:50.643996718 +0100 +@@ -174,7 +174,6 @@ def moveClassMembers(treeview_from, tree + for row in rows: + path = row.get_path() + iter = model_from.get_iter(path) +- + row_data = model_from.get(iter, 0) + model_to.append(row_data) + model_from.remove(iter) +@@ -3547,6 +3546,8 @@ class NewPrinterGUI(GtkGUI): + "entNPTDevice", + "tvNCMembers", + "tvNCNotMembers", ++ "btnNCAddMember", ++ "btnNCDelMember", + "ntbkPPDSource", + "rbtnNPPPD", + "tvNPMakes", +@@ -4089,11 +4090,23 @@ class NewPrinterGUI(GtkGUI): + moveClassMembers(self.tvNCNotMembers, self.tvNCMembers) + self.btnNPApply.set_sensitive( + bool(getCurrentClassMembers(self.tvNCMembers))) ++ button.set_sensitive(False) + + def on_btnNCDelMember_clicked(self, button): + moveClassMembers(self.tvNCMembers, self.tvNCNotMembers) + self.btnNPApply.set_sensitive( + bool(getCurrentClassMembers(self.tvNCMembers))) ++ button.set_sensitive(False) ++ ++ def on_tvNCMembers_cursor_changed(self, widget): ++ selection = widget.get_selection() ++ model_from, rows = selection.get_selected_rows() ++ self.btnNCDelMember.set_sensitive(rows != []) ++ ++ def on_tvNCNotMembers_cursor_changed(self, widget): ++ selection = widget.get_selection() ++ model_from, rows = selection.get_selected_rows() ++ self.btnNCAddMember.set_sensitive(rows != []) + + # Navigation buttons + diff --git a/system-config-printer-gutenprint.patch b/system-config-printer-gutenprint.patch new file mode 100644 index 0000000..f3f35ad --- /dev/null +++ b/system-config-printer-gutenprint.patch @@ -0,0 +1,14 @@ +diff -up system-config-printer-1.1.8/cupshelpers/cupshelpers.py.gutenprint system-config-printer-1.1.8/cupshelpers/cupshelpers.py +--- system-config-printer-1.1.8/cupshelpers/cupshelpers.py.gutenprint 2009-06-17 18:39:51.000000000 +0100 ++++ system-config-printer-1.1.8/cupshelpers/cupshelpers.py 2009-07-03 18:09:03.598995561 +0100 +@@ -736,8 +736,10 @@ def missingPackagesAndExecutables(ppd): + # IJS servers (used by foomatic) + 'hpijs': 'hpijs', + 'ijsgutenprint.5.0': 'gutenprint', ++ 'ijsgutenprint.5.2': 'gutenprint', + # CUPS filters + 'rastertogutenprint.5.0': 'gutenprint-cups', ++ 'rastertogutenprint.5.2': 'gutenprint-cups', + 'commandtoepson': 'gutenprint-cups', + 'commandtocanon': 'gutenprint-cups', + } diff --git a/system-config-printer-packagekit.patch b/system-config-printer-packagekit.patch new file mode 100644 index 0000000..9ba4fc8 --- /dev/null +++ b/system-config-printer-packagekit.patch @@ -0,0 +1,77 @@ +diff -up system-config-printer-1.1.8/installpackage.py.packagekit system-config-printer-1.1.8/installpackage.py +--- system-config-printer-1.1.8/installpackage.py.packagekit 2009-05-12 10:36:36.000000000 +0100 ++++ system-config-printer-1.1.8/installpackage.py 2009-07-03 18:07:09.560995667 +0100 +@@ -2,8 +2,8 @@ + + ## system-config-printer + +-## Copyright (C) 2008 Red Hat, Inc. +-## Copyright (C) 2008 Tim Waugh ++## Copyright (C) 2008, 2009 Red Hat, Inc. ++## Copyright (C) 2008, 2009 Tim Waugh + + ## This program is free software; you can redistribute it and/or modify + ## it under the terms of the GNU General Public License as published by +@@ -19,53 +19,18 @@ + ## along with this program; if not, write to the Free Software + ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +-import dbus +-import xml.etree.ElementTree +-from dbus.mainloop.glib import DBusGMainLoop +-DBusGMainLoop (set_as_default=True) ++import os ++import glib + + class PackageKit: + def __init__ (self): +- bus = dbus.SessionBus () +- obj = bus.get_object ("org.freedesktop.PackageKit", +- "/org/freedesktop/PackageKit") +- +- # Find out which API is required. +- num_args = -1 +- introsp = dbus.Interface (obj, "org.freedesktop.DBus.Introspectable") +- api = introsp.Introspect () +- top = xml.etree.ElementTree.XML (api) +- for interface in top.findall ("interface"): +- if interface.attrib.get ("name") != "org.freedesktop.PackageKit": +- continue +- +- for method in interface.findall ("method"): +- if method.attrib.get ("name") != "InstallPackageName": +- continue ++ for dir in os.environ.get ("PATH", "").split (":"): ++ path = dir + os.path.sep + "gpk-install-package-name" ++ if os.access (path, os.X_OK): ++ self.gpk_install_package_name = path ++ return + +- num_args = len (method.findall ("arg")) +- break +- +- if num_args == -1: +- raise RuntimeError, "Introspection failed for PackageKit" +- +- self.proxy = dbus.Interface (obj, "org.freedesktop.PackageKit") +- self.num_args = num_args ++ raise RuntimeError, "No gpk-install-package-name program available" + + def InstallPackageName (self, xid, timestamp, name): +- proxy = self.proxy +- if self.num_args == 3: +- return proxy.InstallPackageName (xid, timestamp, name, +- reply_handler=self.reply_handler, +- error_handler=self.error_handler) +- else: +- # Old PackageKit interface +- return proxy.InstallPackageName (name, +- reply_handler=self.reply_handler, +- error_handler=self.error_handler) +- +- def reply_handler (self, *args): +- pass +- +- def error_handler (self, *args): +- pass ++ glib.spawn_async ([self.gpk_install_package_name, name]) diff --git a/system-config-printer-stopped-jobs.patch b/system-config-printer-stopped-jobs.patch new file mode 100644 index 0000000..a0e0c1f --- /dev/null +++ b/system-config-printer-stopped-jobs.patch @@ -0,0 +1,15 @@ +diff -up system-config-printer-1.1.8/jobviewer.py.stopped-jobs system-config-printer-1.1.8/jobviewer.py +--- system-config-printer-1.1.8/jobviewer.py.stopped-jobs 2009-06-17 18:39:51.000000000 +0100 ++++ system-config-printer-1.1.8/jobviewer.py 2009-07-03 18:08:28.040995881 +0100 +@@ -1375,7 +1375,10 @@ class JobViewer (GtkGUI, monitor.Watcher + self.notify_completed_job (jobid) + + # Look out for stopped jobs. +- if (self.trayicon and eventname == 'job-stopped' and ++ if (self.trayicon and ++ (eventname == 'job-stopped' or ++ (eventname == 'job-state-changed' and ++ event['job-state'] == cups.IPP_JOB_STOPPED))and + not jobid in self.stopped_job_prompts): + # Why has the job stopped? It might be due to a job error + # of some sort, or it might be that the backend requires diff --git a/system-config-printer.spec b/system-config-printer.spec index 7cf9dc4..6e5ab24 100644 --- a/system-config-printer.spec +++ b/system-config-printer.spec @@ -7,7 +7,7 @@ Summary: A printer administration tool Name: system-config-printer Version: 1.1.8 -Release: 3%{?dist} +Release: 5%{?dist} License: GPLv2+ URL: http://cyberelk.net/tim/software/system-config-printer/ Group: System Environment/Base @@ -21,6 +21,10 @@ Patch4: system-config-printer-remote-location-field.patch Patch5: system-config-printer-nmblookup-failure.patch Patch6: system-config-printer-properties-cancel.patch Patch7: system-config-printer-incorrect-auth.patch +Patch8: system-config-printer-packagekit.patch +Patch9: system-config-printer-stopped-jobs.patch +Patch10: system-config-printer-gutenprint.patch +Patch11: system-config-printer-arrows.patch BuildRequires: cups-devel >= 1.2 BuildRequires: python-devel >= 2.4 @@ -77,6 +81,10 @@ the configuration tool. %patch5 -p1 -b .nmblookup-failure %patch6 -p1 -b .properties-cancel %patch7 -p1 -b .incorrect-auth +%patch8 -p1 -b .packagekit +%patch9 -p1 -b .stopped-jobs +%patch10 -p1 -b .gutenprint +%patch11 -p1 -b .arrows %build %configure @@ -179,6 +187,13 @@ rm -rf %buildroot exit 0 %changelog +* Fri Jul 3 2009 Tim Waugh 1.1.8-5 +- Use gpk-install-package-name instead of trying to use the D-Bus API. +- Spot stopped jobs with CUPS 1.4 as well (trac #177). This, along + with the previous fix, addresses bug #509177. +- Map gutenprint filenames to the package name. +- Fixed sensitivity of class member selection arrows (bug #508653). + * Thu Jun 25 2009 Tim Waugh 1.1.8-3 - Use correct 'location' field for printers added remotely. - Parse nmblookup failures correctly in troubleshooter.