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)
|
box.append(btn)
|
||||||
win.present()
|
win.present()
|
||||||
|
|
||||||
|
def get_config(self):
|
||||||
|
return {"partitions": self.partitions}
|
||||||
|
|
||||||
def load_partitions(self, disk_device=None):
|
def load_partitions(self, disk_device=None):
|
||||||
self.current_disk_path = disk_device
|
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