[SCM] KDE Admin module packaging branch, master, updated. debian/4.6.5-2-9-g1d91596
José Manuel Santamaría Lema
santa-guest at alioth.debian.org
Sat Nov 19 12:54:22 UTC 2011
The following commit has been merged in the master branch:
commit fb32e5bf19ff769126c9437e34e0bf7f6717dbc0
Author: José Manuel Santamaría Lema <panfaust at gmail.com>
Date: Sat Nov 19 12:50:33 2011 +0100
Add some files needed by system-config-printer-kde.
---
debian/changelog | 3 +
debian/ppdippstr.py | 183 +++++++++++++++++++++++++++
debian/pysmb.py | 200 ++++++++++++++++++++++++++++++
debian/smburi.py | 102 +++++++++++++++
debian/system-config-printer-kde.install | 3 +
5 files changed, 491 insertions(+), 0 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index fbadd41..8cb4a4d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -8,6 +8,9 @@ kdeadmin (4:4.7.1-0r1) UNRELEASED; urgency=low
* copyright-with-old-dh-make-debian-copyright
* kcron: capitalization-error-in-description kde KDE
+ [ José Manuel Santamaría Lema ]
+ * Add some files needed by system-config-printer-kde.
+
-- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org> Sun, 02 Oct 2011 14:07:07 +0100
kdeadmin (4:4.6.5-2) unstable; urgency=low
diff --git a/debian/ppdippstr.py b/debian/ppdippstr.py
new file mode 100644
index 0000000..a22e453
--- /dev/null
+++ b/debian/ppdippstr.py
@@ -0,0 +1,183 @@
+#!/usr/bin/python
+
+## system-config-printer
+
+## Copyright (C) 2008, 2009, 2010 Red Hat, Inc.
+## Authors:
+## Tim Waugh <twaugh at redhat.com>
+
+## 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
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+from gettext import gettext as _
+
+printer_error_policy = dict()
+printer_op_policy = dict()
+job_sheets = dict()
+job_options = dict()
+ppd = dict()
+backends = dict()
+
+class TranslationDict:
+ STR = {}
+
+ def __init__ (self, d):
+ self.STR = d
+
+ def get (self, str):
+ return self.STR.get (str, str)
+
+def init ():
+ ## IPP strings
+
+ # Names of printer error policies
+ global printer_error_policy
+ printer_error_policy = TranslationDict ({
+ "abort-job": _("Abort job"),
+ "retry-current-job": _("Retry current job"),
+ "retry-job": _("Retry job"),
+ "stop-printer": _("Stop printer")
+ })
+
+ # Names of printer operation policies
+ global printer_op_policy
+ printer_op_policy = TranslationDict ({
+ "default": _("Default behavior"),
+ "authenticated": _("Authenticated")
+ })
+
+ # Names of banner pages.
+ global job_sheets
+ job_sheets = TranslationDict ({
+ "none": _("None"),
+ "classified": _("Classified"),
+ "confidential": _("Confidential"),
+ "secret": _("Secret"),
+ "standard": _("Standard"),
+ "topsecret": _("Top secret"),
+ "unclassified": _("Unclassified")
+ })
+
+ # Names of job-hold-until values.
+ global job_options
+ job_options["job-hold-until"] = TranslationDict ({
+ "no-hold": _("No hold"),
+ "indefinite": _("Indefinite"),
+ "day-time": _("Daytime"),
+ "evening": _("Evening"),
+ "night": _("Night"),
+ "second-shift": _("Second shift"),
+ "third-shift": _("Third shift"),
+ "weekend": _("Weekend")
+ })
+
+ ## Common PPD strings
+
+ # Foomatic strings
+
+ # These are PPD option and group names and values.
+ global ppd
+ ppd = TranslationDict ({
+ "General": _("General"),
+
+ # HPIJS options
+ "Printout Mode": _("Printout mode"),
+ "Draft (auto-detect paper type)":
+ _("Draft (auto-detect-paper type)"),
+ "Draft Grayscale (auto-detect paper type)":
+ _("Draft grayscale (auto-detect-paper type)"),
+ "Normal (auto-detect paper type)":
+ _("Normal (auto-detect-paper type)"),
+ "Normal Grayscale (auto-detect paper type)":
+ _("Normal grayscale (auto-detect-paper type)"),
+ "High Quality (auto-detect paper type)":
+ _("High quality (auto-detect-paper type)"),
+ "High Quality Grayscale (auto-detect paper type)":
+ _("High quality grayscale (auto-detect-paper type)"),
+ "Photo (on photo paper)": _("Photo (on photo paper)"),
+ "Best Quality (color on photo paper)":
+ _("Best quality (color on photo paper)"),
+ "Normal Quality (color on photo paper)":
+ _("Normal quality (color on photo paper)"),
+
+ "Media Source": _("Media source"),
+ "Printer default": _("Printer default"),
+ "Photo Tray": _("Photo tray"),
+ "Upper Tray": _("Upper tray"),
+ "Lower Tray": _("Lower tray"),
+ "CD or DVD Tray": _("CD or DVD tray"),
+ "Envelope Feeder": _("Envelope feeder"),
+ "Large Capacity Tray": _("Large capacity tray"),
+ "Manual Feeder": _("Manual feeder"),
+ "Multi Purpose Tray": _("Multi-purpose tray"),
+
+ "Page Size": _("Page size"),
+ "Custom": _("Custom"),
+ "Photo or 4x6 inch index card": _("Photo or 4x6 inch index card"),
+ "Photo or 5x7 inch index card": _("Photo or 5x7 inch index card"),
+ "Photo with tear-off tab": _("Photo with tear-off tab"),
+ "3x5 inch index card": _("3x5 inch index card"),
+ "5x8 inch index card": _("5x8 inch index card"),
+ "A6 with tear-off tab": _("A6 with tear-off tab"),
+ "CD or DVD 80 mm": _("CD or DVD 80mm"),
+ "CD or DVD 120 mm": _("CD or DVD 120mm"),
+
+ "Double-Sided Printing": _("Double-sided printing"),
+ "Long Edge (Standard)": _("Long edge (standard)"),
+ "Short Edge (Flip)": _("Short edge (flip)"),
+ "Off": _("Off"),
+
+ "Resolution, Quality, Ink Type, Media Type":
+ _("Resolution, quality, ink type, media type"),
+ "Controlled by 'Printout Mode'": _("Controlled by 'Printout mode'"),
+ "300 dpi, Color, Black + Color Cartr.":
+ _("300 dpi, color, black + color cartridge"),
+ "300 dpi, Draft, Color, Black + Color Cartr.":
+ _("300 dpi, draft, color, black + color cartridge"),
+ "300 dpi, Draft, Grayscale, Black + Color Cartr.":
+ _("300 dpi, draft, grayscale, black + color cartridge"),
+ "300 dpi, Grayscale, Black + Color Cartr.":
+ _("300 dpi, grayscale, black + color cartridge"),
+ "600 dpi, Color, Black + Color Cartr.":
+ _("600 dpi, color, black + color cartridge"),
+ "600 dpi, Grayscale, Black + Color Cartr.":
+ _("600 dpi, grayscale, black + color cartridge"),
+ "600 dpi, Photo, Black + Color Cartr., Photo Paper":
+ _("600 dpi, photo, black + color cartridge, photo paper"),
+ "600 dpi, Color, Black + Color Cartr., Photo Paper, Normal":
+ _("600 dpi, color, black + color cartridge, photo paper, normal"),
+ "1200 dpi, Photo, Black + Color Cartr., Photo Paper":
+ _("1200 dpi, photo, black + color cartridge, photo paper"),
+ })
+
+ ## Common backend descriptions
+ global backends
+ backends = TranslationDict ({
+ "Internet Printing Protocol (ipp)":
+ _("Internet Printing Protocol (ipp)"),
+ "Internet Printing Protocol (http)":
+ _("Internet Printing Protocol (http)"),
+ "Internet Printing Protocol (https)":
+ _("Internet Printing Protocol (https)"),
+ "LPD/LPR Host or Printer":
+ _("LPD/LPR Host or Printer"),
+ "AppSocket/HP JetDirect":
+ _("AppSocket/HP JetDirect"),
+ "Serial Port #1":
+ _("Serial Port #1"),
+ "LPT #1":
+ _("LPT #1"),
+ "Windows Printer via SAMBA":
+ _("Windows Printer via SAMBA"),
+ })
diff --git a/debian/pysmb.py b/debian/pysmb.py
new file mode 100644
index 0000000..ab93b73
--- /dev/null
+++ b/debian/pysmb.py
@@ -0,0 +1,200 @@
+#!/usr/bin/python
+
+## system-config-printer
+## CUPS backend
+
+## Copyright (C) 2002, 2003, 2006, 2007, 2008, 2010 Red Hat, Inc.
+## Authors:
+## Tim Waugh <twaugh at redhat.com>
+
+## 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
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+import errno
+from gettext import gettext as _
+import gobject
+import gtk
+import os
+import pwd
+import smbc
+from debug import *
+
+class _None(RuntimeError):
+ pass
+
+try:
+ NoEntryError = smbc.NoEntryError
+ PermissionError = smbc.PermissionError
+ ExistsError = smbc.ExistsError
+ NotEmptyError = smbc.NotEmptyError
+ TimedOutError = smbc.TimedOutError
+ NoSpaceError = smbc.NoSpaceError
+except AttributeError:
+ NoEntryError = PermissionError = ExistsError = _None
+ NotEmptyError = TimedOutError = NoSpaceError = _None
+
+class AuthContext:
+ def __init__ (self, parent=None, workgroup='', user='', passwd=''):
+ self.passes = 0
+ self.has_failed = False
+ self.auth_called = False
+ self.tried_guest = False
+ self.cancel = False
+ self.use_user = user
+ self.use_password = passwd
+ self.use_workgroup = workgroup
+ self.dialog_shown = False
+ self.parent = parent
+
+ def perform_authentication (self):
+ self.passes += 1
+ if self.passes == 1:
+ return 1
+
+ if not self.has_failed:
+ return 0
+
+ debugprint ("pysmb: authentication pass: %d" % self.passes)
+ if not self.auth_called:
+ debugprint ("pysmb: auth callback not called?!")
+ self.cancel = True
+ return 0
+
+ self.has_failed = False
+ if self.auth_called and not self.tried_guest:
+ self.use_user = 'guest'
+ self.use_password = ''
+ self.tried_guest = True
+ debugprint ("pysmb: try auth as guest")
+ return 1
+
+ self.auth_called = False
+
+ if self.dialog_shown:
+ d = gtk.MessageDialog (self.parent,
+ gtk.DIALOG_MODAL |
+ gtk.DIALOG_DESTROY_WITH_PARENT,
+ gtk.MESSAGE_ERROR,
+ gtk.BUTTONS_CLOSE)
+ d.set_title (_("Not authorized"))
+ d.set_markup ('<span weight="bold" size="larger">' +
+ _("Not authorized") + '</span>
' +
+ _("The password may be incorrect."))
+ d.run ()
+ d.destroy ()
+
+ # After that, prompt
+ d = gtk.Dialog (_("Authentication"), self.parent,
+ gtk.DIALOG_MODAL | gtk.DIALOG_NO_SEPARATOR,
+ (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
+ gtk.STOCK_OK, gtk.RESPONSE_OK))
+ d.set_default_response (gtk.RESPONSE_OK)
+ d.set_border_width (6)
+ d.set_resizable (False)
+ hbox = gtk.HBox (False, 12)
+ hbox.set_border_width (6)
+ image = gtk.Image ()
+ image.set_from_stock (gtk.STOCK_DIALOG_AUTHENTICATION,
+ gtk.ICON_SIZE_DIALOG)
+ hbox.pack_start (image, False, False, 0)
+ vbox = gtk.VBox (False, 12)
+ label = gtk.Label ('<span weight="bold" size="larger">' +
+ _("You must log in to access %s.") % self.for_server +
+ '</span>')
+ label.set_use_markup (True)
+ label.set_alignment (0, 0)
+ label.set_line_wrap (True)
+ vbox.pack_start (label, False, False, 0)
+
+ table = gtk.Table (3, 2)
+ table.set_row_spacings (6)
+ table.set_col_spacings (6)
+ table.attach (gtk.Label (_("Username:")), 0, 1, 0, 1, 0, 0)
+ username_entry = gtk.Entry ()
+ table.attach (username_entry, 1, 2, 0, 1, 0, 0)
+ table.attach (gtk.Label (_("Domain:")), 0, 1, 1, 2, 0, 0)
+ domain_entry = gtk.Entry ()
+ table.attach (domain_entry, 1, 2, 1, 2, 0, 0)
+ table.attach (gtk.Label (_("Password:")), 0, 1, 2, 3, 0, 0)
+ password_entry = gtk.Entry ()
+ password_entry.set_activates_default (True)
+ password_entry.set_visibility (False)
+ table.attach (password_entry, 1, 2, 2, 3, 0, 0)
+ vbox.pack_start (table, False, False, 0)
+ hbox.pack_start (vbox, False, False, 0)
+ d.vbox.pack_start (hbox)
+ self.dialog_shown = True
+ d.show_all ()
+ d.show_now ()
+
+ if self.use_user == 'guest':
+ self.use_user = pwd.getpwuid (os.getuid ())[0]
+ debugprint ("pysmb: try as %s" % self.use_user)
+ username_entry.set_text (self.use_user)
+ domain_entry.set_text (self.use_workgroup)
+
+ d.set_keep_above (True)
+ gtk.gdk.pointer_grab (d.window, True)
+ gtk.gdk.keyboard_grab (d.window, True)
+ response = d.run ()
+ gtk.gdk.keyboard_ungrab ()
+ gtk.gdk.pointer_ungrab ()
+
+ if response == gtk.RESPONSE_CANCEL:
+ self.cancel = True
+ d.destroy ()
+ return -1
+
+ self.use_user = username_entry.get_text ()
+ self.use_password = password_entry.get_text ()
+ self.use_workgroup = domain_entry.get_text ()
+ d.destroy ()
+ return 1
+
+ def initial_authentication (self):
+ try:
+ context = smbc.Context ()
+ self.use_workgroup = context.workgroup
+ except:
+ pass
+
+ def failed (self, exc=None):
+ self.has_failed = True
+ debugprint ("pysmb: operation failed: %s" % repr (exc))
+
+ if exc:
+ if (self.cancel or
+ (type (exc) in [NoEntryError, ExistsError, NotEmptyError,
+ TimedOutError, NoSpaceError]) or
+ (type (exc) == RuntimeError and
+ not (exc.args[0] in [errno.EACCES, errno.EPERM]))):
+ raise exc
+
+ def callback (self, server, share, workgroup, user, password):
+ debugprint ("pysmb: got password callback")
+ self.auth_called = True
+ self.for_server = server
+ self.for_share = share
+ if self.passes == 1:
+ self.initial_authentication ()
+
+ if self.use_user:
+ if self.use_workgroup:
+ workgroup = self.use_workgroup
+
+ return (workgroup, self.use_user, self.use_password)
+
+ user = ''
+ password = ''
+ return (workgroup, user, password)
diff --git a/debian/smburi.py b/debian/smburi.py
new file mode 100644
index 0000000..9e4d499
--- /dev/null
+++ b/debian/smburi.py
@@ -0,0 +1,102 @@
+#!/usr/bin/python
+
+## system-config-printer
+
+## Copyright (C) 2006, 2007, 2008, 2009, 2011 Red Hat, Inc.
+## Copyright (C) 2006, 2007 Florian Festi <ffesti at redhat.com>
+## Copyright (C) 2006, 2007, 2008, 2009 Tim Waugh <twaugh at redhat.com>
+
+## 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
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+import urllib
+
+def urlquote (x):
+ q = urllib.quote (x)
+ for c in ["/", "@", ":"]:
+ q = q.replace (c, "%%%02X" % ord (c))
+
+ return q
+
+class SMBURI:
+ def __init__ (self,
+ uri=None,
+ group='', host='', share='', user='', password=''):
+ if uri:
+ if group or host or share or user or password:
+ raise RuntimeError
+
+ if uri.startswith ("smb://"):
+ uri = uri[6:]
+
+ self.uri = uri
+ else:
+ self.uri = self._construct (group, host, share,
+ user=user, password=password)
+
+ def _construct (self, group, host, share, user='', password=''):
+ uri_password = ''
+ if password:
+ uri_password = ':' + urlquote (password)
+ if user:
+ uri_password += '@'
+ uri = "%s%s%s" % (urlquote (user),
+ uri_password,
+ urlquote (group))
+ if len (group) > 0:
+ uri += '/'
+ uri += urlquote (host)
+ if len (share) > 0:
+ uri += "/" + urlquote (share)
+ return uri
+
+ def get_uri (self):
+ return self.uri
+
+ def sanitize_uri (self):
+ group, host, share, user, password = self.separate ()
+ return self._construct (group, host, share)
+
+ def separate (self):
+ uri = self.get_uri ()
+ user = ''
+ password = ''
+ auth = uri.find ('@')
+ if auth != -1:
+ u = uri[:auth].find(':')
+ if u != -1:
+ user = uri[:u]
+ password = uri[u + 1:auth]
+ else:
+ user = uri[:auth]
+ uri = uri[auth + 1:]
+ sep = uri.count ('/')
+ group = ''
+ if sep == 2:
+ g = uri.find('/')
+ group = uri[:g]
+ uri = uri[g + 1:]
+ if sep < 1:
+ host = ''
+ else:
+ h = uri.find('/')
+ host = uri[:h]
+ uri = uri[h + 1:]
+ p = host.find(':')
+ if p != -1:
+ host = host[:p]
+ share = uri
+ return (urllib.unquote (group), urllib.unquote (host),
+ urllib.unquote (share),
+ urllib.unquote (user), urllib.unquote (password))
diff --git a/debian/system-config-printer-kde.install b/debian/system-config-printer-kde.install
index 633630a..438f0e8 100644
--- a/debian/system-config-printer-kde.install
+++ b/debian/system-config-printer-kde.install
@@ -8,3 +8,6 @@ usr/share/kde4/apps/system-config-printer-kde/smb-browse-dialog.ui
usr/share/kde4/apps/system-config-printer-kde/system-config-printer-kde.py
usr/share/kde4/apps/system-config-printer-kde/system-config-printer.ui
usr/share/kde4/services/system-config-printer-kde.desktop
+debian/ppdippstr.py usr/share/kde4/apps/system-config-printer-kde/
+debian/pysmb.py usr/share/kde4/apps/system-config-printer-kde/
+debian/smburi.py usr/share/kde4/apps/system-config-printer-kde/
--
KDE Admin module packaging
More information about the pkg-kde-commits
mailing list