pitivi r1142 - in branches/SOC_2008_BLEWIS: . pitivi/ui
- From: blewis svn gnome org
- To: svn-commits-list gnome org
- Subject: pitivi r1142 - in branches/SOC_2008_BLEWIS: . pitivi/ui
- Date: Sat, 7 Jun 2008 23:47:37 +0000 (UTC)
Author: blewis
Date: Sat Jun 7 23:47:36 2008
New Revision: 1142
URL: http://svn.gnome.org/viewvc/pitivi?rev=1142&view=rev
Log:
reviewed by: <delete if not using a buddy>
* pitivi/ui/complextimeline.py:
screwed up hadjustment code, so scrollong no longer works. Necessary
changes due to refactoring TimelineWidget.
* pitivi/ui/mainwindow.py:
Removed references to _displayTimeline which have become somewhat.
* pitivi/ui/timeline.py:
eliminated SimpleTimelineContentWidget, which has become redundant.
Informational messages will be displayed directly within
SimpleTimelineCanvas.
* pitivi/ui/timelineobjects.py:
Added SimpleTimelineWidget class which wraps SimpleTimeline in a
scrolled window. Renamed SimpleTimeline to SimpleTimelineCanvas.
moved editing mode code to SimpleTimelineWidget, so editing widget is
not contained within scrolled window or canvas. SimpleTimelineCanvas
passes new emits "edit-me" signal when it receives "edit-me" signal
from TimelineList.
Modified:
branches/SOC_2008_BLEWIS/ChangeLog
branches/SOC_2008_BLEWIS/pitivi/ui/complextimeline.py
branches/SOC_2008_BLEWIS/pitivi/ui/mainwindow.py
branches/SOC_2008_BLEWIS/pitivi/ui/timeline.py
branches/SOC_2008_BLEWIS/pitivi/ui/timelineobjects.py
Modified: branches/SOC_2008_BLEWIS/pitivi/ui/complextimeline.py
==============================================================================
--- branches/SOC_2008_BLEWIS/pitivi/ui/complextimeline.py (original)
+++ branches/SOC_2008_BLEWIS/pitivi/ui/complextimeline.py Sat Jun 7 23:47:36 2008
@@ -117,14 +117,14 @@
class ComplexTimelineWidget(gtk.VBox, ZoomableWidgetInterface):
- def __init__(self, topwidget):
+ def __init__(self):
gst.log("Creating ComplexTimelineWidget")
gtk.VBox.__init__(self)
self.zoomratio = 10.0
- self.hadj = topwidget.hadjustment
- self.vadj = topwidget.vadjustment
+ self.hadj = gtk.Adjustment()
+ self.vadj = gtk.Adjustment()
# common LayerInfoList
self.layerInfoList = LayerInfoList(instance.PiTiVi.current.timeline)
@@ -152,8 +152,8 @@
self.hadj, self.layerInfoList)
# ... in a scrolled window
- self.scrolledWindow = gtk.ScrolledWindow()
- self.scrolledWindow.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
+ self.scrolledWindow = gtk.ScrolledWindow(self.hadj, self.vadj)
+ self.scrolledWindow.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_AUTOMATIC)
self.scrolledWindow.add_with_viewport(self.compositionLayers)
self.pack_start(self.scrolledWindow, expand=True)
Modified: branches/SOC_2008_BLEWIS/pitivi/ui/mainwindow.py
==============================================================================
--- branches/SOC_2008_BLEWIS/pitivi/ui/mainwindow.py (original)
+++ branches/SOC_2008_BLEWIS/pitivi/ui/mainwindow.py Sat Jun 7 23:47:36 2008
@@ -109,8 +109,6 @@
if not isinstance(instance.PiTiVi.playground.current, SmartTimelineBin):
return
self.render_button.set_sensitive((duration > 0) and True or False)
- if duration > 0 :
- gobject.idle_add(self.timeline.simpleview._displayTimeline)
def _currentPlaygroundChangedCb(self, playground, smartbin):
if smartbin == playground.default:
@@ -123,7 +121,6 @@
self._timelineDurationChangedCb)
if smartbin.project.timeline.videocomp.duration > 0:
self.render_button.set_sensitive(True)
- gobject.idle_add(self.timeline.simpleview._displayTimeline)
else:
self.render_button.set_sensitive(False)
else:
@@ -294,9 +291,9 @@
## Project source list callbacks
def _sourcesFileAddedCb(self, unused_sources, unused_factory):
- if len(self.sourcefactories.sourcelist.storemodel) == 1 and not len(instance.PiTiVi.current.timeline.videocomp):
- self.timeline.simpleview._displayTimeline(False)
-
+ #if (len(self.sourcefactories.sourcelist.storemodel) == 1
+ # and not len(instance.PiTiVi.current.timeline.videocomp):
+ pass
## UI Callbacks
Modified: branches/SOC_2008_BLEWIS/pitivi/ui/timeline.py
==============================================================================
--- branches/SOC_2008_BLEWIS/pitivi/ui/timeline.py (original)
+++ branches/SOC_2008_BLEWIS/pitivi/ui/timeline.py Sat Jun 7 23:47:36 2008
@@ -34,7 +34,7 @@
import pitivi.instance as instance
import pitivi.dnd as dnd
-from timelineobjects import SimpleTimeline
+from timelineobjects import SimpleTimelineWidget
from complextimeline import ComplexTimelineWidget
class TimelineWidget(gtk.VBox):
@@ -47,17 +47,8 @@
def _createUi(self):
""" draw the GUI """
- self.hadjustment = gtk.Adjustment()
- self.vadjustment = gtk.Adjustment()
-
- self.simpleview = SimpleTimelineContentWidget(self)
- self.complexview = ComplexTimelineWidget(self)
-
- self.simpleview.connect("scroll-event", self._simpleScrollCb)
- self.complexview.connect("scroll-event", self._simpleScrollCb)
-
- self.hscroll = gtk.HScrollbar(self.hadjustment)
- self.pack_end(self.hscroll, expand=False)
+ self.simpleview = SimpleTimelineWidget()
+ self.complexview = ComplexTimelineWidget()
def showSimpleView(self):
""" Show the simple timeline """
@@ -79,94 +70,3 @@
gst.debug("state:%s" % event.state)
self.hscroll.emit("scroll-event", event)
-class SimpleTimelineContentWidget(gtk.HBox):
- """ Widget for Simple Timeline content display """
- def __init__(self, twidget):
- """ init """
- self.twidget = twidget
- gtk.HBox.__init__(self)
- self._createUi()
- self.show_all()
-
- def _createUi(self):
- """ draw the GUI """
-
- # (A) real simple timeline
- self.timeline = SimpleTimeline(hadjustment = self.twidget.hadjustment)
- self.layoutframe = gtk.Frame()
- self.layoutframe.add(self.timeline)
-
-
- # (B) Explanatory message label
- self.messageframe = gtk.Frame()
- self.messageframe.set_shadow_type(gtk.SHADOW_ETCHED_IN)
- self.messageframe.show()
-
- self.textbox = gtk.EventBox()
- self.textbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('white'))
- self.textbox.add_events(gtk.gdk.ENTER_NOTIFY_MASK)
- self.textbox.show()
- self.messageframe.add(self.textbox)
-
- txtlabel = gtk.Label()
- txtlabel.set_padding(10, 10)
- txtlabel.set_line_wrap(True)
- txtlabel.set_line_wrap_mode(pango.WRAP_WORD)
- txtlabel.set_justify(gtk.JUSTIFY_CENTER)
- txtlabel.set_markup(
- _("<span size='x-large'>Add clips to the timeline by dragging them here.</span>"))
- self.textbox.add(txtlabel)
- self.txtlabel = txtlabel
-
- self.pack_start(self.messageframe, expand=True, fill=True)
- self.reorder_child(self.messageframe, 0)
- self.motionSigId = self.textbox.connect("drag-motion", self._dragMotionCb)
- self.textbox.drag_dest_set(gtk.DEST_DEFAULT_DROP | gtk.DEST_DEFAULT_MOTION,
- [dnd.URI_TUPLE, dnd.FILE_TUPLE],
- gtk.gdk.ACTION_COPY)
-
- self.showingTimeline = False
- self._displayTimeline()
-
- def _dragMotionCb(self, unused_layout, unused_context, unused_x, unused_y,
- unused_timestamp):
- gst.log("motion...")
- self.showingTimeline = False
- gobject.idle_add(self._displayTimeline)
-
- def _dragLeaveCb(self, unused_layout, unused_context, unused_timestamp):
- gst.log("leave...")
- if len(instance.PiTiVi.current.timeline.videocomp):
- return
- self.showingTimeline = True
- gobject.idle_add(self._displayTimeline, False)
-
- def _displayTimeline(self, displayed=True):
- if displayed:
- if self.showingTimeline:
- return
- gst.debug("displaying timeline")
- self.remove(self.messageframe)
- self.txtlabel.hide()
- self.textbox.disconnect(self.motionSigId)
- self.motionSigId = None
- self.pack_start(self.layoutframe)
- self.reorder_child(self.layoutframe, 0)
- self.layoutframe.show_all()
- self.dragLeaveSigId = self.timeline.connect("drag-leave", self._dragLeaveCb)
- self.showingTimeline = True
- else:
- if not self.showingTimeline:
- return
- # only hide if there's nothing left in the timeline
- if not len(instance.PiTiVi.current.timeline.videocomp):
- gst.debug("hiding timeline")
- self.timeline.disconnect(self.dragLeaveSigId)
- self.dragLeaveSigId = None
- self.remove(self.layoutframe)
- self.layoutframe.hide()
- self.pack_start(self.messageframe)
- self.reorder_child(self.messageframe, 0)
- self.txtlabel.show()
- self.motionSigId = self.textbox.connect("drag-motion", self._dragMotionCb)
- self.showingTimeline = False
Modified: branches/SOC_2008_BLEWIS/pitivi/ui/timelineobjects.py
==============================================================================
--- branches/SOC_2008_BLEWIS/pitivi/ui/timelineobjects.py (original)
+++ branches/SOC_2008_BLEWIS/pitivi/ui/timelineobjects.py Sat Jun 7 23:47:36 2008
@@ -72,7 +72,101 @@
hours = mins / 60
return "%02d:%02d:%02d.%03d" % (hours, mins, sec, ms)
+class SimpleTimelineWidget(gtk.HBox):
+ """Contains the editing widget as well as a gtk.ScrolledWindow containing
+ the simple timeline canvas. Handles showing/hiding the editing widget and
+ canvas."""
+
+ __gtype_name__ = 'SimpleTimelineWidget'
+
+ def __init__(self, *args, **kwargs):
+ gtk.HBox.__init__(self, *args, **kwargs)
+ timeline = SimpleTimelineCanvas()
+ timeline.connect("edit-me", self._editMeCb)
+
+ self.content = gtk.ScrolledWindow()
+ self.content.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_NEVER)
+ self.content.add(timeline)
+ #add other objects here
+ self.add(self.content)
+
+ # edit-mode
+ # True when in editing mode
+ self._editingMode = False
+ self.editingWidget = SimpleEditingWidget()
+ self.editingWidget.connect("hide-me", self._editingWidgetHideMeCb)
+
+ instance.PiTiVi.connect("project-closed", self._projectClosedCb)
+ instance.PiTiVi.connect("new-project-failed",
+ self._newProjectFailedCb)
+
+ def _editMeCb(self, unused_timeline, element):
+ self._switchEditingMode(element)
+
+ def _editingWidgetHideMeCb(self, unused_widget):
+ self.switchToNormalMode()
+ # switch back to timeline in playground !
+ instance.PiTiVi.playground.switchToTimeline()
+
+ def _newProjectFailedCb(self, unused_inst, unused_reason, unused_uri):
+ self.switchToNormalMode()
+
+ def _projectClosedCb(self, unused_pitivi, unused_project):
+ self.switchToNormalMode()
+
+ def _switchEditingMode(self, source, mode=True):
+ """ Switch editing mode for the given TimelineSource """
+ gst.log("source:%s , mode:%s" % (source, mode))
+
+ if self._editingMode == mode:
+ gst.warning("We were already in correct editing mode : %s" %
+ mode)
+ return
+
+ if mode and not source:
+ gst.warning("You need to specify a valid TimelineSource")
+ return
+
+ if mode:
+ # switching TO editing mode
+ gst.log("Switching TO editing mode")
+
+ # 1. Hide all sources
+ self.remove(self.content)
+ self.content.hide()
+ self._editingMode = mode
+
+ # 2. Show editing widget
+ self.editingWidget.setSource(source)
+ self.add(self.editingWidget)
+ self.editingWidget.show_all()
+
+ else:
+ gst.log("Switching back to normal mode")
+ # switching FROM editing mode
+
+ # 1. Hide editing widget
+ self.remove(self.editingWidget)
+ self.editingWidget.hide()
+ self._editingMode = mode
+
+ # 2. Show all sources
+ self.add(self.content)
+ self.content.show_all()
+
+ def switchToEditingMode(self, source):
+ """ Switch to Editing mode for the given TimelineSource """
+ self._switchEditingMode(source)
+
+ def switchToNormalMode(self):
+ """ Switch back to normal timeline mode """
+ self._switchEditingMode(None, False)
+
+
class TimelineList(HList):
+ """A dynamically re-orderable group of items which knows about pitivi
+ timeline objects. Connects only to the video composition of the
+ timeline"""
__gtype_name__ = 'TimelineList'
__gsignals__ = {
@@ -160,10 +254,22 @@
def _sourceEditMeCb(self, unused_widget, element):
self.emit("edit-me", element)
-class SimpleTimeline(goocanvas.Canvas):
+class SimpleTimelineCanvas(goocanvas.Canvas):
+ """goocanvas.Canvas derivative which contains all the widgets used in the
+ simple timeline that should be scrolled together. It handles application event
+ like loading/saving, and external drag-and-drop events for adding objects
+ to the canvas"""
+
__gtype_name__ = 'SimpleTimeline'
- def __init__(self, hadjustment=None, vadjustment=None, *args, **kwargs):
+ __gsignals__ = {
+ 'edit-me' : (gobject.SIGNAL_RUN_LAST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_PYOBJECT,))
+ }
+
+
+ def __init__(self, *args, **kwargs):
goocanvas.Canvas.__init__(self, *args, **kwargs)
self.props.automatic_bounds = False
@@ -188,13 +294,6 @@
self.scale = 1.0
self.set_size_request(int(MINIMUM_WIDTH), int(MINIMUM_HEIGHT))
- # edit-mode
- # True when in editing mode
- self._editingMode = False
- self.editingWidget = SimpleEditingWidget()
- self.editingCanvasItem = goocanvas.Widget(widget=self.editingWidget)
- self.editingWidget.connect("hide-me", self._editingWidgetHideMeCb)
-
instance.PiTiVi.connect("new-project-loaded",
self._newProjectLoadedCb)
instance.PiTiVi.connect("project-closed", self._projectClosedCb)
@@ -224,8 +323,6 @@
if height > 0:
self.scale = allocation.height / height
self.set_scale(self.scale)
- self.editingCanvasItem.props.width = allocation.width
- self.editingCanvasItem.props.height = allocation.height
return True
## Project callbacks
@@ -247,7 +344,6 @@
self._clearTimeline()
def _clearTimeline(self):
- self.switchToNormalMode()
self.items.set_timeline(None)
self.items.remove_all()
@@ -309,59 +405,8 @@
## Editing mode
-
def _editMeCb(self, timeline, element):
- self._switchEditingMode(element)
-
- def _editingWidgetHideMeCb(self, unused_widget):
- self.switchToNormalMode()
- # switch back to timeline in playground !
- instance.PiTiVi.playground.switchToTimeline()
-
- def _switchEditingMode(self, source, mode=True):
- """ Switch editing mode for the given TimelineSource """
- gst.log("source:%s , mode:%s" % (source, mode))
-
- if self._editingMode == mode:
- gst.warning("We were already in correct editing mode : %s" %
- mode)
- return
-
- if mode and not source:
- gst.warning("You need to specify a valid TimelineSource")
- return
-
- if mode:
- # switching TO editing mode
- gst.log("Switching TO editing mode")
-
- # 1. Hide all sources
- self.items.remove()
- self._editingMode = mode
-
- # 2. Show editing widget
- self.editingWidget.setSource(source)
- self.root.add_child(self.editingCanvasItem)
-
- else:
- gst.log("Switching back to normal mode")
- # switching FROM editing mode
-
- # 1. Hide editing widget
- self.editingCanvasItem.remove()
- self._editingMode = mode
-
- # 2. Show all sources
- self.root.add_child(self.items)
-
- def switchToEditingMode(self, source):
- """ Switch to Editing mode for the given TimelineSource """
- self._switchEditingMode(source)
-
- def switchToNormalMode(self):
- """ Switch back to normal timeline mode """
- self._switchEditingMode(None, False)
-
+ self.emit("edit-me", element)
class SimpleEditingWidget(gtk.EventBox):
"""
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]