def on_pb_generate_results_released(self):
        run_name = self.current_run
        indicator_name = self.current_indicator
        indicator_dataset = self.current_indicator_dataset
        start_year = int(self.current_year)
        end_year = start_year

        if run_name is None or indicator_name is None or start_year is None:
            return

        key = (run_name, indicator_name, start_year)

        if key in self.already_browsed:
            if not self.generating_results:
                (tab_widget,map_widget) = self.already_browsed[key]
#                self.swap_visualizations(map_widget, tab_widget)
                self.pb_generate_results.setText('Results Generated')
            else:
                self.queued_results = ('swap', (map_widget, tab_widget))
            return

        self.pb_generate_results.setEnabled(False)
        self.pb_generate_results.setText('Generating Results...')

        indicator_nodes = get_available_indicator_nodes(self.project)

        dataset = None
        for indicator_node in indicator_nodes:
            ind_dataset, name = get_variable_dataset_and_name(indicator_node)
            if name == indicator_name and ind_dataset == indicator_dataset:
                dataset = ind_dataset
                break

        if dataset is None:
            raise Exception('Could not find dataset for indicator %s' % indicator_name)

        table_params = {
            'name': None,
            'output_type' : 'tab',
            'indicators' : [indicator_name],
        }

        map_params = {'name':None,
                      'indicators':[indicator_name]}

        visualizations = [
            ('table_per_year', dataset, table_params),
            ('mapnik_map', dataset, map_params)
        ]

        batch_processor = BatchProcessor(self.project)
        batch_processor.guiElement = self

        batch_processor.set_data(
            visualizations = visualizations,
            source_data_name = run_name,
            years = range(start_year, end_year + 1))

        if not self.generating_results:
            self.generating_results = True
            logger.log_note('Generating results for %s on run %s for year %indicator_node'%(run_name, indicator_name, start_year))
            self.running_key = key
            self.batch_processor = batch_processor
            batch_processor_thread = OpusGuiThread(
                                  parentThread = get_mainwindow_instance(),
                                  parentGuiElement = self,
                                  thread_object = self.batch_processor)

            # Use this signal from the thread if it is capable of producing its own status signal
            self.connect(batch_processor_thread, SIGNAL("runFinished(PyQt_PyObject)"), self._run_finished)
            self.connect(batch_processor_thread, SIGNAL("runError(PyQt_PyObject)"), self._run_error)

            batch_processor_thread.start()
        else:
            self.queued_results = (key, batch_processor)
Beispiel #2
0
    def on_pb_generate_results_clicked(self):
        run_name = self.current_run
        indicator_name = self.current_indicator
        indicator_dataset = self.current_indicator_dataset
        start_year = int(self.current_year)
        end_year = start_year

        if run_name is None or indicator_name is None or start_year is None:
            return

        key = (run_name, indicator_name, start_year)

        if key in self.already_browsed:
            if not self.generating_results:
                (tab_widget, map_widget) = self.already_browsed[key]
                #                self.swap_visualizations(map_widget, tab_widget)
                self.pb_generate_results.setText('Results Generated')
            else:
                self.queued_results = ('swap', (map_widget, tab_widget))
            return

        self.pb_generate_results.setEnabled(False)
        self.pb_generate_results.setText('Generating Results...')

        indicator_nodes = get_available_indicator_nodes(self.project)

        dataset = None
        for indicator_node in indicator_nodes:
            ind_dataset, name = get_variable_dataset_and_name(indicator_node)
            if name == indicator_name and ind_dataset == indicator_dataset:
                dataset = ind_dataset
                break

        if dataset is None:
            raise Exception('Could not find dataset for indicator %s' %
                            indicator_name)

        table_params = {
            'name': None,
            'output_type': 'tab',
            'indicators': [indicator_name],
        }

        map_params = {'name': None, 'indicators': [indicator_name]}

        visualizations = [('table_per_year', dataset, table_params),
                          ('mapnik_map', dataset, map_params)]

        batch_processor = BatchProcessor(self.project)
        batch_processor.guiElement = self

        batch_processor.set_data(visualizations=visualizations,
                                 source_data_name=run_name,
                                 years=range(start_year, end_year + 1))

        if not self.generating_results:
            self.generating_results = True
            logger.log_note(
                'Generating results for %s on run %s for year %indicator_node'
                % (run_name, indicator_name, start_year))
            self.running_key = key
            self.batch_processor = batch_processor
            batch_processor_thread = OpusGuiThread(
                parentThread=get_mainwindow_instance(),
                parentGuiElement=self,
                thread_object=self.batch_processor)

            # Use this signal from the thread if it is capable of producing its own status signal
            self.connect(batch_processor_thread,
                         SIGNAL("runFinished(PyQt_PyObject)"),
                         self._run_finished)
            self.connect(batch_processor_thread,
                         SIGNAL("runError(PyQt_PyObject)"), self._run_error)

            batch_processor_thread.start()
        else:
            self.queued_results = (key, batch_processor)