# ListLayers - Список слоев карты

class axipy.ListLayers

  Группа слоев.

  Может включать в себя как слои `axipy.Layer` так и группы слоев `axipy.ListLayers`. Пример использования см `axipy.Map.layers`

  Свойства:

  `count` | Возвращает количество слоев и групп слоев.
  `title` | Устанавливает или возвращает наименование группы.
  `visible` | Устанавливает или возвращает признак видимости группы.

  Методы:

  `add_group`(name) | Создает пустую группу.
  `append`(layer) | Добавляет слой в карту.
  `at`(index) | Возвращает слой или группы слоев по их индексу.
  `group`(indexes, name) | Группировка слоев и групп в соответствие со списком их индексов.
  `insert`(layer) | Добавляет слой в карту.
  `move`(from_index, to_index) | Перемещает слой или вложенную группу слоев в списке слоев по его индексу.
  `remove`(index) | Удаляет слой по индексу.
  `ungroup`(index) | Разгруппировка группы слоев по его индексу.

  Специальные методы:

  `__getitem__`(index) | Возвращает слой или группу по их индексу.
  `__iter__`() | Возвращает итератор по объекту (функция `iter()`).
  `__len__`() | Длина объекта (функция `len()`).

  __getitem__(index: int) → Union[Layer, ListLayers]

    Возвращает слой или группу по их индексу.

    Параметры:

      index – Индекс слоя или группы слоев.

    Результат:

      Искомый элемент.

  __iter__() → Iterator[Union[Layer, ListLayers]]

    Возвращает итератор по объекту (функция `iter()`).

  __len__() → int

    Длина объекта (функция `len()`).

  add_group(name: str)

    Создает пустую группу.

    Параметры:

      name – Наименование создаваемой группы.

  append(layer: Layer)

    Добавляет слой в карту. Добавление группы слоев не поддерживается и производится путем группировки существующих элементов посредством метода `group()`.

    Параметры:

      layer – Добавляемый слой.

    Исключение:

      ValueError – Если слой уже содержится в карте.

  at(index: int) → Union[Layer, ListLayers]

    Возвращает слой или группы слоев по их индексу.

    Параметры:

      index – Индекс слоя или группы в списке.

    Например:

        layers.at(2)
        layers[2]

  property count: int

    Возвращает количество слоев и групп слоев.

    Так же допустимо использование функции `len()`.

  group(indexes: List[int], name: str)

    Группировка слоев и групп в соответствие со списком их индексов. При этом создается новая группа и все элементы (слои и группы слоев) помещаются внутрь этой группы.

    Параметры:

      - indexes – Список индексов элементов, которые необходимо объединить.

      - name – Наименование создаваемой группы.

  insert(layer: Layer)

    Добавляет слой в карту. В отличие от `ListLayers.append()` при вставке слоя производится попытка вставить его в список в зависимости от контента.

    Параметры:

      layer – Вставляемый слой.

    Исключение:

      ValueError – Если слой уже содержится в карте.

  move(from_index: int, to_index: int)

    Перемещает слой или вложенную группу слоев в списке слоев по его индексу.

    Параметры:

      - from_index – Индекс слоя для перемещения.

      - to_index – Целевой индекс.

  remove(index: int)

    Удаляет слой по индексу.

    Параметры:

      index – Индекс удаляемого слоя.

  property title: str

    Устанавливает или возвращает наименование группы.

  ungroup(index: int)

    Разгруппировка группы слоев по его индексу. при этом все внутренние элементы переносятся на верхний уровень данного списка. Если по индексу располагается не группа, то будет выброшено исключение.

    Параметры:

      index – Индекс группы слоев.

  property visible: bool

    Устанавливает или возвращает признак видимости группы.