本文整理汇总了Python中pitivi.utils.pipeline.Seeker.flush方法的典型用法代码示例。如果您正苦于以下问题:Python Seeker.flush方法的具体用法?Python Seeker.flush怎么用?Python Seeker.flush使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pitivi.utils.pipeline.Seeker
的用法示例。
在下文中一共展示了Seeker.flush方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TitleEditor
# 需要导入模块: from pitivi.utils.pipeline import Seeker [as 别名]
# 或者: from pitivi.utils.pipeline.Seeker import flush [as 别名]
#.........这里部分代码省略.........
self.log("Title text set to %s", source_text)
if source_text is None:
# FIXME: sometimes we get a TextOverlay/TitleSource
# without a valid text property. This should not happen.
source_text = ""
self.warning('Source did not have a text property, setting it to "" to avoid pango choking up on None')
self.pangobuffer.set_text(source_text)
self.textbuffer.set_text(source_text)
self.settings['xpos'].set_value(self.source.get_xpos())
self.settings['ypos'].set_value(self.source.get_ypos())
self.settings['valignment'].set_active_id(self.source.get_valignment().value_name)
self.settings['halignment'].set_active_id(self.source.get_halignment().value_name)
if hasattr(self.source, "get_background"):
self.bt["back_color"].set_visible(True)
color = self.source.get_background()
color = Gdk.RGBA(color / 256 ** 2 % 256 / 255.,
color / 256 ** 1 % 256 / 255.,
color / 256 ** 0 % 256 / 255.,
color / 256 ** 3 % 256 / 255.)
self.bt["back_color"].set_rgba(color)
else:
self.bt["back_color"].set_visible(False)
def _updateSourceText(self, updated_obj):
if self.source is not None:
if self.markup_button.get_active():
text = self.textbuffer.get_text(self.textbuffer.get_start_iter(),
self.textbuffer.get_end_iter(),
True)
else:
text = self.pangobuffer.get_text()
self.log("Source text updated to %s", text)
self.source.set_text(text)
self.seeker.flush()
def _updateSource(self, updated_obj):
"""
Handle changes in one of the advanced property widgets at the bottom
"""
if self.source is None:
return
for name, obj in self.settings.items():
if obj == updated_obj:
if name == "valignment":
self.source.set_valignment(getattr(GES.TextVAlign, obj.get_active_id().upper()))
self.settings["ypos"].set_visible(obj.get_active_id() == "position")
elif name == "halignment":
self.source.set_halignment(getattr(GES.TextHAlign, obj.get_active_id().upper()))
self.settings["xpos"].set_visible(obj.get_active_id() == "position")
elif name == "xpos":
self.settings["halignment"].set_active_id("position")
self.source.set_xpos(obj.get_value())
elif name == "ypos":
self.settings["valignment"].set_active_id("position")
self.source.set_ypos(obj.get_value())
self.seeker.flush()
return
def _reset(self):
#TODO: reset not only text
self.markup_button.set_active(False)
self.pangobuffer.set_text("")
self.textbuffer.set_text("")
#Set right buffer
self._markupToggleCb(self.markup_button)
示例2: ViewerWidget
# 需要导入模块: from pitivi.utils.pipeline import Seeker [as 别名]
# 或者: from pitivi.utils.pipeline.Seeker import flush [as 别名]
class ViewerWidget(Gtk.DrawingArea, Loggable):
"""
Widget for displaying properly GStreamer video sink
@ivar settings: The settings of the application.
@type settings: L{GlobalSettings}
"""
__gsignals__ = {}
def __init__(self, settings=None):
Gtk.DrawingArea.__init__(self)
Loggable.__init__(self)
self.seeker = Seeker()
self.settings = settings
self.box = None
self.stored = False
self.area = None
self.zoom = 1.0
self.sink = None
self.pixbuf = None
self.pipeline = None
self.transformation_properties = None
# FIXME PyGi Styling with Gtk3
#for state in range(Gtk.StateType.INSENSITIVE + 1):
#self.modify_bg(state, self.style.black)
def init_transformation_events(self):
self.set_events(Gdk.EventMask.BUTTON_PRESS_MASK
| Gdk.EventMask.BUTTON_RELEASE_MASK
| Gdk.EventMask.POINTER_MOTION_MASK
| Gdk.EventMask.POINTER_MOTION_HINT_MASK)
def show_box(self):
if not self.box:
self.box = TransformationBox(self.settings)
self.box.init_size(self.area)
self._update_gradient()
self.connect("button-press-event", self.button_press_event)
self.connect("button-release-event", self.button_release_event)
self.connect("motion-notify-event", self.motion_notify_event)
self.connect("size-allocate", self._sizeCb)
self.box.set_transformation_properties(self.transformation_properties)
self.renderbox()
def _sizeCb(self, widget, area):
# The transformation box is cleared when using regular rendering
# so we need to flush the pipeline
self.seeker.flush()
def hide_box(self):
if self.box:
self.box = None
self.disconnect_by_func(self.button_press_event)
self.disconnect_by_func(self.button_release_event)
self.disconnect_by_func(self.motion_notify_event)
self.seeker.flush()
self.zoom = 1.0
if self.sink:
self.sink.set_render_rectangle(*self.area)
def set_transformation_properties(self, transformation_properties):
self.transformation_properties = transformation_properties
def _store_pixbuf(self):
"""
When not playing, store a pixbuf of the current viewer image.
This will allow it to be restored for the transformation box.
"""
if self.box and self.zoom != 1.0:
# The transformation box is active and dezoomed
# crop away 1 pixel border to avoid artefacts on the pixbuf
self.pixbuf = Gdk.pixbuf_get_from_window(self.get_window(),
self.box.area.x + 1, self.box.area.y + 1,
self.box.area.width - 2, self.box.area.height - 2)
else:
self.pixbuf = Gdk.pixbuf_get_from_window(self.get_window(),
0, 0,
self.get_window().get_width(),
self.get_window().get_height())
self.stored = True
def do_realize(self):
"""
Redefine gtk DrawingArea's do_realize method to handle multiple OSes.
This is called when creating the widget to get the window ID.
"""
Gtk.DrawingArea.do_realize(self)
if platform.system() == 'Windows':
self.window_xid = self.props.window.handle
else:
self.window_xid = self.get_property('window').get_xid()
def button_release_event(self, widget, event):
if event.button == 1:
self.box.update_effect_properties()
self.box.release_point()
#.........这里部分代码省略.........
示例3: ViewerWidget
# 需要导入模块: from pitivi.utils.pipeline import Seeker [as 别名]
# 或者: from pitivi.utils.pipeline.Seeker import flush [as 别名]
class ViewerWidget(Gtk.AspectFrame, Loggable):
"""
Widget for displaying a GStreamer video sink.
@ivar settings: The settings of the application.
@type settings: L{GlobalSettings}
"""
__gsignals__ = {}
def __init__(self, settings=None, realizedCb=None):
# Prevent black frames and flickering while resizing or changing focus:
# The aspect ratio gets overridden by setDisplayAspectRatio.
Gtk.AspectFrame.__init__(self, xalign=0.5, yalign=1.0,
ratio=4.0 / 3.0, obey_child=False)
Loggable.__init__(self)
self.drawing_area = GtkClutter.Embed()
self.drawing_area.set_double_buffered(False)
# We keep the ViewerWidget hidden initially, or the desktop wallpaper
# would show through the non-double-buffered widget!
if realizedCb:
self.drawing_area.connect("realize", realizedCb, self)
self.add(self.drawing_area)
layout_manager = Clutter.BinLayout(x_align=Clutter.BinAlignment.FILL, y_align=Clutter.BinAlignment.FILL)
self.drawing_area.get_stage().set_layout_manager(layout_manager)
self.texture = Clutter.Texture()
# This is a trick to make the viewer appear darker at the start.
self.texture.set_from_rgb_data(data=[0] * 3, has_alpha=False,
width=1, height=1, rowstride=3, bpp=3,
flags=Clutter.TextureFlags.NONE)
self.drawing_area.get_stage().add_child(self.texture)
self.drawing_area.show()
self.seeker = Seeker()
self.settings = settings
self.box = None
self.stored = False
self.area = None
self.zoom = 1.0
self.sink = None
self.pixbuf = None
self.pipeline = None
self.transformation_properties = None
# FIXME PyGi Styling with Gtk3
#for state in range(Gtk.StateType.INSENSITIVE + 1):
#self.modify_bg(state, self.style.black)
def setDisplayAspectRatio(self, ratio):
self.set_property("ratio", float(ratio))
def init_transformation_events(self):
self.fixme("TransformationBox disabled")
"""
self.set_events(Gdk.EventMask.BUTTON_PRESS_MASK
| Gdk.EventMask.BUTTON_RELEASE_MASK
| Gdk.EventMask.POINTER_MOTION_MASK
| Gdk.EventMask.POINTER_MOTION_HINT_MASK)
"""
def show_box(self):
self.fixme("TransformationBox disabled")
"""
if not self.box:
self.box = TransformationBox(self.settings)
self.box.init_size(self.area)
self._update_gradient()
self.connect("button-press-event", self.button_press_event)
self.connect("button-release-event", self.button_release_event)
self.connect("motion-notify-event", self.motion_notify_event)
self.connect("size-allocate", self._sizeCb)
self.box.set_transformation_properties(self.transformation_properties)
self.renderbox()
"""
def _sizeCb(self, unused_widget, unused_area):
# The transformation box is cleared when using regular rendering
# so we need to flush the pipeline
self.seeker.flush()
def hide_box(self):
if self.box:
self.box = None
self.disconnect_by_func(self.button_press_event)
self.disconnect_by_func(self.button_release_event)
self.disconnect_by_func(self.motion_notify_event)
self.seeker.flush()
self.zoom = 1.0
if self.sink:
self.sink.set_render_rectangle(*self.area)
def set_transformation_properties(self, transformation_properties):
self.transformation_properties = transformation_properties
def _store_pixbuf(self):
"""
When not playing, store a pixbuf of the current viewer image.
This will allow it to be restored for the transformation box.
"""
#.........这里部分代码省略.........
示例4: ViewerWidget
# 需要导入模块: from pitivi.utils.pipeline import Seeker [as 别名]
# 或者: from pitivi.utils.pipeline.Seeker import flush [as 别名]
class ViewerWidget(Gtk.AspectFrame, Loggable):
"""
Widget for displaying a GStreamer video sink.
@ivar settings: The settings of the application.
@type settings: L{GlobalSettings}
"""
__gsignals__ = {}
def __init__(self, sink, app=None):
# Prevent black frames and flickering while resizing or changing focus:
# The aspect ratio gets overridden by setDisplayAspectRatio.
Gtk.AspectFrame.__init__(self, xalign=0.5, yalign=0.5,
ratio=4.0 / 3.0, obey_child=False)
Loggable.__init__(self)
self.__transformationBox = TransformationBox(app)
# We only work with a gtkglsink inside a glsinkbin
try:
self.drawing_area = sink.props.sink.props.widget
except AttributeError:
self.drawing_area = sink.props.widget
# We keep the ViewerWidget hidden initially, or the desktop wallpaper
# would show through the non-double-buffered widget!
self.add(self.__transformationBox)
self.__transformationBox.add(self.drawing_area)
self.drawing_area.show()
self.seeker = Seeker()
if app:
self.settings = app.settings
self.app = app
self.box = None
self.stored = False
self.area = None
self.zoom = 1.0
self.sink = sink
self.pixbuf = None
self.pipeline = None
self.transformation_properties = None
self._setting_ratio = False
self.__startDraggingPosition = None
self.__startEditSourcePosition = None
self.__editSource = None
def setDisplayAspectRatio(self, ratio):
self._setting_ratio = True
self.set_property("ratio", float(ratio))
def _sizeCb(self, unused_widget, unused_area):
# The transformation box is cleared when using regular rendering
# so we need to flush the pipeline
self.seeker.flush()
def do_get_preferred_width(self):
# Do not let a chance for Gtk to choose video natural size
# as we want to have full control
return 0, 1
def do_get_preferred_height(self):
# Do not let a chance for Gtk to choose video natural size
# as we want to have full control
return 0, 1
示例5: TitleEditor
# 需要导入模块: from pitivi.utils.pipeline import Seeker [as 别名]
# 或者: from pitivi.utils.pipeline.Seeker import flush [as 别名]
#.........这里部分代码省略.........
assert isinstance(source, GES.TextOverlay) or \
isinstance(source, GES.TitleSource)
self.source = source
self._updateFromSource()
self._activate()
def unset_source(self):
self._deactivate()
self.source = None
def _createCb(self, unused_button):
"""
The user clicked the "Create and insert" button, initialize the UI
"""
clip = GES.TitleClip()
clip.set_text("")
clip.set_duration(int(Gst.SECOND * 5))
# TODO: insert on the current layer at the playhead position.
# If no space is available, create a new layer to insert to on top.
self.app.gui.timeline_ui.insertEnd([clip])
self.app.gui.timeline_ui.timeline.selection.setToObj(clip, SELECT)
self._setting_initial_props = True
clip.set_color(FOREGROUND_DEFAULT_COLOR)
clip.set_background(BACKGROUND_DEFAULT_COLOR)
self._setting_initial_props = False
def _propertyChangedCb(self, source, unused_gstelement, pspec):
if self._setting_initial_props:
return
if self._setting_props:
self.seeker.flush()
return
flush = False
if pspec.name == "text":
if self._setWidgetText() is True:
flush = True
elif pspec.name in ["xpos", "ypos"]:
value = self.source.get_child_property(pspec.name)[1]
if self.settings[pspec.name].get_value() == value:
return
flush = True
self.settings[pspec.name].set_value(value)
elif pspec.name in ["valignment", "halignment"]:
value = self.source.get_child_property(pspec.name)[1].value_name
if self.settings[pspec.name].get_active_id() == value:
return
flush = True
self.settings[pspec.name].set_active_id(value)
elif pspec.name == "font-desc":
value = self.source.get_child_property("font-desc")[1]
if self.font_button.get_font_desc() == value:
return
flush = True
font_desc = Pango.FontDescription.from_string(value)
self.font_button.set_font_desc(font_desc)
elif pspec.name == "color":
color = argb_to_gdk_rgba(self.source.get_child_property("color")[1])
if color == self.foreground_color_button.get_rgba():
return