diff --git a/relational_gui/guihandler.py b/relational_gui/guihandler.py
index 77209ff..586e5d5 100644
--- a/relational_gui/guihandler.py
+++ b/relational_gui/guihandler.py
@@ -35,6 +35,7 @@ class relForm(QtWidgets.QMainWindow):
self.About = None
self.Survey = None
self.undo = None # UndoQueue for queries
+ self.undo_program = None
self.selectedRelation = None
self.ui = maingui.Ui_MainWindow()
self.user_interface = UserInterface()
@@ -149,6 +150,19 @@ class relForm(QtWidgets.QMainWindow):
if self.undo != None:
self.ui.txtQuery.setText(self.undo)
+ def undoOptimizeProgram(self):
+ if self.undo_program:
+ self.ui.txtMultiQuery.setPlainText(self.undo_program)
+
+ def optimizeProgram(self):
+ self.undo_program = self.ui.txtMultiQuery.toPlainText()
+ result = optimizer.optimize_program(
+ self.ui.txtMultiQuery.toPlainText(),
+ self.user_interface.relations
+ )
+ self.ui.txtMultiQuery.setPlainText(result)
+
+
def optimize(self):
'''Performs all the possible optimizations on the query'''
self.undo = self.ui.txtQuery.text() # Storing the query in undo list
diff --git a/relational_gui/maingui.ui b/relational_gui/maingui.ui
index 4588abc..6a2dcb8 100644
--- a/relational_gui/maingui.ui
+++ b/relational_gui/maingui.ui
@@ -8,7 +8,7 @@
0
0
637
- 495
+ 496
@@ -172,6 +172,20 @@
+ -
+
+
+ Optimize
+
+
+
+ -
+
+
+ Undo optimize
+
+
+
-
@@ -1174,6 +1188,18 @@
cmdEdit
cmdUnload
cmdNewSession
+ txtMultiQuery
+ cmdClearMultilineQuery
+ cmdExecuteMultiline
+ cmdOptimizeProgram
+ cmdUndoOptimizeProgram
+ cmdUndoOptimize
+ cmdClearHistory
+ txtQuery
+ cmdClearQuery
+ cmdExecute
+ lstHistory
+ cmdOptimize
@@ -1189,7 +1215,7 @@
79
- 597
+ 495
@@ -1205,7 +1231,7 @@
99
- 605
+ 495
@@ -1217,11 +1243,11 @@
516
- 490
+ 491
- 773
- 599
+ 636
+ 495
@@ -1233,11 +1259,11 @@
631
- 422
+ 423
- 760
- 610
+ 636
+ 495
@@ -1249,11 +1275,11 @@
516
- 422
+ 423
- 753
- 594
+ 636
+ 495
@@ -1268,8 +1294,8 @@
328
- 643
- 611
+ 636
+ 495
@@ -1285,7 +1311,7 @@
510
- 611
+ 495
@@ -1377,7 +1403,7 @@
631
- 456
+ 457
399
@@ -1409,7 +1435,7 @@
516
- 456
+ 457
399
@@ -1472,8 +1498,8 @@
clear()
- 251
- 256
+ 394
+ 262
221
@@ -1488,12 +1514,12 @@
execute()
- 251
- 256
+ 394
+ 296
- 795
- 650
+ 636
+ 495
@@ -1505,11 +1531,11 @@
310
- 491
+ 494
260
- 490
+ 493
@@ -1521,7 +1547,7 @@
394
- 453
+ 459
395
@@ -1537,11 +1563,11 @@
186
- 453
+ 459
130
- 623
+ 495
@@ -1553,11 +1579,11 @@
296
- 453
+ 459
544
- 624
+ 495
@@ -1569,11 +1595,11 @@
394
- 491
+ 494
- 797
- 627
+ 636
+ 495
@@ -1585,11 +1611,11 @@
260
- 490
+ 493
- 796
- 514
+ 636
+ 495
@@ -1605,7 +1631,7 @@
297
- 620
+ 495
@@ -1825,10 +1851,10 @@
631
- 490
+ 491
- 796
+ 636
396
@@ -1849,6 +1875,38 @@
+
+ cmdOptimizeProgram
+ clicked()
+ MainWindow
+ optimizeProgram()
+
+
+ 357
+ 313
+
+
+ 398
+ 360
+
+
+
+
+ cmdUndoOptimizeProgram
+ clicked()
+ MainWindow
+ undoOptimizeProgram()
+
+
+ 371
+ 353
+
+
+ 397
+ 44
+
+
+
execute()
@@ -1886,5 +1944,7 @@
manageSessions()
setMultiline(bool)
setHistoryShown(bool)
+ optimizeProgram()
+ undoOptimizeProgram()