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 from flumotion.common import messages
25
26 from flumotion.common.i18n import N_, gettexter, ngettext
27 from flumotion.wizard.models import VideoConverter
28 from flumotion.wizard.workerstep import WorkerWizardStep
29
30 __version__ = "$Rev: 6228 $"
31 T_ = gettexter()
32 _ = gettext.gettext
33
34
36 componentType = 'overlay-converter'
37
39 super(Overlay, self).__init__()
40 self._videoProducer = video_producer
41 self.can_overlay = False
42 self.show_logo = True
43 self.properties.show_text = True
44 self.properties.text = _("Flumotion")
45
46
47
49 if self.can_overlay:
50 if self.show_logo or self.properties.show_text:
51 return True
52 return False
53
54
55
66
67
69 name = 'Overlay'
70 title = _('Overlay')
71 section = _('Production')
72 gladeFile = 'overlay-wizard.glade'
73 icon = 'overlay.png'
74 componentType = 'overlay'
75
76 - def __init__(self, wizard, video_producer):
79
80
81
83 if self.model.hasOverlay():
84 return self.model
85
86
87
89 self.text.data_type = str
90
91 self.add_proxy(self.model, ['show_logo'])
92 self.add_proxy(self.model.properties, ['show_text', 'text'])
93
97
103
104
105
107 self.show_text.set_sensitive(sensitive)
108 self.show_logo.set_sensitive(sensitive)
109 self.text.set_sensitive(sensitive)
110
112 self.model.can_overlay = False
113 def importError(error):
114 self.info('could not import PIL')
115 message = messages.Warning(
116 T_(N_("Worker '%s' cannot import module '%s'."),
117 self.worker, 'PIL'))
118 message.add(
119 T_(N_("\nThis module is part of '%s'."),
120 'Python Imaging Library'))
121 message.add(
122 T_(N_("\nThe project's homepage is %s"),
123 'http://www.pythonware.com/products/pil/'))
124 message.add(
125 T_(N_("\n\nClick \"Forward\" to proceed without overlay.")))
126 message.id = 'module-PIL'
127 self.wizard.add_msg(message)
128 self.wizard.taskFinished()
129 self._setSensitive(False)
130
131 def checkImport(unused):
132 self.wizard.taskFinished()
133
134 self.model.can_overlay = True
135
136 def checkElements(elements):
137 if elements:
138 f = ngettext("Worker '%s' is missing GStreamer element '%s'.",
139 "Worker '%s' is missing GStreamer elements '%s'.",
140 len(elements))
141 message = messages.Warning(
142 T_(f, self.worker, "', '".join(elements)), id='overlay')
143 message.add(
144 T_(N_("\n\nClick \"Forward\" to proceed without overlay.")))
145 self.wizard.add_msg(message)
146 self.wizard.taskFinished()
147 self._setSensitive(False)
148 return
149 else:
150 self.wizard.clear_msg('overlay')
151
152
153 d = self.wizard.checkImport(self.worker, 'PIL')
154 d.addCallback(checkImport)
155 d.addErrback(importError)
156
157 self.wizard.waitForTask('overlay')
158
159 d = self.wizard.checkElements(
160 self.worker, 'pngenc', 'ffmpegcolorspace', 'videomixer')
161 d.addCallback(checkElements)
162
163
164
165 - def on_show_text__toggled(self, button):
166 self.text.set_sensitive(button.get_active())
167