Trees | Indices | Help |
---|
|
1 # -*- Mode: Python; test-case-name: flumotion.test.test_feedcomponent010 -*- 2 # vi:si:et:sw=4:sts=4:ts=4 3 4 # Flumotion - a streaming media server 5 # Copyright (C) 2004,2005,2006,2007,2008,2009 Fluendo, S.L. 6 # Copyright (C) 2010,2011 Flumotion Services, S.A. 7 # All rights reserved. 8 # 9 # This file may be distributed and/or modified under the terms of 10 # the GNU Lesser General Public License version 2.1 as published by 11 # the Free Software Foundation. 12 # This file is distributed without any warranty; without even the implied 13 # warranty of merchantability or fitness for a particular purpose. 14 # See "LICENSE.LGPL" in the source distribution for more information. 15 # 16 # Headers in this file shall remain intact. 17 18 """ 19 Component tab in the component UI 20 """ 21 22 import gettext 23 import os 24 import time 25 26 import gtk 27 28 from flumotion.common import format as formatting 29 from flumotion.common.i18n import gettexter 30 from flumotion.component.base.baseadminnode import BaseAdminGtkNode 31 from flumotion.extern.log.log import getDebug 32 from flumotion.common.planet import AdminFlowState 33 34 35 _ = gettext.gettext 36 __version__ = "$Rev$" 37 T_ = gettexter() 38 3941 gladeFile = os.path.join('flumotion', 'component', 'base', 42 'component.glade') 4323945 BaseAdminGtkNode.__init__(self, state, admin, title=_("Component")) 46 47 self._startTime = None 48 self._debugging = None 49 self._initialFluMask = '' 50 self._initialGstMask = ''5153 BaseAdminGtkNode.setDebugEnabled(self, enabled) 54 if self._debugging: 55 self._debugging.set_property('visible', enabled) 56 57 self._initialFluMask = getDebug() 58 self._initialGstMask = os.environ.get('GST_DEBUG', '')5961 self.widget = self.wtree.get_widget('main-vbox') 62 assert self.widget, "No component-widget in %s" % self.gladeFile 63 self.gst_mask = self.wtree.get_widget('gst_mask') 64 self.gst_label = self.wtree.get_widget('gst_label') 65 self.flu_mask = self.wtree.get_widget('flu_mask') 66 self.gst_profile = self.wtree.get_widget('gst_profile') 67 self.gst_profile.connect('changed', self._on_gst_profile_changed) 68 self.flu_profile = self.wtree.get_widget('flu_profile') 69 self.flu_profile.connect('changed', self._on_flu_profile_changed) 70 self.gst_button = self.wtree.get_widget('gst_button') 71 self.gst_button.connect('clicked', self._on_gst_button_clicked) 72 self.gst_mask.connect('activate', self._on_gst_button_clicked) 73 self.flu_button = self.wtree.get_widget('flu_button') 74 self.flu_button.connect('clicked', self._on_flu_button_clicked) 75 self.flu_mask.connect('activate', self._on_flu_button_clicked) 76 77 # pid 78 l = self.wtree.get_widget('label-pid') 79 pid = self.state.get('pid') 80 l.set_text(str(pid)) 81 82 # Find the labels which we'll update when we get uiState updates. 83 self._label_start_time = self.wtree.get_widget('label-since') 84 self._label_uptime = self.wtree.get_widget('label-uptime') 85 self._label_cpu = self.wtree.get_widget('label-cpu') 86 self._label_vsize = self.wtree.get_widget('label-vsize') 87 self._label_component_type = self.wtree.get_widget( 88 'label-component-type') 89 90 self._label_resets = self.wtree.get_widget('label-resets') 91 self._label_resets_count = self.wtree.get_widget('label-resets-count') 92 self.widget.show() 93 94 self._prepareDebugging() 95 96 self._debugging = self.wtree.get_widget('debugging') 97 if self._debugEnabled: 98 self._debugging.show() 99 100 componentType = self.state.get('config')['type'] 101 self._label_component_type.set_text(componentType) 102 103 return self.widget104106 if ':' not in mask or mask.count(':') != 1: 107 return False 108 name, level = mask.split(':', 1) 109 try: 110 int(level) 111 except ValueError: 112 return False 113 return True114116 profile = combo.get_selected() 117 if profile is not None: 118 gtk.Entry.set_text(self.gst_mask, profile) 119 self.gst_mask.set_sensitive(profile is None)120122 profile = combo.get_selected() 123 if profile is not None: 124 gtk.Entry.set_text(self.flu_mask, profile) 125 self.flu_mask.set_sensitive(profile is None)126 134 142144 debugEnabled = self._debugEnabled 145 self._debugEnabled = False 146 default = [(_('Nothing'), '*:0'), 147 (_('Everything'), '*:4'), 148 (_('Custom'), None)] 149 self.flu_profile.prefill(default) 150 151 if isinstance(self.state.get('parent'), AdminFlowState): 152 self.gst_profile.prefill(default) 153 else: 154 self.gst_profile.hide() 155 self.gst_label.hide() 156 self.gst_mask.hide() 157 self.gst_button.hide() 158 159 self._debugEnabled = debugEnabled160162 self._label_start_time.set_text( 163 time.strftime("%c", time.localtime(value))) 164 self._label_uptime.set_text(formatting.formatTime(0)) 165 166 self._startTime = value167169 if self._startTime is not None: 170 runtime = value - self._startTime 171 172 self._label_uptime.set_text(formatting.formatTime(runtime)) 173 else: 174 self._label_uptime.set_text(_("not available"))175177 self.gst_mask.set_text(value) 178 try: 179 self.gst_profile.select_item_by_data(value) 180 except KeyError: 181 self.gst_profile.select_item_by_data(None)182184 self.flu_mask.set_text(value) 185 try: 186 self.flu_profile.select_item_by_data(value) 187 except KeyError: 188 self.flu_profile.select_item_by_data(None)189 193195 # given int for vsize in bytes, update the label 196 if not vsize: 197 self._label_vsize.set_text(_('Unknown')) 198 else: 199 self._label_vsize.set_text('%sB' % formatting.formatStorage(vsize))200202 if not self._label_resets.get_property('visible'): 203 self._label_resets.show() 204 self._label_resets_count.show() 205 self._label_resets_count.set_text('%d restarts' % count)206208 BaseAdminGtkNode.setUIState(self, uiState) 209 210 # Ick; we don't get these otherwise. 211 for key in uiState.keys(): 212 val = uiState.get(key) 213 if val is not None: 214 self.stateSet(uiState, key, uiState.get(key))215 216 # IStateListener Interface 217219 if key == 'cpu-percent': 220 self._updateCPU(value) 221 elif key == 'virtual-size': 222 self._updateVSize(value) 223 elif key == 'start-time': 224 self._setStartTime(value) 225 elif key == 'current-time': 226 self._setCurrentTime(value) 227 elif key == 'reset-count': 228 self._updateResets(value) 229 elif key == 'flu-debug': 230 self._setFluDebug(value) 231 elif key == 'gst-debug': 232 self._setGstDebug(value)233 236
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Tue Aug 13 06:17:22 2013 | http://epydoc.sourceforge.net |