home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / python2.4 / site-packages / AppInstall / PackageWorker.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  3.4 KB  |  95 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. import apt_pkg
  5. import subprocess
  6. import gtk
  7. import thread
  8. import time
  9. import os
  10. import tempfile
  11. from gettext import gettext as _
  12.  
  13. class PackageWorker:
  14.     '''
  15.     A class which does the actual package installing/removing.
  16.     '''
  17.     (INSTALL, UPDATE) = range(2)
  18.     
  19.     def run_synaptic(self, id, lock, to_add = None, to_rm = None, action = INSTALL):
  20.         cmd = [
  21.             '/usr/bin/gksu',
  22.             '--desktop',
  23.             '/usr/share/applications/synaptic.desktop',
  24.             '--',
  25.             '/usr/sbin/synaptic',
  26.             '--hide-main-window',
  27.             '--non-interactive',
  28.             '--parent-window-id',
  29.             '%s' % id]
  30.         f = tempfile.NamedTemporaryFile()
  31.         if action == self.INSTALL:
  32.             for item in to_add:
  33.                 f.write('%s\tinstall\n' % item.pkgname)
  34.             
  35.             for item in to_rm:
  36.                 f.write('%s\tuninstall\n' % item.pkgname)
  37.             
  38.             cmd.append('--set-selections-file')
  39.             cmd.append('%s' % f.name)
  40.             f.flush()
  41.         elif action == self.UPDATE:
  42.             cmd.append('--update-at-startup')
  43.         
  44.         self.return_code = subprocess.call(cmd)
  45.         lock.release()
  46.         f.close()
  47.  
  48.     
  49.     def plug_removed(self, w, .4):
  50.         (win, socket) = .4
  51.         win.hide()
  52.         return True
  53.  
  54.     
  55.     def plug_added(self, sock, win):
  56.         while gtk.events_pending():
  57.             win.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
  58.             win.show()
  59.             gtk.main_iteration()
  60.  
  61.     
  62.     def get_plugged_win(self, window_main):
  63.         win = gtk.Window()
  64.         win.realize()
  65.         win.window.set_functions(gtk.gdk.FUNC_MOVE)
  66.         win.set_border_width(6)
  67.         win.set_transient_for(window_main)
  68.         win.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
  69.         win.set_title('')
  70.         win.set_resizable(False)
  71.         win.set_property('skip-taskbar-hint', True)
  72.         win.set_property('skip-taskbar-hint', True)
  73.         win.connect('delete_event', (lambda e, w: True))
  74.         socket = gtk.Socket()
  75.         socket.show()
  76.         win.add(socket)
  77.         socket.connect('plug-added', self.plug_added, win)
  78.         socket.connect('plug-removed', self.plug_removed, (win, socket))
  79.         return (win, socket)
  80.  
  81.     
  82.     def perform_action(self, window_main, to_add = None, to_rm = None, action = INSTALL):
  83.         window_main.set_sensitive(False)
  84.         lock = thread.allocate_lock()
  85.         lock.acquire()
  86.         t = thread.start_new_thread(self.run_synaptic, (window_main.window.xid, lock, to_add, to_rm, action))
  87.         while lock.locked():
  88.             while gtk.events_pending():
  89.                 gtk.main_iteration()
  90.             time.sleep(0.050000000000000003)
  91.         window_main.set_sensitive(True)
  92.         return self.return_code
  93.  
  94.  
  95.