axioma.gui.
Workspace
¶Представление рабочего пространства во внутреннем формате. Используется как промежуточный контейнер при запаси или чтении рабочего пространства в формат MWS.
Для чтения рабочего набора из внешнего файла необходимо последовательно произвести следующие действия:
- Создать объект внутреннего представления рабочего пространства
Workspace
.- В него загрузить содержимое из внешнего файла посредством
loadFile
.- Создать контекст чтения
WorkspaceLoadContext
и установить для него менеджеры, куда будут создаваться объекты из рабочего набора (менеджеры картMapViewManager
, отчетовReportViewManager
и таблиц просмотраBrowserManager
).- Создать объект-загрузчик рабочего пространства из внутреннего представления в данные для менеджеров.
- Произвести непосредственное чтение посредством метода WorkspaceLoader
load
.Пример чтения из файла:
# Чтение рабочего пространства из файла from axioma.core.dp import * from axioma.gui import * try: # Создаем контейнеры, куда мы будем в конечном счете загружать данные из рабочего набора catalog = DataCatalog() # Каталог с источниками данных mapManager = MapViewManager() # Менеджер карт reportManager = ReportViewManager() # Менеджер отчетов browserManager = BrowserManager() # Менеджер таблиц просмотра # Читаем рабочее пространство из файла workspaceIn = Workspace() # внутреннее представление рабочего пространства fileName = 'sampleWorkspace.mws' # Имя файла для чтения workspaceIn.loadFile(fileName) # Контекст для чтения. Устанавливаем куда мы будем сохранять прочитанное состояние context = WorkspaceLoadContext(gui, catalog) context.setMapViewManager(mapManager) context.setReportViewManager(reportManager) context.setBrowserManager(browserManager) loader = WorkspaceLoader(fileName, context) # Читаем из внутреннего представления loader.load(workspaceIn) # Контролируем зачитанную информацию из рабочего пространства print('tables={}, maps={}, reports={}, browsers={}'.format(len(catalog.allDataObjects()), len(mapManager.mapViews()), len(reportManager.views()), len(browserManager.tableWindows()))) except Exception as ex: print(ex)
Для записи рабочего набора во внешний файл необходимо выполнить следующие действия:
- Предварительно должны существовать каталог с данными (
DataCatalogInterface
) и менеджеры (картMapViewManager
, отчетовReportViewManager
и таблиц просмотраBrowserManager
). Они должны содержать информацию о состоянии, которое будет в последствии записано в файл.- Создаем контекст для записи
WorkspaceSaveContext
и установить для него менеджеры, откуда будут браться объекты для рабочего набора (менеджеры картMapViewManager
, отчетовReportViewManager
и таблиц просмотраBrowserManager
).- Создать объект преобразования данных контекста во внутреннюю структуру
WorkspaceSaver
и произвести в него запись посредствомsave
, получив как результатWorkspace
.- Произвести запись состояния
Workspace
в файл посредствомsaveFile
.Пример записи в файл:
# Сохранение рабочего пространства в файл from axioma.core.dp import * from axioma.gui import * try: # Создаем контейнеры catalog = DataCatalog() # Каталог с источниками данных mapManager = MapViewManager() # Менеджер карт reportManager = ReportViewManager() # Менеджер отчетов browserManager = BrowserManager() # Менеджер таблиц просмотра # каким-то образом заполняем контейнеры либо изменяем загруженные ранее из рабочего пространства данные fileNameOut = "sampleWorkspace.mws" # Имя файла для записи # Создаем контекст для сохранения contextSave = WorkspaceSaveContext(gui, catalog) # Устанавливаем в данном контексте ссылки на существующие менеджеры contextSave.setMapViewManager(mapManager) contextSave.setReportViewManager(reportManager) contextSave.setBrowserManager(browserManager) # Создаем объект преобразования данных контекста во внутреннюю структуру saver = WorkspaceSaver(fileNameOut, contextSave) # Сохраняем во внутренний формат workspaceOut = saver.save() # Сохраняем в файл workspaceOut.saveFile(fileNameOut) except Exception as ex: print(ex)