# Workspace - Рабочее пространство

class axipy.Workspace

  Сохранение рабочего пространства в файл рабочего набора `*.mws`.

  Рабочее пространство можно как сохранять в файл так и читать из него. При чтении из файла рабочего пространства посредством метода `load_file()` все источники данных (таблицы) открываются и добавляются в каталог `axipy.DataManager`, доступный через переменную `axipy.data_manager`. А окна с наполнением добавляются в менеджер окон `axipy.ViewManager`, доступный через переменную `view_manager`.

  В случае записи текущего состояния в файл рабочего пространства последовательность обратная рассмотренной. Состояние каталога и менеджера окон записывается в рабочее пространство посредством метода `save_file()`.

  Пример чтения данных в рамках отдельного приложения:

      from axipy import init_axioma, data_manager, view_manager, Workspace, open_file_dialog

      # инициализация ядра
      app = init_axioma()
      print('Before: tables({}), views({})'.format(len(data_manager), len(view_manager)))
      # Чтение рабочего набора
      file_name = open_file_dialog("Рабочий набор (*.mws)")
      Workspace().load_file(file_name)
      print('After: tables({}), views({})'.format(len(data_manager), len(view_manager)))
      # Если есть хотя бы одно окно с картой, показываем его
      if len(view_manager.mapviews):
          mapview = view_manager.mapviews[0]
          mapview.show()
      app.exec_()

      # Результат:
      # Before: tables(0), views(0)
      # After: tables(5), views(3)  # В зависимости от рабочего набора, числа могут отличаться

  Пример записи рабочего пространства:

      from pathlib import Path

      from PySide2.QtCore import QStandardPaths

      from axipy import Workspace

      path = Path(QStandardPaths.writableLocation(QStandardPaths.DocumentsLocation))
      path = path / "ws_out.mws"
      Workspace().save_file(path)
      print("Файл рабочего набора сохранен.", path)

      # Результат:
      # Файл рабочего набора сохранен. C:\Users\User\Documents\ws_out.mws

  Методы:

  `load_file`(file_name[, suppress_non_exist]) | Читает из файла рабочего пространства и заносит данные в текущее окружение.
  `load_string`(workspace_str[, suppress_non_exist]) | Читает из строки описание рабочего пространства и заносит данные в текущее окружение.
  `save_file`(file_name[, overwrite]) | Сохраняет текущее состояние в файл рабочего пространства.
  `save_string`() | Сохраняет текущее состояние рабочего пространства в виде строки.

  load_file(file_name: Union[str, Path], suppress_non_exist: bool = False)

    Читает из файла рабочего пространства и заносит данные в текущее окружение.

    Параметры:

      - file_name – Имя входного файла.

      - suppress_non_exist – Пропускать ненайденные файлы

  load_string(workspace_str: str, suppress_non_exist: bool = False)

    Читает из строки описание рабочего пространства и заносит данные в текущее окружение.

    Параметры:

      - workspace_str – Строка с контентом рабочего пространства.

      - suppress_non_exist – Пропускать ненайденные файлы.

  save_file(file_name: Union[str, Path], overwrite: bool = False)

    Сохраняет текущее состояние в файл рабочего пространства.

    Параметры:

      - file_name – Имя выходного файла.

      - overwrite – Перезаписывать существующий файл. По умолчанию False.

  save_string() → str

    Сохраняет текущее состояние рабочего пространства в виде строки.

    Результат:

      Строка с контентом рабочего пространства.