# История изменений

## 7.1 Изменения

Октябрь 2025

### Новое

- Добавлен новый класс `axipy.SelectedFilter` — контейнер для передачи и получения фильтра, выбранного пользователем, в функциях: `axipy.open_file_dialog()`, `axipy.open_files_dialog()`, `axipy.save_file_dialog()` (параметр `selected_filter`).

- Реализован метод `axipy.SqliteDataProvider.get_destination()`.

- Добавлен новый класс `axipy.SqliteGeometryFormat` для указания формата геометрии SQLite в методе `axipy.SqliteDataProvider.get_destination()`.

- В `axipy.WmsDataProvider` добавлен параметр `color` (цвет подложки растра) в методы `axipy.WmsDataProvider.get_source()` и `axipy.WmsDataProvider.open()`.

- В `axipy.OgrDataProvider.get_destination()` в параметр `create_data` был добавлен ключ `driver` для явного указания имени провайдера.

## 7.0 Изменения

Июнь 2025

### Новое

- В `axipy.open_file_dialog()` добавлен новый параметр `set_last_open_path`.

- В `axipy.open_files_dialog()` добавлен новый параметр `set_last_open_path`.

- В `axipy.save_file_dialog()` добавлен новый параметр `set_last_save_path`.

- Добавлена функция `axipy.select_folder_dialog()`.

- Добавлен метод `axipy.Rect.intersects()`.

- Добавлен метод `axipy.ProviderManager.find_for_extension()`.

- Для наследников класса `axipy.DatabaseDataProvider` добавлен параметр `editable_unique` (установить возможность изменения значения поля unique) в методы `axipy.DatabaseDataProvider.get_source()` и `axipy.DatabaseDataProvider.open()`.

- Добавлен новый класс `axipy.WebOpenData` (дополнительные данные открытия WEB-источников) для использования в методах `axipy.WmsDataProvider.open()`, `axipy.WmsDataProvider.get_source()`, `axipy.TmsDataProvider.open()`, `axipy.TmsDataProvider.get_source()`.

- В `axipy.ShapeDataProvider.get_destination()` добавлен новый параметр `create_data` для передачи параметров OGR.

- Добавлен параметр `open_data` в методы `axipy.DataProvider.open()` и `axipy.DataProvider.get_source()` в провайдеры `axipy.GdalDataProvider`, `axipy.OgrDataProvider` для передачи параметров открытия GDAL/OGR.

- Добавлен параметр `create_data` в методы `axipy.DataProvider.create_open()` и `axipy.DataProvider.get_destination()` в провайдеры `axipy.GdalDataProvider`, `axipy.OgrDataProvider` для передачи параметров создания GDAL/OGR.

- В `axipy.DataObject` добавлены свойства: `axipy.DataObject.file_name` (путь к файлу источника) и `axipy.DataObject.is_valid` (проверка на возможное закрытие объекта).

- Добавлен классовый метод `axipy.Style.for_geometry_type()` для получения стиля по умолчанию для типа геометрии.

- Добавлен новый класс `axipy.ViewTool` вместо устаревшего класса `axipy.MapTool`. Новый класс предоставляет возможность работы как с окном карты, так и с окном отчета для пользовательских инструментов.

- В `axipy.ActionManager` добавлены методы `axipy.ActionManager.activate_selection_tool()` и `axipy.ActionManager.find_by_text()`.

- В `axipy.Button` добавлено свойство `axipy.Button.observer`, возвращающее экземпляр наблюдателя кнопки.

- В `axipy.ToolButton` добавлено свойство `axipy.ToolButton.is_toggled` (нажата ли кнопка).

### Исправления

- Свойство `axipy.MainWindow.catalog` объявлено устаревшим; используйте готовый экземпляр `axipy.data_manager`.

- Метод `axipy.ProviderManager.query()` объявлен устаревшим; используйте метод `axipy.DataManager.query()`.

- Класс `axipy.Type` объявлен устаревшим и был переименован в `axipy.GeometryType`.

## 6.2 Изменения

Январь 2025

### Новое

> - В менеджер `axipy.view_manager` добавлены доступные в в системе `axipy.LayerControlWidget` и `axipy.DataManagerWidget` через свойства `axipy.ViewManager.layer_controls` и `axipy.ViewManager.data_managers` соответственно.

> - В менеджер `axipy.selection_manager` добавлена возможность выбора всех объектов слоя через метод `axipy.SelectionManager.set_all()`

## 6.1 Изменения

Октябрь 2024

### Новое

> - В методы `axipy.open_file_dialog()` и `axipy.save_file_dialog()` добавлены дополнительные параметры.

> - Для главного окна MainWindow добавлен список доступных `PySide2.QtWidgets.QDockWidget` как свойство `axipy.MainWindow.dock_widgets`

> - В `axipy.DataManager` добавлен сигнал об изменении таблицы `axipy.DataManager.table_data_changed`

> - Задание области врезки для карты `axipy.MapView.clip` и элемента отчета `axipy.MapReportItem.clip`

> - Для пользовательских меток добавлено выравнивание `axipy.CustomLabelProperties.position_align`, стиль текста `axipy.CustomLabelProperties.text_style`, стиль указки `axipy.CustomLabelProperties.arrow_style`

> - Стиль по умолчанию для пользовательских меток карты `axipy.CustomLabels.set_default_arrow_type()` и для выноски `axipy.CustomLabels.set_default_end_type()`

### Исправления

> - При сохранении `axipy.Table.commit()` выдача более полной информации в случае ошибки

> - В методах `axipy.Workspace.load_file()` и `axipy.Workspace.load_string()` добавлена возможность пропуска источников, у которых возникли проблемы при открытии

## 6.0 Изменения

Июнь 2024

### Новое

> - Новые классы для работы с длительными задачами: `axipy.Task`, `axipy.DialogTask` вместо устаревших классов `axipy.AxipyTask`, `axipy.AxipyAnyCallableTask`, `axipy.AxipyProgressHandler`, `axipy.ProgressGuiFlags`, `axipy.ProgressSpecification`.

> - Класс `axipy.TaskManager` был дополнен как словарь только для чтения (`typing.Mapping`). Добавлены сигналы `axipy.TaskManager.added` и `axipy.TaskManager.removed`. Методы `axipy.TaskManager.start_task()`, `axipy.TaskManager.run_and_get()`, `axipy.TaskManager.run_in_gui()`, `axipy.TaskManager.generate_dialog_for_task()` были объявлены устаревшими.

> - Класс `axipy.PluginManager` - Менеджер плагинов.

> - Функция `axipy.save_file_dialog()` - Диалог сохранения файла, по аналогии с `axipy.open_file_dialog()`.

### Исправления

> - Экземпляры классов менеджеров были приведены к одному виду и оформлены в разделе Менеджеры. Классы:

>   > - `axipy.ObserverManager`;

>   > - `axipy.ActionManager`.

>   были дополнены как экземпляры. (Раньше были исключительно статическими классами.)

## 5.2 Изменения

Февраль 2024

### Исправления

> - Функция callback для методов `axipy.Destination.export()` и `axipy.Destination.export_from_table()` теперь игнорирует все возвращаемые значения, отличные от `False`.

## 5.1 Изменения

Июль 2023

### Исправления

> - Методы `axipy.Workspace.load_file()` и `axipy.Workspace.save_file()` теперь работают независимо от наличия главного окна Аксиомы. Методы `axipy.MainWindow.load_workspace()` и `axipy.MainWindow.save_workspace()` отмечены как устаревшие.

## 5.0.1 Изменения

Июль 2023

### Исправления

> - Для классов (словарей `dict`):

>   - `axipy.ObserverManager`

>   - `axipy.CurrentSettings`

>   - `axipy.DefaultSettings`

>   - `axipy.LinearUnits`

>   - `axipy.AreaUnits`

>   - Исправлена ошибка с неправильной работой оператора принадлежности `in`;

>   - Исправлена некорректная работа метода `get()`, где не учитывалось значение по умолчанию;

>   - Исправлена ошибка, где при обращение по индексу `[]` к несуществующему элементу, не генерировалось исключение `KeyError`.

## 5.0 Изменения

Июнь 2023

### Новое

> - Раздел Формирование пользовательского приложения.

> - Классы виджетов Аксиомы:

>   - `axipy.DataManagerWidget`

>   - `axipy.ViewManagerWidget`

>   - `axipy.LayerControlWidget`

>   - `axipy.NotificationWidget`

>   - `axipy.PythonConsoleWidget`

> - Класс `axipy.ActionManager` - Менеджер системных действий и инструментов.

> - Классы `axipy.LinearUnits`, `axipy.AreaUnits`.

> - Классы `axipy.ObserverManager`, `axipy.Observer` вместо устаревших классов `axipy.StateManager` и `axipy.ValueObserver`.

> - Классы `axipy.FloatCoord`, `axipy.AngleCoord` вместо устаревших классов `axipy.FloatFormatter` и `axipy.CoordFormatter`.

> - Классы `axipy.CurrentSettings`, `axipy.DefaultSettings` вместо устаревшего класса `axipy.Settings`.

> - Класс `axipy.StyleButton` вместо устаревшего класса `axipy.StyledButton`.

> - Класс `axipy.Plugin` вместо устаревших классов `axipy.AxiomaPlugin` и `axipy.AxiomaInterface`.

> - Метод `axipy.execfile()`.

> - Метод `axipy.open_file_dialog()`.

### Исправления

> - Класс `axipy.app.Notifications` перенесен в `axipy.gui` как `axipy.gui.Notifications`.

> - В соответствии с PEP 8#package-and-module-names переименованы модули:

>   - Модуль `axipy.concurrent.AxipyProgressHandler` переименован в `axipy.concurrent.axipy_progress_handler`.

>   - Модуль `axipy.concurrent.Task` переименован в `axipy.concurrent.task`.

>   - Модуль `axipy.concurrent.TaskManager` переименован в `axipy.concurrent.task_manager_`.

>   - Модуль `axipy.concurrent.TaskUtils` переименован в `axipy.concurrent.task_utils`.

>   - Модуль `axipy.cs.CoordSystem` переименован в `axipy.cs.coord_system`.

>   - Модуль `axipy.cs.CoordTransformer` переименован в `axipy.cs.coord_transformer`.

>   - Модуль `axipy.da.attribute_schema` переименован в `axipy.da.schema`.

>   - Модуль `axipy.da.DataManagerWrapper` переименован в `axipy.da.data_manager_`.

>   - Модуль `axipy.da.DataObjectWrapper` переименован в `axipy.da.data_object`.

>   - Модуль `axipy.da.FeatureWrapper` переименован в `axipy.da.feature`.

>   - Модуль `axipy.da.Geometry` переименован в `axipy.da.geometry`.

>   - Модуль `axipy.da.Style` переименован в `axipy.da.style`.

>   - Модуль `axipy.da.TabFile` переименован в `axipy.da.tab_file`.

>   - Модуль `axipy.gui.ActiveToolPanel` переименован в `axipy.gui.active_tool_panel`.

>   - Модуль `axipy.gui.DialogWrapper` переименован в `axipy.gui.dialog`.

>   - Модуль `axipy.gui.Notifications` переименован в `axipy.gui.notifications`.

>   - Модуль `axipy.gui.SelectionManagerWrapper` переименован в `axipy.gui.selection_manager_`.

>   - Модуль `axipy.gui.ToolWrapper` переименован в `axipy.gui.map_tool`.

>   - Модуль `axipy.gui.view_manager_wrapper` переименован в `axipy.gui.view_manager_`.

>   - Модуль `axipy.gui.ViewWrapper` переименован в `axipy.gui.view`.

>   - Модуль `axipy.gui.WidgetWrapper` переименован в `axipy.gui.widgets`.

>   - Модуль `axipy.gui.Workspace` переименован в `axipy.gui.workspace`.

>   - Модуль `axipy.mi.MIGeometry` переименован в `axipy.mi.mi_geometry`.

>   - Модуль `axipy.render.map` переименован в `axipy.render.map_`.

## 4.4 Изменения

Февраль 2023

### Исправления

> - Методы `axipy.da.CollectionStyle.point()`, `axipy.da.CollectionStyle.line()`, `axipy.da.CollectionStyle.polygon()`, `axipy.da.CollectionStyle.text()` реализованы как свойства.

## 4.3 Изменения

Декабрь 2022

### Новое

> - Модули устанавливаются в папку `installed_modules`.

> - Явное указание секции `[general]` в файле метаданных модуля `manifest.ini` необязательно.

> - Модули с зависимостями.

> - Обход ошибки при импорте библиотеки Matplotlib.

> - Раздел Среда разработки.

> - Методы `axipy.gui.SelectToolHelpers.select_by_mouse()` и `axipy.gui.SelectToolHelpers.select_by_rect()` для выделения геометрий как в инструменте Выбор.

> - Доступ к объектам данных в `axipy.da.DataManager` по имени как в словаре `dict`.

> - Редактируемый атрибут `axipy.da.Table.schema`.

> - Свойства подписей.

> - Список загруженных провайдеров `axipy.da.ProviderManager.providers()`.

### Исправления

> - При выполнении конвертации `axipy.da.MifMidDataProvider.convert_to_tab()` терялись пространственные данные.

> - Из-за похожести с `axipy.gui.MapView.device_rect` свойство `axipy.gui.View.rect` переименовано в `axipy.gui.View.position`.

> - `axipy.gui.Map.to_image()` не учитывал ограничивающий прямоугольник.

> - Метод `axipy.da.Geometry.from_json()` переименован в `axipy.da.Geometry.from_geojson()`.

> - Класс `axipy.utl.Printer` переименован в `axipy.utl.FloatFormatter`.

> - Для `axipy.da.DataManager.sql_dialect` сменен тип данных с str на enum.

> - Свойство `axipy.render.Label.placementPolicy` вынесено как enum `axipy.render.LabelOverlap`.

## 4.0 Изменения

Июнь 2022

### Новое

> - Метод создания и показа главного окна `axipy.app.MainWindow.show()`.

### Исправления

> - Свойство `axipy.gui.ReportView.scale()` переименовано в `axipy.gui.ReportView.view_scale`.

## 3.7.0 Изменения

Март 2022

### Новое

> - Методы `axipy.gui.MapTool.load()`/`axipy.gui.MapTool.unload()` класса `axipy.gui.MapTool`; метод `axipy.gui.MapTool.deactivate()` отмечен как устаревший.

> - Метод `axipy.gui.MapTool.canDeactivate()` переименован в `axipy.gui.MapTool.canUnload()`.

> - Функция поиска перевода `axipy.tr()`.

### Исправления

> - Изменены пределы для свойств `axipy.render.RasterLayer.brightness` и `axipy.render.RasterLayer.contrast` на диапазон (-100…100).

## 3.5.0 Изменения

Август 2021

### Новое

> - Новые вспомогательные методы в `axipy.gui.MapTool`.

> - Объектно-ориентированный стиль создания кнопок `axipy.menubar.Button`.

> - Механизм слежения за значениями `axipy.da.state_manager`.

> - Распространение модулей в архивах.

> - Объявление модулей с наследованием от `axipy.AxiomaPlugin`.

> - Каталог данных содержит таблицу выборки `axipy.da.DataCatalog.selection`.

> - Менеджер для запуска и управления пользовательскими задачами `axipy.concurrent.TaskManager`.

> - Добавлена панель активного инструмента `axipy.gui.ActiveToolPanel` в которую можно поместить графический элемент упрощающий работу с пользовательским инструментом.

### Исправления

> - Класс `axipy.da.Collection` переименован в `axipy.da.GeometryCollection`.

> - Методы `axipy.da.DataCatalog.tables()`, `axipy.da.DataCatalog.objects()`, `axipy.da.DataCatalog.count()` реализованы как свойства. Метод `axipy.da.Schema.attribute_names()` так-же переделан как свойство.

> - Убраны класс `axipy.cs.UnitService` и его экземпляр `axipy.cs.unit`. Их функционал перенесен в базовый класс `axipy.cs.EarthUnit`, который переименован в `axipy.cs.Unit`. Переименованы методы `axipy.cs.LinearUnit.list_all()`, `axipy.cs.AreaUnit.list_all()`.

> - Переименован класс `axipy.da.DataCatalog` в `axipy.da.DataManager`

> - Переименован класс `axipy.gui.ViewService` в `axipy.gui.ViewManager`

> - Переименован класс `axipy.gui.SelectionService` в `axipy.gui.SelectionManager`

> - Переименован класс `axipy.da.DataProviders` в `axipy.da.ProviderManager`

> - Экземпляр класса `axipy.render.Map` `axipy.render.Map.unit` перенесен в класс `axipy.gui.MapView`.

## 3.0.0 Изменения

Апрель 2021

### Новое

> - Руководство разработчика объединено со справочником функций.

> - Свойство временной таблицы `axipy.da.Table.is_temporary`.

> - Менеджер контекста `with` для `axipy.da.DataObject`.

> - Транзакционная модель редактирования таблиц: `axipy.da.Table.restore()`, `axipy.da.Table.commit()`, `axipy.da.Table.is_modified`, `axipy.da.Table.insert()`, `axipy.da.Table.update()`, `axipy.da.Table.delete()`.

> - Каталог объектов данных `axipy.app.MainWindow.catalog` по умолчанию. Открываемые объекты данных автоматически попадают в каталог главного окна. Запросы `axipy.da.DataCatalog.query()` производятся к этому каталогу без явного указания конкретных таблиц.

> - Создаваемые окна `axipy.gui.ViewService.create_view()` автоматически добавляются в главное окно программы.

> - Настройки ГИС Аксиома `axipy.Settings`.

> - Провайдеры данных `axipy.da.DataProviders` со специализированными параметрами для открытия/создания и импорта/экспорта: `axipy.da.DataProviders.tab`, `axipy.da.DataProviders.shp` и другие.

> - Раздельные типы стилей: `axipy.da.PointStyle`, `axipy.da.PolygonStyle` и другие.

> - Раздельные типы геометрий: `axipy.da.Point`, `axipy.da.Polygon` и другие.

> - Загрузка/сохранение рабочих наборов `axipy.app.MainWindow.load_workspace()`, `axipy.app.MainWindow.save_workspace()`.

> - Удаление кнопок `axipy.menubar.remove()` приводит к удалению групп и вкладок `axipy.menubar.Position`, если они стали пустыми.

### Исправления

> - Ошибка при попытке закрытия временной таблицы с изменениями.

> - Ошибка при задании разделителя в формате CSV `axipy.da.CsvDataProvider`.

## 2.9.0 Изменения

Декабрь 2020

### Новое

> - Первоначальный релиз.