|
|
@@ -1,80 +0,0 @@
|
|
|
-'''
|
|
|
-@author: olivier.massot
|
|
|
-'''
|
|
|
-
|
|
|
-import csv
|
|
|
-import sys
|
|
|
-
|
|
|
-from PyQt5 import uic
|
|
|
-from PyQt5.Qt import QMainWindow, QApplication, QMessageBox, QStandardItemModel, \
|
|
|
- QStandardItem, Qt, QFileDialog
|
|
|
-from path import Path
|
|
|
-
|
|
|
-
|
|
|
-Ui_window, _ = uic.loadUiType(Path(__file__).parent / 'tsv_editor.ui')
|
|
|
-
|
|
|
-csv.register_dialect('tsv', delimiter='\t', quotechar='', quoting=csv.QUOTE_NONE)
|
|
|
-
|
|
|
-def exec_(filename=''):
|
|
|
-
|
|
|
- app = QApplication(sys.argv)
|
|
|
-
|
|
|
- SYS_HOOK = sys.excepthook
|
|
|
- def error_handler(typ, value, trace):
|
|
|
- while QApplication.overrideCursor():
|
|
|
- QApplication.restoreOverrideCursor()
|
|
|
- QMessageBox.critical(iface, typ.__name__, "{}".format(value))
|
|
|
- SYS_HOOK(typ, value, trace)
|
|
|
- sys.excepthook = error_handler
|
|
|
-
|
|
|
- if not filename:
|
|
|
- filename, _ = QFileDialog.getOpenFileName(None, "Selectionner un fichier TSV", ".", "Tsv Files (*.tsv *.csv)")
|
|
|
-
|
|
|
- iface = MainWindow(filename)
|
|
|
- iface.show()
|
|
|
-
|
|
|
- r = app.exec_()
|
|
|
- return r
|
|
|
-
|
|
|
-class MainWindow(QMainWindow):
|
|
|
-
|
|
|
- def __init__(self, csvpath):
|
|
|
- super (MainWindow, self).__init__()
|
|
|
- self.csvpath = csvpath
|
|
|
- self.createWidgets()
|
|
|
-
|
|
|
- def createWidgets(self):
|
|
|
- self.ui = Ui_window()
|
|
|
- self.ui.setupUi(self)
|
|
|
-
|
|
|
- self.ui.btn_cancel.clicked.connect(self.cancel)
|
|
|
- self.ui.btn_ok.clicked.connect(self.ok)
|
|
|
-
|
|
|
- self.model = QStandardItemModel(self)
|
|
|
- self.ui.tbl_data.setModel(self.model)
|
|
|
- self.ui.lbl_path.setText(self.csvpath)
|
|
|
-
|
|
|
- with open(self.csvpath, newline='') as csvfile:
|
|
|
- reader = csv.reader(csvfile, 'tsv')
|
|
|
- self.headers = next(reader)
|
|
|
- self.model.setHorizontalHeaderLabels(self.headers)
|
|
|
- for row in reader:
|
|
|
- items = [ QStandardItem(field) for field in row ]
|
|
|
- self.model.appendRow(items)
|
|
|
-
|
|
|
- def ok(self):
|
|
|
- with open(self.csvpath, "w", newline='') as fileOutput:
|
|
|
- writer = csv.writer(fileOutput, "tsv")
|
|
|
- writer.writerow(self.headers)
|
|
|
- for rowNumber in range(self.model.rowCount()):
|
|
|
- fields = [self.model.data(self.model.index(rowNumber, columnNumber), Qt.DisplayRole)
|
|
|
- for columnNumber in range(self.model.columnCount())]
|
|
|
- writer.writerow(fields)
|
|
|
- self.close()
|
|
|
-
|
|
|
- def cancel(self):
|
|
|
- self.close()
|
|
|
-
|
|
|
-
|
|
|
-if __name__ == '__main__':
|
|
|
- exec_()
|