| Viewing file:  trustedchecklist.py (6.01 KB)      -rwxr-xr-x Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
## trustedchecklist.py: A class (derived from GtkTreeView) that provides a list
 #               of checkbox / text string pairs with an extra dependent
 #               checkbox
 # "Inspired" heavily by checklist.py
 #
 # nix@go-nix.ca
 # Brent Fox <bfox@redhat.com>
 # Jeremy Katz <katzj@redhat.com>
 #
 # Copyright 2001-2005 Red Hat, Inc.
 #
 # This software may be freely redistributed under the terms of the GNU
 # library public license.
 #
 # You should have received a copy of the GNU Library Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 #
 
 import gtk
 import gobject
 
 ##
 ## I18N
 ##
 from rhpl.translate import _, N_
 import rhpl.translate as translate
 translate.textdomain ("system-config-securitylevel")
 
 class TrustedCheckList (gtk.TreeView):
 """A class (derived from gtk.TreeView) that provides a list of
 checkbox / text string pairs with an extra dependent checkbox"""
 
 def __init__ (self):
 self.store = gtk.ListStore(gobject.TYPE_BOOLEAN,
 gobject.TYPE_STRING, gobject.TYPE_BOOLEAN)
 gtk.TreeView.__init__ (self, self.store)
 
 self.ifcheckboxrenderer = gtk.CellRendererToggle()
 renderer = gtk.CellRendererText()
 column = gtk.TreeViewColumn(_("Name"), renderer, text=1)
 column.set_clickable (False)
 self.append_column(column)
 
 column = gtk.TreeViewColumn(_("Trusted"), self.ifcheckboxrenderer, active=0)
 #column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
 #column.set_fixed_width(20)
 column.set_clickable(True)
 self.ifcheckboxrenderer.connect ("toggled", self.toggled_item)
 self.append_column(column)
 self.dirty=False
 
 self.masqcheckboxrenderer = gtk.CellRendererToggle()
 column = gtk.TreeViewColumn(_("Masquerade"), self.masqcheckboxrenderer, active=2)
 #column.add_attribute (self.masqcheckboxrenderer, "sensitive", 0)
 #column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
 #column.set_fixed_width(20)
 column.set_clickable(True)
 self.masqcheckboxrenderer.connect ("toggled", self.toggled_masq)
 self.append_column(column)
 
 self.set_rules_hint(False)
 self.set_headers_visible(True)
 self.columns_autosize()
 self.set_enable_search(False)
 
 # keep track of the number of rows we have so we can
 # iterate over them all
 self.num_rows = 0
 
 def append_row (self, text, init_value):
 """Add a row to the list.
 text: text to display in the row
 init_value: initial state of the indicator"""
 
 iter = self.store.append()
 self.store.set_value(iter, 0, init_value)
 
 self.store.set_value(iter, 1, text)
 
 self.num_rows = self.num_rows + 1
 
 
 def toggled_item(self, data, row):
 """Set a function to be called when the value of a row is toggled.
 The function will be called with two arguments, the clicked item
 in the row and a string for which row was clicked."""
 
 iter = self.store.get_iter(int(row))
 val = self.store.get_value(iter, 0)
 self.store.set_value(iter, 0, not val)
 if (val):
 self.store.set_value(iter, 2, False)
 self.dirty=True
 
 def toggled_masq(self, data, row):
 """Set a function to be called when the masq value of a row is toggled.
 The function will be called with two arguments, the clicked item
 in the row and a string for which row was clicked. This checkbox can
 only be active if the corresponding main checkbox is active"""
 
 iter = self.store.get_iter(int(row))
 trusted = self.store.get_value(iter, 0)
 val = self.store.get_value(iter, 2)
 if (trusted):
 self.store.set_value(iter, 2, not val)
 else:
 self.store.set_value(iter, 2, False)
 self.dirty=True
 
 def clear (self):
 "Remove all rows"
 self.store.clear()
 self.num_rows = 0
 
 
 def get_active(self, row):
 """Return FALSE or TRUE as to whether or not the row is toggled
 similar to GtkToggleButtons"""
 
 iter = self.store.get_iter(row)
 return self.store.get_value(iter, 0)
 
 
 def set_active(self, row, is_active):
 "Set row to be is_active, similar to GtkToggleButton"
 
 iter = self.store.get_iter(row)
 self.store.set_value(iter, 0, is_active)
 
 
 def get_masq_active(self, row):
 """Return FALSE or TRUE as to whether or not the dependent checkbox is toggled
 similar to GtkToggleButtons"""
 
 iter = self.store.get_iter(row)
 return self.store.get_value(iter, 2)
 
 
 def set_masq_active(self, row, is_active):
 "Set the dependent checkbox to be is_active, similar to GtkToggleButton"
 
 iter = self.store.get_iter(row)
 if (self.store.get_value (iter, 0)):
 self.store.set_value(iter, 2, is_active)
 
 
 def get_text(self, row, column):
 "Get the text from row and column"
 
 iter = self.store.get_iter(row)
 return self.store.get_value(iter, column)
 
 
 def set_column_title(self, column, title):
 "Set the title of column to title"
 
 col = self.get_column(column)
 if col:
 col.set_title(title)
 
 
 def set_column_min_width(self, column, min):
 "Set the minimum width of column to min"
 
 col = self.get_column(column)
 if col:
 col.set_min_width(min)
 
 
 def set_column_clickable(self, column, clickable):
 "Set the column to be clickable"
 
 col = self.get_column(column)
 if col:
 col.set_clickable(clickable)
 
 
 def set_column_sizing(self, column, sizing):
 "Set the column to use the given sizing method"
 
 col = self.get_column(column)
 if col:
 col.set_sizing(sizing)
 
 def set_column_sort_id(self, column, id):
 "Set the sort id of column to id"
 
 col = self.get_column(column)
 if col:
 col.set_sort_column_id(id)
 
 |