From 85939a9820af940a811cedf359a16458b80af9f1 Mon Sep 17 00:00:00 2001 From: Paul Thumfart <158182803+Dumdart@users.noreply.github.com> Date: Wed, 9 Sep 2026 16:52:06 +0200 Subject: [PATCH] Revert "Improve desktop GUI UX and observation history workflows" --- README.md | 22 +- docs/DESKTOP_UX.md | 283 ---------- docs/OBSERVATION_HISTORY.md | 29 +- docs/images/desktop-app.png | Bin 0 -> 85622 bytes docs/images/desktop-first-run-checklist.png | Bin 0 -> 12646 bytes docs/images/observation-history-after.png | Bin 0 -> 67308 bytes docs/images/observation-history-before.png | Bin 0 -> 40493 bytes docs/images/observation-history-settings.png | Bin 0 -> 51641 bytes docs/images/plugin_in_codex.png | Bin 0 -> 287808 bytes pyproject.toml | 1 - src/topicgate/assets/delete.svg | 7 + src/topicgate/assets/edit.svg | 4 + src/topicgate/assets/icons/broker.svg | 19 - src/topicgate/assets/icons/close.svg | 14 - src/topicgate/assets/icons/create.svg | 14 - src/topicgate/assets/icons/delete.svg | 17 - src/topicgate/assets/icons/edit.svg | 14 - src/topicgate/assets/icons/help.svg | 15 - src/topicgate/assets/icons/observer-tree.svg | 17 - src/topicgate/assets/icons/settings.svg | 14 - src/topicgate/gui/components/about_dialog.py | 3 - .../gui/components/broker_connection.py | 71 +-- .../gui/components/connection_controls.py | 3 - .../components/diagnostic_profile_editor.py | 4 - .../gui/components/event_history_widget.py | 168 +----- .../gui/components/expectation_editor.py | 77 +-- .../gui/components/health_inspector.py | 115 +--- .../gui/components/history_settings_widget.py | 81 +-- .../gui/components/mcp_setup_dialog.py | 3 - src/topicgate/gui/components/observer_tree.py | 119 ++-- .../gui/components/onboarding_panel.py | 3 - src/topicgate/gui/components/publish_pane.py | 6 +- .../gui/components/quantity_editor.py | 23 - .../gui/components/snapshot_panel.py | 41 +- .../components/stored_observations_dialog.py | 68 ++- .../gui/components/subscription_settings.py | 47 +- src/topicgate/gui/components/topic_details.py | 11 +- .../gui/components/topic_metadata.py | 28 +- src/topicgate/gui/icons.py | 26 +- src/topicgate/gui/main_view_model.py | 50 +- src/topicgate/gui/main_window.py | 265 +++------ src/topicgate/gui/theme.py | 19 +- .../presentation/snapshot_presentation.py | 2 +- tests/test_event_history_gui.py | 261 +-------- tests/test_gui.py | 512 +++--------------- tests/test_main_view_model.py | 56 +- tests/test_paths.py | 57 -- tests/test_snapshot_presentation.py | 4 +- 48 files changed, 416 insertions(+), 2177 deletions(-) delete mode 100644 docs/DESKTOP_UX.md create mode 100644 docs/images/desktop-app.png create mode 100644 docs/images/desktop-first-run-checklist.png create mode 100644 docs/images/observation-history-after.png create mode 100644 docs/images/observation-history-before.png create mode 100644 docs/images/observation-history-settings.png create mode 100644 docs/images/plugin_in_codex.png create mode 100644 src/topicgate/assets/delete.svg create mode 100644 src/topicgate/assets/edit.svg delete mode 100644 src/topicgate/assets/icons/broker.svg delete mode 100644 src/topicgate/assets/icons/close.svg delete mode 100644 src/topicgate/assets/icons/create.svg delete mode 100644 src/topicgate/assets/icons/delete.svg delete mode 100644 src/topicgate/assets/icons/edit.svg delete mode 100644 src/topicgate/assets/icons/help.svg delete mode 100644 src/topicgate/assets/icons/observer-tree.svg delete mode 100644 src/topicgate/assets/icons/settings.svg delete mode 100644 src/topicgate/gui/components/quantity_editor.py diff --git a/README.md b/README.md index b9b4f02..0e6245a 100644 --- a/README.md +++ b/README.md @@ -69,14 +69,12 @@ Configure a broker in TopicGate Desktop for read-only use, or use the authorized TopicGate snapshots return the latest value it observed and retained, not authoritative broker history. -For individual receipts, open **History** in the workspace and use **Record messages** -for the displayed broker. Recording status appears before Search; enabling or disabling -recording leaves retention limits and saved receipts unchanged. Recording is off by -default for every broker. **History** and the read-only `get_topic_history` tool provide -cursor-paginated receipts with recording and retention limitations. Adjust limits under -**Stored observations → History settings** independently from latest values; large -limits may slow startup and queries. -See [observation history and retention](docs/OBSERVATION_HISTORY.md). +For individual receipts, enable **Stored observations → History settings → Record new +events for this broker**. Recording is off by default for every broker. The separate +**Event history** page and read-only `get_topic_history` tool provide cursor-paginated +history with recording and retention limitations. Adjust history age/count/size limits +independently from latest state; large limits may slow startup and queries. +See [observation history and retention](docs/OBSERVATION_HISTORY.md). - **Live** values arrived in the current observation session. - **Cached** or **stored** values came from local persistence. @@ -86,12 +84,6 @@ See [observation history and retention](docs/OBSERVATION_HISTORY.md). Only the active broker is continuously connected. Check freshness, provenance, truncation, dropped-message count, and completeness when interpreting a snapshot. -Desktop starts with a simplified workspace. **View → Advanced mode** restores -snapshot diagnostics, storage administration, diagnostic profiles and specialist -fields. History and recording remain available in both modes. This saved GUI -preference does not change broker operations or MCP authorization; see the -[desktop mode matrix](docs/DESKTOP_UX.md#simplified-and-advanced-mode). - ## Health expectations Define what healthy means for your broker and topics: an established connection, an expected status payload, a temperature range, or a maximum observation age. Desktop brings broker checks, topic checks, evidence, and failure history into one health view. @@ -100,7 +92,7 @@ Define what healthy means for your broker and topics: an established connection, *Sample health overview. A connected broker can still have failed or unknown checks; the connection badge alone does not establish health.* -Use **Health → Expectations** to browse all rules for the selected broker, with **All / Broker / Topic** scopes. Open a rule to edit it with its target selected, or use **Topic expectations** beside the selected topic. Configure expectations after adding a subscription that covers the topic. See the [desktop workspace guide and UX screenshots](docs/DESKTOP_UX.md). +Use the broker's **Health → Expectations** tab for connection checks, or a topic's **Settings → Expectations** tab for topic conditions. Configure expectations after adding a subscription that covers the topic.
See the broker expectation editor diff --git a/docs/DESKTOP_UX.md b/docs/DESKTOP_UX.md deleted file mode 100644 index 0382b78..0000000 --- a/docs/DESKTOP_UX.md +++ /dev/null @@ -1,283 +0,0 @@ -# Desktop workspace - -The workspace separates MQTT subscriptions, snapshot values, saved receipts, and -health failures. These views describe different scopes; their counts need not match. - -## Simplified and Advanced mode - -The desktop starts in simplified mode when no preference exists. **View → Advanced -mode** is the single application-wide setting; a small status-bar label identifies -Advanced mode. The choice is saved immediately through GUI QSettings -(`workspace/advancedMode`) and restored on restart. Older local disclosure settings -are ignored. There are no local Advanced toggles. - -| Workflow | Simplified mode | Advanced mode | Why | -| --- | --- | --- | --- | -| Brokers | Selection, connection status/actions, profile management, all connection fields | Same | Host, port, credentials and TLS can be essential for setup and recovery. | -| Topics | Browse/search, filter and QoS, readable payload, publishing | Adds retained-message options, raw bytes and detailed metadata | Everyday inspection needs fewer fields; custom retained-message settings are summarized. | -| History | Recording status/control, broker/topic/time filters, pagination, payload and truncation warnings | Adds page size, byte columns, receipt provenance and counters | Recording and message browsing remain core tasks. | -| Health | Overview, actionable checks, expectation conditions and failure history | Adds Changes, failure occurrence counts and history deletion | Understand and resolve failures without diagnostic administration. | -| Expectations | Name, condition, required values/encoding, enabled state, save/delete | Adds action settings, description and revision details | All condition types remain usable, including existing binary rules. Nondefault action settings are summarized and preserved on save. | -| Snapshot | Compact notice of configured bounds and essential empty-state recovery actions | Full Snapshot destination, filters, rendering bounds and diagnostics | Existing view limits stay active and visible as a summary. | -| Storage and profiles | Specialist destinations hidden | Stored observations, cache administration, retention/pruning and Diagnostic profiles | Keep administration out of everyday navigation. | -| Help | Broker recovery, MCP setup, support export and About | Also includes log console | Setup and support stay available in both modes. | - -Advanced mode is a presentation preference, **not an authorization or security -boundary**. Switching never connects or disconnects, publishes, changes recording, -expectations or retention, or deletes data. Existing configurations remain active. -History recording is changed only through the explicit **Record messages** action. - -The setting updates existing panes and subsequent navigation. Snapshot falls back -to Health; Health → Changes falls back to Overview. Broker/topic context, history -filters/results and unsent publish text remain intact. Specialist menu actions, -shortcuts and the log dock's context-menu action are unavailable in simplified mode. - -Turning Advanced mode off is refused while Snapshot, subscription or expectation -forms contain unfinished edits. The notice names the forms; finish saving/applying -or manually restore their original values, then switch again. No automatic save or -discard occurs. Stored observations and Diagnostic profiles must be explicitly -closed before switching, even when clean; finish any edits there first. Broker -forms remain available with their current values. Turning Advanced mode on reveals -fields without reloading drafts. Normal refreshes of unchanged editor context also -preserve unfinished fields. - -## Observe and navigate - -- **Add subscription** changes which MQTT topics TopicGate listens for. -- **Filter displayed topics** narrows the tree locally. It does not subscribe, - publish, reconnect, or change snapshot counts. A visible notice identifies an - active text filter, including when nothing matches it. -- The tree summary shows subscription and snapshot-value counts, the number of - previously stored values, and the active topic filter, age bound, and result cap. - Subscription rows remain visible when no snapshot values match. -- **Live** means received during the current session, not necessarily recently. - Check the selected topic's receive time and age. A value opened directly can be - outside the bounded snapshot; its scope notice explains why it is not counted. -- Use the compact **Health**, **Selected**, **Snapshot**, and **History** tabs - to navigate. Health opens by default; saved topic selection remains available under - Selected. An underline marks the selected destination. **Profiles...**, beside - the broker selector, opens the existing profile menu. The connection action and - connection status stay in the Broker group; its health summary is a separate shortcut. - -## Expectations - -**Health → Expectations** lists configured rules for the selected broker. Choose -**All expectations**, **Broker expectations**, or **Topic expectations** to narrow -the directory. Select a rule and choose **Edit selected expectation**, or double-click -it. Topic rules open with their exact topic and rule selected. **Health** returns to -the previous health tab. **Expectations** sits beside the payload/publish tabs for a -concrete topic. **Close settings** closes the side panel. - -The narrow topic editor shows rule names and results; selecting a rule reveals its -condition and configuration in the form. Save confirms the change in the editor. -Broker forms and settings pages scroll when necessary at smaller window sizes. - -## Message history, latest values, and health failures - -| Destination | What it contains | -| --- | --- | -| Stored observations → Latest stored values | Most recently persisted value for each broker/topic | -| History → Message history | Individual receipts saved while recording was enabled | -| Health → Failure history | Diagnostic failure episodes, not MQTT receipts | - -**History** is always available in the workspace, including while disconnected. -Opening it selects the workspace broker and loads recording status before Search. -The History broker selector can browse another broker without connecting to it. -Returning to History selects the workspace broker again; a broker change clears -results and pagination, while topic/time filters remain available. - -**Record messages** enables or disables recording for the broker displayed immediately -above it. It uses the existing recording service without changing retention or -removing saved receipts. The checkbox is unavailable while applying a change, before -status loads, or after a failure. **Retry** appears when status needs reloading. -Help beside the checkbox explains that recording applies to future receipts and -cannot recover gaps. Query results do not repeat a potentially stale recording state. - -**History settings** provides recording and retention controls. Age and payload size -use the same unit choices as latest-state retention. Optional age and per-topic count -limits use **Unlimited**; mandatory broker-count and global payload limits remain -bounded. Retention settings are available in Advanced mode; pruning batch size and idle -interval appear directly with the other limits. Apply confirms success on the page. - -**Search** starts a fresh message query; **Next page** continues its -fixed boundary. Latest-state sorting and limits remain independent. Red cache -actions identify their scope; **Delete cache for all brokers** affects latest stored -values, not broker profiles, event history, or failure history. Existing deletion -previews and confirmations remain in effect. - -## Layout - -The duplicate broker Snapshot button and History Refresh action were removed. Topic -Expectations shares the payload/publish control row instead of occupying a separate -full-width row. The global mode described above now controls specialist presentation. - -## Earlier implementation evidence - -Publishing keeps encoding next to a multiline payload editor that uses the available -space. Tab moves from the editor to the next control. Publish remains disabled until -its existing connection, topic, payload, and busy-state requirements are met. -Subscription Apply sits beside its form and confirms completion. - -**The screenshots and validation results below belong to the earlier implementation.** -They are preserved as supplied artifacts and do not validate the current changes. -No replacement screenshots were generated; current visual and interaction validation -will be performed by the user. - -These screenshots use an in-memory fixture with no network or real profile storage. -Baseline images were captured before editing. Health is unavailable in the fixture; -that status is not evidence about a real broker. Window checks covered 1280×800, -1024×640, and a maximized Windows desktop. - -| Audit finding | Before | After | -| --- | --- | --- | -| Ambiguous observer state and hidden navigation | [Observer baseline](images/ux-review/before-observer.jpg) | [Observer](images/ux-review/after-observer.jpg) | -| Subscription row with zero matching values | Audit: row and empty-state descriptions conflicted | [Filtered snapshot and selected value](images/ux-review/after-filtered-empty.jpg) | -| Disconnected publish layout | [Publish baseline](images/ux-review/before-publish.jpg) | [Publish editor](images/ux-review/after-publish.jpg) | -| Recording discovery | Audit: status appeared only after Search | [Event history](images/ux-review/after-event-history.jpg) | -| Inconsistent units and technical settings | Audit: raw seconds/bytes and blank limits | [History settings](images/ux-review/after-history-settings.jpg) | -| Separate expectation scopes | Audit: topic checks absent from broker-only tab | [Expectation directory](images/ux-review/after-expectations.jpg) | -| Window-size behavior | Audit had not tested small windows | [Small workspace](images/ux-review/after-small-window.jpg), [maximized](images/ux-review/after-maximized.jpg) | - -![Updated observer workspace](images/ux-review/after-observer.jpg) - -![Recording and retention controls](images/ux-review/after-history-settings.jpg) - -No MQTT semantics, persistence policies, credentials, CLI, or MCP contracts change. -Reconstructing missing receipts, changing snapshot inclusion rules, and altering -retention behavior remain outside this GUI work. - -Validation used the nearby GUI/view-model tests and the full repository suite. -Computer Use verified navigation, the recording enable action on an in-memory -profile, advanced disclosure, disabled controls, and clearing snapshot filters. -Its Qt text-entry API reported stale focus and a UIA cache error; keyboard focus -preservation and no-match text filtering were checked in Qt regression tests. -Real broker publishing, reconnects, recording changes, and data deletion were -not used as UX tests. Windows was checked; other desktop platforms were not. - -Validation commands and results: - -```powershell -uv run pytest tests/test_gui.py tests/test_event_history_gui.py tests/test_desktop_snapshot_states.py tests/test_main_view_model.py tests/test_snapshot_presentation.py -q -# 143 passed -uv run pytest tests/test_gui.py::test_subscription_apply_feedback_and_small_window_layout -q -# 1 passed after the focus-preservation change -uv run pytest tests/test_event_history_gui.py -q -# 6 passed after the broker-scope guard -uv run pytest -# Final code: 695 passed, 1 skipped, 2 warnings in 98.52 seconds -git diff --check -# Passed; Git reports local LF-to-CRLF conversion warnings -``` - -The full-suite warnings concern SQLite's deprecated default datetime adapter in -migration tests. The skipped test is in `tests/test_health_wait_wire.py`. - - -## Earlier navigation pass: manual validation - -Automated tests verify state, signals, scoping, and layout constraints; they do not -establish visual usability. Validate the current interface at 1024×640 and a larger -window, including keyboard navigation: - -- Open History without visiting storage settings. Confirm the broker, recording - status, and Record messages checkbox are immediately understandable. -- In an isolated test profile, enable and disable recording. Confirm pending/error - feedback and that browsing another broker does not change the connection. -- Search history, inspect a payload, and use Next page. Change broker or filters and - confirm old results clear. Return from Snapshot and check the workspace broker. -- Switch tabs and follow health/expectation shortcuts. Confirm the selected tab, - topic context, and unfinished settings edits remain understandable and intact. -- Open Profiles beside the selector; check management access, connection action, - and separate health status. Check that fields and actions fit at the smaller size. -- Distinguish History receipts, Stored observations → Latest stored values, and - Health → Failure history. Check storage settings remain readable. - -All ten supplied `docs/images/ux-review` artifacts were verified unchanged by -SHA-256. This pass did not create screenshots or operate real brokers. - - -## Earlier navigation pass: automated checks - -```powershell -uv run pytest tests/test_gui.py tests/test_event_history_gui.py tests/test_desktop_snapshot_states.py tests/test_main_view_model.py -q -# 140 passed in 46.27 seconds -uv run pytest tests/test_event_history_gui.py -q -# 8 passed in 2.28 seconds after the recording reload guard -uv run pytest -# 697 passed, 1 skipped, 2 warnings in 112.34 seconds -git diff --check -# Passed -``` - -The two warnings are SQLite datetime-adapter deprecations in migration tests; -`tests/test_health_wait_wire.py` is skipped. Regression coverage includes History -navigation without mutation, broker-scoped recording enable/disable, unchanged -retention, repeat-click protection, stale status responses, loading-state guards, -pagination reset, and existing topic/settings navigation. - - -Navigation-order follow-up: **Health (default) | Selected | Snapshot | History**. -Startup keeps any saved topic available under Selected while opening Health. - -```powershell -uv run pytest tests/test_gui.py tests/test_event_history_gui.py -q -# 90 passed in 49.61 seconds -uv run pytest -# 697 passed, 1 skipped, 2 SQLite deprecation warnings in 104.17 seconds -git diff --check -# Passed -``` - -Manual check: restart with a saved topic, confirm Health is selected, then open -Selected and confirm that topic is still available. - - -## Advanced mode: manual validation - -Visual and interaction validation is assigned to the user. Existing screenshot and -validation artifacts are preserved; no replacement screenshots were generated. -Check at 1024×640 and a larger size, including keyboard navigation: - -- Start without a saved mode: confirm Health, Selected and History are the main - destinations, while Snapshot, Stored observations, Diagnostic profiles, Changes - and log-console routes are absent. Check Ctrl+Shift+S and dock context menus. -- Use broker selection, profile editing, TLS/credentials, connect/disconnect, topic - search, subscriptions, payload inspection, publishing and basic expectations in - an isolated test profile. Required fields and recovery actions should be reachable. -- Open History directly: verify broker scope, recording status, Record messages, - Retry after errors, topic/time filters, payload, truncation notices and Next page. -- Enable Advanced mode: confirm all former capabilities and detailed fields return, - with one restrained indicator and no local Advanced switches. Reopen specialist - dialogs and verify retention/pruning, diagnostic profiles and cache controls. -- Switch off from Snapshot and Health → Changes: confirm Health/Overview fallback - and unchanged topic/broker context. Keep a selected history result and unsent - publish draft across switches; verify the same result and text afterward. -- Edit Snapshot, subscription, and broker/topic expectations; attempt to switch - off. Confirm the mode remains Advanced, the notice names the form, and every - draft value remains intact. Resolve edits and retry. Repeat with an open storage - or profile editor; it must remain open until explicitly closed. -- Use existing custom retained-message options, snapshot bounds, binary expectation - values and nondefault expectation actions. Confirm concise summaries in simplified - mode, required encoding fields, and preservation after an explicit basic save. -- Restart in each mode and confirm persistence. Check that switching alone changes - no connection, recording, configured checks, retention or stored data. - - -## Advanced mode: automated checks - -```powershell -uv run pytest tests/test_gui.py tests/test_event_history_gui.py tests/test_desktop_snapshot_states.py tests/test_main_view_model.py -q --tb=short -# 153 passed in 56.77 seconds -uv run pytest -# 710 passed, 1 skipped, 2 warnings in 112.02 seconds -git diff --check -# Passed (Git reports LF-to-CRLF conversion for observer_tree.py) -``` - -The skip is `tests/test_health_wait_wire.py`. Both warnings are SQLite datetime -adapter deprecations in migration tests. Tests use isolated GUI settings and fake -services; mode coverage includes persistence, visibility after refresh/navigation, -blocked specialist routes, fallback, dirty forms, hidden configuration preservation, -history selection and payload preservation, and absence of operational calls. -All ten supplied UX images were compared byte-for-byte with the Git index and -remain unchanged. Existing validation records above describe earlier passes. diff --git a/docs/OBSERVATION_HISTORY.md b/docs/OBSERVATION_HISTORY.md index 8fba237..2fa523e 100644 --- a/docs/OBSERVATION_HISTORY.md +++ b/docs/OBSERVATION_HISTORY.md @@ -29,24 +29,12 @@ before broker deletion; a drain timeout aborts deletion. ## Opt-in and independent retention -Open **History**, select a broker, and choose -**Record messages**. Its status is shown before Search. This action -enables or disables recording for future receipts without changing retention limits. -To adjust limits, enable **View → Advanced mode**, then open -**Stored observations → History settings**, select the broker, -edit the controls, and choose **Apply history settings**. The shared history +Open **Stored observations → History settings**, select a broker, check +**Record new events for this broker (opt-in)** and apply. The shared history limits start at seven days, 100,000 events per broker, no per-topic cap, and -256 MiB of stored payloads globally. Use **Unlimited** for age or per-topic caps. -Age and payload limits have unit selectors; batch size and the idle interval appear -directly with the other settings. There is no local Advanced toggle. Saved changes show confirmation on the page. +256 MiB of stored payloads globally. Age and per-topic caps can be left blank. Large history retention limits may slow startup and history queries. -**Search** starts a fresh query including newly saved events. -**Next page** continues the current query's fixed boundary. Event history is oldest -first; latest stored state has independent sorting and result limits. These views -do not replace **Health → Failure history**. See the [desktop guide](DESKTOP_UX.md) -for screenshots. - The size budget counts stored payload bytes, not database file bytes, indexes, or filesystem allocation. Zero-byte events still count toward event limits. Policy changes validate before persistence. Pruning applies age, per-topic count, @@ -86,17 +74,12 @@ coverage. Settings summaries and eviction generations apply globally where label ## Desktop pages -**Stored observations → Latest stored values** (Advanced mode) shows one persisted -value per topic. The main History destination and recording controls are available -in both presentation modes. -The workspace **History** tab shows individual receipts using the same bounded query -as MCP. **Record messages** enables or disables recording for its displayed broker -without changing retention. Search starts over; Next page continues the committed snapshot. +**Latest stored state** shows one persisted value per topic. **Event history** +shows individual receipts using the same bounded query as MCP. Search or +Refresh snapshot starts over; Next page continues the committed snapshot. Changing brokers or filters resets the cursor. Payloads are displayed as plain text or base64, with provenance and truncation details on selection. -These screenshots show the earlier dialog layout; message history now lives in the workspace. - ![Latest stored state and separate event history with recording limitations.](images/observation-history-after.png) ![Per-broker recording opt-in and independent history limits.](images/observation-history-settings.png) diff --git a/docs/images/desktop-app.png b/docs/images/desktop-app.png new file mode 100644 index 0000000000000000000000000000000000000000..1a52f65fe90d801fbe0b0aacb2cf4a20604683e8 GIT binary patch literal 85622 zcmb@u2Q=I5|2M9SyH(sBs@0;Cmg25in+~f+Ym1S#Y6~r5ghW+aZ52gPTkRF8A|Xa- zt7`AqLX9AZ6(N!2`Kb2({?7Az{^x(5=lnkBVHce8&sDfql`l5y-@AFK_aF$vTM!F6 z_RqyfpE53wi&J0CP#cpI6o`pl?X4G&MeEsiG)^ktFD50Etck+J=dh7n(w`}TU&2hfp??3CQl@^9l#{xQ-*C6Bop%Q@dU)QWbYA^wdRb(*8LH+a& zKO8MT4SpijIM?8cni{zN{@wG-oWCC(ZI@l9Z%#&%;N*a`9D@{>j@7a!lbSYu6EA4X zp=x^nPKHfzeeXkTPkF5Y*76&eD@|h*p&`Q#!uxgyQjfPNdHBL0MKOD0!>50)H{Tcp ze6F;>43B=k(^HIX){98+=`(d1?Q;{(ZIfLdMuD?jLt{h?=V!YzqvkB82(uAN{;OGb z%vmX0pT(irPiw=&!^ifuUQzU0P8SSZ){s`H58+XrwICGRRJB@4J?zT3eQ-EVmr<>} zH5G#;6<4+XS$?#8^@^sA&!D{`eWBDQ_uw(%+3%-4WcWxvoXscZncz_}|8@#M43=e1 zEp&TOnGh@2U+2*~)0PA!*HGtMz|7A}HB{Tt0CG(M64^(^vEWGSN+SXdk0}eFx_ezS zpKOdY#~~Qr)KOno5*}G{f905=@`LuoXs-?x^ECPhvGq}?O_h)H)Q_kVD23E-h^pC0 zRIqxsa}S`~!P7`wTs#5_|9LF!hhO?uan(|HjG?OYA7;Xv=>!&{X1)6kY^_b+CKr!4 zt6?$7^1uqL1OxQI+l`XK`-3ty2$IZ6zVhjk#xpJ6&ppO5Sy{Kh^r3zk|J6tE#TnGx zYKvt5t0Nb@>5CXroRxbQ2FHNdJgz@5^HAlBjqhl7zioiNxvhWph0*Pi*mf1Fb@<6^ z88hWwu@BBsq`Z1E=IYZHAq#?*9c)BBpM6@qE@NWx(-Nb z2}_dbcjs?4tK5(}Ar8v=`ST%z){l#rt}2l{2Dx43+AlFZJ?*@;I=v&)sqXNbiXaf^ zeSEyg)_Xg0#22J28Q?-bpg^P0ejDu8OcJz#*ZdpW7>{@(;X%;iQQiEd30erPD*SK# zeW$Q7?vWExtINL$iGM`KV!#(IM0KcyAY7azI8~-1u~mq<%pq=DJ<8AkFmZc7JL#`-OK!w&jZ}QBI1(2cdd3IMca9WI}KdZ96 z564IrN1(WE1vuB4EfiLUWYAU%3{bd9>8u?ca&dNk^0t^t0<%EzV1)m|ntAOiZ-=t~ z`y;Z>-B|;y4nUj~Y4-F|OqmKm(i#7IYs8Lz1!D5CBo9CWB`2!$Pbzq3F_~0cK-{s# z$pNI~I3O_nkU?UpZnxVpM}1}-3J`T5&DT&N)IGCHCIzU1ZHC$LK=JftQ#i}1X) z#FspdCwe$;aUjGUQ~h%;IocP91Ge zQGx;@PH4KeBT~C@d7K7eA*5@^Pkq@8m&5uw9H!yyM&d ze)U@A0*-{OcIB`EWNA}Fo=9PjfmCbE{1&XV!{)@v-1k5k_u?9ox z^#0pb;}7frx9R!DxerSudw@Sf=0z4!pR9ci7&MBj$7tWe>46LlRtBl7{Y!P4_?T40Xh8U{aDEhDM zjkEg^yPNFO+9v7c;d}cL0o;3WzqN|+{_oA50Ac4^cTaFl{j+Dz9{Fo~@9ur|xO4w* zrIs)2e$&DB=+vK4*xuRypC8Tv15B?<_-l6@w%Hn|l|SSE-wpJCHS2$QIN>k{;#S1KV{$}|nL%m*xU(NE&%0f-%a^moA;ARgaq;^}y5=t~@#bTZxBE1_m}3`< z5-m3%Rt2eiV40A>!B2$A8@z%Vqn$rfYY^Q3w+9$P(v z`8}vh{>bNY_jbE?U#wdM#QggELNmi;e|@3mcquk(#H=oNaL(CHTH zAbvmE?&_6KkE3Q}VQsrA{nV}JbsefSk}$OoG8h8tG3|4j@hz>puK!QZ(J3+cb7mi2 zr{@!DpIA9cxwkyZNX@;s%x;(R7Y){?#Ue|eGThsCEvDCaeEA`43r1B=r z^k=JOnPYoy;oy_#_D3UeO}A7GbD!qK-@-b)D#O<(;$gB;{Y=iw@;DtNo&aEI+m&H5WWCEuD=GDEr)wvSRlVQaIq) z+O^hVKI>noMi_q^Xc{Zt^Ze9n_yuYpb9jC#8HGvxGv^0j&hQOsD?xHqnFzNGZ}rWI z&Z8<|2a+AML}v6&+<`)5aCcGlfwnun<5CqM?DmHKCs?UyQl@`Txy~M)+t?DLD08Mj z2>N#XTp}#hXGd2kpd{Q6jABnK@6gF{5O(Z@awo&`~?UGEul2);$j_n%$(b4ptGJ|$|?QjVg5WOqvIdPKP&OBi^^<-P7OQ}PhKF?A3OJm1l} z8tW;9qw`efUx^X^d;Rym_q1o~=CQ^(BqlOzbo!=lFrfx@rgJkn?B7&No$s{J$xJ@5 z!hK;n5Q3|0(yaL9y#Eo0|0XW|bTT9O0l%W(JMP*Qbi(u%=W*)5%CVhwBpm)t$aQ^S zN$Hb~h98f{^$j_^Ms=ij1p>MwJR%+X79`jx1u^Pp|i5?RKOlI;D(^wcG+&wJOg zvNwHLsONf*Dl)&qMlI+Z&Hqj9mU=?*yN4~JimW@QDdi}Z*+jm4{*vqJW%)rGun?nC z2;G49t&pp5RmLxKczRV<6U=OK=~MXxg7O+4XF^lZ*r`#k(UXw;;_}s^baI3I?YMyZ z<+TdXq*^t#L=TLi>(X0xxJZLhuBinnuugD<0uo|lQ|~|fD>^w#S{$WEdp9|SUz5HV zzBTaZzg<5x%YQKkxM0QNrxJDNW}iN z%Ueqq6oN@PAew+vm*1w{fS1B@T*rOMX=z5A(M{OZ8z{Dw1K7=@SE{M87R{*~wMeqs zwTALm@xCZ%Tq_HWuh{RqNCG_Atmv-AJ-QNL&eKg52)3}g>qjPTReLK%2aIcg^@SVX8$|KY$Xdrd8$oiv5L0cbN#HKuEQ z69n^hDqohf`L`Uz zt>@tz-wAn?_X$bG#xSIF&C>R~+H8-pL@A`ho;F~bP3y)LcZMLfT3_sFpLcm~D*i-x zSFWmD^N$Z%R$@6$cc59a%O70Tasft?3FRtsjrb}=fp}tu;Wu`du#;Yp%G$stIXLcN z=8?-Alh!)|GFLzb6H;d*Sri+{&{l?zJJv=vGO5z}`bsr3_iA2byhPtB&2gQ&PYaTu z1sx}MkY027IzzuAtaieZr^Uy}wjZ-#NjatiRkoiJtaCgJMqSItQnIX&W|dJ07~d>C z2xmrBzMCV~IxVA{hN{)+vE4+ve-QH6I!&JR4X$-K{Fg|=FOl#wxCK;)+=Yi^7l$$d zCy>}A;Q14|4@P<}KG6W4Z%G5^6EDSXFB@VRG3aV(cGqvO&MAJ4>*eM4phqz$#He|c zg)NXJRp=16JW;#e%5c7F4VS@k_t%P+@mmm~7_taliP9=sj(56O;6o*o3Jgj;1?IBK z17)%J{<)()C}xPC$01hop8ns(rp}KO z_%F2;LheC3lRwJ)-QgK~ob5ii9g)RM^zK2e6EFx1f!9L0=S`w=50EbMO5FQ;)BcZ_ zf2w*urOqRbJpZxOfH7wPcl652CjY4P^>yz2Q(80Xn%svIvGu#{)Ne92uO>M5tqueZde#pKpKZ=oben$P)44$u?-iGSjt)BT!H z(6|lqnuH4&KBAMmzUjd-_t1_OCd~wi>q^g_7CJ0p%gm-Ni?B2>tfd2kuKc#LR>5Zq z%TX6)C5)qF{jBFi0~#*aGsjz`*C!4}ZEx#HuV)J>pZDtd?Oz||3ZB_i$;Pv=20{sF z?G{p6SBuAOP@k?A^gfa0Y}!Cv&zEFkKyBlw>2Lx|4erB~g1Er%h+LYRvT}j{v>i3s zHY`{H{g`-fTgVDJbRs?HXdB;)K#Ug(3J+F z%crp}D@nCX@K|7Yu~lDzi3`84E|Nv*pqb1WAz=?O5nTM)VOl)#V?#(07rwayLrK$F zaj#Rm@?;y#X=FzjLJGV2aICTjU4H+*qYPS;=8Iua@9M}TjiN7vPl%3CrKE|n<_x^< z>F5`1tq@GSeQWrA%P&`xP_Q!COHJMGCfs}@t5Sob_4eUhkU5ElQcaIH&~>!6C?GR7 zSnGjSSw(70m)EKY^hE*uM|tD{iIe$jXD&TAl@{y%iB}Le{UO(1X)fL!#9*RaoCA#_ z)i$yceN>Cy=rAtTWG<=|_f48j$$xqr@&zIeQt1bMdi9ntn_h|ae=2D;`aE3Qf}M#~LB)*d_iLs|Thkn| zcA>L6igrJoY@U!@#FNIr(Y+gM(4iS?i)fQglo%zXW5(&nsp$5T8Be@|G6I?#wWAGG z@#$&;a`B&(GW30m?`B?v-;XovWmvGh2e<%5BSuJV~43>S( z&*3SmByBP?O5%(J?I%UlAbWD`X6W?WOW>>^EZJ}fEh~krR5Doi_sbgf3;jNC|ckWEu&R9yma?&x79GY z`%94RM>U~x2mZif3011KjnryIsvj(pzT$vmG} z%ysx>9VfZSKgjRUj%Bm(s^N(2Gi@{~(GI777|U z5F#TRuLLWv^;afmedQU;<3TW}(W=F)kqs{!-&FIz<(Ett$Y%QdP3HrM8oW?BIf!{r zh(*o4Na+`0W@_N7m-c#{XaX7mZxN3h)SUVda|?5B>33?d;qc7hRQ1ZDE-u6Jhwdz)8 zhgxHD1255<2=yl9?)Yk+#rcU4+7FTQtN;Y#CQM=?v<`C|_HDlZEYTA_piq#QWka*- zIdWl99J0N5A&P|<2W}T0L0z0Pg8!K3{Q_q^$t&2pkuhKufaNp}74YM;3y_U-{tkh&HV zxaj16FSA|A>SieSQj7*zhyVJr9@l9p3qG)4t!>~ShNZ(%Y(JY<`jQ*JMNC09#ZMPP zJMK83McOOdNwc*bWr9GkY?$5O(KQH|y|lQ6MIjQE`tD+i;_7EK(?7E_(NJ&h!MTFFrD0IuH5L>)t8?3)g>}|s?Nh=yhQGzDIe4SdB zoGi7<0$OZn^@)!k;XkGsO$W91zi`x5+%g|kp&BRpTOkGgH^@Uc*3%6Z!vnSuZ%X^l zTJS9X`BwTkqi5@DP8&?zsKPdY)`*=`E8>n|EYLCqgU)?6Jij*)I@)LlwSC+ITU0$7 z$xQWgjYs$fyg)oK-N`F{I4FTO^8N`bk~pdGrFHK+4J8oxpO~X%HJ=PKwIVt{J-FFg zr0P6gCoQ`=Qp$^Xl9mwr)b*6qMA3trG7m;>Ut!dEw%eO2(rd-mJL^y~GMikZ0X?D6 zoGeD9cn{S4gy_4N+-e>KsGqTpQp{&I)8hju#{I>-tCZK(DKvZ$j~2Va>7W;?xNT>F zSnrvvO9hozu9>*;Gb@E=ajZ+`01s%rE{veG*Kw2wHjG$aTF+^;e+cViIL?NoGRj=T^V8P$s^- z#s)G$;bP_N#a`E@d!*0TkH!S``sUo;(3vaHmhtU{ij{e~XKk%93F3WyLdhpjk3ha; zC1B^6Cj`7sZ~$C;l+EBE^e#WR+4hL-6q@yPv85z*#}m{A?`xe>g^btjflane-9&kb z-^@9z=IW#ygi7{Gh@Y<|A5xK97USyAvI;_~sVtLeKYO3>3ocT(TPOG#U4yixeTK8X z7;yf?ccUYYPV>G(U9{$h)7+8!%{$Jh8W^`A3SP3rjf?v$9J#+zR)&S}X@Z-+ZCkT> zn>3EJ!q>*Qj3h_fspNp}{&if?mKr3F`6kDptPREFSEZe|vE7!1llv(!hZZC)@8aBE z8(%7FeN;i{O>4kvo($F^mPffrsCAiXYVXuUrJNr2abB)Gl+4EnIa7R}aze$2YAyr) zS;>FK#%Z|{yP4TjzPThsN=xqBNryjozm6d2A2e?*VQH&Frvw- zDt~3%Ib-(ZLA7k0d3$B+9Vo%~#gf2?cuyev?VSQir*E$s^Zgq&l|eoBcjo|;?Mjq& zU5`x?jb`Twox zHWk--EOP^a%W-$R`|`ll!1d@xh^VJSp|D%d1zE0wA5F%$f9PqMw-oOVcJUYxy&9zM z?aI%nPtN50ps{bw>$7*dB+SNeBp|oeiZ?~DYi;K0Xt61&kf~)@?U3Ueul-cq2j0?T ze73OoO1{m7uZ0e2Gp>Q)xMl_Otaz1#)fC)q2ra))L%EgqHc_MCe`ig+_)ujx?nlZl}~(*yAv zDJ1I(v#@!Gf{)1C6X>=AH`@ug?S-2o?FyjHjs3f^^t$*9Y1vV{to8i|3FpJ#6~!rk z^a~q*^De8i+d@pZG2X%oE8TH9*DpAS2yDcOCcJt$ie=sx{2LcDk2xr`AXi>-nx2O3)Ncze=bVd>z8G72KI(N+Xv6nv@d z;03u9hMFs=+y&(9N_1LWbs7zi`ijmh!78xYxsKOU%oYctP=yN` z;IH*+j7Y)jKps>E+Sj2*)Hl%(-JK&=(P@o`p@>MwjrTVJfFKdf1G4}C|U zkTsEW)mX6YPJbii3|&v{^a-VeWU%BEn*;OoSl8_$_^sUP+x1DN7M|sMbz0_vpEV@* zSKLcFCOTJxIvU~cq0EAv+|B=K@18abx!k+i^j-Vz*>h~x>CMyjQR8NxuCE>-Ym!=0 zGW)F6r~B}M2mLh_Qj5%PmY5m(9|FQa$W@$%SmD%V5eu74f6_bz>|~7e0BXpk(+7&p zUXRqi%S3TrEjti&6P-@J!75eA1bXB2HknW}#sp7y*`Tp^ajet>v)6}w%LblR5x=c9 z67%nJK+ob~{bDFnC7=d@3ID~MD1>Q!Yu&0fV`&xPMox%GS{iRJcDh=-g;TQ;1n zt_DDTz3!4qtZP&w<)3L%bY;7fjnUtrf&-*OCZ`Izlx6c>vU$(CxtiKBuSb$TSJqw} zzPwXQKQd6};q{&%C;CzEKp2GN)|mtK@^1O^SXNPfiPR{5u=KzQ_s9O?V`R{{Pg|50 zObd0}M<72e5^W~SKdP|5P`>bUr8TEX=DgqWz8Ax^ZS=Jwyk-F6V&@t6!l>p2Mgt9E zmoffU0aTT*F)`YvnXXvliM7fKI}$KH)b0wd6xipVMHfgi*;+KlKsQu>J5Yg-+3mqz z$IV>rf<0>#;d=M{`rdGtZR+O$9U-~=W<2qJUd9M9tW2n|XjZI4JyPz5aqdjvlbUPG zL$1T?-z0RJ`?BL}bHve1-?X4SgYftn=Vy?Ob<1gH7v!CsG#RRbBSGy_Q?IOowhxI_ z%=n7`v-aiCi!Y~YPYfoI)>^{wmtF%!emRLAU3#Sd$AI(V3IaC!J{S#ZI@%mt%iP;6 z?q=kgWR1RXp#EW-73N0R{Hp8)Ge3^zIn4>vQd5&`Klwwc+Z(2mfQ6p@ZJ`n4T%!3& zOS2gomF}C&g0hg2kYA?Cj=Y>%7){U}DY6 z`08^@aCh0hu4=GTsHS#vU#@DlHudj_`e|77EJdUn8BQoaJESN_o2LsGhW6;$hAniX z?nLjnES}J~*{#pBvZ{u`(|Gmd^6tH9uHaS3)txR!k+mZtL^Olcl2D9|ZY#kzAckip zj(WSb`m)RQND{q0H^c<|FMKDB?dWENzi4BQ-S$R)fK7CAkjh=$&Cp16(rX|6stu>+ ztk=8c>U9fBq+0e*LqoZkJ&%3>@kp6N8$WzH=S^0SD^T9*{Z@Ski1s`jTR3$l#jRW3 z>EtIH=C_8d+k4{Nfsp0EWMg7e@&7}U_$(<|*89_#YG5xA3q1h(0uO~Rom6&u8X=_S zEKGH7j7-}}KwGEw19M*S5K@fpCWsNOXR@*6s=dFfzK-9PA1L}PJWn`$_N(S$AqQXp zIbcYC>idL|+!SR>L_5FKfSy5J`QZf5_06XDOdv~@lI(*McxeKPfn}q5Wv)ZzTE@cq zzmj3L^hQP4LPhF!3%7plRopOWkgcWx;74oL`y$IyO*K{n%c)bH6<643m~1k+_P{1^ zVrwVAlCCmzaUL%Ga&QmV^-^5I^v-mjrwxap4O$ZVG-|U#ynp@@-DD@e+hx|SBmAK& ziK8WgsMT2qCndU{6!8G>uGy$&fq;(+VPd<< zo#BC9wtZS~f@=UBm5;|n2-iy4vgUTOoQIqL0PFd|U2e;Xt1$Ga_O~D>&j;A39Tt>P z|N4@z?T`Z2gdt_Q)HXtUq9RQeS*(^9iP%2M75mdZ$n&#j=)jDAB5{3zLFl3eF)I+5ttX77 zO6sM!G+#ZQt5t@qD&U6unk)9xrjgCxHk*}Dtp8x*kIxa+0D~TsFIiK8-}vW_sa*j@ z?l7es1}!t4@gn!UTZYs6m^bv>PMwil3(6QyfGMoNlmI9miY%1>0NDi>PlLfANnSY3 z=COQa602xbF~cS(&>E-Yhgi5CK(@+c9;EZ^Dhpyv5pjziS)IR6i_lAI4Ojs<;zql`?{eAUJYyji^947O(&11wS<-So}xRKn#< zc_sZ})`;S0Aj#L;>pL#Z8_KA{2C}I%D5ltvI5N0)7;VW!8xR60qGUvp4L*fgyVHinhMiKERtp#e z%+AI!V1}Z5)5U0%oZx+zLJ7xi!^rG%Ol)R*{*GBPBA9DkA?;I)pw6H%T8j3kVP$jp zYHE#I;ux=nCmUiz0A`~_PzFJe7z67t0 ztqsxxF~*FQ3VUW)LY|J0bMFSR=tPH5WiK8pm*P260ZB_S-_k)Z9?5S7x*yZ%B@?PR zu)p;Pb^rzPljKc+H=4Qgof2pi_P0Cm|K&!d&V zGQnG_!#)iEAt&b1pW4@zDy04 zKWQIKaY*~;7__~EN?v#BJ9VmJXt1I|T)e%oVX82ad3B{!C2ym^SFH8Nb-^y>c(ax+ z#@bi4S=0EkMzTEUxhkeTS2nj%HB!fjucM$H-aFvh?+#(bqXh!L-4P1HYb z*7nmr@$PWOe7d;8-5gK4&{hOpZSjoxIi)_0Erfh&#Yo@_ai zgX-{&9uI4k=xED!*8AEgH6}^R?@q-w!FLcyS=--0W&^549l; z+;;8C!^sE9Yggc3RbMuk&nT(|)NG-HLYe0?KfbX_Y_P`FG)!%o2iay1WoV^_1@d93 zQBi35rR~P%Wx>X;7IOG-jd{Cw71C7yKp}enrPop4pFAFBk~k@=7a{`!MXn`Kyp`mI z=V{NOf+h??dzgTT*J*)iGlUL7*J3P*pz!WPP>e$=>iB$2@tTawdkT9&>xp@Uzd;8R z+2!V0&x;uHmc-SW z-5D{xW9Oe;n9=6RSZ$Sx7agk@7@WR!J5PgGVH#8@Y*8C~TbpCG z4;NLpq}_xpM@?@R;tHxzLe8XT<4V}A2yvKyuZ+zx&NmL?-*6`%nT4Kf?`X*{9W!Hae4SbK<9M6tovo5P|+EKa^O!v{otj7_d zQLVRZJgUQ~3uKH_S=U{_B+fr!v|qc{Zn_emGdE3B%VSb^`~&@d3&PI+;_1e(kmSE{ z*R;9kW8o{;w0{zgEFksT;DUrkCUovHigL+Lf(Uj00Q{UUoH6;KACi`Heo*25Oj==! zs-OEI%4=O^t(rmKKZVe1F!M%3xRb=C%Cc?=WB@p;mVQVai)uL3H@_% zgLOctMw7K!@2u$9X}R;FHS!qrJd3oQRP=aO*C%?#8l|5LKZ{WS2?%Hxiw{N13#8bn zR#Ap_%fyc~fBNyYuly5T!jn8L_cX~W(dP5DYr7jE)~~o2gAIJV-s6f_LRMgLvMTb z5AOXs0UE88&`GOnvar|0I)2L4de(VxPPk*b(fP)t6cP}eZTYie!KX`hJ_Nd_L6#CaPC8%P9{I4>>9fcwwmNw z{3dM2{i^k~VGvr>g1XGUf)0e?JC_7!+IX&M!R8ZPTlabBh7!m5tqrgB+@WGGrMqbt zH8nYwB76ltl8|JVT7RN50p7Jvz6CnB<|FZV$oe1eTUR$p4v$%Tu=i*Gl2*94%w0$x z+e~)}Zs=Z5zsQ?El*%`f7u_i^uQwtO$|=Zc>^JZF```^VlgxwYb?tw!Ks9HG!*>l- ztKC-~b=K#sh+&vaX@?J`liWFxx#*B#(^IUHDAh!YcLvtY_Cr$%N;WsC6JA=GC;=Zq< zGMgd=SYvn%{4`rS&q>wCuOtLjjVdolm@K{Ggsv<{?T6E^@0M-e9XSSNM9%P!o~y{F z2m%qhz-XXWj4HN_>JGG2;Jp7qZAz+}|4u5{Izx~A!N~v5;3akT;dWZz0HP6ShV5Q; z&Yn}VPq+kS>hw0=%PcDa07(Ib|D1xuwg3;yIE}0CLImrA8PJ7qI?{ijCXW-(0IrA#v$Xqe3t8!jQUM>p6-Ml4Cik&F97}gh2fmN_6x%a5X2WLnBdcCKF5y8 z#go4$w9GvCwS`|;m)RXR~OKk^U0Rh|4_ z(YODiB>zWXuRXg8{7{Mm9CW8KBCWG)QUo~das_~yK2>#IPT#{XbN?wj_bh6{k!$C? z)0wTEqF8I*+8O7Z8aj90{cQ{Bga7~pJiFp|V(-&dZ66hV)1h6U>8Fn&vX45|0fyaW z(9<5Y?`2a@^9EEwK*7hl(IC0EkPhzuz}emdNTYF8iDn=AYaFisjPrj+zn$=;0$S|h^_R<4DS82~6!@j!F-`^^Bw0aIyk)K}74kYVW5J5SnMR;UP zTd$rpnK(n_h837y>XV#nQQJbR27OGJ``k8SwFl52?7XFR?)2c6# zbF^5f4V+G9F+ihhb-TD)oBii&PREv{olK2cTZ1&dpXCx{98dr5nEOiVr$U z81q0Vt7>VXKVE17qK?$FTcsLO?j3vFo!L51+siChQHs-C!hq2u#%C_WYiYvzJ#uhX z@nXalAZfme$2m*1rt(A8%T}YE*;HFnW4j(RZ>w9H_LZ}{Y)ir(zTRLaddR%$Slgs_2F8tOCjaX{V$3|X3ZOB_vYeL1aVT^_!M1LK&`Vl z)iMli&dS;EToZW;Xm=oJ zYsikj%kl8=u$dJZyMqcJ<7!Y53evG!nB21htU1j7>T;E@hgL?U@p^-6X7Iy8(`8P> zxu*D$y-hLR4UedC4R)$>mU|ZagqYPGx=~rzXshDi55QKZ6NQ~y%!Xh1k>sunea@4% z&uzPWVGtWLy^n1?H-s7`R_j0ymZnY5zlb;H+=h*|)F@NR&`xh_l^vrKj(IioXMn%I zJ%Ls29((Cc;sR<-;p9>cjx2EPo8G@&9HSgNS)XWFPqix zxs)kTZ>&`~?(_~lsD8Id&JZ|Yv{+5`qhCvg zL2Qad=G#XkgE$_xrw_L)t^7{S5O`AS1hm z^(#x5w2yWVx2-^emloiodWD~C2g~$*8$dh(RX-0|`SJ*ghbe-5gfCk8ehy?~JHIj4 zfJ*{vcUMPN1FDsT+wobjzH2^UgIHG0$hjfWnMom?t?)##S~Q4iEw2fiz|g>Ho;`$@ zGV=iMV24qTA!VsS24blSY~IM$0|;b4{})`b*H*0PkRyS3<^m*f!ET z>yqCit3sd0-A)m&lK!oPK8AgBM9FXTPvlPcHX=FU$FvJCt#SHq-xB zl@6f3mo|~mBZ1DDOP@GG(}qq8l`Uk)munf_Z#{r!^9r}STZ;6}rh%UK#V;RI>!Y>- zgh^B#`%PHfFYi$le8W9_<5>I`_@ma7#QTr$l}KJS`$xgvmb$v1zCM)}$PNvIIcFk{ z!`NabK$|Cz%U!%0;|UxmRLAIUxOLVOg)n7hl`;{-^kIIY*IylH*svDtKow$- z@e*u2fc6*9fE8a2piBL)TTUH|A36(snUcmq%_?pM= zaR?PV??v+er2aRpmQ1B97{|Dg}4 z{S}DQFX`B6rZ_q%ER6c9N7H(1d;#AD&<-vPC_uVj0V>(}2}^DK=`OR$>ucdoY}#G_ z#`dD6;yYV(cUQ2+P7?@L3kMlbEF@kV>boiGp|D3?_*biFl=vk9EB4U}_@@|8-R}D| zUV?9l6i(Xx1MDxEg#hBrV4tnWejuhl^=sqzru+^l+2AMt$2NVo&jS&0Dnmib`YG49 zA`<#UQh+98yP&EbANaZv5aG*|s+0(o8f$fg{_mUq6EYBXTfT5S$M)kb@Lj=9gg9s# zzaK%i>`8}ol+T4@A`>my3^JeCX}UaYcY^!Ohsw~Zc|Hstj5woE0O^n`1OSLHc}^GX zaomu1oQnZkpC*kFDR=F>ECAeB*X&xyHOD9S)f_P19if+N7XTjBzWp_uJLh)oC$cPj zZ3&9q;xu>NzQi}XP|BWE%62{6hdhch2M1ZHG5Rt=|4>Esla%X|8$M0|?MLUOOW6BU ze@SyjkEwd!3K}i3N=sZlC*2av7?96`soq+#2Uxytugtke-68APW}A}`j!+$tQmcs4 zHdg&`vy*Rj&-d_C`H?}F%?UNm5s0-PX41nCv|0ptXCg0I%uW6VM-Fw-o+a>pMJy;8 zDF8=DfNNIb6zBF>X^w_`(1Z&-(5N`!KzdSml~Y!6nu=*5Ue&>&VL@#(2VjMZ@YjE~ zi#`qojdMvWykrbuE-LK|(HSF?cYfy_Ll=vffBsQ>=0*R6N2rcDd z-j#E|E`b5(aJ5t05N~SV0XceSYrhj4|6s)B{rePg<^CTFz;wmA@+~{)$#S6_o-XLiwOt;XpY^-coL z3^kKNqrx+5P&iT1Wz@>-FAkH;axCTP8wxFV z-n+qVTcNu3^ZadA<{q3&uoS+8pT5=aKS5?|ejm7hYTLXp**~Tz1Fp0YtekI#4ulN- zLOE#x8n}Zx@=qDvn+1AF2+Vi46K=j6y{M!03zS5UO)wbU9_WvMJFF-zFrxpR?03%U zPY>R5)_Z?9)>FXY?y$!=_Pi;k{PKv|h1fy5tNsq@Mx)>L-XEDRSDE{(u)Is~K1Eb| z6zhMjpV$aV$(KmFf@tI%%-}hI@Fhh}Q(cEi4z#&XR*_f1AGJVj-oF&!o&W8`YZx6< zu}MbGOVMUHEq3u$v9;F2!Tf`lF`s}_$-0?4EUNx=fGH3O)Kf`EX4bT`9D4mDuY-3+BPL&MPV?i)PkAJ6+f>s#Nw)>&t* zbDVMR+WWeGb(t{cl~Or58kTZj?WqNK$@700HLrg}Hc}(XKzn|%b1{x{`v;c6YFEZv zT~q#khta`mB5}J`I-~O}-4I$K(!TpRejArA$lvCU~SU(+%h%{P_V==oc6)K17)d1&uA?#1j`@QdOg}mJAx2c{BpS?8# z^bA+60O--g;}1X&MU4j=!&+TU4UUVLTwp2k=su2{EH_2HzMg+t8vI?Fm1LLp| zl`j6XW=`_r1hoki^N@udd!8q6Cw&-8rPfEHunc)!+JXmz_&ne=X-j7rdI?txk8PZE zO8jTj?4Cg^d#Wa^*!p&z4o+Gm46HX=+B{AzK@c+BxSuFQozQ6<)XC*o=0C`reu@tH zK6Q{NgQqSk5qC+GSP{+9$IR3pJTHAv8f9gydsiwF(-z+-$~jzg?K%cXsPy#yJNgb-J2s+rp{5i*ZUqT@nbKzI%zj~x?DZgeZ8i{h<;7Z|9Q|7 zV~$KSM%&ysp|I8CffUJSz(D_K?5ZQ4kfnRRO;&@!T340MG6wrt84%cOy27WLx_AQ_ zXCl2@I`c>5raTStF!^caKt{P0^I+XodCx~{!cyhhG39Qdc3YVtRt-jViyw zCKH{^c=~K(T_@de>*I-MU*@t)XLuV)YHo=u=C|1SY%11U^K-!b5C7JV?QpyZyAXK0&*tMf(<8_j)6kBP$kjg@V6exZV*SS!NSN$m{rm33@GHzeo%gwIR7AoXNkG+bcYg$S|Wk z24ACzVkqLRY-x|symCh;sIJ?sBx}N1i7A=0_dZ!gSlXcE1VI?b0N=c5xTO!TcCo>S z7p4b2va=KF6|ui7hH4T>AG9&&^41OHeKwa@`zFLNdABzO|JWkZ3}c)_B;C%sW#-X0 zY~AjWM6Inyr-$IB23uB3k5YA4TFyjAfGy(J`6F3%D}Q9^JSIN1#LS)AmMeHJcR&mV zXV`PNsMDNbAbelJ$$9+3L>H#VJZkKH05ETb?&sza^ID8Et|&aZ(Y<|5VnI<3R-5`K zG~;=`SmQt*JP+=1rA9!i<(tpWNVR*lkj~IOWu3FV#}{qxZ>o3KUpTjT@_@J%pF1g% zUO_v#hd$g!r*BzT-n-LV6K`7E;a||&G*)t#nZ-~vdTSC~>%_94cFJaxD1gvNxt7i4 zt_6RQY5AD?Gt$k@veSb;(jXq$%1UzaMRz+PUpW2w$US?Vv{{h~ciC1~Ci0ro?9%H$ z6a)K~dAI#iCCGDa{J`2gwPHM5-}}36AgK=^%8u`~^3)!^c*Ie^j?|C}|3}u0i?80UL<5NB-v$2w4X;cW9?qBxA zv*5xGWHlFb(`PxjGf;V%ka2lu$ZrI$noDg`ZXNz$x+y-J0>7rrQ9X>ST8Gb5zm-ebe$&$1gO179I+ zVfe>I$%J~4RuyC}_2H)RR6e(h73<5#1?c@JB_gfuyiUfTSEy*WqT7`Z+UygqScx;V zeoJ{9olpPNkVTI?x5Tc4-(})QrH3AP>043^HYrUd8qg|O61y&Dk3C_G7q-xp(wiNh z6(lcHE6aacuk6cqiDwZP&D3`o>(&OIFgGSDUST~uXWWxnNoN`{k+LIoW>BeMBJwh8 zvD)>%CsUHaq4gKhqQ>PXGVkUXe|~szqeXecjp75`GDEIBB7)i?I$nnE*K3`W6W^* zJv}Y*kI(`pd#9AqA+}npo04#us+R5RlM3k?HATX|<9gS&2?A8FSGQ%_dZUedb{4or zef?zA&60`ffCY*OVk=V(Au5=US*X*xo0%Z!Y9c8!aO~Maty6lb{5GXg z^TbMUee%2xW=(p zx@g5BIW4X{6EgzaEiLtguZ(V@$lWrF`&_l(%0qxQx@qjR&W#U$H5a78%yr}aktchP z3*O5of0=$27znR*?@4P&Oi3@njTM|TniLJ;_@=e{*(}OfWTalrBR`xlqHrvlXCw$N z)#cY4@g1SUrI+X4OoZu2C8lYEd<)rL38b&F%`>c%5UN92#RocSH?1P_LJm3lf_-ONPQl+mk(w$B#fSDqrGje>V9F?$~Fs? zmUUbyRul{`e)B-`RQ7Ql_{$AFf__`oeOi`_B&lj_8z+@elGIw!x@`E`w_DG@%mSBC zFl)%nz=t+&iw|ni)l*M^sz^G-=KgQtD^DJO(xTL=b_-_8y|U9ecr1ZHc(vAG`$%r? zwwkVCy?HL->X=>{k_WdDy}Br^7HfVR-g!*|y!~h0y4W3i=~o>qYGp$oKi~I2r^kYh zvW@(IE%q?RG9}oZ{2WI7VP*Hm``TZD3C)X(#rw;dTDvp#<^l$r^V~I(rkPqHTmOy8 zXjE*tppO!5vdHh;RWnq-_CDc}T!KjRw4(P4Qdh0tLMolLel602EEB%y$uJx3Qasnb z|I&W;d%bHD4+*YG|K2ge+^=s=%YN*_Zf&xH_|AVYoPf{v@_%j0Esk!u##k>=@9#A5 z)8Q1do|eMw*N&?KMNfr89BU~oJl&(ob0jK0|9FRsT(qqCpTf{^S^h!kEay&MW*7Tg z$nT7bmRQto}D-)QQJlkd(Q#w#HBNN~!bIVbAUvoq(45;W-S zlLI6vUodN*ne8W1v`HX5OZB5BjZ#9V;vTj!)}4VI&8w{v@NoV{T|z=s)7-nGuF%8Z z=f8bRbw$VUbLwfcS5td4G29IlJ_(oghEi_!-X<}8e1v;+Q?gqjs7zCfUemU}dd_I2 zK%g<#$pkRDgk6*3{BY%n3RT;^;_5Qva>gJ)k+~iJ$GTJ94mj1(wSIs+(Xxp^ns>R^ ziNabyhyCQ5E9@s(%~?lzLU->7P~orrg}LaZOj&LMXff%hUq%F8RD%v|n)SMB^}UT# zvXRWs%n$f36yGxO9cfkFdym@ARVdk!gYA(?sn1u`uJx;->QsWoY^ERMkegZ2C%@tS zgQo#l(=>j5-DLd)&tMXe1=+NT_HP~bb+WGYdZVsu?rd!@%5|;!y$@8?_7PYkZ^9cf z8lTQQ;*Y)Uv2_OIOl+>u*jcu&t*JP(mNSAtFAkj1UsYcJnqCfPy5;pT`XYdU;9>Dc z47^j+e+#rtjREqLfo?s$OIZP5kYm?=FCm|}H}3ECvN{Y3(vjMVVu|t6m*zc>wB71- zF=Zsyz zI%oW|=uvGt(@CL{aZ<{#mFI|obPhCFaAq@4cdKl7VLA)~8MFktUvyts$- z(h;bZxuJh3ZqtAa|G;ahpFG$`6>8L@zQQ+ycC0%-5H57j`(k%25uBU}pr%lBld(=yL+=8SWrovJD(kzknh2lAi-3Z>C z$r*k#;MEyJd!K=++$WoPYwQxvd!4gbC_yGyXFt<#!y}IOgF%nU5+(}oF=sp-#HnMC zo#3(RY2B+mk+^d9{v@xVSDHW9SQe)9-Y%4zjcx}kIUtLpi|D5&_(FXVy1)_GMCo}1$@%nlv(sIE(S}c z#{H&@SzuCBdzf{l`qY%;{TL$gyWHV3T64t3wGixK*iAbqBOR^5B{zT{!|%Zf~bI zTaD?sO;wX~GokaYvLUuS^DrFgeF;->p_zIWQO&G~;Wq0tcJh%|z|EWAtgC%cAIXC2LR| zQZ9ei7`2YDOckl+`$U;zu;3a(xJ;&-d%sa@+{6C8ppT&h5LK<5>(jC|ESj=JM9+Iv z*SmPT{@we?dT@cV-{#J0Sf9rsSjYY>4ix5;3mkrI+VOFBmRpvL6N`p}v^UB?Xk6)+ zt+9Kuv^h7zbreF>@hsF-gQzY=7arvKohC^m?&9|4Jd?>-P`IIfi^wwyg~TJOryU>9 z#clK%IgSiE`ZrcTSUkTw_D;;&_U+Vb5wz};`fjOpaY$<7Q{6DH`@B~&F_Plc+nP7E ztltg1?}R)nz4XT1gZHex^XZknk|7&+o1Uv^hC+qV9E9>C!w|Zf3CJ_( zs_yky=qPQ@J4%Ws2HCK$B`_^f%?QVNE9nVlGYST~M`iP;9%6Y}Ll;m2o84ddTa9FD zwsu!Yk{ZQ!HXk0KFL{o-Rpc-=?+#yDVYj$fFHbL)@Fm5TbnfxpVBhE<@N`FZunslT==j1>MOAt2Cm*T-3JYP&DI(dc3E*V|>pPS9XVEWuanS zY3tlUh`H{#Rp-el{^oUe=!-Zbg!luIVhOs0LX{7T9$#~!g$>bx=n2C~V#NA-S=={N zWBql0%Sd_vtzeWJMQ^yKBXFpR>mN=-uz29wSv-kc_5yey%!g73{omCXMs0Nt%a1Mc z5(S!i zUawVg(&266HIz#%=F5awXVV6EXI$^e0eJ#*d~Y>hQQnQBrr_uAW<;+nOF zJD_xgK46bDSJ)Xw9`nka_KH4hUBkOnzV12DXYV87p4S^Y36X`LNQO8Ks4Oe+SxEZRcY;1dfPsL7@hTwS5 zsl8E(!&cgQ%(a?poC)=mA2%|!^KYF}h$+Jcs#r?Kl=n<)LbF7aVAJ|%J$GnNJ}D%aqVgQB7RU+B)nDV z1xlFurUmV|m!|#R6MP!Z_$wta%$M|D-2~P z&}0NQS$aM2rj(Q(f7j@`rglvU!TT`gCSSGVU}X4J`T-+?Zm4+^0=Rd+6@1y41N?RV zb%WfFIPjdK%_5ZppOQOYjijH@;U6JxE*bJY%J8>Y9h>S{G0<+|ePkDG;=)<1MWbb6 zlgvB?N9A~JXch;)VerF?BM?r?-1VqhYDh%d?eG+!lBuUQs1E+LujkyWMG3#uRju*N5oJM2l!3yS zawBfS%9!DE;v+y%E?D-bf_CJHA|>(3bL{zaIp*fVm3d3#m!?^kyUOfCEZ@m&giEU{ zOlc~*70uov$1`gCH;l@f_j5kzj=)ik-=SDk2ryW*>#4f1?tial0@o8ApE5*McIq<& z0jnFz|F(IV|7}9!#CT5Ie*bUg@l`#w%?;-ChQ#k74?#G={g+#;k_3)L;?)VP!BX(1 z`&!%Wl6*n$+sAXww>;_@g!DeC!rolpGYim~-+uR4 z&9&w1P65xlb?K`A&&|CbxpS;Hj=E-4n=azmEGsZN!x(0+--g7!oo>=X98?{ervX8+ z889pw8&(O|iO+78b| zO2~9BW>oV~Fm8l7j0NluCnRStgD7Q;v<{tuST)`zA#-xdDa7~6m*2Y}ymgV)Z9%>1 z+ULm+v)l~u{o?oq7Qpg1ET6rO$L?BHf~+VTBYPFUR)SJ#Z}JsPKxNa^PEJz2)W{C~ z13?UWuU&zi#*^P9pM9k~t*eLLcX8#dd&qDkpc%lJS(Zq?|W*4hVTkLGNsif)%6cw6meW`BWBdU_b_XPGB&7kTqv zsOu8*cs`T!EX??armfQZD>cS#@w~?~Y{I*L{!{X8dS=N7@IiX*_hNq~#kYEpfl5{f_7_|sjNw83 z>_iExF{%;bHLCNcM}23Oxn<-y7c+etntg{-W)l7sZX|K1Xa|bzR71QeYb<8|X~!4l zXo(-X{(XlI%9sIRN56oc8SuLv>B%pT#V93g$Y}PyGXs!;fD*K-Z^R|12PQMg|Mf{2D$?WC~ zK0F0QW+8ml&(fj?t^UqV^vL@1lFIt&Fvm6_cnHWlXd!tAXkd+|=kF=3HTa4aLyl}< ziDnXd<|C$@NjwU@{a148^(^mQPI_;T!sxtj3L&vdKpOGj-Z46%aLGmQjQ`PlIvw_& zylxB)?^w|MmItISYGg%j+w}bfWB@=)^3kZx6=<-z&dcZTdrGDA zszQ?r35mEJcwo%KruJI9&dL{_(jK?+wLX{6Cs6dB2%$ImQ`}&s^dlAQJQHn!zIv2I zw-HlP3#Fk`PpmgokjuIdfEu?SLP6$%bVD`HtG0=(tr2qY|4Tf>f$Ci={3kPZHskYR z?!dF1jkQ?DW+x@ah}qf^?jB1)DQ$4ioahPLD|dN*ISjds5GxEi8l4Zay$vPA*Ttfp zrW9J+a>;8z;yIsPH-(ZQYsI}gf^7QSAc`g+XGL4TKTmw`JNptdsKjQh4F`dVFAe0o zH>7nVaPtOG?7fsWR)&V?@IUh4c7S4L`p0BzBIX#Y+h-M*2-Q(+Y=y^d7QZdL*-n{QkwvVBNGeFcG5;KS9k$+M#@%|{0RQ<;$Bp6?rTVns?pkA z%E;xak^fc7;CI+=vwpm%V|kbv^Mkpb>O<_}$8W%xX4YX%@H&BqQSQWZx2)P0*McE32O+i_wv!jk1TY zDdF-)cJbcU-=r;iro-%~YggsrhBAX_i3crFYdPyidJHx!UigR(8XLCuPU%(qGMvtV zYkEmjN+a>>z+yk@JDK?9-K<$5%}(+#s1If?5o0Jv9EI5H^Gq{BRMS%$QOnK>GVNhY zB2C;U$-+Bsu0_N*NM}NBG%Dq-5!i;*1*ex%f z#ThjhMsC#!Z-15R2;}daWsGN>nfx`Y_Zi{wR%^r4Q;5g7ym~KLB%A9z(hvo8qF!q* zzR$O;ZJ*04;$bmDPvY=z0dNYDMlB~SdTGFU^}0_+CRl&&LG<6K@gO5<^Mn*wLlPuN zS>2NZeXC?O7uLWWAY~@>EvIiMF0u20xP~G0$e?b9+N{;y()RbBnp3TVjEl2R{JcNj zcEANtMcDT+=7*g0+4`!C`B+3|W!=`0b4^(1VF=L~rq!MHGsn}Gmn)pIAAn&2)qEo< z&zQ+A%+e=^O8F$eS|j+NO7&FizX@Yjh!VP0ErM958lU`le4&dG5oixd3XS=xceg2? zZOn(m`Ol{+gsj^?IYz?b5N)@AC!24%vRcwHvHH{Rna$4;fhmhO$^s2A@&p>0Pm>|4 z6IJOxs?^;!h$mHaU3JC%BF~QM>h1=&#GK>+2e?f3+pRi=p3hcKY;KD3b~a37NRvIa z=;v9#>jHt#Lu-U)nBxy9hM&5&6M-c4=V~Z%v3pLvw;W>@GnF5YO8~!5cBBnlJGOFp zXac}r2!xR6-C^~gyUt6P#B z3?e$5J_~M$?chtOJRSEh(bG}H+Fz91`v5ZW;iI>Id2q}`dmJ$QkfpvG+mm~_i zY^O4Hv5V%_#|(MHc@2{*dV!-41+6dcrO9s_1Wg??zf}fbKau6N1%>>xj0so~?=4q5 z#xrT1mSS|s$jvt`%0b^ikCgwGYz0M;w#TOdrnY97Ii#A=g6~mW|K+{l(F2a~BL&WPfgA=j1R6xfKmmWcb~%bO_Q-##f$lxukz#!?_a=#g#HTaO zo&xm^!WuxJ8g*vh>={r=MGvp?bgiasSDi?5oo)DR-%5an1H|bh2TT)|LUn(i0LdXf zMjW6+>nl*H`QYh8< z$~=efV`ji~QhGhe!m|F*{vHd@<{RF-vNsTw-(c`vSnC(V?n29FJJ)>XX`IKC(G7ti zuaP0ARd9>I)0YU;SB2)K0Ico#Re@N?5_*)#NlZ9*zw5^*;+Y1ep?sT0|_!1a5$`6S(D?duWO!>E66 z1v|$yQh_}x%$EGU!Q*7!P3A&MB;z%McNKrns%YCeKO}bhsuTGy1{Eh7D&<4I{+9=0 zg*tfsfm}{0?Ie7@-S>G~tbeWvY1<43fEv!a7zE_yUvOACR~Mbn1-~TSA^KbhV_;(< zCYNIePt&mxYb7b+#*WRn3=Wm?a*rTLG)~j(N5=0bVg5eZ;cP|G7>q`vM|_1XZjv{+ zbd=|C*hwKSgAEMh87Th|N;(McIkKX`n%CfvK2K}|fapW(yckw6a!*@0yI?lqR4J+y z3|XO!L*LoFtE{ahDmdJI58N=Z$Uv%Wn>2waX$`4zN_QMt#Wk$i1ddjgDaHP5+`_;8 z44@@_`L$%LR43YB;&=B+lvC0MRNO*` z2WFI|RMyNifYKd7UP76RSd}y-nDj6WHdj~a>K^as0h5ZTf%D=%r4TMn)<#sg52iQ8 zIeK2G*)T0+XvIxd%7f>HXqLwErQIvd#U-018*-9{&K$95lTfdr>Mwg&Uv$T6_g_R4 zoDhZUFQ!CDaQFYM**J_2b9nI&=O*s8Ru)YGuqxmpl@+XC-M4^plKx9qXap3*!!In7 zgO!QyXJr?mj4^11G%nA+l3qjnM;b^EHIzQx6<6Y=yDBu(I21izB0s-Hp06zjyrR!s z*90#rwFWGQZTRvbI^2SH#)ADsM-p}In|jKell?pSHisRHc!x(of&n&R!D(KCup0wU z{nX1Hk(^HbL0F=-^6=F@$974=!|1iPV576WS zuKH=zJ7Aqbr%oW`g!7JE|7-5HE)x5NpI;k<0OkJqW{@`;b#yJdB7BW2Jix-==%>RM z&Xr1Tq6c;UU_29_C{>nauC|q}Y*4yGl{zcTnt2{Lx>%HKDG?Q=&1;d0hT28Do~0S=xO;c~4fLMQ%P&CRYZ1T7+sn%z z;k_mnE;UWUGNVLZ{MgS_~|?#E~(*UHc9w5Y1s0A9wKco6n)& znh$Z$eFbOD1$=lQHeN8h6IvJFH z@42A}$3x-PtfO5)sy1TR*>y+OslE*Hazw;)8UIrS&E9~POfTmb{IT=VDNWkfZ(XNG z=a~T0#fM6IXwJOrQg%D|#Z6*~BO7pP{3kTSdTqeiUR<*a#K${*h&TbEGj-Oa6AU8R z3mbf)Nq`t;nB=Ne2?1wb z{zf?93~zMr7-NG?Sq{}F*Sbo-A9JJO)&6{|Ob6gGP=)?5kG~ys{|q$QXdvEKj*U-xQZewf9Y_dkj?#BdjY}Nyvy(Wja#C!Dap(s_fSv+ys zxF@zz#3P?wz#hnsq^fSdPg^)WxpG8mt(z&7V`Od(O?Z@^|wPZG=T2dxNV=D!rRyO8GyDShz($7rm#CB|E#t{$=?+4 zdq9*iXQ}ohqjul+8Y#(pq6Y2&0g*ZoyR$gt`q?$0CF(gMcR-n}eBQ*QGi+UfMex;t zJ&jlXUP27Vvik$w60F$DSYuSzcgLoxO$VLmb$wm{&*G)mOW*URqxTXtJhyT$HkNjK z@rAj<>q-U{>>c6Wm5o)C77{gxHMjzp@|e23HHWWS6e2)F+R zpqr{9abJO(@sjW%gn2#t=5QE2N!!jc4+TkdsA}Ly^-!%nSSSm8g;vgGy$O*Wat3gi z$s%*hZX7fv@RBDOR#t5X)!QT_@g1&*m=u+0&UcYZ3ipQX#Hg(Qgf;jWWld3_&^=gs z^Ks!~E#G|WE$esZS%BJ_*8FKnDeVt9h3=~q=K^GKVY&neSq@;d^Z;V*93|~9Yw+{_ zT(;ht={@6m$9?f=d^CY{tG z;K5R9>wYvDP-Prs6hKEElN8TVuG^BUp)M723@`P<(#6@!mmkM++TAh2K7Pj4B6a$+n2G>is?IKD9aJ~~qpC?&kMT#x~(2v8plf_UdtCXDA7-$GI8n5h8 zOpRNGnqRY8hNm%e)6ZCcxph0X=5Yx~lr2esCgi>UIr_{cbl zQTXK_+Bl#F=%m2mWAuA-dCUrA8PC*#n9%3Hp+MHazXMpNIfmV*SOhuEuB#;og_D>b zYJo_Qs$lV4(K;;vCI-o-BshdKe~As1G@0g1Alq#}q>}(~1lC7%k|- zNh;)gxe%>lN3ruOd7YeKJk%pjZQgwC2g_=4@<49Pa6`0K>0vgkeqwn4Bb;MuM&v zyfQx*^!YXfFc!?%sY~^id%y*F&O4QB6|=c<(bq3f2=hEuq!QuD)k+hLw5F@`C<#dh-cofEzzAZ4TR zaGvi6dQHr^LoY*0-#3I1PK6HavPQ*n3eM`|cbqiynV#~RPg)}SHT(>wB94ZPo{bh2 z(sVASnu$1^!^wdfhoGWQ6jbZ@zMM=+BRnTk znLDf{D##XZ=X`6lA|zeWr%(mPGL(sMy)nT2Vng69VYBv~RBoEy2A`yiL9fLGc*A>M zOmY-B=e5bBOCp%SP=Qz5{ad}lMB*i8CwFL;o)aLz4rAAWBnBp0b|R~4phrRPZs3JV z$WV~fz>GfD3|30@V&UT+5umdL0BiM0A%M(^RhT{Tfv!47o=%7k;fLJzTi(ASTW~z_ zQ%PjneAr21JZ6Iis=tDkkXf-Z`7j>2nNK;LU#T0ul8~9i4jhn$KV5 zVi>svSy0Z+;~s6yhX4%Sah}1yW-`&HsR0);{bJx;N^uN23FE!qJB;X=9BZM~c8POV zKL?2e=fckAK;3FV&+UsQB(kj*iy@`5LCzseG7gz2e&t268?iq&^wqVib*{5WHrcTK z2`87da3wctESqVti0F!HZQ26PGp~v5#pw^=0yz@yv?@Tnll0Y3OV@LFido|x{*lh} z=Ap0EV-9{k=0Y$(#b~Fvo&Z*ml31p5!$W!Qf^!%ehj*kTIEBZ*sL+Q-mBdWW;l>Ws zsRr|PB*S9Dm)H?$K8=zR8Ex}Lg&zCp`-U5NVZT={NXYE=Om)Aw{ZNSzlT1v~g+y$! zA~d|tr(TEtJpTEYHn$f{06O1m+GwW>Dr7jdPkNv>Z%e80YJP*P96Jwc+QdT$9R7sz zyaWma%buDwTJ%2HIa(E5vlqsE9B5*@1~P;q3ueMBB7*rx3Rb__Bj36wQx~P%)!rry zID^x^51qCx!_jh!@yHe#C`?im)!~w6dIqMqTI;9rkH$&zcBsG!BqqasjJYdr{ndNN zQg?3eNIUKS^%wotnYNGi-p*mrvk{ci$`hK8u39vkkvvA^+1uF=4cBm)jJAkTil4-V zFl(Lmq>6`vxN}Nbg{q>KJA_-gh8w}Cl3zG!PCcA{MDudhL&2uV3eE=_z39hgjRGquTgSn zb*DOYaaw}*g1~)?L?ob<%7FG@SwL8vs_CA{FMjD!hpiA8zK# z%vZgLGn&CEL4je=A?re|gS|0m9(#P-T=+kT0R=oAS{gqR(f}PIe)4ocM>Mdo2xF_Gus3=-nTEP`p~#L zPexfR7crsHoIl0By14C|p}+Gyn6Eo*8~kx=*wv2)GOEP(t#{6UvY)4!C{P?qom%v? z`#J#6lW7xjEPYo1`!N9f8q9W}jTW_VERiD;_`Aa#a=|2AVa*!N8w}|K|9YCQ$NJX2acD4%D#x;ja zJ(IlG7}K;HteDwkl`{a;(XiDW=aIjRq%z6BAP(;hsCe&;_CATpsgRtGJz+k2`>dfx z8hlbnTc6Y>q7v9>6r(QuV3uJ9g%f)8PtKT6@RcPzJ3y~K-DAEN>f8S{cd@YKLwv?> zF>vvJW=10h#5K*+^3m#?NM+yuew-!^}?IEN|!ag@N0S;W-&f9YPWO>S>K{8hAU39eCU6v~8Ph>>y7+ zIDGQk|E-sc5wJ>$j!XL6Vo^9OM$A8ithx@~ZNx&l2gnBTAMqE!Y5{K28iOQ_+0TDZ zjG#=4f~58FQittS8t5!7%{~7W3=UO2m*gl=5;>rP;r_rp00vD!ZDRTWn1<5~6!)^F zv-sA#@vh@_>X1{xZ_7m3tM3t{_kz?4w)?wV9;3d;noMGH_~h#zd zA{vwg!Q|f3Pl5F1DFVQoAg9S;$wK@i8y81Ba{nB645=wQK_}N5$kbev$PFy^4l%b| z6a5)I;w3@!fl=$oY(VHEao(#nT4mP3gm2Fa0I8j_D?hf zd7Z$aJHnX>LYlUV|BSEs!wX}k{Ew;wYiO1^;y+nr?)E0*neiVpvNTx*$S)q7CT!hp|o2f`Ux{ito*ZUa_ zGmVFHF>?Fc?cA^ltcA(+Rt)_qQCA2%Mly^ zn18u#|K9YmgJ??Q{7DBL)SPCHfVQeJW7}F7nZihY*g06aO3;M`Z_%abXpL^EQX*7E zkxfkA2KrDEl4mhc(Q}Cqjog*rF(on{a)k~y(K7?4#8PI+4PVp%YpeR+9+m4@E{TXy z?@X?C7lgiFuk23lRDLfRe%UyQ$xm?Tzz$-S8cGu!vR&>~QQicnX>=%j`NW>i#Bc}cUrQcd}0lRQ_~BTnf&=XrFuo? zK|Oh3oaLZaXve?lXAhGtlNiCi`FyhSI&_1EuAqb1?eX{Fmt60H?xGa?ij02Q4(oBv zvyotWg4#3cq)yw-b962-L&AND z3J-MWUCe)e9Fk7cG)FM`Dr*9T$rWC`Z$N(0JDJNhJ=ZJ43)&8VPFyvO=7~7U!T(6eVAFcel8dI-M$_U-$>EGG!#kkknMXhav&u{OR7Lyd z>1B1F>KCPuQ&;9mKr&JXbWpIxY1%XnnzhVxNv@zh@yA}TV1=`28evQ-ZKs|+n3?ow zLfrKBnUBe9Ar?T&8n(sVoK4` z07Yb1UQge~C{(kru($)DH{C5E4ZNA0r-bnIW)+9}ld{cH&ZI%F+KV$M4A5tIHPw0g zX2E42{%mcdej9W%f%B_o0(}T>LULWTgP|*U03omu5)z1+QxAdJwe^dN>l+dt+*gb)J8h?I^mSO)F&SGMZ z;8p?xzkFGMH`_mkMns8NJ4R8oA3Y z2UiZi_Rf)pOO8q;kg9f%>Nd@xhfIjX)+z9`jiD4kS%QCfnO^CO->#5g1y>7he66%L zu-7B-5PsG%l64O*#4rY`_WEbaX9BVrGBfz5|g>j_nBM>nOJ$YLpS<5X@*xoo*uu$VXx z=yT)~znBwdX}Q!mUq`%s>>5B=&;r-P9vR)o%8w!hQ7r;G&vUSjLuv-4SW3&1eXQ!f zw~E-%9plrR^YS{zLR>{)&K8))8m{AM_*tA&pN-FaA0nL#g9JYEjG)=Tt^tmUhev$` z;RV!3G<_iVJv5l|g$Sbtgub0jNas&AgW*dB7&OZiv>i^hL`Jr0MC2DLECUtFJF2j= zFMG0;4EXjQyFR^;{XnYCehMUpRIOoam7n%69L+U?=gdr^6b(Wgna`{axnt<0j`@z* zX{XIvE@7`Qtv2|NWOo&JAGgx2r|Y1y@mxU zLZyz6>QmABr#v@U-lu(lqEJb2Ac)lN(3%0sC3NBBR^^I-oSXi1w5+Eqk7+Cw{=b<; z&sSHp6C-8vO_60~6L@cT6_EG`9aXn~HrFe$u2EJP=?Mo$Wk0uDwtA!d%ZYsnZ*g_K z{r7->yeZs(gv|tfU&=OTRd@ zehKf_9iw}8r`-jb)CbxxBq(2{Mj*fM{5J&X_juSSFQLbz2Xj^PO0*fi40lI{I2!r|vJ4J#6Ldg$ZYKeaw{Q$(k#wF$`fRAz2dm z+c-+~-t2H>)1T@t?~}F2M9$>_zrz(akmC0dxWtO4LBKFy!*b77kWd5mZ)SC3JnxdV0RW1WA{xicC~|FV8@E0z7TP}kb)_~b^=(SywN6M=1MmNPT_mJ7^Q*%H1sF~XlF}C*1IaGU? zdIEZdA+M=N^RwcC;;Eg8M6dq)%ZO-QX4=Qs_|E3kb;i2`wF=J-s|9kg(jtC0YyR2LF@2P zt%Bk3*1q@k&`RIGD1R_hTu@ZJRFLaZsfP&RxEEeV!FW&AQ`J?i*ZG9{#yMLx^8OO3 zN*HhGoX(d$-^+P;7uU*6I}+V94}DH(>)v#R&xQGvU%p4*6>!{v|MmDr?I3chp~>`G zbba$U(Mxht-NA5#P*FXy*w-{Jn7Cz7UK04tbT=}`JbF2fVh~$>5PMvj?>u4Ea-Edq zOmiEKk<91&nTMlMOrVu`rxSckE8n?+*yU}Q{X;%z$bjC|PV=ET>iyg!QH6Aid!nru z8{xXS?aXro6O_V)Y6LbCHruM>m%WV75@>zC-tV5nJJ`>yH_gMX9R$<*wZs~AxzZw4 z%ys_B0nDZKwb_YQX$2OJ{hia|(}W20$~&r&WzyEnbH8ie8c1pJZ6Fs{Q5$=b5UTQq zRsePDlBvQKo!5=t%HJj=Z%PI=y&Lge?snq1eT;5D7Buy>ib#G6l5eyZYDmruFMIc8 zeLI-fVcGZk`I*(vb!Lxk-`H_`DStZbT4H$q_Wc+SuF{ZP>F2FTxu|lko0|sR9v(KK z)W?^;1Rh)if1}Uom!J84PERfA+V|Qg4kd}UCUy>|rIAXZR`)#}5Z=QESA_7H8Uy-P zO%@ssef%nGY7QZu3&lkXB|evb^EAF6QqR0=@#*2`n@r0ikOcK+A?T%Urd&Mm4-$8u z{cwutL=Y@0Vr${xn0cm#?Y}rkZ`kpQ#@uFCrA&5`|Mk1nLc{!);n=h%YrkuN43Xrq zDX2Cd-xu2pw|1sD(WP3wDBXz-DrY4!(A0m^_T)iRn5C|aG7QKzv z*>+{a7b{yYvPLJ@eU86LVRML5`J4^`rx!Xg*q;<#-D_^1^Xbzg*J1a}$>!M1So>;y zcXxMKv1MpsVWE)Yq{@&B9?{U++ADnF!sJq2+Q~cXyx=NBM-tod-777qWM{1RLmBT{ z+hb1&u4wc?iA_|TYNoY~O?O*c(mWoUo1d?`vp%n>sTsb$ID+Xl_BO1=z_#;75~>h7vlwQ8;T&2P?c ziQs$AJFkSJO!~medEBO5RH$STeN9cxI9}T%2M349q@+TSlSsX3YowGarw)b1G z9@bFh80dMXJZM+T|FDtD* z*km3%+2oM>t-)%Xyt5wgWur@E>C1@iVA|>4kPRQKKiNyl9y@x0r5&Gc$V}wVSVE5F zOIXreJlrQ}SSJ!rOFqeUu?k(DJXy~_$Uey#rX9^EIN6t;toFi%@GseZ`6DJFA>V$w zxy_`6iJM!^+}vDNPOfjJEyB2Dh|6a5F#{uM7qX7r1&M~aDDuYtPEua@KKWFXy`5Uw zscgHIlA!b;2p_j`V$+9(pFz{%_LKN;Bn>Tj#b^H+@C6&cCodjPQ>{2G#u=;(*lG-{^DjkIF^{(F4qt$TI zwN)>9*rfpO>4NNSQnU!7F5cN}O~3mG+x?5bZ`rHBMmE33hhve8CyNUrUMS_IDeYl% zp;E=9Uebz*e2EG+B`3s??amFj>qY~n>?Cx%i{|JqJgnY~=Ipm&78kQFZPl!$X>Gu64}iavT^Y1t4ME`P{WTN4gF|%Dx=D+i!GoJ@bPI9kWl^5wyn$T zh+(rl+}oIY>1*_+et#dm-8Y|vUd1%zkS7i1y9<&xKy5rC4CH9E>&Yn|B4>uht$cY3 zv$`L|9ABrZ#tI<&uPQyk`QVta*Im%XJpp}K%uaehWW%QU-paw3ic*;Uy46VfNiE06 zzzO6+M*#l(YG2GvCZu77XSroz{UJliH9F1i*^cVhyZP1C)$}sRdR!ij`!a_RZXw-m zHcEqDMpsuCI_k!%&m-B=Sd_egA+5&jj@w4se6q*HIPJ+Vb_>PVp(@?WZXUHqY#dBp z71~g5oDxl_#4mB4pbN*-FJu-NQCnmm@%=FOg6N)U?5t};wiaA?MTyP;EM|a5Bz4Y{ zfuw*o*ku1d6{`i(eQ=%r6t%$Hjv#!8bxTzo8iH?npG2g%c zTukf@tA2exJ^_i@nk6z9d|)R**qS8dnM)38>gK`~+uhYHYPZ$Z#a@;P=MyBou15Ym z4_w;?7o1#Z>(T9XNLR6Ey2LOOCwg6HKiU%=&=$bfQB)(Rli%e|TVTxAssC#Ap`q~3i)$BKs_YY0>p9se z(Ryjr0}^?fYbd-OBWr#{*|!+-VS$LgIH77ISXt(TTRumO=Gm`R&Ec+8=Id41gxw*_ z>+D?LYP*VwSca_X-gDpK)Ne9r@%uD^rna*sA#f%kuaVW5!Ff7dzkYuE!T|Xp4MAPV zK2XussB&8fnde>$yEW8!2HW$R1bS<~0l{$~>)K(urxsQ!()HGtLa!Nu zY95(tCO%C=RF~%``t!u}1Wuj_Lsz}X{0!vjKS>VQqSU7}R!sb7S~cup{`_!amb@2i z)(ciKnD19(>2%^_EL<@b+-}8Eyg3To%^aT5Re1rbD!+)=t5nsJSL5kEBiW+)1V#p4 zjOWePPg*UwQlFQwu)#{vB<_qvs#NB5V+cEgiG{pA7fr39e%KG%s@T5~xjd@9;7+wI z%k#_DE^%T5Qplj1o08TD&I(gCh6t z(WD6rZny*2z7?V}_wsH0R!0T*+80|4mQkUXT1W`rZPa6o7%bI^Mltwcs-IM|f3XTm zCcM_V_r0--1Y>Q?JQnDHE6r;n>*!G5$Bm!SuaLCPe=gbp|1NujQfgmw&S3`evm#hG zGb)<s=2)k6=;X|?Ryy`GUN<@sd!Zgv{im=(R@MByJ~9qN4L5}V3zzd3clan(BO(fiOx&fX&bD50C{(gp zdF9piwkz+9QFC>F&+^5}T@GY=iZu65ki$xzih8Ru!Iwg|;(gx`YEP;tHA&Zy`WLJA z->^!noiDSodSx90`#!SpHyb)?ZmX%Xfw)tE^y<{*c@b6EyMxI5SUXOcA64qdv|`Y% z_NDlyn$`ATZB&A>$)M%7PCV~Z4yn+cnDgEIE8Ivr{qF_D!!P10txhl2#FDW}Vrx=%tE3G4cSD{)bkX}$cf-}hx~BpOh#lt- zSOk{5I7V9gY%%-6T+V3j=Ag1%-3v|(_t`%IerJ(#K>8;-?OAf-`kk1HLiKc0&Z7Ex zl$zKa&%j$I#mSs)tA)XkeM1M^Uta)ZkDeE*a4w?owHlo#o1>AtvuapK!yHpn>TAj= z=mIx7Ia-g2F;k62>PRM85W4It!Jtfus24*bpL>0aRjGx!K-&3=F3xy&^VhTTvlBb# zO8~w9_U0l+zwcN)JcAP1(7b%fZu@9D{Cbb&S}07-@A7faxDhK`zfY`3n(zNBtP%`p?K zcgB6qX|ON=Sdu#~lxuLgnf>}AhE^Xcg`ZBo23GXpxxa&VJC)D2O5)&Tb*$V(NY#&N$(cT-edB?BY^!3Idpzn3fh7d%g#d4Gauqau_z7E&nXyx8M7$ zaI)8OX8L3<(dDcs$=uOu1pmZV?hutmd4_$p@IG@1d6RSo(#xan3J4-iYC%l-Go>Hj z`|SXH?in%#%%<_6`p(xUW3Kaw5T3WG-#3|^oi*=ClW1>m@9m7`bQ-a)U=k70M;jS^ zYNFdTSNt3`ZFzt2H}s;TeWRZ;L7~Ruo|~s*BH;IRO-sAX63xn&s4y@%n3tL=Hd0}$ zp{tv?3(T-tS@%{Z8uXD3$JN0V74c1US3~0J;p88=PtjsyD^SyjK6zYW8Dqs04_S!$ zU~^`GX@Rbz)^#f~A|icz+YyRAc;e+jK=R1{_bsQt4svZ*C1qtlg71O2g3Gx5x_ms3 zd|#G)Uw^JjRCM&ccvMzo`EtcDbnX_Xt8jHslI3rqataEA zmG;w6G!qw>S6a%InVD(6In!1=WJSSilMo(3FpnM&tU+U{YO>=|zfb4;%I@y%TLXX1 zjLzj9163-d-9Xh@$P$Z*)E+b=A4>bU)9csed^%Nz-*Jc6>(nQsTWMp0wqL~LE%m`I zcZEV4x&7LenuZwFwG(j=RZX8xAdxmN(RJLj+0Xq!x}1 zjGTKr^U({z1TkPw?!`1eKfNOFHxM4O>~Fr5>jD3;98O%Wdd8QYtetu(jM_B*hV-)i)3BFIY`o#T&%&~(p z2HNqlleoF-H!YjB6&Gm>z0}=#SAL8)B&F&tp_y!93yiRI~usyvD(HVen!Z zwjtkk{BGUB@s+xxU-+wm6H;Dj)!2}@bni;LXyaCzb=1e>b~R(u8fI$HOVfWCN4
  • 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 Rr>D2C)7LY;T&QCo_+P2RCx8F| literal 0 HcmV?d00001 diff --git a/docs/images/desktop-first-run-checklist.png b/docs/images/desktop-first-run-checklist.png new file mode 100644 index 0000000000000000000000000000000000000000..cd15306fb599617e05ed026232f7e6dc93c6482e GIT binary patch literal 12646 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 Q;4&a-aRo3`)X4vT0c88EoB#j- literal 0 HcmV?d00001 diff --git a/docs/images/observation-history-after.png b/docs/images/observation-history-after.png new file mode 100644 index 0000000000000000000000000000000000000000..205439c606ba29736aadc5257bb15090cbfbb5c3 GIT binary patch literal 67308 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

    9c1CIY4koG+s2Tj5Ma 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 literal 0 HcmV?d00001 diff --git a/docs/images/observation-history-settings.png b/docs/images/observation-history-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..93117bc2704b747ca9fe4346bb5ff7b65ca30c86 GIT binary patch literal 51641 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 BqXYl| literal 0 HcmV?d00001 diff --git a/docs/images/plugin_in_codex.png b/docs/images/plugin_in_codex.png new file mode 100644 index 0000000000000000000000000000000000000000..97ed8f93619ff0f0c5c3560f9136e5d172822a54 GIT binary patch literal 287808 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 z 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

    ~OeCLzQt;Gda_G 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 BnK=Le literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index 75fc4b6..9ab606e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -80,7 +80,6 @@ where = ["src"] topicgate = [ "assets/*.png", "assets/*.svg", - "assets/icons/*.svg", "infrastructure/database/alembic.ini", "infrastructure/database/alembic/*.py", "infrastructure/database/alembic/*.mako", diff --git a/src/topicgate/assets/delete.svg b/src/topicgate/assets/delete.svg new file mode 100644 index 0000000..1ba8d04 --- /dev/null +++ b/src/topicgate/assets/delete.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/topicgate/assets/edit.svg b/src/topicgate/assets/edit.svg new file mode 100644 index 0000000..2db66d4 --- /dev/null +++ b/src/topicgate/assets/edit.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/topicgate/assets/icons/broker.svg b/src/topicgate/assets/icons/broker.svg deleted file mode 100644 index 7ba7a06..0000000 --- a/src/topicgate/assets/icons/broker.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - diff --git a/src/topicgate/assets/icons/close.svg b/src/topicgate/assets/icons/close.svg deleted file mode 100644 index a60b987..0000000 --- a/src/topicgate/assets/icons/close.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/src/topicgate/assets/icons/create.svg b/src/topicgate/assets/icons/create.svg deleted file mode 100644 index 8d8336f..0000000 --- a/src/topicgate/assets/icons/create.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/src/topicgate/assets/icons/delete.svg b/src/topicgate/assets/icons/delete.svg deleted file mode 100644 index cf36563..0000000 --- a/src/topicgate/assets/icons/delete.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - diff --git a/src/topicgate/assets/icons/edit.svg b/src/topicgate/assets/icons/edit.svg deleted file mode 100644 index e06a749..0000000 --- a/src/topicgate/assets/icons/edit.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/src/topicgate/assets/icons/help.svg b/src/topicgate/assets/icons/help.svg deleted file mode 100644 index b30bffe..0000000 --- a/src/topicgate/assets/icons/help.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/src/topicgate/assets/icons/observer-tree.svg b/src/topicgate/assets/icons/observer-tree.svg deleted file mode 100644 index 9b6bb85..0000000 --- a/src/topicgate/assets/icons/observer-tree.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - diff --git a/src/topicgate/assets/icons/settings.svg b/src/topicgate/assets/icons/settings.svg deleted file mode 100644 index 78c4a56..0000000 --- a/src/topicgate/assets/icons/settings.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/src/topicgate/gui/components/about_dialog.py b/src/topicgate/gui/components/about_dialog.py index 4dea02a..acf1742 100644 --- a/src/topicgate/gui/components/about_dialog.py +++ b/src/topicgate/gui/components/about_dialog.py @@ -1,7 +1,5 @@ from importlib.metadata import PackageNotFoundError, version -from topicgate.gui.icons import IconName, icon - from PySide6.QtCore import Qt from PySide6.QtWidgets import ( QDialog, @@ -91,7 +89,6 @@ def __init__(self, parent: QWidget | None = None) -> None: layout.addWidget(license_label) buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Close) - buttons.button(QDialogButtonBox.StandardButton.Close).setIcon(icon(IconName.CLOSE)) buttons.rejected.connect(self.reject) layout.addWidget(buttons) diff --git a/src/topicgate/gui/components/broker_connection.py b/src/topicgate/gui/components/broker_connection.py index 928867b..d45abfb 100644 --- a/src/topicgate/gui/components/broker_connection.py +++ b/src/topicgate/gui/components/broker_connection.py @@ -18,7 +18,7 @@ WORKSPACE_CONTROL_HEIGHT, WorkspacePane, ) -from topicgate.gui.icons import IconName, icon +from topicgate.gui.icons import delete_icon, edit_icon from topicgate.gui.main_view_model import MainViewModel @@ -62,7 +62,7 @@ def __init__( edit_button = QToolButton() edit_button.setObjectName("editBrokerProfileButton") - edit_button.setIcon(icon(IconName.EDIT)) + edit_button.setIcon(edit_icon()) edit_button.setIconSize(QSize(14, 14)) edit_button.setToolButtonStyle( Qt.ToolButtonStyle.ToolButtonTextBesideIcon @@ -75,7 +75,7 @@ def __init__( delete_button = QToolButton() delete_button.setObjectName("deleteBrokerProfileButton") - delete_button.setIcon(icon(IconName.DELETE)) + delete_button.setIcon(delete_icon()) delete_button.setIconSize(QSize(14, 14)) delete_button.setToolButtonStyle( Qt.ToolButtonStyle.ToolButtonTextBesideIcon @@ -161,7 +161,7 @@ def _rebuild_popup(self, active_profile_id: object) -> None: self._popup_menu.addAction(action) self._popup_menu.addSeparator() - add_action = QAction(icon(IconName.CREATE), "Add Broker", self._popup_menu) + add_action = QAction("+ Add Broker", self._popup_menu) add_action.setObjectName("addBrokerProfilePaneAction") add_action.setEnabled(self._management_enabled) add_action.triggered.connect(self._request_add) @@ -199,6 +199,7 @@ class BrokerConnectionPane(WorkspacePane): connect_requested = Signal() reconnect_requested = Signal() disconnect_requested = Signal() + inspect_snapshot_requested = Signal() health_requested = Signal() _STATUS_LABELS = { @@ -210,16 +211,12 @@ class BrokerConnectionPane(WorkspacePane): def __init__(self) -> None: super().__init__("Broker", minimum_hint_width=320) - heading_icon = QLabel() - heading_icon.setObjectName("brokerHeadingIcon") - heading_icon.setAccessibleName("Broker") - heading_icon.setPixmap(icon(IconName.BROKER).pixmap(16, 16)) - self.header_layout.insertWidget(0, heading_icon) self.setObjectName("brokerConnectionPane") self.setSizePolicy( QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed, ) + self.setMaximumHeight(112) self._status = "disconnected" self._status_badge = QLabel("Disconnected") @@ -230,37 +227,19 @@ def __init__(self) -> None: QSizePolicy.Policy.Maximum, QSizePolicy.Policy.Preferred, ) - self.header_layout.setStretch(1, 0) + self.header_layout.setStretch(0, 0) self.header_layout.addWidget(self._status_badge) self.header_layout.addStretch(1) - self._manage_button = QToolButton() - self._manage_button.setText("Profiles…") - self._manage_button.setIcon(icon(IconName.SETTINGS)) - self._manage_button.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon) - self._manage_button.setAccessibleName("Manage broker profiles") - self._manage_button.setFixedHeight(WORKSPACE_CONTROL_HEIGHT) - self._manage_button.setSizePolicy( - QSizePolicy.Policy.Fixed, - QSizePolicy.Policy.Fixed, - ) - self._manage_button.setObjectName("manageBrokersButton") - self._manage_button.clicked.connect(lambda: self._profile_selector.showPopup()) broker_grid = QGridLayout() - broker_grid.setHorizontalSpacing(8) - broker_grid.setVerticalSpacing(6) + broker_grid.setSpacing(8) broker_grid.setColumnStretch(0, 1) broker_grid.setColumnStretch(1, 0) - broker_grid.setColumnStretch(2, 0) self._profile_selector = BrokerProfileSelector() self._profile_selector.setObjectName("connectionBrokerSelector") self._profile_selector.setFixedHeight(WORKSPACE_CONTROL_HEIGHT) - self._profile_selector.setSizePolicy( - QSizePolicy.Policy.Expanding, - QSizePolicy.Policy.Fixed, - ) self._profile_selector.setAccessibleName("Active broker profile") - self._profile_selector.setMinimumWidth(80) + self._profile_selector.setMinimumWidth(160) self._profile_selector.currentIndexChanged.connect( self._select_profile ) @@ -274,30 +253,29 @@ def __init__(self) -> None: self.add_profile_requested.emit ) + self._inspect_snapshot_button = QPushButton("Inspect snapshot") + self._inspect_snapshot_button.setObjectName("inspectSnapshotButton") + self._inspect_snapshot_button.setFixedHeight(WORKSPACE_CONTROL_HEIGHT) + self._inspect_snapshot_button.setAccessibleName("Inspect broker snapshot") + self._inspect_snapshot_button.clicked.connect( + self.inspect_snapshot_requested.emit + ) + self._lifecycle_button = QPushButton("Connect") self._lifecycle_button.setObjectName("brokerLifecycleButton") self._lifecycle_button.setFixedHeight(WORKSPACE_CONTROL_HEIGHT) - self._lifecycle_button.setSizePolicy( - QSizePolicy.Policy.Fixed, - QSizePolicy.Policy.Fixed, - ) self._lifecycle_button.setProperty("primary", True) self._lifecycle_button.clicked.connect(self._request_lifecycle_operation) - self._health_button = QPushButton() - self._health_button.setText("Health: Not evaluated") + self._health_button = QPushButton("Health: Not evaluated") self._health_button.setObjectName("brokerHealthSummary") self._health_button.setFixedHeight(WORKSPACE_CONTROL_HEIGHT) - self._health_button.setSizePolicy( - QSizePolicy.Policy.Expanding, - QSizePolicy.Policy.Fixed, - ) self._health_button.setAccessibleName("Inspect broker health") self._health_button.clicked.connect(self.health_requested.emit) broker_grid.addWidget(self._profile_selector, 0, 0) - broker_grid.addWidget(self._manage_button, 0, 1) - broker_grid.addWidget(self._lifecycle_button, 0, 2) - broker_grid.addWidget(self._health_button, 1, 0, 1, 3) + broker_grid.addWidget(self._lifecycle_button, 0, 1) + broker_grid.addWidget(self._health_button, 1, 0) + broker_grid.addWidget(self._inspect_snapshot_button, 1, 1) self.content_layout.addLayout(broker_grid) self.setMaximumHeight(152) @@ -323,16 +301,9 @@ def render(self, view_model: MainViewModel, busy: bool = False) -> None: management_enabled, ) self._profile_selector.setEnabled(management_enabled) - self._manage_button.setEnabled(management_enabled) lifecycle_text, lifecycle_enabled = self._lifecycle_presentation(busy) self._lifecycle_button.setText(lifecycle_text) self._lifecycle_button.setEnabled(lifecycle_enabled) - self._lifecycle_button.setProperty( - "primary", - self._status in {"disconnected", "connecting"}, - ) - self._lifecycle_button.style().unpolish(self._lifecycle_button) - self._lifecycle_button.style().polish(self._lifecycle_button) health = view_model.health_summary counts = self._compact_health_counts(health.label, health.counts) suffix = f" · {counts}" if counts else "" diff --git a/src/topicgate/gui/components/connection_controls.py b/src/topicgate/gui/components/connection_controls.py index c9e026c..fadb9ab 100644 --- a/src/topicgate/gui/components/connection_controls.py +++ b/src/topicgate/gui/components/connection_controls.py @@ -1,8 +1,6 @@ from collections.abc import Callable from uuid import UUID -from topicgate.gui.icons import IconName, icon - from PySide6.QtCore import QObject, QSize, Qt, Signal from PySide6.QtGui import QAction, QColor, QIcon, QPainter, QPixmap from PySide6.QtWidgets import QMenu, QSizePolicy, QToolButton @@ -213,7 +211,6 @@ def _sync_edit_actions( continue action = QAction(profile.name, self) action.setObjectName("editBrokerProfileAction") - action.setIcon(icon(IconName.EDIT)) action.triggered.connect( lambda _checked=False, profile_id=profile.id: ( self.edit_profile_requested.emit(profile_id) diff --git a/src/topicgate/gui/components/diagnostic_profile_editor.py b/src/topicgate/gui/components/diagnostic_profile_editor.py index a89c30c..e58ba68 100644 --- a/src/topicgate/gui/components/diagnostic_profile_editor.py +++ b/src/topicgate/gui/components/diagnostic_profile_editor.py @@ -3,8 +3,6 @@ from dataclasses import replace from uuid import UUID -from topicgate.gui.icons import IconName, icon - from PySide6.QtCore import Qt from PySide6.QtWidgets import ( QComboBox, QDialog, QFormLayout, QHBoxLayout, QLabel, QLineEdit, @@ -32,10 +30,8 @@ def __init__(self, editor, broker_id: UUID, parent: QWidget | None = None) -> No self._profiles.setObjectName("diagnosticProfileSelector") self._profiles.currentIndexChanged.connect(self._select_profile) self._new = QPushButton("Create") - self._new.setIcon(icon(IconName.CREATE)) self._copy = QPushButton("Copy") self._delete = QPushButton("Delete") - self._delete.setIcon(icon(IconName.DELETE)) self._new.clicked.connect(self._create) self._copy.clicked.connect(self._copy_profile) self._delete.clicked.connect(self._delete_profile) diff --git a/src/topicgate/gui/components/event_history_widget.py b/src/topicgate/gui/components/event_history_widget.py index a828792..521d5a3 100644 --- a/src/topicgate/gui/components/event_history_widget.py +++ b/src/topicgate/gui/components/event_history_widget.py @@ -7,35 +7,27 @@ from PySide6.QtWidgets import ( QCheckBox, QComboBox, QDateTimeEdit, QFormLayout, QHBoxLayout, QHeaderView, QLabel, QLineEdit, QPlainTextEdit, QPushButton, QSpinBox, QTableWidget, - QTableWidgetItem, QWidget, + QTableWidgetItem, QVBoxLayout, QWidget, ) -from topicgate.gui.components.workspace_pane import WorkspacePane - if TYPE_CHECKING: from topicgate.gui.main_view_model import MainViewModel -class EventHistoryWidget(WorkspacePane): +class EventHistoryWidget(QWidget): query_requested = Signal(object, str, object, object, object, int) - recording_status_requested = Signal(object) - recording_requested = Signal(object, bool) def __init__(self, view_model: MainViewModel, parent: QWidget | None = None) -> None: - super().__init__("Message history", minimum_hint_width=320) - if parent is not None: - self.setParent(parent) + super().__init__(parent) self._view_model = view_model - self._advanced_mode = True - self._recording_pending = False - self._recording_loading = False - layout = self.content_layout - self.setToolTip( - "Message receipts saved while recording was enabled, oldest first. " - "Earlier gaps cannot be recovered. Health failure history and latest stored values are separate." + layout = QVBoxLayout(self) + description = QLabel( + "Individual TopicGate-observed receipts, oldest first. This is not authoritative " + "broker history. Enable recording per broker in History settings." ) - form = self._form = QFormLayout() - form.setFieldGrowthPolicy(QFormLayout.FieldGrowthPolicy.ExpandingFieldsGrow) + description.setWordWrap(True) + layout.addWidget(description) + form = QFormLayout() self.broker = QComboBox() self.broker.setObjectName("eventHistoryBroker") self.broker.setAccessibleName("Event history broker") @@ -44,6 +36,7 @@ def __init__(self, view_model: MainViewModel, parent: QWidget | None = None) -> self.topic_filter = QLineEdit("#") self.topic_filter.setObjectName("eventHistoryTopicFilter") self.topic_filter.setAccessibleName("Event history MQTT topic filter") + form.addRow("Broker", self.broker) form.addRow("MQTT topic filter", self.topic_filter) self.after_enabled, self.after = self._time_filter(form, "After") self.before_enabled, self.before = self._time_filter(form, "Before") @@ -53,44 +46,20 @@ def __init__(self, view_model: MainViewModel, parent: QWidget | None = None) -> self.limit.setObjectName("eventHistoryLimit") self.limit.setAccessibleName("Event history page size") form.addRow("Events per page", self.limit) - self.recording_status = QLabel("Loading recording status…") - self.recording_status.setObjectName("eventHistoryRecordingStatus") - self.recording_status.setTextFormat(Qt.TextFormat.PlainText) - self.recording_status.setWordWrap(True) - recording_actions = QHBoxLayout() - self.enable_recording = QCheckBox("Record messages") - self.enable_recording.setObjectName("enableEventRecording") - self.enable_recording.setEnabled(False) - self.enable_recording.setToolTip( - "Record future receipts for this broker. Turning recording off keeps saved history." - ) - self.enable_recording.clicked.connect(self._request_recording) - self.reload_recording = QPushButton("Retry") - self.reload_recording.clicked.connect(self.request_recording_status) - broker_row = QHBoxLayout() - broker_row.addWidget(QLabel("Broker")) - broker_row.addWidget(self.broker, 1) - layout.addLayout(broker_row) - recording_actions.addWidget(self.enable_recording) - recording_actions.addWidget(self.recording_status, 1) - recording_actions.addWidget(self.reload_recording) - recording_actions.addStretch() - layout.addLayout(recording_actions) layout.addLayout(form) actions = QHBoxLayout() self.search = QPushButton("Search") - self.search.setProperty("primary", True) - self.search.setToolTip("Start a new search, including newly saved messages.") + self.refresh = QPushButton("Refresh snapshot") self.next_page = QPushButton("Next page") self.next_page.setObjectName("eventHistoryNextPage") self.next_page.setEnabled(False) self.search.clicked.connect(lambda: self._request(False)) + self.refresh.clicked.connect(lambda: self._request(False)) self.next_page.clicked.connect(lambda: self._request(True)) - for button in (self.search, self.next_page): + for button in (self.search, self.refresh, self.next_page): actions.addWidget(button) - actions.addStretch() layout.addLayout(actions) - self.status = QLabel("Search saved message history.") + self.status = QLabel("Search to read committed event history.") self.status.setObjectName("eventHistoryStatus") self.status.setTextFormat(Qt.TextFormat.PlainText) self.status.setWordWrap(True) @@ -100,7 +69,6 @@ def __init__(self, view_model: MainViewModel, parent: QWidget | None = None) -> self.limitations.setAccessibleName("Event history limitations") self.limitations.setReadOnly(True) self.limitations.setMaximumHeight(90) - self.limitations.setVisible(False) layout.addWidget(self.limitations) self.results = QTableWidget(0, 5) self.results.setObjectName("eventHistoryResults") @@ -124,71 +92,10 @@ def __init__(self, view_model: MainViewModel, parent: QWidget | None = None) -> self.limit.valueChanged): signal.connect(view_model.invalidate_event_history) view_model.event_history_changed.connect(self.render) - view_model.history_settings_changed.connect(self._recording_loaded) - view_model.operation_state_changed.connect(self.render_recording) - self.broker.currentIndexChanged.connect(self.request_recording_status) - self.broker.setCurrentIndex(max(0, self.broker.findData(view_model.active_broker_profile.id))) - self.render_recording() - - def select_workspace_broker(self) -> None: - broker_id = self._view_model.active_broker_profile.id - previous = self.broker.currentData() - self.broker.blockSignals(True) - self.broker.clear() - for profile in self._view_model.broker_profiles: - self.broker.addItem(profile.name, profile.id) - self.broker.setCurrentIndex(self.broker.findData(broker_id)) - self.broker.blockSignals(False) - if previous != broker_id: - self._view_model.invalidate_event_history() - self.request_recording_status() - - def _request_recording(self, enabled: bool) -> None: - self._recording_pending = True - self.enable_recording.setEnabled(False) - self.recording_requested.emit(self.broker.currentData(), enabled) - self.render_recording() - - def _recording_loaded(self) -> None: - if self._view_model.history_settings_broker == self.broker.currentData(): - self._recording_loading = False - self._recording_pending = False - self.render_recording() - - def request_recording_status(self) -> None: - self._recording_loading = True - self.render_recording() - self.recording_status_requested.emit(self.broker.currentData()) - - def render_recording(self) -> None: - vm = self._view_model - broker = self.broker.currentData() - status = vm.history_recording_status - known = vm.history_settings_broker == broker and status is not None and status.broker_id == broker - busy = vm.is_busy("history-settings") or self._recording_pending - error = vm.history_settings_error if vm.history_settings_broker == broker else None - self.enable_recording.setEnabled(known and not busy and not error and not self._recording_loading) - self.enable_recording.setChecked(bool(known and status.enabled)) - self.reload_recording.setVisible(bool(error) or not known or self._recording_loading) - self.reload_recording.setEnabled(not busy) - self.broker.setEnabled(not busy) - if self._recording_loading: - message = "Loading recording status…" - elif error: - message = error - elif busy: - message = "Applying recording settings…" - elif known: - message = ( - f"Recording {'enabled' if status.enabled else 'disabled'}" - ) - else: - message = "Recording status unavailable" - self.recording_status.setText(message) @staticmethod def _time_filter(form: QFormLayout, title: str) -> tuple[QCheckBox, QDateTimeEdit]: - enabled = QCheckBox(f"Received {title.lower()}") + enabled = QCheckBox(f"Use {title.lower()} bound") editor = QDateTimeEdit(QDateTime.currentDateTimeUtc()) editor.setDisplayFormat("yyyy-MM-dd HH:mm:ss 'UTC'") editor.setCalendarPopup(True) @@ -217,6 +124,7 @@ def render(self) -> None: vm = self._view_model page = vm.event_history_result self.search.setEnabled(not vm.event_history_busy) + self.refresh.setEnabled(not vm.event_history_busy) self.next_page.setEnabled(not vm.event_history_busy and page is not None and page.next_cursor is not None) self.results.setRowCount(0 if page is None else len(page.events)) self.payload.clear() @@ -231,18 +139,23 @@ def render(self) -> None: if column == 0: item.setData(Qt.ItemDataRole.UserRole, event) self.results.setItem(index, column, item) - self._render_page_status() + status = page.recording + self.status.setText( + f"{len(page.events)} events on this page · committed snapshot · " + f"recording {'enabled' if status.enabled else 'disabled'} · " + f"pending {status.pending} · dropped {status.dropped} · failed {status.failed}. " + f"Oldest retained: {page.usage.oldest_received_at or 'none'}." + ) self.limitations.setPlainText("\n".join( item.replace("follow next_cursor", "use Next page") for item in page.limitations )) else: - self.status.setText("Search saved message history.") + self.status.setText("Search to read committed event history.") self.limitations.clear() if vm.event_history_busy: - self.status.setText("Loading saved event history…") + self.status.setText("Loading committed event history…") elif vm.event_history_error: self.status.setText(vm.event_history_error) - self.limitations.setVisible(bool(self.limitations.toPlainText())) def _inspect(self) -> None: item = self.results.item(self.results.currentRow(), 0) @@ -250,33 +163,8 @@ def _inspect(self) -> None: return event = item.data(Qt.ItemDataRole.UserRole) payload = event.payload_text if event.payload_text is not None else f"base64: {event.payload_base64}" - details = ( + self.payload.setPlainText( f"Observation {event.observation_id} · {event.provenance.replace('_', ' ')} · QoS {event.qos} · " f"retain {event.retain}\nStorage truncated: {event.is_truncated}; " - f"rendering truncated: {event.rendering_truncated}\n\n" - ) if self._advanced_mode else ( - "Partial payload (truncated).\n\n" if event.is_truncated or event.rendering_truncated else "" - ) - self.payload.setPlainText(details + payload) - - def set_advanced_mode(self, advanced: bool) -> None: - self._advanced_mode = advanced - self._form.setRowVisible(self.limit, advanced) - for column in (2, 3): - self.results.setColumnHidden(column, not advanced) - self._render_page_status() - self._inspect() - - def _render_page_status(self) -> None: - page = self._view_model.event_history_result - if page is None or self._view_model.event_history_busy or self._view_model.event_history_error: - return - status = page.recording - detail = ( - f" · pending {status.pending} · dropped {status.dropped} · failed {status.failed}" - if self._advanced_mode else "" - ) - self.status.setText( - f"{len(page.events)} saved events on this page{detail}. " - f"Oldest retained: {page.usage.oldest_received_at or 'none'}." + f"rendering truncated: {event.rendering_truncated}\n\n{payload}" ) diff --git a/src/topicgate/gui/components/expectation_editor.py b/src/topicgate/gui/components/expectation_editor.py index 1f8f8a0..50f1fdf 100644 --- a/src/topicgate/gui/components/expectation_editor.py +++ b/src/topicgate/gui/components/expectation_editor.py @@ -1,8 +1,6 @@ from base64 import b64encode from uuid import UUID -from topicgate.gui.icons import IconName, icon - from PySide6.QtCore import Qt from PySide6.QtWidgets import ( QCheckBox, @@ -51,9 +49,6 @@ def __init__( if target_kind not in {"broker", "topic"}: raise ValueError("target_kind must be 'broker' or 'topic'") self._view_model = view_model - self._draft_baseline = None - self._draft_context = None - self._advanced_mode = True self._target_kind = target_kind self._selected_id: UUID | None = None self._editing = target_kind == "topic" @@ -65,7 +60,6 @@ def __init__( self._context = QLabel() self._context.setObjectName("expectationContext") self._context.setWordWrap(True) - self._context.setTextFormat(Qt.TextFormat.PlainText) layout.addWidget(self._context) self._result_summary = QLabel() self._result_summary.setObjectName("expectationResultSummary") @@ -93,17 +87,11 @@ def __init__( QHeaderView.ResizeMode.ResizeToContents, ) self._table.cellClicked.connect(self._select_row) - self._table.setMaximumHeight(150) - if target_kind == "topic": - self._table.setColumnHidden(1, True) - self._table.setColumnHidden(2, True) - layout.addWidget(self._table) + layout.addWidget(self._table, 1) self._form_container = QWidget() self._form_container.setObjectName("expectationEditingControls") form = QFormLayout(self._form_container) - form.setFormAlignment(Qt.AlignmentFlag.AlignTop) - form.setRowWrapPolicy(QFormLayout.RowWrapPolicy.WrapLongRows) self._form = form self._name = QLineEdit() self._name.setObjectName("expectationName") @@ -189,21 +177,14 @@ def __init__( self._revision = QLabel() self._revision.setObjectName("expectationRevision") form.addRow("Details", self._revision) - self._options_summary = QLabel() - self._options_summary.setObjectName("expectationOptionsSummary") - self._options_summary.setWordWrap(True) - form.addRow(self._options_summary) layout.addWidget(self._form_container) self._form_container.setVisible(self._editing) buttons = QHBoxLayout() self._new_button = QPushButton("Add expectation") - self._new_button.setIcon(icon(IconName.CREATE)) self._new_button.setObjectName("addExpectationButton") self._delete_button = QPushButton("Delete") - self._delete_button.setIcon(icon(IconName.DELETE)) self._delete_button.setObjectName("deleteExpectationButton") - self._delete_button.setProperty("danger", True) self._save_button = QPushButton("Save") self._save_button.setObjectName("saveExpectationButton") self._new_button.clicked.connect(self._new) @@ -214,61 +195,16 @@ def __init__( buttons.addWidget(self._delete_button) buttons.addWidget(self._save_button) layout.addLayout(buttons) - self._feedback = QLabel() - self._feedback.setObjectName("expectationSaveFeedback") - self._feedback.setTextFormat(Qt.TextFormat.PlainText) - self._feedback.setWordWrap(True) - layout.addWidget(self._feedback) - layout.addStretch(1) self._view_model.health_changed.connect(self.render) self.render() - def _form_state(self) -> tuple: - return ( - self._name.text(), self._description.text(), - self._enabled.isChecked(), self._log_action.isChecked(), - self._store_action.isChecked(), self._condition_kind.currentIndex(), - self._expected.currentText(), self._expected_values.toPlainText(), - self._encoding.currentIndex(), - ) - - @property - def has_unsaved_edits(self) -> bool: - return self._draft_baseline is not None and self._form_state() != self._draft_baseline - - def _remember_draft(self) -> None: - self._draft_baseline = self._form_state() - self._draft_context = ( - self._view_model.active_broker_profile.id, - self._view_model.topic if self._target_kind == "topic" else "", - ) - self.set_advanced_mode(self._advanced_mode) - - def set_advanced_mode(self, advanced: bool) -> None: - self._advanced_mode = advanced - for widget in (self._log_action, self._store_action, self._revision, self._description): - self._form.setRowVisible(widget, advanced) - actions = [] - if self._log_action.isChecked(): - actions.append("log transitions") - if self._store_action.isChecked(): - actions.append("save failure history") - self._options_summary.setText("On changes: " + (", ".join(actions) or "no actions") + ".") - self._options_summary.setVisible(not advanced and len(actions) != 2) - def render(self) -> None: - context = ( - self._view_model.active_broker_profile.id, - self._view_model.topic if self._target_kind == "topic" else "", - ) - if self.has_unsaved_edits and self._draft_context == context: - return if self._target_kind == "topic": topic = self._view_model.topic available = bool(topic) and "+" not in topic and "#" not in topic self._context.setText( - f"{self._view_model.active_broker_profile.name} · Topic: {topic}" + f"Expectations for {topic}" if available else "Select an exact topic to configure expectations." ) @@ -322,7 +258,6 @@ def render(self) -> None: self._delete_button.setEnabled(False) if self._target_kind == "broker": self._form_container.setVisible(self._editing) - self._remember_draft() def _new(self) -> None: self._editing = True @@ -343,10 +278,6 @@ def _new(self) -> None: self._expected.setCurrentText(ConnectionStatus.CONNECTED.value) self._delete_button.setEnabled(False) self._name.setFocus(Qt.FocusReason.OtherFocusReason) - self._remember_draft() - - def start_new(self) -> None: - self._new() def _select_row(self, row: int, _column: int) -> None: if 0 <= row < len(self._expectations): @@ -371,7 +302,6 @@ def _load(self, expectation: HealthExpectation) -> None: self._set_expected_values(values) self._revision.setText(f"Revision {expectation.revision}") self._delete_button.setEnabled(True) - self._remember_draft() def select_expectation(self, expectation_id: object) -> None: """Select an expectation from another health presentation.""" @@ -406,12 +336,9 @@ def _save(self) -> None: QMessageBox.warning(self, "Invalid expectation", str(error)) return self._selected_id = None - self._draft_baseline = None self._editing = self._target_kind == "topic" self.render() - self._feedback.setText("Expectation saved for this " + self._target_kind + ".") - def _delete(self) -> None: if self._selected_id is None: return diff --git a/src/topicgate/gui/components/health_inspector.py b/src/topicgate/gui/components/health_inspector.py index 6fbc3db..a206137 100644 --- a/src/topicgate/gui/components/health_inspector.py +++ b/src/topicgate/gui/components/health_inspector.py @@ -1,7 +1,5 @@ from datetime import timezone -from topicgate.gui.icons import IconName, icon - from PySide6.QtCore import QDateTime, Qt, Signal from PySide6.QtWidgets import ( QCheckBox, @@ -14,7 +12,6 @@ QMessageBox, QPlainTextEdit, QPushButton, - QScrollArea, QTableWidget, QTableWidgetItem, QTabWidget, @@ -38,7 +35,6 @@ def __init__(self, view_model: MainViewModel) -> None: super().__init__("Health", minimum_hint_width=320) self.setObjectName("healthInspector") self._view_model = view_model - self._advanced_mode = True self._selected_topic = "" self._selected_expectation = None @@ -47,12 +43,8 @@ def __init__(self, view_model: MainViewModel) -> None: self._tabs.tabBar().setObjectName("healthTabs") self._tabs.addTab(self._overview_page(), "Overview") self._broker_expectations = ExpectationEditor(view_model, "broker") - expectations_scroll = QScrollArea() - expectations_scroll.setWidgetResizable(True) - expectations_scroll.setFrameShape(QScrollArea.Shape.NoFrame) - expectations_scroll.setWidget(self._expectations_page()) - self._tabs.addTab(expectations_scroll, "Expectations") - self._tabs.addTab(self._history_page(), "Failure history") + self._tabs.addTab(self._broker_expectations, "Expectations") + self._tabs.addTab(self._history_page(), "History") self._tabs.addTab(self._changes_page(), "Changes") self._tabs.currentChanged.connect(self._tab_changed) self.content_layout.addWidget(self._tabs, 1) @@ -61,95 +53,6 @@ def __init__(self, view_model: MainViewModel) -> None: self._view_model.configuration_changed.connect(self.render) self.render() - def set_advanced_mode(self, advanced: bool) -> None: - self._advanced_mode = advanced - self._tabs.blockSignals(True) - if not advanced and self._tabs.currentIndex() == 3: - self._tabs.setCurrentIndex(0) - self._tabs.setTabVisible(3, advanced) - self._tabs.setTabEnabled(3, advanced) - self._tabs.blockSignals(False) - self._delete_history_button.setVisible(advanced) - self._history_table.setColumnHidden(4, not advanced) - self._broker_expectations.set_advanced_mode(advanced) - - def _expectations_page(self) -> QWidget: - page = QWidget() - layout = QVBoxLayout(page) - self._expectation_scope = QComboBox() - self._expectation_scope.setObjectName("healthExpectationScope") - self._expectation_scope.addItems(["All expectations", "Broker expectations", "Topic expectations"]) - self._expectation_scope.currentIndexChanged.connect(self._render_expectation_directory) - layout.addWidget(self._expectation_scope) - self._expectation_directory = QTableWidget(0, 2) - self._expectation_directory.setObjectName("healthExpectationDirectory") - self._expectation_directory.setHorizontalHeaderLabels(["Name", "Scope / target"]) - self._expectation_directory.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) - self._expectation_directory.setSelectionMode(QTableWidget.SelectionMode.SingleSelection) - self._expectation_directory.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers) - self._expectation_directory.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch) - self._expectation_directory.itemSelectionChanged.connect( - lambda: self._open_rule.setEnabled(self._expectation_directory.currentRow() >= 0) - ) - self._expectation_directory.cellDoubleClicked.connect(lambda *_: self._open_directory_rule()) - layout.addWidget(self._expectation_directory, 1) - self._directory_status = QLabel() - self._directory_status.setTextFormat(Qt.TextFormat.PlainText) - self._directory_status.setWordWrap(True) - layout.addWidget(self._directory_status) - self._open_rule = QPushButton("Edit selected expectation") - self._open_rule.setIcon(icon(IconName.EDIT)) - self._open_rule.setEnabled(False) - self._open_rule.clicked.connect(self._open_directory_rule) - layout.addWidget(self._open_rule) - add_broker = QPushButton("Add broker expectation") - add_broker.setIcon(icon(IconName.CREATE)) - add_broker.clicked.connect(self._add_broker_expectation) - layout.addWidget(add_broker) - layout.addWidget(self._broker_expectations, 1) - self._broker_expectations.setVisible(False) - return page - - def _add_broker_expectation(self) -> None: - self._broker_expectations.setVisible(True) - self._broker_expectations.start_new() - - def _render_expectation_directory(self) -> None: - from topicgate.core.models.health import TopicTarget - - scope = self._expectation_scope.currentIndex() - selected_cell = self._expectation_directory.item(self._expectation_directory.currentRow(), 0) - selected = None if selected_cell is None else selected_cell.data(Qt.ItemDataRole.UserRole) - rows = tuple( - item for item in self._view_model.all_expectations - if scope == 0 or (scope == 2) == isinstance(item.target, TopicTarget) - ) - self._expectation_directory.setRowCount(0) - self._expectation_directory.setRowCount(len(rows)) - for row, expectation in enumerate(rows): - topic = getattr(expectation.target, "topic", "") - cell = QTableWidgetItem(expectation.name) - cell.setData(Qt.ItemDataRole.UserRole, (topic, expectation.expectation_id)) - self._expectation_directory.setItem(row, 0, cell) - self._expectation_directory.setItem(row, 1, QTableWidgetItem("Topic: " + topic if topic else "Broker connection")) - self._directory_status.setText( - f"{self._view_model.active_broker_profile.name} · {len(rows)} configured expectations in this scope. " - "Select a rule to edit it. Topic rules open with their topic selected." - ) - self._open_rule.setEnabled(False) - for row in range(self._expectation_directory.rowCount()): - if self._expectation_directory.item(row, 0).data(Qt.ItemDataRole.UserRole) == selected: - self._expectation_directory.selectRow(row) - break - if scope == 2: - self._broker_expectations.setVisible(False) - - def _open_directory_rule(self) -> None: - cell = self._expectation_directory.item(self._expectation_directory.currentRow(), 0) - if cell is not None: - topic, expectation_id = cell.data(Qt.ItemDataRole.UserRole) - self.expectation_edit_requested.emit(topic, expectation_id) - def _overview_page(self) -> QWidget: page = QWidget() layout = QVBoxLayout(page) @@ -184,10 +87,8 @@ def _overview_page(self) -> QWidget: self._open_topic = QPushButton("Open topic") self._open_topic.setObjectName("openHealthTopicButton") self._edit_expectation = QPushButton("Edit expectation") - self._edit_expectation.setIcon(icon(IconName.EDIT)) self._edit_expectation.setObjectName("editHealthExpectationButton") self._remove_expectation = QPushButton("Remove") - self._remove_expectation.setIcon(icon(IconName.DELETE)) self._remove_expectation.setObjectName("removeHealthExpectationButton") self._remove_expectation.setProperty("danger", True) self._view_history = QPushButton("View failure history") @@ -218,11 +119,10 @@ def _history_page(self) -> QWidget: self._history_status = QComboBox() self._history_status.setObjectName("healthHistoryStatus") self._history_status.addItems(["all", "active", "recovered"]) - self._query_button = QPushButton("Search") + self._query_button = QPushButton("Apply") self._query_button.setObjectName("queryHealthHistoryButton") self._query_button.clicked.connect(self.query_history) self._delete_history_button = QPushButton("Delete selected") - self._delete_history_button.setIcon(icon(IconName.DELETE)) self._delete_history_button.setObjectName("deleteHealthHistoryButton") self._delete_history_button.setProperty("danger", True) self._delete_history_button.setEnabled(False) @@ -326,7 +226,6 @@ def load_more_history(self) -> None: self._query_history(cursor) def render(self) -> None: - self._render_expectation_directory() summary = self._view_model.health_summary counts = f" — {summary.counts}" if summary.counts else "" self._status.setText( @@ -379,8 +278,6 @@ def show_history(self, topic: str = "") -> None: def select_broker_expectation(self, expectation_id: object) -> None: self._tabs.setCurrentIndex(1) - self._expectation_scope.setCurrentIndex(1) - self._broker_expectations.setVisible(True) self._broker_expectations.select_expectation(expectation_id) def _render_health_rows(self, table: QTableWidget, rows: tuple) -> None: @@ -425,8 +322,7 @@ def _render_delta(self, report) -> None: for row, event in enumerate(events): values = ( str(event.kind).replace("_", " ").title(), - next((item.name for item in self._view_model.all_expectations - if str(event.rule_id) in (str(item.expectation_id), item.rule_id)), str(event.rule_id)), + event.rule_id, event.matched_topic or "broker", self._transition_label( event.previous_status, @@ -575,9 +471,6 @@ def _query_history(self, cursor: int | None) -> None: self._history_message.setText(f"Unable to load failure history: {error}") def _tab_changed(self, index: int) -> None: - if index == 3 and not self._advanced_mode: - self._tabs.setCurrentIndex(0) - return if index == 2: self.query_history() diff --git a/src/topicgate/gui/components/history_settings_widget.py b/src/topicgate/gui/components/history_settings_widget.py index 7dcc54a..5ebc1f7 100644 --- a/src/topicgate/gui/components/history_settings_widget.py +++ b/src/topicgate/gui/components/history_settings_widget.py @@ -4,16 +4,11 @@ from PySide6.QtCore import Signal, Qt from PySide6.QtWidgets import ( - QCheckBox, QComboBox, QFormLayout, QLabel, QLineEdit, QPushButton, QHBoxLayout, + QCheckBox, QComboBox, QFormLayout, QLabel, QLineEdit, QPushButton, QVBoxLayout, QWidget, ) from topicgate.core.models.history_retention import HistoryRetentionPolicy -from topicgate.gui.components.quantity_editor import QuantityEditor -from topicgate.presentation.retention_presentation import ( - AgeUnit, ByteUnit, display_age_value, display_byte_value, - exact_age_seconds, exact_byte_value, -) if TYPE_CHECKING: from topicgate.gui.main_view_model import MainViewModel @@ -51,56 +46,27 @@ def __init__(self, view_model: MainViewModel, parent: QWidget | None = None) -> description.setWordWrap(True) layout.addWidget(description) limits = QFormLayout() - advanced_limits = QFormLayout() - self.advanced_content = QWidget() - self.advanced_content.setLayout(advanced_limits) self.fields: dict[str, QLineEdit] = {} - self.quantities = {} - self.unlimited = {} for name, label in ( - ("max_age_seconds", "Maximum age"), + ("max_age_seconds", "Maximum age (seconds; blank = unlimited)"), ("max_events_per_broker", "Maximum events per broker"), - ("max_events_per_topic", "Maximum events per topic"), - ("max_payload_bytes", "Stored payload across all brokers"), + ("max_events_per_topic", "Maximum events per topic (blank = unlimited)"), + ("max_payload_bytes", "Global history payload budget (bytes)"), ("prune_batch_size", "Pruning batch size (1–500)"), ("prune_interval_seconds", "Idle pruning interval (seconds)"), ): editor = QLineEdit() - field = editor - if name in ("max_age_seconds", "max_payload_bytes"): - units = AgeUnit if name == "max_age_seconds" else ByteUnit - field = QuantityEditor(tuple(unit.value for unit in units), f"history_{name}") - self.quantities[name] = field - editor = field.value - field.changed.connect(self._validate) editor.setObjectName(f"history_{name}") editor.setAccessibleName(label) editor.textChanged.connect(self._validate) self.fields[name] = editor - if name in ("max_age_seconds", "max_events_per_topic"): - row = QWidget() - row_layout = QHBoxLayout(row) - row_layout.setContentsMargins(0, 0, 0, 0) - unlimited = QCheckBox("Unlimited") - unlimited.setObjectName(f"history_{name}Unlimited") - unlimited.toggled.connect(lambda checked, field=field: field.setEnabled(not checked)) - unlimited.toggled.connect(self._validate) - self.unlimited[name] = unlimited - row_layout.addWidget(unlimited) - row_layout.addWidget(field, 1) - field = row - target_form = advanced_limits if name.startswith("prune_") else limits - target_form.addRow(label, field) + limits.addRow(label, editor) layout.addLayout(limits) - layout.addWidget(self.advanced_content) self.error = QLabel() self.error.setObjectName("historySettingsError") self.error.setTextFormat(Qt.TextFormat.PlainText) self.error.setWordWrap(True) self.error.setStyleSheet("color: #b91c1c;") - self.feedback = QLabel() - self.feedback.setObjectName("historySettingsFeedback") - self.feedback.setWordWrap(True) self.summary = QLabel("Load history settings to inspect recording and storage usage.") self.summary.setObjectName("historyUsageSummary") self.summary.setTextFormat(Qt.TextFormat.PlainText) @@ -112,54 +78,39 @@ def __init__(self, view_model: MainViewModel, parent: QWidget | None = None) -> self.reload = QPushButton("Reload settings and usage") self.reload.clicked.connect(lambda: self.load_requested.emit(self.broker.currentData())) layout.addWidget(self.error) - layout.addWidget(self.feedback) layout.addWidget(self.summary) layout.addWidget(self.save) layout.addWidget(self.reload) layout.addStretch() self.broker.currentIndexChanged.connect(self._broker_changed) view_model.history_settings_changed.connect(self.render) - view_model.operation_state_changed.connect(self._validate) - self.broker.setCurrentIndex(max(0, self.broker.findData(view_model.active_broker_profile.id))) def draft_policy(self) -> HistoryRetentionPolicy: values = {} for name, editor in self.fields.items(): value = editor.text().strip() - if name in self.unlimited and self.unlimited[name].isChecked(): + if not value and name in ("max_age_seconds", "max_events_per_topic"): values[name] = None else: try: values[name] = int(value) except ValueError as error: raise ValueError(f"{editor.accessibleName()}: enter a positive integer.") from error - if name == "max_age_seconds": - values[name] = exact_age_seconds(values[name], AgeUnit(self.quantities[name].unit.currentText())) - elif name == "max_payload_bytes": - values[name] = exact_byte_value(values[name], ByteUnit(self.quantities[name].unit.currentText())) return HistoryRetentionPolicy(**values) def render(self) -> None: vm = self._view_model if vm.history_settings_broker != self.broker.currentData(): return - self.feedback.setText(vm.history_settings_feedback) self._loaded = vm.history_policy is not None if vm.history_policy is not None: for name, editor in self.fields.items(): value = getattr(vm.history_policy, name) - if name in self.unlimited: - self.unlimited[name].setChecked(value is None) - if value is not None and name in self.quantities: - value, unit = display_age_value(value) if name == "max_age_seconds" else display_byte_value(value) - self.quantities[name].unit.setCurrentText(unit.value) editor.setText("" if value is None else str(value)) status = vm.history_recording_status usage = vm.history_usage - if status is not None and status.broker_id != self.broker.currentData(): - status, usage = None, None - self.enabled.setEnabled(self._loaded) - self.enabled.setChecked(status.enabled if status is not None else False) + if status is not None: + self.enabled.setChecked(status.enabled) if status is not None and usage is not None: self.summary.setText( f"Broker history: {usage.event_count:,} events; {usage.payload_bytes:,} payload bytes. " @@ -170,8 +121,6 @@ def render(self) -> None: f"Global evictions by limit: {usage.evictions}. " f"Enforcement pending: {'yes' if usage.enforcement_pending else 'no'}." ) - else: - self.summary.setText("History usage is unavailable for this broker. Reload to retry.") self._validate() if vm.history_settings_error: self.error.setText(vm.history_settings_error) @@ -186,24 +135,12 @@ def _validate(self) -> None: self.save.setEnabled(False) else: self.error.clear() - busy = self._view_model.is_busy("history-settings") - self.save.setEnabled(self._loaded and not busy) - self.save.setText("Applying…" if busy else "Apply history settings") - self.broker.setEnabled(not busy) - if self._view_model.history_settings_broker == self.broker.currentData(): - if self._view_model.history_settings_error: - self.error.setText(self._view_model.history_settings_error) + self.save.setEnabled(self._loaded) def _broker_changed(self) -> None: self._loaded = False self.save.setEnabled(False) - self.enabled.setEnabled(False) - self.feedback.clear() - self.summary.setText("Loading history settings for this broker…") self.load_requested.emit(self.broker.currentData()) - def request_load(self) -> None: - self._broker_changed() - def _save(self) -> None: self.save_requested.emit(self.broker.currentData(), self.enabled.isChecked(), self.draft_policy()) diff --git a/src/topicgate/gui/components/mcp_setup_dialog.py b/src/topicgate/gui/components/mcp_setup_dialog.py index be4ae12..329b62f 100644 --- a/src/topicgate/gui/components/mcp_setup_dialog.py +++ b/src/topicgate/gui/components/mcp_setup_dialog.py @@ -1,5 +1,3 @@ -from topicgate.gui.icons import IconName, icon - from PySide6.QtCore import Signal from PySide6.QtGui import QGuiApplication from PySide6.QtWidgets import ( @@ -138,7 +136,6 @@ def __init__( layout.addWidget(self._diagnostic_result) buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Close) - buttons.button(QDialogButtonBox.StandardButton.Close).setIcon(icon(IconName.CLOSE)) buttons.rejected.connect(self.accept) layout.addWidget(buttons) self._render_configuration() diff --git a/src/topicgate/gui/components/observer_tree.py b/src/topicgate/gui/components/observer_tree.py index e333767..4fc36aa 100644 --- a/src/topicgate/gui/components/observer_tree.py +++ b/src/topicgate/gui/components/observer_tree.py @@ -2,6 +2,7 @@ from PySide6.QtGui import QStandardItem, QStandardItemModel from PySide6.QtWidgets import ( QHBoxLayout, + QFrame, QHeaderView, QLabel, QLineEdit, @@ -11,10 +12,8 @@ ) from topicgate.core.models.subscription import Subscription -from topicgate.app.models.broker_snapshot import BrokerSnapshot -from topicgate.presentation.snapshot_presentation import SnapshotQuery from topicgate.gui.components.workspace_pane import WorkspacePane -from topicgate.gui.icons import IconName, icon +from topicgate.gui.icons import delete_icon from topicgate.presentation.topic_presentation import TopicTreeNode TOPIC_ROLE = Qt.ItemDataRole.UserRole + 1 @@ -26,43 +25,28 @@ class ObserverTreePane(WorkspacePane): topic_selected = Signal(str) add_filter_requested = Signal() remove_filter_requested = Signal(object) + empty_state_action_requested = Signal(str) def __init__(self) -> None: super().__init__("Observer Tree") - heading_icon = QLabel() - heading_icon.setPixmap(icon(IconName.OBSERVER_TREE).pixmap(16, 16)) - self.header_layout.insertWidget(0, heading_icon) - self._advanced_mode = True - self._scope_context = None self._items: dict[str, QStandardItem] = {} self._rendering = False controls = QHBoxLayout() self._search_edit = QLineEdit() - self._search_edit.setPlaceholderText("Filter displayed topics…") + self._search_edit.setPlaceholderText("Search topics...") self._search_edit.setAccessibleName("Search observed topics") self._search_edit.setClearButtonEnabled(True) controls.addWidget(self._search_edit, 1) add_button = QToolButton() - add_button.setText("Add subscription") - add_button.setIcon(icon(IconName.CREATE)) - add_button.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon) + add_button.setText("+ Filter") add_button.setToolTip("Add an MQTT subscription filter") add_button.setAccessibleName("Add MQTT subscription filter") add_button.clicked.connect(self.add_filter_requested) controls.addWidget(add_button) self.content_layout.addLayout(controls) - self._scope = QLabel() - self._scope.setObjectName("observerDisplayScope") - self._scope.setTextFormat(Qt.TextFormat.PlainText) - self._scope.setWordWrap(True) - self._scope.setVisible(False) - self._search_status = QLabel() - self._search_status.setObjectName("observerSearchStatus") - self._search_status.setWordWrap(True) - self.content_layout.addWidget(self._search_status) self._model = QStandardItemModel(self) self._model.setHorizontalHeaderLabels(["Topic", "", "State"]) @@ -98,8 +82,24 @@ def __init__(self) -> None: self._tree.clicked.connect(self._topic_activated) self._tree.activated.connect(self._topic_activated) self._search_edit.textChanged.connect(self._proxy.setFilterFixedString) - self._search_edit.textChanged.connect(self._render_search_status) self.content_layout.addWidget(self._tree, 1) + self._empty_state = QFrame() + self._empty_state.setObjectName("observerEmptyState") + self._empty_state.setFrameShape(QFrame.Shape.StyledPanel) + empty_layout = QHBoxLayout(self._empty_state) + self._empty_state_text = QLabel() + self._empty_state_text.setObjectName("observerEmptyStateText") + self._empty_state_text.setWordWrap(True) + empty_layout.addWidget(self._empty_state_text, 1) + self._empty_state_action = QToolButton() + self._empty_state_action.setObjectName("observerEmptyStateAction") + self._empty_state_action.clicked.connect( + lambda: self.empty_state_action_requested.emit( + str(self._empty_state_action.property("action") or "") + ) + ) + empty_layout.addWidget(self._empty_state_action) + self.content_layout.addWidget(self._empty_state) def render( self, @@ -133,27 +133,48 @@ def render( finally: self._rendering = False - def render_scope( - self, query: SnapshotQuery, snapshot: BrokerSnapshot, subscription_count: int, + def render_empty_state( + self, + connection_status: str, + subscriptions: tuple[Subscription, ...], + query_is_filtered: bool, + has_cached_values: bool, + has_topics: bool, ) -> None: - self._scope_context = (query, snapshot, subscription_count) - self._scope.clear() - self._scope.setVisible(False) - self._render_search_status() - - def set_advanced_mode(self, advanced: bool) -> None: - self._advanced_mode = advanced - if self._scope_context is not None: - self.render_scope(*self._scope_context) - - def _render_search_status(self) -> None: - active = bool(self._search_edit.text()) - self._search_status.setText( - "No displayed topics match this text. Clear the search to restore the tree." - if active and self._proxy.rowCount() == 0 - else "Text filter active — snapshot counts above are before this text filter." - ) - self._search_status.setVisible(active) + """Explain why the workspace has no immediately useful live values.""" + if has_topics and not has_cached_values: + self._empty_state.setVisible(False) + return + if not subscriptions: + message, action, label = ( + "No subscriptions. Add a filter to observe values.", + "add-filter", + "Add filter", + ) + elif connection_status == "disconnected": + message, action, label = ( + "Broker disconnected. Stored values may be stale.", + "connect", + "Connect", + ) + elif query_is_filtered and not has_topics: + message, action, label = ( + "No values match the current snapshot filters. Clear filters or capture a new snapshot.", + "clear-filters", + "Clear filters", + ) + else: + message, action, label = ( + "No values observed yet. Capture a snapshot after publishers send messages.", + "observe", + "Reconnect & observe", + ) + self._empty_state_text.setText(message) + self._empty_state_text.setAccessibleName(message) + self._empty_state_action.setText(label) + self._empty_state_action.setAccessibleName(label) + self._empty_state_action.setProperty("action", action) + self._empty_state.setVisible(True) def render_tree( self, @@ -174,13 +195,6 @@ def append(items: tuple[TopicTreeNode, ...]) -> None: def apply_node_presentation(items: tuple[TopicTreeNode, ...]) -> None: for node in items: item = self._items[node.path] - if node.is_subscription: - item.setText(f"Subscription: {node.label}") - item.setToolTip( - f"{node.path}\n" - + ("MQTT subscription. " if node.is_subscription else "") - + ("Observed value in this snapshot." if node.is_observed else "No observed value on this row.") - ) item.setSelectable(node.selectable) item.setData(node.path if node.selectable else None, TOPIC_ROLE) if node.badges: @@ -207,6 +221,11 @@ def collapse_all(self) -> None: def focus_search(self) -> None: self._search_edit.setFocus(Qt.FocusReason.ShortcutFocusReason) + def set_connection_busy(self, busy: bool) -> None: + action = str(self._empty_state_action.property("action") or "") + if action in {"connect", "observe"}: + self._empty_state_action.setEnabled(not busy) + def _add_topic(self, topic: str) -> None: parent = self._model.invisibleRootItem() partial_path: list[str] = [] @@ -240,7 +259,7 @@ def _add_remove_button(self, subscription: Subscription) -> None: button.setObjectName("removeSubscriptionButton") button.setFixedSize(24, 18) button.setIconSize(QSize(12, 12)) - button.setIcon(icon(IconName.DELETE)) + button.setIcon(delete_icon()) button.setStyleSheet( "QToolButton {" " background-color: transparent;" diff --git a/src/topicgate/gui/components/onboarding_panel.py b/src/topicgate/gui/components/onboarding_panel.py index 516f881..2692c5b 100644 --- a/src/topicgate/gui/components/onboarding_panel.py +++ b/src/topicgate/gui/components/onboarding_panel.py @@ -1,5 +1,3 @@ -from topicgate.gui.icons import IconName, icon - from PySide6.QtCore import Qt, Signal from PySide6.QtWidgets import QFrame, QHBoxLayout, QLabel, QPushButton, QVBoxLayout @@ -34,7 +32,6 @@ def __init__(self) -> None: title_row.addWidget(title) title_row.addStretch(1) dismiss = QPushButton("Dismiss") - dismiss.setIcon(icon(IconName.CLOSE)) dismiss.setObjectName("dismissFirstRunChecklistButton") dismiss.setAccessibleName("Dismiss first-run checklist") dismiss.clicked.connect(self.dismissed.emit) diff --git a/src/topicgate/gui/components/publish_pane.py b/src/topicgate/gui/components/publish_pane.py index 4c9c8ed..04a522e 100644 --- a/src/topicgate/gui/components/publish_pane.py +++ b/src/topicgate/gui/components/publish_pane.py @@ -38,10 +38,8 @@ def __init__(self) -> None: self._payload = QPlainTextEdit() self._payload.setObjectName("publishPayload") self._payload.setPlaceholderText("Message payload") - self._payload.setAccessibleName("Message payload") - self._payload.setMinimumHeight(160) - self._payload.setTabChangesFocus(True) - layout.addWidget(self._payload, 1) + self._payload.setMaximumHeight(120) + layout.addWidget(self._payload) self._publish = QPushButton("Publish message") self._publish.setObjectName("publishButton") self._publish.setProperty("primary", True) diff --git a/src/topicgate/gui/components/quantity_editor.py b/src/topicgate/gui/components/quantity_editor.py deleted file mode 100644 index a5ca905..0000000 --- a/src/topicgate/gui/components/quantity_editor.py +++ /dev/null @@ -1,23 +0,0 @@ -from PySide6.QtCore import Signal -from PySide6.QtWidgets import QComboBox, QHBoxLayout, QLineEdit, QWidget - - -class QuantityEditor(QWidget): - changed = Signal() - - def __init__(self, units: tuple[str, ...], object_name: str) -> None: - super().__init__() - layout = QHBoxLayout(self) - layout.setContentsMargins(0, 0, 0, 0) - self.value = QLineEdit() - self.value.setObjectName(f"{object_name}Value") - self.value.setAccessibleName(f"{object_name} value") - self.unit = QComboBox() - self.unit.setObjectName(f"{object_name}Unit") - self.unit.setAccessibleName(f"{object_name} unit") - self.unit.addItems(units) - layout.addWidget(self.value, 1) - layout.addWidget(self.unit) - self.value.textChanged.connect(lambda _text: self.changed.emit()) - self.unit.currentIndexChanged.connect(lambda _index: self.changed.emit()) - diff --git a/src/topicgate/gui/components/snapshot_panel.py b/src/topicgate/gui/components/snapshot_panel.py index 0db6012..72af042 100644 --- a/src/topicgate/gui/components/snapshot_panel.py +++ b/src/topicgate/gui/components/snapshot_panel.py @@ -8,6 +8,7 @@ QLineEdit, QPushButton, QSpinBox, + QToolButton, QVBoxLayout, QWidget, ) @@ -30,12 +31,21 @@ class SnapshotPanel(WorkspacePane): reset_requested = Signal() reconnect_observe_requested = Signal(object) validation_failed = Signal(str) + advanced_changed = Signal(bool) def __init__(self) -> None: super().__init__("Broker snapshot") self.setObjectName("snapshotPanel") self.setMinimumWidth(0) + self._advanced_button = QToolButton() + self._advanced_button.setObjectName("snapshotAdvancedButton") + self._advanced_button.setText("Advanced") + self._advanced_button.setCheckable(True) + self._advanced_button.setAccessibleName( + "Show advanced snapshot details" + ) + self._advanced_button.toggled.connect(self._set_advanced_visible) self._summary_labels = { name: self._summary_label(object_name) for name, object_name in ( @@ -47,6 +57,7 @@ def __init__(self) -> None: } self.header_layout.addWidget(self._summary_labels["connection"]) self.header_layout.addWidget(self._summary_labels["completeness"]) + self.header_layout.addWidget(self._advanced_button) secondary_summary = QHBoxLayout() secondary_summary.setSpacing(12) @@ -179,20 +190,18 @@ def __init__(self) -> None: clear_button, observe_button, ) - self._rendered_query = None + self._rendered_query = SnapshotQuery() self._omitted_count = 0 self.render_query(SnapshotQuery()) self.render_connection_status("disconnected") self._summary_labels["returned"].setText("Returned 0") self._summary_labels["dropped"].setText("Dropped 0") self._summary_labels["completeness"].setText("Limited") + self._set_advanced_visible(False) @property - def has_unsaved_edits(self) -> bool: - try: - return self.query != self._rendered_query - except ValueError: - return True + def is_advanced_visible(self) -> bool: + return self._advanced_button.isChecked() @property def query(self) -> SnapshotQuery: @@ -210,9 +219,10 @@ def query(self) -> SnapshotQuery: payload_limit_bytes=self._payload_limit.value(), ) + def set_advanced_visible(self, visible: bool) -> None: + self._advanced_button.setChecked(visible) + def render_query(self, query: SnapshotQuery) -> None: - if query == self._rendered_query and self.has_unsaved_edits: - return self._rendered_query = query self._topic_filter.setText(query.topic_filter) self._maximum_age.setText( @@ -274,11 +284,23 @@ def set_busy(self, busy: bool) -> None: for widget in self._action_widgets: widget.setEnabled(not busy) + def _set_advanced_visible(self, visible: bool) -> None: + self._advanced_content.setVisible(visible) + self._advanced_button.setText( + "Hide advanced" if visible else "Advanced" + ) + self._advanced_button.setAccessibleName( + "Hide advanced snapshot details" + if visible + else "Show advanced snapshot details" + ) + self.advanced_changed.emit(visible) + def _update_summary_accessibility(self) -> None: summary = ", ".join( label.text() for label in self._summary_labels.values() ) - self.setAccessibleDescription(f"{summary}.") + self._advanced_button.setAccessibleDescription(f"{summary}.") def _render_scope_summary(self) -> None: query = self._rendered_query @@ -306,7 +328,6 @@ def _emit_observe(self) -> None: def _clear_filters(self) -> None: query = SnapshotQuery() - self._rendered_query = None self.render_query(query) self.reset_requested.emit() diff --git a/src/topicgate/gui/components/stored_observations_dialog.py b/src/topicgate/gui/components/stored_observations_dialog.py index b3cac5f..f943575 100644 --- a/src/topicgate/gui/components/stored_observations_dialog.py +++ b/src/topicgate/gui/components/stored_observations_dialog.py @@ -1,8 +1,6 @@ from datetime import datetime from uuid import UUID -from topicgate.gui.icons import IconName, icon - from PySide6.QtCore import QDateTime, Qt, Signal from PySide6.QtWidgets import ( QCheckBox, @@ -16,7 +14,6 @@ QLabel, QLineEdit, QProgressBar, - QScrollArea, QPlainTextEdit, QPushButton, QSpinBox, @@ -33,7 +30,7 @@ from topicgate.core.models.message_filter import OrderType from topicgate.gui.main_view_model import MainViewModel from topicgate.gui.components.history_settings_widget import HistorySettingsWidget -from topicgate.gui.components.quantity_editor import QuantityEditor +from topicgate.gui.components.event_history_widget import EventHistoryWidget from topicgate.presentation.retention_presentation import ( AgeUnit, ByteUnit, @@ -46,6 +43,25 @@ from topicgate.presentation.snapshot_presentation import datetime_label, size_label +class _QuantityEditor(QWidget): + changed = Signal() + + def __init__(self, units: tuple[str, ...], object_name: str) -> None: + super().__init__() + layout = QHBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + self.value = QLineEdit() + self.value.setObjectName(f"{object_name}Value") + self.value.setAccessibleName(f"{object_name} value") + self.unit = QComboBox() + self.unit.setObjectName(f"{object_name}Unit") + self.unit.setAccessibleName(f"{object_name} unit") + self.unit.addItems(units) + layout.addWidget(self.value, 1) + layout.addWidget(self.unit) + self.value.textChanged.connect(lambda _text: self.changed.emit()) + self.unit.currentIndexChanged.connect(lambda _index: self.changed.emit()) + class StoredObservationsDialog(QDialog): """Application-wide retention policy and persisted cache administration.""" @@ -69,36 +85,22 @@ def __init__(self, view_model: MainViewModel, parent=None) -> None: self.tabs = QTabWidget() self.tabs.setObjectName("storedObservationsPages") self.tabs.tabBar().setObjectName("storedObservationsPages") - self.tabs.tabBar().setExpanding(False) + self.tabs.tabBar().setExpanding(True) self.tabs.setAccessibleName("Stored observations settings pages") - self.tabs.addTab(self._history_page(), "Latest stored values") + self.tabs.addTab(self._history_page(), "Latest stored state") + self.event_history = EventHistoryWidget(view_model) + self.tabs.addTab(self.event_history, "Event history") self.tabs.addTab(self._retention_page(), "Latest-state retention") self.tabs.addTab(self._cache_page(), "Cache administration") self.history_settings = HistorySettingsWidget(view_model) self.tabs.addTab(self.history_settings, "History settings") - for index in range(self.tabs.count()): - page = self.tabs.widget(index) - title = self.tabs.tabText(index) - self.tabs.removeTab(index) - scroll = QScrollArea() - scroll.setWidgetResizable(True) - scroll.setFrameShape(QScrollArea.Shape.NoFrame) - scroll.setWidget(page) - self.tabs.insertTab(index, scroll, title) - self.tabs.setCurrentIndex(0) - self.tabs.currentChanged.connect(self._page_changed) layout.addWidget(self.tabs) buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Close) - buttons.button(QDialogButtonBox.StandardButton.Close).setIcon(icon(IconName.CLOSE)) buttons.rejected.connect(self.reject) layout.addWidget(buttons) self._view_model.stored_observations_changed.connect(self.render) self._view_model.operation_state_changed.connect(self._render_busy) - def _page_changed(self) -> None: - if self.tabs.currentIndex() == 3: - self.history_settings.request_load() - def _history_page(self) -> QWidget: page = QWidget() page.setObjectName("observationHistoryPage") @@ -243,7 +245,7 @@ def _retention_page(self) -> QWidget: self.unlimited_age = QCheckBox("Unlimited") self.unlimited_age.setObjectName("unlimitedRetentionAge") self.unlimited_age.setAccessibleName("Keep observations indefinitely") - self.maximum_age = QuantityEditor( + self.maximum_age = _QuantityEditor( tuple(item.value for item in AgeUnit), "maximumRetentionAge", ) @@ -291,7 +293,7 @@ def _retention_page(self) -> QWidget: layout.addLayout(form) layout.addStretch(1) for widget in self._draft_widgets(): - if isinstance(widget, QuantityEditor): + if isinstance(widget, _QuantityEditor): widget.changed.connect(self._draft_changed) elif isinstance(widget, QLineEdit): widget.textChanged.connect(self._draft_changed) @@ -360,17 +362,13 @@ def _cache_page(self) -> QWidget: layout.addWidget(self.topics) actions = QHBoxLayout() for text, name, scope in ( - ("Delete selected cached topics…", "deleteSelectedTopicsButton", "selected_topics"), + ("Delete selected topics…", "deleteSelectedTopicsButton", "selected_topics"), ("Delete unsubscribed…", "deleteUnsubscribedButton", "unsubscribed"), ("Delete broker cache…", "deleteBrokerCacheButton", "broker"), - ("Delete cache for all brokers…", "deleteAllCachesButton", "all_brokers"), + ("Delete all brokers…", "deleteAllCachesButton", "all_brokers"), ): button = QPushButton(text) button.setObjectName(name) - button.setProperty("danger", True) - button.setIcon(icon(IconName.DELETE)) - if scope == "all_brokers": - button.setToolTip("Delete latest stored values for all brokers. Broker profiles, event history, and failure history are not deleted.") button.setAccessibleName(text.rstrip("…")) button.clicked.connect( lambda _checked=False, selected_scope=scope: ( @@ -669,7 +667,7 @@ def integer(name: str, widget: QLineEdit) -> int: errors[name] = str(error) return 0 - def byte_limit(name: str, editor: QuantityEditor) -> int: + def byte_limit(name: str, editor: _QuantityEditor) -> int: try: return self._byte_value(editor) except ValueError as error: @@ -815,8 +813,8 @@ def _integer_field(self, form, title: str, name: str) -> QLineEdit: self._add_error_row(form, title, widget, self._field_name(name)) return widget - def _byte_field(self, form, title: str, name: str) -> QuantityEditor: - widget = QuantityEditor(tuple(item.value for item in ByteUnit), name) + def _byte_field(self, form, title: str, name: str) -> _QuantityEditor: + widget = _QuantityEditor(tuple(item.value for item in ByteUnit), name) widget.setAccessibleName(title) widget.value.setAccessibleName(f"{title} value") widget.unit.setAccessibleName(f"{title} unit") @@ -873,14 +871,14 @@ def _positive_int(widget: QLineEdit) -> int: raise ValueError("Enter a positive integer.") return value - def _byte_value(self, editor: QuantityEditor) -> int: + def _byte_value(self, editor: _QuantityEditor) -> int: return exact_byte_value( self._positive_int(editor.value), ByteUnit(editor.unit.currentText()), ) @staticmethod - def _set_byte_value(editor: QuantityEditor, stored: int) -> None: + def _set_byte_value(editor: _QuantityEditor, stored: int) -> None: value, unit = display_byte_value(stored) editor.value.setText(str(value)) editor.unit.setCurrentText(unit.value) diff --git a/src/topicgate/gui/components/subscription_settings.py b/src/topicgate/gui/components/subscription_settings.py index 4c003ca..a7ac1f7 100644 --- a/src/topicgate/gui/components/subscription_settings.py +++ b/src/topicgate/gui/components/subscription_settings.py @@ -41,7 +41,7 @@ def __init__(self) -> None: ) self.content_layout.addWidget(self._hint) - form = self._form = QFormLayout() + form = QFormLayout() self._filter_edit = QLineEdit() self._qos_combo = self._compact_combo( [ @@ -58,17 +58,13 @@ def __init__(self) -> None: "2 - Do not send retained messages", ] ) - form.addRow("MQTT subscription", self._filter_edit) + form.addRow("Filter", self._filter_edit) form.addRow("QoS", self._qos_combo) form.addRow("Retain", self._retain_as_published) form.addRow("Handling", self._retain_handling) - self._options_summary = QLabel() - self._options_summary.setWordWrap(True) - self._options_summary.setObjectName("subscriptionOptionsSummary") - self._advanced_mode = True - form.addRow(self._options_summary) self.content_layout.addLayout(form) + self.content_layout.addStretch(1) buttons = QHBoxLayout() buttons.addStretch(1) self._apply_button = QPushButton("Apply") @@ -77,22 +73,13 @@ def __init__(self) -> None: self._apply_button.clicked.connect(self._apply) buttons.addWidget(self._apply_button) self.content_layout.addLayout(buttons) - self._feedback = QLabel() - self._feedback.setObjectName("subscriptionApplyFeedback") - self._feedback.setTextFormat(Qt.TextFormat.PlainText) - self._feedback.setWordWrap(True) - self.content_layout.addWidget(self._feedback) - self.content_layout.addStretch(1) def render( self, selected_topic: str, subscription: Subscription | None, ) -> None: - if subscription == self._subscription and self.has_unsaved_edits: - return self._selected_topic = selected_topic - self._feedback.clear() self._subscription = subscription self._set_editor_enabled(subscription is not None) @@ -102,7 +89,6 @@ def render( self._qos_combo.setCurrentIndex(0) self._retain_as_published.setChecked(False) self._retain_handling.setCurrentIndex(0) - self.set_advanced_mode(self._advanced_mode) return if subscription.topic_filter == selected_topic: @@ -115,30 +101,6 @@ def render( self._qos_combo.setCurrentIndex(subscription.qos) self._retain_as_published.setChecked(subscription.retain_as_published) self._retain_handling.setCurrentIndex(subscription.retain_handling) - self.set_advanced_mode(self._advanced_mode) - - @property - def has_unsaved_edits(self) -> bool: - subscription = self._subscription - return subscription is not None and ( - self._filter_edit.text() != subscription.topic_filter - or self._qos_combo.currentIndex() != subscription.qos - or self._retain_as_published.isChecked() != subscription.retain_as_published - or self._retain_handling.currentIndex() != subscription.retain_handling - ) - - def set_advanced_mode(self, advanced: bool) -> None: - self._advanced_mode = advanced - for widget in (self._retain_as_published, self._retain_handling): - self._form.setRowVisible(widget, advanced) - self._options_summary.setText( - "Retained messages: " + self._retain_handling.currentText().split(" - ", 1)[-1] - + ("; preserve retained flag." if self._retain_as_published.isChecked() else ".") - ) - self._options_summary.setVisible( - not advanced and self._subscription is not None - and (self._retain_as_published.isChecked() or self._retain_handling.currentIndex() != 0) - ) def _apply(self) -> None: if self._subscription is None: @@ -155,9 +117,6 @@ def _apply(self) -> None: return self.apply_requested.emit(self._subscription.topic_filter, updated) - def show_feedback(self, message: str) -> None: - self._feedback.setText(message) - def _set_editor_enabled(self, enabled: bool) -> None: for widget in ( self._filter_edit, diff --git a/src/topicgate/gui/components/topic_details.py b/src/topicgate/gui/components/topic_details.py index fbf7d46..ce61691 100644 --- a/src/topicgate/gui/components/topic_details.py +++ b/src/topicgate/gui/components/topic_details.py @@ -21,7 +21,7 @@ WorkspacePane, ) from topicgate.gui.components.topic_metadata import TopicMetadataPane -from topicgate.gui.icons import IconName, icon +from topicgate.gui.icons import edit_icon class TopicDetailsPane(WorkspacePane): @@ -52,7 +52,7 @@ def __init__(self) -> None: self._edit_button = QToolButton() self._edit_button.setObjectName("topicEditButton") self._edit_button.setFixedHeight(WORKSPACE_CONTROL_HEIGHT) - self._edit_button.setIcon(icon(IconName.SETTINGS)) + self._edit_button.setIcon(edit_icon()) self._edit_button.setIconSize(QSize(14, 14)) self._edit_button.setToolButtonStyle( Qt.ToolButtonStyle.ToolButtonTextBesideIcon @@ -77,6 +77,7 @@ def __init__(self) -> None: mode_layout.addWidget(self._mode_tabs, 1) mode_layout.addWidget(self._edit_button) self.content_layout.addLayout(mode_layout) + self._payload_content = QWidget() self._payload_content.setObjectName("topicPayloadContent") payload_layout = QVBoxLayout(self._payload_content) @@ -137,6 +138,7 @@ def __init__(self) -> None: payload_layout.addWidget(self._filter_summary, 1) self._metadata = TopicMetadataPane() + self._metadata.advanced_changed.connect(self._set_advanced_visible) payload_layout.addWidget(self._metadata) self._snapshot_scope_note = QLabel() @@ -264,8 +266,7 @@ def set_settings_visible(self, visible: bool) -> None: def focus_payload(self) -> None: self._decoded_payload.setFocus(Qt.FocusReason.OtherFocusReason) - def set_advanced_mode(self, visible: bool) -> None: - self._metadata.set_advanced_mode(visible) + def _set_advanced_visible(self, visible: bool) -> None: self._advanced_visible = visible self._update_raw_visibility() @@ -285,8 +286,6 @@ def _set_mode(self, index: int) -> None: self._update_raw_visibility() def _toggle_subscription_editing(self, editing: bool) -> None: - self._edit_button.setText("Close settings" if editing else "Settings") - self._edit_button.setIcon(icon(IconName.CLOSE if editing else IconName.SETTINGS)) self._edit_button.setToolTip( "Hide topic settings" if editing diff --git a/src/topicgate/gui/components/topic_metadata.py b/src/topicgate/gui/components/topic_metadata.py index 971aa93..8ca7c61 100644 --- a/src/topicgate/gui/components/topic_metadata.py +++ b/src/topicgate/gui/components/topic_metadata.py @@ -1,5 +1,5 @@ -from PySide6.QtCore import Qt -from PySide6.QtWidgets import QFormLayout, QLabel, QWidget +from PySide6.QtCore import Qt, Signal +from PySide6.QtWidgets import QFormLayout, QLabel, QToolButton, QWidget from topicgate.presentation.topic_presentation import TopicDetail @@ -7,6 +7,8 @@ class TopicMetadataPane(QWidget): """Compact metadata renderer for the selected topic detail.""" + advanced_changed = Signal(bool) + def __init__(self) -> None: super().__init__() self._form = QFormLayout(self) @@ -60,7 +62,14 @@ def __init__(self) -> None: self.qos, self.dropped, ) - self.set_advanced_mode(False) + self._advanced_button = QToolButton() + self._advanced_button.setObjectName("topicMetadataAdvancedButton") + self._advanced_button.setCheckable(True) + self._advanced_button.setText("Advanced") + self._advanced_button.setAccessibleName("Show advanced topic details") + self._advanced_button.toggled.connect(self._set_advanced_visible) + self._form.addRow(self._advanced_button) + self._set_advanced_visible(False) def render(self, detail: TopicDetail) -> None: self.received.setText(detail.received_at) @@ -83,9 +92,18 @@ def render(self, detail: TopicDetail) -> None: self.messages.setText(str(detail.message_count)) self.dropped.setText(str(detail.dropped_message_count)) - def set_advanced_mode(self, advanced: bool) -> None: + def _set_advanced_visible(self, visible: bool) -> None: for widget in self._advanced_widgets: - self._form.setRowVisible(widget, advanced) + self._form.setRowVisible(widget, visible) + self._advanced_button.setText( + "Hide advanced" if visible else "Advanced" + ) + self._advanced_button.setAccessibleName( + "Hide advanced topic details" + if visible + else "Show advanced topic details" + ) + self.advanced_changed.emit(visible) @staticmethod def _label(name: str, text: str = "-") -> QLabel: diff --git a/src/topicgate/gui/icons.py b/src/topicgate/gui/icons.py index ebb8c1f..0fdac2b 100644 --- a/src/topicgate/gui/icons.py +++ b/src/topicgate/gui/icons.py @@ -1,29 +1,11 @@ -"""Shared semantic catalog for desktop control icons.""" - -from enum import StrEnum -from pathlib import Path - from PySide6.QtGui import QIcon from topicgate.paths import asset_path -class IconName(StrEnum): - BROKER = "broker" - CLOSE = "close" - CREATE = "create" - DELETE = "delete" - EDIT = "edit" - HELP = "help" - OBSERVER_TREE = "observer-tree" - SETTINGS = "settings" +def edit_icon() -> QIcon: + return QIcon(asset_path("edit.svg")) -def icon(name: IconName) -> QIcon: - """Load a packaged control icon, rejecting undeclared names and missing assets.""" - if not isinstance(name, IconName): - raise TypeError("Control icons require an IconName") - path = Path(asset_path(f"icons/{name.value}.svg")) - if not path.is_file(): - raise FileNotFoundError(path) - return QIcon(str(path)) +def delete_icon() -> QIcon: + return QIcon(asset_path("delete.svg")) diff --git a/src/topicgate/gui/main_view_model.py b/src/topicgate/gui/main_view_model.py index 4ec2afd..805597c 100644 --- a/src/topicgate/gui/main_view_model.py +++ b/src/topicgate/gui/main_view_model.py @@ -20,10 +20,7 @@ FailureHistoryResult, FindingCheckpoint, ) -from topicgate.app.services.broker_snapshot_service import ( - MAX_SNAPSHOT_RESULT_LIMIT, - BrokerSnapshotService, -) +from topicgate.app.services.broker_snapshot_service import BrokerSnapshotService from topicgate.app.services.expectation_management_service import ( ExpectationManagementService, ) @@ -139,7 +136,6 @@ def __init__( self.history_usage: HistoryUsage | None = None self.history_settings_broker: UUID | None = None self.history_settings_error: str | None = None - self.history_settings_feedback = "" self._history_settings_generation = 0 self.event_history_result: TopicHistoryResult | None = None self.event_history_error: str | None = None @@ -157,7 +153,6 @@ def __init__( self._snapshot_query = SnapshotQuery() self._topic = topic self._snapshot = self._build_current_snapshot(self._snapshot_query) - self._observer_snapshot = self._build_observer_snapshot() self._message_task: asyncio.Task[None] | None = None self._connection_task: asyncio.Task[None] | None = None self._connection_status = self._status_text( @@ -228,11 +223,6 @@ def topic_expectations(self) -> tuple[HealthExpectation, ...]: and item.target.topic == self._topic ) - @property - def all_expectations(self) -> tuple[HealthExpectation, ...]: - """Configured rules for the selected broker, including topic rules.""" - return self._broker_health_expectations() - @property def broker_expectations(self) -> tuple[HealthExpectation, ...]: if self._expectation_management_service is None: @@ -790,17 +780,17 @@ def subscriptions(self) -> tuple[Subscription, ...]: @property def topic_paths(self) -> list[str]: subscriptions = self.subscriptions - observed_topics = tuple(item.topic for item in self._observer_snapshot.topics) + observed_topics = tuple(item.topic for item in self._snapshot.topics) return list(collect_visible_topic_paths(subscriptions, observed_topics)) @property def topic_tree(self) -> tuple[TopicTreeNode, ...]: - observed_topics = tuple(item.topic for item in self._observer_snapshot.topics) + observed_topics = tuple(item.topic for item in self._snapshot.topics) return build_topic_tree( self.topic_paths, self.subscriptions, observed_topics, - self._observer_snapshot.topics, + self._snapshot.topics, ) @property @@ -824,7 +814,7 @@ def selected_wildcard_filter_summary(self) -> WildcardFilterSummary | None: subscription = self.selected_wildcard_subscription if subscription is None: return None - return wildcard_filter_summary(subscription, self._observer_snapshot.topics) + return wildcard_filter_summary(subscription, self._snapshot.topics) async def start(self) -> None: """Load the current value and listen for messages and connection changes.""" @@ -885,7 +875,6 @@ def refresh_snapshot( ) -> None: """Capture current state without reconnecting or mutating observations.""" self._snapshot = self._build_current_snapshot(self._snapshot_query) - self._observer_snapshot = self._build_observer_snapshot() snapshot_topics = {item.topic for item in self._snapshot.topics} if ( clear_invalid_selection @@ -950,7 +939,6 @@ async def query_event_history( self.event_history_changed.emit() async def load_history_settings(self, broker_id: UUID) -> None: - self.history_settings_feedback = "" self._history_settings_generation += 1 generation = self._history_settings_generation try: @@ -973,22 +961,6 @@ async def load_history_settings(self, broker_id: UUID) -> None: self.history_settings_error = None self.history_settings_changed.emit() - async def set_history_recording(self, broker_id: UUID, enabled: bool) -> None: - """Record future receipts without changing retention limits.""" - async with self._operation("history-settings"): - try: - await asyncio.to_thread(self._runtime.set_history_recording, broker_id, enabled) - except Exception: - self.history_settings_broker = broker_id - self.history_settings_error = "Recording could not be changed. Reload status to retry." - self.history_settings_changed.emit() - return - await self.load_history_settings(broker_id) - - if not self.history_settings_error: - self.history_settings_feedback = f"Recording {'enabled' if enabled else 'disabled'}." - self.history_settings_changed.emit() - async def save_history_settings( self, broker_id: UUID, enabled: bool, policy: HistoryRetentionPolicy, ) -> None: @@ -1004,9 +976,6 @@ async def save_history_settings( self.history_settings_changed.emit() return await self.load_history_settings(broker_id) - if not self.history_settings_error: - self.history_settings_feedback = "History settings applied." - self.history_settings_changed.emit() async def load_stored_observations( self, @@ -1353,7 +1322,6 @@ async def reconnect_and_observe( self._preserve_snapshot_during_observation = False self._snapshot_query = selected_query self._snapshot = snapshot - self._observer_snapshot = self._build_observer_snapshot() if self._topic and self._topic not in self.topic_paths: self._topic = "" self._connection_status = snapshot.connection_status @@ -1613,11 +1581,3 @@ def _build_current_snapshot(self, query: SnapshotQuery) -> BrokerSnapshot: result_limit=query.result_limit, payload_limit_bytes=query.payload_limit_bytes, ) - - def _build_observer_snapshot(self) -> BrokerSnapshot: - return self._snapshot_service.build_current( - self.active_broker_profile.id, - topic_filter="#", - result_limit=MAX_SNAPSHOT_RESULT_LIMIT, - payload_limit_bytes=0, - ) diff --git a/src/topicgate/gui/main_window.py b/src/topicgate/gui/main_window.py index 79dcf0c..d19c435 100644 --- a/src/topicgate/gui/main_window.py +++ b/src/topicgate/gui/main_window.py @@ -5,22 +5,17 @@ from typing import Any from uuid import UUID -from topicgate.gui.icons import IconName, icon - from PySide6.QtCore import QByteArray, QSettings, Qt, QTimer from PySide6.QtGui import QAction, QCloseEvent, QIcon, QResizeEvent, QShowEvent from PySide6.QtWidgets import ( QFileDialog, - QLabel, QMainWindow, - QPushButton, QMenu, QMessageBox, QScrollArea, QSplitter, QStackedWidget, QTabWidget, - QTabBar, QVBoxLayout, QWidget, ) @@ -34,7 +29,6 @@ ) from topicgate.gui.components.broker_connection import BrokerConnectionPane from topicgate.gui.components.connection_controls import ConnectionControls -from topicgate.gui.components.event_history_widget import EventHistoryWidget from topicgate.gui.components.log_console import LogConsoleDock from topicgate.gui.components.expectation_editor import ExpectationEditor from topicgate.gui.components.health_inspector import HealthInspector @@ -90,7 +84,6 @@ def __init__( self._diagnostic_profile_editor_window = None self._operation_tasks: set[asyncio.Task[None]] = set() self._accepting_operations = True - self._initial_focus_set = False self._settings = settings or QSettings() self._stored_observations_dialog: StoredObservationsDialog | None = None self._mcp_setup_dialog: McpSetupDialog | None = None @@ -99,7 +92,6 @@ def __init__( ) = None if settings is None: migrate_legacy_settings(self._settings) - self._advanced_mode = self._settings.value("workspace/advancedMode", False, type=bool) self.setWindowTitle(view_model.title) self.setObjectName("mainWindow") self.setStyleSheet(LIGHT_THEME) @@ -111,7 +103,6 @@ def __init__( self._connect_view_model() self._restore_state() self._render_all() - self._apply_advanced_mode() def _create_workspace(self) -> None: self._observer_tree = ObserverTreePane() @@ -159,6 +150,9 @@ def _create_workspace(self) -> None: message, ) ) + self._observer_tree.empty_state_action_requested.connect( + self._handle_empty_state_action + ) self._onboarding.configure_broker_requested.connect( self._show_broker_settings_dialog ) @@ -194,11 +188,7 @@ def _create_workspace(self) -> None: self._settings_tabs.tabBar().setFixedHeight(WORKSPACE_CONTROL_HEIGHT) self._settings_tabs.addTab(self._subscription_settings, "Subscription") self._settings_tabs.addTab(self._topic_expectations, "Expectations") - settings_scroll = QScrollArea() - settings_scroll.setWidgetResizable(True) - settings_scroll.setFrameShape(QScrollArea.Shape.NoFrame) - settings_scroll.setWidget(self._settings_tabs) - self._context_panel.content_layout.addWidget(settings_scroll) + self._context_panel.content_layout.addWidget(self._settings_tabs) self._observer_workspace = QWidget() self._observer_workspace.setObjectName("observerWorkspace") @@ -212,14 +202,6 @@ def _create_workspace(self) -> None: self._topic_inspector.setObjectName("topicInspector") inspector_layout = QVBoxLayout(self._topic_inspector) inspector_layout.setContentsMargins(0, 0, 0, 0) - self._destination_tabs = QTabBar() - self._destination_tabs.setObjectName("workspaceDestinations") - self._destination_tabs.setAccessibleName("Workspace destination") - self._destination_tabs.setExpanding(False) - self._destination_tabs.setDrawBase(True) - for title in ("Health", "Selected", "Snapshot", "History"): - self._destination_tabs.addTab(title) - self._destination_tabs.currentChanged.connect(self._navigate) self._inspector_stack = QStackedWidget() self._inspector_stack.setObjectName("inspectorStack") snapshot_scroll = QScrollArea() @@ -232,15 +214,7 @@ def _create_workspace(self) -> None: snapshot_scroll.setWidget(self._snapshot_panel) self._inspector_stack.addWidget(snapshot_scroll) self._inspector_stack.addWidget(self._topic_details) - self._event_history = EventHistoryWidget(self._view_model) - self._connect_event_history(self._event_history) - history_scroll = QScrollArea() - history_scroll.setWidgetResizable(True) - history_scroll.setFrameShape(QScrollArea.Shape.NoFrame) - history_scroll.setWidget(self._event_history) - self._inspector_stack.addWidget(history_scroll) self._inspector_stack.addWidget(self._health_inspector) - self._inspector_stack.currentChanged.connect(self._render_destination) inspector_layout.addWidget(self._inspector_stack) self._splitter = QSplitter(Qt.Orientation.Horizontal) @@ -257,7 +231,6 @@ def _create_workspace(self) -> None: root_layout = QVBoxLayout(root) root_layout.setContentsMargins(12, 12, 12, 12) root_layout.setSpacing(10) - root_layout.addWidget(self._destination_tabs) root_layout.addWidget(self._onboarding) root_layout.addWidget(self._splitter, 1) self.setCentralWidget(root) @@ -265,42 +238,6 @@ def _create_workspace(self) -> None: self.resize(1280, 800) self._splitter.setSizes([330, 580, 330]) self._context_panel.setHidden(True) - self._render_destination() - - def _render_destination(self) -> None: - self._destination_tabs.blockSignals(True) - self._destination_tabs.setCurrentIndex( - (2, 1, 3, 0)[self._inspector_stack.currentIndex()] - ) - self._destination_tabs.setTabEnabled(1, bool(self._view_model.topic)) - self._destination_tabs.blockSignals(False) - - def _navigate(self, index: int) -> None: - (self._show_health, self._show_topic_details, - self._show_snapshot, self._show_history)[index]() - - def _show_history(self) -> None: - self._inspector_stack.setCurrentIndex(2) - self._context_panel.setHidden(True) - self._event_history.select_workspace_broker() - self._event_history.request_recording_status() - - def _connect_event_history(self, widget: EventHistoryWidget) -> None: - widget.recording_status_requested.connect( - lambda broker_id: self._run_async(self._view_model.load_history_settings(broker_id)) - ) - widget.recording_requested.connect( - lambda broker_id, enabled: self._run_async( - self._view_model.set_history_recording(broker_id, enabled) - ) - ) - widget.query_requested.connect( - lambda broker_id, topic_filter, after, before, cursor, limit: self._run_async( - self._view_model.query_event_history( - broker_id, topic_filter, after, before, cursor, limit - ) - ) - ) def _set_context_panel_visible(self, visible: bool) -> None: self._context_panel.setVisible( @@ -308,10 +245,6 @@ def _set_context_panel_visible(self, visible: bool) -> None: ) def _show_snapshot(self) -> None: - if not self._advanced_mode: - self._inspector_stack.setCurrentWidget(self._health_inspector) - self._context_panel.setHidden(True) - return self._inspector_stack.setCurrentIndex(0) self._context_panel.setHidden(True) @@ -327,7 +260,7 @@ def _show_health(self) -> None: self._schedule_health_refresh() def _show_diagnostic_profiles(self) -> None: - if not self._advanced_mode or self._diagnostic_profile_editor is None: + if self._diagnostic_profile_editor is None: return broker_id = self._view_model.active_broker_profile.id if self._diagnostic_profile_editor_window is None: @@ -365,23 +298,13 @@ def _select_topic(self, topic: str) -> None: self._view_model.select_topic(topic) def _create_actions(self) -> None: - self._advanced_indicator = QLabel("Advanced mode") - self._advanced_indicator.setObjectName("advancedModeIndicator") - self.statusBar().addPermanentWidget(self._advanced_indicator) - self._advanced_mode_action = QAction("Advanced mode", self) - self._advanced_mode_action.setObjectName("advancedModeAction") - self._advanced_mode_action.setCheckable(True) - self._advanced_mode_action.setChecked(self._advanced_mode) - self._advanced_mode_action.toggled.connect(self._request_advanced_mode) self._broker_settings_action = QAction("&Edit broker profile...", self) - self._broker_settings_action.setIcon(icon(IconName.EDIT)) self._broker_settings_action.setObjectName("brokerSettingsAction") self._broker_settings_action.setToolTip("Edit the active broker profile") self._broker_settings_action.triggered.connect( self._show_broker_settings_dialog ) self._add_broker_profile_action = QAction("&Add broker profile...", self) - self._add_broker_profile_action.setIcon(icon(IconName.CREATE)) self._add_broker_profile_action.setObjectName("addBrokerProfileAction") self._add_broker_profile_action.triggered.connect( self._show_create_broker_profile_dialog @@ -390,7 +313,6 @@ def _create_actions(self) -> None: "&Delete broker profile...", self, ) - self._delete_broker_profile_action.setIcon(icon(IconName.DELETE)) self._delete_broker_profile_action.setObjectName( "deleteBrokerProfileAction" ) @@ -439,10 +361,12 @@ def _create_actions(self) -> None: self._broker_connection.disconnect_requested.connect( lambda: self._run_async(self._view_model.disconnect_from_broker()) ) + self._broker_connection.inspect_snapshot_requested.connect( + self._show_snapshot + ) self._broker_connection.health_requested.connect(self._show_health) - self._add_filter_action = QAction("Add subscription", self) - self._add_filter_action.setIcon(icon(IconName.CREATE)) + self._add_filter_action = QAction("Add filter", self) self._add_filter_action.setShortcut("Ctrl+N") self._add_filter_action.setToolTip("Add an MQTT subscription filter") self._add_filter_action.triggered.connect(self._show_add_filter_dialog) @@ -472,12 +396,7 @@ def _create_actions(self) -> None: self._health_action.setShortcut("Ctrl+Shift+H") self._health_action.triggered.connect(self._show_health) - self._history_action = QAction("History", self) - self._history_action.setObjectName("historyAction") - self._history_action.triggered.connect(self._show_history) - self._diagnostic_profiles_action = QAction("Diagnostic profiles...", self) - self._diagnostic_profiles_action.setIcon(icon(IconName.SETTINGS)) self._diagnostic_profiles_action.setObjectName("diagnosticProfilesAction") self._diagnostic_profiles_action.setEnabled( self._diagnostic_profile_editor is not None @@ -487,17 +406,14 @@ def _create_actions(self) -> None: ) self._quit_action = QAction("Quit", self) - self._quit_action.setIcon(icon(IconName.CLOSE)) self._quit_action.setShortcut("Ctrl+Q") self._quit_action.triggered.connect(self.close) self._about_action = QAction("About TopicGate", self) - self._about_action.setIcon(icon(IconName.HELP)) self._about_action.setObjectName("aboutAction") self._about_action.triggered.connect(self._show_about_dialog) self._mcp_setup_action = QAction("MCP setup...", self) - self._mcp_setup_action.setIcon(icon(IconName.SETTINGS)) self._mcp_setup_action.setObjectName("mcpSetupAction") self._mcp_setup_action.setToolTip("Show TopicGate MCP client configuration") self._mcp_setup_action.setShortcut("Ctrl+Shift+M") @@ -530,10 +446,7 @@ def _create_menu_bar(self) -> None: self.menuBar().addAction(self._stored_observations_action) self._view_menu: QMenu = self.menuBar().addMenu("&View") - self._view_menu.addAction(self._advanced_mode_action) - self._view_menu.addSeparator() self._view_menu.addAction(self._health_action) - self._view_menu.addAction(self._history_action) self._view_menu.addAction(self._diagnostic_profiles_action) self._view_menu.addSeparator() self._view_menu.addAction(self._expand_action) @@ -552,83 +465,11 @@ def _create_log_dock(self) -> None: self._log_dock, ) self._console_action.setChecked(self._log_dock.isVisible()) - self._console_action.toggled.connect(self._set_console_visible) + self._console_action.toggled.connect(self._log_dock.setVisible) self._log_dock.visibilityChanged.connect(self._console_action.setChecked) self._view_menu.addSeparator() self._view_menu.addAction(self._console_action) - def _set_console_visible(self, visible: bool) -> None: - if self._advanced_mode: - self._log_visible_preference = visible - self._log_dock.setVisible(visible and self._advanced_mode) - - def _request_advanced_mode(self, advanced: bool) -> None: - if advanced == self._advanced_mode: - return - if not advanced: - open_specialist = any( - window is not None and window.isVisible() - for window in ( - self._stored_observations_dialog, - self._diagnostic_profile_editor_window, - ) - ) - dirty = [ - name for name, pane in ( - ("Snapshot", self._snapshot_panel), - ("Subscription", self._subscription_settings), - ("Topic expectations", self._topic_expectations), - ("Broker expectations", self._health_inspector._broker_expectations), - ) if pane.has_unsaved_edits - ] - if open_specialist or dirty: - self._advanced_mode_action.blockSignals(True) - self._advanced_mode_action.setChecked(self._advanced_mode) - self._advanced_mode_action.blockSignals(False) - detail = ( - "Close Stored observations and Diagnostic profiles before switching. " - "Resolve any edits there using their existing controls." - if open_specialist else - "Unfinished edits in: " + ", ".join(dirty) + ". Finish applying or saving " - "these edits before switching." - ) - QMessageBox.information( - self, "Advanced mode remains active", detail + " No edits were changed." - ) - return - self._advanced_mode = advanced - self._apply_advanced_mode() - self._settings.setValue("workspace/advancedMode", advanced) - self._settings.sync() - - def _apply_advanced_mode(self) -> None: - advanced = self._advanced_mode - self._destination_tabs.blockSignals(True) - self._destination_tabs.setTabVisible(2, advanced) - self._destination_tabs.setTabEnabled(2, advanced) - self._destination_tabs.blockSignals(False) - if not advanced and self._inspector_stack.currentIndex() == 0: - self._show_snapshot() - for action in (self._stored_observations_action, self._diagnostic_profiles_action, - self._console_action): - action.setVisible(advanced) - action.setEnabled(advanced) - self._diagnostic_profiles_action.setEnabled( - advanced and self._diagnostic_profile_editor is not None - ) - self._log_dock.toggleViewAction().setVisible(advanced) - self._log_dock.toggleViewAction().setEnabled(advanced) - self._log_dock.setVisible(advanced and self._log_visible_preference) - self._topic_details.set_advanced_mode(advanced) - self._subscription_settings.set_advanced_mode(advanced) - self._topic_expectations.set_advanced_mode(advanced) - self._health_inspector.set_advanced_mode(advanced) - self._event_history.set_advanced_mode(advanced) - self._observer_tree.set_advanced_mode(advanced) - self._advanced_indicator.setVisible(advanced) - self.statusBar().setVisible(advanced) - self._render_destination() - def _show_about_dialog(self) -> None: AboutDialog(self).open() @@ -712,6 +553,16 @@ def _dismiss_onboarding(self) -> None: self._settings.setValue("onboarding/dismissed", True) self._onboarding.setVisible(False) + def _handle_empty_state_action(self, action: str) -> None: + if action == "add-filter": + self._show_add_filter_dialog() + elif action == "connect": + self._run_async(self._view_model.connect_to_broker()) + elif action == "clear-filters": + self._reset_snapshot_query() + elif action == "observe": + self._confirm_reconnect_and_observe() + def _connect_view_model(self) -> None: self._view_model.state_changed.connect(self._render_details) self._view_model.topics_changed.connect(self._render_tree) @@ -760,13 +611,21 @@ def _render_tree(self) -> None: self._view_model.snapshot_health ) snapshot = self._view_model.broker_snapshot - self._observer_tree.render_scope( - self._view_model.snapshot_query, snapshot, len(self._view_model.subscriptions) + self._observer_tree.render_empty_state( + self._view_model.connection_status, + self._view_model.subscriptions, + self._snapshot_query_is_filtered(), + bool(snapshot.topics) + and all(item.source.value == "stored" for item in snapshot.topics), + bool(snapshot.topics), + ) + self._observer_tree.set_connection_busy( + self._view_model.is_busy("broker") + or self._view_model.is_busy("connection") ) self._render_broker_connection() def _render_details(self) -> None: - self._render_destination() self._topic_details.render(self._view_model) self._topic_expectations.render() if ( @@ -794,7 +653,6 @@ def _render_connection(self) -> None: self._render_onboarding() def _render_broker_profiles(self) -> None: - self._event_history.select_workspace_broker() self._render_connection_controls() self._render_onboarding() @@ -847,6 +705,7 @@ def _render_operation_state(self) -> None: self._snapshot_panel.set_busy( exclusive_busy ) + self._observer_tree.set_connection_busy(exclusive_busy) self._stored_observations_action.setEnabled( not exclusive_busy ) @@ -881,9 +740,16 @@ def _render_onboarding(self) -> None: ), ) + def _snapshot_query_is_filtered(self) -> bool: + query = self._view_model.snapshot_query + return ( + query.topic_filter != "#" + or query.max_age_seconds is not None + or query.result_limit != SnapshotQuery().result_limit + or query.payload_limit_bytes != SnapshotQuery().payload_limit_bytes + ) + def _show_stored_observations(self) -> None: - if not self._advanced_mode: - return dialog = self._stored_observations_dialog if dialog is None: dialog = StoredObservationsDialog(self._view_model, self) @@ -891,6 +757,11 @@ def _show_stored_observations(self) -> None: dialog.history_settings.load_requested.connect( lambda broker_id: self._run_async(self._view_model.load_history_settings(broker_id)) ) + dialog.event_history.query_requested.connect( + lambda broker_id, topic_filter, after, before, cursor, limit: self._run_async( + self._view_model.query_event_history(broker_id, topic_filter, after, before, cursor, limit) + ) + ) dialog.history_settings.save_requested.connect( lambda broker_id, enabled, policy: self._run_async( self._view_model.save_history_settings(broker_id, enabled, policy) @@ -947,6 +818,7 @@ def _show_stored_observations(self) -> None: dialog.raise_() dialog.activateWindow() self._run_async(self._view_model.load_stored_observations()) + self._run_async(self._view_model.load_history_settings(dialog.history_settings.broker.currentData())) async def _preview_and_save_retention_policy(self, policy) -> None: preview = await self._view_model.preview_retention_policy(policy) @@ -1113,7 +985,6 @@ def _show_operation_error(self, title: str, message: str) -> None: "Edit broker profile...", QMessageBox.ButtonRole.ActionRole ) close = dialog.addButton(QMessageBox.StandardButton.Close) - close.setIcon(icon(IconName.CLOSE)) dialog.setDefaultButton(close) dialog.exec() if dialog.clickedButton() is retry: @@ -1126,14 +997,11 @@ def _apply_subscription( original_filter: str, subscription: Subscription, ) -> None: - self._run_async(self._save_subscription(original_filter, subscription)) - - async def _save_subscription( - self, original_filter: str, subscription: Subscription, - ) -> None: - await self._view_model.update_subscription(original_filter, subscription) - self._subscription_settings.show_feedback( - f"Subscription applied: {subscription.topic_filter}" + self._run_async( + self._view_model.update_subscription( + original_filter, + subscription, + ) ) def _show_add_filter_dialog(self) -> None: @@ -1199,6 +1067,7 @@ def _confirm_broker_profile_switch(self, profile_id: UUID) -> None: ) if result == QMessageBox.StandardButton.Yes: self._render_connection_controls(True) + self._observer_tree.set_connection_busy(True) self._run_async( self._switch_broker_profile(profile_id, next_profile.config) ) @@ -1217,6 +1086,7 @@ async def _switch_broker_profile( if self._view_model.active_broker_profile.id != previous_profile_id: self._show_snapshot() self._render_connection_controls() + self._observer_tree.set_connection_busy(False) def _confirm_delete_broker_profile( self, @@ -1248,6 +1118,7 @@ def _confirm_delete_broker_profile( ) if result == QMessageBox.StandardButton.Yes: self._render_connection_controls(True) + self._observer_tree.set_connection_busy(True) self._run_async(self._delete_broker_profile(profile.id)) async def _delete_broker_profile(self, profile_id: UUID) -> None: @@ -1255,6 +1126,7 @@ async def _delete_broker_profile(self, profile_id: UUID) -> None: await self._view_model.delete_broker_profile(profile_id) finally: self._render_connection_controls() + self._observer_tree.set_connection_busy(False) def _apply_broker_settings(self, dialog: BrokerSettingsDialog) -> None: try: @@ -1371,13 +1243,16 @@ def _restore_state(self) -> None: if selected_topic: self._view_model.select_topic(selected_topic) self._restore_snapshot_preferences() - self._show_health() - self._log_visible_preference = self._settings.value( + if self._view_model.topic: + self._show_topic_details() + else: + self._show_snapshot() + log_visible = self._settings.value( "workspace/logVisible", False, type=bool, ) - self._log_dock.setVisible(self._log_visible_preference and self._advanced_mode) + self._log_dock.setVisible(log_visible) def _restore_snapshot_preferences(self) -> None: topic_filter = str( @@ -1403,6 +1278,9 @@ def _restore_snapshot_preferences(self) -> None: self._view_model.apply_snapshot_query(query) except (TypeError, ValueError): self._view_model.reset_snapshot_query() + self._snapshot_panel.set_advanced_visible( + self._settings.value("workspace/snapshotExpanded", False, type=bool) + ) def _save_snapshot_preferences(self) -> None: query = self._view_model.snapshot_query @@ -1432,7 +1310,11 @@ def closeEvent(self, event: QCloseEvent) -> None: ) self._settings.setValue( "workspace/logVisible", - self._log_visible_preference, + self._log_dock.isVisible(), + ) + self._settings.setValue( + "workspace/snapshotExpanded", + self._snapshot_panel.is_advanced_visible, ) self._save_snapshot_preferences() self._settings.sync() @@ -1440,9 +1322,4 @@ def closeEvent(self, event: QCloseEvent) -> None: def showEvent(self, event: QShowEvent) -> None: super().showEvent(event) - if not self._initial_focus_set: - self._initial_focus_set = True - if self._inspector_stack.currentWidget() is self._topic_details: - self._topic_details.focus_payload() - else: - self._observer_tree.focus_search() + self._topic_details.focus_payload() diff --git a/src/topicgate/gui/theme.py b/src/topicgate/gui/theme.py index 05ce533..b5847df 100644 --- a/src/topicgate/gui/theme.py +++ b/src/topicgate/gui/theme.py @@ -3,13 +3,12 @@ LIGHT_THEME = """ -QTabBar#workspaceDestinations::tab { padding: 7px 10px; color: #4b5563; border-bottom: 2px solid transparent; } -QTabBar#workspaceDestinations::tab:selected { color: #202124; border-bottom: 2px solid #405f78; font-weight: bold; } -QTabBar#workspaceDestinations::tab:disabled { color: #89939f; } QWidget { color: #202124; font-size: 13px; } QMainWindow, QDialog, QMessageBox, QWidget#applicationRoot { background: #f3f4f6; color: #202124; } QMessageBox QLabel { background: transparent; color: #202124; } QFrame[workspacePane="true"] { background: #ffffff; border: 1px solid #c8ced6; border-radius: 8px; } +QFrame#observerEmptyState { background: #f8fafc; border: 1px solid #c8ced6; border-radius: 5px; } +QLabel#observerEmptyStateText { background: transparent; color: #4b5563; } QWidget#snapshotPanel, QWidget#snapshotAdvancedContent, QGroupBox#snapshotControls, QGroupBox#snapshotHealthPanel { background: #ffffff; } QScrollArea#snapshotPanelScrollArea { background: #ffffff; } QToolButton#snapshotAdvancedButton { border: 0; background: transparent; font-weight: 650; padding: 3px 5px; } @@ -39,15 +38,11 @@ QLabel#brokerConnectionStatus[connectionState="disconnected"] { color: #4b5563; background: #e9edf1; } QPushButton#brokerHealthSummary, QPushButton#topicHealthBadge { text-align: left; font-weight: 650; padding: 3px 8px; } QPushButton#topicHealthBadge { border-radius: 9px; font-size: 11px; } -QPushButton#brokerHealthSummary { color: #4b5563; background: #f8fafc; border: 1px solid #d8dde3; border-left: 3px solid #89939f; border-radius: 5px; } -QPushButton#brokerHealthSummary:hover { background: #f1f4f7; border-color: #b8c0ca; border-left-color: #6f7b87; } -QPushButton#brokerHealthSummary[healthTone="success"] { color: #11653f; background: #f5fbf8; border-color: #cce7d9; border-left-color: #4ca878; } -QPushButton#brokerHealthSummary[healthTone="success"]:hover { background: #ebf7f1; border-color: #a8dec2; border-left-color: #3f9166; } -QPushButton#brokerHealthSummary[healthTone="problem"] { color: #8f2525; background: #fff8f8; border-color: #ead0d0; border-left-color: #c65353; } -QPushButton#brokerHealthSummary[healthTone="problem"]:hover { background: #fff0f0; border-color: #d7a4a4; border-left-color: #ad4141; } -QPushButton#brokerHealthSummary[healthTone="warning"] { color: #8a4b00; background: #fffaf0; border-color: #eadbbd; border-left-color: #c58a29; } -QPushButton#brokerHealthSummary[healthTone="warning"]:hover { background: #fff3dc; border-color: #e3c68f; border-left-color: #ac741e; } -QPushButton#brokerHealthSummary[healthTone="neutral"] { color: #4b5563; } +QPushButton#brokerHealthSummary { color: #4b5563; background: #fbfcfd; border-color: #c8ced6; } +QPushButton#brokerHealthSummary[healthTone="success"] { color: #11653f; border-left: 3px solid #4ca878; } +QPushButton#brokerHealthSummary[healthTone="problem"] { color: #8f2525; background: #fff8f8; border-left: 3px solid #c65353; } +QPushButton#brokerHealthSummary[healthTone="warning"] { color: #8a4b00; background: #fffaf0; border-left: 3px solid #c58a29; } +QPushButton#brokerHealthSummary[healthTone="neutral"] { color: #4b5563; border-left: 3px solid #89939f; } QPushButton#topicHealthBadge[healthTone="success"] { color: #11653f; background: #dcf7e9; border-color: #a8dec2; } QPushButton#topicHealthBadge[healthTone="problem"] { color: #8f2525; background: #fff0f0; border-color: #d7a4a4; } QPushButton#topicHealthBadge[healthTone="warning"] { color: #8a4b00; background: #fff0d5; border-color: #e3c68f; } diff --git a/src/topicgate/presentation/snapshot_presentation.py b/src/topicgate/presentation/snapshot_presentation.py index 48318af..bb94edf 100644 --- a/src/topicgate/presentation/snapshot_presentation.py +++ b/src/topicgate/presentation/snapshot_presentation.py @@ -152,6 +152,6 @@ def topic_omission_notice( else: reason = "the active snapshot bounds omit it" return ( - "Current value available, but excluded from snapshot values and counts because " + "Current value available, but omitted from the observer tree because " f"{reason}." ) diff --git a/tests/test_event_history_gui.py b/tests/test_event_history_gui.py index 26a4519..f6f3a13 100644 --- a/tests/test_event_history_gui.py +++ b/tests/test_event_history_gui.py @@ -2,15 +2,13 @@ from threading import Event from unittest.mock import Mock -from PySide6.QtWidgets import QApplication, QPushButton +from PySide6.QtWidgets import QApplication from topicgate.app.services.history_retention_service import HistoryRetentionService from topicgate.app.services.topic_history_service import TopicHistoryService from topicgate.core.models.history_recording import HistoryRecordingStatus from topicgate.core.models.history_retention import HistoryRetentionPolicy, HistoryUsage -from topicgate.gui.components.event_history_widget import EventHistoryWidget from topicgate.gui.components.stored_observations_dialog import StoredObservationsDialog -from topicgate.gui.components.workspace_pane import WorkspacePane from topicgate.gui.main_view_model import MainViewModel from test_gui import FakeGuiRepository, runtime_for from test_observation_history_repository import event @@ -28,31 +26,18 @@ def make_page(broker): lambda owner: HistoryRecordingStatus(owner, dropped=2)).query(broker, "#", limit=1) -def test_event_history_reuses_the_workspace_pane_design(): - app = QApplication.instance() or QApplication([]) - widget = EventHistoryWidget(MainViewModel(runtime_for(FakeGuiRepository()))) - - assert isinstance(widget, WorkspacePane) - assert widget.property("workspacePane") is True - assert widget.heading.text() == "Message history" - assert widget.header_layout.indexOf(widget.heading) == 0 - - widget.close() - app.processEvents() - - def test_event_page_separates_latest_state_and_resets_cursor_on_edits(): app = QApplication.instance() or QApplication([]) vm = MainViewModel(runtime_for(FakeGuiRepository())) dialog = StoredObservationsDialog(vm) - widget = EventHistoryWidget(vm) - assert dialog.tabs.tabText(0) == "Latest stored values" - assert "Event history" not in [dialog.tabs.tabText(i) for i in range(dialog.tabs.count())] + widget = dialog.event_history + assert dialog.tabs.tabText(0) == "Latest stored state" + assert dialog.tabs.tabText(1) == "Event history" vm.event_history_result = make_page(widget.broker.currentData()) vm.event_history_changed.emit() assert widget.results.rowCount() == 1 assert widget.next_page.isEnabled() - assert "recording" not in widget.status.text() + assert "disabled" in widget.status.text() assert "dropped 2" in widget.status.text() assert "incomplete" in widget.limitations.toPlainText() widget.results.selectRow(0) @@ -110,239 +95,3 @@ async def test_new_page_replaces_previous_page_and_failures_are_visible(): assert vm.event_history_result is None assert vm.event_history_error == "Invalid history cursor." app.processEvents() - - -async def test_recording_status_precedes_search_and_enable_preserves_retention(): - app = QApplication.instance() or QApplication([]) - runtime = runtime_for(FakeGuiRepository()) - vm = MainViewModel(runtime) - dialog = StoredObservationsDialog(vm) - widget = EventHistoryWidget(vm) - broker = widget.broker.currentData() - runtime.get_history_retention_policy = Mock(return_value=HistoryRetentionPolicy()) - runtime.get_history_usage = Mock(return_value=HistoryUsage(broker, 0, 0, None, None, 0)) - runtime.get_history_recording_status = Mock(return_value=HistoryRecordingStatus(broker)) - runtime.update_history_retention_policy = Mock() - runtime.set_history_recording = Mock() - await vm.load_history_settings(broker) - assert vm.event_history_result is None - assert "Recording disabled" in widget.recording_status.text() - assert widget.enable_recording.isEnabled() - widget.request_recording_status() - vm.operation_state_changed.emit() - assert not widget.enable_recording.isEnabled() - assert "Loading" in widget.recording_status.text() - await vm.load_history_settings(broker) - requested = [] - widget.recording_requested.connect(lambda broker, enabled: requested.append((broker, enabled))) - widget.enable_recording.click() - assert requested == [(broker, True)] - runtime.get_history_recording_status.return_value = HistoryRecordingStatus(broker, enabled=True) - await vm.set_history_recording(broker, True) - runtime.set_history_recording.assert_called_once_with(broker, True) - runtime.update_history_retention_policy.assert_not_called() - assert "Recording enabled" in widget.recording_status.text() - assert widget.enable_recording.isEnabled() - assert widget.enable_recording.isChecked() - widget.enable_recording.click() - assert requested[-1] == (broker, False) - runtime.get_history_recording_status.return_value = HistoryRecordingStatus(broker) - await vm.set_history_recording(broker, False) - assert runtime.set_history_recording.call_args.args == (broker, False) - runtime.update_history_retention_policy.assert_not_called() - assert not widget.enable_recording.isChecked() - widget.broker.setCurrentIndex(1) - assert not widget.enable_recording.isEnabled() - assert "Loading" in widget.recording_status.text() - dialog.close() - app.processEvents() - - -async def test_recording_failure_is_visible_without_claiming_success(): - app = QApplication.instance() or QApplication([]) - runtime = runtime_for(FakeGuiRepository()) - vm = MainViewModel(runtime) - dialog = StoredObservationsDialog(vm) - widget = EventHistoryWidget(vm) - broker = widget.broker.currentData() - runtime.set_history_recording = Mock(side_effect=RuntimeError("unavailable")) - await vm.set_history_recording(broker, True) - assert "could not be changed" in widget.recording_status.text() - assert not widget.enable_recording.isEnabled() - dialog.close() - app.processEvents() - - -def test_history_units_unlimited_and_advanced_pruning_round_trip(): - app = QApplication.instance() or QApplication([]) - vm = MainViewModel(runtime_for(FakeGuiRepository())) - dialog = StoredObservationsDialog(vm) - widget = dialog.history_settings - vm.history_settings_broker = widget.broker.currentData() - vm.history_policy = HistoryRetentionPolicy() - widget.render() - assert widget.draft_policy() == vm.history_policy - assert not widget.advanced_content.isHidden() - assert widget.findChild(QPushButton, "historyAdvancedPruning") is None - widget.unlimited["max_age_seconds"].setChecked(True) - assert widget.draft_policy().max_age_seconds is None - assert not widget.quantities["max_age_seconds"].isEnabled() - widget.unlimited["max_age_seconds"].setChecked(False) - widget.fields["max_age_seconds"].setText("2") - widget.quantities["max_age_seconds"].unit.setCurrentText("Days") - assert widget.draft_policy().max_age_seconds == 172800 - widget.fields["max_payload_bytes"].setText("not a number") - assert not widget.save.isEnabled() - previous_broker = widget.broker.currentData() - widget.broker.setCurrentIndex(1) - vm.history_settings_broker = widget.broker.currentData() - vm.history_policy = None - vm.history_recording_status = HistoryRecordingStatus(previous_broker, enabled=True) - widget.render() - assert not widget.enabled.isChecked() - assert not widget.enabled.isEnabled() - assert "unavailable for this broker" in widget.summary.text() - dialog.close() - app.processEvents() - - -async def test_workspace_history_navigation_and_recording_are_scoped(tmp_path): - from PySide6.QtCore import QSettings - from topicgate.gui.main_window import MainWindow - - app = QApplication.instance() or QApplication([]) - runtime = runtime_for(FakeGuiRepository()) - vm = MainViewModel(runtime) - enabled_by_broker = {} - runtime.get_history_retention_policy = Mock(return_value=HistoryRetentionPolicy()) - runtime.get_history_usage = Mock( - side_effect=lambda broker: HistoryUsage(broker, 0, 0, None, None, 0) - ) - runtime.get_history_recording_status = Mock( - side_effect=lambda broker: HistoryRecordingStatus( - broker, enabled=enabled_by_broker.get(broker, False) - ) - ) - runtime.set_history_recording = Mock( - side_effect=lambda broker, enabled: enabled_by_broker.update({broker: enabled}) - ) - runtime.update_history_retention_policy = Mock() - runtime.get_topic_history = Mock(side_effect=lambda broker, *a, **kw: make_page(broker)) - window = MainWindow(vm, QSettings(str(tmp_path / "gui.ini"), QSettings.Format.IniFormat)) - tabs = window._destination_tabs - widget = window._event_history - - async def finish_operations(): - await asyncio.gather(*tuple(window._operation_tasks)) - - try: - assert [tabs.tabText(i) for i in range(tabs.count())] == [ - "Health", "Selected", "Snapshot", "History" - ] - assert not tabs.expanding() - assert not tabs.isTabEnabled(1) - tabs.setCurrentIndex(3) - await finish_operations() - assert window._stored_observations_dialog is None - assert widget.broker.currentData() == vm.active_broker_profile.id - assert "Recording disabled" in widget.recording_status.text() - runtime.set_history_recording.assert_not_called() - runtime.get_topic_history.assert_not_called() - - widget.enable_recording.click() - assert not widget.enable_recording.isEnabled() - widget.enable_recording.click() - await finish_operations() - runtime.set_history_recording.assert_called_once_with(vm.active_broker_profile.id, True) - assert widget.enable_recording.isChecked() - widget.enable_recording.click() - await finish_operations() - assert not widget.enable_recording.isChecked() - - widget.broker.setCurrentIndex(1) - await finish_operations() - other = widget.broker.currentData() - widget.enable_recording.click() - await finish_operations() - assert runtime.set_history_recording.call_args.args == (other, True) - runtime.update_history_retention_policy.assert_not_called() - widget.search.click() - await finish_operations() - assert widget.results.rowCount() == 1 - - tabs.setCurrentIndex(2) - tabs.setCurrentIndex(3) - await finish_operations() - assert widget.broker.currentData() == vm.active_broker_profile.id - assert widget.results.rowCount() == 0 - assert not widget.enable_recording.isChecked() - assert not widget.next_page.isEnabled() - assert window._context_panel.isHidden() - finally: - await window.cancel_pending_operations() - window.close() - app.processEvents() - - -async def test_late_recording_status_cannot_enable_controls_for_another_broker(): - app = QApplication.instance() or QApplication([]) - runtime = runtime_for(FakeGuiRepository()) - vm = MainViewModel(runtime) - widget = EventHistoryWidget(vm) - first = widget.broker.currentData() - started, release = Event(), Event() - - def read_status(broker): - if broker == first: - started.set() - assert release.wait(5) - return HistoryRecordingStatus(broker, enabled=broker == first) - - runtime.get_history_recording_status = Mock(side_effect=read_status) - runtime.get_history_retention_policy = Mock(return_value=HistoryRetentionPolicy()) - runtime.get_history_usage = Mock( - side_effect=lambda broker: HistoryUsage(broker, 0, 0, None, None, 0) - ) - task = asyncio.create_task(vm.load_history_settings(first)) - try: - assert await asyncio.to_thread(started.wait, 2) - widget.broker.setCurrentIndex(1) - assert not widget.enable_recording.isEnabled() - await vm.load_history_settings(widget.broker.currentData()) - release.set() - await task - assert widget.enable_recording.isEnabled() - assert not widget.enable_recording.isChecked() - assert "Recording disabled" in widget.recording_status.text() - finally: - release.set() - await task - widget.close() - app.processEvents() - - -def test_history_mode_switch_preserves_page_selection_and_payload(): - app = QApplication.instance() or QApplication([]) - vm = MainViewModel(runtime_for(FakeGuiRepository())) - widget = EventHistoryWidget(vm) - page = make_page(widget.broker.currentData()) - vm.event_history_result = page - widget.render() - widget.results.selectRow(0) - selected = widget.results.currentRow() - queries, recordings = [], [] - widget.query_requested.connect(lambda *args: queries.append(args)) - widget.recording_requested.connect(lambda *args: recordings.append(args)) - widget.set_advanced_mode(False) - assert vm.event_history_result is page - assert widget.results.currentRow() == selected - assert "Observation " not in widget.payload.toPlainText() - assert "synthetic" in widget.payload.toPlainText() - assert "dropped 2" not in widget.status.text() - assert not widget.limitations.isHidden() - widget.set_advanced_mode(True) - assert "Observation " in widget.payload.toPlainText() - assert "dropped 2" in widget.status.text() - assert queries == recordings == [] - widget.close() - app.processEvents() diff --git a/tests/test_gui.py b/tests/test_gui.py index 165795d..a94024a 100644 --- a/tests/test_gui.py +++ b/tests/test_gui.py @@ -29,7 +29,6 @@ QPushButton, QPlainTextEdit, QScrollArea, - QSizePolicy, QStackedWidget, QSplitter, QSpinBox, @@ -249,34 +248,11 @@ def test_health_action_opens_broker_scoped_inspector() -> None: application.processEvents() -def test_history_action_opens_event_history() -> None: - application = QApplication.instance() or QApplication([]) - repository = FakeGuiRepository() - window = MainWindow( - MainViewModel(runtime_for(repository), repository.state.topic) - ) - - action = window.findChild(QAction, "historyAction") - assert action is not None - assert action.text() == "History" - assert action in window._view_menu.actions() - - action.trigger() - application.processEvents() - - stack = window.findChild(QStackedWidget, "inspectorStack") - assert stack.currentIndex() == 2 - assert stack.currentWidget().widget() is window._event_history - window.close() - application.processEvents() - - def test_settings_health_and_observation_tabs_reuse_visible_topic_tab_style() -> None: application = QApplication.instance() or QApplication([]) repository = FakeGuiRepository() view_model = MainViewModel(runtime_for(repository), repository.state.topic) window = MainWindow(view_model) - window._show_topic_details() settings_tabs = window.findChild(QTabWidget, "topicSettingsTabs") assert settings_tabs is not None assert settings_tabs.tabBar().objectName() == "topicSettingsTabs" @@ -303,7 +279,7 @@ def test_settings_health_and_observation_tabs_reuse_visible_topic_tab_style() -> ) assert observation_tabs is not None assert observation_tabs.tabBar().objectName() == "storedObservationsPages" - assert not observation_tabs.tabBar().expanding() + assert observation_tabs.tabBar().expanding() assert "QTabBar#topicSettingsTabs::tab:selected" in LIGHT_THEME assert "QTabBar#healthTabs::tab:selected" in LIGHT_THEME assert "QTabBar#storedObservationsPages::tab:selected" in LIGHT_THEME @@ -334,87 +310,6 @@ def test_topic_expectation_editor_creates_utf8_rule() -> None: created = management.create_expectation.call_args.args[0] assert created.name == "Temperature" assert created.condition.expected_value == b"21.5" - assert "saved" in editor.findChild(QLabel, "expectationSaveFeedback").text() - window.close() - application.processEvents() - - -def test_expectation_directory_includes_topic_rules_and_preserves_navigation_scope(tmp_path) -> None: - from topicgate.core.models.health import TopicTarget - application = QApplication.instance() or QApplication([]) - repository = FakeGuiRepository() - runtime = runtime_for(repository) - rule = HealthExpectation( - uuid4(), 1, True, HealthSeverity.WARNING, - TopicTarget(runtime.active_broker.id, repository.state.topic), - EqualCondition(b"21.5"), frozenset(), "Kitchen temperature", - ) - management = MagicMock() - management.list_expectations.return_value = (rule,) - vm = MainViewModel(runtime, expectation_management_service=management) - window = MainWindow(vm, QSettings(str(tmp_path / "gui.ini"), QSettings.Format.IniFormat)) - window._destination_tabs.setCurrentIndex(0) - inspector = window._health_inspector - inspector._tabs.setCurrentIndex(1) - table = inspector.findChild(QTableWidget, "healthExpectationDirectory") - assert table.rowCount() == 1 - assert table.item(0, 0).text() == rule.name - table.selectRow(0) - inspector.render() - assert inspector._open_rule.isEnabled() - inspector._open_rule.click() - assert vm.topic == repository.state.topic - assert window._topic_expectations._selected_id == rule.expectation_id - assert runtime.active_broker.name in window._topic_expectations._context.text() - assert window._destination_tabs.currentIndex() == 1 - window._destination_tabs.setCurrentIndex(0) - assert inspector._tabs.currentIndex() == 1 - inspector._expectation_scope.setCurrentIndex(1) - assert table.rowCount() == 0 - assert not inspector._open_rule.isEnabled() - window.close() - application.processEvents() - - -async def test_subscription_apply_feedback_and_small_window_layout(tmp_path) -> None: - application = QApplication.instance() or QApplication([]) - repository = FakeGuiRepository() - vm = MainViewModel(runtime_for(repository), repository.state.topic) - window = MainWindow(vm, QSettings(str(tmp_path / "gui.ini"), QSettings.Format.IniFormat)) - window.resize(1024, 640) - window.show() - window._show_topic_expectations() - application.processEvents() - assert window.width() == 1024 - assert window.height() == 640 - from PySide6.QtGui import QShowEvent - - window._observer_tree.focus_search() - window.showEvent(QShowEvent()) - assert window.focusWidget() is window._observer_tree._search_edit - await window._save_subscription(repository.subscriptions[0].topic_filter, repository.subscriptions[0]) - assert "Subscription applied" in window.findChild(QLabel, "subscriptionApplyFeedback").text() - window.close() - application.processEvents() - - -def test_observer_filter_keeps_subscription_rows_and_hidden_values(tmp_path) -> None: - application = QApplication.instance() or QApplication([]) - repository = FakeGuiRepository() - repository.subscriptions = (Subscription(repository.state.topic),) - vm = MainViewModel(runtime_for(repository), repository.state.topic) - window = MainWindow(vm, QSettings(str(tmp_path / "gui.ini"), QSettings.Format.IniFormat)) - vm.apply_snapshot_query(SnapshotQuery(topic_filter="elsewhere/#")) - pane = window._observer_tree - assert "subscriptions" not in pane._scope.text() - assert "0 values" not in pane._scope.text() - assert pane.findChild(QWidget, "observerEmptyState") is None - assert "excluded from snapshot values and counts" in vm.topic_detail.snapshot_scope_note - assert any(item.text().startswith("Subscription:") for item in pane._items.values()) - pane._search_edit.setText("does-not-exist") - assert "No displayed topics" in pane._search_status.text() - pane._search_edit.clear() - assert pane._search_status.isHidden() window.close() application.processEvents() @@ -469,9 +364,10 @@ def test_snapshot_panel_applies_clears_and_renders_health() -> None: assert pane.header_layout.indexOf(pane.heading) == 0 assert pane.findChild(QToolButton, "snapshotToggleButton") is None assert pane.findChild(QWidget, "snapshotContent") is None - assert advanced is None + assert not pane.is_advanced_visible + assert not advanced.isChecked() assert not controls.isHidden() - assert not advanced_content.isHidden() + assert advanced_content.isHidden() assert pane.findChild(QLabel, "snapshotSummaryConnection").text() == ( "Disconnected" ) @@ -480,6 +376,8 @@ def test_snapshot_panel_applies_clears_and_renders_health() -> None: "reconnectObserveButton", ).accessibleName() == "Reconnect & observe" assert pane.heading.text() == "Broker snapshot" + assert advanced.text() == "Advanced" + assert pane.header_layout.indexOf(advanced) >= 0 assert pane.findChild( QPushButton, "reconnectObserveButton", @@ -488,7 +386,11 @@ def test_snapshot_panel_applies_clears_and_renders_health() -> None: pane.findChild(QLabel, "snapshotSummaryConnection") ) + advanced.setFocus() + QTest.keyClick(advanced, Qt.Key.Key_Space) + assert pane.is_advanced_visible assert not advanced_content.isHidden() + assert advanced.text() == "Hide advanced" pane.findChild(QLineEdit, "snapshotTopicFilter").setText("home/#") pane.findChild(QLineEdit, "snapshotMaximumAge").setText("10.5") pane.findChild(QSpinBox, "snapshotResultLimit").setValue(12) @@ -534,8 +436,9 @@ def test_snapshot_panel_applies_clears_and_renders_health() -> None: "Limited" ) + pane.set_advanced_visible(False) assert pane.query == SnapshotQuery("home/#", 10.5, 12, 512) - assert not advanced_content.isHidden() + assert advanced_content.isHidden() assert not controls.isHidden() pane.findChild(QPushButton, "clearSnapshotFiltersButton").click() @@ -790,13 +693,11 @@ def test_settings_button_reveals_subscription_and_expectation_settings() -> None ) settings.clear() window = MainWindow(view_model, settings) - window._show_topic_details() context = window.findChild(QWidget, "contextPanel") edit_button = window.findChild(QToolButton, "topicEditButton") assert context is not None assert edit_button is not None - assert window.findChild(QPushButton, "topicExpectationsButton") is None assert context.isHidden() assert edit_button.text() == "Settings" assert not edit_button.icon().isNull() @@ -808,14 +709,7 @@ def test_settings_button_reveals_subscription_and_expectation_settings() -> None edit_button.click() assert not context.isHidden() - assert edit_button.text() == "Close settings" - assert len( - [ - button - for button in window.findChildren(QPushButton) - if button.text() == "Close settings" - ] - ) == 0 + assert edit_button.text() == "Settings" assert context.findChild(QWidget, "topicExpectationEditor") is not None assert context.findChild(QWidget, "topicPublishPane") is None assert context.findChild(QPushButton, "revertSubscriptionButton") is None @@ -840,7 +734,6 @@ def test_workspace_headers_and_primary_controls_share_rows() -> None: MainViewModel(runtime_for(repository), repository.state.topic), settings, ) - window._show_topic_details() window.findChild(QToolButton, "topicEditButton").click() window.show() application.processEvents() @@ -1071,12 +964,12 @@ def test_desktop_persists_snapshot_preferences_and_focuses_search() -> None: settings.clear() first = MainWindow(MainViewModel(runtime_for(FakeGuiRepository())), settings) first._apply_snapshot_query(SnapshotQuery("devices/#", 12.0, 9, 256)) - first._advanced_mode_action.setChecked(True) + first._snapshot_panel.set_advanced_visible(True) first.close() second = MainWindow(MainViewModel(runtime_for(FakeGuiRepository())), settings) assert second._view_model.snapshot_query == SnapshotQuery("devices/#", 12.0, 9, 256) - assert second._advanced_mode_action.isChecked() + assert second._snapshot_panel.is_advanced_visible second.show() application.processEvents() second._focus_topic_search_action.trigger() @@ -1406,7 +1299,6 @@ def test_health_refreshes_while_inspector_is_closed_without_navigation() -> None expectation_management_service=management, ) ) - window._show_topic_details() timer = window.findChild(QObject, "healthRefreshTimer") timer.setInterval(0) @@ -1518,7 +1410,7 @@ def test_health_inspector_renders_latest_finding_delta() -> None: application.processEvents() -def test_inspector_defaults_to_health_and_preserves_restored_selection() -> None: +def test_inspector_starts_from_selection_and_owns_one_snapshot() -> None: application = QApplication.instance() or QApplication([]) repository = FakeGuiRepository() empty_settings = QSettings( @@ -1534,8 +1426,7 @@ def test_inspector_defaults_to_health_and_preserves_restored_selection() -> None stack = snapshot_window.findChild(QStackedWidget, "inspectorStack") snapshots = snapshot_window.findChildren(SnapshotPanel) scroll = snapshot_window.findChild(QScrollArea, "snapshotPanelScrollArea") - assert stack.currentWidget() is snapshot_window._health_inspector - assert snapshot_window._destination_tabs.currentIndex() == 0 + assert stack.currentIndex() == 0 assert len(snapshots) == 1 assert snapshots[0] is snapshot_window._snapshot_panel assert snapshot_window._observer_tree.findChildren(SnapshotPanel) == [] @@ -1555,10 +1446,7 @@ def test_inspector_defaults_to_health_and_preserves_restored_selection() -> None assert details_window.findChild( QStackedWidget, "inspectorStack", - ).currentWidget() is details_window._health_inspector - assert details_window._view_model.topic == repository.state.topic - details_window._destination_tabs.setCurrentIndex(1) - assert details_window._inspector_stack.currentWidget() is details_window._topic_details + ).currentWidget() is details_window._topic_details snapshot_window.close() details_window.close() @@ -1584,7 +1472,7 @@ def test_default_window_uses_isolated_settings( application.processEvents() -def test_selected_subscription_shows_value_outside_snapshot_scope() -> None: +def test_selected_subscription_shows_value_omitted_from_observer_tree() -> None: application = QApplication.instance() or QApplication([]) repository = FakeGuiRepository() topic = repository.state.topic @@ -1592,7 +1480,6 @@ def test_selected_subscription_shows_value_outside_snapshot_scope() -> None: view_model = MainViewModel(runtime_for(repository), topic) window = MainWindow(view_model) - window._show_topic_details() window._apply_snapshot_query(SnapshotQuery(topic_filter="other/#")) tree = window.findChild(QTreeView, "observerTree") @@ -1602,7 +1489,7 @@ def test_selected_subscription_shows_value_outside_snapshot_scope() -> None: node for node in view_model.topic_tree if node.path == "home" ).children[0].children[0] assert selected_node.path == topic - assert selected_node.is_observed + assert not selected_node.is_observed assert tree is not None assert decoded.toPlainText() == "21.5" assert notice.isVisibleTo(window) @@ -1617,8 +1504,6 @@ def test_snapshot_panel_exposes_active_bounds_and_omitted_count() -> None: view_model = MainViewModel(runtime_for(repository)) window = MainWindow(view_model) - window._advanced_mode_action.setChecked(True) - window._show_snapshot() window._apply_snapshot_query(SnapshotQuery("home/#", None, 1, 256)) window._snapshot_panel.render_health( replace(view_model.snapshot_health, omitted_count=1) @@ -1638,7 +1523,6 @@ def test_inspector_navigation_preserves_snapshot_and_tree_editing_state() -> Non application = QApplication.instance() or QApplication([]) repository = FakeGuiRepository() window = MainWindow(MainViewModel(runtime_for(repository))) - window._advanced_mode_action.setChecked(True) stack = window.findChild(QStackedWidget, "inspectorStack") filter_edit = window.findChild(QLineEdit, "snapshotTopicFilter") search_edit = window._observer_tree._search_edit @@ -1660,7 +1544,13 @@ def test_inspector_navigation_preserves_snapshot_and_tree_editing_state() -> Non window.findChild(QToolButton, "topicEditButton").setChecked(True) assert not window._context_panel.isHidden() - window._destination_tabs.setCurrentIndex(2) + inspect = window.findChild(QPushButton, "inspectSnapshotButton") + requests: list[bool] = [] + window._broker_connection.inspect_snapshot_requested.connect( + lambda: requests.append(True) + ) + inspect.click() + assert requests == [True] assert stack.currentIndex() == 0 assert window._view_model.topic == repository.state.topic assert window._context_panel.isHidden() @@ -1689,8 +1579,6 @@ def test_background_updates_preserve_the_explicit_inspector_view() -> None: repository = FakeGuiRepository() view_model = MainViewModel(runtime_for(repository), repository.state.topic) window = MainWindow(view_model) - window._advanced_mode_action.setChecked(True) - window._show_topic_details() stack = window.findChild(QStackedWidget, "inspectorStack") assert stack.currentWidget() is window._topic_details @@ -1719,8 +1607,6 @@ async def test_reconnect_preserves_the_current_inspector_view() -> None: view_model = MainViewModel(runtime_for(repository), repository.state.topic) view_model._snapshot_service._sleep = AsyncMock() window = MainWindow(view_model) - window._advanced_mode_action.setChecked(True) - window._show_topic_details() stack = window.findChild(QStackedWidget, "inspectorStack") await view_model.reconnect_and_observe() @@ -1739,7 +1625,23 @@ async def test_reconnect_preserves_the_current_inspector_view() -> None: application.processEvents() -def test_light_theme_keeps_dialog_text_readable() -> None: +def test_observer_empty_states_explain_recovery_actions() -> None: + application = QApplication.instance() or QApplication([]) + pane = ObserverTreePane() + pane.render_empty_state("disconnected", (), False, False, False) + assert "No subscriptions" in pane.findChild(QLabel, "observerEmptyStateText").text() + + pane.render_empty_state("connected", (Subscription("devices/#"),), True, False, False) + action = pane.findChild(QToolButton, "observerEmptyStateAction") + assert "current snapshot filters" in pane.findChild( + QLabel, "observerEmptyStateText" + ).text() + assert action.text() == "Clear filters" + pane.deleteLater() + application.processEvents() + + +def test_light_theme_keeps_dialog_and_empty_state_text_readable() -> None: application = QApplication.instance() or QApplication([]) apply_light_theme(application) @@ -1749,6 +1651,8 @@ def test_light_theme_keeps_dialog_text_readable() -> None: assert palette.color(QPalette.ColorRole.WindowText).name() == "#202124" assert palette.color(QPalette.ColorRole.ButtonText).name() == "#202124" assert "QMessageBox QLabel" in LIGHT_THEME + assert "QFrame#observerEmptyState" in LIGHT_THEME + assert "QLabel#observerEmptyStateText" in LIGHT_THEME assert "QTabBar#topicDetailsMode::tab" in LIGHT_THEME assert "QTabBar#topicDetailsMode::tab:selected" in LIGHT_THEME assert "color: #ffffff; background: #405d7a" in LIGHT_THEME @@ -2105,7 +2009,6 @@ def test_main_window_builds_three_pane_workspace_and_collapsible_log() -> None: settings.clear() window = MainWindow(view_model, settings) - window._advanced_mode_action.setChecked(True) splitter = window.findChild(QSplitter, "workspaceSplitter") log_dock = window.findChild(QDockWidget, "logConsoleDock") @@ -2134,13 +2037,10 @@ def test_main_window_builds_three_pane_workspace_and_collapsible_log() -> None: status = window.findChild(QLabel, "brokerConnectionStatus") assert status.text() == "Connected" assert status.accessibleName() == "MQTT connection status" - heading_icon = window.findChild(QLabel, "brokerHeadingIcon") - assert heading_icon.accessibleName() == "Broker" - assert window._broker_connection.header_layout.indexOf(heading_icon) == 0 assert window._broker_connection.header_layout.indexOf( window._broker_connection.heading - ) == 1 - assert window._broker_connection.header_layout.indexOf(status) == 2 + ) == 0 + assert window._broker_connection.header_layout.indexOf(status) == 1 assert window.findChild(QLabel, "activeBrokerEndpoint") is None assert window.findChild(QToolButton, "brokerSettingsButton") is None assert window.findChild(QWidget, "applicationHeader") is None @@ -2181,7 +2081,7 @@ def test_compact_broker_pane_exposes_switching_and_connection_actions() -> None: selector = window.findChild(QComboBox, "connectionBrokerSelector") lifecycle = window.findChild(QPushButton, "brokerLifecycleButton") health = window.findChild(QPushButton, "brokerHealthSummary") - management = window.findChild(QToolButton, "manageBrokersButton") + inspect_snapshot = window.findChild(QPushButton, "inspectSnapshotButton") profile_menu = window.findChild(QMenu, "brokerProfileSelectorMenu") assert [selector.itemText(index) for index in range(selector.count())] == [ @@ -2192,36 +2092,22 @@ def test_compact_broker_pane_exposes_switching_and_connection_actions() -> None: assert lifecycle.text() == "Disconnect" assert lifecycle.isEnabled() assert window.findChild(QPushButton, "brokerDisconnectButton") is None - assert management.isEnabled() - assert management.accessibleName() == "Manage broker profiles" - assert not management.icon().isNull() - assert not window.findChild(QLabel, "brokerHeadingIcon").pixmap().isNull() - assert window.findChild(QPushButton, "inspectSnapshotButton") is None + assert inspect_snapshot.isEnabled() + assert inspect_snapshot.accessibleName() == "Inspect broker snapshot" window.resize(window.minimumSize()) window.show() application.processEvents() assert selector.isVisible() assert health.isVisible() - assert management.isVisible() + assert inspect_snapshot.isVisible() assert lifecycle.isVisible() assert lifecycle.text() == "Disconnect" - assert lifecycle.property("primary") is False - assert ( - selector.geometry().top() - == management.geometry().top() - == lifecycle.geometry().top() - ) - assert health.geometry().top() > selector.geometry().top() - assert health.geometry().left() == selector.geometry().left() - assert health.geometry().right() == lifecycle.geometry().right() - assert ( - selector.sizePolicy().horizontalPolicy() - == QSizePolicy.Policy.Expanding - ) - assert ( - management.sizePolicy().horizontalPolicy() - == QSizePolicy.Policy.Fixed - ) + assert selector.geometry().top() == lifecycle.geometry().top() + assert health.geometry().top() == inspect_snapshot.geometry().top() + assert selector.geometry().right() == health.geometry().right() + assert lifecycle.geometry().left() == inspect_snapshot.geometry().left() + assert lifecycle.width() == inspect_snapshot.width() + assert selector.geometry().top() < health.geometry().top() assert [ action.defaultWidget() .findChild(QToolButton, "selectBrokerProfileButton") @@ -2241,7 +2127,7 @@ def test_compact_broker_pane_exposes_switching_and_connection_actions() -> None: assert delete_button.text() == "Delete" assert not delete_button.icon().isNull() assert window.findChild(QAction, "addBrokerProfilePaneAction").text() == ( - "Add Broker" + "+ Add Broker" ) assert window.findChild(QToolButton, "manageBrokerProfilesButton") is None assert window.findChild(QMenu, "editBrokerProfilePaneMenu") is None @@ -2290,7 +2176,6 @@ def test_broker_pane_lifecycle_button_connects_or_disconnects() -> None: view_model._connection_status = "disconnected" pane.render(view_model) assert lifecycle.text() == "Connect" - assert lifecycle.property("primary") is True lifecycle.click() assert requests == ["disconnect", "connect"] @@ -2332,14 +2217,15 @@ def test_topic_metadata_hides_advanced_fields_until_requested() -> None: messages = pane.findChild(QLabel, "messageCountLabel") raw = pane.findChild(QPlainTextEdit, "rawPayload") - assert advanced is None + assert advanced.text() == "Advanced" assert source.isHidden() assert raw.isHidden() assert not state.isHidden() assert not messages.isHidden() - pane.set_advanced_mode(True) + advanced.click() + assert advanced.text() == "Hide advanced" assert not source.isHidden() assert not raw.isHidden() @@ -2397,7 +2283,7 @@ def test_topic_details_switches_between_payload_and_embedded_publish() -> None: assert pane.heading.toolTip() == repository.state.topic assert publish_hint.isHidden() - pane.set_advanced_mode(True) + advanced.click() assert not raw.isHidden() publish_payload.setPlainText("outgoing draft") modes.setCurrentIndex(1) @@ -2413,7 +2299,7 @@ def test_topic_details_switches_between_payload_and_embedded_publish() -> None: assert not decoded.isHidden() assert not raw.isHidden() - assert not raw.isHidden() + assert advanced.isChecked() assert pane.heading.toolTip() == repository.state.topic assert publish_payload.toPlainText() == "outgoing draft" pane.close() @@ -3158,7 +3044,7 @@ async def scenario() -> None: assert repository.broker_configurations == [local_profile.config] assert broker_repository.get_profile().id == local_profile.id - assert stack.currentWidget() is window._health_inspector + assert stack.currentIndex() == 0 assert "Do you want to switch" in question.call_args.args[2] assert "shutting down the current MQTT connection" in question.call_args.args[2] window.close() @@ -3176,7 +3062,6 @@ def test_cancelled_broker_switch_and_profile_updates_preserve_topic_details() -> repository.state.topic, ) window = MainWindow(view_model) - window._show_topic_details() stack = window.findChild(QStackedWidget, "inspectorStack") active = view_model.active_broker_profile inactive = view_model.broker_profiles[1] @@ -3293,270 +3178,3 @@ async def scenario() -> None: application.processEvents() await scenario() - - -@pytest.mark.parametrize("saved_mode", [None, False, True]) -def test_global_advanced_mode_defaults_and_persists(tmp_path, saved_mode) -> None: - application = QApplication.instance() or QApplication([]) - settings = QSettings(str(tmp_path / "mode.ini"), QSettings.Format.IniFormat) - settings.setValue("workspace/snapshotExpanded", True) - if saved_mode is not None: - settings.setValue("workspace/advancedMode", saved_mode) - window = MainWindow(MainViewModel(runtime_for(FakeGuiRepository())), settings) - assert window._advanced_mode_action.isCheckable() - assert window._advanced_mode_action in window._view_menu.actions() - assert window._advanced_mode_action.isChecked() is bool(saved_mode) - window._advanced_mode_action.trigger() - expected = not bool(saved_mode) - assert settings.value("workspace/advancedMode", type=bool) is expected - window.close() - restored = MainWindow(MainViewModel(runtime_for(FakeGuiRepository())), settings) - assert restored._advanced_mode_action.isChecked() is expected - assert restored._destination_tabs.isTabVisible(2) is expected - restored.close() - application.processEvents() - - -def test_global_mode_visibility_fallback_and_stale_routes() -> None: - application = QApplication.instance() or QApplication([]) - repository = FakeGuiRepository() - vm = MainViewModel(runtime_for(repository), repository.state.topic) - window = MainWindow(vm, diagnostic_profile_editor=MagicMock()) - window.show() - application.processEvents() - broker_id = vm.active_broker_profile.id - topic = vm.topic - for advanced in (False, True, False): - window._advanced_mode_action.setChecked(advanced) - assert window._advanced_mode is advanced - assert window._destination_tabs.isTabVisible(2) is advanced - assert window._destination_tabs.isTabEnabled(2) is advanced - for action in (window._stored_observations_action, window._console_action, - window._diagnostic_profiles_action): - assert action.isVisible() is advanced - assert action.isEnabled() is advanced - assert window._advanced_indicator.isVisible() is advanced - assert window._health_inspector._tabs.isTabVisible(3) is advanced - assert window._health_inspector._delete_history_button.isHidden() is not advanced - assert window._event_history.limit.isHidden() is not advanced - assert window._event_history.results.isColumnHidden(2) is not advanced - assert window._event_history.results.isColumnHidden(3) is not advanced - assert window._event_history.results.isColumnHidden(4) is False - assert window._subscription_settings._retain_handling.isHidden() is not advanced - assert window._topic_expectations._log_action.isHidden() is not advanced - assert window._health_inspector._broker_expectations._revision.isHidden() is not advanced - window._show_topic_details() - vm.state_changed.emit() - assert window._topic_details._raw_payload.isHidden() is not advanced - assert window._topic_details._metadata.source.isHidden() is not advanced - assert not window._topic_details._decoded_payload.isHidden() - assert not window._event_history.enable_recording.isHidden() - if advanced: - window._show_snapshot() - window._health_inspector._tabs.setCurrentIndex(3) - window._console_action.trigger() - else: - assert window._health_inspector._tabs.currentIndex() != 3 - window._show_stored_observations() - window._stored_observations_action.trigger() - window._show_diagnostic_profiles() - window._diagnostic_profiles_action.trigger() - window._console_action.trigger() - window._navigate(2) - assert window._inspector_stack.currentWidget() is window._health_inspector - assert window._stored_observations_dialog is None - assert window._diagnostic_profile_editor_window is None - assert not window._log_dock.isVisible() - assert not window._log_dock.toggleViewAction().isEnabled() - assert not window._log_dock.toggleViewAction().isVisible() - window._health_inspector._tabs.setCurrentIndex(3) - assert window._health_inspector._tabs.currentIndex() == 0 - assert vm.topic == topic - assert vm.active_broker_profile.id == broker_id - assert window.findChild(QToolButton, "snapshotAdvancedButton") is None - assert window.findChild(QToolButton, "topicMetadataAdvancedButton") is None - window.close() - application.processEvents() - - -@pytest.mark.parametrize("editor_name", ["snapshot", "subscription", "topic", "broker"]) -def test_mode_switch_refuses_to_hide_dirty_forms(editor_name) -> None: - application = QApplication.instance() or QApplication([]) - repository = FakeGuiRepository() - vm = MainViewModel(runtime_for(repository), repository.state.topic) - window = MainWindow(vm) - window._advanced_mode_action.setChecked(True) - if editor_name == "snapshot": - pane = window._snapshot_panel - field = pane._topic_filter - window._show_snapshot() - elif editor_name == "subscription": - pane = window._subscription_settings - field = pane._filter_edit - window._show_topic_details() - else: - pane = window._topic_expectations if editor_name == "topic" else window._health_inspector._broker_expectations - pane.start_new() - field = pane._name - before = field.text() - field.setText("unfinished draft") - assert pane.has_unsaved_edits - destination = window._inspector_stack.currentWidget() - with patch.object(QMessageBox, "information") as message: - window._advanced_mode_action.setChecked(False) - message.assert_called_once() - assert "No edits were changed" in message.call_args.args[2] - assert window._advanced_mode_action.isChecked() - assert window._advanced_mode - assert window._inspector_stack.currentWidget() is destination - assert field.text() == "unfinished draft" - if editor_name == "snapshot": - window._render_tree() - else: - pane.render(vm.topic, vm.selected_subscription) if editor_name == "subscription" else pane.render() - assert field.text() == "unfinished draft" - field.setText(before) - assert not pane.has_unsaved_edits - window._advanced_mode_action.setChecked(False) - assert not window._advanced_mode - window.close() - application.processEvents() - - -def test_mode_switch_preserves_basic_drafts_and_existing_configuration() -> None: - application = QApplication.instance() or QApplication([]) - repository = FakeGuiRepository() - repository.subscriptions = (Subscription(repository.state.topic, qos=2, retain_as_published=True, retain_handling=2),) - vm = MainViewModel(runtime_for(repository), repository.state.topic) - window = MainWindow(vm) - vm.apply_snapshot_query(SnapshotQuery("home/#", 12, 9, 256)) - query = vm.snapshot_query - subscription = vm.selected_subscription - window._show_topic_details() - draft = window.findChild(QPlainTextEdit, "publishPayload") - draft.setPlainText("unsent message") - window._event_history.topic_filter.setText("home/+/temperature") - window._event_history.limit.setValue(17) - window._topic_expectations.start_new() - window._topic_expectations._name.setText("Unfinished expectation") - dialog = BrokerSettingsDialog(vm, window) - dialog._name_edit.setText("Unfinished profile") - dialog.show() - # Entering Advanced mode exposes controls without replacing drafts. - window._advanced_mode_action.setChecked(True) - assert window._topic_expectations._name.text() == "Unfinished expectation" - window._topic_expectations._name.clear() - with patch.object(window, "_run_async") as operations, patch.object(vm, "save_expectation") as save: - window._advanced_mode_action.setChecked(False) - operations.assert_not_called() - save.assert_not_called() - assert not window._advanced_mode - assert draft.toPlainText() == "unsent message" - assert dialog._name_edit.text() == "Unfinished profile" - assert not dialog._host_edit.isHidden() - assert not dialog._use_tls_checkbox.isHidden() - assert window._event_history.topic_filter.text() == "home/+/temperature" - assert window._event_history.limit.value() == 17 - assert vm.snapshot_query == query - assert vm.selected_subscription == subscription - assert window._subscription_settings._retain_handling.currentIndex() == 2 - assert window._subscription_settings._retain_as_published.isChecked() - assert "Do not send retained messages" in window._subscription_settings._options_summary.text() - assert window._observer_tree._scope.isHidden() - assert window._observer_tree._scope.text() == "" - dialog.close() - window.close() - application.processEvents() - - -def test_open_specialist_windows_require_explicit_resolution_before_switching() -> None: - application = QApplication.instance() or QApplication([]) - window = MainWindow(MainViewModel(runtime_for(FakeGuiRepository()))) - window._advanced_mode_action.setChecked(True) - # A nonmodal specialist window can contain edits not yet applied to its model. - dialog = StoredObservationsDialog(window._view_model, window) - window._stored_observations_dialog = dialog - dialog.show() - with patch.object(QMessageBox, "information") as message: - window._advanced_mode_action.setChecked(False) - assert window._advanced_mode_action.isChecked() - assert dialog.isVisible() - assert "Close Stored observations" in message.call_args.args[2] - dialog.close() - window._advanced_mode_action.setChecked(False) - assert not window._advanced_mode_action.isChecked() - window.close() - application.processEvents() - - -def test_global_mode_switch_has_no_operational_side_effects() -> None: - from contextlib import ExitStack - - application = QApplication.instance() or QApplication([]) - vm = MainViewModel(runtime_for(FakeGuiRepository())) - window = MainWindow(vm) - methods = ( - "connect_to_broker", "disconnect_from_broker", "reconnect_and_observe", - "publish_message", "set_history_recording", "save_history_settings", - "save_expectation", "delete_expectation", "update_subscription", - "apply_snapshot_query", "reset_snapshot_query", - "confirm_retention_policy", "confirm_cache_deletion", "delete_health_history", - ) - with ExitStack() as stack: - operations = [stack.enter_context(patch.object(vm, name)) for name in methods] - schedule = stack.enter_context(patch.object(window, "_run_async")) - for mode in (True, False, True, False): - window._advanced_mode_action.setChecked(mode) - for operation in (*operations, schedule): - operation.assert_not_called() - window.close() - application.processEvents() - - -def test_simplified_expectation_save_preserves_hidden_configuration() -> None: - from topicgate.core.models.health import TopicTarget - - application = QApplication.instance() or QApplication([]) - repository = FakeGuiRepository() - vm = MainViewModel(runtime_for(repository), repository.state.topic) - window = MainWindow(vm) - rule = HealthExpectation( - uuid4(), 3, True, HealthSeverity.WARNING, - TopicTarget(vm.active_broker_profile.id, repository.state.topic), - EqualCondition(b"21.5"), frozenset(), "Temperature", - description="Existing description", - ) - editor = window._topic_expectations - editor._load(rule) - assert editor._log_action.isHidden() - assert not editor._log_action.isChecked() - assert not editor._store_action.isChecked() - assert "no actions" in editor._options_summary.text() - assert not editor._options_summary.isHidden() - editor._name.setText("Renamed temperature") - with patch.object(vm, "save_expectation") as save: - editor._save() - values = save.call_args.kwargs - assert values["description"] == rule.description - assert values["log_action"] is False - assert values["store_failure"] is False - assert values["expectation_id"] == rule.expectation_id - assert values["name"] == "Renamed temperature" - window.close() - application.processEvents() - - -@pytest.mark.parametrize("size", [12, 16, 24, 32, 48]) -def test_shared_control_icons_render_at_desktop_sizes(size: int) -> None: - from topicgate.gui.icons import IconName, icon - - app = QApplication.instance() or QApplication([]) - for name in IconName: - for mode in (icon(name).Mode.Normal, icon(name).Mode.Disabled): - pixmap = icon(name).pixmap(size, size, mode) - assert not pixmap.isNull(), name - image = pixmap.toImage() - assert any( - image.pixelColor(x, y).alpha() > 0 - for x in range(image.width()) for y in range(image.height()) - ), name diff --git a/tests/test_main_view_model.py b/tests/test_main_view_model.py index 437dd35..bbcea16 100644 --- a/tests/test_main_view_model.py +++ b/tests/test_main_view_model.py @@ -1249,7 +1249,7 @@ def test_exact_topic_detail_survives_active_snapshot_topic_filter() -> None: assert view_model.topic_paths == [topic] assert view_model.topic_detail.decoded_payload == "online" assert view_model.topic_detail.snapshot_scope_note == ( - "Current value available, but excluded from snapshot values and counts because " + "Current value available, but omitted from the observer tree because " "the active topic filter 'other/#' excludes it." ) @@ -1269,63 +1269,11 @@ def test_exact_topic_detail_survives_snapshot_result_limit() -> None: ] assert view_model.topic_detail.decoded_payload == "online" assert view_model.topic_detail.snapshot_scope_note == ( - "Current value available, but excluded from snapshot values and counts because " + "Current value available, but omitted from the observer tree because " "it is beyond the active result limit." ) -def test_wildcard_tree_survives_snapshot_result_limit() -> None: - repository = FakeObserverRepository() - wildcard = Subscription("SmartHome/Huehnerstall/#") - exact = Subscription("SmartHome/Huehnerstall/door/battery") - repository.subscriptions = (wildcard, exact) - repository.publish( - MqttMessage("SmartHome/Huehnerstall/door/battery", b"98", 0, False) - ) - repository.publish( - MqttMessage("SmartHome/Huehnerstall/door/status", b"open", 0, False) - ) - view_model = MainViewModel(runtime_for(repository), wildcard.topic_filter) - - view_model.apply_snapshot_query(SnapshotQuery(result_limit=1)) - - assert [item.topic for item in view_model.broker_snapshot.topics] == [ - exact.topic_filter - ] - assert view_model.topic_paths == [ - wildcard.topic_filter, - exact.topic_filter, - "SmartHome/Huehnerstall/door/status", - ] - summary = view_model.selected_wildcard_filter_summary - assert summary is not None - assert summary.matching_topic_count == 2 - assert [item.topic for item in summary.topics] == [ - exact.topic_filter, - "SmartHome/Huehnerstall/door/status", - ] - door = view_model.topic_tree[0].children[0].children[1] - status = next(node for node in door.children if node.label == "status") - assert [badge.label for badge in status.badges] == ["F1", "Live"] - - -def test_wildcard_tree_ignores_active_snapshot_topic_filter() -> None: - repository = FakeObserverRepository() - wildcard = Subscription("SmartHome/Huehnerstall/#") - topic = "SmartHome/Huehnerstall/door/status" - repository.subscriptions = (wildcard,) - repository.publish(MqttMessage(topic, b"open", 0, False)) - view_model = MainViewModel(runtime_for(repository), wildcard.topic_filter) - - view_model.apply_snapshot_query(SnapshotQuery(topic_filter="home/#")) - - assert view_model.broker_snapshot.topics == () - assert view_model.topic_paths == [wildcard.topic_filter, topic] - summary = view_model.selected_wildcard_filter_summary - assert summary is not None - assert [item.topic for item in summary.topics] == [topic] - - def test_unobserved_exact_subscription_still_reports_waiting() -> None: repository = FakeObserverRepository() topic = "devices/kitchen/status" diff --git a/tests/test_paths.py b/tests/test_paths.py index 71f5cdd..4ab5ba9 100644 --- a/tests/test_paths.py +++ b/tests/test_paths.py @@ -1,23 +1,10 @@ from pathlib import Path -import os - -import pytest - -os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") - from PySide6.QtGui import QIcon -from PySide6.QtWidgets import QApplication from topicgate.paths import asset_path, prepare_database_path, sqlite_url -@pytest.fixture(scope="module", autouse=True) -def qt_application(): - app = QApplication.instance() or QApplication([]) - yield app - - def test_fresh_installation_uses_new_database_path(tmp_path: Path) -> None: target = prepare_database_path(tmp_path / "data") @@ -31,47 +18,3 @@ def test_application_icon_assets_are_available_from_the_package() -> None: assert Path(icon_path).is_file() assert Path(asset_path("icon.svg")).is_file() assert not QIcon(icon_path).isNull() - - -def test_control_icon_catalog_is_complete_and_rejects_strings() -> None: - import pytest - from topicgate.gui.icons import IconName, icon - - assert {name.value for name in IconName} == { - path.stem for path in Path(asset_path("icons")).glob("*.svg") - } - for name in IconName: - assert not icon(name).isNull() - with pytest.raises(TypeError, match="IconName"): - icon("edit") - for legacy in ("edit.svg", "delete.svg"): - assert not Path(asset_path(legacy)).exists() - - -def test_control_icon_missing_asset_fails_explicitly(monkeypatch, tmp_path) -> None: - import pytest - from topicgate.gui import icons - - monkeypatch.setattr(icons, "asset_path", lambda name: str(tmp_path / name)) - with pytest.raises(FileNotFoundError): - icons.icon(icons.IconName.EDIT) - - -def test_gui_control_icons_use_the_shared_catalog() -> None: - import ast - import topicgate.gui.icons - - root = Path(topicgate.gui.icons.__file__).parent - for path in root.rglob("*.py"): - if path.name == "icons.py": - continue - tree = ast.parse(path.read_text(encoding="utf-8")) - for node in ast.walk(tree): - if not isinstance(node, ast.Call): - continue - if isinstance(node.func, ast.Attribute): - assert node.func.attr not in {"standardIcon", "fromTheme"}, path - if isinstance(node.func, ast.Name) and node.func.id == "QIcon": - assert path.name in {"app.py", "main_window.py", "connection_controls.py"}, path - if path.name != "connection_controls.py": - assert ast.unparse(node.args[0]) == "asset_path('icon.png')", path diff --git a/tests/test_snapshot_presentation.py b/tests/test_snapshot_presentation.py index 4e387b9..7ab96cc 100644 --- a/tests/test_snapshot_presentation.py +++ b/tests/test_snapshot_presentation.py @@ -116,13 +116,13 @@ def test_topic_omission_notice_distinguishes_filter_and_result_limit() -> None: assert topic_omission_notice( SnapshotQuery(topic_filter="other/#"), snapshot, state ) == ( - "Current value available, but excluded from snapshot values and counts because " + "Current value available, but omitted from the observer tree because " "the active topic filter 'other/#' excludes it." ) assert topic_omission_notice( SnapshotQuery(result_limit=1), snapshot, state ) == ( - "Current value available, but excluded from snapshot values and counts because " + "Current value available, but omitted from the observer tree because " "it is beyond the active result limit." )