Home | Trees | Indices | Help |
---|
|
1 # -*- coding: utf-8 -*- 2 # Elisa - Home multimedia server 3 # Copyright (C) 2006-2008 Fluendo Embedded S.L. (www.fluendo.com). 4 # All rights reserved. 5 # 6 # This file is available under one of two license agreements. 7 # 8 # This file is licensed under the GPL version 3. 9 # See "LICENSE.GPL" in the root of this distribution including a special 10 # exception to use Elisa with Fluendo's plugins. 11 # 12 # The GPL part of Elisa is also available under a commercial licensing 13 # agreement from Fluendo. 14 # See "LICENSE.Elisa" in the root directory of this distribution package 15 # for details on that license. 16 17 18 __maintainer__ = 'Lionel Martin <lionel@fluendo.com>' 19 20 import pygtk 21 pygtk.require('2.0') 22 import gtk 23 24 from elisa.extern.translation import Translatable 25 26 from elisa.base_components.controller import Controller 27 from elisa.core import plugin_registry, common 28 NodeViewClass = plugin_registry.get_component_class('base:node_view') 29 3032 """ 33 This class implements gtk node view support 34 used by gtk tree view 35 """ 36 37 supported_controllers = ('base:node_controller', 'poblenou:node_controller') 3817440 NodeViewClass.__init__(self) 41 self.context_path = 'gtk:gtk_context' 42 self.load_more_string = 'Downloading data...' 43 self.iter = None4446 if isinstance(self.parent, GtkNodeView): 47 parent_iter = self.parent.iter 48 else: 49 parent_iter = None 50 51 treemodel = self.root.treeview.get_model() 52 first_iter = treemodel.iter_children(parent_iter) 53 54 if first_iter == None: 55 return None 56 57 first_iter_text = treemodel.get_value(first_iter, 0) 58 if first_iter_text == self.load_more_string: 59 return first_iter 60 return None61 6264 treeview = self.root.treeview 65 treemodel = treeview.get_model() 66 67 treeview.connect("row-expanded", self._gtk_row_expanded) 68 treeview.connect("row-collapsed", self._gtk_row_collapsed) 69 treeview.connect("row-activated", self._gtk_row_activated) 70 71 if isinstance(self.parent, GtkNodeView): 72 parent_iter = self.parent.iter 73 else: 74 parent_iter = None 75 76 fake_iter = self._get_fake_iter_node() 77 label = controller.model.text 78 if isinstance(label, Translatable): 79 translator = common.application.translator 80 label = translator.translateTranslatable(label, 81 self.frontend.languages) 82 83 if fake_iter: 84 treemodel.set_value(fake_iter, 0, label) 85 self.iter = fake_iter 86 else: 87 self.iter = treemodel.insert(parent_iter, position, [label]) 88 89 if controller.model.has_children: 90 treemodel.insert(self.iter, 0, [self.load_more_string])91 9294 NodeViewClass.child_view_creating(self, view, controller, position) 95 view.create_node(controller, position)96 9799 treemodel = self.root.treeview.get_model() 100 for controller in elements: 101 child_view = self[position] 102 print "remove %r view in %r (position %r)" % (child_view.controller.model.text, self.controller.model.text, position) 103 treemodel.remove(child_view.iter) 104 NodeViewClass.removed(self, elements, position)105 106 109 110 113 114116 #if key not in ('hover_delayed'): 117 # print "%s : %s=%s"%(self.controller.model.text, key, new_value) 118 if key == 'expanded': 119 self._expand(new_value) 120 if key == 'current_index': 121 self.root.select_from_view(self[new_value]) 122 if key == 'selected': 123 if new_value == True: 124 self._expand(True) 125 index = self.controller.current_index 126 self.root.select_from_view(self[index])127129 #expand = True, expand the none, if not, collapse it. 130 treeview = self.root.treeview 131 treemodel = treeview.get_model() 132 if self.iter: 133 tree_path = treemodel.get_path(self.iter) 134 if expand == True: 135 treeview.expand_row(tree_path, False) 136 else: 137 treeview.collapse_row(tree_path)138 139 140142 treemodel = treeview.get_model() 143 if treemodel.get_path(iter) == treemodel.get_path(self.iter): 144 # FIXME: this cannot be done in the view but has to be done in the 145 # controller 146 self.controller.model.activity.loadmore(self.controller.model) 147 self.controller.expanded = True148 149151 treemodel = treeview.get_model() 152 if treemodel.get_path(iter) == treemodel.get_path(self.iter): 153 self.controller.expanded = False154 155157 treemodel = treeview.get_model() 158 if path == treemodel.get_path(self.iter): 159 # FIXME: this cannot be done in the view but has to be done in the 160 # controller 161 self.debug("action callback called on %r" % self.controller.model.text) 162 if callable(self.controller.model.activate_action): 163 self.controller.model.activate_action(self.controller)164 165167 path = [self.parent.controller.index(self.controller)] 168 if isinstance(self.parent, NodeViewClass): 169 parent_path = self.parent.get_path() 170 if len(parent_path) > 0: 171 path = parent_path + path 172 173 return path
Home | Trees | Indices | Help |
---|
Generated by Epydoc 3.0beta1 on Wed Jan 16 19:11:00 2008 | http://epydoc.sourceforge.net |