def connect_widget(self, wid, getters=None, setters=None,
                       signals=None, arg=None,
                       flavours=None):
        """
        Called when the widget is instantiated, and the adapter is
        ready to connect the widgets inside it (if a container) or
        each widget if wid is a list of widgets. getters and setters
        can be None, a function or a list or a map of
        functions. signals can be None, a signal name, or a list or
        a map of signal names. When maps are used, keys can be
        widgets or widget names. The length of the possible lists or
        maps must be lesser or equal to the number of widgets that
        will be connected.
        """

        if isinstance(wid, Gtk.Container):
            self._widgets = wid.get_children()
        elif isinstance(wid, (list, tuple)):
            self._widgets = wid
        else:
            raise TypeError("widget must be either a Gtk.Container or a list or tuple")

        # prepares the mappings:
        for idx, w in enumerate(self._widgets):
            if self._prop_is_map: idx=_get_name(w)
            self._idx2wid[idx] = w
            self._wid2idx[w] = idx
            pass

        # prepares the lists for signals
        getters = self.__handle_par("getters", getters)
        setters = self.__handle_par("setters", setters)
        signals = self.__handle_par("signals", signals)
        flavours = self.__handle_par("flavours", flavours)

        for wi,ge,se,si,fl in zip(self._widgets, getters, setters, signals, flavours):
            if type(ge) == types.MethodType: ge = ge.im_func
            if type(se) == types.MethodType: se = se.im_func
            UserClassAdapter.connect_widget(self, wi, ge, se, si, arg, False, fl)
            pass

        self.update_widget()
        self._wid = wid
        return