def refreshContexts(self):
        def contexts_success(contexts_list):
            telepat = QtCore.QCoreApplication.instance().telepat_instance
            telepat.on_update_context = self.on_update_context
            telepat.on_add_context = self.on_add_context
            application = self.applications[self.appsCombobox.currentIndex()]

            self.contexts_model.setHorizontalHeaderLabels(["Contexts"])
            self.actionRefresh.setEnabled(True)
            for ctx in contexts_list:
                item = ContextItem(ctx)
                item.setEditable(False)
                for key in application.schema:
                    subitem = ModelItem(key, Model(application.schema[key].to_json()))
                    subitem.setEditable(False)
                    item.appendRow(subitem)
                self.contexts_model.appendRow(item)

        def contexts_failed(err_code, msg):
            self.actionRefresh.setEnabled(True)
            QtWidgets.QMessageBox.critical(self, "Contexts retrieving error", "Error {0}: {1}".format(err_code, msg))

        self.actionRefresh.setEnabled(False)
        self.contexts_model.clear()
        self.contexts_worker = ContextsWorker(self)
        self.contexts_worker.success.connect(contexts_success)
        self.contexts_worker.failed.connect(contexts_failed)
        self.contexts_worker.log.connect(console.log)
        self.contexts_worker.start()