[pitivi] Workaournd to make aspectcropratio working
- From: Edward Hervey <edwardrv src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] Workaournd to make aspectcropratio working
- Date: Wed, 22 Sep 2010 13:48:19 +0000 (UTC)
commit 9644892dd874eab73e19843095e640e0b4ad3660
Author: Thibault Saunier <tsaunier gnome org>
Date: Fri Sep 17 15:42:37 2010 +0200
Workaournd to make aspectcropratio working
pitivi/ui/dynamic.py | 18 +++++++++++++++++
pitivi/ui/effectsconfiguration.py | 38 +++++++++++++++++++++++-------------
pitivi/ui/gstwidget.py | 2 +-
3 files changed, 43 insertions(+), 15 deletions(-)
---
diff --git a/pitivi/ui/dynamic.py b/pitivi/ui/dynamic.py
index e03ac12..10001af 100644
--- a/pitivi/ui/dynamic.py
+++ b/pitivi/ui/dynamic.py
@@ -134,6 +134,10 @@ class TextWidget(gtk.HBox, DynamicWidget):
return self.last_valid
return self.text.get_text()
+ def addChoices(self, choices):
+ for choice in choices:
+ self.combo.append_text(choice)
+
def _textChanged(self, unused_widget):
text = self.text.get_text()
if self.matches:
@@ -258,6 +262,20 @@ class FractionWidget(TextWidget, DynamicWidget):
return True
return False
+ def addPresets(self, presets):
+ choices = []
+ for preset in presets:
+ if type(preset) is str:
+ strval = preset
+ preset = self._parseText(preset)
+ else:
+ strval = "%g:%g" % (preset.num, preset.denom)
+ fpreset = float(preset)
+ if self.low <= fpreset and fpreset <= self.high:
+ choices.append(strval)
+
+ self.addChoices(choices)
+
def setWidgetValue(self, value):
if type(value) is str:
value = self._parseText(value)
diff --git a/pitivi/ui/effectsconfiguration.py b/pitivi/ui/effectsconfiguration.py
index 052ef50..9c503dd 100644
--- a/pitivi/ui/effectsconfiguration.py
+++ b/pitivi/ui/effectsconfiguration.py
@@ -22,11 +22,12 @@
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
+import gst
import gtk
import gobject
-from pitivi.pipeline import PipelineError
from pitivi.ui.gstwidget import GstElementSettingsWidget
+from pitivi.ui.dynamic import FractionWidget
PROPS_TO_IGNORE = ['name', 'qos', 'silent', 'message']
@@ -45,19 +46,17 @@ class EffectsPropertiesHandling:
"""
if effect not in self.cache_dict:
#Here we should handle special effects configuration UI
- if 'aspectratiocrop' in effect.get_name():
- effect_set_ui = AspectRatioUi()
- else:
- effect_set_ui = GstElementSettingsWidget()
- effect_set_ui.setElement(effect, ignore=PROPS_TO_IGNORE,
- default_btn=True, use_element_props=True)
- nb_rows = effect_set_ui.get_children()[0].get_property('n-rows')
- effect_configuration_ui = gtk.ScrolledWindow()
- effect_configuration_ui.add_with_viewport(effect_set_ui)
- effect_configuration_ui.set_policy(gtk.POLICY_AUTOMATIC,
- gtk.POLICY_AUTOMATIC)
- self.cache_dict[effect] = effect_configuration_ui
- self._connectAllWidgetCbs(effect_set_ui, effect)
+ effect_set_ui = GstElementSettingsWidget()
+ effect_set_ui.setElement(effect, ignore=PROPS_TO_IGNORE,
+ default_btn=True, use_element_props=True)
+ nb_rows = effect_set_ui.get_children()[0].get_property('n-rows')
+ effect_configuration_ui = gtk.ScrolledWindow()
+ effect_configuration_ui.add_with_viewport(effect_set_ui)
+ effect_configuration_ui.set_policy(gtk.POLICY_AUTOMATIC,
+ gtk.POLICY_AUTOMATIC)
+ self.cache_dict[effect] = effect_configuration_ui
+ self._connectAllWidgetCbs(effect_set_ui, effect)
+ self._postConfiguration(effect, effect_set_ui)
effect_set_ui = self._getUiToSetEffect(effect)
@@ -75,6 +74,12 @@ class EffectsPropertiesHandling:
self.cache_dict.pop(effect)
return conf_ui
+ def _postConfiguration(self, effect, effect_set_ui):
+ if 'aspectratiocrop' in effect.get_name():
+ for widget in effect_set_ui.get_children()[0].get_children():
+ if isinstance(widget, FractionWidget):
+ widget.addPresets(["4:3", "5:4", "9:3", "16:9", "16:10"])
+
def _getUiToSetEffect(self, effect):
""" Permit to get the widget to set the effect and not its container """
if type(self.cache_dict[effect]) is gtk.ScrolledWindow:
@@ -93,6 +98,11 @@ class EffectsPropertiesHandling:
def _onValueChangedCb(self, widget, dynamic, prop):
value = dynamic.getWidgetValue()
+
+ #FIXME Workaround in order to make aspectratiocrop working
+ if isinstance(value, gst.Fraction):
+ value = gst.Fraction(int(value.num),int(value.denom))
+
if value != self._current_element_values.get(prop.name):
self.action_log.begin("Effect property change")
self._current_effect_setting_ui.element.set_property(prop.name, value)
diff --git a/pitivi/ui/gstwidget.py b/pitivi/ui/gstwidget.py
index 1aa6880..9802fc0 100644
--- a/pitivi/ui/gstwidget.py
+++ b/pitivi/ui/gstwidget.py
@@ -60,7 +60,7 @@ def make_property_widget(unused_element, prop, value=None):
choices.append([val.value_name, int(val)])
widget = dynamic.ChoiceWidget(choices, default=prop.default_value)
elif type_name == 'GstFraction':
- widget = dynamic.FractionWidget(None, None, default = prop.default_value)
+ widget = dynamic.FractionWidget(None, presets=["0:1"], default=prop.default_value)
else:
widget = dynamic.DefaultWidget(type_name)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]