diff --git a/CHANGELOG b/CHANGELOG
index 1146294..c0ce8ca 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,7 @@
- Colored output in readline mode
- Can send email in survey
- Can check for new version online
+- Can use both PySide and PyQt
1.0
- Adds history in the GUI
diff --git a/relational_gui/compatibility.py b/relational_gui/compatibility.py
index e28ddcc..be432a9 100644
--- a/relational_gui/compatibility.py
+++ b/relational_gui/compatibility.py
@@ -32,4 +32,14 @@ def get_py_str(a):
'''Returns a python string out of a QString'''
if pyqt:
return str(a.toUtf8())
- return a #Already a python string in PySide
\ No newline at end of file
+ return a #Already a python string in PySide
+
+def set_utf8_text(component,text):
+ if pyqt:
+ component.setText(text.decode("utf-8"))
+ else:
+ component.setText(QtCore.QString.fromUtf8(text))
+def get_filename(filename):
+ if pyqt:
+ return str(filename.toUtf8())
+ return filename[0]
\ No newline at end of file
diff --git a/relational_gui/guihandler.py b/relational_gui/guihandler.py
index ffa0b78..1922754 100644
--- a/relational_gui/guihandler.py
+++ b/relational_gui/guihandler.py
@@ -16,7 +16,11 @@
# along with this program. If not, see .
#
# author Salvo "LtWorf" Tomaselli
-from PyQt4 import QtCore, QtGui
+try:
+ from PyQt4 import QtCore, QtGui
+except:
+ from PySide import QtCore, QtGui
+
from relational import relation, parser, optimizer,rtypes
import sys
@@ -25,6 +29,7 @@ import survey
import os
import surveyForm
import maingui
+import compatibility
class relForm(QtGui.QMainWindow):
@@ -63,20 +68,22 @@ class relForm(QtGui.QMainWindow):
'''Performs all the possible optimizations on the query'''
self.undo=self.ui.txtQuery.text() #Storing the query in undo list
- result=optimizer.optimize_all(str(self.ui.txtQuery.text().toUtf8()),self.relations)
- self.ui.txtQuery.setText(QtCore.QString.fromUtf8(result))
+
+ query=compatibility.get_py_str(self.ui.txtQuery.text()).encode("utf-8")
+ result=optimizer.optimize_all(query,self.relations)
+ compatibility.set_utf8_text(self.ui.TxtQuery,result)
def resumeHistory(self,item):
- itm=str(item.text().toUtf8()).split(' = ',1)
- self.ui.txtResult.setText(QtCore.QString.fromUtf8(itm[0]))
- self.ui.txtQuery.setText(QtCore.QString.fromUtf8(itm[1]))
+ itm=compatibility.get_py_str(item.text()).split(' = ',1)
+ compatibility.set_utf8_text(self.ui.txtResult,itm[0])
+ compatibility.set_utf8_text(self.ui.txtQuery,itm[1])
def execute(self):
'''Executes the query'''
- query=str(self.ui.txtQuery.text().toUtf8())
- res_rel=str(self.ui.txtResult.text().toUtf8())#result relation's name
+ query=compatibility.get_py_str(self.ui.txtQuery.text())
+ res_rel=compatibility.get_py_str(self.ui.txtResult.text())#result relation's name
if not rtypes.is_valid_relation_name(res_rel):
QtGui.QMessageBox.information(self,QtGui.QApplication.translate("Form", "Error"),QtGui.QApplication.translate("Form", "Wrong name for destination relation."))
@@ -97,17 +104,18 @@ class relForm(QtGui.QMainWindow):
QtGui.QMessageBox.information(None,QtGui.QApplication.translate("Form", "Error"),"%s\n%s" % (QtGui.QApplication.translate("Form", "Check your query!"),e.__str__()) )
return
#Query was executed normally
- history_item=QtCore.QString()
- history_item.append(self.ui.txtResult.text())
- history_item.append(u' = ')
- history_item.append(self.ui.txtQuery.text())
- hitem=QtGui.QListWidgetItem(None,0)
- hitem.setText(history_item)
- self.ui.lstHistory.addItem (hitem)
- self.ui.lstHistory.setCurrentItem(hitem)
+ #TODO fix THAT
+ #history_item=QtCore.QString()
+ #history_item.append(self.ui.txtResult.text())
+ #history_item.append(u' = ')
+ #history_item.append(self.ui.txtQuery.text())
+ #hitem=QtGui.QListWidgetItem(None,0)
+ #hitem.setText(history_item)
+ #self.ui.lstHistory.addItem (hitem)
+ #self.ui.lstHistory.setCurrentItem(hitem)
self.qcounter+=1
- self.ui.txtResult.setText(QtCore.QString(u"_last%d"% self.qcounter)) #Sets the result relation name to none
+ compatibility.set_utf8_text(self.ui.txtResult,u"_last%d"% self.qcounter) #Sets the result relation name to none
def showRelation(self,rel):
'''Shows the selected relation into the table'''
@@ -133,12 +141,12 @@ class relForm(QtGui.QMainWindow):
def printRelation(self,item):
- self.selectedRelation=self.relations[str(item.text().toUtf8())]
+ self.selectedRelation=self.relations[compatibility.get_py_str(item.text())]
self.showRelation(self.selectedRelation)
def showAttributes(self,item):
'''Shows the attributes of the selected relation'''
- rel=str(item.text().toUtf8())
+ rel=compatibility.get_py_str(item.text())
self.ui.lstAttributes.clear()
for j in self.relations[rel].header.attributes:
self.ui.lstAttributes.addItem (j)
@@ -150,15 +158,15 @@ class relForm(QtGui.QMainWindow):
self.ui.lstRelations.addItem(i)
def saveRelation(self):
filename = QtGui.QFileDialog.getSaveFileName(self,QtGui.QApplication.translate("Form", "Save Relation"),"",QtGui.QApplication.translate("Form", "Relations (*.csv)"))
-
- filename=str(filename.toUtf8()) #Converts QString to string
+
+ filename=compatibility.get_filename(filename)
if (len(filename)==0):#Returns if no file was selected
return
self.selectedRelation.save(filename)
return
def unloadRelation(self):
for i in self.ui.lstRelations.selectedItems():
- del self.relations[str(i.text().toUtf8())]
+ del self.relations[compatibility.get_py_str(i.text())]
self.updateRelations()
def showSurvey(self):
if self.Survey==None:
@@ -182,7 +190,7 @@ class relForm(QtGui.QMainWindow):
#Asking for file to load
if filename==None:
filename = QtGui.QFileDialog.getOpenFileName(self,QtGui.QApplication.translate("Form", "Load Relation"),"",QtGui.QApplication.translate("Form", "Relations (*.csv);;Text Files (*.txt);;All Files (*)"))
- filename=str(filename.toUtf8())
+ filename=compatibility.get_filename(filename)
#Default relation's name
f=filename.split('/') #Split the full path
@@ -201,10 +209,11 @@ class relForm(QtGui.QMainWindow):
return
#Patch provided by Angelo 'Havoc' Puglisi
- name=str(res[0].toUtf8())
+ name=compatibility.get_py_str(res[0])
if not rtypes.is_valid_relation_name(name):
- QtGui.QMessageBox.information(self,QtGui.QApplication.translate("Form", "Error"),QtGui.QApplication.translate("Form", "Wrong name for destination relation: %s." % 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:
diff --git a/relational_gui/maingui.py b/relational_gui/maingui.py
index 7b3a537..4382477 100644
--- a/relational_gui/maingui.py
+++ b/relational_gui/maingui.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
-# Form implementation generated from reading ui file 'maingui.ui'
+# Form implementation generated from reading ui file 'relational_gui/maingui.ui'
#
-# Created: Tue Jun 14 18:13:03 2011
+# Created: Sat Oct 8 20:14:44 2011
# by: PyQt4 UI code generator 4.8.3
#
# WARNING! All changes made in this file will be lost!
diff --git a/relational_gui/survey.py b/relational_gui/survey.py
index 85a779c..5050ec3 100644
--- a/relational_gui/survey.py
+++ b/relational_gui/survey.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
-# Form implementation generated from reading ui file 'survey.ui'
+# Form implementation generated from reading ui file 'relational_gui/survey.ui'
#
-# Created: Tue Jun 14 17:21:38 2011
+# Created: Sat Oct 8 20:14: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/guihandler.py b/relational_pyside/guihandler.py
deleted file mode 100644
index 2246240..0000000
--- a/relational_pyside/guihandler.py
+++ /dev/null
@@ -1,264 +0,0 @@
-# -*- coding: utf-8 -*-
-# Relational
-# Copyright (C) 2008 Salvo "LtWorf" Tomaselli
-#
-# Relational is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-# author Salvo "LtWorf" Tomaselli
-from PySide import QtCore, QtGui
-from relational import relation, parser, optimizer,rtypes
-
-import sys
-import about
-import survey
-import os
-import surveyForm
-import maingui
-
-class relForm(QtGui.QMainWindow):
-
- def __init__(self,ui):
- QtGui.QMainWindow.__init__(self)
- self.About=None
- self.Survey=None
- self.relations={} #Dictionary for relations
- self.undo=None #UndoQueue for queries
- self.selectedRelation=None
- self.ui=ui
- self.qcounter=1 #Query counter
-
- def load_query(self,*index):
- self.ui.txtQuery.setText(self.savedQ.itemData(index[0]).toString())
-
- def undoOptimize(self):
- '''Undoes the optimization on the query, popping one item from the undo list'''
- if self.undo!=None:
- self.ui.txtQuery.setText(self.undo)
-
- def optimize(self):
- '''Performs all the possible optimizations on the query'''
- self.undo=self.ui.txtQuery.text() #Storing the query in undo list
-
- query=self.ui.txtQuery.text().encode("utf-8")
- result=optimizer.optimize_all(query,self.relations)
- self.ui.txtQuery.setText(result.decode("utf-8"))
-
- def resumeHistory(self,item):
- itm=item.text().split(' = ',1)
- self.ui.txtResult.setText(itm[0])
- self.ui.txtQuery.setText(itm[1])
-
-
- def execute(self):
- '''Executes the query'''
-
- query=self.ui.txtQuery.text().encode("utf-8")
- res_rel=self.ui.txtResult.text().encode("utf-8") #result relation's name
-
- if not rtypes.is_valid_relation_name(res_rel):
- QtGui.QMessageBox.information(self,QtGui.QApplication.translate("Form", "Error"),QtGui.QApplication.translate("Form", "Wrong name for destination relation."))
- return
-
- try:
- #Converting string to utf8 and then from qstring to normal string
- expr=parser.parse(query)#Converting expression to python code
- print query,"-->" , expr #Printing debug
- result=eval(expr,self.relations) #Evaluating the expression
-
- self.relations[res_rel]=result #Add the relation to the dictionary
- self.updateRelations() #update the list
- self.selectedRelation=result
- self.showRelation(self.selectedRelation) #Show the result in the table
- 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
- #Query was executed normally
- history_item=self.ui.txtResult.text() + u' = ' + self.ui.txtQuery.text()
-
- hitem=QtGui.QListWidgetItem(None,0)
- hitem.setText(history_item)
- self.ui.lstHistory.addItem (hitem)
- self.ui.lstHistory.setCurrentItem(hitem)
-
- self.qcounter+=1
- self.ui.txtResult.setText(u"_last%d"% self.qcounter) #Sets the result relation name to none
-
- def showRelation(self,rel):
- '''Shows the selected relation into the table'''
- self.ui.table.clear()
-
- if rel==None: #No relation to show
- self.ui.table.setColumnCount(1)
- self.ui.table.headerItem().setText(0,"Empty relation")
- return
- self.ui.table.setColumnCount(len(rel.header.attributes))
-
- #Set content
- for i in rel.content:
- item = QtGui.QTreeWidgetItem()
- for j in range(len(i)):
- item.setText(j, i[j])
- self.ui.table.addTopLevelItem(item)
-
- #Sets columns
- for i in range(len(rel.header.attributes)):
- self.ui.table.headerItem().setText(i,rel.header.attributes[i])
- self.ui.table.resizeColumnToContents(i) #Must be done in order to avoid too small columns
-
-
- def printRelation(self,item):
- self.selectedRelation=self.relations[item.text()]
- self.showRelation(self.selectedRelation)
-
- def showAttributes(self,item):
- '''Shows the attributes of the selected relation'''
- rel=item.text()
- self.ui.lstAttributes.clear()
- for j in self.relations[rel].header.attributes:
- self.ui.lstAttributes.addItem (j)
-
- def updateRelations(self):
- self.ui.lstRelations.clear()
- for i in self.relations:
- if i != "__builtins__":
- self.ui.lstRelations.addItem(i)
- def saveRelation(self):
- filename = QtGui.QFileDialog.getSaveFileName(self,QtGui.QApplication.translate("Form", "Save Relation"),"",QtGui.QApplication.translate("Form", "Relations (*.csv)"))
-
- filename=filename[0]
- if (len(filename)==0):#Returns if no file was selected
- return
- self.selectedRelation.save(filename)
- return
- def unloadRelation(self):
- for i in self.ui.lstRelations.selectedItems():
- del self.relations[i.text()]
- self.updateRelations()
- def showSurvey(self):
- if self.Survey==None:
- self.Survey=surveyForm.surveyForm()
- ui = survey.Ui_Form()
- self.Survey.setUi(ui)
- ui.setupUi(self.Survey)
- self.Survey.setDefaultValues()
- self.Survey.show()
- def showAbout(self):
- if self.About==None:
- self.About = QtGui.QDialog()
- ui = about.Ui_Dialog()
- ui.setupUi(self.About)
- self.About.show()
-
- def loadRelation(self,filename=None,name=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 = QtGui.QFileDialog.getOpenFileName(self,QtGui.QApplication.translate("Form", "Load Relation"),"",QtGui.QApplication.translate("Form", "Relations (*.csv);;Text Files (*.txt);;All Files (*)"))
- filename=filename[0] #New API returns a tuple
-
- #Default relation's name
- print filename
- f=filename.split('/') #Split the full path
- defname=f[len(f)-1].lower() #Takes only the lowercase filename
-
- 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=QtGui.QInputDialog.getText(self, QtGui.QApplication.translate("Form", "New relation"),QtGui.QApplication.translate("Form", "Insert the name for the new relation"),
- QtGui.QLineEdit.Normal,defname)
- if res[1]==False or len(res[0])==0:
- return
-
- #Patch provided by Angelo 'Havoc' Puglisi
- name=res[0]
-
- if not rtypes.is_valid_relation_name(name):
- QtGui.QMessageBox.information(self,QtGui.QApplication.translate("Form", "Error"),QtGui.QApplication.translate("Form", "Wrong name for destination relation: %s." % name))
- return
-
- try:
- self.relations[name]=relation.relation(filename)
- 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 insertTuple(self):
- '''Shows an input dialog and inserts the inserted tuple into the selected relation'''
- res=QtGui.QInputDialog.getText(self, QtGui.QApplication.translate("Form", "New relation"),QtGui.QApplication.translate("Form", "Insert the values, comma separated"),
- QtGui.QLineEdit.Normal,"")
- if res[1]==False:
- return
-
- t=[]
- for i in str(res[0].toUtf8()).split(","):
- t.append(i.strip())
-
- if self.selectedRelation!=None and self.selectedRelation.insert(t) > 0:
- self.showRelation(self.selectedRelation)
-
- return
- def deleteTuple(self):
- '''Shows an input dialog and removes the tuples corresponding to the condition.'''
- res=QtGui.QInputDialog.getText(self, QtGui.QApplication.translate("Form", "New relation"),QtGui.QApplication.translate("Form", "Remove tuples: insert where condition"),
- QtGui.QLineEdit.Normal,"")
- if res[1]==False:
- return
-
- if self.selectedRelation!=None and self.selectedRelation.delete(str(res[0].toUtf8())) > 0:
- self.showRelation(self.selectedRelation)
-
- return
-
- def addProduct(self):
- self.addSymbolInQuery(u"*")
- def addDifference(self):
- self.addSymbolInQuery(u"-")
- def addUnion(self):
- self.addSymbolInQuery(u"ᑌ")
- def addIntersection(self):
- self.addSymbolInQuery(u"ᑎ")
- def addDivision(self):
- self.addSymbolInQuery(u"÷")
- def addOLeft(self):
- self.addSymbolInQuery(u"ᐅLEFTᐊ")
- def addJoin(self):
- self.addSymbolInQuery(u"ᐅᐊ")
- def addORight(self):
- self.addSymbolInQuery(u"ᐅRIGHTᐊ")
- def addOuter(self):
- self.addSymbolInQuery(u"ᐅFULLᐊ")
- def addProjection(self):
- self.addSymbolInQuery(u"π")
- def addSelection(self):
- self.addSymbolInQuery(u"σ")
- def addRename(self):
- self.addSymbolInQuery(u"ρ")
- def addArrow(self):
- self.addSymbolInQuery(u"➡")
-
- def addSymbolInQuery(self,symbol):
- self.ui.txtQuery.insert(symbol)
- self.ui.txtQuery.setFocus()
-
diff --git a/relational_pyside/guihandler.py b/relational_pyside/guihandler.py
new file mode 120000
index 0000000..791ef62
--- /dev/null
+++ b/relational_pyside/guihandler.py
@@ -0,0 +1 @@
+../relational_gui/guihandler.py
\ No newline at end of file
diff --git a/relational_pyside/maingui.py b/relational_pyside/maingui.py
index b1560a7..45429d7 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: Sat Oct 8 19:27:40 2011
+# Created: Sat Oct 8 20:14:44 2011
# by: pyside-uic 0.2.13 running on PySide 1.0.7
#
# WARNING! All changes made in this file will be lost!
@@ -222,11 +222,14 @@ class Ui_MainWindow(object):
self.action_Quit = QtGui.QAction(MainWindow)
self.action_Quit.setMenuRole(QtGui.QAction.QuitRole)
self.action_Quit.setObjectName("action_Quit")
+ self.actionCheck_for_new_versions = QtGui.QAction(MainWindow)
+ self.actionCheck_for_new_versions.setObjectName("actionCheck_for_new_versions")
self.menuFile.addAction(self.action_Load_relation)
self.menuFile.addAction(self.action_Save_relation)
self.menuFile.addSeparator()
self.menuFile.addAction(self.action_Quit)
self.menuAbout.addAction(self.actionAbout)
+ self.menuAbout.addAction(self.actionCheck_for_new_versions)
self.menubar.addAction(self.menuFile.menuAction())
self.menubar.addAction(self.menuAbout.menuAction())
self.label.setBuddy(self.txtQuery)
@@ -267,6 +270,7 @@ class Ui_MainWindow(object):
QtCore.QObject.connect(self.action_Load_relation, QtCore.SIGNAL("triggered()"), MainWindow.loadRelation)
QtCore.QObject.connect(self.action_Save_relation, QtCore.SIGNAL("triggered()"), MainWindow.saveRelation)
QtCore.QObject.connect(self.action_Quit, QtCore.SIGNAL("triggered()"), MainWindow.close)
+ QtCore.QObject.connect(self.actionCheck_for_new_versions, QtCore.SIGNAL("triggered()"), MainWindow.checkVersion)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
MainWindow.setTabOrder(self.cmdAbout, self.cmdSurvey)
MainWindow.setTabOrder(self.cmdSurvey, self.cmdProduct)
@@ -342,4 +346,5 @@ class Ui_MainWindow(object):
self.action_Save_relation.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8))
self.action_Quit.setText(QtGui.QApplication.translate("MainWindow", "&Quit", None, QtGui.QApplication.UnicodeUTF8))
self.action_Quit.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Q", None, QtGui.QApplication.UnicodeUTF8))
+ self.actionCheck_for_new_versions.setText(QtGui.QApplication.translate("MainWindow", "Check for new versions", None, QtGui.QApplication.UnicodeUTF8))
diff --git a/relational_pyside/maingui.ui b/relational_pyside/maingui.ui
deleted file mode 100644
index 2f27fe6..0000000
--- a/relational_pyside/maingui.ui
+++ /dev/null
@@ -1,1112 +0,0 @@
-
-
- Salvo 'LtWorf' Tomaselli
- MainWindow
-
-
-
- 0
- 0
- 800
- 612
-
-
-
- Relational
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
-
-
-
-
- Menu
-
-
-
-
-
-
- About
-
-
-
- -
-
-
- Survey
-
-
-
-
-
-
- -
-
-
- Operators
-
-
-
-
-
-
- *
-
-
-
- -
-
-
- -
-
-
-
- -
-
-
- ᑌ
-
-
-
- -
-
-
- ᑎ
-
-
-
- -
-
-
- ÷
-
-
-
- -
-
-
- ᐅᐊ
-
-
-
- -
-
-
- ᐅLEFTᐊ
-
-
-
- -
-
-
- ᐅRIGHTᐊ
-
-
-
- -
-
-
- ᐅFULLᐊ
-
-
-
- -
-
-
- π
-
-
-
- -
-
-
- σ
-
-
-
- -
-
-
- ρ
-
-
-
- -
-
-
- ➡
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 25
-
-
-
-
-
-
-
-
-
-
-
- Qt::Horizontal
-
-
-
- Qt::Vertical
-
-
-
-
- 450
- 400
-
-
-
-
- 0
- 0
-
-
-
- false
-
-
-
- Empty relation
-
-
-
-
-
-
- QLayout::SetMinimumSize
-
- -
-
-
- QLayout::SetFixedSize
-
-
-
-
-
- Insert
-
-
-
- -
-
-
- Delete
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
-
- 0
- 0
-
-
-
-
- false
-
-
-
-
- -
-
-
-
-
-
- Optimize
-
-
-
- -
-
-
- Undo optimize
-
-
-
- -
-
-
- Clear history
-
-
-
-
-
-
-
-
-
-
- Qt::Vertical
-
-
-
-
- 0
- 0
-
-
-
-
- 300
- 16777215
-
-
-
- Relations
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
- true
-
-
-
- -
-
-
- Load relation
-
-
-
- -
-
-
- Save relation
-
-
-
- -
-
-
- Unload relation
-
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 300
- 16777215
-
-
-
- Attributes
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
- _last1
-
-
-
- -
-
-
- =
-
-
- txtQuery
-
-
-
- -
-
-
- -
-
-
- ⌫
-
-
-
- -
-
-
- Execute
-
-
-
-
-
-
-
-
-
-
- &About
-
-
- QAction::AboutRole
-
-
-
-
- &Load relation
-
-
- Ctrl+O
-
-
-
-
- &Save relation
-
-
- Ctrl+S
-
-
-
-
- &Quit
-
-
- Ctrl+Q
-
-
- QAction::QuitRole
-
-
-
-
- cmdAbout
- cmdSurvey
- cmdProduct
- cmdDifference
- cmdUnion
- cmdIntersection
- cmdDivision
- cmdJoin
- cmdOuterLeft
- cmdOuterRight
- cmdOuter
- cmdProjection
- cmdSelection
- cmdRename
- cmdArrow
- table
- cmdInsert
- cmdDelete
- lstHistory
- cmdOptimize
- cmdUndoOptimize
- cmdClearHistory
- lstRelations
- cmdLoad
- cmdSave
- cmdUnload
- lstAttributes
- txtResult
- txtQuery
- cmdClearQuery
- cmdExecute
-
-
-
-
- cmdClearQuery
- clicked()
- txtQuery
- clear()
-
-
- 686
- 591
-
-
- 206
- 591
-
-
-
-
- cmdClearHistory
- clicked()
- lstHistory
- clear()
-
-
- 490
- 563
-
-
- 397
- 525
-
-
-
-
- txtQuery
- returnPressed()
- MainWindow
- execute()
-
-
- 450
- 599
-
-
- 438
- 611
-
-
-
-
- cmdExecute
- clicked()
- MainWindow
- execute()
-
-
- 732
- 592
-
-
- 592
- 611
-
-
-
-
- cmdAbout
- clicked()
- MainWindow
- showAbout()
-
-
- 82
- 75
-
-
- 79
- 597
-
-
-
-
- cmdSurvey
- clicked()
- MainWindow
- showSurvey()
-
-
- 63
- 96
-
-
- 99
- 605
-
-
-
-
- cmdProduct
- clicked()
- MainWindow
- addProduct()
-
-
- 41
- 171
-
-
- 180
- 611
-
-
-
-
- cmdDifference
- clicked()
- MainWindow
- addDifference()
-
-
- 82
- 194
-
-
- 46
- 611
-
-
-
-
- cmdArrow
- clicked()
- MainWindow
- addArrow()
-
-
- 99
- 505
-
-
- 58
- 608
-
-
-
-
- cmdRename
- clicked()
- MainWindow
- addRename()
-
-
- 42
- 474
-
-
- 111
- 611
-
-
-
-
- cmdSelection
- clicked()
- MainWindow
- addSelection()
-
-
- 72
- 446
-
-
- 16
- 611
-
-
-
-
- cmdProjection
- clicked()
- MainWindow
- addProjection()
-
-
- 99
- 414
-
-
- 91
- 597
-
-
-
-
- cmdUnload
- clicked()
- MainWindow
- unloadRelation()
-
-
- 646
- 312
-
-
- 773
- 599
-
-
-
-
- cmdSave
- clicked()
- MainWindow
- saveRelation()
-
-
- 717
- 287
-
-
- 760
- 610
-
-
-
-
- cmdLoad
- clicked()
- MainWindow
- loadRelation()
-
-
- 753
- 255
-
-
- 753
- 594
-
-
-
-
- cmdOptimize
- clicked()
- MainWindow
- optimize()
-
-
- 245
- 554
-
-
- 684
- 611
-
-
-
-
- cmdUndoOptimize
- clicked()
- MainWindow
- undoOptimize()
-
-
- 336
- 560
-
-
- 652
- 604
-
-
-
-
- txtResult
- returnPressed()
- txtQuery
- setFocus()
-
-
- 87
- 590
-
-
- 182
- 590
-
-
-
-
- cmdDelete
- clicked()
- MainWindow
- deleteTuple()
-
-
- 549
- 442
-
-
- 563
- 594
-
-
-
-
- cmdInsert
- clicked()
- MainWindow
- insertTuple()
-
-
- 326
- 435
-
-
- 533
- 586
-
-
-
-
- cmdOuterRight
- clicked()
- MainWindow
- addORight()
-
-
- 90
- 359
-
-
- 58
- 611
-
-
-
-
- cmdOuter
- clicked()
- MainWindow
- addOuter()
-
-
- 34
- 390
-
-
- 86
- 611
-
-
-
-
- cmdOuterLeft
- clicked()
- MainWindow
- addOLeft()
-
-
- 32
- 332
-
-
- 66
- 611
-
-
-
-
- cmdJoin
- clicked()
- MainWindow
- addJoin()
-
-
- 101
- 302
-
-
- 147
- 611
-
-
-
-
- cmdDivision
- clicked()
- MainWindow
- addDivision()
-
-
- 71
- 272
-
-
- 185
- 611
-
-
-
-
- cmdIntersection
- clicked()
- MainWindow
- addIntersection()
-
-
- 99
- 244
-
-
- 228
- 611
-
-
-
-
- cmdUnion
- clicked()
- MainWindow
- addUnion()
-
-
- 20
- 222
-
-
- 279
- 611
-
-
-
-
- lstRelations
- itemDoubleClicked(QListWidgetItem*)
- MainWindow
- printRelation(QListWidgetItem*)
-
-
- 708
- 110
-
-
- 643
- 611
-
-
-
-
- lstRelations
- itemClicked(QListWidgetItem*)
- MainWindow
- showAttributes(QListWidgetItem*)
-
-
- 615
- 182
-
-
- 510
- 611
-
-
-
-
- cmdClearQuery
- clicked()
- txtQuery
- setFocus()
-
-
- 693
- 599
-
-
- 588
- 597
-
-
-
-
- lstHistory
- itemDoubleClicked(QListWidgetItem*)
- MainWindow
- resumeHistory(QListWidgetItem*)
-
-
- 349
- 492
-
-
- 399
- 305
-
-
-
-
- actionAbout
- triggered()
- MainWindow
- showAbout()
-
-
- -1
- -1
-
-
- 399
- 305
-
-
-
-
- action_Load_relation
- triggered()
- MainWindow
- loadRelation()
-
-
- -1
- -1
-
-
- 399
- 305
-
-
-
-
- action_Save_relation
- triggered()
- MainWindow
- saveRelation()
-
-
- -1
- -1
-
-
- 399
- 305
-
-
-
-
- action_Quit
- triggered()
- MainWindow
- close()
-
-
- -1
- -1
-
-
- 399
- 305
-
-
-
-
-
- execute()
- showAbout()
- showSurvey()
- addProduct()
- addDifference()
- addUnion()
- addIntersection()
- addDivision()
- addOLeft()
- addORight()
- addOuter()
- addJoin()
- addProjection()
- addSelection()
- addRename()
- addArrow()
- optimize()
- undoOptimize()
- loadRelation()
- unloadRelation()
- saveRelation()
- insertTuple()
- deleteTuple()
- printRelation(QListWidgetItem*)
- showAttributes(QListWidgetItem*)
- loadQuery()
- resumeHistory(QListWidgetItem*)
-
-
diff --git a/relational_pyside/maingui.ui b/relational_pyside/maingui.ui
new file mode 120000
index 0000000..d67ceb0
--- /dev/null
+++ b/relational_pyside/maingui.ui
@@ -0,0 +1 @@
+../relational_gui/maingui.ui
\ No newline at end of file
diff --git a/relational_pyside/survey.py b/relational_pyside/survey.py
index fa3b5c4..316c9cc 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: Sat Oct 8 19:27:40 2011
+# Created: Sat Oct 8 20:14:44 2011
# by: pyside-uic 0.2.13 running on PySide 1.0.7
#
# WARNING! All changes made in this file will be lost!