misc_blink.py 2.57 KB
title = "Blink Images"
tip = "blinks at least two images"

from guidata.qt.QtCore import Qt
from guidata.qt.QtGui import QApplication, QCursor, QWidget, qApp
from guidata.dataset.datatypes import DataSet
from guidata.dataset.dataitems import (IntItem, FloatArrayItem, StringItem,
                                       ChoiceItem, FloatItem, DictItem,
                                       BoolItem)
from guiqwt.events import KeyEventMatch, setup_standard_tool_filter
from guiqwt.tools import SelectTool
from guiqwt.config import _

import numpy as np
import time
import sys

class NOD3_App():

    def __init__(self, parent):
        self.parent = parent

    def compute_app(self):
        class BlinkParam(DataSet):
              btime = FloatItem("Time(sec):", default=0.333)
              brep = IntItem("Repeats:", default=10)
        param = BlinkParam(title.replace(" ", ""), "Set Blinking Time And Repeats:<br>")
        param = self.parent.read_defaults(param)
        if not param.edit():
           return
        param.brep = min(param.brep, 100/param.btime)
        self.parent.write_defaults(param)
        #QApplication.setOverrideCursor(QCursor(Qt.BlankCursor))
        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
        self.parent.STOP = False

        for item in self.parent.items:
            if item is not None:
                #item.plot().installEventFilter(self.filter)
                item.hide()

        progress = self.parent.imagewidget.Progress
        #print dir(QTimer)
        for n in range(int(param.brep)):
            for row in self.parent._get_selected_rows():
                qApp.processEvents()
                item = self.parent.items[row]
                self.parent.plot.set_item_visible(item, True)
                time.sleep(param.btime)
                #QTimer.singleShot(param.btime, lambda: None)
                item.hide()
                progress.showMessage(_("                                                                                                                                                                                                       Image: %d") % (row+1), 1000)
                if self.parent.STOP:
                   #print "STOP"
                   progress.showMessage(_("stopped by ^C"), 5000)
                   self.parent.STOP = False
                   self.parent.plot.set_item_visible(item, True)
                   QApplication.restoreOverrideCursor()
                   return
       
        try:
           self.parent.plot.set_item_visible(item, True)
        except: pass
        QApplication.restoreOverrideCursor()