def resume_editing(self):
        """Resume editing the contents.

        If the temporary value is equal to the actual
        value store, we just get out of the widget
        (lose focus).

        Otherwise, we check whether the temporary value
        is valid. If not, we restore the original value.
        If it is, we perform tasks to store it.
        """
        ### retrieve the line contents
        line_contents = self.cursor.get()

        ### try evaluating the string and validating
        ### its type

        try:

            value = self.evaluate_string(line_contents)
            self.validate_type(value)

        ### if line contents are not valid, print the error,
        ### roll string back to current value and update
        ### self.image

        except Exception as err:

            # TODO we could display the error in the
            # statusbar or the user logger, instead of
            # printing;
            print("From intfloat widget:", err)

            self.cursor.set(str(self.value))
            self.update_image()

        ### if otherwise the evaluation and validation
        ### succeed, it means the contents are valid,
        ### so we set the value if it is not already set

        else:

            ## update the line contents
            self.cursor.set(str(value))

            ## if the value or type are different from the current
            ## one, set it

            if (
                value != self.value
                or (type(value) is not type(self.value))
            ):

                ## note that we only execute the custom command
                ## after updating the image, since depending on what
                ## the custom command does, we could have to leave
                ## this method earlier via an expected exception

                self.set(value, custom_command=False)
                self.update_image()
                self.command()

            ## otherwise, only update the image
            else:
                self.update_image()

        ### finally we lose focus
        self.lose_focus()
Resume editing the contents.

        If the temporary value is equal to the actual
        value store, we just get out of the widget
        (lose focus).

        Otherwise, we check whether the temporary value
        is valid. If not, we restore the original value.
        If it is, we perform tasks to store it.
        
nodezator/widget/intfloatentry/op.py