~ubuntu-branches/ubuntu/vivid/system-config-printer/vivid

« back to all changes in this revision

Viewing changes to system-config-printer.py

  • Committer: Package Import Robot
  • Author(s): Till Kamppeter
  • Date: 2014-07-06 09:41:43 UTC
  • mfrom: (1.1.81)
  • Revision ID: package-import@ubuntu.com-20140706094143-yvp3kzo7ti1ghih8
Tags: 1.4.5+20140706-0ubuntu1
* New upstream release
   o GIT 1.4.x snapshot from 6 July 2014
   o Some codec fixes
   o Traceback fixes
   o IPv6 address entry fix
   o Auth info saving improvement
   o Some loop/hang bug fixes
   o Use LockButton for fewer auth dialogs
* 30_newprinter-driver-download-override-false-error-alarm.patch,
  33_dont-use-hp-makeuri-with-non-hp-printers.patch:
  Removed, included upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
import sys, os, time, re
28
28
import thread
29
29
import dbus
 
30
try:
 
31
    from gi.repository import Polkit
 
32
except:
 
33
    Polkit = False
 
34
 
30
35
from gi.repository import GdkPixbuf
31
36
try:
32
37
    from gi.repository import Gdk
159
164
        self.updating_widgets = False
160
165
        self.getWidgets({"PrintersWindow":
161
166
                             ["PrintersWindow",
 
167
                              "hboxMenuBar",
162
168
                              "view_area_vbox",
163
169
                              "view_area_scrolledwindow",
164
170
                              "dests_notebook",
200
206
 
201
207
        Gtk.Window.set_default_icon_name ('printer')
202
208
 
 
209
        edit_action = 'org.opensuse.cupspkhelper.mechanism.all-edit'
 
210
        if Polkit:
 
211
            self.edit_permission = Polkit.Permission.new_sync (edit_action,
 
212
                                                               None, None)
 
213
        else:
 
214
            self.edit_permission = None
 
215
 
 
216
        self.unlock_button = Gtk.LockButton ()
 
217
        if self.edit_permission != None:
 
218
            self.edit_permission.connect ("notify::allowed",
 
219
                                          self.polkit_permission_changed)
 
220
 
 
221
        self.unlock_button.connect ("notify::permission",
 
222
                                    self.polkit_permission_changed)
 
223
        self.hboxMenuBar.pack_start (self.unlock_button, False, False, 12)
 
224
 
203
225
        # Printer Actions
204
226
        printer_manager_action_group = \
205
 
            Gtk.ActionGroup ("PrinterManagerActionGroup")
 
227
            Gtk.ActionGroup (name="PrinterManagerActionGroup")
206
228
        printer_manager_action_group.add_actions ([
207
229
                ("connect-to-server", Gtk.STOCK_CONNECT, _("_Connect..."),
208
230
                 None, _("Choose a different CUPS server"),
452
474
        self.setConnected()
453
475
 
454
476
        if len (self.printers) > 4:
455
 
            self.PrintersWindow.set_default_size (720, 330)
 
477
            self.PrintersWindow.set_default_size (720, 345)
456
478
        elif len (self.printers) > 2:
457
 
            self.PrintersWindow.set_default_size (500, 330)
 
479
            self.PrintersWindow.set_default_size (500, 345)
458
480
        elif len (self.printers) > 1:
459
 
            self.PrintersWindow.set_default_size (500, 165)
 
481
            self.PrintersWindow.set_default_size (500, 180)
460
482
 
461
483
 
462
484
        self.PrintersWindow.show()
593
615
 
594
616
        self.ui_manager.get_action ("/create-class").set_sensitive (n > 1)
595
617
 
 
618
        self.polkit_permission_changed (None, None)
596
619
        self.updating_widgets = False
597
620
 
598
621
    def dests_iconview_popup_menu (self, iconview):
701
724
                                  self.cups_connection_error)
702
725
            self.monitor.connect ('cups-connection-recovered',
703
726
                                  self.cups_connection_recovered)
704
 
            self.monitor.refresh ()
 
727
            GObject.idle_add (self.monitor.refresh)
705
728
            self.propertiesDlg.set_monitor (self.monitor)
706
729
 
 
730
        if connected:
 
731
            if self.cups._using_polkit ():
 
732
                self.unlock_button.set_permission (self.edit_permission)
 
733
            else:
 
734
                self.unlock_button.set_permission (None)
 
735
 
 
736
        else:
 
737
            self.unlock_button.set_permission (None)
 
738
 
 
739
    def polkit_permission_changed (self, widget, UNUSED):
 
740
        permission = self.unlock_button.get_permission ()
 
741
        if permission:
 
742
            can_edit = permission.get_allowed ()
 
743
        else:
 
744
            can_edit = True
 
745
 
 
746
        self.btnNew.set_sensitive (can_edit)
 
747
        self.btnAddFirstPrinter.set_sensitive (can_edit)
 
748
        for action in ["/server-settings",
 
749
                       "/new-printer",
 
750
                       "/new-class",
 
751
                       "/rename-printer",
 
752
                       "/duplicate-printer",
 
753
                       "/delete-printer",
 
754
                       "/edit-printer",
 
755
                       "/create-class",
 
756
                       "/enable-printer",
 
757
                       "/share-printer"]:
 
758
            act = self.ui_manager.get_action (action)
 
759
            act.set_sensitive (can_edit)
 
760
 
707
761
    def getServers(self):
708
762
        self.servers.discard(None)
709
763
        known_servers = list(self.servers)
1274
1328
        """
1275
1329
        preserved_jobs = self.printers[name].jobsPreserved(limit=1)
1276
1330
        if len (preserved_jobs) > 0:
1277
 
            dialog = Gtk.MessageDialog (self.PrintersWindow,
1278
 
                                        Gtk.DialogFlags.MODAL |
1279
 
                                        Gtk.DialogFlags.DESTROY_WITH_PARENT,
1280
 
                                        Gtk.MessageType.WARNING,
1281
 
                                        Gtk.ButtonsType.OK_CANCEL,
1282
 
                                        _("Renaming will lose history"))
 
1331
            dialog = Gtk.MessageDialog (parent=self.PrintersWindow,
 
1332
                                        flags=Gtk.DialogFlags.MODAL |
 
1333
                                              Gtk.DialogFlags.DESTROY_WITH_PARENT,
 
1334
                                        message_type=Gtk.MessageType.WARNING,
 
1335
                                        buttons=Gtk.ButtonsType.OK_CANCEL,
 
1336
                                        message_format=_("Renaming will lose history"))
1283
1337
 
1284
1338
            dialog.format_secondary_text (_("Completed jobs will no longer "
1285
1339
                                            "be available for re-printing."))
1568
1622
                itr = model.get_iter (path)
1569
1623
                name = model.get_value (itr, 2).decode ('utf-8')
1570
1624
                to_delete.append (name)
1571
 
 
1572
 
        dialog = Gtk.MessageDialog(self.PrintersWindow,
1573
 
                                   Gtk.DialogFlags.DESTROY_WITH_PARENT |
1574
 
                                   Gtk.DialogFlags.MODAL,
1575
 
                                   Gtk.MessageType.WARNING,
1576
 
                                   Gtk.ButtonsType.NONE,
1577
 
                                   message_format)
 
1625
        dialog = Gtk.MessageDialog(parent=self.PrintersWindow,
 
1626
                                   flags=Gtk.DialogFlags.DESTROY_WITH_PARENT |
 
1627
                                         Gtk.DialogFlags.MODAL,
 
1628
                                   message_type=Gtk.MessageType.WARNING,
 
1629
                                   buttons=Gtk.ButtonsType.NONE,
 
1630
                                   message_format=message_format)
1578
1631
        dialog.add_buttons (Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT,
1579
1632
                            Gtk.STOCK_DELETE, Gtk.ResponseType.ACCEPT)
1580
1633
        dialog.set_default_response (Gtk.ResponseType.REJECT)
1800
1853
                       "/filter-manufacturer"]:
1801
1854
            self.ui_manager.get_action (action).set_sensitive (sensitive)
1802
1855
 
 
1856
        self.polkit_permission_changed (None, None)
 
1857
 
1803
1858
    def desensitise_main_window_widgets (self):
1804
1859
        self.sensitise_main_window_widgets (False)
1805
1860
 
1828
1883
        self.btnAddFirstPrinter.set_sensitive (sensitive)
1829
1884
        self.ui_manager.get_action ("/new-printer").set_sensitive (sensitive)
1830
1885
        self.ui_manager.get_action ("/new-class").set_sensitive (sensitive)
 
1886
        self.polkit_permission_changed (None, None)
1831
1887
 
1832
1888
    def desensitise_new_printer_widgets(self):
1833
1889
        self.sensitise_new_printer_widgets (False)
1898
1954
 
1899
1955
        # Finally, suggest printing a test page.
1900
1956
        if self.propertiesDlg.ppd:
1901
 
            q = Gtk.MessageDialog (self.PrintersWindow,
1902
 
                                   Gtk.DialogFlags.DESTROY_WITH_PARENT |
1903
 
                                   Gtk.DialogFlags.MODAL,
1904
 
                                   Gtk.MessageType.QUESTION,
1905
 
                                   Gtk.ButtonsType.NONE,
1906
 
                                   _("Would you like to print a test page?"))
 
1957
            q = Gtk.MessageDialog (parent=self.PrintersWindow,
 
1958
                                   flags=Gtk.DialogFlags.DESTROY_WITH_PARENT |
 
1959
                                         Gtk.DialogFlags.MODAL,
 
1960
                                   message_type=Gtk.MessageType.QUESTION,
 
1961
                                   buttons=Gtk.ButtonsType.NONE,
 
1962
                                   message_format=_("Would you like to print a test page?"))
1907
1963
            q.add_buttons (Gtk.STOCK_CANCEL, Gtk.ResponseType.NO,
1908
1964
                           _("Print Test Page"), Gtk.ResponseType.YES)
1909
1965
            response = q.run ()
2094
2150
def main(show_jobs):
2095
2151
    cups.setUser (os.environ.get ("CUPS_USER", cups.getUser()))
2096
2152
    Gdk.threads_init ()
2097
 
    GObject.threads_init()
2098
2153
    from dbus.glib import DBusGMainLoop
2099
2154
    DBusGMainLoop (set_as_default=True)
2100
2155