diff options
Diffstat (limited to 'printer1.py')
-rwxr-xr-x | printer1.py | 237 |
1 files changed, 0 insertions, 237 deletions
diff --git a/printer1.py b/printer1.py deleted file mode 100755 index a9e5b77..0000000 --- a/printer1.py +++ /dev/null @@ -1,237 +0,0 @@ -from gettext import gettext as _ -import logging -import sha -import socket -import struct - -import gtk -import gobject -import gconf -import dbus -import time -from datetime import date - -from sugar.graphics.icon import get_icon_state, Icon -from sugar.graphics import style -from sugar.graphics.palette import Palette -from sugar.graphics.toolbutton import ToolButton -from sugar.graphics.tray import TrayIcon -from sugar.graphics import xocolor -from sugar.util import unique_id -from sugar.graphics.menuitem import MenuItem -from sugar import profile -from jarabe.frame.frameinvoker import FrameWidgetInvoker - -from printscript import * - -_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' -_SPOOLER_PATH="/com/redhat/PrinterSpooler" -_SPOOLER_IFACE="com.redhat.PrinterSpooler" -#_PRINTER_DEVICE_IFACE = 'org.freedesktop.NetworkManager.Device' -_ICON_NAME = 'printer' - - -class PrinterPalette(Palette): - - def __init__(self,name,): - - Palette.__init__(self, label=_('Printer')) - - self._model = DeviceModel() - - - logging.debug("hey this is 1" ) - self._hbars = {} - self._indexToidmapper = [] - self.tryJobs() - self.props.secondary_text = name - self.connectEvents() - - def connectEvents(self): - for key in self._hbars.keys(): - self._hbars[key].connect('activate',self.cancel,key) - #logging.debug("hey this got deleted %s",key) - - def clearMenu(self): - for key in self._hbars.keys(): - self.menu.remove(self._hbars[key]) - del self._hbars[key] - - def tryJobs(self): - self.clearMenu() - self._jobids = self._model.GetLiveJobs()[0] - self._jobids.sort() - try: - for jobid in self._jobids: - logging.debug(self._model.GetJobStatus(jobid)) - status=self._model.GetJobStatus(jobid) - title = self._model.GetJobTitle(jobid) - self.createHBars(status,title,jobid) - self._indexToidmapper.append(jobid) - except TypeError: - pass - - def cancel(self,widget,key): - self._model.CancelAJob(key) - self.menu.remove(self._hbars[key]) - #self.connectEvents(self) - del self._hbars[key] - - def createHBars(self,status,title,jobid): - self._cancel = MenuItem('') - self._icon = Icon(icon_size=gtk.ICON_SIZE_MENU) - self._cancel.set_image(self._icon) - self._icon.props.icon_name = 'dialog-cancel' - self._cancel.get_child().set_text ('Document:' + title + '\n' + status) - self.menu.append(self._cancel) - - self._cancel.show() - self._hbars[jobid]= self._cancel - - def redraw(self): - logging.debug("I come from class 1") - self._model.update() - self.tryJobs() - self.connectEvents() - -class DeviceModel(): - def __init__(self): - - self._cups = serverConnection() - self.update() - - def GetLiveJobs(self,): - return [self.livejobsKeys, self.livejobsDict] - - def GetJobStatus(self,jobkey): - if self.livejobsDict[jobkey]["job-state"] == 5: - return "Processing" - elif self.livejobsDict[jobkey]["job-state"] == 3: - return "Pending" - else: - return "Cancelled" - def GetJobTitle(self,jobkey): - return self.livejobsDict[jobkey]["job-name"] - - def CancelAJob(self,jobkey): - logging.debug("lololol") - logging.debug(jobkey) - self._cups._cancelAJob(jobkey) - - def update(self,): - self.livejobsDict = self._cups._getLiveJobQueue() - self.livejobsKeys = self.livejobsDict.keys() - -class PrinterDeviceView(TrayIcon): - - - FRAME_POSITION_RELATIVE = 301 - - def __init__(self,name): - client = gconf.client_get_default() - - sh = sha.new() - data = profile.get_nick_name() - sh.update(data) - h = hash(sh.digest()) - idx = h % len(xocolor.colors) - - color = xocolor.XoColor('%s,%s' % (xocolor.colors[idx][0], - xocolor.colors[idx][1])) - - 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') - - def update_queue(self): - logging.debug("I come from class 2") - try: - gobject.source_remove(self.timer) - except AttributeError: - pass - - self.timer = gobject.timeout_add (500,self._palette.redraw) - #self._palette.redraw() -class PrinterManagerObserver(object): - def __init__(self, tray): - self._bus = dbus.SystemBus() - self._halmgr = None - self._tray = tray - self._devices = {} - - - 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 - - self.find_Printers() - - self._halmgr.connect_to_signal('DeviceAdded', - self.device_added) - self._halmgr.connect_to_signal('DeviceRemoved', - self.device_removed,) - - self._bus.add_signal_receiver (self.update_lists, - path=_SPOOLER_PATH, - dbus_interface=_SPOOLER_IFACE) - def update_lists(self,*agrs): - logging.debug("I come from class 3") - try: - gobject.source_remove(self.timer) - except AttributeError: - pass - #self._device_view.update_queue() - self.timer = gobject.timeout_add (200,self._device_view.update_queue) - - - def find_Printers(self): - try: - printerLocation = self._halmgr.FindDeviceByCapability('printer') - - except AttributeError and IndexError: - logging.debug('No Print Device found') - else: - for printerLoc in printerLocation: - self.device_added(printerLoc) - - - - def device_added(self, printerLoc ): - - self.PrinterObj = self._bus.get_object(_PRINTER_SERVICE,printerLoc)
- self.printeriface = dbus.Interface(self.PrinterObj, _PRINTER_IFACE) - try: - print self.printeriface.GetProperty('info.capabilities')[0] - except dbus.DBusException, IndexError: - return - 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) - self._devices[printerLoc] = self._device_view - - def device_removed(self, printerLoc): - logging.debug('No Print Device found, so Disconnecting Device') - #self._device_view.disconnect() - self._tray.remove_device(self._devices[printerLoc]) - del self._devices[printerLoc] - self._devices[printerLoc] = None - - - - -def setup(tray): - device_observer = PrinterManagerObserver(tray) |