All pastes #1514772 Raw Edit

Printer.py

public python v1 · immutable
#1514772 ·published 2009-08-01 12:40 UTC
rendered paste body
from gettext import gettext as _import loggingimport shaimport socketimport structimport gtkimport gobjectimport gconfimport dbusfrom sugar.graphics.icon import get_icon_statefrom sugar.graphics import stylefrom sugar.graphics.palette import Palettefrom sugar.graphics.toolbutton import ToolButtonfrom sugar.graphics.tray import TrayIconfrom sugar.graphics import xocolorfrom sugar.util import unique_idfrom jarabe.model import networkfrom jarabe.model.network import Settingsfrom jarabe.model.network import IP4Configfrom jarabe.frame.frameinvoker import FrameWidgetInvokerfrom jarabe.view.pulsingicon import PulsingIcon_HAL_SERVICE = 'org.freedesktop.Hal'_HAL_IFACE = 'org.freedesktop.Hal.Manager'_HAL_PATH = '/org/freedesktop/Hal/Manager'_PRINTER_SERVICE = 'org.freedesktop.Hal'_PRINTER_PATH = ''_PRINTER_IFACE = 'org.freedesktop.Hal.Device'#_PRINTER_DEVICE_IFACE = 'org.freedesktop.NetworkManager.Device'_ICON_NAME = 'network-wired'class PrinterPalette(Palette):    __gtype_name__ = 'SugarPrinterPalette'    def __init__(self,name):        from printscript import *        cups = serverConnection()        self.completedjobsDict = cups._getCompletedJobQueue()        self.livejobsDict = cups._getLiveJobQueue()        self.completedjobsKeys = self.completedjobsDict.getkeys()        self.livejobsKeys = self.livejobsDict.getkeys()                 Palette.__init__(self, label=_('Printer'))        self._info = gtk.VBox()                sw = gtk.ScrolledWindow()        sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)                self._info.pack_start(sw, True, True, 0)        store = self.create_model()        treeView = gtk.TreeView(store)        treeView.connect("row-activated", self.on_activated)        treeView.set_rules_hint(True)        sw.add(treeView)        self.create_columns(treeView)        self._speed_label = gtk.Label()        self._speed_label.props.xalign = 0.0        self._speed_label.show()        #self._ip_address_label = gtk.Label()        treeview = gtk.TreeView(ListStore)              self._info.pack_start(_padded(self._speed_label))        #self._info.pack_start(_padded(self._ip_address_label))        self._info.show_all()        self.set_content(self._info)        self.props.secondary_text = name        def create_columns(self, treeView):            rendererText = gtk.CellRendererText()        column = gtk.TreeViewColumn("Name", rendererText, text=0)        column.set_sort_column_id(0)            treeView.append_column(column)                rendererText = gtk.CellRendererText()        column = gtk.TreeViewColumn("Place", rendererText, text=1)        column.set_sort_column_id(1)        treeView.append_column(column)        rendererText = gtk.CellRendererText()        column = gtk.TreeViewColumn("Year", rendererText, text=2)        column.set_sort_column_id(2)        treeView.append_column(column)        def on_activated(self, widget, row, col):                model = widget.get_model()        text = model[row][0] + ", " + model[row][1] + ", " + model[row][2]        self.statusbar.push(0, text)class PrinterDeviceView(TrayIcon):        FRAME_POSITION_RELATIVE = 301    def __init__(self,name):        client = gconf.client_get_default()        color = xocolor.XoColor(client.get_string('/desktop/sugar/user/color'))        TrayIcon.__init__(self, icon_name=_ICON_NAME, xo_color=color)        self.set_palette_invoker(FrameWidgetInvoker(self))        self._palette = PrinterPalette(name)        self.set_palette(self._palette)        self._palette.set_group_id('frame')        logging.debug('I come from PrinterDeviceView')class PrinterManagerObserver(object):    def __init__(self, tray):        self._bus = dbus.SystemBus()        #self._devices = {}        self._halmgr = None        self._tray = tray        try:            obj = self._bus.get_object(_HAL_SERVICE, _HAL_PATH)            self._halmgr = dbus.Interface(obj, _HAL_IFACE)        except dbus.DBusException:            logging.error('%s service not available', _HAL_SERVICE)            return        try:            printerLoc = self._halmgr.FindDeviceByCapability('printer')[0]        except AttributeError:            logging.debug('No Print Device found')            return         self.PrinterObj = self._bus.get_object(_PRINTER_SERVICE,printerLoc)        self.printeriface = dbus.Interface(self.PrinterObj, _PRINTER_IFACE)        self.properties = self.printeriface.GetAllProperties()        self.headerString = self.properties[u'info.vendor']+' '+self.properties[u'info.product']        logging.debug('Print Device found %s',self.headerString)        self._device_view = PrinterDeviceView(self.headerString)        self._tray.add_device(self._device_view)def setup(tray):    device_observer = PrinterManagerObserver(tray)