diff --git a/CSM-ModSets-TagDB-UI.lvproj b/CSM-ModSets-TagDB-UI.lvproj new file mode 100644 index 0000000..7d8e905 --- /dev/null +++ b/CSM-ModSets-TagDB-UI.lvproj @@ -0,0 +1,89 @@ + + + + true + true + false + 0 + My Computer/VI Server + My Computer/VI Server + true + true + false + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DisplayWindow/CSM-TagDBDisplayWnd.vi b/DisplayWindow/CSM-TagDBDisplayWnd.vi deleted file mode 100644 index bb2dd4b..0000000 Binary files a/DisplayWindow/CSM-TagDBDisplayWnd.vi and /dev/null differ diff --git a/DisplayWindow/DefaultPage.vi b/DisplayWindow/DefaultPage.vi deleted file mode 100644 index f9d6c87..0000000 Binary files a/DisplayWindow/DefaultPage.vi and /dev/null differ diff --git a/DisplayWindow/_support/Query Page VI Path.vi b/DisplayWindow/_support/Query Page VI Path.vi deleted file mode 100644 index 0f1bb3a..0000000 Binary files a/DisplayWindow/_support/Query Page VI Path.vi and /dev/null differ diff --git a/README.md b/README.md index 002dbd0..3d9dc09 100644 --- a/README.md +++ b/README.md @@ -1 +1,25 @@ -# CSM-ModSets-TagDB-UI \ No newline at end of file +# CSM-ModSets-TagDB-UI + +基于 [CSM(可通信状态机)](https://nevstop-lab.github.io/CSM-Wiki/) 框架的 TagDB 仪表盘与显示容器 UI 模块组,用于在 LabVIEW 前面板中展示和管理 TagDB 标签数据。 + +This repository contains CSM-based UI modules for displaying and managing TagDB tag data on LabVIEW front panels. + +--- + +## 模块列表 + +| 模块 | 所属模块组 | 功能说明 | +| ------------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------------------------------- | +| [TagDashboard](./TagDashboard/TagDashboard.md) | CSM-TagDashboard.lvlib | 网格仪表盘,展示 TagDB 标签数据的实时快照 | +| [TagDisplayContainer](./TagDisplayContainer/TagDisplayContainer.md) | CSM-TagDBDisplayContainer.lvlib | 多视图容器,支持预定义页面切换和动态视图插入 | + +--- + +## 许可 + +本项目采用 Apache License 2.0 发布。 + +--- + +- _完整 CSM 语法参考:_ +- _CSM Wiki:_ \ No newline at end of file diff --git a/TagDashboard/TagDashboard.md b/TagDashboard/TagDashboard.md new file mode 100644 index 0000000..4c0c85f --- /dev/null +++ b/TagDashboard/TagDashboard.md @@ -0,0 +1,177 @@ +# `TagDashboard` — CSM 模块接口文档 + +--- + +## 功能简述 + +`TagDashboard` 是一个 CSM UI 模块,用于将 TagDB 中的标签(Tag)数据以网格仪表盘(Grid Dashboard)形式展示在前面板上。 + +模块支持动态设置仪表盘的行列数、指定要监听的标签列表,并可随时对当前标签值进行快照式刷新。 + +--- + +## 模块信息 + +| 属性 | 值 | +| -------------- | ----------------------------------------------- | +| LabVIEW 版本 | ≥ 2020 | +| 支持的操作系统 | Windows | +| 支持 RT | ❌ 不支持 | +| 支持 64-bit | ✅ 支持 | +| 所属模块组 | CSM-TagDashboard.lvlib | + +--- + +## 依赖项 + +| 依赖 | 类型 | +| --------------------------------------------------------------------------------------------------- | ---- | +| [Communicable-State-Machine](https://github.com/NEVSTOP-LAB/Communicable-State-Machine) | 必须 | +| [CSM-API-String-Arguments-Support](https://github.com/NEVSTOP-LAB/CSM-API-String-Arguments-Support) | 必须 | +| [CSM-INI-Static-Variable-Support](https://github.com/NEVSTOP-LAB/CSM-INI-Static-Variable-Support) | 可选 | +| [TagDB](https://github.com/NEVSTOP-LAB/TagDB) | 必须 | +| [TagDB RefManager](https://github.com/NEVSTOP-LAB/TagDB) | 必须 | + +--- + +## API 接口(消息接口) + +以下是外部调用者可以发送给本模块的消息。 + +### `API: Set TagDB` + +绑定目标 TagDB 引用,建立与 TagDB 服务器的连接。 + +- **参数**:`APIString` — `String`:TagDB 引用名称或标识符 +- **响应**:N/A + +### `API: Set Tags` + +指定要在仪表盘上显示的标签(Tag)列表。 + +- **参数**:`APIString` — `String`:以逗号或分号分隔的标签名称列表(如 `TagA,TagB,TagC`) +- **响应**:N/A + +### `API: Snapshot Tags` + +立即刷新仪表盘上所有已注册标签的当前值。 + +- **参数**:N/A +- **响应**:N/A + +### `UI: Front Panel State` + +控制本模块前面板的显示状态。 + +- **参数**:`APIString` — `Enum`:`Open`、`Close` 或 `Minimize` +- **响应**:N/A + +### `UI: Cursor Set` + +设置前面板光标样式。 + +- **参数**:`APIString` — `Enum`:光标类型名称(如 `Busy`、`Default`) +- **响应**:N/A + +### 参数类型说明 + +| 类型 | 说明 | +| ----------- | ------------------------------------------------------------------------------------------------- | +| `APIString` | 支持嵌套键值对的纯文本字符串,需要 CSM API String Arguments Support 插件 | +| `${变量名}` | INI 配置变量引用,需要 CSM INI Static Variable Support 插件 | + +> **注意**:接口文档中对 `String` 类型数据统一使用 `APIString` 标注(不直接写 `SafeStr`),因为 `SafeStr` 正是 `APIString` 针对 `String` 类型的内部编码实现。 + +--- + +## 状态广播接口 + +以下是本模块**发出**的消息,用于通知订阅者内部状态变化。 + +### `Error Occurred` + +**默认广播类型**:`Interrupt` + +模块内部发生错误时广播。 + +- **参数**:`ErrStr` — `Error Cluster`:错误信息 + +--- + +## 配置说明 + +> 推荐使用 [CSM INI Static Variable Support](https://github.com/NEVSTOP-LAB/CSM-INI-Static-Variable-Support) 管理配置参数,通过 `${变量名}` 语法在消息中直接引用 INI 键值。 + +### INI 文件配置 + +```ini +[dashboard] +Size.Cols = 8 ; 仪表盘网格列数 +Size.Rows = 4 ; 仪表盘网格行数 +``` + +--- + +## 调用限制与注意事项 + +> [!IMPORTANT] +> +> - `API: Set TagDB` **必须**在 `API: Set Tags` 和 `API: Snapshot Tags` 之前调用。 +> - 本模块为**单例**——同一时间不可运行多个实例。 +> - 仪表盘的网格布局由 INI 配置文件中的 `[dashboard]` 节控制,行列数决定了可同时展示的标签数量上限。 + +--- + +## 使用示例 + +> 将 `[模块名称]` 替换为启动模块 VI 时实际使用的名称。 + +### 基本生命周期 + +```csm +// 初始化 TagDB 连接并设置要显示的标签 +API: Set TagDB >> MyTagDB -@ TagDashboard +API: Set Tags >> TagA,TagB,TagC -@ TagDashboard + +// 手动刷新标签快照 +API: Snapshot Tags -@ TagDashboard + +// 控制面板显示 +UI: Front Panel State >> Open -@ TagDashboard +UI: Front Panel State >> Close -@ TagDashboard +``` + +### 订阅错误广播 + +```csm +// 将 TagDashboard 的 "Error Occurred" 路由到日志模块 +Error Occurred@TagDashboard >> API: OnError@Logger -> + +// 取消订阅 +Error Occurred@TagDashboard >> API: OnError@Logger -> +``` + +--- + +## 模块交互图 + +```mermaid +stateDiagram-v2 +direction LR +调用模块 --> TagDashboard : "API: Set TagDB" +调用模块 --> TagDashboard : "API: Set Tags" +调用模块 --> TagDashboard : "API: Snapshot Tags" +TagDashboard --> 处理模块 : "Error Occurred >> API: OnError" +``` + +--- + +## 备注 + +- 仪表盘布局(行列数)由 `csmapp.ini` 中的 `[dashboard]` 节配置,启动时自动加载。 +- `API: Snapshot Tags` 会遍历所有已注册标签并刷新前面板显示,适用于定时或手动触发的一键刷新场景。 + +--- + +- _完整 CSM 语法参考:_ +- _CSM Wiki:_ diff --git a/TagDashboard/TagDashboard.vi b/TagDashboard/TagDashboard.vi index 06cc0d4..5892a66 100644 Binary files a/TagDashboard/TagDashboard.vi and b/TagDashboard/TagDashboard.vi differ diff --git a/TagDashboard/_support/Dashboard to Center.vi b/TagDashboard/_support/Dashboard to Center.vi index b0988fe..678a5e0 100644 Binary files a/TagDashboard/_support/Dashboard to Center.vi and b/TagDashboard/_support/Dashboard to Center.vi differ diff --git a/TagDashboard/_support/DataUnit2.vi b/TagDashboard/_support/DataUnit2.vi index c0d2c7f..1bb979e 100644 Binary files a/TagDashboard/_support/DataUnit2.vi and b/TagDashboard/_support/DataUnit2.vi differ diff --git a/DisplayWindow/CSM-TagDBDisplayWnd.lvlib b/TagDisplayContainer/CSM-TagDBDisplayContainer.lvlib similarity index 84% rename from DisplayWindow/CSM-TagDBDisplayWnd.lvlib rename to TagDisplayContainer/CSM-TagDBDisplayContainer.lvlib index f16fe51..83c81a3 100644 --- a/DisplayWindow/CSM-TagDBDisplayWnd.lvlib +++ b/TagDisplayContainer/CSM-TagDBDisplayContainer.lvlib @@ -5,8 +5,9 @@ 1.0.0.0 true - + + - + diff --git a/TagDisplayContainer/CSM-TagDisplayContainer.lvlib b/TagDisplayContainer/CSM-TagDisplayContainer.lvlib deleted file mode 100644 index ec3a721..0000000 --- a/TagDisplayContainer/CSM-TagDisplayContainer.lvlib +++ /dev/null @@ -1,11 +0,0 @@ - - - )!#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!(]!!!*Q(C=\>8"<2MR%!813:!!O;K$1#V-#WJ",5Q,OPKI&K9&N;!7JA7VI";=JQVBZ"4F%#-ZG/O26X_ZZ$/87%>M\6P%FXB^VL\_NHV=@X<^39O0^N(_<8NZOEH@@=^_CM?,3)VK63LD->8LS%=_]J'0@/1N<XH,7^\SFJ?]Z#5P?=F,HP+5JTTF+5`Z>MB$(P+1)YX*RU2DU$(![)Q3YW.YBG>YBM@8'*\B':\B'2Z>9HC':XC':XD=&M-T0--T0-.DK%USWS(H'2\$2`-U4`-U4`/9-JKH!>JE<?!W#%;UC_WE?:KH?:R']T20]T20]\A=T>-]T>-]T?/7<66[UTQ//9^BIHC+JXC+JXA-(=640-640-6DOCC?YCG)-G%:(#(+4;6$_6)]R?.8&%`R&%`R&)^,WR/K<75?GM=BZUG?Z%G?Z%E?1U4S*%`S*%`S'$;3*XG3*XG3RV320-G40!G3*D6^J-(3D;F4#J,(T\:<=HN+P5FS/S,7ZIWV+7.NNFC<+.<GC0819TX-7!]JVO,(7N29CR6L%7,^=<(1M4#R*IFV][.DX(X?V&6>V&G>V&%>V&\N(L@_Z9\X_TVONVN=L^?Y8#ZR0J`D>$L&]8C-Q_%1_`U_>LP>WWPAO_0NB@$TP@4C`%`KH@[8`A@PRPA=PYZLD8Y![_ML^!!!!!! - 536903680 - 1.0.0.0 - true - - - - - diff --git a/TagDisplayContainer/DefaultPage.vi b/TagDisplayContainer/DefaultPage.vi new file mode 100644 index 0000000..e82a5ac Binary files /dev/null and b/TagDisplayContainer/DefaultPage.vi differ diff --git a/TagDisplayContainer/TagDisplayContainer.md b/TagDisplayContainer/TagDisplayContainer.md new file mode 100644 index 0000000..8fe9eee --- /dev/null +++ b/TagDisplayContainer/TagDisplayContainer.md @@ -0,0 +1,238 @@ +# `TagDisplayContainer` — CSM 模块接口文档 + +--- + +## 功能简述 + +`TagDisplayContainer` 是一个 CSM UI 模块,用于在一个容器前面板中管理和切换多个子视图(SubVI 页面)。它基于 TagDB 的标签数据驱动视图切换,支持预定义页面、动态插入/移除视图以及视图列表查询。 + +模块核心功能包括:绑定 TagDB 数据源、按标签值自动或手动切换页面、动态加载自定义 VI 作为子页面、管理视图生命周期。 + +--- + +## 模块信息 + +| 属性 | 值 | +| -------------- | ----------------------------------------------- | +| LabVIEW 版本 | ≥ 2020 | +| 支持的操作系统 | Windows | +| 支持 RT | ❌ 不支持 | +| 支持 64-bit | ✅ 支持 | +| 所属模块组 | CSM-TagDBDisplayContainer.lvlib | + +--- + +## 依赖项 + +| 依赖 | 类型 | +| --------------------------------------------------------------------------------------------------- | ---- | +| [Communicable-State-Machine](https://github.com/NEVSTOP-LAB/Communicable-State-Machine) | 必须 | +| [CSM-API-String-Arguments-Support](https://github.com/NEVSTOP-LAB/CSM-API-String-Arguments-Support) | 必须 | +| [CSM-INI-Static-Variable-Support](https://github.com/NEVSTOP-LAB/CSM-INI-Static-Variable-Support) | 可选 | +| [TagDB](https://github.com/NEVSTOP-LAB/TagDB) | 必须 | +| [TagDB RefManager](https://github.com/NEVSTOP-LAB/TagDB) | 必须 | + +--- + +## API 接口(消息接口) + +以下是外部调用者可以发送给本模块的消息。 + +### `API: Set TagDB` + +绑定目标 TagDB 引用,建立与 TagDB 服务器的连接。 + +- **参数**:`APIString` — `String`:TagDB 引用名称或标识符 +- **响应**:N/A + +### `API: Start` + +启动容器,加载默认页面并开始响应标签变化。 + +- **参数**:N/A +- **响应**:N/A + +### `API: Stop` + +停止容器,卸载当前页面并清理资源。 + +- **参数**:N/A +- **响应**:N/A + +### `API: Switch` + +根据指定的页面名称或路径切换到对应页面。 + +- **参数**:`APIString` — `String`:目标页面名称或 VI 路径 +- **响应**:N/A + +### `API: Switch2` + +切换到指定页面(与 `API: Switch` 类似的备用切换接口,支持不同的页面匹配策略)。 + +- **参数**:`APIString` — `String`:目标页面名称或 VI 路径 +- **响应**:N/A + +### `API: List Views` + +列出当前容器中所有已加载的视图页面。 + +- **参数**:N/A +- **响应**:`APIString` — `String`:以逗号分隔的视图名称列表 + +### `API: Set Views` + +批量设置容器的视图集合(预定义页面 + 动态插入页面)。 + +- **参数**:`APIString` — `String`:视图配置字符串(格式:键值对,如 `View1=path/to/vi1.vi;View2=path/to/vi2.vi`) +- **响应**:N/A + +### `API: Insert View VI` + +向容器中动态插入一个新的子 VI 视图。 + +- **参数**:`APIString` — `String`:要插入的 VI 路径 +- **响应**:N/A + +### `UI: Front Panel State` + +控制本模块前面板的显示状态。 + +- **参数**:`APIString` — `Enum`:`Open`、`Close` 或 `Minimize` +- **响应**:N/A + +### `UI: Cursor Set` + +设置前面板光标样式。 + +- **参数**:`APIString` — `Enum`:光标类型名称(如 `Busy`、`Default`) +- **响应**:N/A + +### 参数类型说明 + +| 类型 | 说明 | +| ----------- | ------------------------------------------------------------------------------------------------- | +| `APIString` | 支持嵌套键值对的纯文本字符串,需要 CSM API String Arguments Support 插件 | +| `${变量名}` | INI 配置变量引用,需要 CSM INI Static Variable Support 插件 | + +> **注意**:接口文档中对 `String` 类型数据统一使用 `APIString` 标注(不直接写 `SafeStr`),因为 `SafeStr` 正是 `APIString` 针对 `String` 类型的内部编码实现。 + +--- + +## 状态广播接口 + +以下是本模块**发出**的消息,用于通知订阅者内部状态变化。 + +### `Error Occurred` + +**默认广播类型**:`Interrupt` + +模块内部发生错误时广播。 + +- **参数**:`ErrStr` — `Error Cluster`:错误信息 + +### `Action: Switch Page` + +**默认广播类型**:`Status` + +页面切换完成时广播,携带新页面信息。 + +- **参数**:`APIString` — `String`:切换到的页面名称或路径 + +### `Action: Insert New VI` + +**默认广播类型**:`Status` + +新 VI 视图插入完成时广播。 + +- **参数**:`APIString` — `String`:插入的 VI 路径或名称 + +> - 使用 **`Status`** 表示正常的、预期中的状态转换。 +> - 使用 **`Interrupt`** 表示需要立即关注的错误或事件。 +> - 广播类型是发布方的默认行为;订阅方可通过 `->` 语法修改接收类型。 + +--- + +## 调用限制与注意事项 + +> [!IMPORTANT] +> +> - `API: Set TagDB` **必须**在 `API: Start` 和其他任何操作 API 之前调用。 +> - 本模块为**单例**——同一时间不可运行多个实例。 +> - 使用 `API: Set Views` 批量配置视图时,会覆盖之前通过 `API: Insert View VI` 动态插入的视图。 +> - 子 VI 页面必须兼容 CSM 框架的 SubVI 嵌入规范,确保前面板尺寸和接口匹配。 + +--- + +## 使用示例 + +> 将 `[模块名称]` 替换为启动模块 VI 时实际使用的名称。 + +### 基本生命周期 + +```csm +// 初始化并启动容器 +API: Set TagDB >> MyTagDB -@ TagDisplayContainer +API: Start -@ TagDisplayContainer + +// 切换到指定页面 +API: Switch >> PageName -@ TagDisplayContainer + +// 动态插入新视图 +API: Insert View VI >> C:\Views\CustomView.vi -@ TagDisplayContainer + +// 列出当前所有视图 +API: List Views -@ TagDisplayContainer + +// 停止容器 +API: Stop -@ TagDisplayContainer +``` + +### 批量设置视图 + +```csm +// 使用键值对格式批量设置 +API: Set Views >> Default=DefaultPage.vi;Chart=ChartView.vi;Table=TableView.vi -@ TagDisplayContainer +``` + +### 订阅状态广播 + +```csm +// 监听页面切换事件 +Action: Switch Page@TagDisplayContainer >> API: OnPageSwitched@Logger -> + +// 监听新VI插入事件 +Action: Insert New VI@TagDisplayContainer >> API: OnViewInserted@Logger -> + +// 取消订阅 +Action: Switch Page@TagDisplayContainer >> API: OnPageSwitched@Logger -> +Action: Insert New VI@TagDisplayContainer >> API: OnViewInserted@Logger -> +``` + +--- + +## 模块交互图 + +```mermaid +stateDiagram-v2 +direction LR +调用模块 --> TagDisplayContainer : "API: Set TagDB / Start" +调用模块 --> TagDisplayContainer : "API: Switch / Set Views" +调用模块 --> TagDisplayContainer : "API: Insert View VI" +TagDisplayContainer --> 处理模块 : "Action: Switch Page >> API: OnPageSwitched" +TagDisplayContainer --> 处理模块 : "Action: Insert New VI >> API: OnViewInserted" +TagDisplayContainer --> 处理模块 : "Error Occurred >> API: OnError" +``` + +--- + +## 备注 + +- 容器默认页面由 `DefaultPage.vi` 提供,在 `API: Start` 时自动加载。 +- `ViewMgr` 类负责管理所有子视图(预定义页面和动态插入页面)的生命周期。 +- `Action: Remove Inserted VI` 由模块内部触发,用于清理被移除的动态视图,不对外暴露为 API。 + +--- + +- _完整 CSM 语法参考:_ +- _CSM Wiki:_ diff --git a/TagDisplayContainer/TagDisplayContainer.vi b/TagDisplayContainer/TagDisplayContainer.vi index 048be6c..62184b5 100644 Binary files a/TagDisplayContainer/TagDisplayContainer.vi and b/TagDisplayContainer/TagDisplayContainer.vi differ diff --git a/TagDisplayContainer/_support/Clear Errors.vi b/TagDisplayContainer/_support/Clear Errors.vi index c409793..9649098 100644 Binary files a/TagDisplayContainer/_support/Clear Errors.vi and b/TagDisplayContainer/_support/Clear Errors.vi differ diff --git a/TagDisplayContainer/_support/Get Predefined-Page VI.vi b/TagDisplayContainer/_support/Get Predefined-Page VI.vi new file mode 100644 index 0000000..8c031c1 Binary files /dev/null and b/TagDisplayContainer/_support/Get Predefined-Page VI.vi differ diff --git a/TagDisplayContainer/_support/Query Page VI Path.vi b/TagDisplayContainer/_support/Query Page VI Path.vi new file mode 100644 index 0000000..30df23b Binary files /dev/null and b/TagDisplayContainer/_support/Query Page VI Path.vi differ diff --git a/TagDisplayContainer/_support/RemovePage.vi b/TagDisplayContainer/_support/RemovePage.vi new file mode 100644 index 0000000..b6b6f29 Binary files /dev/null and b/TagDisplayContainer/_support/RemovePage.vi differ diff --git a/TagDisplayContainer/_support/SetViews.vi b/TagDisplayContainer/_support/SetViews.vi new file mode 100644 index 0000000..a0a4991 Binary files /dev/null and b/TagDisplayContainer/_support/SetViews.vi differ diff --git a/TagDisplayContainer/_support/ViewMgr.lvclass b/TagDisplayContainer/_support/ViewMgr.lvclass new file mode 100644 index 0000000..bc3e4ef --- /dev/null +++ b/TagDisplayContainer/_support/ViewMgr.lvclass @@ -0,0 +1,59 @@ + + + CSM-TagDBDisplayContainer.lvlib + ../../CSM-TagDBDisplayContainer.lvlib + )!#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!(]!!!*Q(C=\>8"<2MR%!813:!!O;K$1#V-#WJ",5Q,OPKI&K9&N;!7JA7VI";=JQVBZ"4F%#-ZG/O26X_ZZ$/87%>M\6P%FXB^VL\_NHV=@X<^39O0^N(_<8NZOEH@@=^_CM?,3)VK63LD->8LS%=_]J'0@/1N<XH,7^\SFJ?]Z#5P?=F,HP+5JTTF+5`Z>MB$(P+1)YX*RU2DU$(![)Q3YW.YBG>YBM@8'*\B':\B'2Z>9HC':XC':XD=&M-T0--T0-.DK%USWS(H'2\$2`-U4`-U4`/9-JKH!>JE<?!W#%;UC_WE?:KH?:R']T20]T20]\A=T>-]T>-]T?/7<66[UTQ//9^BIHC+JXC+JXA-(=640-640-6DOCC?YCG)-G%:(#(+4;6$_6)]R?.8&%`R&%`R&)^,WR/K<75?GM=BZUG?Z%G?Z%E?1U4S*%`S*%`S'$;3*XG3*XG3RV320-G40!G3*D6^J-(3D;F4#J,(T\:<=HN+P5FS/S,7ZIWV+7.NNFC<+.<GC0819TX-7!]JVO,(7N29CR6L%7,^=<(1M4#R*IFV][.DX(X?V&6>V&G>V&%>V&\N(L@_Z9\X_TVONVN=L^?Y8#ZR0J`D>$L&]8C-Q_%1_`U_>LP>WWPAO_0NB@$TP@4C`%`KH@[8`A@PRPA=PYZLD8Y![_ML^!!!!!! + 536903680 + 1.0.0.1 + true + true + )!#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!":)5F.31QU+!!.-6E.$4%*76Q!!%:A!!!3Q!!!!)!!!%8A!!!!U!!!!!B^$5UUN6'&H2%*%;8.Q<'&Z1W^O>'&J<G6S,GRW<'FC$V:J:8>.:X)O<(:D<'&T=Q!!!+!A!)!!!$!!!#A!!!!!!!!%!!-!0!#]!"^!A!)!!!!!!1!"!!<`````!!!!!!!!!!!!!!!!MJ8+L?3$+U;_P(2+P?E6K1!!!!Q!!!!1!!!!!,*`&2-U7^R-OUY<,`J7)(\5(9T:DQ#S"/G!#:DM_%*_!!!!!!!!!!"7]GA3A13F4[/!4`Z%]4==!1!!!0`````5(9T:DQ#S"/G!#:DM_%*_!!!!%%BTG#"@Y'RS'N!'Z@&I.79!!!!%!!!!!!!!!#=!!5R71U-!!!!"!!*735R#!!!!!&"53$!!!!!&!!%!!1!!!!!#!!-!!!!!!A!"!!!!!!!A!!!!'(C=9W"D9'JAO-!!R)R!&J-'E07"19!"!$IB".9!!!!3!!!!#(C=9W"CY!"#"A!!6A!4!!!!!!"+!!!"'(C=9W$!"0_"!%AR-D!Q81$3,'DC9"L'JC<!:3YOO[$CT&!XMM+%A?\?![3:1(*1.3RA\T!QH1(C%_DG]%0J#UBC!)K"+0Y!!!!!!!Q!!6:*2&-!!!!!!!-!!!&W!!!$*(C=+W"E9-AUND!\!+3:A6C"I9%B/4]FF:="S'?!A$>-$"3$!+BZ7GDCBA=/JQ'"(L^]#ZD@\;,#UFSDQM.5SP?`2)5DY!6)M0E)R_&ODZTDDD:A*2R:$&E-!@]$-ZK0])"V)_H09A"K%Q&BK%Y?.0.^6&A-$T25+D/5#B^P.''%O#)1KJDF-%(^10="T?!Y_*#F>S*9I".%>I9Q3BRX9>12!\*\?2A$%?Z'=V^9.^"879RB-0FONO-/'C$W=1=2#*5"I3IA6!')WA%CYAZD#^?VL_`N9A83<%BC$F$=!-3A?)6B01:'"J#(G9#Q!UD`_@``PQV1B!EKJAA6!\&P1NG-$0:Q0</B9BJ)ZPS%[U'ICY;+/3#Z"W1(S+;^1&I$SDY-:4>!X1]39Q5;-A(+ZA'S#["M93"\!Z1N"71,1.G+109(+&M.SDY!D66UWNH@R25Z\%$J'J<'/9%Y/<@!Q%#P/KQ7S/9!]1O3SU"=!!07C;!!!!!!!(Y!!!$=?*RT9'"AS$3W-'M!UMS-$!Q+$!U-S@EJK1R)9!M$<N$NIM,2\;0#]N`AP_%,E%$T%1\$E[U(_+==\$RR')^'+&D\_NYOI,5-D%BC$E"=$"1"C4%"-3]1``H``\]$6.\:X]56X8UAN:R!H*R<9'#A6RV7#W1$!0(4(CE!!!!!!']!!!$9?*RT9'"AS$3W-'M!UMS-$!Q+$!U-S@EJK1R)9!M$<N$NIM,SPU3&Y\`"#R#X_1D(94SK-=(;V`>W!;VF9%13=Q$C%K!)3)Q*C,G"_-````]>I0,/`C[O[/Y$K?5!YO3#Z$+^[L";!-$P'+M!!!!!$C!"A!!!!!9S-#YQ,D%!!!!!!!!-)!#!!!!!"$)Q,D!!!!!!$C!"A!!!!!9S-#YQ,D%!!!!!!!!-)!#!!!!!"$)Q,D!!!!!!$C!"A!!!!!9S-#YQ,D%!!!!!!!!5!1!!!068.9*Z*K+-,H.34A:*/:U!!!!.!!!!!!!!!!!!!!!!!!!!!!!!!)$`````A!!!!9!!!!'!!!!"A!!!!9!!!!'!!!!"A!!!!9!!!!'!!!!"A!!!!9!!!!'!9!!"A:A!!99'!!'9!9!"I!"!!<!!Q!'M!U!"IQ\!!;$V1!'A+M!"I$6!!;!KQ!'A.5!"I#L!!;!V1!'9+Y!"BD9!!9'Y!!'!9!!"`````Q!!"!$```````````````````````````````````````````]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!!&"1!!!!!!!!!!!!!!!!!!!!!!!!!!``]!!!!!!!!&L6G$L15!!!!!!!!!!!!!!!!!!!!!!!$``Q!!!!!&L6EP,S]PA[U&!!!!!!!!!!!!!!!!!!!!!0``!!!&L6EP,S]P,S]P,Y/N"1!!!!!!!!!!!!!!!!!!``]!AVEP,S]P,S]P,S]P,S_$L1!!!!!!!!!!!!!!!!$``Q":73]P,S]P,S]P,S]P,`[$!!!!!!!!!!!!!!!!!0``!&G$AVEP,S]P,S]P,`\_`FE!!!!!!!!!!!!!!!!!``]!79/$AY.:,S]P,`\_`P\_71!!!!!!!!!!!!!!!!$``Q":AY/$AY/$7;X_`P\_`PZ:!!!!!!!!!!!!!!!!!0``!&G$AY/$AY/$`P\_`P\_`FE!!!!!!!!!!!!!!!!!``]!79/$AY/$AY0_`P\_`P\_71!!!!!!!!!!!!!!!!$``Q":AY/$AY/$A`\_`P\_`PZ:!!!!!!!!!!!!!!!!!0``!&G$AY/$AY/$`P\_`P\_`FE!!!!!!!!!!!!!!!!!``]!79/$AY/$AY0_`P\_`P\_71!!!!!!!!!!!!!!!!$``Q#$AY/$AY/$A`\_`P\_`I/$!!!!!!!!!!!!!!!!!0``!!":79/$AY/$`P\_`I/N71!!!!!!!!!!!!!!!!!!``]!!!!!79/$AY0_`I/$71!!!!!!!!!!!!!!!!!!!!$``Q!!!!!!!&G$AY/$,Q!!!!!!!!!!!!!!!!!!!!!!!0``!!!!!!!!!!":,Q!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````````````````````````!!!!!A!"!!!!!!!-!!&'5%B1!!!!!!!$!!!!"!!!!!!!!!,M!!!'*8C=N:204"."'-7`+1N/%?+50U).J)6-+V&*$&&"`%>E-;*)-*8%A[FO<%549AE&IR@AM#(BQ%F4%QT?A+-($BZ.3.0,(O!EC2QW=->Y15REOX[TJ<NNQ=L&(D<N:N\\:N\\>1$+GFC^+QU4"B#WAV`[$#C0;!1AW5JB`R/="D:)@A/J]2)$OOAAWX#F39-"&2%N3-`,-`!$6ZNLZC1ME3$<R+6FT)NGZ1;=5$6Y\\H$>=9`.@#:UKRN.@D9,%G\(H,@,JV69TA2V"<R^,33."#Z3:,5ZA(F:64FYKW\F8IN4\="4.9K2\F_'BVR^IJF32+1)EN:3U$,&FB?8H:%HIQI;'WD1WB3;,N/%E5U6<,7'/@[/5N4<GFQTHJWDOR,PR6\&[*#;<7M-:3C\H8WS+HM,.FH>&G[L;UNV/&T8`@=A"KOX[2?OBHZ6FJZ8`U-"%DS-468T1^#\_E8.6BLK\!*LJ&!*W%B`"ESY)SKO:[!H@!<7,#KE,*68"66E&N7&7ZZBI(4R=)`OJ#F:(.D^`"Y@#Q[[I]^]T]>6O*R`]DICV@+7.1@5=;5ASV>ET6XOUB!$,-)A4K19"TG=B/0Q?,C)I;!4U>[(;6V8,>VV>:R0NKJ2ZT5R61HP2O9HPTLQ:")-.$JSA@XL!.O'Y,L998<SA0XYH]!^R,S.&%!,C1A$-8!<=_)=M!.ISI'R=$N1-VE(LBBH"/$)Y"\_3#Y93A%.Z&)Z/EQ_EY<8)G1$,DKGLFH\AF]NUU>#`S3A_]+^C(O'3*ODGU==B?(Z/(;`8>=LRQ"VW-$SF$UHD*3U!);SWA]Z7\D_P%=.'OB$"\"O[TRT`RY-M:K%UR>E&1OXL"!ZCDY(HA,Q:-(=JPO/94AM&0:\K(J9YKX,9!LPG=!,AF/FV#POT_H;<K2'L=P:BLCMFFM!?N"WUE$;O8OKF87CVOOI,WUB]XDXQ$`%3@J0.V*@L7P\G3@L648)%2/]4E@L@]$!^0)S!!!!!1!!!!H!!!!"!!!!!!!!!!-!!&#2%B1!!!!!!!$!!!!"!!!!!!!!!"C!!!!=HC=9W"AS"/190L(50?8A5HA+Z!B`:?"7>#0]4=$![?@Q'%AT3AA#237`=P!,KA.&N9_IMP"!!7K<)Q=EBS("4H!-BQN'AT````H_(LE'FT&%2]Y5W770)=%!"2C'1!!!!!!!!1!!!!(!!!#DA!!!!=!!!!B8WZJ8URB=X2,<G^X<E^X<GFO:UR71WRB=X.$<(6T>'6S!!!!8#!!A!!!!!!"!!A!-0````]!!1!!!!!!1!!!!!%!/%"1!!!Q1V..,62B:U2#2'FT='RB?5.P<H2B;7ZF=DJ7;76X47>S,GRW9WRB=X.@.4-W-4%W!!!"!!!!!!!!!!!!'UR71WRB=X.1=GFW982F2'&U962J<76T>'&N=!!!!"EA!)!!!!!!!1!&!!=!!!%!!/:.-:5!!!!!!!!!*ER71WRB=X.1=GFW982F2'&U95RB=X2"=("M;76E6'FN:8.U97VQ!!!!'3!!A!!!!!!"!!5!"Q!!!1!!ZEURF1!!!!!!!!!;4&:$<'&T=V"S;8:B>'6%982B6(FQ:52F=W-!!!";)!#!!!!!!!%!#!!Q`````Q!"!!!!!!!_!!!!!A!-1&-(5'&H:5VB=!!K1&!!!1!!)5.443V597>%1E2J=X"M98F$<WZU97FO:8)[6GFF>UVH=A!"!!%!!!!!!!!!(ER71WRB=X.1=GFW982F2'&U952G<(2%982B5WF[:1!!!"EA!)!!!!!!!1!&!!-!!!%!!!!!!!1!!!!!!!!!'ER71WRB=X.1=GFW982F2'&U952G<(2%982B!!!!7C!!A!!!!!!#!!R!5Q>197>F47&Q!#J!5!!"!!!B1V..,62B:U2#2'FT='RB?5.P<H2B;7ZF=DJ7;76X47>S!!%!!3!!A!!!!!!"!!1!!!!"!!!!!!!!!!!!!!!!!"J-6E.M98.T5(*J>G&U:52B>'&597*0=G2F=A!!!#EA!)!!!!!!!A!&!!=!!!Q!1!!"`````Q!!!!%!!1!!!!%!!!!!!!!!!!!!!!!!"!!$!!I!!!!%!!!!3!!!!#A!!!!#!!!%!!!!!!-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"&!!!!:VYH)V045P$1""^S>9G<2.<[]>.T-G$I#$_A7#+NU"ICG?XT39M,%H)<KO^_3@]CZ\<@_#E(XDQ)I]:?/].<W9!8-%,5S@BB9BZD2,<\`DR#Q#\C>,Y@M;,S@.%[FLR>636BMN3.!^KJ?2]_#L&?VSU<+'YVI-D8RC&OT#""6R(;KG.;))K$X:$1>X)&4=CS,DB/#'ADQSQ.L#*M!0&%TLIB1Z9LAKYY3?LJG9PC#L(C.):OH$AMG77UWR+8\1<_]R]:*325&Q0!^T_]QY<V,JNIWE8<X2#"S]5%_!51\*<D%A\QD\AL`,LH/WQ@]D#G"2A(+<_6"23GW9^YX-FY*((;,%((_?YQ#764]!0W]^)RQ!!!*5!!1!#!!-!"1!!!&A!%1!!!!!!%1$R!/5!!!"L!"%!!!!!!"%!]1$F!!!!@A!2!!!!!!!2!0%!Z1!!!*'!!!1#A!!!%1$R!/5!!!#4A!#!!)!!!"%!]1$F%EVJ9X*P=W^G>#":95BF;3"632*.;7.S<X.P:H1A77&):7EA65E347FD=G^T<W:U)&FB3'6J)&6*!4!"-!!!!&*45E-.#A!$4&:$1UR#6F=!!"'9!!!%M!!!!#!!!"&Y!!!!!!!!!!!!!!!A!!!!.!!!"+1!!!!?4%F#4A!!!!!!!!&Y4&:45A!!!!!!!!'-5F242Q!!!!!!!!'A1U.46!!!!!!!!!'U4%FW;1!!!!!!!!()1U^/5!!!!!!!!!(=6%UY-!!!!!%!!!(Q2%:%5Q!!!!!!!!)94%FE=Q!!!!!!!!)M6EF$2!!!!!)!!!*!>G6S=Q!!!!1!!!*]5U.45A!!!!!!!!,A2U.15A!!!!!!!!,U35.04A!!!!!!!!-);7.M/!!!!!!!!!-=1V"$-A!!!!!!!!-Q4%FG=!!!!!!!!!.%2F"&?!!!!!!!!!.92F")9A!!!!!!!!.M2F"421!!!!!!!!/!6F"%5!!!!!!!!!/54%FC:!!!!!!!!!/I1E2&?!!!!!!!!!/]1E2)9A!!!!!!!!011E2421!!!!!!!!0E6EF55Q!!!!!!!!0Y2&2)5!!!!!!!!!1-466*2!!!!!!!!!1A3%F46!!!!!!!!!1U6E.55!!!!!!!!!2)2F2"1A!!!!!!!!2=!!!!!0````]!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Y!!!!!!!!!!$`````!!!!!!!!!.Q!!!!!!!!!!0````]!!!!!!!!!]!!!!!!!!!!!`````Q!!!!!!!!$Y!!!!!!!!!!$`````!!!!!!!!!31!!!!!!!!!!0````]!!!!!!!!",!!!!!!!!!!#`````Q!!!!!!!!&1!!!!!!!!!!$`````!!!!!!!!!7A!!!!!!!!!!0````]!!!!!!!!"O!!!!!!!!!!!`````Q!!!!!!!!()!!!!!!!!!!(`````!!!!!!!!!U1!!!!!!!!!!P````]!!!!!!!!$S!!!!!!!!!!%`````Q!!!!!!!!1]!!!!!!!!!!@`````!!!!!!!!"&!!!!!!!!!!#0````]!!!!!!!!%9!!!!!!!!!!*`````Q!!!!!!!!2U!!!!!!!!!!L`````!!!!!!!!")1!!!!!!!!!!0````]!!!!!!!!%G!!!!!!!!!!!`````Q!!!!!!!!3Q!!!!!!!!!!$`````!!!!!!!!"-1!!!!!!!!!!0````]!!!!!!!!&3!!!!!!!!!!!`````Q!!!!!!!!F-!!!!!!!!!!$`````!!!!!!!!#61!!!!!!!!!!0````]!!!!!!!!*:!!!!!!!!!!!`````Q!!!!!!!!FM!!!!!!!!!!$`````!!!!!!!!$&Q!!!!!!!!!!0````]!!!!!!!!-:!!!!!!!!!!!`````Q!!!!!!!!RM!!!!!!!!!!$`````!!!!!!!!$(Q!!!!!!!!!!0````]!!!!!!!!-B!!!!!!!!!!!`````Q!!!!!!!!TM!!!!!!!!!!$`````!!!!!!!!$01!!!!!!!!!!0````]!!!!!!!!0C!!!!!!!!!!!`````Q!!!!!!!!_1!!!!!!!!!!$`````!!!!!!!!$ZA!!!!!!!!!!0````]!!!!!!!!0R!!!!!!!!!#!`````Q!!!!!!!"$=!!!!!!N7;76X47>S,G.U<!!!!!! + + +!!!!!B^$5UUN6'&H2%*%;8.Q<'&Z1W^O>'&J<G6S,GRW<'FC$V:J:8>.:X)O<(:D<'&T=V"53$!!!!!!!!!!!!!!!!-!!1!!!!!!!!%!!!!"!$B!5!!!-%.443V597>%1E2J=X"M98F$<WZU97FO:8)[6GFF>UVH=CZM>G.M98.T8T5T.D%R.A!!!1!!!!!!!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!#!!A!!!!!!!!!!!!!!!!!!"!!!!!!!!!!!!!!%!/%"1!!!Q1V..,62B:U2#2'FT='RB?5.P<H2B;7ZF=DJ7;76X47>S,GRW9WRB=X.@.4-W-4%W!!!"!!!!!!!"`````A!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!#!!A!!!!!!!!!!!!!!!!!!"!!!!!!!"!!!!!!)!$%"4"V"B:W6.98!!<A$RZEURF1!!!!-@1V..,62B:U2#2'FT='RB?5.P<H2B;7ZF=CZM>GRJ9A^7;76X47>S,GRW9WRB=X-,6GFF>UVH=CZD>'Q!+E"1!!%!!"V$<(6T>'6S)'^G)'.M98.T)("S;8:B>'5A:'&U91!"!!%!!!!"`````S!!A!!!!!!"!!1!!!!"!!!!!!!!!!!!!!%/4'&C6EF&6S"09GJF9X1!5&2)-!!!!!!!!!!!!#!!A!!!!!!!!!!!!!!"!!!!0E.443V597>%1E2J=X"M98F$<WZU97FO:8)O<(:M;7)[6GFF>UVH=CZM>G.M98.T8T5T.D%R.CZM>G.M98.T + + + false + 1.0.0.0 + + 2 + + + + )!#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!&]!!!!#Q!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!"B!=!!)!!!!!A!!#F"B:W6733"3:79!!%:!=!!?!!!R(U.443V597>%1E2J=X"M98F$<WZU97FO:8)O<(:M;7)06GFF>UVH=CZM>G.M98.T!!N7;76X47>S)'^V>!!A1&!!!Q!!!!%!!B.F=H*P=C"J<C!I<G]A:8*S<X)J!!Z!-0````]%5'&H:1!!2E"Q!"Y!!$%@1V..,62B:U2#2'FT='RB?5.P<H2B;7ZF=CZM>GRJ9A^7;76X47>S,GRW9WRB=X-!#F:J:8>.:X)A;7Y!!'%!]!!-!!-!"!!&!!9!"!!%!!1!"!!(!!1!#!!*!A!!?!!!$1A!!!!!!!!*!!!!$1M!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!2)!!!!1!!!.!!!!$!!!!!!!!!!!!!!"!!I!!!!! + -1 + 0 + true + 1 + 1 + 1107821056 + + + + )!#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!"A!!!!!A!%!!!!6!$Q!!Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"Y!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1!"!!!!!! + -1 + 0 + true + 1 + 1 + 1082143232 + + + )!#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!&K!!!!#A!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!%:!=!!?!!!R(U.443V597>%1E2J=X"M98F$<WZU97FO:8)O<(:M;7)06GFF>UVH=CZM>G.M98.T!!N7;76X47>S)'^V>!!51(!!#!!!!%%!!!:4>7*Q<GQ!!#"!5!!$!!!!!1!#%W6S=G^S)'FO)#BO<S"F=H*P=CE!2E"Q!"Y!!$%@1V..,62B:U2#2'FT='RB?5.P<H2B;7ZF=CZM>GRJ9A^7;76X47>S,GRW9WRB=X-!#F:J:8>.:X)A;7Y!!'%!]!!-!!-!"!!%!!5!"!!%!!1!"A!(!!1!"!!)!Q!!?!!!$1A!!!!!!!!!!!!!$1M!!!!!!!!!!!!!!!!!!")!!!!+!!!!!!!!!!!!!!!1!!!.!!!!$!!!!!!!!!!!!!!"!!E!!!!! + -1 + 0 + true + 1 + 1 + 1107821072 + + + )!#!!!!!!!)!"1!&!!!-!%!!!@````]!!!!"!!%!!!'A!!!!$1!-1#%'=X2B>(6T!!!,1!-!"'.P:'5!!""!-0````]'=W^V=G.F!!!71&!!!Q!!!!%!!AFF=H*P=C"P>81!"!!!!%:!=!!?!!!R(U.443V597>%1E2J=X"M98F$<WZU97FO:8)O<(:M;7)06GFF>UVH=CZM>G.M98.T!!N7;76X47>S)'^V>!!A1&!!!Q!!!!%!!B.F=H*P=C"J<C!I<G]A:8*S<X)J!"2!=!!)!!!!!A!!"V:*5(*P>']!%E!Q`````QB197>F4G&N:1!!%E"1!!)!"Q!)"U.M>8.U:8)!%E"!!!(`````!!E%2'&U91!!2E"Q!"Y!!$%@1V..,62B:U2#2'FT='RB?5.P<H2B;7ZF=CZM>GRJ9A^7;76X47>S,GRW9WRB=X-!#F:J:8>.:X)A;7Y!!'%!]!!-!!-!"!!%!!5!"!!%!!1!"!!'!!1!#A!,!Q!!?!!!$1A!!!!!!!!!!!!!$1M!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!B!!!!!3!!!.!!!!$!!!!!!!!!!!!!!"!!Q!!!!! + -1 + 0 + true + 1 + 1 + 1107821072 + + diff --git a/DisplayWindow/_test/page1.vi b/TagDisplayContainer/_test/page1.vi similarity index 100% rename from DisplayWindow/_test/page1.vi rename to TagDisplayContainer/_test/page1.vi diff --git a/DisplayWindow/_test/test-csm-tagdb-displaywnd.vi b/TagDisplayContainer/_test/test-csm-tagdb-displaywnd.vi similarity index 65% rename from DisplayWindow/_test/test-csm-tagdb-displaywnd.vi rename to TagDisplayContainer/_test/test-csm-tagdb-displaywnd.vi index 4e748c2..d27a778 100644 Binary files a/DisplayWindow/_test/test-csm-tagdb-displaywnd.vi and b/TagDisplayContainer/_test/test-csm-tagdb-displaywnd.vi differ diff --git a/_Example/2.vi b/_Example/2.vi new file mode 100644 index 0000000..b2fcd2a Binary files /dev/null and b/_Example/2.vi differ diff --git a/_Example/Example-tagDisplayContainer.vi b/_Example/Example-tagDisplayContainer.vi index fed55d3..d20a63a 100644 Binary files a/_Example/Example-tagDisplayContainer.vi and b/_Example/Example-tagDisplayContainer.vi differ diff --git a/_Example/SubVIEW1.vi b/_Example/SubVIEW1.vi index 79a6485..5f63847 100644 Binary files a/_Example/SubVIEW1.vi and b/_Example/SubVIEW1.vi differ diff --git a/csmapp.ini b/csmapp.ini new file mode 100644 index 0000000..45bc365 --- /dev/null +++ b/csmapp.ini @@ -0,0 +1,3 @@ +[dashboard] +Size.Cols = 8 +Size.Rows = 4 \ No newline at end of file