1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 import gettext
32 import os
33
34 from zope.interface import implements
35
36 from flumotion.common import errors
37 from flumotion.common.i18n import N_, gettexter
38 from flumotion.common.messages import Info
39 from flumotion.wizard.basesteps import VideoProducerStep
40 from flumotion.wizard.interfaces import IProducerPlugin
41 from flumotion.wizard.models import VideoProducer
42
43 __version__ = "$Rev: 7028 $"
44 _ = gettext.gettext
45 T_ = gettexter()
46
47
57
58
60 name = 'TVCard'
61 title = _('TV Card')
62 icon = 'tv.png'
63 gladeFile = os.path.join(os.path.dirname(os.path.abspath(__file__)),
64 'wizard.glade')
65 componentType = 'bttv'
66
70
71
72
74 self._inSetup = True
75
76 self.device.data_type = str
77 self.width.data_type = int
78 self.height.data_type = int
79 self.framerate.data_type = float
80 self.channel.data_type = str
81 self.signal.data_type = str
82
83 self.channel.prefill([''])
84 self.signal.prefill([''])
85 self.device.prefill(['/dev/video0',
86 '/dev/video1',
87 '/dev/video2',
88 '/dev/video3'])
89
90 self.add_proxy(self.model.properties,
91 ['device', 'height', 'width',
92 'framerate', 'signal', 'channel'])
93
94 self._inSetup = False
95
100
101
102
104 self.channel.clear()
105 self.channel.set_sensitive(False)
106 self.signal.clear()
107 self.signal.set_sensitive(False)
108
110 if self._inSetup:
111 return None
112
113 self.wizard.waitForTask('bttv checks')
114
115 device = self.device.get_selected()
116 assert device
117 msg = Info(T_(
118 N_("Probing the TV card. This can take a while...")),
119 mid='tvcard-check')
120 self.wizard.add_msg(msg)
121 d = self.runInWorker('flumotion.worker.checks.video', 'checkTVCard',
122 device, mid='tvcard-check')
123
124 def errRemoteRunFailure(failure):
125 failure.trap(errors.RemoteRunFailure)
126 self.debug('a RemoteRunFailure happened')
127 self._clearCombos()
128 self.wizard.taskFinished(True)
129
130 def errRemoteRunError(failure):
131 failure.trap(errors.RemoteRunError)
132 self.debug('a RemoteRunError happened')
133 self._clearCombos()
134 self.wizard.taskFinished(True)
135
136 def deviceFound(result):
137 if not result:
138 self._clearCombos()
139 self.wizard.taskFinished(True)
140 return None
141
142 deviceName, channels, signals = result
143 self.wizard.clear_msg('tvcard-check')
144 self.channel.prefill(channels)
145 self.channel.set_sensitive(True)
146 self.signal.prefill(signals)
147 self.signal.set_sensitive(True)
148 self.wizard.taskFinished()
149
150 d.addCallback(deviceFound)
151 d.addErrback(errRemoteRunFailure)
152 d.addErrback(errRemoteRunError)
153
154
155
158
159
168