Skip to content

Commit a4929a4

Browse files
committed
Column full names are now used in chooser.
1 parent 9c6a815 commit a4929a4

File tree

4 files changed

+21
-15
lines changed

4 files changed

+21
-15
lines changed

.cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
"gucs",
6464
"httpx",
6565
"longname",
66+
"nowrap",
6667
"pydantic",
6768
"pylintrc",
6869
"pyright",

src/appui/column_chooser_screen.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def __init__(
7676
for frozen_key in self._frozen_keys:
7777
frozen_column = self._registry[frozen_key]
7878
frozen_label = Label(
79-
frozen_column.label,
79+
frozen_column.full_name,
8080
classes="frozen-column-label",
8181
)
8282
frozen_label.tooltip = frozen_column.full_name
@@ -207,7 +207,7 @@ def action_move_active_down(self) -> None:
207207

208208
self._move_active_item(1)
209209

210-
@on(Click, "ListView ListItem")
210+
@on(Click, "ListView ListItem Label")
211211
async def _on_list_view_clicked(self, event: Click) -> None:
212212
if event.chain == 2: # noqa: PLR2004
213213
await self.action_toggle_column()
@@ -294,7 +294,7 @@ def _build_list_item(self, column_key: str) -> ListItem:
294294
The list item widget.
295295
"""
296296
column = self._registry[column_key]
297-
label = Label(column.label)
297+
label = Label(column.full_name)
298298
label.tooltip = column.full_name
299299
return ListItem(label, id=column_key)
300300

src/appui/doubloon_app.tcss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,19 @@ ColumnChooserScreen ListItem {
110110
color: rgb(160, 160, 160);
111111
}
112112

113+
ColumnChooserScreen ListItem Label {
114+
text-wrap: nowrap;
115+
text-overflow: ellipsis;
116+
width: 100%;
117+
}
118+
113119
# Frozen headers above Active Columns list
114120
ColumnChooserScreen .frozen-column-label {
115121
width: 100%;
116122
color: rgb(110, 110, 110);
117123
background: rgb(35, 35, 35);
124+
text-wrap: nowrap;
125+
text-overflow: ellipsis;
118126
}
119127

120128
# When Active List has focus, brighten the frozen labels

tests/appui/test_column_chooser_screen.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,8 @@ def _label_text(label: Label) -> str:
150150

151151

152152
@pytest.mark.asyncio
153-
async def test_build_list_item_uses_registry_label() -> None:
154-
"""Ensure list items mirror registry labels and keys."""
153+
async def test_build_list_item_uses_registry_full_name() -> None:
154+
"""Ensure list items display full names and use keys for IDs."""
155155

156156
registry = _FakeRegistry(
157157
[_FakeColumn("alpha", "Alpha Column", full_name="Alpha Column Full")]
@@ -168,7 +168,7 @@ async def test_build_list_item_uses_registry_label() -> None:
168168
assert isinstance(item, ListItem)
169169
assert str(item.id) == "alpha"
170170
label = item.query_one(Label)
171-
assert _label_text(label) == "Alpha Column"
171+
assert _label_text(label) == "Alpha Column Full"
172172
assert label.tooltip == "Alpha Column Full"
173173

174174

@@ -194,7 +194,7 @@ async def test_populate_lists_excludes_frozen_and_preserves_order() -> None:
194194
assert _list_item_ids(screen._available_list) == ["first", "third"]
195195
assert _list_item_ids(screen._active_list) == ["second"]
196196
frozen_label = screen._frozen_labels[0]
197-
assert _label_text(frozen_label) == "Frozen"
197+
assert _label_text(frozen_label) == "Frozen Column"
198198
assert frozen_label.tooltip == "Frozen Column"
199199

200200

@@ -392,14 +392,15 @@ async def test_toggle_sets_dest_index_when_first_item_added(
392392
@pytest.mark.ui
393393
@pytest.mark.asyncio
394394
@pytest.mark.parametrize(
395-
"use_available_list",
395+
("use_available_list", "item_selector"),
396396
[
397-
pytest.param(True, id="double_click_available_list"),
398-
pytest.param(False, id="double_click_active_list"),
397+
pytest.param(True, "#third Label", id="double_click_available_list"),
398+
pytest.param(False, "#first Label", id="double_click_active_list"),
399399
],
400400
)
401401
async def test_double_click_toggles_selected_item(
402402
use_available_list: bool, # noqa: FBT001
403+
item_selector: str,
403404
) -> None:
404405
"""Ensure a double click toggles the selected item for either list."""
405406

@@ -418,16 +419,12 @@ async def test_double_click_toggles_selected_item(
418419
await screen._populate_lists()
419420

420421
if use_available_list:
421-
screen._available_list.index = 0
422422
screen._available_list.focus()
423423
else:
424-
screen._active_list.index = 0
425424
screen._active_list.focus()
426425

427-
event = MagicMock(chain=2)
428-
429426
await pilot.pause()
430-
await screen._on_list_view_clicked(event)
427+
await pilot.click(item_selector, times=2)
431428
await pilot.pause()
432429

433430
if use_available_list:

0 commit comments

Comments
 (0)