Workspace

class axioma.gui.Workspace

Представление рабочего пространства во внутреннем формате. Используется как промежуточный контейнер при запаси или чтении рабочего пространства в формат MWS.

clear()

Очистка всего внутреннего содержания

loadFile(filename)

Чтение из внешнего файла WMS во внутренний формат представления информации

Параметры:filename (str) – Наименование файла в файловой системе
saveFile(filename)

Запись внутренного представления рабочего пространства во внешний файл формата WMS

Параметры:filename (str) – Наименование файла в файловой системе

Чтение

Для чтения рабочего набора из внешнего файла необходимо последовательно произвести следующие действия:

  • Создать объект внутреннего представления рабочего пространства 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)