예제 #1
0
    def __init__(self, callback):
        self.gladefile = os.path.join(__location__, "gui", "addtag.glade")
        self.builder = Gtk.Builder()
        self.builder.add_from_file(self.gladefile)

        # Automatically connect signals to functions defined above
        # not needed in commandline
        self.builder.connect_signals(self)

        self.mission_element_combo = self.builder.get_object(
            "missionElementCombo")
        self.tag_type_combo = self.builder.get_object("tagTypeCombo")
        self.tag_name_entry = self.builder.get_object("tagNameEntry")

        #Populate dropdowns
        self.elements = list(get_registered_elements().keys())
        self.elements.sort()
        populate_combo_box(self.mission_element_combo, self.elements)
        self.set_tag_types([])

        #Get the main window
        self.window = self.builder.get_object("addTagWindow")
        self.window.set_type_hint(Gdk.WindowTypeHint.DIALOG)
        self.window.show()

        #Link callback
        self.callback = callback

        self.log.debug("Window created")
예제 #2
0
    def __init__(self, parent):
        self.gladefile = os.path.join(__location__, "gui/testwindow.glade")
        self.builder = Gtk.Builder()
        self.builder.add_from_file(self.gladefile)
        self.parent = parent
        self.t = None
        self.last_frame_time = None
        self.fps_hysteresis = TimedHysteresis(1.0) #1 second hysteresis

        # Automatically connect signals to functions defined above
        self.builder.connect_signals(self)

        self.mission_element_combo = self.builder.get_object("missionElementCombo")
        self.tag_type_combo = self.builder.get_object("tagTypeCombo")
        self.tag_name_entry = self.builder.get_object("tagNameEntry")

        self.progress_bar = self.builder.get_object("progressBar")
        self.percent_text = self.builder.get_object("percentText")
        self.test_info_text = self.builder.get_object("testInfoText")

        self.spin_button = self.builder.get_object("spinButton")
        self.spin_button.set_numeric(True)
        adjustment = Gtk.Adjustment(value=1, lower=1, upper=50, step_incr=1, page_incr=0, page_size=0)
        self.spin_button.set_adjustment(adjustment)
        self.spin_button.set_value(1)

        self.skip_value = 1

        #Add information about the test about to be run
        self.populate_info()

        #Populate mission element dropdown
        self.elements = get_registered_elements().keys()
        self.elements = sorted(self.elements)
        populate_combo_box(self.mission_element_combo, self.elements)

        #Get the main window
        self.window = self.builder.get_object("testWindow")
        self.window.set_type_hint(Gdk.WindowTypeHint.DIALOG)
        self.window.show()

        #Disable the trees to prevent modifications
        self.parent.video_tree.set_sensitive(False)

        self.testing = False

        self.log.debug("Window created")
예제 #3
0
    def __init__(self,db): # parent was parentwindow
       # self.parent = parent
        self.t = None
        self.last_frame_time = None
        self.fps_hysteresis = TimedHysteresis(1.0) #1 second hysteresis
        self.load_db(db)
        self.skip_value = 1

        #add info about test to be run
        self.populate_info()
        self.elements = get_registered_elements().keys()

        #Disable the trees to prevent modifications
        #self.parent.video_tree.set_sensitive(False)

        self.testing = False

        print("Test from cmdline created")
예제 #4
0
    def __init__(self, callback, location):
        self.gladefile = os.path.join(__location__, location)
        self.builder = Gtk.Builder()
        self.builder.add_from_file(self.gladefile)

        # Automatically connect signals to functions defined above
        self.builder.connect_signals(self)

        #Populate dropdowns
        self.elements = get_registered_elements().keys()
        self.elements = sorted(self.elements)
        populate_combo_box(self.mission_element_combo, self.elements)
        self.set_tag_types([])

        #Get the main window
        self.window = self.builder.get_object("addTagWindow")
        self.window.set_type_hint(Gdk.WindowTypeHint.DIALOG)
        self.window.show()

        #Link callback
        self.callback = callback

        self.log.debug("Window created")
예제 #5
0
    def get_frames(self, vision_enable=True):
        melements = get_registered_elements()
        frame_count = 0

        for vid in Video.get_all():
            tgs = vid.get_tags()
            if len(tgs) > 0:
                self.log.info("Loading video id %d" % vid.id)
                #if(self.parent != None):
                #    self.parent.video_box.load_video(vid)
                # XXX The below sleep was added to prevent a "Bus Error"
                # XXX when running a test with a lot of disabled tags - Alex S.
                # TODO FIX
                sleep(0.1)

            for tag in filter(lambda t: t.active, tgs):
                frame_list = tag.get_frame_list()[::self.skip]
                if len(frame_list) > 0:
                    #Carry out testing on this tag
                    self.log.info("Testing tag #%d (%d frames)" %
                                  (tag.id, len(frame_list)))
                    frame_list.sort()
                    tag.clear_test_results()
                    if vision_enable:
                        if not melements.has_key(tag.mission_element):
                            self.log.warning(
                                "Skipping tag %s; not a mission element." %
                                tag.mission_element)
                            continue

                        m_element = melements[tag.mission_element]()
                        m_element.init(
                        )  #Turn on vision for this mission element

                    for frame in frame_list:
                        #The test of the frame
                        if vision_enable:
                            yield frame, tag, m_element
                        else:
                            yield frame, tag

                        frame_count += 1
                        self.status_callback(frame_count)

                        if self.has_aborted():
                            break

                    if vision_enable:
                        m_element.deinit(
                        )  #Turn off vision for this mission element

                    self.log.info("Waiting for module shutdown")
                    sleep(
                        1
                    )  # We sleep here because vision will reset the enabled flag if vision is stopped and started too qucikly
                    # This happens if we immediately stop and start the same vision module
                    # TODO: Refactor to fix this (or fix this behavior in vision)
                    # Testing could potentially time out if a vision module does not shut down within
                    # this period
                if self.has_aborted():
                    break
            if self.has_aborted():
                break