def mousePressEvent(self, event):
        # Select the track
        selected_track = Track.whichTrack(event.y())
        if selected_track <= len(self._tracks):
            self._selected_track = selected_track

        # Select the period bar
        self._selected = self.selectDelta(event.x(), event.y())
        self._moving = False
        self._resizingBegin = False
        self._resizingEnd = False

        if self._selected is not None:
            # Select the action
            if event.buttons() == QtCore.Qt.LeftButton:
                if self._selected.canSlideEnd(event.x(), event.y()):
                    self._resizingEnd = True
                elif self._selected.canSlideBegin(event.x(), event.y()):
                    self._resizingBegin = True
                elif self._selected.collide(event.x(), event.y()):
                    self._moving = True
        if event.y() <= 20 and not self._moving:
            self._pointer.position = event.x()

        self.repaint()
Example #2
0
    def mousePressEvent(self, event):
        # Select the track
        selected_track = Track.whichTrack(event.y())
        if selected_track <= len(self._tracks):
            self._selected_track = selected_track

        # Select the period bar
        self._selected = self.selectDelta(event.x(), event.y())
        self._moving = False
        self._resizingBegin = False
        self._resizingEnd = False

        if self._selected is not None:
            # Select the action
            if event.buttons() == QtCore.Qt.LeftButton:
                if self._selected.canSlideEnd(event.x(), event.y()):
                    self._resizingEnd = True
                elif self._selected.canSlideBegin(event.x(), event.y()):
                    self._resizingBegin = True
                elif self._selected.collide(event.x(), event.y()):
                    self._moving = True
        if event.y() <= 20 and not self._moving:
            self._pointer.position = self.x2frame(event.x())

        self.repaint()
	def track(self, value):
		# if the object exists in other track remove it
		if self.track < len(self._parent._tracks) and self in self._parent._tracks[self.track].periods: self.remove()

		# Verify if the new track exists. In case not create it
		self._top = Track.whichTop(value)
		if self.track >= len(self._parent._tracks): self._parent.addTrack()

		# if do not exists in the track add it
		if self not in self._parent._tracks[self.track].periods: self._parent._tracks[self.track].periods.append(self)
Example #4
0
    def track(self, value):
        #if the object exists in other track remove it
        if self.track<len(self._parent._tracks) and self in self._parent._tracks[self.track].periods: self.remove()

        #Verify if the new track exists. In case not create it
        self._top = Track.whichTop(value)
        if self.track>=len(self._parent._tracks): self._parent.addTrack()

        #if do not exists in the track add it
        if self not in self._parent._tracks[self.track].periods: self._parent._tracks[self.track].periods.append(self)
Example #5
0
 def add_period(self, value, row=0, color=None):
     """Adds an annotated interval."""
     begin, end, title = value
     period = TimelineDelta(begin,
                            end,
                            title=title,
                            parent=self,
                            top=Track.whichTop(row))
     self._tracks[period.track].periods.append(period)
     return period
Example #6
0
    def import_csv(self, csvfileobject):
        """
        Extracts info from a file object and stores it in memory in
        order to display it on the timeline.

        Refer to the `export` method to learn about input file format
        and structure.
        """
        # Clear previously stored info
        self._tracks = []
        self._selected = None

        for row in csvfileobject:
            if row[0] == "T":
                track = Track(parent=self)
                track.properties = row
                self._tracks.append(track)
            elif row[0] == "P":
                period = TimelineDelta(0, parent=self)
                period.properties = row
Example #7
0
    def move(self, x, y):
        if self._lock: return

        if (self.begin + x) >= 0 and (self.end + x) <= self._parent.width():
            self._begin += x / self._parent._scale
            self._end += x / self._parent._scale
        current_track = self.track
        new_track = Track.whichTrack(y)

        if current_track != new_track and new_track >= 0 and new_track <= self._parent.numberoftracks:
            self.track = new_track
            self.checkNumberOfTracks()
Example #8
0
    def move(self, x, y):
        if self._lock: return

        if (self.begin + x) >= 0 and (self.end + x) <= self._parent.width():
            self._begin += x / self._parent._scale
            self._end   += x / self._parent._scale
        current_track = self.track
        new_track     = Track.whichTrack(y)

        if current_track != new_track and new_track >= 0 and new_track <= self._parent.numberoftracks:
            self.track = new_track
            self.checkNumberOfTracks()
Example #9
0
    def selectDelta(self, x, y):
        # Check if the timeline pointer was selected
        if y <= 20:
            if self._pointer.collide(x, y):
                return self._pointer
            else:
                return None
        # Check if the timeline periods were selected
        i = Track.whichTrack(y)
        if i >= len(self._tracks): return None

        return self._tracks[i].selectDelta(x, y)
Example #10
0
 def selectDelta(self, x, y):
     # Check if the timeline pointer was selected
     if y <= 20:
         if self._pointer.collide(x, y):
             return self._pointer
         else:
             return None
     # Check if the timeline periods were selected
     i = Track.whichTrack(y)
     if i>=len(self._tracks): return None
     
     return self._tracks[i].selectDelta(x,y)
Example #11
0
    def __init__(self, parent_control):
        super(TimelineWidget, self).__init__()

        self.parent_control = parent_control

        # self.setFocusPolicy(QtCore.Qt.StrongFocus)
        # self.grabKeyboard()
        self.setMouseTracking(True)
        self.setMinimumWidth(300000)
        # self.setMinimumHeight(30)

        # Timeline background color
        palette = self.palette()
        palette.setColor(self.backgroundRole(), QtCore.Qt.white)
        self.setPalette(palette)

        self._chartsColors = [
            QtGui.QColor(255, 0, 0),
            QtGui.QColor(0, 100, 0),
            QtGui.QColor(0, 0, 255),
            QtGui.QColor(100, 100, 0),
            QtGui.QColor(100, 0, 100),
            QtGui.QColor(0, 100, 100)
        ]
        self._charts = []
        self._tracks = [Track(parent=self)]

        self._scale = 1.0
        self._lastMouseY = None

        self._moving = False
        self._resizingBegin = False
        self._resizingEnd = False
        self._creating_event = False
        self._creating_event_start = None
        self._creating_event_end = None
        self._n_tracks = 1

        self._selected = None
        self._selected_track = 0
        self._pointer = TimelinePointer(0, self)

        # Video playback controls
        self._video_playing = False
        self._video_fps = None
        self._video_fps_min = None
        self._video_fps_max = None
        self._video_fps_inc = None
Example #12
0
 def track(self, value): 
     if value!=self.track: self.remove()
     self._top = Track.whichTop(value)
     self._parent._tracks[self.track].periods.append(self)
Example #13
0
    def track(self): return Track.whichTrack(self._top)


    @track.setter
Example #14
0
 def track(self):
     return Track.whichTrack(self._top)
Example #15
0
 def addPeriod(self, value, track=0, color=None):
     """Adds an annotated interval."""
     begin, end, title = value
     period       = TimelineDelta(begin, end, title=title, parent=self, top=Track.whichTop(track))
     self._tracks[period.track].periods.append(period)
Example #16
0
 def track(self, value):
     if value != self.track: self.remove()
     self._top = Track.whichTop(value)
     if self.track >= len(self._parent._tracks): self._parent.addTrack()
     self._parent._tracks[self.track].periods.append(self)
Example #17
0
 def addTrack(self):
     t = Track(parent=self)
     self._tracks.append(t)
     self.setMinimumHeight( Track.whichTop( len(self._tracks) ) )
     return t
Example #18
0
 def remove_track(self, track):
     self._tracks.remove(track)
     self.setMinimumHeight(Track.whichTop(len(self._tracks)))
Example #19
0
 def add_track(self):
     t = Track(parent=self)
     self._tracks.append(t)
     self.setMinimumHeight(Track.whichTop(len(self._tracks)))
     return t
Example #20
0
    def __init__(self, parent_control):
        super(TimelineWidget, self).__init__()

        self.parent_control = parent_control

        # self.setFocusPolicy(QtCore.Qt.StrongFocus)
        # self.grabKeyboard()
        self.setMouseTracking(True)
        self.setMinimumWidth(300000)
        # self.setMinimumHeight(30)

        # Timeline background color
        palette = self.palette()
        palette.setColor(self.backgroundRole(), QtCore.Qt.white)
        self.setPalette(palette)

        self._chartsColors = [
            QColor(240, 163, 255),
            QColor(0, 117, 220),
            QColor(153, 63, 0),
            QColor(76, 0, 92),
            QColor(25, 25, 25),
            QColor(0, 92, 49),
            QColor(43, 206, 72),
            QColor(255, 204, 153),
            QColor(128, 128, 128),
            QColor(148, 255, 181),
            QColor(143, 124, 0),
            QColor(157, 204, 0),
            QColor(194, 0, 136),
            QColor(0, 51, 128),
            QColor(255, 164, 5),
            QColor(255, 168, 187),
            QColor(66, 102, 0),
            QColor(255, 0, 16),
            QColor(94, 241, 242),
            QColor(0, 153, 143),
            QColor(116, 10, 255),
            QColor(153, 0, 0),
            QColor(255, 255, 0),
            QColor(255, 80, 5)
        ]
        self._charts = []
        self._tracks = [Track(parent=self)]

        self._scale = 1.0
        self._lastMouseY = None
        self._mouse_current_pos = None

        self._moving = False
        self._resizingBegin = False
        self._resizingEnd = False
        self._creating_event = False
        self._creating_event_start = None
        self._creating_event_end = None
        self._n_tracks = 1

        self._selected = None
        self._selected_track = 0
        self._pointer = TimelinePointer(0, self)

        # Video playback controls
        self._video_playing = False
        self._video_fps = None
        self._video_fps_min = None
        self._video_fps_max = None
        self._video_fps_inc = None