예제 #1
0
    def dataUpdated(self):
        # retrieve the source code
        self.sourceCode = self._view.functionTextView.get_buffer().get_text(self._view.functionTextView.get_buffer().get_start_iter(), self._view.functionTextView.get_buffer().get_end_iter(), True)

        if self._view.sourceCodeIsTheSameForReverseCheckButton.get_active():
            self.reverseSourceCode = self.sourceCode
        else:
            self.reverseSourceCode = self._view.functionReverseTextView.get_buffer().get_text(self._view.functionReverseTextView.get_buffer().get_start_iter(), self._view.functionReverseTextView.get_buffer().get_end_iter(), True)

        # retrieve the name of the function
        self.functionName = self._view.nameOfFunctionEntry.get_text()

        if self.functionName is not None and len(self.functionName) > 0 and self.sourceCode is not None and len(self.sourceCode) > 0 and self.reverseSourceCode is not None and len(self.reverseSourceCode) > 0:
            self.function = CustomFunction(self.functionName, self.sourceCode, self.reverseSourceCode)
            errorMessage = self.function.compileSourceCode()

            if errorMessage is None:
                self._view.applyButton.set_sensitive(True)
                self.updateMessages()
                self._view.imageValid.show()
                self._view.imageError.hide()
                self._view.scrolledwindow3.show_all()
                self._view.labelMessage.set_label(_("Verify below the transformed messages"))
                self._view.labelMessage.show()
            else:
                self.function = None
                self._view.applyButton.set_sensitive(False)
                self.updateMessages()
                self._view.imageValid.hide()
                self._view.imageError.show()
                self._view.scrolledwindow3.show_all()
                self._view.labelMessage.set_label("{0}".format(errorMessage))
                self._view.labelMessage.show()
                return

            errorMessage = self.function.compileReverseSourceCode()

            if errorMessage is None:
                self._view.applyButton.set_sensitive(True)
                self._view.imageValid.show()
                self._view.imageError.hide()
                self._view.scrolledwindow3.show_all()
            else:
                self.function = None
                self._view.applyButton.set_sensitive(False)
                self.updateMessages()
                self._view.imageValid.hide()
                self._view.imageError.show()
                self._view.scrolledwindow3.show_all()
                self._view.labelMessage.set_label("Error with the reverse source code {0}".format(errorMessage))
                self._view.labelMessage.show()

        else:
            self._view.applyButton.set_sensitive(False)
            self._view.imageValid.hide()
            self._view.imageError.show()
            self._view.scrolledwindow3.show_all()
            self._view.labelMessage.set_label(_("Specify the name and the source code of your Function"))
            self._view.labelMessage.show()