| | |
| | | require(column.get("windowCount") == fixture_windows_per_app, "Waterfall column window count must match fixture") |
| | | require(column.get("appNameAlignment") == "center", "Waterfall column app name must be center aligned") |
| | | column_frame = column.get("frame", {}) |
| | | header_frame = column.get("headerFrame", {}) |
| | | app_name_frame = column.get("appNameFrame", {}) |
| | | count_frame = column.get("countFrame", {}) |
| | | header_to_first_card_gap = column.get("headerToFirstCardGap") |
| | | top_to_first_card_gap = column.get("topToFirstCardGap") |
| | | require(isinstance(header_frame, dict), "Waterfall column must expose headerFrame") |
| | | require(isinstance(app_name_frame, dict), "Waterfall column must expose appNameFrame") |
| | | require(isinstance(count_frame, dict), "Waterfall column must expose countFrame") |
| | | column_width = column_frame.get("width", 0) |
| | |
| | | require(app_name_frame.get("width", 0) >= column_width * 0.88, "Waterfall column app name frame must span most of the title bar") |
| | | require(count_frame.get("x", 0) + count_frame.get("width", 0) <= column_width + 1.0, "Waterfall count frame must remain inside the title bar") |
| | | require(count_frame.get("x", 0) >= column_width * 0.72, "Waterfall count frame must stay in the right side of the title bar") |
| | | require(abs(header_to_first_card_gap) <= 1.0, "Waterfall first card must sit directly under the title bar") |
| | | require(top_to_first_card_gap <= header_frame.get("height", 0) + 1.0, "Waterfall title-to-card height must remain compact") |
| | | require(column.get("maxVerticalScrollOffset", 0) > 0, "Long Waterfall column must expose vertical scroll overflow") |
| | | require(column.get("verticalScrollOffset") == 0, "Waterfall column should start at top") |
| | | |