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
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
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
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
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()
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)
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)
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)