Browse Source

GUI INITIAL

Akash Singh 3 years ago
parent
commit
aba3e83282
2 changed files with 440 additions and 0 deletions
  1. 342 0
      ui.py
  2. 98 0
      uimain.py

+ 342 - 0
ui.py

@@ -0,0 +1,342 @@
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_MainWindow(QtCore.QObject):
+    def setupUi(self, MainWindow):
+        MainWindow.setObjectName("MainWindow")
+        MainWindow.resize(480, 480)
+        font = QtGui.QFont()
+        font.setFamily("Arial")
+        font.setPointSize(11)
+        font.setBold(False)
+        font.setItalic(False)
+        font.setWeight(9)
+        MainWindow.setFont(font)
+        MainWindow.setStyleSheet("background-color: rgb(229, 222, 206); font: 75 11pt \"Arial\";")
+        self.centralwidget = QtWidgets.QWidget(MainWindow)
+        self.centralwidget.setMinimumSize(QtCore.QSize(700, 0))
+        self.centralwidget.setAutoFillBackground(False)
+        self.centralwidget.setStyleSheet("")
+        self.centralwidget.setObjectName("centralwidget")
+
+        self.mainGroupBox = QtWidgets.QGroupBox(self.centralwidget)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.mainGroupBox.sizePolicy().hasHeightForWidth())
+        self.mainGroupBox.setSizePolicy(sizePolicy)
+        self.mainGroupBox.setMinimumSize(QtCore.QSize(450, 0))
+        self.mainGroupBox.setTitle("")
+        self.mainGroupBox.setAlignment(QtCore.Qt.AlignCenter)
+        self.mainGroupBox.setFlat(False)
+        self.mainGroupBox.setObjectName("mainGroupBox")
+        self.mainGroupBox.setAlignment(QtCore.Qt.AlignVCenter)
+
+        self.gridLayout = QtWidgets.QGridLayout(self.mainGroupBox)
+        self.gridLayout.setSizeConstraint(QtWidgets.QLayout.SetMinAndMaxSize)
+        self.gridLayout.setContentsMargins(75, 20, 5, 5)
+        self.gridLayout.setHorizontalSpacing(5)
+        self.gridLayout.setVerticalSpacing(10)
+        self.gridLayout.setObjectName("gridLayout")
+        self.gridLayout.setAlignment(QtCore.Qt.AlignCenter)
+        self.verticalLayout = QtWidgets.QVBoxLayout()
+        self.verticalLayout.setSpacing(20)
+        self.verticalLayout.setObjectName("verticalLayout")
+
+        # Source File Path
+        self.horizontalLayout_1 = QtWidgets.QHBoxLayout()
+        self.horizontalLayout_1.setSpacing(10)
+        self.horizontalLayout_1.setObjectName("horizontalLayout_1")
+        self.sourcePathLabel = QtWidgets.QLabel(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Preferred)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.sourcePathLabel.sizePolicy().hasHeightForWidth())
+        self.sourcePathLabel.setSizePolicy(sizePolicy)
+        self.sourcePathLabel.setMinimumSize(QtCore.QSize(100, 0))
+        self.sourcePathLabel.setMaximumSize(QtCore.QSize(100, 16777215))
+        font = QtGui.QFont()
+        font.setFamily("Arial")
+        font.setPointSize(11)
+        font.setBold(False)
+        font.setItalic(False)
+        font.setWeight(9)
+        font.setKerning(False)
+        self.sourcePathLabel.setFont(font)
+        self.sourcePathLabel.setStyleSheet("color: rgb(32, 74, 135);")
+        self.sourcePathLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+        self.sourcePathLabel.setObjectName("sourcePathLabel")
+        self.horizontalLayout_1.addWidget(self.sourcePathLabel)
+        self.sourcePathLineEdit = QtWidgets.QLineEdit(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.sourcePathLineEdit.sizePolicy().hasHeightForWidth())
+        self.sourcePathLineEdit.setSizePolicy(sizePolicy)
+        self.sourcePathLineEdit.setMinimumSize(QtCore.QSize(250, 0))
+        self.sourcePathLineEdit.setMaximumSize(QtCore.QSize(500, 16777215))
+        self.sourcePathLineEdit.setStyleSheet("background-color: rgb(255, 255, 255);")
+        self.sourcePathLineEdit.setObjectName("sourcePathLineEdit")
+        self.horizontalLayout_1.addWidget(self.sourcePathLineEdit)
+        self.sourceBrowsePushButton = QtWidgets.QPushButton(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.sourceBrowsePushButton.sizePolicy().hasHeightForWidth())
+        self.sourceBrowsePushButton.setSizePolicy(sizePolicy)
+        self.sourceBrowsePushButton.setMinimumSize(QtCore.QSize(90, 0))
+        self.sourceBrowsePushButton.setStyleSheet("color: rgb(255, 255, 255); background-color: rgb(114, 159, 207);")
+        self.sourceBrowsePushButton.setObjectName("sourceBrowsePushButton")
+        self.horizontalLayout_1.addWidget(self.sourceBrowsePushButton)
+        self.verticalLayout.addLayout(self.horizontalLayout_1)
+
+        # Source Sheet
+        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
+        self.horizontalLayout_2.setSpacing(10)
+        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+        self.sourceSheetLabel = QtWidgets.QLabel(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Preferred)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.sourceSheetLabel.sizePolicy().hasHeightForWidth())
+        self.sourceSheetLabel.setSizePolicy(sizePolicy)
+        self.sourceSheetLabel.setMinimumSize(QtCore.QSize(100, 0))
+        self.sourceSheetLabel.setMaximumSize(QtCore.QSize(100, 16777215))
+        font = QtGui.QFont()
+        font.setFamily("Arial")
+        font.setPointSize(11)
+        font.setBold(False)
+        font.setItalic(False)
+        font.setWeight(9)
+        font.setKerning(False)
+        self.sourceSheetLabel.setFont(font)
+        self.sourceSheetLabel.setStyleSheet("color: rgb(32, 74, 135);")
+        self.sourceSheetLabel.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
+        self.sourceSheetLabel.setObjectName("sourcePathLabel")
+        self.horizontalLayout_2.addWidget(self.sourceSheetLabel)
+        self.sourceSheetComboBox = QtWidgets.QComboBox(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.sourceSheetComboBox.sizePolicy().hasHeightForWidth())
+        self.sourceSheetComboBox.setSizePolicy(sizePolicy)
+        self.sourceSheetComboBox.setMinimumSize(QtCore.QSize(250, 0))
+        self.sourceSheetComboBox.setMaximumSize(QtCore.QSize(500, 16777215))
+        self.sourceSheetComboBox.setStyleSheet("background-color: rgb(255, 255, 255); color: rgb(46, 52, 54);")
+        self.sourceSheetComboBox.setMaxVisibleItems(20)
+        self.sourceSheetComboBox.setModelColumn(0)
+        self.sourceSheetComboBox.setObjectName("sourceSheetComboBox")
+        self.horizontalLayout_2.addWidget(self.sourceSheetComboBox)
+        self.verticalLayout.addLayout(self.horizontalLayout_2)
+
+        # Destination File Path
+        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
+        self.horizontalLayout_3.setSpacing(10)
+        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
+        self.destinationPathLabel = QtWidgets.QLabel(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Preferred)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.destinationPathLabel.sizePolicy().hasHeightForWidth())
+        self.destinationPathLabel.setSizePolicy(sizePolicy)
+        self.destinationPathLabel.setMinimumSize(QtCore.QSize(100, 0))
+        self.destinationPathLabel.setMaximumSize(QtCore.QSize(100, 16777215))
+        font = QtGui.QFont()
+        font.setFamily("Arial")
+        font.setPointSize(11)
+        font.setBold(False)
+        font.setItalic(False)
+        font.setWeight(9)
+        font.setKerning(False)
+        self.destinationPathLabel.setFont(font)
+        self.destinationPathLabel.setStyleSheet("color: rgb(32, 74, 135);")
+        self.destinationPathLabel.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
+        self.destinationPathLabel.setObjectName("destinationPathLabel")
+        self.horizontalLayout_3.addWidget(self.destinationPathLabel)
+        self.destinationPathLineEdit = QtWidgets.QLineEdit(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.destinationPathLineEdit.sizePolicy().hasHeightForWidth())
+        self.destinationPathLineEdit.setSizePolicy(sizePolicy)
+        self.destinationPathLineEdit.setMinimumSize(QtCore.QSize(250, 0))
+        self.destinationPathLineEdit.setMaximumSize(QtCore.QSize(500, 16777215))
+        self.destinationPathLineEdit.setStyleSheet("background-color: rgb(255, 255, 255);")
+        self.destinationPathLineEdit.setObjectName("destinationPathLineEdit")
+        self.horizontalLayout_3.addWidget(self.destinationPathLineEdit)
+        self.destinationBrowsePushButton = QtWidgets.QPushButton(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.destinationBrowsePushButton.sizePolicy().hasHeightForWidth())
+        self.destinationBrowsePushButton.setSizePolicy(sizePolicy)
+        self.destinationBrowsePushButton.setMinimumSize(QtCore.QSize(90, 0))
+        self.destinationBrowsePushButton.setStyleSheet("color: rgb(255, 255, 255); background-color: rgb(114, 159, 207);")
+        self.destinationBrowsePushButton.setObjectName("destinationBrowsePushButton")
+        self.horizontalLayout_3.addWidget(self.destinationBrowsePushButton)
+        self.verticalLayout.addLayout(self.horizontalLayout_3)
+
+        # Destination Sheet
+        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
+        self.horizontalLayout_4.setSpacing(10)
+        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
+        self.destinationSheetLabel = QtWidgets.QLabel(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Preferred)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.destinationSheetLabel.sizePolicy().hasHeightForWidth())
+        self.destinationSheetLabel.setSizePolicy(sizePolicy)
+        self.destinationSheetLabel.setMinimumSize(QtCore.QSize(100, 0))
+        self.destinationSheetLabel.setMaximumSize(QtCore.QSize(100, 16777215))
+        font = QtGui.QFont()
+        font.setFamily("Arial")
+        font.setPointSize(11)
+        font.setBold(False)
+        font.setItalic(False)
+        font.setWeight(9)
+        font.setKerning(False)
+        self.destinationSheetLabel.setFont(font)
+        self.destinationSheetLabel.setStyleSheet("color: rgb(32, 74, 135);")
+        self.destinationSheetLabel.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
+        self.destinationSheetLabel.setObjectName("destinationPathLabel")
+        self.horizontalLayout_4.addWidget(self.destinationSheetLabel)
+        self.destinationSheetComboBox = QtWidgets.QComboBox(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.destinationSheetComboBox.sizePolicy().hasHeightForWidth())
+        self.destinationSheetComboBox.setSizePolicy(sizePolicy)
+        self.destinationSheetComboBox.setMinimumSize(QtCore.QSize(250, 0))
+        self.destinationSheetComboBox.setMaximumSize(QtCore.QSize(500, 16777215))
+        self.destinationSheetComboBox.setStyleSheet("background-color: rgb(255, 255, 255); color: rgb(46, 52, 54);")
+        self.destinationSheetComboBox.setMaxVisibleItems(20)
+        self.destinationSheetComboBox.setModelColumn(0)
+        self.destinationSheetComboBox.setObjectName("destinationSheetComboBox")
+        self.horizontalLayout_4.addWidget(self.destinationSheetComboBox)
+        self.verticalLayout.addLayout(self.horizontalLayout_4)
+
+
+        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
+        self.horizontalLayout_5.setSpacing(10)
+        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
+        self.linesLabel = QtWidgets.QLabel(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.linesLabel.sizePolicy().hasHeightForWidth())
+        self.linesLabel.setSizePolicy(sizePolicy)
+        self.linesLabel.setMinimumSize(QtCore.QSize(100, 0))
+        self.linesLabel.setMaximumSize(QtCore.QSize(100, 16777215))
+        font = QtGui.QFont()
+        font.setFamily("Arial")
+        font.setPointSize(11)
+        font.setBold(False)
+        font.setItalic(False)
+        font.setWeight(9)
+        font.setKerning(False)
+        self.linesLabel.setFont(font)
+        self.linesLabel.setStyleSheet("color: rgb(32, 74, 135);")
+        self.linesLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+        self.linesLabel.setObjectName("linesLabel")
+        self.horizontalLayout_5.addWidget(self.linesLabel)
+        self.linesInput = QtWidgets.QLineEdit("", self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.linesInput.sizePolicy().hasHeightForWidth())
+        self.linesInput.setSizePolicy(sizePolicy)
+        self.linesInput.setValidator(QtGui.QIntValidator())
+        self.linesInput.setStyleSheet("background-color: rgb(255, 255, 255);")
+        self.linesInput.setMinimumSize(250, 0)
+        self.linesInput.setMaximumSize(500, 16777215)
+        self.horizontalLayout_5.addWidget(self.linesInput)
+        self.addMissingCheckBox = QtWidgets.QCheckBox()
+        font = QtGui.QFont()
+        font.setFamily("Arial")
+        font.setPointSize(11)
+        font.setBold(False)
+        font.setItalic(False)
+        font.setWeight(9)
+        font.setKerning(False)
+        self.addMissingCheckBox.setFont(font)
+        self.addMissingCheckBox.setStyleSheet("color: rgb(32, 74, 135);")
+        self.horizontalLayout_5.addWidget(self.addMissingCheckBox)
+        self.verticalLayout.addLayout(self.horizontalLayout_5)
+
+        self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
+        self.horizontalLayout_6.setSpacing(10)
+        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
+        self.filterButton = QtWidgets.QPushButton(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.filterButton.sizePolicy().hasHeightForWidth())
+        self.filterButton.setSizePolicy(sizePolicy)
+        self.filterButton.setMinimumSize(QtCore.QSize(90, 0))
+        self.filterButton.setStyleSheet("color: rgb(255, 255, 255); background-color: rgb(114, 159, 207);")
+        self.filterButton.setObjectName("openLogFilePushButton_4")
+        self.horizontalLayout_6.addWidget(self.filterButton)
+        self.runButton = QtWidgets.QPushButton(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.runButton.sizePolicy().hasHeightForWidth())
+        self.runButton.setSizePolicy(sizePolicy)
+        self.runButton.setMinimumSize(QtCore.QSize(90, 0))
+        self.runButton.setStyleSheet("color: rgb(255, 255, 255); background-color: rgb(114, 159, 207);")
+        self.runButton.setObjectName("openLogFilePushButton_4")
+        self.horizontalLayout_6.addWidget(self.runButton)
+        self.openResultFilePushButton = QtWidgets.QPushButton(self.mainGroupBox)
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.openResultFilePushButton.sizePolicy().hasHeightForWidth())
+        self.openResultFilePushButton.setSizePolicy(sizePolicy)
+        self.openResultFilePushButton.setMinimumSize(QtCore.QSize(90, 0))
+        self.openResultFilePushButton.setStyleSheet("color: rgb(255, 255, 255);background-color: rgb(114, 159, 207);")
+        self.openResultFilePushButton.setObjectName("openResultFilePushButton_4")
+        self.horizontalLayout_6.addWidget(self.openResultFilePushButton)
+        self.verticalLayout.addLayout(self.horizontalLayout_6)
+
+        self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1, QtCore.Qt.AlignCenter)
+
+        MainWindow.setCentralWidget(self.centralwidget)
+        self.statusbar = QtWidgets.QStatusBar(MainWindow)
+        self.statusbar.setObjectName("statusbar")
+        MainWindow.setStatusBar(self.statusbar)
+
+        self.retranslateUi(MainWindow)
+        QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+    def close(self,event):
+        self.child.terminate()
+        self.child.waitForFinished()
+        event.accept()
+
+    def retranslateUi(self, MainWindow):
+        _translate = QtCore.QCoreApplication.translate
+        MainWindow.setWindowTitle(_translate("MainWindow", "icopy2xls"))
+        self.sourcePathLabel.setText(_translate("MainWindow", "Source File"))
+        self.sourceBrowsePushButton.setText(_translate("MainWindow", "Browse"))
+        self.sourceSheetLabel.setText(_translate("MainWindow", "Source Sheet"))
+        self.destinationPathLabel.setText(_translate("MainWindow", "Dest. File"))
+        self.destinationBrowsePushButton.setText(_translate("MainWindow", "Browse"))
+        self.destinationSheetLabel.setText(_translate("MainWindow", "Dest. Sheet"))
+
+        self.linesLabel.setText(_translate("MainWindow", "Lines"))
+        self.addMissingCheckBox.setText(_translate("MainWindow", "Add Missing"))
+
+        self.openResultFilePushButton.setText(_translate("MainWindow", "Result File"))
+        self.runButton.setText(_translate("MainWindow", "Run"))
+        self.filterButton.setText(_translate("MainWindow", "Filters"))
+
+
+if __name__ == "__main__":
+    import sys
+    app = QtWidgets.QApplication(sys.argv)
+    MainWindow = QtWidgets.QMainWindow()
+    ui = Ui_MainWindow()
+    ui.setupUi(MainWindow)
+    MainWindow.show()
+    sys.exit(app.exec_())
+

+ 98 - 0
uimain.py

@@ -0,0 +1,98 @@
+from ui import  Ui_MainWindow
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class MainWindow(Ui_MainWindow):
+    """ BaangtUI : Logic implementation file for uidesign
+    """
+
+    switch_window = QtCore.pyqtSignal(str)
+
+    def __init__(self):
+        ''' Init the super class '''
+        super().__init__()
+
+    def setupUi(self, MainWindow, directory=None):
+        ''' Setup the UI for super class and Implement the
+        logic here we want to do with User Interface
+        '''
+        super().setupUi(MainWindow)
+        self.filterButton.clicked.connect(self.filterDialog)
+        self.row_list = []
+        self.filters = {}
+
+    def filterDialog(self):
+        self.filter_dialog = QtWidgets.QDialog(self.centralwidget)
+        #sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
+        #sizePolicy.setHorizontalStretch(0)
+        #sizePolicy.setVerticalStretch(0)
+        #sizePolicy.setHeightForWidth(self.filter_dialog.sizePolicy().hasHeightForWidth())
+        #self.filter_dialog.setSizePolicy(sizePolicy)
+        self.filter_dialog.setWindowTitle("Filters")
+        self.filter_dialog.setWindowTitle("Cleanup")
+        self.vlay = QtWidgets.QVBoxLayout()
+        hori = QtWidgets.QHBoxLayout()
+        hori.setSpacing(10)
+        add_button = QtWidgets.QPushButton("Add", self.filter_dialog)
+        remove_button = QtWidgets.QPushButton("Remove", self.filter_dialog)
+        save_button = QtWidgets.QPushButton("Save", self.filter_dialog)
+        hori.addWidget(add_button)
+        hori.addWidget(remove_button)
+        hori.addWidget(save_button)
+        self.vlay.addLayout(hori)
+        self.filter_dialog.setLayout(self.vlay)
+        add_button.clicked.connect(self.add_row)
+        remove_button.clicked.connect(self.remove_row)
+        save_button.clicked.connect(self.save_filters)
+        self.filter_dialog.exec_()
+
+    def add_row(self):
+        hr = QtWidgets.QHBoxLayout()
+        hr.setSpacing(10)
+        cb = QtWidgets.QComboBox()
+        cb.setMinimumSize(QtCore.QSize(200, 0))
+        cb.setMaximumSize(QtCore.QSize(250, 16777215))
+        cb.setStyleSheet("background-color: rgb(255, 255, 255);")
+        line = QtWidgets.QLineEdit()
+        line.setMinimumSize(QtCore.QSize(300, 0))
+        line.setMaximumSize(QtCore.QSize(350, 16777215))
+        line.setStyleSheet("background-color: rgb(255, 255, 255);")
+        hr.addWidget(cb)
+        hr.addWidget(line)
+        self.vlay.addLayout(hr)
+        self.row_list.append([cb, line, hr])
+
+    def remove_row(self):
+        if self.row_list:
+            last = self.row_list.pop()
+            last[0].deleteLater()
+            last[1].deleteLater()
+            last[2].deleteLater()
+
+    def save_filters(self):
+        filters = {}
+        if self.row_list:
+            for row in self.row_list:
+                filters[row[0].currentText()] = row[1].text()
+        self.filters = filters
+
+
+class MainController:
+    def __init__(self):
+        self.widget = QtWidgets.QWidget()
+        self.window = QtWidgets.QMainWindow()
+        self.main = MainWindow()
+
+    def show_main(self):
+        self.main = MainWindow()
+        self.main.setupUi(self.window)
+        self.window.show()
+
+
+if __name__ == "__main__":
+    import sys
+    app = QtWidgets.QApplication(sys.argv)
+    controller = MainController()
+    controller.show_main()
+    sys.exit(app.exec_())
+