| Trees | Indices | Help |
|
|---|
|
|
1 # -*- coding: utf-8 -*- 2 # Moovida - Home multimedia server 3 # Copyright (C) 2006-2009 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 Moovida with Fluendo's plugins. 11 # 12 # The GPL part of Moovida is also available under a commercial licensing 13 # agreement from Fluendo. 14 # See "LICENSE.Moovida" in the root directory of this distribution package 15 # for details on that license. 16 17 from elisa.core.utils import locale_helper 18 from elisa.core.input_event import EventValue 19 from elisa.core.utils.cancellable_defer import CancelledError 20 21 from elisa.plugins.pigment.widgets.list_vertical import ListVertical 22 from elisa.plugins.pigment.widgets.box import HBox, ALIGNMENT 23 24 from elisa.plugins.poblesec.base.list import BaseListController 25 from elisa.plugins.poblesec.widgets.menu_item import MenuItemWidget, \ 26 DoubleLineMenuItemWidget 27 from elisa.plugins.poblesec.widgets.button import PanelButton 28 from elisa.plugins.poblesec.widgets.widget_with_actions import WidgetWithActions 29 30 33 3436 """ 37 DOCME 38 """61 6240 super(ListItemWidgetWithActions, self)._create_widgets(*args) 41 42 self.container = HBox() 43 self.container.navigable = True 44 self.add(self.container, forward_signals=False) 45 self.set_focus_proxy(self.container) 46 47 #FIXME use CSS style 48 self.container.alignment = ALIGNMENT.START 49 self.container.visible = True 50 51 self.container.pack_start(self.item_widget) 52 self.item_widget.visible = True 53 54 self.update_style_properties(self.style.get_items())55 5864 65 list_widget = ListVertical 66 item_widget_cls = None 67 item_widget_kwargs = {} 68 72122 123 126 12774 item_widget_name = self._view_mode.name 75 widget_kwargs = {'contextual_actions': self._contextual_actions, 76 'item_widget_cls': self.item_widget_cls, 77 'item_widget_name': item_widget_name, 78 'item_widget_kwargs': self.item_widget_kwargs} 79 self.nodes = self.list_widget(self.node_widget, visible_range_size=10, 80 widget_kwargs=widget_kwargs) 81 self.nodes.start_offset = 1 82 self.nodes.set_name("vertical") 83 self.nodes.visible = True 84 85 self.widget.set_focus_proxy(self.nodes)8688 self.fastscroller = ListVertical(Shortcut, visible_range_size=10) 89 self.fastscroller.start_offset = 1 90 self.fastscroller.render_empty_items = True 91 self.fastscroller.set_name("fastscroller") # FIXME: remove name 92 self.fastscroller.visible = True9395 self.components_container = HBox() 96 self.components_container.set_name('previewlist_components_container') 97 self.components_container.navigable = True 98 self.components_container.visible = True 99 self.widget.add(self.components_container) 100 101 if self.fastscroller is not None: 102 self.components_container.pack_start(self.fastscroller) 103 self.components_container.pack_end(self.nodes) 104 105 # swallow events to create a 'dead end' 106 self.components_container.add_navigation_rule(self.fastscroller, 107 EventValue.KEY_GO_UP, 108 None) 109 self.components_container.add_navigation_rule(self.fastscroller, 110 EventValue.KEY_GO_DOWN, 111 None) 112 self.components_container.add_navigation_rule(self.nodes, 113 EventValue.KEY_GO_UP, 114 None) 115 self.components_container.add_navigation_rule(self.nodes, 116 EventValue.KEY_GO_DOWN, 117 None)118129 130 node_widget = ListItemWidgetWithActions 131 item_widget_cls = MenuItemWidget 132153 label_deferred = self._view_mode.get_label(item) 154 label_deferred.addCallbacks(got_label, _failure) 155 self.register_deferred(widget, label_deferred) 156 157 # Set the default image of the widget 158 artwork_box = widget.item_widget.artwork_box 159 artwork_box.icon.clear() 160 artwork_box.thumbnail.clear() 161 default_image = self._view_mode.get_default_image(item) 162 if default_image: 163 self.frontend.load_from_theme(default_image, artwork_box.icon) 164 165 # Set the real image of the widget 166 theme = self.frontend.get_theme() 167 image_deferred = self._view_mode.get_image(item, theme) 168 if image_deferred is not None: 169 def got_thumbnail(thumbnail_file): 170 if thumbnail_file is not None: 171 if not isinstance(thumbnail_file, unicode): 172 thumbnail_file = thumbnail_file.decode(locale_helper.system_encoding()) 173 artwork_box.icon.clear() 174 artwork_box.thumbnail.set_from_file(thumbnail_file, 128) 175 176 self.register_deferred(widget, image_deferred) 177 image_deferred.addCallbacks(got_thumbnail, _failure) 178 179 # Set info glyphs of the widget 180 if hasattr(item, 'static_glyphs'): 181 widget.item_widget.static_glyphs = item.static_glyphs 182 if hasattr(item, 'dynamic_glyphs'): 183 widget.item_widget.dynamic_glyphs = item.dynamic_glyphs 184 185 188 191 192134 """ 135 Render a node using the common API methods defined by the 136 L{elisa.plugins.poblesec.base.list.GenericListViewMode} class. 137 """ 138 # Cancel previous deferred calls for this widget 139 self.cancel_deferreds(widget) 140 141 def _failure(failure): 142 # Swallow errbacks only when the deferred has been cancelled 143 failure.trap(CancelledError)144 145 # Pass the item to the widget so that contextual actions can use it. 146 widget.item = item 147 148 # Render the label of the widget 149 widget.item_widget.label.visible = False 150 def got_label(text): 151 widget.item_widget.label.label = text 152 widget.item_widget.label.visible = True194 195 """ 196 Preview list controller tied to the double line menu item widget. 197 """ 198 199 item_widget_cls = DoubleLineMenuItemWidget 200213 sublabel_deferred = self._view_mode.get_sublabel(item) 214 sublabel_deferred.addCallbacks(got_sublabel, _failure) 215 self.register_deferred(widget, sublabel_deferred) 216202 super(DoubleLineMenuItemPreviewListController, self).node_renderer(item, widget) 203 204 def _failure(failure): 205 # Swallow errbacks only when the deferred has been cancelled 206 failure.trap(CancelledError)207 208 # Render the sublabel of the widget 209 widget.item_widget.sublabel.visible = False 210 def got_sublabel(text): 211 widget.item_widget.sublabel.label = text 212 widget.item_widget.sublabel.visible = True
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Tue Dec 1 10:55:51 2009 | http://epydoc.sourceforge.net |