Il pulsante stampa cambia etichetta durante la stampa per comunicare all'utente

Leonardo [2010-05-09 09:58]
Il pulsante stampa cambia etichetta durante la stampa per comunicare all'utente
che sta facendo qualcosa.
Filename
DrPrintBackend.py
DrPrintGui/Input.py
DrPrintGui/MainWin.py
debian/changelog
diff --git a/DrPrintBackend.py b/DrPrintBackend.py
index 4884615..867396e 100644
--- a/DrPrintBackend.py
+++ b/DrPrintBackend.py
@@ -35,6 +35,8 @@ class Backend(gobject.GObject):
                            password=password)
         except paramiko.AuthenticationException, e:
             raise PrintingError('Autenticazione fallita')
+        except Exception, e:
+            raise PrintingError('Connessione fallita (%s)' % e)

         t = client.get_transport()
         sftp = paramiko.SFTPClient.from_transport(t)
diff --git a/DrPrintGui/Input.py b/DrPrintGui/Input.py
index 4ff017e..5b2b07a 100644
--- a/DrPrintGui/Input.py
+++ b/DrPrintGui/Input.py
@@ -1,4 +1,5 @@
 ## This library provides User Input fields
+# -*- coding: utf-8 -*-

 import gtk, pygtk, gobject, os

@@ -91,6 +92,18 @@ class PrintButton(gtk.Button):

         gtk.Button.__init__(self, "Stampa")

+    def set_state(self, state):
+        if state is "idle":
+            self.set_label ("Stampa")
+        elif state is "printing":
+            self.set_label ("Stampa in corso")
+            # Questa è una sporca soluzione per fare in modo che
+            # il cambio di stato si veda.
+            while gtk.events_pending():
+                gtk.main_iteration (False)
+        else:
+            raise RuntimeError('Invalid state %s' % state)
+

 class SelectFileWidget(gtk.HBox):

diff --git a/DrPrintGui/MainWin.py b/DrPrintGui/MainWin.py
index 9182372..426a8e6 100644
--- a/DrPrintGui/MainWin.py
+++ b/DrPrintGui/MainWin.py
@@ -124,6 +124,10 @@ class MainWin(gtk.Window):

     def print_button_clicked_callback(self, widget):
         if not self.backend == None:
+
+            # Comunichiamo all'utente che qualcosa sta succedendo
+            self.print_button.set_state ("printing")
+
             printer = self.printer_settings_block.get_printer()
             username = self.auth_block.get_username()
             password = self.auth_block.get_password()
@@ -173,6 +177,8 @@ Se vuoi continuare premi OK")
                                         % (filename, printer))
                     dialog.run()
                     dialog.destroy()
+
+            self.print_button.set_state("idle")
         else:
             self.debug( "Sembra che non ci sia un backend attaccato\
  a questa interfaccia, quindi non faccio nulla")
diff --git a/debian/changelog b/debian/changelog
index 70d89d8..09310d6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+drprint (0.8-3) lucid; urgency=low
+
+  * Il pulsante Stampa cambia etichetta durante la stampa
+
+ -- Leonardo Robol <leonardo@debby>  Sun, 09 May 2010 11:57:58 +0200
+
+drprint (0.8-2) karmic; urgency=low
+
+  * Corrette incongruenze nella gestione degli errori
+
+ -- Leonardo Robol <leonardo@debby>  Wed, 10 Feb 2010 11:48:13 +0100
+
 drprint (0.8-1) karmic; urgency=low

   * Cambiato il backend. Ora non manda più il file in pipe,
ViewGit