Package flumotion :: Package component :: Package effects :: Package videoscale :: Module admin_gtk
[hide private]

Source Code for Module flumotion.component.effects.videoscale.admin_gtk

  1  # -*- Mode: Python -*- 
  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  from gettext import gettext as _ 
 19   
 20  import gtk 
 21  import os 
 22   
 23  # import custom glade handler 
 24  from flumotion.ui import glade 
 25  from flumotion.component.base.effectsnode import EffectAdminGtkNode 
 26   
 27  __version__ = "$Rev$" 
 28   
 29   
30 -class VideoscaleAdminGtkNode(EffectAdminGtkNode):
31 logCategory = 'videoscale-admin' 32 gladeFile = os.path.join('flumotion', 'component', 'effects', 33 'videoscale', 'videoscale.glade') 34 35 uiStateHandlers = None 36
37 - def haveWidgetTree(self):
38 self.widget = self.wtree.get_widget('videoscale-vbox') 39 self._height = self.wtree.get_widget('videoscale-height') 40 self._width = self.wtree.get_widget('videoscale-width') 41 self._par_n = self.wtree.get_widget('videoscale-par_n') 42 self._par_d = self.wtree.get_widget('videoscale-par_d') 43 self._is_square = self.wtree.get_widget('videoscale-is_square') 44 self._add_borders = self.wtree.get_widget('videoscale-add_borders') 45 self._apply = self.wtree.get_widget('videoscale-apply') 46 47 # do the callbacks for the mode setting 48 self._height.connect('value-changed', self._cb_height) 49 self._width.connect('value-changed', self._cb_width) 50 self._par_n.connect('value-changed', self._cb_par) 51 self._par_d.connect('value-changed', self._cb_par) 52 self._is_square.connect('toggled', self._cb_is_square) 53 self._add_borders.connect('toggled', self._cb_add_borders) 54 self._apply.connect('clicked', self._cb_apply)
55
56 - def setUIState(self, state):
57 EffectAdminGtkNode.setUIState(self, state) 58 if not self.uiStateHandlers: 59 uiStateHandlers = {'videoscale-width': self.widthSet, 60 'videoscale-height': self.heightSet, 61 'videoscale-is-square': self.isSquareSet, 62 'videoscale-add-borders': self.addBordersSet} 63 self.uiStateHandlers = uiStateHandlers 64 65 for k, handler in self.uiStateHandlers.items(): 66 handler(state.get(k))
67
68 - def stateSet(self, state, key, value):
69 handler = self.uiStateHandlers.get(key, None) 70 if handler: 71 handler(value)
72
73 - def addBordersSet(self, add_borders):
74 if add_borders is not None: 75 self._add_borders.set_active(add_borders)
76
77 - def isSquareSet(self, is_square):
78 if is_square is not None: 79 self._is_square.set_active(is_square)
80
81 - def widthSet(self, width):
82 if width is not None: 83 self._width.handler_block_by_func(self._cb_width) 84 self._width.set_value(width) 85 self._width.handler_unblock_by_func(self._cb_width)
86
87 - def heightSet(self, height):
88 if height is not None: 89 self._height.handler_block_by_func(self._cb_height) 90 self._height.set_value(height) 91 self._height.handler_unblock_by_func(self._cb_height)
92
93 - def _cb_height(self, widget):
94 height = widget.get_value_as_int() 95 d = self.effectCallRemote("setHeight", height) 96 d.addErrback(self.setErrback)
97
98 - def _cb_width(self, widget):
99 width = widget.get_value_as_int() 100 d = self.effectCallRemote("setWidth", width) 101 d.addErrback(self.setErrback)
102
103 - def _cb_par(self, _):
104 par_n = self._par_n.get_value_as_int() 105 par_d = self._par_d.get_value_as_int() 106 d = self.effectCallRemote("setPAR", (par_n, par_d)) 107 d.addErrback(self.setErrback)
108
109 - def _cb_is_square(self, widget):
110 is_square = self._is_square.get_active() 111 d = self.effectCallRemote("setIsSquare", is_square) 112 d.addErrback(self.setErrback)
113
114 - def _cb_add_borders(self, widget):
115 add_borders = self._add_borders.get_active() 116 d = self.effectCallRemote("setAddBorders", add_borders) 117 d.addErrback(self.setErrback)
118
119 - def _cb_apply(self, widget):
120 d = self.effectCallRemote("apply") 121 d.addErrback(self.setErrback)
122
123 - def setErrback(self, failure):
124 self.warning("Failure %s setting property: %s" % ( 125 failure.type, failure.getErrorMessage())) 126 return None
127