docs: def call_gui_callback(callback, *args, **kwargs):
      """Wrapper method for GLib.idle_add
  
      This method is intended as replacement for idle_add. It wraps the method with a callback option. The advantage is
      that this way, the call is blocking. The method return, when the callback method has been called and executed.
  
      :param callback: The callback method, e.g. on_open_activate
      :param args: The parameters to be passed to the callback method
      """
      from future.utils import raise_
      from threading import Condition
      import sys
      from rafcon.utils import log
      global exception_info, result
      from gi.repository import GLib
      condition = Condition()
      exception_info = None
  
      @log.log_exceptions()
      def fun():
          """Call callback and notify condition variable
          """
          global exception_info, result
          result = None
          try:
              result = callback(*args)
          except:
              # Exception within this asynchronously called function won't reach pytest. This is why we have to store
              # the information about the exception to re-raise it at the end of the synchronous call.
              exception_info = sys.exc_info()
          finally:  # Finally is also executed in the case of exceptions
              condition.acquire()
              condition.notify()
              condition.release()
  
      if "priority" in kwargs:
          priority = kwargs["priority"]
      else:
          priority = GLib.PRIORITY_LOW
  
      condition.acquire()
      GLib.idle_add(fun, priority=priority)
      # Wait for the condition to be notified
      # TODO: implement timeout that raises an exception
      condition.wait()
      condition.release()
      if exception_info:
          e_type, e_value, e_traceback = exception_info
          raise_(e_type, e_value, e_traceback)
      return result