def __init__(self, parent=None):
        self.parent = parent
        self.parent.statusbar.showMessage("AOI Aggregation in process...")
        QWidget.__init__(self,parent)
        
        self.ui = gui.aoiUi()
        self.ui.setupUi(self)
       
        self.batch_files = filedialog.askopenfilenames(parent=root, title='Choose the file(s) you want to AOI aggregate')
        
        if len(self.batch_files) < 1:
            msgBox = QMessageBox()
            msgBox.setGeometry(400, 400, 400, 200)
            msgBox.setText("Please select one or more datasets to aggregate")
            msgBox.move(QApplication.desktop().screen().rect().center()- self.rect().center())
            msgBox.exec_() 
            
            self.close()
            return        
        
        self.columns = []
        
        self.parent.statusbar.showMessage("Checking column validity...")

        #extract columns
        for item in self.batch_files:
            self.columns.append(helpers.extract_columns(item))
 
        #check to see if all columns are equal in all the datasets
        if not helpers.are_columns_same(self.columns):
            if not helpers.columns_not_equal_message(self):
                self.close()
                return
        
        message = ""
        if self.columns != []:
            if 'GazeAOI' not in self.columns[0]:
                message += "'GAZE AOI' "
            if 'FixationAOI' not in self.columns[0]:
                message += "'FIXATION AOI'"
            
        if message != "":
            message += ": Field(s) missing from dataset - try again with appropriate data."
            reply = QMessageBox.question(self, 'Message',message, QMessageBox.Ok, QMessageBox.Ok)
            if reply == QMessageBox.Ok:
                self.parent.statusbar.showMessage("Welcome back!")
                self.close()
                return

        self.parent.ui.logOutput.append("AOI AGGREGATED:")
        print("AOI AGGREGATED:")
        
        self.AOI_aggregate('GazeAOI')
        self.AOI_aggregate('FixationAOI')
       
        #after job has been completed!
        helpers.job_complete_message(self)     
        
        self.parent.statusbar.showMessage("Welcome back!")
        self.close()
    def __init__(self, parent=None):

        self.parent = parent
        self.parent.statusbar.showMessage("Keep Columns started...")
        QWidget.__init__(self,parent)
        
        self.ui = gui.keepColumnUi()
        self.ui.setupUi(self)
        
        self.columns = []
        
        self.batch_files = filedialog.askopenfilenames(parent=root, title='Choose the file(s) you want to modify')
        
        if len(self.batch_files) == 0:
            self.close()
            return
        
        self.parent.statusbar.showMessage("Checking column validity...")

        #extract columns
        for item in self.batch_files:
            self.columns.append(helpers.extract_columns(item))
 
        #check to see if all columns are equal in all the datasets
        if not helpers.are_columns_same(self.columns):
            if not helpers.columns_not_equal_message(self):
                self.close()
                return
                
        #list of items to check from        
        
        self.model = QStandardItemModel()
        
        try:
            for col in self.columns[0]:
                item = QStandardItem(col)
                item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) 
                item.setData(QVariant(Qt.Unchecked), Qt.CheckStateRole) 
                self.model.appendRow(item) 
        except IndexError:
            pass

        self.list = QListView(self)
        self.list.setModel(self.model) 
        self.list.setGeometry(10, 60, 380, 430)
       
        self.ui.removeBtn.clicked.connect(self.keep)
        self.ui.closeBtn.clicked.connect(self.close)
       
        self.parent.statusbar.showMessage("Welcome back!")
        self.show()
    def __init__(self, parent=None):
        self.parent = parent
        self.parent.statusbar.showMessage("Stack Datasets in process...")
        QWidget.__init__(self,parent)
        
        self.ui = gui.stackDatasetsUi()
        self.ui.setupUi(self)
        
        self.batch_files = filedialog.askopenfilenames(parent=root, title='Choose the file(s) you want to stack')
        
        if len(self.batch_files) < 2:
            msgBox = QMessageBox()
            msgBox.setGeometry(400, 400, 400, 200)
            msgBox.setText("Please select more than one dataset to make a stack")
            msgBox.move(QApplication.desktop().screen().rect().center()- self.rect().center())
            msgBox.exec_() 
            
            self.close()
            return
        
        self.columns = []
        
        self.parent.statusbar.showMessage("Checking column validity...")

        #extract columns
        for item in self.batch_files:
            self.columns.append(helpers.extract_columns(item))
 
        #check to see if all columns are equal in all the datasets
        if not helpers.are_columns_same(self.columns):
            if not helpers.columns_not_equal_message(self):
                self.close()
                return

        self.stack()
        
        self.parent.statusbar.showMessage("Welcome back!")
        self.close()