[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