Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/printer1.py
diff options
context:
space:
mode:
Diffstat (limited to 'printer1.py')
-rwxr-xr-xprinter1.py237
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)