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 / DialogPendingChanges.py < prev    next >
Encoding:
Python Source  |  2006-08-28  |  2.8 KB  |  70 lines

  1. # (c) 2005 Canonical, GPL
  2.  
  3. from SimpleGladeApp import SimpleGladeApp
  4. import gtk
  5. import gobject
  6. import os
  7.  
  8. from Util import *
  9.  
  10. class DialogPendingChanges(SimpleGladeApp):
  11.     def __init__(self, datadir, parent, to_add, to_rm):
  12.         SimpleGladeApp.__init__(self,
  13.                                 path=datadir+"/gnome-app-install.glade",
  14.                                 root="dialog_pending_changes",
  15.                                 domain="gnome-app-install")
  16.         self.add_store = gtk.ListStore(gobject.TYPE_STRING,
  17.                                        gobject.TYPE_PYOBJECT)
  18.         self.remove_store = gtk.ListStore(gobject.TYPE_STRING,
  19.                                           gobject.TYPE_PYOBJECT)
  20.         for elm in to_add:
  21.             self.add_store.append([elm.name,elm])
  22.         for elm in to_rm:
  23.             self.remove_store.append([elm.name,elm])
  24.         self.dialog_pending_changes.realize()
  25.         self.dialog_pending_changes.set_transient_for(parent)
  26.         self.init_treeview(self.treeview_pending_add)
  27.         self.init_treeview(self.treeview_pending_remove)
  28.         self.treeview_pending_add.set_model(self.add_store)
  29.         self.treeview_pending_remove.set_model(self.remove_store)
  30.         self.button_confirm_changes.grab_default()
  31.         self.dialog_pending_changes.window.set_functions(gtk.gdk.FUNC_MOVE)
  32.  
  33.     # this code is identical to DialogMultipleApps - merge
  34.     def init_treeview(self, view):
  35.         def package_view_func(cell_layout, renderer, model, iter):
  36.             (name, item) = model.get(iter, 0, 1)
  37.             renderer.set_property("markup",
  38.                                   "%s\n<small>%s</small>" % \
  39.                                   (item.name, item.description))
  40.         def icon_cell_func(column, cell, model, iter):
  41.             menuitem = model.get_value(iter, 1)
  42.             if menuitem.iconname != None:
  43.                 icon = menuitem.icontheme._getIcon(menuitem.iconname, 24)
  44.                 cell.set_property("pixbuf", icon)
  45.             else:
  46.                 cell.set_property("pixbuf", None)
  47.             cell.set_property("visible", True)
  48.         view.set_search_column(COL_NAME)
  49.         view.get_selection().set_mode(gtk.SELECTION_NONE)
  50.         column = gtk.TreeViewColumn("")
  51.         render = gtk.CellRendererPixbuf()
  52.         column.pack_start(render, False)
  53.         column.set_cell_data_func (render, icon_cell_func)
  54.         render = gtk.CellRendererText()
  55.         render.set_property("xpad", 4)
  56.         column.pack_start(render, True)
  57.         column.set_cell_data_func (render, package_view_func)
  58.         view.append_column(column)
  59.  
  60.     def run(self):
  61.         if len(self.add_store) == 0:
  62.             self.vbox_add.hide()
  63.         if len(self.remove_store) == 0:
  64.             self.vbox_remove.hide()
  65.         return self.dialog_pending_changes.run()
  66.  
  67.     def hide(self):
  68.         self.dialog_pending_changes.hide()
  69.         
  70.