Progetti in formato testuale¶
Introduzione
Un progetto in formato testuale è un progetto in formato aperto, facilmente consultabile dagli utenti tramite editor di codice. Quando si crea un progetto in formato testuale, il modello informativo di progetto viene rappresentato in file di testo in formato YAML: in particolare, ogni nodo/modulo del progetto viene descritto in un file YAML dedicato. Il progetto può quindi essere consultato e modificato in modo granulare tramite i diversi file YAML.
Il formato testuale è utile quando si progetta in ambiente collaborativo con strumenti tipici dello sviluppo software (es. GitHub, SVN…). È inoltre utile per consultare e modificare il progetto al di fuori di Q Studio.
File e cartelle del progetto in formato testuale
Quando si crea un progetto in formato testuale, nella cartella di progetto viene creata la cartella Nodes, che contiene un file YAML di progetto che rappresenta il nodo di progetto (ProjectName.yaml), e una cartella per ogni nodo cartella del progetto (UI, Model, Converters, Alarms, eccetera). Ogni cartella contiene un file YAML che ne descrive il relativo nodo (UI.yaml, Model.yaml, Converters.yaml, Alarms.yaml, ecc.).
Anche i file di progetto .uniqo e .uniqo.design in un progetto testuale possono essere consultati tramite editor di testo. Essi contengono informazioni generali sul progetto e le sue dipendenze con i moduli Q Platform.
Esempio file YAML
Di seguito un esempio della rappresentazione del nodo UI in formato YAML.
Gli elementi descritti nel file YAML sono solo gli elementi valorizzati nel progetto. Se una proprietà di un oggetto non è valorizzata in Q Studio,essa non è descritta nel file YAML.
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