# SelectionManager - Доступ к выделенным объектам

class axipy.SelectionManager

  Класс доступа к выделенным объектам.

  Примечание

  Создание `axipy.SelectionManager` не требуется, используйте объект `axipy.selection_manager`.

  Свойства:

  `count` | Размер выделения, то есть количество выделенных записей (количество элементов в списке идентификаторов).
  `ids` | Список идентификаторов выделенных записей.
  `table` | Таблица, являющаяся источником текущего выделения.

  Методы:

  `add`(table, ids) | Добавляет выборку записи таблицы по их идентификаторам.
  `clear`() | Очищает выборку.
  `get_as_cursor`() | Возвращает выборку в виде итератора по записям.
  `get_as_table`() | Возвращает выборку в виде таблицы.
  `remove`(table, ids) | Удаляет из выборки записи таблицы по их идентификаторам.
  `set`(table, ids) | Создает выборку из записей таблицы по их идентификаторам.
  `set_all`(table) | Создает выборку по всем записям таблицы.

  Сигналы:

  `changed` | Выделение было изменено.

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

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

  __len__() → int

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

  add(table: Table, ids: Union[List[int], int])

    Добавляет выборку записи таблицы по их идентификаторам.

    Параметры:

      - table – Таблица.

      - ids – Идентификаторы записей.

    Пример установки выборки из запроса:

        qry = data_manager.query('select * from world where Столица like "М%"')
        for feature in qry.items():
            selection_manager.add(qry, feature.id)

  property changed: Signal

    Выделение было изменено.

    Тип результата:

      Signal[]

  clear()

    Очищает выборку.

  property count: int

    Размер выделения, то есть количество выделенных записей (количество элементов в списке идентификаторов).

  get_as_cursor() → Iterator[Feature]

    Возвращает выборку в виде итератора по записям.

    Пример:

        for f in selection_manager.get_as_cursor():
            print('Feature id={}. Страна={}'.format(f.id, f['Страна']))

    Предупреждение

    Не рекомендуется, начиная с версии 3.5: Используйте `axipy.DataManager.selection`.

  get_as_table() → Optional[Table]

    Возвращает выборку в виде таблицы.

    Результат:

      Таблица или `None`, если выборки нет.

    Содержимое таблицы основывается на текущей выборке на момент вызова данного метода. При последующем изменении или сбросе выборки контент данной таблицы не меняется. Результирующей таблице присваивается наименование в формате data*, которое в последствии можно изменить. При закрытии базовой таблицы данная таблицы так-же закрывается.

    Пример:

        # Получаем таблицу из выборки.
        tbl = selection_manager.get_as_table()
        # Задаем желаемое имя таблицы (необязательно)
        tbl.name = 'my_table'
        # Регистрация в каталоге (необязательно)
        app.mainwindow.catalog().add(tbl)
        for f in tbl.items():
            print('Feature id={}. Страна={}'.format(f.id, f['Страна']))

    Предупреждение

    Не рекомендуется, начиная с версии 3.5: Используйте `axipy.DataManager.selection`.

  property ids: List[int]

    Список идентификаторов выделенных записей.

  remove(table: Table, ids: Union[List[int], int])

    Удаляет из выборки записи таблицы по их идентификаторам.

    Параметры:

      - table – Таблица.

      - ids – Идентификаторы записей.

  set(table: Table, ids: Union[List[int], int])

    Создает выборку из записей таблицы по их идентификаторам.

    Параметры:

      - table – Таблица.

      - ids – Идентификаторы записей.

    Пример выбора всех объектов слоя:

        table = data_manager.find('world')
        if table:
            selection_manager.set(table, [f.id for f in table.items()])

  set_all(table: Table)

    Создает выборку по всем записям таблицы.

    Параметры:

      table – Таблица.

    Пример выбора всех объектов слоя:

        table = data_manager.find('world')
        if table:
            selection_manager.set_all(table)

  property table: Optional[Table]

    Таблица, являющаяся источником текущего выделения.

    Если ничего не выделено, то None.