~timo-jyrinki/ubuntu/trusty/pitivi/backport_utopic_fixes

« back to all changes in this revision

Viewing changes to pitivi/clipproperties.py

  • Committer: Package Import Robot
  • Author(s): Sebastian Dröge
  • Date: 2014-03-29 15:22:50 UTC
  • mto: (3.1.23 experimental)
  • mto: This revision was merged to the branch mainline in revision 44.
  • Revision ID: package-import@ubuntu.com-20140329152250-flg9onx416bqf3e3
Tags: upstream-0.93
Import upstream version 0.93

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Pitivi video editor
2
2
#
3
 
#       clipproperties.py
 
3
#       pitivi/clipproperties.py
4
4
#
5
5
# Copyright (C) 2010 Thibault Saunier <tsaunier@gnome.org>
6
6
#
31
31
 
32
32
from gettext import gettext as _
33
33
 
34
 
from pitivi.check import missing_soft_deps
35
34
from pitivi.configure import get_ui_dir
36
35
 
37
36
from pitivi.dialogs.depsmanager import DepsManager
69
68
 
70
69
class ClipProperties(Gtk.ScrolledWindow, Loggable):
71
70
    """
72
 
    Widget for configuring clips properties
 
71
    Widget for configuring the selected clip.
73
72
    """
74
73
 
75
74
    def __init__(self, instance, uiman):
80
79
        self._project = None
81
80
 
82
81
        self.infobar_box = Gtk.VBox()
83
 
        effect_properties_handling = EffectsPropertiesManager(instance)
84
 
        self.effect_expander = EffectProperties(instance, effect_properties_handling, self)
 
82
        effects_properties_manager = EffectsPropertiesManager(instance)
 
83
        self.effect_expander = EffectProperties(instance, effects_properties_manager, self)
85
84
        self.effect_expander.set_vexpand(False)
86
85
        # Transformation boxed DISABLED
87
86
        #self.transformation_expander = TransformationProperties(instance, instance.action_log)
138
137
class EffectProperties(Gtk.Expander, Loggable):
139
138
    """
140
139
    Widget for viewing and configuring effects
 
140
 
 
141
    @type instance: C{Pitivi}
 
142
    @type effects_properties_manager: C{EffectsPropertiesManager}
141
143
    """
142
144
    # Note: This should be inherited from Gtk.Expander when we get other things
143
145
    # to put in ClipProperties, that is why this is done this way
144
146
 
145
 
    def __init__(self, instance, effect_properties_handling, clip_properties):
 
147
    def __init__(self, instance, effects_properties_manager, clip_properties):
146
148
        # Set up the expander widget that will contain everything:
147
149
        Gtk.Expander.__init__(self)
148
150
        self.set_expanded(True)
156
158
        self.selected_effects = []
157
159
        self.clips = []
158
160
        self._effect_config_ui = None
159
 
        self.effect_props_handling = effect_properties_handling
 
161
        self.effects_properties_manager = effects_properties_manager
160
162
        self.clip_properties = clip_properties
161
163
        self._config_ui_h_pos = None
162
164
        self._timeline = None
163
165
 
164
166
        # The toolbar that will go between the list of effects and properties
165
167
        self._toolbar = Gtk.Toolbar()
166
 
        self._toolbar.get_style_context().add_class("inline-toolbar")
 
168
        self._toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR)
167
169
        self._toolbar.set_icon_size(Gtk.IconSize.SMALL_TOOLBAR)
168
170
        removeEffectButton = Gtk.ToolButton()
169
171
        removeEffectButton.set_icon_name("list-remove-symbolic")
178
180
        self.treeview_scrollwin.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
179
181
 
180
182
        self.storemodel = Gtk.ListStore(bool, str, str, str, object)
181
 
        self.treeview = Gtk.TreeView(self.storemodel)
 
183
        self.treeview = Gtk.TreeView(model=self.storemodel)
182
184
        self.treeview_scrollwin.add(self.treeview)
183
185
        self.treeview.set_property("rules_hint", True)
184
186
        self.treeview.set_property("has_tooltip", True)
223
225
 
224
226
        # Prepare the main container widgets and lay out everything
225
227
        self._vcontent = Gtk.VPaned()
226
 
        self._table = Gtk.Table(3, 1, False)
 
228
        self._table = Gtk.Table(n_rows=3, n_columns=1, homogeneous=False)
227
229
        self._table.attach(self.treeview_scrollwin, 0, 1, 0, 1)
228
230
        self._table.attach(self._toolbar, 0, 1, 2, 3, yoptions=Gtk.AttachOptions.FILL)
229
231
        self._vcontent.pack1(self._table, resize=True, shrink=False)
241
243
        self.treeview.connect("drag-motion", self._dragMotionCb)
242
244
        self.treeview.connect("query-tooltip", self._treeViewQueryTooltipCb)
243
245
        self._vcontent.connect("notify", self._vcontentNotifyCb)
244
 
        removeEffectButton.connect("clicked", self._removeEffectClicked)
 
246
        removeEffectButton.connect("clicked", self._removeEffectCb)
245
247
        self.app.connect("new-project-loaded", self._newProjectLoadedCb)
246
248
        self.connect('notify::expanded', self._expandedCb)
247
249
        self.connected = False
306
308
    def _connectTimelineSelection(self, timeline):
307
309
        self.timeline = timeline
308
310
 
309
 
    def _removeEffectClicked(self, toolbutton):
 
311
    def _removeEffectCb(self, toolbutton):
310
312
        if not self.selection.get_selected()[1]:
 
313
            # Cannot remove nothing,
311
314
            return
312
 
        else:
313
 
            effect = self.storemodel.get_value(self.selection.get_selected()[1],
314
 
                                               COL_TRACK_EFFECT)
315
 
            self._removeEffect(effect)
 
315
        effect = self.storemodel.get_value(self.selection.get_selected()[1],
 
316
                                           COL_TRACK_EFFECT)
 
317
        self._removeEffect(effect)
316
318
 
317
319
    def _removeEffect(self, effect):
318
320
        self.app.action_log.begin("remove effect")
319
321
        if self._effect_config_ui:
320
322
            self._effect_config_ui.get_children()[0].get_children()[0].resetKeyframeToggleButtons()
321
 
        self._cleanCache(effect)
 
323
        self.effects_properties_manager.cleanCache(effect)
322
324
        effect.get_parent().remove(effect)
323
325
        self._updateTreeview()
324
326
        self.app.action_log.commit()
325
327
 
326
 
    def _cleanCache(self, effect):
327
 
        config_ui = self.effect_props_handling.cleanCache(effect)
328
 
 
329
328
    def addEffectToClip(self, clip, bin_desc):
330
329
        media_type = self.app.effects.getFactoryFromName(bin_desc).media_type
331
330
 
451
450
                    self._vcontent.remove(widget)
452
451
 
453
452
            element = effect
454
 
            ui = self.effect_props_handling.getEffectConfigurationUI(element)
 
453
            ui = self.effects_properties_manager.getEffectConfigurationUI(element)
455
454
 
456
455
            if self._effect_config_ui:
457
 
                self._effect_config_ui.get_children()[0].get_children()[0].resetShowKeyframesButton()
 
456
                self._effect_config_ui.get_children()[0].get_children()[0].resetKeyframeToggleButtons()
458
457
 
459
458
            self._effect_config_ui = ui
460
459
            if self._effect_config_ui:
488
487
        self.default_values = {}
489
488
        self.set_label(_("Transformation"))
490
489
 
491
 
        if not "Frei0r" in missing_soft_deps:
492
 
            self.builder = Gtk.Builder()
493
 
            self.builder.add_from_file(os.path.join(get_ui_dir(),
494
 
                        "cliptransformation.ui"))
 
490
        self.builder = Gtk.Builder()
 
491
        self.builder.add_from_file(os.path.join(get_ui_dir(),
 
492
                                                "cliptransformation.ui"))
495
493
 
496
 
            self.add(self.builder.get_object("transform_box"))
497
 
            self.show_all()
498
 
            self._initButtons()
 
494
        self.add(self.builder.get_object("transform_box"))
 
495
        self.show_all()
 
496
        self._initButtons()
499
497
        self.connect('notify::expanded', self._expandedCb)
500
498
        self.hide()
501
499
 
521
519
        self.app.gui.viewer.setZoom(scale.get_value())
522
520
 
523
521
    def _expandedCb(self, expander, params):
524
 
        if not "Frei0r" in missing_soft_deps:
525
 
            if self._selected_clip:
526
 
                self.effect = self._findOrCreateEffect("frei0r-filter-scale0tilt")
527
 
                self._updateSpinButtons()
528
 
                self.set_expanded(self.get_expanded())
529
 
                self._updateBoxVisibility()
530
 
                self.zoom_scale.set_value(1.0)
 
522
        if self._selected_clip:
 
523
            self.effect = self._findOrCreateEffect("frei0r-filter-scale0tilt")
 
524
            self._updateSpinButtons()
 
525
            self.set_expanded(self.get_expanded())
 
526
            self._updateBoxVisibility()
 
527
            self.zoom_scale.set_value(1.0)
531
528
        else:
532
529
            if self.get_expanded():
533
530
                DepsManager(self.app)