This method is called by Qtmacs to prepare the macro for
        execution.

        It is probably a bad idea to overload this method as it only
        administrates the macro execution and calls the ``qteRun``
        method (which *should* be overloaded by the macro programmer
        in order for the macro to do something).

        |Args|

        * **None**

        |Returns|

        * **None**

        |Raises|

        * **None**

def qtePrepareToRun(self):
        """
        This method is called by Qtmacs to prepare the macro for
        execution.

        It is probably a bad idea to overload this method as it only
        administrates the macro execution and calls the ``qteRun``
        method (which *should* be overloaded by the macro programmer
        in order for the macro to do something).

        |Args|

        * **None**

        |Returns|

        * **None**

        |Raises|

        * **None**
        """

        # Report the execution attempt.
        msgObj = QtmacsMessage((self.qteMacroName(), self.qteWidget), None)
        msgObj.setSignalName('qtesigMacroStart')
        self.qteMain.qtesigMacroStart.emit(msgObj)

        # Try to run the macro and radio the success via the
        # ``qtesigMacroFinished`` signal.
        try:
            self.qteRun()
            self.qteMain.qtesigMacroFinished.emit(msgObj)
        except Exception as err:
            if self.qteApplet is None:
                appID = appSig = None
            else:
                appID = self.qteApplet.qteAppletID()
                appSig = self.qteApplet.qteAppletSignature()
            msg = ('Macro <b>{}</b> (called from the <b>{}</b> applet'
                   ' with ID <b>{}</b>) did not execute properly.')
            msg = msg.format(self.qteMacroName(), appSig, appID)

            if isinstance(err, QtmacsArgumentError):
                msg += '<br/>' + str(err)

            # Irrespective of the error, log it, enable macro
            # processing (in case it got disabled), and trigger the
            # error signal.
            self.qteMain.qteEnableMacroProcessing()
            self.qteMain.qtesigMacroError.emit(msgObj)
            self.qteLogger.exception(msg, exc_info=True, stack_info=True)