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 / DialogNewlyInstalled.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  4.6 KB  |  130 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. import pygtk
  5. pygtk.require('2.0')
  6. from SimpleGladeApp import SimpleGladeApp
  7. import gtk
  8. import gobject
  9. import os
  10. from gettext import gettext as _
  11. from Util import *
  12.  
  13. class DialogNewlyInstalled(SimpleGladeApp):
  14.     
  15.     def __init__(self, datadir, parent, to_add, cache):
  16.         SimpleGladeApp.__init__(self, path = datadir + '/gnome-app-install.glade', root = 'dialog_newly_installed', domain = 'gnome-app-install')
  17.         self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_PYOBJECT)
  18.         for elm in to_add:
  19.             if cache.has_key(elm.pkgname) and cache[elm.pkgname].isInstalled and elm.execCmd:
  20.                 self.store.append([
  21.                     elm.name,
  22.                     elm])
  23.                 continue
  24.         
  25.         self.treeview_newly_installed.set_model(self.store)
  26.         self.dialog_newly_installed.set_transient_for(parent)
  27.         self.init_treeview(self.treeview_newly_installed)
  28.  
  29.     
  30.     def run(self):
  31.         if len(self.store):
  32.             return self.dialog_newly_installed.run()
  33.         
  34.  
  35.     
  36.     def init_treeview(self, view):
  37.         
  38.         def package_view_func(cell_layout, renderer, model, iter):
  39.             (name, item) = model.get(iter, 0, 1)
  40.             menupath = '</b> > <b>'.join(item.menupath)
  41.             menupath = '<b>' + menupath + '</b>'
  42.             renderer.set_property('markup', '%s\n<small>%s %s</small>' % (item.name, _('Menu:'), menupath))
  43.  
  44.         
  45.         def icon_cell_func(column, cell, model, iter):
  46.             item = model.get_value(iter, 1)
  47.             if item.iconname != None:
  48.                 icon = item.icontheme._getIcon(item.iconname, 24)
  49.                 cell.set_property('pixbuf', icon)
  50.             else:
  51.                 cell.set_property('pixbuf', None)
  52.             cell.set_property('visible', True)
  53.  
  54.         view.set_search_column(COL_NAME)
  55.         view.get_selection().set_mode(gtk.SELECTION_NONE)
  56.         column = gtk.TreeViewColumn('')
  57.         render = gtk.CellRendererPixbuf()
  58.         column.pack_start(render, False)
  59.         column.set_cell_data_func(render, icon_cell_func)
  60.         render = gtk.CellRendererText()
  61.         render.set_property('xpad', 4)
  62.         column.pack_start(render, True)
  63.         column.add_attribute(render, 'markup', COL_NAME)
  64.         column.set_cell_data_func(render, package_view_func)
  65.         view.append_column(column)
  66.  
  67.     
  68.     def on_treeview_newly_installed_row_activated(self, treeview_packages, path, view_column):
  69.         if os.getuid() == 0:
  70.             return False
  71.         
  72.         treeiter = self.store.get_iter(path)
  73.         (name, item) = self.store[treeiter]
  74.         cmd_parts = []
  75.         command = item.execCmd
  76.         terminal = item.needsTerminal
  77.         if command == '':
  78.             return None
  79.         
  80.         for part in command.split():
  81.             while True:
  82.                 if len(part) >= 2 and part[:2] == '%%':
  83.                     cmd_parts.append('%')
  84.                     part = part[2:]
  85.                     continue
  86.                 
  87.                 if part[0] == '%':
  88.                     break
  89.                 
  90.                 if cmd_parts[-1:] == '%':
  91.                     part = '%' + part
  92.                     cmd_parts[-1:] = part
  93.                     break
  94.                 
  95.                 cmd_parts.append(part)
  96.                 break
  97.         
  98.         if terminal:
  99.             command = ' '.join(cmd_parts)
  100.             command = 'gnome-terminal --command="' + command + '"'
  101.             cmd_parts = command.split()
  102.         
  103.         os.spawnvp(os.P_NOWAIT, cmd_parts[0], cmd_parts)
  104.  
  105.     
  106.     def hide(self):
  107.         self.dialog_newly_installed.hide()
  108.  
  109.  
  110. if __name__ == '__main__':
  111.     from Menu import ApplicationMenu
  112.     cache = apt.Cache()
  113.     datadir = '/usr/share/gnome-app-install/'
  114.     progress = apt.progress.OpTextProgress()
  115.     to_add = []
  116.     treeview_categories = gtk.TreeView()
  117.     treeview_packages = gtk.TreeView()
  118.     menu = ApplicationMenu(datadir, cache, treeview_categories, treeview_packages, progress)
  119.     to_add = set()
  120.     for type, name, item in menu.store:
  121.         for type, name, item in item.real_applications_store:
  122.             to_add.add(item)
  123.         
  124.     
  125.     print to_add
  126.     dia = DialogNewlyInstalled(datadir, None, to_add, cache)
  127.     dia.run()
  128.     dia.hide()
  129.  
  130.