Sets whether or not this particular layer is visible.  Depending on \
        if the inheritVisibility property is set for this layer, it may not \
        actually affect the visible state based on its inheritance.  If you \
        want to force this layer to be visible, use the ensureVisible method.
        
        :param      state | <bool>
        
        :return     <bool> changed

def setVisible(self, state):
        """
        Sets whether or not this particular layer is visible.  Depending on \
        if the inheritVisibility property is set for this layer, it may not \
        actually affect the visible state based on its inheritance.  If you \
        want to force this layer to be visible, use the ensureVisible method.
        
        :param      state | <bool>
        
        :return     <bool> changed
        """
        # store the current state
        currvis = self.isVisible()
        
        # update the local property
        self._visible = state
        
        # check the new state
        newvis = self.isVisible()
        
        # check to see if the state has changed
        if newvis == currvis:
            return False
        
        # update the item visibility
        self.sync()
        return True