Projects in text format

Introduction

A project in text format is a project in open format, easily opened by users with a code editor. When a project is created in text format, the project information model is represented in a text file in YAML format: in particular, each node/module of the project is described in a dedicated YAML file. The project can then be consulted and changed in a granular way through the different YAML files.

The text format is useful when designing in a collaborative environment with typical software development tools (e.g. GitHub, SVN, etc.). It is also useful for consulting and changing the project outside of Q Studio.

Files and folders of the project in text format

When a project is created in text format, the Nodes folder, that contains a project YAML file representing the project node (ProjectName.yaml) and a folder for each project folder node (UI, Model, Converters, Alarms, etc.), is created in the project folder. Each folder contains a YAML file that describes its related node (UI.yaml, Model.yaml, Converters.yaml, Alarms.yaml, etc.).

During the design, all changes made to the project are automatically written to the YAML files.
When nested node structures are created in Q Studio that correspond to the standard structures of UNIQO native objects (e.g., when the structure of a communication Driver with the related Communication station, TagImporter, etc. is created), Q Studio automatically creates other subfolders and related YAML files in the parent node folder on the file system.

The .uniqo and .uniqo.design project files in a text project can also be opened with a text editor. They contain general information on the project and its dependencies with the Q Platform modules.

Example YAML file

Below is an example of representation of the UI node in YAML format.

The elements described in the YAML file are the only elements given value in the project. If a property of an object is not given a value in Q Studio, it is not described in the YAML file.

Name: UI
Type: FolderType
Children:
- Name: NativePresentationEngine
  Type: NativePresentationEngine
  ReferenceType: HasOrderedComponent
  Children:
  - Name: StartWindow
    Type: NodePointer
    DataType: NodeId
    Value: {"IdType":2,"Id":"c5b6a0a2e7242da2ad471b89a993b1b9","Namespace":7}
    Children:
    - Name: Kind
      Type: PropertyType
      DataType: NodeId
      Value: {"Id":12,"Namespace":4}
  - Name: StyleSheet
    Type: NodePointer
    DataType: NodeId
    Value: {"IdType":2,"Id":"87ddf487197f945cf28bbdd169681bc9","Namespace":7}
    Children:
    - Name: Kind
      Type: PropertyType
      DataType: NodeId
      Value: {"Id":447,"Namespace":4}
  - Name: EnableVirtualKeyboard
    Type: BaseDataVariableType
    DataType: Boolean
    Value: false
  - Name: StartingUser
    Type: NodePointer
    DataType: NodeId
    Value: {"IdType":2,"Id":"bcd4b69a3d76a1ec8313316b2bbcbba2","Namespace":7}
    Children:
    - Name: Kind
      Type: PropertyType
      DataType: NodeId
      Value: {"Id":14,"Namespace":1}
  - Name: Sessions
    Type: BaseObjectType
- Name: MainWindow
  Id: g=c5b6a0a2e7242da2ad471b89a993b1b9
  Supertype: Window
  Children:
  - Name: Width
    Type: BaseDataVariableType
    DataType: Size
    ModellingRule: Optional
    Value: 400.0
  - Name: Height
    Type: BaseDataVariableType
    DataType: Size
    ModellingRule: Optional
    Value: 400.0
  - Name: Panel1
    Type: Panel
    Children:
    - Name: Width
      Type: BaseVariableType
      DataType: Size
      ModellingRule: Optional
      Value: 300.0
    - Name: Height
      Type: BaseVariableType
      DataType: Size
      ModellingRule: Optional
      Value: 300.0
    - Name: Label1
      Children:
      - Name: Text
        Type: BaseDataVariableType
        DataType: LocalizedText
        ModellingRule: Optional
        Value: {"LocaleId":"it-IT","Text":"Label1"}
    - Name: NetLogicDiRuntime1
      Type: NetLogic