ArrayStyle ================= .. currentmodule:: axioma.render .. class:: ArrayStyle Ассоциативный контейнер стилей. Вне зависимости от общего количества элементов активен только один стиль массива. Отрисовка будет производиться с использованиеи именно этого активного стиля. В массивен не может быть меньше одного элемента. Смена активного элемента производится посредством метода :meth:`~axioma.render.ArrayStyle.setActiveStyle` Унаследован от: :class:`~axioma.render.Style` .. py:method:: ArrayStyle(key, style) Конструктор. Создает массив с единственным элементом. Этот элемент по-умолчанию становится активным. :param key: Наименование первого элемента массива :type key: :class:`str` :param style: Стиль первого элемента массива :type style: :class:`~axioma.render.Style` .. py:method:: setStyle(key, style) Устанавливает новое значение стиля. Если стиль с таким наименованием уже присутствует в массиве, он заменяется, если нет, то добавляется в конец списка. После выполнения данного метода активный стиль не меняется. Изменение возможно только в том случае, если был изменено хначение самого активного стиля :param key: Наименование элемента массива :type key: :class:`str` :param style: Стиль элемента массива. Так-же допустимо использование сложных стилей :class:`~axioma.render.CollectionStyle` :type style: :class:`~axioma.render.Style` .. py:method:: remove(key) Удаление стиля по его наименованию, если такой существует. Если удаляется активный стиль, то активным становится стиль, авляющийся первым в списке. Список можно получить посредством метода :meth:`~axioma.render.ArrayStyle.keys`. Невозможно удалить элемент массива, если он является единственным. :param key: Наименование элемента массива :type key: :class:`str` :return: True, если удаление произведено успешно. В противном случае False :rtype: :class:`bool` .. py:method:: exist(key) Проверка существования стиля с таким наименованием :param key: Наименование проверяемого элемента массива :type key: :class:`str` :return: True, если такой существует. В противном случае False :rtype: :class:`bool` .. py:method:: count() Количество элеменов :rtype: :class:`int` .. py:method:: activeKey() Возвращает наименование активного элемента :rtype: :class:`str` .. py:method:: activeStyle() Возвращает активный стиль :rtype: :class:`~axioma.render.Style` .. py:method:: setActiveStyle(key) Смена активного стиля на другой по его наименованию :param key: Наименование элемента массива :type key: :class:`str` :return: True, если операция успешна. В противном случае False, если такого наименования не найдено :rtype: :class:`bool` .. py:method:: keys() Список всех наименований. Упорядочен в соответствии с их внутренним расположением. :rtype: :class:`list` [ :class:`str` ] .. py:method:: style(key) Возвращает стиль по его наименованию. :param key: Наименование элемента массива :type key: :class:`str` :rtype: :class:`~axioma.render.Style` Пример использования: .. code-block:: python from axioma.mapinfo import * from axioma.render import * # Создаем предварительно стили, которые поместим в массив style1 = MapBasicStyle().styleFromString("Pen (2,2,0) Brush (2,%d)" % (colorToMapbasic(Qt.red))) style2 = MapBasicStyle().styleFromString("Pen (2,2,0) Brush (2,%d)" % (colorToMapbasic(Qt.blue))) arrayStyle = ArrayStyle('red', style1) # Создаем массив с одним элементом arrayStyle.setStyle('blue', style2) # Добавляем еще один стиль. Установлено 2 стиля с активным red rectangle1 = Rectangle(cs_ne, QRectF(500, 300, 50,50)) arrayStyle.draw(rectangle1, context) # Рисуем первый прямоугольник arrayStyle.setActiveStyle('blue') # Меняем активный стиль на значение blue rectangle2 = Rectangle(cs_ne, QRectF(500, 200, 50,50)) arrayStyle.draw(rectangle2, context) # Рисуем второй прямоугольник