Ejemplo n.º 1
0
    def CreateDJICsv(self, rows_list, csv_raw):
        ''' DJI Drone: Create csv result files for each record '''
        QApplication.setOverrideCursor(Qt.WaitCursor)
        QApplication.processEvents()
        
        folder = getVideoFolder(self.video_file)
        
        qgsu.createFolderByName(folder, "klv")
        qgsu.createFolderByName(folder, "csv")
        
        self.klv_folder = os.path.join(folder, "klv")
        out_csv = os.path.join(folder, "csv")

        for values in rows_list:            
            timestamp = int(time.time() * 1000.0)
            filename = "_".join(["recording", str(timestamp)])
            out_record = os.path.join(out_csv, filename + ".csv")
            # The column that corresponds to the stop is also removed
            with open(csv_raw, 'r') as f_input, open(out_record, 'w', newline='') as f_output:
                csv_input = csv.reader(f_input)
                csv.writer(f_output).writerows(itertools.islice(csv_input, 0, 1))
                csv.writer(f_output).writerows(itertools.islice(csv_input, int(values[0]), int(values[-1])))
                
            self.cmb_telemetry.addItem(filename, out_record)
        
        self.bt_createMISB.setEnabled(True) 
        QApplication.restoreOverrideCursor() 
        QApplication.processEvents()      
        return
Ejemplo n.º 2
0
    def PlayVideoFromManager(self, model):
        ''' Play video from manager dock '''
        # Don't enable Play if video doesn't have metadata
        row = model.row()
        if self.VManager.cellWidget(row, 5).findChild(QProgressBar).value() < 100:
            return

        path = self.VManager.item(row, 3).text()
        text = self.VManager.item(row, 1).text()
        self.ToggleActiveRow(row)
        
        folder = getVideoFolder(text)
        klv_folder = os.path.join(folder, "klv")
        exist = os.path.exists(klv_folder)
        try:
            self._PlayerDlg.close()
        except Exception:
            None
        if self._PlayerDlg is None:
            if exist:
                self.CreatePlayer(path, row, islocal=True, klv_folder=klv_folder)
            else:
                self.CreatePlayer(path, row)
        else:
            if path != self._PlayerDlg.fileName:
                self.ToggleActiveFromTitle()
                if exist:
                    self._PlayerDlg.playFile(path, islocal=True, klv_folder=klv_folder)
                else:
                    self._PlayerDlg.playFile(path)
                return
Ejemplo n.º 3
0
    def CreateDJICsv(self, rows_list, csv_raw, time_list):
        """ DJI Drone: Create csv result files for each record """
        QApplication.setOverrideCursor(Qt.WaitCursor)
        QApplication.processEvents()

        folder = getVideoFolder(self.video_file)

        qgsu.createFolderByName(folder, "klv")
        qgsu.createFolderByName(folder, "csv")

        self.klv_folder = os.path.join(folder, "klv")
        out_csv = os.path.join(folder, "csv")

        for idx, val in enumerate(rows_list):
            filename = "_".join(["recording", time_list[idx]])
            out_record = os.path.join(out_csv, filename + ".csv")
            # The column that corresponds to the stop is also removed
            with open(csv_raw, "r", encoding=encoding) as f_input, open(
                    out_record, "w", newline="",
                    encoding=encoding) as f_output:
                # Prevent “_csv.Error: line contains NULL byte
                data = f_input.read()
                data = data.replace("\x00", "?")
                csv_input = csv.reader(StringIO(data))
                csv.writer(f_output).writerows(
                    itertools.islice(csv_input, 0, 1))
                csv.writer(f_output).writerows(
                    itertools.islice(csv_input, int(val[0]), int(val[-1])))

            self.cmb_telemetry.addItem(filename, out_record)

        self.bt_createMISB.setEnabled(True)
        QApplication.restoreOverrideCursor()
        QApplication.processEvents()
        return
Ejemplo n.º 4
0
 def ToggleActiveFromTitle(self):
     ''' Toggle Active video status '''
     column = 2
     for row in range(self.VManager.rowCount()):
         if self.VManager.item(row, column) is not None:
             v = self.VManager.item(row, column).text()
             text = self.VManager.item(row, 1).text()
             if v == "Playing":
                 folder = getVideoFolder(text)
                 klv_folder = os.path.join(folder, "klv")
                 exist = os.path.exists(klv_folder)
                 if exist:
                     self.ToggleActiveRow(row, value="Ready Local")
                 else:
                     self.ToggleActiveRow(row, value="Ready")
                 return
Ejemplo n.º 5
0
    def __init__(self, iface, parent=None):
        super().__init__(parent)
        self.setupUi(self)
        self.parent = parent
        self.iface = iface
        self._PlayerDlg = None
        self.isStreaming = False
        self.meta_reader = {}
        self.initialPt = {}
        self.pass_time = 500
        #self.intervall = 1000
        #self.notify_int = 3000

        self.VManager.viewport().installEventFilter(self)

        # Context Menu
        self.VManager.customContextMenuRequested.connect(self.__context_menu)
        self.removeAct = QAction(
            QIcon(":/imgFMV/images/mActionDeleteSelected.svg"),
            QCoreApplication.translate("ManagerDock", "Remove from list"),
            self,
            triggered=self.remove)

        self.VManager.setColumnWidth(1, 150)
        self.VManager.setColumnWidth(2, 80)
        self.VManager.setColumnWidth(3, 300)
        self.VManager.setColumnWidth(4, 300)
        self.VManager.verticalHeader().setDefaultAlignment(Qt.AlignHCenter)
        self.VManager.hideColumn(0)

        # Get Video Manager List
        VideoList = getVideoManagerList()
        for load_id in VideoList:
            filename = s.value(getNameSpace() + "/Manager_List/" + load_id)
            _, name = os.path.split(filename)

            folder = getVideoFolder(filename)
            klv_folder = os.path.join(folder, "klv")
            exist = os.path.exists(klv_folder)
            if exist:
                self.AddFileRowToManager(name, filename, load_id, exist,
                                         klv_folder)
            else:
                self.AddFileRowToManager(name, filename, load_id)

        draw.setValues()
Ejemplo n.º 6
0
    def loadVideosFromSettings(self):

        # Get Video Manager List
        VideoList = getVideoManagerList()
        for load_id in VideoList:
            filename = s.value(getNameSpace() + "/Manager_List/" + load_id)
            _, name = os.path.split(filename)

            folder = getVideoFolder(filename)
            klv_folder = os.path.join(folder, "klv")
            exist = os.path.exists(klv_folder)

            if exist:
                self.AddFileRowToManager(name, filename, load_id, exist,
                                         klv_folder)
            else:
                if os.path.isfile(filename):
                    self.AddFileRowToManager(name, filename, load_id)
Ejemplo n.º 7
0
    def PlayVideoFromManager(self, model):
        ''' Play video from manager dock.
            Manager row double clicked
        '''
        # Don't enable Play if video doesn't have metadata
        row = model.row()
        if self.VManager.cellWidget(row,
                                    5).findChild(QProgressBar).value() < 100:
            return

        path = self.VManager.item(row, 3).text()
        text = self.VManager.item(row, 1).text()
        self.ToggleActiveRow(row)

        folder = getVideoFolder(text)
        klv_folder = os.path.join(folder, "klv")
        exist = os.path.exists(klv_folder)
        try:
            if self._PlayerDlg.isVisible():
                self._PlayerDlg.close()
        except Exception:
            None
        # First time we open the player
        if self._PlayerDlg is None:
            if exist:
                self.CreatePlayer(path,
                                  row,
                                  islocal=True,
                                  klv_folder=klv_folder)
            else:
                self.CreatePlayer(path, row)
        else:
            #qgsu.CustomMessage("QGIS FMV", path, self._PlayerDlg.fileName, icon="Information")
            #if path != self._PlayerDlg.fileName:
            self._PlayerDlg.setMetaReader(self.meta_reader[str(row)])
            self.ToggleActiveFromTitle()
            self._PlayerDlg.show()
            self._PlayerDlg.activateWindow()
            if exist:
                self._PlayerDlg.playFile(path,
                                         islocal=True,
                                         klv_folder=klv_folder)
            else:
                self._PlayerDlg.playFile(path)
Ejemplo n.º 8
0
    def PlayVideoFromManager(self, model):
        """Play video from manager dock.
        Manager row double clicked
        """
        # Don't enable Play if video doesn't have metadata
        if not self.videoPlayable[model.row()]:
            return

        try:
            if self._PlayerDlg.isVisible():
                self._PlayerDlg.close()
        except Exception:
            None

        path = self.VManager.item(model.row(), 3).text()
        text = self.VManager.item(model.row(), 1).text()

        folder = getVideoFolder(text)
        klv_folder = os.path.join(folder, "klv")
        exist = os.path.exists(klv_folder)

        # First time we open the player
        if self._PlayerDlg is None:
            if exist:
                self.CreatePlayer(
                    path,
                    self.update_interval,
                    model.row(),
                    islocal=True,
                    klv_folder=klv_folder,
                )
            else:
                self.CreatePlayer(path, self.update_interval, model.row())

        self.SetupPlayer(model.row())
        if exist:
            self._PlayerDlg.playFile(path, islocal=True, klv_folder=klv_folder)
        else:
            self._PlayerDlg.playFile(path)