def showEvent(self, e):
     """ showEvent(e) -> None
     Make sure that we get the search focus
     
     """
     QAddonToolBar.showEvent(self, e)
     self.searchBox.setFocus(QtCore.Qt.ActiveWindowFocusReason)
 def hideEvent(self, e):
     """ hideEvent() -> None
     Make sure that the search is reset
     
     """
     QAddonToolBar.hideEvent(self, e)
     self.resetSearch()
    def __init__(self, parent=None):
        """ QSearchToolBar(parent: QWidget) -> QSearchToolBar
        
        """
        QAddonToolBar.__init__(self, parent)
        self.setWindowTitle('Search')
        self.setIconSize(QtCore.QSize(16, 16))

        self.searchBox = QSearchBox(self)
        self.searchBox.resetButton.hide()
        self.searchBox.searchButton.hide()
        self.searchBox.searchEdit.setToolTip('Search Examples: "setAttr", "before:4 July 2009", "user:bob"')

        self.viewAction = QtGui.QToolButton(self)
        self.viewAction.setIcon(CurrentTheme.QUERY_ARROW_ICON)
        self.viewAction.setToolTip('View')
        self.viewAction.setStatusTip('Search or refine view')
        self.viewAction.setPopupMode(QtGui.QToolButton.InstantPopup)
        self.viewAction.setMenu(self.searchBox.searchMenu)
        self.addWidget(self.viewAction)

        self.addWidget(self.searchBox)

        self.connect(self.searchBox, QtCore.SIGNAL('executeSearch(QString)'),
                     self.executeSearch)
        self.connect(self.searchBox, QtCore.SIGNAL('refineMode(bool)'),
                     self.refineMode)
        self.connect(self.searchBox, QtCore.SIGNAL('resetSearch()'),
                     self.resetSearch)

        tva = self.toggleViewAction()
        tva.setIcon(CurrentTheme.QUERY_VIEW_ICON)
        tva.setToolTip('Search')
        tva.setStatusTip('Search and refine the version tree')
        tva.setShortcut('Ctrl+F')
 def hideEvent(self, e):
     """ Hide the indicators in the version view """
     QAddonToolBar.hideEvent(self, e)
     versionView = self.getVersionView()
     if versionView:
         versionView.multiSelectionAbort('Playback')
     self.setCurrentVersions(-1,-1)
 def showEvent(self, e):
     """ Show the indicators in the version view """
     QAddonToolBar.showEvent(self, e)
     versionView = self.getVersionView()
     if versionView:
         if self.controller:
             self.setCurrentVersions(0, self.controller.current_version)
             versions = self.getCurrentVersions()
             versionView.setIndicatorVersions(versions[0],versions[1],-1)
         versionView.acquireMultiSelection('Playback')
         versionView.setIndicatorsVisible(True, True, False)
 def setController(self, controller):
     """ Make sure to update the start and end version """
     if self.controller:
         self.disconnect(self.controller,
                         QtCore.SIGNAL('scene_updated'),
                         self.vistrailModified)
         if self.isVisible() and controller!=self.controller:
             self.hide()
             self.setController(None)
     QAddonToolBar.setController(self, controller)
     if self.controller:
         self.connect(self.controller,
                      QtCore.SIGNAL('scene_updated'),
                      self.vistrailModified)
     self.updateControllerInfo()
     versionView = self.getVersionView()
     if versionView:
         versions = self.getCurrentVersions()
         versionView.setIndicatorVersions(versions[0], versions[1], -1)
    def __init__(self, parent=None):
        """ QPlaybackToolBar(parent: QWidget) -> QPlaybackToolBar
        
        """
        QAddonToolBar.__init__(self, parent)

        self.setWindowTitle('Playback')
        self.setIconSize(QtCore.QSize(16, 16))

        # Play/Pause/Stop Buttons
        self.playPauseAction = QtGui.QAction(CurrentTheme.PLAY_ICON, 'Play', self)
        self.playPauseAction.setStatusTip('Play/Pause the animation')
        self.addAction(self.playPauseAction)
        self.connect(self.playPauseAction, QtCore.SIGNAL('triggered(bool)'),
                     self.playPauseTriggered)
        
        self.stopAction = QtGui.QAction(CurrentTheme.STOP_ICON, 'Stop', self)
        self.stopAction.setStatusTip('Stop the animation')
        self.addAction(self.stopAction)
        self.connect(self.stopAction, QtCore.SIGNAL('triggered(bool)'),
                     self.stop)
        
        self.playerTimer = QtCore.QTimer()
        self.playerTimer.setSingleShot(True)
        self.connect(self.playerTimer, QtCore.SIGNAL('timeout()'),
                     self.playNextVersion)

        self.speedGroup = QtGui.QActionGroup(self)
        self.slowAction = QtGui.QAction('Slow', self)
        self.slowAction.setCheckable(True)
        self.speedGroup.addAction(self.slowAction)
        self.mediumAction = QtGui.QAction('Medium', self)
        self.mediumAction.setCheckable(True)
        self.speedGroup.addAction(self.mediumAction)
        self.fastAction = QtGui.QAction('Fast', self)
        self.fastAction.setCheckable(True)
        self.speedGroup.addAction(self.fastAction)
        self.speedGroup.setExclusive(True)
        speed = int(CaptureAPI.getPreference('VisTrailsPlaybackSpeed'))
        if speed == 0:
            self.slowAction.setChecked(True)
        elif speed == 1:
            self.mediumAction.setChecked(True)
        else:
            self.fastAction.setChecked(True)

        self.speedMenu = QtGui.QMenu()
        self.speedMenu.addAction(self.slowAction)
        self.speedMenu.addAction(self.mediumAction)
        self.speedMenu.addAction(self.fastAction)
        self.speedAction = QtGui.QToolButton(self)
        self.speedAction.setIcon(CurrentTheme.SPEED_ICON)
        self.speedAction.setToolTip('Speed')
        self.speedAction.setStatusTip('Change the playback speed')
        self.speedAction.setPopupMode(QtGui.QToolButton.InstantPopup)
        self.speedAction.setMenu(self.speedMenu)
        self.addWidget(self.speedAction)
        
        self.connect(self.slowAction, QtCore.SIGNAL('triggered(bool)'),
                     self.setSpeed)
        self.connect(self.mediumAction, QtCore.SIGNAL('triggered(bool)'),
                     self.setSpeed)
        self.connect(self.fastAction, QtCore.SIGNAL('triggered(bool)'),
                     self.setSpeed)

        self.addSeparator()

        # Pick Start/Stop Buttons
        
        self.pickAction = QtGui.QAction(CurrentTheme.PICK_VERSIONS_ICON,
                                        'Select versions', self)
        self.pickAction.setStatusTip('Select start and end versions')
        self.pickAction.setCheckable(False)
        self.addAction(self.pickAction)        
        self.connect(self.pickAction, QtCore.SIGNAL('triggered(bool)'),
                     self.pickingTriggered)

        self.addSeparator()
        
        # Frame Slider
        self.frameSlider = QtGui.QSlider(self)
        self.frameSlider.setOrientation(QtCore.Qt.Horizontal)
        self.frameSlider.setMinimum(0)
        self.frameSlider.setMaximum(0)
        self.frameSlider.setSingleStep(1)
        self.addWidget(self.frameSlider)
        self.addSeparator()
        self.frameLabel = QtGui.QLabel(self)
        self.frameLabel.setMinimumWidth(30)
        self.addWidget(self.frameLabel)
        self.connect(self.frameSlider, QtCore.SIGNAL('valueChanged(int)'),
                     self.sliderChanged)
        self.connect(self.frameSlider, QtCore.SIGNAL('sliderMoved(int)'),
                     self.updateFrameSlider)
        self.connect(self.frameSlider, QtCore.SIGNAL('sliderReleased()'),
                     self.updateFrameContent)

        # Set the view toggle icon
        tva = self.toggleViewAction()
        tva.setIcon(CurrentTheme.PLAY_ICON)
        tva.setToolTip('Playback')
        tva.setStatusTip('Playback the changes from one version to another')
        tva.setShortcut('Ctrl+P')

        # Default version
        self.frames = []
        self.currentFrame = 0
        self.opsMap = {}
        self.lastVersion = -1

        self.setCurrentFrame(0)

        self.previousVersions = (-1, -1)