Fix PartitioningPage being stuck on detecting due to duplicate function
This commit is contained in:
@@ -531,5 +531,110 @@ class PartitioningPage(Adw.Bin):
|
||||
box.append(btn)
|
||||
win.present()
|
||||
|
||||
def get_config(self):
|
||||
return {"partitions": self.partitions}
|
||||
|
||||
def load_partitions(self, disk_device=None):
|
||||
self.current_disk_path = disk_device
|
||||
target_disk = None
|
||||
|
||||
try:
|
||||
result = subprocess.run(
|
||||
["lsblk", "-J", "-b", "-o", "NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,PKNAME"],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
if result.returncode == 0:
|
||||
data = json.loads(result.stdout)
|
||||
devices = data.get("blockdevices", [])
|
||||
|
||||
if disk_device:
|
||||
dev_name = disk_device.replace("/dev/", "")
|
||||
for dev in devices:
|
||||
if dev.get("name") == dev_name:
|
||||
target_disk = dev
|
||||
break
|
||||
|
||||
if not target_disk and not disk_device:
|
||||
for dev in devices:
|
||||
if (
|
||||
dev.get("type") == "disk"
|
||||
and not dev.get("name").startswith("zram")
|
||||
and not dev.get("name").startswith("loop")
|
||||
):
|
||||
target_disk = dev
|
||||
break
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error loading disks: {e}")
|
||||
|
||||
if target_disk:
|
||||
self.disk_row.set_title(target_disk.get("name", "Unknown Disk"))
|
||||
self.disk_row.set_subtitle(
|
||||
f"Size: {self.format_size(target_disk.get('size', 0))}"
|
||||
)
|
||||
|
||||
raw_parts = target_disk.get("children", [])
|
||||
self.partitions = []
|
||||
|
||||
total_disk_size = int(target_disk.get("size", 0))
|
||||
covered_size = 0
|
||||
|
||||
if raw_parts:
|
||||
for p in raw_parts:
|
||||
p_size = int(p.get("size", 0))
|
||||
covered_size += p_size
|
||||
|
||||
fstype = p.get("fstype", "").lower()
|
||||
style = "part-root"
|
||||
if "fat" in fstype or "efi" in fstype:
|
||||
style = "part-efi"
|
||||
elif "swap" in fstype:
|
||||
style = "part-swap"
|
||||
|
||||
self.partitions.append(
|
||||
{
|
||||
"type": "partition",
|
||||
"name": p.get("name"),
|
||||
"filesystem": p.get("fstype", "Unknown"),
|
||||
"label": p.get("name"),
|
||||
"mount_point": p.get("mountpoint", ""),
|
||||
"size": self.format_size(p_size),
|
||||
"bytes": p_size,
|
||||
"style_class": style,
|
||||
"expand": False,
|
||||
}
|
||||
)
|
||||
|
||||
remaining = total_disk_size - covered_size
|
||||
if remaining > 100 * 1024 * 1024:
|
||||
self.partitions.append(
|
||||
{
|
||||
"type": "empty",
|
||||
"name": "Unallocated",
|
||||
"size": self.format_size(remaining),
|
||||
"bytes": remaining,
|
||||
"style_class": "part-empty",
|
||||
"expand": False,
|
||||
}
|
||||
)
|
||||
|
||||
for p in self.partitions:
|
||||
ratio = p["bytes"] / total_disk_size if total_disk_size > 0 else 0
|
||||
width = int(ratio * 800)
|
||||
if width < 50:
|
||||
width = 50
|
||||
p["width_request"] = width
|
||||
|
||||
else:
|
||||
self.partitions = [
|
||||
{
|
||||
"type": "empty",
|
||||
"name": "No Disk Selected",
|
||||
"size": "-",
|
||||
"style_class": "part-empty",
|
||||
"width_request": 300,
|
||||
}
|
||||
]
|
||||
|
||||
self.refresh_bar()
|
||||
|
||||
Reference in New Issue
Block a user