Skip to content

Commit e204ee2

Browse files
committed
fix: enhance TableApp with improved venv display and deletion feedback
1 parent 677f66e commit e204ee2

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

killpy/__main__.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
from pathlib import Path
44

55
from textual.app import App, ComposeResult
6+
from textual.binding import Binding
67
from textual.coordinate import Coordinate
7-
from textual.widgets import DataTable, Header
8+
from textual.widgets import DataTable, Footer, Header, Label
89

910

1011
def get_total_size(path: Path) -> int:
@@ -29,18 +30,32 @@ def find_venvs(base_directory: Path):
2930
last_modified = int(
3031
round((time.time() - dir_path.stat().st_mtime) / (24 * 3600))
3132
)
32-
size = format_size(get_total_size(dir_path))
33-
venvs.append((dir_path, last_modified, size))
33+
size = get_total_size(dir_path)
34+
size_to_show = format_size(size)
35+
venvs.append((dir_path, last_modified, size, size_to_show))
36+
venvs.sort(key=lambda x: x[2], reverse=True)
3437

3538
return venvs
3639

3740

3841
class TableApp(App):
3942
deleted_cells: Coordinate = []
43+
bytes_release: int = 0
44+
BINDINGS = [
45+
Binding(key="ctrl+q", action="quit", description="Quit the app"),
46+
Binding(
47+
key="ctrl+m",
48+
action="enter",
49+
description="Delete the .venv selected",
50+
show=True,
51+
),
52+
]
4053

4154
def compose(self) -> ComposeResult:
4255
yield Header()
56+
yield Label("Finding .venv directories...")
4357
yield DataTable()
58+
yield Footer()
4459

4560
def on_mount(self) -> None:
4661
self.title = """KillPy"""
@@ -50,11 +65,12 @@ def on_mount(self) -> None:
5065
venvs = find_venvs(current_directory)
5166
table = self.query_one(DataTable)
5267
table.focus()
53-
table.add_columns("Path", "Last Modified", "Size")
68+
table.add_columns("Path", "Last Modified", "Size", "Size (Human Readable)")
5469
for venv in venvs:
5570
table.add_row(*venv)
5671
table.cursor_type = "row"
5772
table.zebra_stripes = True
73+
self.query_one(Label).update(f"Found {len(venvs)} .venv directories")
5874

5975
def on_key(self, event):
6076
if event.key == "enter":
@@ -65,8 +81,12 @@ def on_key(self, event):
6581
return event
6682
row_data = table.get_row_at(cursor_cell.row)
6783
path = row_data[0]
84+
self.bytes_release += row_data[2]
6885
shutil.rmtree(path)
69-
table.update_cell_at(cursor_cell, f"DELETED {row_data[0]}")
86+
table.update_cell_at(cursor_cell, f"DELETED {path}")
87+
self.query_one(Label).update(
88+
f"{format_size(self.bytes_release)} deleted"
89+
)
7090
self.deleted_cells.append(cursor_cell)
7191
self.bell()
7292
return event

0 commit comments

Comments
 (0)