home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.4)
-
- import apt_pkg
- import subprocess
- import gtk
- import thread
- import time
- import os
- import tempfile
- from gettext import gettext as _
-
- class PackageWorker:
- '''
- A class which does the actual package installing/removing.
- '''
- (INSTALL, UPDATE) = range(2)
-
- def run_synaptic(self, id, lock, to_add = None, to_rm = None, action = INSTALL):
- cmd = [
- '/usr/bin/gksu',
- '--desktop',
- '/usr/share/applications/synaptic.desktop',
- '--',
- '/usr/sbin/synaptic',
- '--hide-main-window',
- '--non-interactive',
- '--parent-window-id',
- '%s' % id]
- f = tempfile.NamedTemporaryFile()
- if action == self.INSTALL:
- for item in to_add:
- f.write('%s\tinstall\n' % item.pkgname)
-
- for item in to_rm:
- f.write('%s\tuninstall\n' % item.pkgname)
-
- cmd.append('--set-selections-file')
- cmd.append('%s' % f.name)
- f.flush()
- elif action == self.UPDATE:
- cmd.append('--update-at-startup')
-
- self.return_code = subprocess.call(cmd)
- lock.release()
- f.close()
-
-
- def plug_removed(self, w, .4):
- (win, socket) = .4
- win.hide()
- return True
-
-
- def plug_added(self, sock, win):
- while gtk.events_pending():
- win.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
- win.show()
- gtk.main_iteration()
-
-
- def get_plugged_win(self, window_main):
- win = gtk.Window()
- win.realize()
- win.window.set_functions(gtk.gdk.FUNC_MOVE)
- win.set_border_width(6)
- win.set_transient_for(window_main)
- win.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
- win.set_title('')
- win.set_resizable(False)
- win.set_property('skip-taskbar-hint', True)
- win.set_property('skip-taskbar-hint', True)
- win.connect('delete_event', (lambda e, w: True))
- socket = gtk.Socket()
- socket.show()
- win.add(socket)
- socket.connect('plug-added', self.plug_added, win)
- socket.connect('plug-removed', self.plug_removed, (win, socket))
- return (win, socket)
-
-
- def perform_action(self, window_main, to_add = None, to_rm = None, action = INSTALL):
- window_main.set_sensitive(False)
- lock = thread.allocate_lock()
- lock.acquire()
- t = thread.start_new_thread(self.run_synaptic, (window_main.window.xid, lock, to_add, to_rm, action))
- while lock.locked():
- while gtk.events_pending():
- gtk.main_iteration()
- time.sleep(0.050000000000000003)
- window_main.set_sensitive(True)
- return self.return_code
-
-
-