def _createUI(self): self.leftSizeGroup = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) self.props.row_spacing = 2 self.props.column_spacing = 2 self.hadj = gtk.Adjustment() self.vadj = gtk.Adjustment() # zooming slider self._zoomAdjustment = gtk.Adjustment() self._zoomAdjustment.set_value(Zoomable.getCurrentZoomLevel()) self._zoomAdjustment.connect("value-changed", self._zoomAdjustmentChangedCb) self._zoomAdjustment.props.lower = 0 self._zoomAdjustment.props.upper = Zoomable.zoom_steps zoomslider = gtk.HScale(self._zoomAdjustment) zoomslider.props.draw_value = False zoomslider.set_tooltip_text(_("Zoom Timeline")) self.attach(zoomslider, 0, 1, 0, 1, yoptions=0, xoptions=gtk.FILL) # controls for tracks and layers self._controls = TimelineControls() controlwindow = gtk.Viewport(None, self.vadj) controlwindow.add(self._controls) controlwindow.set_size_request(-1, 1) controlwindow.set_shadow_type(gtk.SHADOW_OUT) self.attach(controlwindow, 0, 1, 1, 2, xoptions=0) # timeline ruler self.ruler = ruler.ScaleRuler(self.app, self.hadj) self.ruler.set_size_request(0, 25) self.ruler.set_border_width(2) self.ruler.connect("key-press-event", self._keyPressEventCb) self.ruler.connect("size-allocate", self._rulerSizeAllocateCb) rulerframe = gtk.Frame() rulerframe.set_shadow_type(gtk.SHADOW_OUT) rulerframe.add(self.ruler) self.attach(rulerframe, 1, 2, 0, 1, yoptions=0) # proportional timeline self._canvas = TimelineCanvas(self.app) self._root_item = self._canvas.get_root_item() self.attach(self._canvas, 1, 2, 1, 2) # scrollbar self._hscrollbar = gtk.HScrollbar(self.hadj) self._vscrollbar = gtk.VScrollbar(self.vadj) self.attach(self._hscrollbar, 1, 2, 2, 3, yoptions=0) self.attach(self._vscrollbar, 2, 3, 1, 2, xoptions=0) self.hadj.connect("value-changed", self._updateScrollPosition) self.vadj.connect("value-changed", self._updateScrollPosition) # error infostub self.infostub = InfoStub() self.attach(self.infostub, 1, 2, 4, 5, yoptions=0) self.show_all() self.infostub.hide() # toolbar actions actions = ( ("ZoomIn", gtk.STOCK_ZOOM_IN, None, "<Control>plus", ZOOM_IN, self._zoomInCb), ("ZoomOut", gtk.STOCK_ZOOM_OUT, None, "<Control>minus", ZOOM_OUT, self._zoomOutCb), # actions for adding additional accelerators ("ControlEqualAccel", gtk.STOCK_ZOOM_IN, None, "<Control>equal", ZOOM_IN, self._zoomInCb), ("ControlKPAddAccel", gtk.STOCK_ZOOM_IN, None, "<Control>KP_Add", ZOOM_IN, self._zoomInCb), ("ControlKPSubtractAccel", gtk.STOCK_ZOOM_OUT, None, "<Control>KP_Subtract", ZOOM_OUT, self._zoomOutCb), ) selection_actions = ( ("DeleteObj", gtk.STOCK_DELETE, None, "Delete", DELETE, self.deleteSelected), ("UnlinkObj", "pitivi-unlink", None, "<Shift><Control>L", UNLINK, self.unlinkSelected), ("LinkObj", "pitivi-link", None, "<Control>L", LINK, self.linkSelected), ("UngroupObj", "pitivi-ungroup", None, "<Shift><Control>G", UNGROUP, self.ungroupSelected), ("GroupObj", "pitivi-group", None, "<Control>G", GROUP, self.groupSelected), ) self.playhead_actions = ( ("Split", "pitivi-split", _("Split"), "S", SPLIT, self.split), ("Keyframe", "pitivi-keyframe", _("Add a keyframe"), "K", KEYFRAME, self.keyframe), ("Prevframe", "pitivi-prevframe", _("_Prevframe"), "E", PREVFRAME, self.prevframe), ("Nextframe", "pitivi-nextframe", _("_Nextframe"), "R", NEXTFRAME, self.nextframe), ) actiongroup = gtk.ActionGroup("timelinepermanent") actiongroup.add_actions(actions) self.ui_manager.insert_action_group(actiongroup, 0) actiongroup = gtk.ActionGroup("timelineselection") actiongroup.add_actions(selection_actions) actiongroup.add_actions(self.playhead_actions) self.link_action = actiongroup.get_action("LinkObj") self.unlink_action = actiongroup.get_action("UnlinkObj") self.group_action = actiongroup.get_action("GroupObj") self.ungroup_action = actiongroup.get_action("UngroupObj") self.delete_action = actiongroup.get_action("DeleteObj") self.split_action = actiongroup.get_action("Split") self.keyframe_action = actiongroup.get_action("Keyframe") self.prevframe_action = actiongroup.get_action("Prevframe") self.nextframe_action = actiongroup.get_action("Nextframe") self.ui_manager.insert_action_group(actiongroup, -1) self.ui_manager.add_ui_from_string(ui) # drag and drop self.drag_dest_set(gtk.DEST_DEFAULT_MOTION, [dnd.FILESOURCE_TUPLE, dnd.EFFECT_TUPLE], gtk.gdk.ACTION_COPY) self.connect("drag-data-received", self._dragDataReceivedCb) self.connect("drag-leave", self._dragLeaveCb) self.connect("drag-drop", self._dragDropCb) self.connect("drag-motion", self._dragMotionCb) self._canvas.connect("button-press-event", self._buttonPress) self._canvas.connect("button-release-event", self._buttonRelease) self._canvas.connect("key-press-event", self._keyPressEventCb)
def _createUI(self): self.leftSizeGroup = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) self.hadj = gtk.Adjustment() self.vadj = gtk.Adjustment() # controls for tracks and layers self._controls = TimelineControls() controlwindow = gtk.ScrolledWindow(None, self.vadj) controlwindow.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER) controlwindow.add_with_viewport(self._controls) controlwindow.set_size_request(-1, 1) self.attach(controlwindow, 0, 1, 1, 2, xoptions=0) # timeline ruler self.ruler = ruler.ScaleRuler(self.hadj) self.ruler.set_size_request(0, 25) self.ruler.set_border_width(2) self.ruler.connect("key-press-event", self._keyPressEventCb) self.attach(self.ruler, 1, 2, 0, 1, yoptions=0) # proportional timeline self._canvas = TimelineCanvas(self.app) timelinewindow = gtk.ScrolledWindow(self.hadj, self.vadj) timelinewindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) timelinewindow.add(self._canvas) #FIXME: remove padding between scrollbar and scrolled window self.attach(timelinewindow, 1, 2, 1, 2) # drag and drop self.drag_dest_set(gtk.DEST_DEFAULT_MOTION, [dnd.FILESOURCE_TUPLE], gtk.gdk.ACTION_COPY) self.connect("drag-data-received", self._dragDataReceivedCb) self.connect("drag-leave", self._dragLeaveCb) self.connect("drag-drop", self._dragDropCb) self.connect("drag-motion", self._dragMotionCb) # toolbar actions actions = ( ("ZoomIn", gtk.STOCK_ZOOM_IN, None, None, ZOOM_IN, self._zoomInCb), ("ZoomOut", gtk.STOCK_ZOOM_OUT, None, None, ZOOM_OUT, self._zoomOutCb), ) selection_actions = ( ("DeleteObj", gtk.STOCK_DELETE, None, "Delete", DELETE, self.deleteSelected), ("UnlinkObj", "pitivi-unlink", None, "<Shift><Control>L", UNLINK, self.unlinkSelected), ("LinkObj", "pitivi-link", None, "<Control>L", LINK, self.linkSelected), ("UngroupObj", "pitivi-ungroup", None, "<Shift><Control>G", UNGROUP, self.ungroupSelected), ("GroupObj", "pitivi-group", None, "<Control>G", GROUP, self.groupSelected), ) toggle_actions = (("Razor", "pitivi-split", _("Razor"), "<Ctrl>R", RAZOR, self.toggleRazor), ) actiongroup = gtk.ActionGroup("timelinepermanent") actiongroup.add_actions(actions) actiongroup.add_toggle_actions(toggle_actions) self.ui_manager.insert_action_group(actiongroup, 0) actiongroup = gtk.ActionGroup("timelineselection") actiongroup.add_actions(selection_actions) self.link_action = actiongroup.get_action("LinkObj") self.unlink_action = actiongroup.get_action("UnlinkObj") self.group_action = actiongroup.get_action("GroupObj") self.ungroup_action = actiongroup.get_action("UngroupObj") self.delete_action = actiongroup.get_action("DeleteObj") self.ui_manager.insert_action_group(actiongroup, -1) self.ui_manager.add_ui_from_string(ui) # drag and drop self.drag_dest_set(gtk.DEST_DEFAULT_MOTION, [dnd.FILESOURCE_TUPLE], gtk.gdk.ACTION_COPY) self.connect("drag-data-received", self._dragDataReceivedCb) self.connect("drag-leave", self._dragLeaveCb) self.connect("drag-drop", self._dragDropCb) self.connect("drag-motion", self._dragMotionCb) self._canvas.connect("button-press-event", self._buttonPress) self._canvas.connect("button-release-event", self._buttonRelease) self._canvas.connect("key-press-event", self._keyPressEventCb)