1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import gettext
23
24 import gtk
25
26 from flumotion.common.errors import NoBundleError
27 from flumotion.common.i18n import N_
28 from flumotion.ui.wizard import WizardStep
29
30
31 from flumotion.common import componentui
32
33 __version__ = "$Rev: 6970 $"
34
35
36 __pychecker__ = 'no-classattr no-argsused'
37 _ = gettext.gettext
38
39
41 name = 'Production'
42 title = _('Production')
43 section = _('Production')
44 icon = 'source.png'
45 gladeFile = 'production-wizard.glade'
46
48 self._audioProducer = None
49 self._videoProducer = None
50 self._loadedSteps = None
51 WizardStep.__init__(self, wizard)
52
53
54
56 """Returns if audio will be used in the stream
57 created by the wizard.
58
59 @returns: if audio will be used
60 @rtype: bool
61 """
62 return self.has_audio.get_active()
63
65 """Returns if video will be used in the stream
66 created by the wizard.
67
68 @returns: if video will be used
69 @rtype: bool
70 """
71 return self.has_video.get_active()
72
74 """Returns the selected audio producer or None
75 @returns: producer or None
76 @rtype: L{flumotion.wizard.models.AudioProducer}
77 """
78 if self.has_audio.get_active():
79 return self._audioProducer
80
82 """Returns the selected video producer or None
83 @returns: producer or None
84 @rtype: L{flumotion.wizard.models.VideoProducer}
85 """
86 if self.has_video.get_active():
87 return self._videoProducer
88
90 """Return the video step to be shown, given the currently
91 selected values in this step
92 @returns: video step
93 @rtype: a deferred returning a L{basesteps.VideoProducerStep} instance
94 """
95 def stepLoaded(step):
96 if step is not None:
97 self._videoProducer = step.model
98 self.wizard.taskFinished()
99 return step
100 self.wizard.waitForTask('video producer step')
101 d = self._loadStep(self.video, 'video')
102 d.addCallback(stepLoaded)
103 return d
104
106 """Return the audio step to be shown, given the currently
107 selected values in this step
108 @returns: audio step
109 @rtype: a deferred returning a L{basesteps.AudioProducerStep} instance
110 """
111 def stepLoaded(step):
112 if step is not None:
113 self._audioProducer = step.model
114 self.wizard.taskFinished()
115 return step
116 self.wizard.waitForTask('audio producer step')
117 d = self._loadStep(self.audio, 'audio')
118 d.addCallback(stepLoaded)
119 return d
120
121
122
124 self.audio.data_type = object
125 self.video.data_type = object
126
127
128 self.audio.model_attribute = 'componentType'
129 self.video.model_attribute = 'componentType'
130
131 tips = gtk.Tooltips()
132 tips.set_tip(self.has_video, _('If you want to stream video'))
133 tips.set_tip(self.has_audio, _('If you want to stream audio'))
134
135 self._populateCombos()
136
144
145
146
160
161 for ctype, combo, default_type in [
162 ('video-producer', self.video, 'videotest-producer'),
163 ('audio-producer', self.audio, 'audiotest-producer')]:
164 d = self.wizard.getWizardEntries(
165 wizardTypes=[ctype])
166 d.addCallback(gotEntries, combo, default_type)
167 combo.prefill([('...', None)])
168 combo.set_sensitive(False)
169
170 self.wizard.waitForTask('querying producers')
171 def done(_):
172 self.wizard.taskFinished()
173 self._loadedSteps = True
174 d.addCallback(done)
175
179
180 def noBundle(failure):
181 failure.trap(NoBundleError)
182
183 d = self.wizard.getWizardEntry(componentType)
184 d.addCallback(gotFactory)
185 d.addErrback(noBundle)
186
187 return d
188
194
195 entry = combo.get_selected()
196 d = self._loadPlugin(entry, type)
197 d.addCallback(pluginLoaded, entry)
198
199 return d
200
207
208
209
211 self.video.set_sensitive(button.get_active())
212 self._verify()
213
215 self.audio.set_sensitive(button.get_active())
216 self._verify()
217
220
223
224
226 name = 'Production'
227 title = _('Production')
228 section = _('Production')
229 icon = 'source.png'
230 gladeFile = 'select-producers-wizard.glade'
231
233 self._audioProducer = None
234 self._videoProducer = None
235 self._loadedSteps = None
236 WizardStep.__init__(self, wizard)
237
238
239
241 """Returns if audio will be used in the stream
242 created by the wizard.
243
244 @returns: if audio will be used
245 @rtype: bool
246 """
247 return self.has_audio.get_active()
248
250 """Returns if video will be used in the stream
251 created by the wizard.
252
253 @returns: if video will be used
254 @rtype: bool
255 """
256 return self.has_video.get_active()
257
259 """Returns the selected audio producer or None
260 @returns: producer or None
261 @rtype: L{flumotion.wizard.models.AudioProducer}
262 """
263 if self.has_audio.get_active():
264 return self.audio.get_selected()
265
267 """Returns the selected video producer or None
268 @returns: producer or None
269 @rtype: L{flumotion.wizard.models.VideoProducer}
270 """
271 if self.has_video.get_active():
272 return self.video.get_selected()
273
277
281
282
283
285 self.audio.data_type = object
286 self.video.data_type = object
287
288
289 self.audio.model_attribute = 'componentType'
290 self.video.model_attribute = 'componentType'
291
292 tips = gtk.Tooltips()
293 tips.set_tip(self.has_video, _('If you want to stream video'))
294 tips.set_tip(self.has_audio, _('If you want to stream audio'))
295
298
299
300
313
317
318
319
321 self.video.set_sensitive(button.get_active())
322 self._verify()
323
325 self.audio.set_sensitive(button.get_active())
326 self._verify()
327
330
333