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 Fluendo, S.L. (www.fluendo.com). 
  6  # All rights reserved. 
  7   
  8  # This file may be distributed and/or modified under the terms of 
  9  # the GNU General Public License version 2 as published by 
 10  # the Free Software Foundation. 
 11  # This file is distributed without any warranty; without even the implied 
 12  # warranty of merchantability or fitness for a particular purpose. 
 13  # See "LICENSE.GPL" in the source distribution for more information. 
 14   
 15  # Licensees having purchased or holding a valid Flumotion Advanced 
 16  # Streaming Server license may use this file in accordance with the 
 17  # Flumotion Advanced Streaming Server Commercial License Agreement. 
 18  # See "LICENSE.Flumotion" in the source distribution for more information. 
 19   
 20  # Headers in this file shall remain intact. 
 21   
 22  from gettext import gettext as _ 
 23   
 24  import gtk 
 25  import os 
 26  import math 
 27   
 28  # import custom glade handler 
 29  from flumotion.ui import glade 
 30  from flumotion.component.base.effectsnode import EffectAdminGtkNode 
 31   
 32  __version__ = "$Rev$" 
 33   
 34   
35 -class VideoscaleAdminGtkNode(EffectAdminGtkNode):
36 logCategory = 'videoscale-admin' 37 gladeFile = os.path.join('flumotion', 'component', 'effects', 38 'videoscale', 'videoscale.glade') 39 40 uiStateHandlers = None 41
42 - def haveWidgetTree(self):
43 self.widget = self.wtree.get_widget('videoscale-vbox') 44 self._height = self.wtree.get_widget('videoscale-height') 45 self._width = self.wtree.get_widget('videoscale-width') 46 self._par_n = self.wtree.get_widget('videoscale-par_n') 47 self._par_d = self.wtree.get_widget('videoscale-par_d') 48 self._is_square = self.wtree.get_widget('videoscale-is_square') 49 self._add_borders = self.wtree.get_widget('videoscale-add_borders') 50 self._apply = self.wtree.get_widget('videoscale-apply') 51 52 # do the callbacks for the mode setting 53 self._height.connect('value-changed', self._cb_height) 54 self._width.connect('value-changed', self._cb_width) 55 self._par_n.connect('value-changed', self._cb_par) 56 self._par_d.connect('value-changed', self._cb_par) 57 self._is_square.connect('toggled', self._cb_is_square) 58 self._add_borders.connect('toggled', self._cb_add_borders) 59 self._apply.connect('clicked', self._cb_apply)
60
61 - def setUIState(self, state):
62 EffectAdminGtkNode.setUIState(self, state) 63 if not self.uiStateHandlers: 64 uiStateHandlers = {'videoscale-width': self.widthSet, 65 'videoscale-height': self.heightSet, 66 'videoscale-is-square': self.isSquareSet, 67 'videoscale-add-borders': self.addBordersSet} 68 self.uiStateHandlers = uiStateHandlers 69 70 for k, handler in self.uiStateHandlers.items(): 71 handler(state.get(k))
72
73 - def stateSet(self, state, key, value):
74 handler = self.uiStateHandlers.get(key, None) 75 if handler: 76 handler(value)
77
78 - def addBordersSet(self, add_borders):
79 if add_borders is not None: 80 self._add_borders.set_active(add_borders)
81
82 - def isSquareSet(self, is_square):
83 if is_square is not None: 84 self._is_square.set_active(is_square)
85
86 - def widthSet(self, width):
87 if width is not None: 88 self._width.handler_block_by_func(self._cb_width) 89 self._width.set_value(width) 90 self._width.handler_unblock_by_func(self._cb_width)
91
92 - def heightSet(self, height):
93 if height is not None: 94 self._height.handler_block_by_func(self._cb_height) 95 self._height.set_value(height) 96 self._height.handler_unblock_by_func(self._cb_height)
97
98 - def _cb_height(self, widget):
99 height = widget.get_value_as_int() 100 d = self.effectCallRemote("setHeight", height) 101 d.addErrback(self.setErrback)
102
103 - def _cb_width(self, widget):
104 width = widget.get_value_as_int() 105 d = self.effectCallRemote("setWidth", width) 106 d.addErrback(self.setErrback)
107
108 - def _cb_par(self, _):
109 par_n = self._par_n.get_value_as_int() 110 par_d = self._par_d.get_value_as_int() 111 d = self.effectCallRemote("setPAR", (par_n, par_d)) 112 d.addErrback(self.setErrback)
113
114 - def _cb_is_square(self, widget):
115 is_square = self._is_square.get_active() 116 d = self.effectCallRemote("setIsSquare", is_square) 117 d.addErrback(self.setErrback)
118
119 - def _cb_add_borders(self, widget):
120 add_borders = self._add_borders.get_active() 121 d = self.effectCallRemote("setAddBorders", add_borders) 122 d.addErrback(self.setErrback)
123
124 - def _cb_apply(self, widget):
125 d = self.effectCallRemote("apply") 126 d.addErrback(self.setErrback)
127
128 - def setErrback(self, failure):
129 self.warning("Failure %s setting property: %s" % ( 130 failure.type, failure.getErrorMessage())) 131 return None
132