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 / GMenuSimpleEditor / maindialog.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  5.2 KB  |  123 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. import os.path as os
  5. import gtk
  6. import gtk.glade as gtk
  7. import gmenu
  8. from config import *
  9. import menutreemodel
  10. import menufilewriter
  11.  
  12. class MenuEditorDialog:
  13.     
  14.     def __init__(self, menu_files):
  15.         glade_file = os.path.join(GLADEDIR, 'gmenu-simple-editor.glade')
  16.         self.xml = gtk.glade.XML(glade_file, 'menu_editor_dialog', PACKAGE)
  17.         self.window = self.xml.get_widget('menu_editor_dialog')
  18.         self.window.connect('destroy', gtk.main_quit)
  19.         self.window.set_default_response(gtk.RESPONSE_ACCEPT)
  20.         self.window.set_icon_name('gnome-main-menu')
  21.         self.help_button = self.xml.get_widget('help_button')
  22.         self.help_button.set_sensitive(False)
  23.         self.menus_tree = self.xml.get_widget('menus_treeview')
  24.         self.entries_list = self.xml.get_widget('applications_treeview')
  25.         self.menu_tree_model = menutreemodel.MenuTreeModel(menu_files)
  26.         self.menu_file_writer = menufilewriter.MenuFileWriter(self.menu_tree_model)
  27.         self.current_iter = None
  28.         self.current_path = None
  29.         self._MenuEditorDialog__setup_menus_tree()
  30.         self._MenuEditorDialog__setup_entries_list()
  31.         self.window.connect('response', self._MenuEditorDialog__dialog_response)
  32.         self.window.set_default_size(580, 435)
  33.         self.window.show()
  34.  
  35.     
  36.     def __revert_to_system_default(self, parent_iter = None):
  37.         model = self.menu_tree_model
  38.         iter = model.iter_children(parent_iter)
  39.         while iter:
  40.             if model[iter][model.COLUMN_IS_ENTRY]:
  41.                 model[iter][model.COLUMN_USER_VISIBLE] = model[iter][model.COLUMN_SYSTEM_VISIBLE]
  42.             else:
  43.                 self._MenuEditorDialog__revert_to_system_default(iter)
  44.             iter = model.iter_next(iter)
  45.  
  46.     
  47.     def __dialog_response(self, dialog, response_id):
  48.         if response_id == gtk.RESPONSE_REJECT:
  49.             self._MenuEditorDialog__revert_to_system_default()
  50.             iter = self.menu_tree_model.get_iter_first()
  51.             while iter:
  52.                 self.menu_file_writer.queue_sync(iter)
  53.                 iter = self.menu_tree_model.iter_next(iter)
  54.             return None
  55.         
  56.         dialog.destroy()
  57.  
  58.     
  59.     def __is_menu_tree_directory(self, model, iter):
  60.         return not model[iter][self.menu_tree_model.COLUMN_IS_ENTRY]
  61.  
  62.     
  63.     def __setup_menus_tree(self):
  64.         self.menus_model = self.menu_tree_model.filter_new()
  65.         self.menus_model.set_visible_func(self._MenuEditorDialog__is_menu_tree_directory)
  66.         self.menus_tree.set_model(self.menus_model)
  67.         self.menus_tree.get_selection().set_mode(gtk.SELECTION_SINGLE)
  68.         self.menus_tree.get_selection().connect('changed', self._MenuEditorDialog__menus_selection_changed)
  69.         self.menus_tree.set_headers_visible(False)
  70.         column = gtk.TreeViewColumn(_('Name'))
  71.         column.set_spacing(6)
  72.         cell = gtk.CellRendererPixbuf()
  73.         column.pack_start(cell, False)
  74.         column.set_attributes(cell, pixbuf = self.menu_tree_model.COLUMN_ICON)
  75.         cell = gtk.CellRendererText()
  76.         column.pack_start(cell, True)
  77.         column.set_attributes(cell, text = self.menu_tree_model.COLUMN_NAME)
  78.         self.menus_tree.append_column(column)
  79.         self.menus_tree.expand_all()
  80.  
  81.     
  82.     def __setup_entries_list(self):
  83.         self.entries_list.get_selection().set_mode(gtk.SELECTION_SINGLE)
  84.         self.entries_list.set_headers_visible(True)
  85.         column = gtk.TreeViewColumn(_('Show'))
  86.         self.entries_list.append_column(column)
  87.         cell = gtk.CellRendererToggle()
  88.         cell.connect('toggled', self._MenuEditorDialog__on_hide_toggled)
  89.         column.pack_start(cell, False)
  90.         column.set_attributes(cell, active = self.menu_tree_model.COLUMN_USER_VISIBLE)
  91.         column = gtk.TreeViewColumn(_('Name'))
  92.         column.set_spacing(6)
  93.         self.entries_list.append_column(column)
  94.         cell = gtk.CellRendererPixbuf()
  95.         column.pack_start(cell, False)
  96.         column.set_attributes(cell, pixbuf = self.menu_tree_model.COLUMN_ICON)
  97.         cell = gtk.CellRendererText()
  98.         column.pack_start(cell, True)
  99.         column.set_attributes(cell, text = self.menu_tree_model.COLUMN_NAME)
  100.  
  101.     
  102.     def __on_hide_toggled(self, toggle, path):
  103.         
  104.         def toggle_value(model, iter, column):
  105.             model[iter][column] = not model[iter][column]
  106.  
  107.         child_path = self.entries_model.convert_path_to_child_path(path)
  108.         child_iter = self.menu_tree_model.get_iter(child_path)
  109.         toggle_value(self.menu_tree_model, child_iter, self.menu_tree_model.COLUMN_USER_VISIBLE)
  110.         self.menu_file_writer.queue_sync(child_iter)
  111.  
  112.     
  113.     def __menus_selection_changed(self, selection):
  114.         (model, iter) = selection.get_selected()
  115.         if iter:
  116.             iter = model.convert_iter_to_child_iter(iter)
  117.         
  118.         self.entries_model = self.menu_tree_model.filter_new(self.menu_tree_model.get_path(iter))
  119.         self.entries_model.set_visible_column(self.menu_tree_model.COLUMN_IS_ENTRY)
  120.         self.entries_list.set_model(self.entries_model)
  121.  
  122.  
  123.