def __init__(self, model, parent=None):
     MetaRegressionWizard.__init__(self, model=model, parent=parent)
     
     self.analysis_label="Model Building"
     self.setWindowTitle(self.analysis_label)
     
     # Add models page
     self.add_models_page = AddModelsPage()
     self.setPage(Page_AddModels, self.add_models_page)
     
     # Instructions page
     self.instructions_page = InstructionsPage()
     self.setPage(Page_Instructions, self.instructions_page)
     
     # Reconfigure meta regression details page a  bit
     self.meta_reg_details_page.parametric_radioButton.setChecked(True)
     self.meta_reg_details_page.analysis_type_groupBox.setEnabled(False)
     self.meta_reg_details_page.conditional_means_checkBox.setChecked(False)
     self.meta_reg_details_page.output_type_groupBox.setEnabled(False)
     self.meta_reg_details_page.disable_omnibus()
class ModelBuildingWizard(MetaRegressionWizard):
    def __init__(self, model, parent=None):
        MetaRegressionWizard.__init__(self, model=model, parent=parent)
        
        self.analysis_label="Model Building"
        self.setWindowTitle(self.analysis_label)
        
        # Add models page
        self.add_models_page = AddModelsPage()
        self.setPage(Page_AddModels, self.add_models_page)
        
        # Instructions page
        self.instructions_page = InstructionsPage()
        self.setPage(Page_Instructions, self.instructions_page)
        
        # Reconfigure meta regression details page a  bit
        self.meta_reg_details_page.parametric_radioButton.setChecked(True)
        self.meta_reg_details_page.analysis_type_groupBox.setEnabled(False)
        self.meta_reg_details_page.conditional_means_checkBox.setChecked(False)
        self.meta_reg_details_page.output_type_groupBox.setEnabled(False)
        self.meta_reg_details_page.disable_omnibus()
        
    def nextId(self):
        current_id = self.currentId()
        
        return self.nextId_helper(current_id)
        
    def nextId_helper(self, page_id):
        if page_id == Page_ChooseEffectSize:
            return Page_DataLocation
        elif page_id == Page_DataLocation:
            return Page_RefineStudies
        elif page_id == Page_RefineStudies:
            return Page_MetaRegDetails
        elif page_id == Page_MetaRegDetails:
            return Page_Instructions
        elif page_id == Page_Instructions:
            return Page_SelectCovariates
        elif page_id == Page_SelectCovariates:
            if self._categorical_covariates_selected():
                return Page_ReferenceValues
            else:
                return Page_AddModels
        elif page_id == Page_ReferenceValues:
            return Page_AddModels
        elif page_id == Page_AddModels:
            return Page_Summary
        elif page_id == Page_Summary:
            return -1
    
    def get_models_info(self):
        return self.add_models_page.get_models_info()
        
# Old ideas. They might be useful in the future. 
# Pages:
# 1) Specify saturated model covariates and add interaction terms
# 2) Specify models by on a dialog. The models will show up in a list on the
#    left. There will be a button "new model" which will pop-up a dialog which
#    prompts the user for a name and which covariates and interaction terms
#    will be used. The combination of covariates and interaction terms must be
#    unique for each model. Also, each subsequent model must be a subset of the
#    previous model
# 3) The rest will be like the meta-regression wizard but:
#    a) The list of available studies to include will be filtered by those that
#       have data for all the covariates specified.
#    b) The "Select covariates for regression" page will not be present. (The
#       params previously specified there (conf. level and fixed vs. random
#       effects will be found on page #2 (the specify models dialog)
#
# 4) The rest will be like the normal meta-regression wizard
#
# Results:
#   Option A: Show results in a table (see jessica email) with each successive
#     model i.e. the reverse of the order that they were entered.
#
#
#   Option B: For all possible combinations: (NO LONGER GOING TO IMPLEMENT, for now ....)
# A lower-triangular table labeled with model names on each axis. The main
# diagonal will be blank. Clicking a square will show the results output on the
# right hand side of the dialog. (exportable like the results_window)