diff --git a/CHANGELOG b/CHANGELOG
index 0fd44f6..9fcf323 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -6,6 +6,7 @@
- Can check for new version online
- Can use both PySide and PyQt
- Removed buttons for adding and deleting tuples
+- Can edit relations within the GUI
1.0
- Adds history in the GUI
diff --git a/relational_gui/creator.py b/relational_gui/creator.py
index 1b1e65d..187122d 100644
--- a/relational_gui/creator.py
+++ b/relational_gui/creator.py
@@ -21,7 +21,8 @@ try:
from PyQt4 import QtCore, QtGui
except:
from PySide import QtCore, QtGui
-
+
+import compatibility
from relational import relation
import rel_edit
@@ -78,11 +79,30 @@ class creatorForm(QtGui.QDialog):
self.table.setItem (0,1,i01)
self.table.setItem (1,0,i10)
self.table.setItem (1,1,i11)
-
-
-
+ def create_relation(self):
+ hlist=[]
+
+ for i in range(self.table.columnCount()):
+ hlist.append(compatibility.get_py_str(self.table.item(0,i).text()))
+ try:
+ header=relation.header(hlist)
+ except Exception, e:
+ QtGui.QMessageBox.information(None,QtGui.QApplication.translate("Form", "Error"),"%s\n%s" % (QtGui.QApplication.translate("Form", "Header error!"),e.__str__()) )
+
+ r=relation.relation()
+ r.header=header
+
+ for i in range(1,self.table.rowCount()):
+ hlist=[]
+ for j in range(self.table.columnCount()):
+ hlist.append(compatibility.get_py_str(self.table.item(i,j).text()))
+ r.content.add(tuple(hlist))
+ return r
def accept(self):
+
+ self.result_relation=self.create_relation()
+
QtGui.QDialog.accept(self)
pass
def reject(self):
diff --git a/relational_gui/guihandler.py b/relational_gui/guihandler.py
index 33e5cc2..081a029 100644
--- a/relational_gui/guihandler.py
+++ b/relational_gui/guihandler.py
@@ -165,14 +165,43 @@ class relForm(QtGui.QMainWindow):
def editRelation(self):
import creator
for i in self.ui.lstRelations.selectedItems():
- self.relations[compatibility.get_py_str(i.text())]=creator.editRelation(self.relations[compatibility.get_py_str(i.text())])
+ result=creator.editRelation(self.relations[compatibility.get_py_str(i.text())])
+ if result!=None:
+ self.relations[compatibility.get_py_str(i.text())]=result
self.updateRelations()
def newRelation(self):
import creator
- creator.editRelation()
- self.updateRelations()
- #TODO chose name for the relation
+ result=creator.editRelation()
+ if result==None:
+ return
+ res=QtGui.QInputDialog.getText(
+ self,
+ QtGui.QApplication.translate("Form", "New relation"),
+ QtGui.QApplication.translate("Form", "Insert the name for the new relation"),
+ QtGui.QLineEdit.Normal,'')
+ if res[1]==False or len(res[0])==0:
+ return
+
+ #Patch provided by Angelo 'Havoc' Puglisi
+ name=compatibility.get_py_str(res[0])
+
+ if not rtypes.is_valid_relation_name(name):
+ r=QtGui.QApplication.translate("Form", str("Wrong name for destination relation: %s." % name))
+ QtGui.QMessageBox.information(self,QtGui.QApplication.translate("Form", "Error"),r)
+ return
+
+ try:
+ self.relations[name]=result
+ except Exception, e:
+ print e
+ QtGui.QMessageBox.information(None,QtGui.QApplication.translate("Form", "Error"),"%s\n%s" % (QtGui.QApplication.translate("Form", "Check your query!"),e.__str__()) )
+ return
+
+
+ self.updateRelations()
+
+
def showSurvey(self):
if self.Survey==None:
self.Survey=surveyForm.surveyForm()
diff --git a/relational_gui/maingui.py b/relational_gui/maingui.py
index 4bddde4..58939cd 100644
--- a/relational_gui/maingui.py
+++ b/relational_gui/maingui.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'relational_gui/maingui.ui'
#
-# Created: Thu Oct 13 19:00:44 2011
+# Created: Thu Oct 13 20:42:44 2011
# by: PyQt4 UI code generator 4.8.3
#
# WARNING! All changes made in this file will be lost!
@@ -148,21 +148,21 @@ class Ui_MainWindow(object):
self.lstRelations.setMaximumSize(QtCore.QSize(16777215, 16777215))
self.lstRelations.setObjectName(_fromUtf8("lstRelations"))
self.verticalLayout.addWidget(self.lstRelations)
+ self.cmdNew = QtGui.QPushButton(self.groupBox)
+ self.cmdNew.setObjectName(_fromUtf8("cmdNew"))
+ self.verticalLayout.addWidget(self.cmdNew)
self.cmdLoad = QtGui.QPushButton(self.groupBox)
self.cmdLoad.setObjectName(_fromUtf8("cmdLoad"))
self.verticalLayout.addWidget(self.cmdLoad)
self.cmdSave = QtGui.QPushButton(self.groupBox)
self.cmdSave.setObjectName(_fromUtf8("cmdSave"))
self.verticalLayout.addWidget(self.cmdSave)
- self.cmdUnload = QtGui.QPushButton(self.groupBox)
- self.cmdUnload.setObjectName(_fromUtf8("cmdUnload"))
- self.verticalLayout.addWidget(self.cmdUnload)
- self.cmdNew = QtGui.QPushButton(self.groupBox)
- self.cmdNew.setObjectName(_fromUtf8("cmdNew"))
- self.verticalLayout.addWidget(self.cmdNew)
self.cmdEdit = QtGui.QPushButton(self.groupBox)
self.cmdEdit.setObjectName(_fromUtf8("cmdEdit"))
self.verticalLayout.addWidget(self.cmdEdit)
+ self.cmdUnload = QtGui.QPushButton(self.groupBox)
+ self.cmdUnload.setObjectName(_fromUtf8("cmdUnload"))
+ self.verticalLayout.addWidget(self.cmdUnload)
self.groupBox_2 = QtGui.QGroupBox(self.splitter)
self.groupBox_2.setMinimumSize(QtCore.QSize(0, 0))
self.groupBox_2.setMaximumSize(QtCore.QSize(300, 16777215))
@@ -334,11 +334,11 @@ class Ui_MainWindow(object):
self.cmdClearHistory.setText(QtGui.QApplication.translate("MainWindow", "Clear history", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox.setTitle(QtGui.QApplication.translate("MainWindow", "Relations", None, QtGui.QApplication.UnicodeUTF8))
self.lstRelations.setSortingEnabled(True)
+ self.cmdNew.setText(QtGui.QApplication.translate("MainWindow", "New relation", None, QtGui.QApplication.UnicodeUTF8))
self.cmdLoad.setText(QtGui.QApplication.translate("MainWindow", "Load relation", None, QtGui.QApplication.UnicodeUTF8))
self.cmdSave.setText(QtGui.QApplication.translate("MainWindow", "Save relation", None, QtGui.QApplication.UnicodeUTF8))
- self.cmdUnload.setText(QtGui.QApplication.translate("MainWindow", "Unload relation", None, QtGui.QApplication.UnicodeUTF8))
- self.cmdNew.setText(QtGui.QApplication.translate("MainWindow", "New relation", None, QtGui.QApplication.UnicodeUTF8))
self.cmdEdit.setText(QtGui.QApplication.translate("MainWindow", "Edit relation", None, QtGui.QApplication.UnicodeUTF8))
+ self.cmdUnload.setText(QtGui.QApplication.translate("MainWindow", "Unload relation", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox_2.setTitle(QtGui.QApplication.translate("MainWindow", "Attributes", None, QtGui.QApplication.UnicodeUTF8))
self.txtResult.setText(QtGui.QApplication.translate("MainWindow", "_last1", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("MainWindow", "=", None, QtGui.QApplication.UnicodeUTF8))
diff --git a/relational_gui/maingui.ui b/relational_gui/maingui.ui
index 757884a..684a979 100644
--- a/relational_gui/maingui.ui
+++ b/relational_gui/maingui.ui
@@ -291,6 +291,13 @@
+ -
+
+
+ New relation
+
+
+
-
@@ -305,20 +312,6 @@
- -
-
-
- Unload relation
-
-
-
- -
-
-
- New relation
-
-
-
-
@@ -326,6 +319,13 @@
+ -
+
+
+ Unload relation
+
+
+
diff --git a/relational_gui/survey.py b/relational_gui/survey.py
index bab4efe..7dfb1c9 100644
--- a/relational_gui/survey.py
+++ b/relational_gui/survey.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'relational_gui/survey.ui'
#
-# Created: Thu Oct 13 19:00:44 2011
+# Created: Thu Oct 13 20:42:44 2011
# by: PyQt4 UI code generator 4.8.3
#
# WARNING! All changes made in this file will be lost!
diff --git a/relational_pyside/maingui.py b/relational_pyside/maingui.py
index c834693..44a4be8 100644
--- a/relational_pyside/maingui.py
+++ b/relational_pyside/maingui.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'relational_pyside/maingui.ui'
#
-# Created: Thu Oct 13 19:00:44 2011
+# Created: Thu Oct 13 20:42:44 2011
# by: pyside-uic 0.2.13 running on PySide 1.0.7
#
# WARNING! All changes made in this file will be lost!
@@ -143,21 +143,21 @@ class Ui_MainWindow(object):
self.lstRelations.setMaximumSize(QtCore.QSize(16777215, 16777215))
self.lstRelations.setObjectName("lstRelations")
self.verticalLayout.addWidget(self.lstRelations)
+ self.cmdNew = QtGui.QPushButton(self.groupBox)
+ self.cmdNew.setObjectName("cmdNew")
+ self.verticalLayout.addWidget(self.cmdNew)
self.cmdLoad = QtGui.QPushButton(self.groupBox)
self.cmdLoad.setObjectName("cmdLoad")
self.verticalLayout.addWidget(self.cmdLoad)
self.cmdSave = QtGui.QPushButton(self.groupBox)
self.cmdSave.setObjectName("cmdSave")
self.verticalLayout.addWidget(self.cmdSave)
- self.cmdUnload = QtGui.QPushButton(self.groupBox)
- self.cmdUnload.setObjectName("cmdUnload")
- self.verticalLayout.addWidget(self.cmdUnload)
- self.cmdNew = QtGui.QPushButton(self.groupBox)
- self.cmdNew.setObjectName("cmdNew")
- self.verticalLayout.addWidget(self.cmdNew)
self.cmdEdit = QtGui.QPushButton(self.groupBox)
self.cmdEdit.setObjectName("cmdEdit")
self.verticalLayout.addWidget(self.cmdEdit)
+ self.cmdUnload = QtGui.QPushButton(self.groupBox)
+ self.cmdUnload.setObjectName("cmdUnload")
+ self.verticalLayout.addWidget(self.cmdUnload)
self.groupBox_2 = QtGui.QGroupBox(self.splitter)
self.groupBox_2.setMinimumSize(QtCore.QSize(0, 0))
self.groupBox_2.setMaximumSize(QtCore.QSize(300, 16777215))
@@ -329,11 +329,11 @@ class Ui_MainWindow(object):
self.cmdClearHistory.setText(QtGui.QApplication.translate("MainWindow", "Clear history", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox.setTitle(QtGui.QApplication.translate("MainWindow", "Relations", None, QtGui.QApplication.UnicodeUTF8))
self.lstRelations.setSortingEnabled(True)
+ self.cmdNew.setText(QtGui.QApplication.translate("MainWindow", "New relation", None, QtGui.QApplication.UnicodeUTF8))
self.cmdLoad.setText(QtGui.QApplication.translate("MainWindow", "Load relation", None, QtGui.QApplication.UnicodeUTF8))
self.cmdSave.setText(QtGui.QApplication.translate("MainWindow", "Save relation", None, QtGui.QApplication.UnicodeUTF8))
- self.cmdUnload.setText(QtGui.QApplication.translate("MainWindow", "Unload relation", None, QtGui.QApplication.UnicodeUTF8))
- self.cmdNew.setText(QtGui.QApplication.translate("MainWindow", "New relation", None, QtGui.QApplication.UnicodeUTF8))
self.cmdEdit.setText(QtGui.QApplication.translate("MainWindow", "Edit relation", None, QtGui.QApplication.UnicodeUTF8))
+ self.cmdUnload.setText(QtGui.QApplication.translate("MainWindow", "Unload relation", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox_2.setTitle(QtGui.QApplication.translate("MainWindow", "Attributes", None, QtGui.QApplication.UnicodeUTF8))
self.txtResult.setText(QtGui.QApplication.translate("MainWindow", "_last1", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("MainWindow", "=", None, QtGui.QApplication.UnicodeUTF8))
diff --git a/relational_pyside/survey.py b/relational_pyside/survey.py
index 2dc2a97..5135ea5 100644
--- a/relational_pyside/survey.py
+++ b/relational_pyside/survey.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'relational_pyside/survey.ui'
#
-# Created: Thu Oct 13 19:00:44 2011
+# Created: Thu Oct 13 20:42:44 2011
# by: pyside-uic 0.2.13 running on PySide 1.0.7
#
# WARNING! All changes made in this file will be lost!