From 8102dbe9594bf739305104b86bd381e82faca826 Mon Sep 17 00:00:00 2001 From: Salvo 'LtWorf' Tomaselli Date: Tue, 2 Jun 2015 12:35:47 +0200 Subject: [PATCH] Fixed and changed semantic of open relation Now relations are always named with the default name. Multiple relations can be opened at once from the GUI. Removed redundant code to select the default name for a relation. Using system dependant splitter to determine the default name for a relation. --- relational_gui.py | 20 ++++++------- relational_gui/guihandler.py | 56 +++++++++++++++--------------------- 2 files changed, 31 insertions(+), 45 deletions(-) diff --git a/relational_gui.py b/relational_gui.py index 545f352..21f3a80 100755 --- a/relational_gui.py +++ b/relational_gui.py @@ -23,6 +23,7 @@ import sys import os import os.path import getopt + from relational import relation, parser version = "2.0" @@ -85,8 +86,6 @@ if __name__ == "__main__": import sip # needed on windows from PyQt5 import QtGui, QtWidgets - #FIXME remove this - from relational_gui import maingui, guihandler, about, surveyForm try: from relational_gui import maingui, guihandler, about, surveyForm except: @@ -108,16 +107,13 @@ if __name__ == "__main__": ui.setupUi(form) form.restore_settings() - for i in range(len(files)): - if not os.path.isfile(files[i]): - print ("%s is not a file" % files[i],file=sys.stderr) - printhelp(12) - f = files[i].split('/') - defname = f[len(f) - 1].lower() - if defname.endswith(".csv"): # removes the extension - defname = defname[:-4] - print ('Loading file "%s" with name "%s"' % (files[i], defname)) - form.loadRelation(files[i], defname) + m = enumerate(map(os.path.isfile, files)) + invalid = ' '.join((files[i[0]] for i in (filter(lambda x: not x[1], m)))) + if invalid: + print ("%s: not a file" % invalid,file=sys.stderr) + printhelp(12) + if len(files): + form.loadRelation(files) form.show() sys.exit(app.exec_()) diff --git a/relational_gui/guihandler.py b/relational_gui/guihandler.py index 7e1b70f..9b537c1 100644 --- a/relational_gui/guihandler.py +++ b/relational_gui/guihandler.py @@ -18,6 +18,7 @@ # author Salvo "LtWorf" Tomaselli import sys import os +import os.path from PyQt5 import QtCore, QtWidgets, QtWidgets @@ -276,7 +277,6 @@ class relForm(QtWidgets.QMainWindow): event.accept() def save_settings(self): - print('save') self.settings.setValue('maingui/geometry', self.saveGeometry()) self.settings.setValue('maingui/windowState', self.saveState()) @@ -306,50 +306,40 @@ class relForm(QtWidgets.QMainWindow): ui.setupUi(self.About) self.About.show() - def loadRelation(self, filename=None, name=None): + def loadRelation(self, filenames=None): '''Loads a relation. Without parameters it will ask the user which relation to load, otherwise it will load filename, giving it name. It shouldn't be called giving filename but not giving name.''' # Asking for file to load - if filename == None: - filename = QtWidgets.QFileDialog.getOpenFileName(self, QtWidgets.QApplication.translate( + if not filenames: + f = QtWidgets.QFileDialog.getOpenFileNames(self, QtWidgets.QApplication.translate( "Form", "Load Relation"), "", QtWidgets.QApplication.translate("Form", "Relations (*.csv);;Text Files (*.txt);;All Files (*)")) - filename = compatibility.get_filename(filename) + filenames = f[0] - # Default relation's name - f = filename.split('/') # Split the full path - defname = f[len(f) - 1].lower() # Takes only the lowercase filename + for f in filenames: + # Default relation's name + name = os.path.basename(f).lower() - if len(defname) == 0: - return - - if (defname.endswith(".csv")): # removes the extension - defname = defname[:-4] - - if name == None: # Prompt dialog to insert name for the relation - res = QtWidgets.QInputDialog.getText( - self, QtWidgets.QApplication.translate("Form", "New relation"), QtWidgets.QApplication.translate( - "Form", "Insert the name for the new relation"), - QtWidgets.QLineEdit.Normal, defname) - if res[1] == False or len(res[0]) == 0: + if len(name) == 0: return - name = compatibility.get_py_str(res[0]) + if (name.endswith(".csv")): # removes the extension + name = name[:-4] - if not rtypes.is_valid_relation_name(name): - r = QtWidgets.QApplication.translate( - "Form", str("Wrong name for destination relation: %s." % name)) - QtWidgets.QMessageBox.information( - self, QtWidgets.QApplication.translate("Form", "Error"), r) - return + if not rtypes.is_valid_relation_name(name): + r = QtWidgets.QApplication.translate( + "Form", str("Wrong name for destination relation: %s." % name)) + QtWidgets.QMessageBox.information( + self, QtWidgets.QApplication.translate("Form", "Error"), r) + continue - try: - self.relations[name] = relation.relation(filename) - except Exception as e: - print (e) - QtWidgets.QMessageBox.information(None, QtWidgets.QApplication.translate("Form", "Error"), "%s\n%s" % + try: + self.relations[name] = relation.relation(f) + except Exception as e: + print (e) + QtWidgets.QMessageBox.information(None, QtWidgets.QApplication.translate("Form", "Error"), "%s\n%s" % (QtWidgets.QApplication.translate("Form", "Check your query!"), e.__str__())) - return + continue self.updateRelations()