Fix bugs when deleting logical partition.

modified:   new_partition/interface_partition.py
This commit is contained in:
Peng Zhihui
2014-01-20 16:53:11 +08:00
parent 5a2221f435
commit 9ec9e67824

View File

@@ -533,7 +533,7 @@ def del_msdos_partition(partition,dev):
res3 = g3.runOnce()
if bb3.buttonPressed(res3) == "delete":
pre_partition_name = clb.current().split(":")[8]
pre_partition_name = clb.current().split(":")[8]
list_partition_all_sorted = p_d.sort_partitions(p_d.Partition.dict, dev, "all")
partition_sn = p_d.Partition.dict[dev]['partition'][partition]['sn']
partition_num = p_d.Partition.dict[dev]['partition'][partition]['num']
@@ -583,7 +583,7 @@ def del_msdos_partition(partition,dev):
list_partition_all_sorted = p_d.sort_partitions(p_d.Partition.dict, dev, "all")
for p in list_partition_all_sorted:
p_sn = p_d.Partition.dict[dev]['partition'][p]['sn']
if p_sn == partition_sn -1:
if p_sn == partition_sn - 1:
pre_partition = p
elif p_sn == partition_sn + 1:
next_partition = p
@@ -607,7 +607,6 @@ def del_msdos_partition(partition,dev):
float(get_num(p_d.Partition.dict[dev]['partition'][pre_partition]['start'])))+\
base_unit
p_d.delete_one_partition(p_d.Partition.dict, dev, next_partition)
p_d.delete_one_partition(p_d.Partition.dict, dev,partition)
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn + 1:
@@ -672,11 +671,14 @@ def del_msdos_partition(partition,dev):
if p_d.Partition.dict[dev]['partition'][f]['num'] > f_num_max:
f_num_max = p_d.Partition.dict[dev]['partition'][f]['num']
if f_num_max > p_d.Partition.dict[dev]['partition'][next_partition]['num']:
p_d.delete_one_partition(p_d.Partition.dict, dev, pre_partition_name+str(p_num_max))
p_d.delete_one_partition(p_d.Partition.dict, dev, 'free '+str(f_num_max))
else:
p_d.Partition.dict[dev]['partition'][next_partition]['start'] = partition_start
p_d.Partition.dict[dev]['partition'][next_partition]['sn'] = partition_sn
p_d.Partition.dict[dev]['partition'][next_partition]['size'] = \
str(float(get_num(p_d.Partition.dict[dev]['partition'][next_partition]['end']))-\
float(get_num(partition_start))) + base_unit
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn:
@@ -717,6 +719,41 @@ def del_msdos_partition(partition,dev):
p_d.Partition.dict[dev]['partition'][pre_partition]['size'] = \
str(float(get_num(partition_end)) - \
float(get_num(p_d.Partition.dict[dev]['partition'][pre_partition]['start'])))+base_unit
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn:
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 1
if p_num > partition_num and not re.search('free', p):
p_num -= 1
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['num'] = \
p_num
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['sn'] = \
p_d.Partition.dict[dev]['partition'][p]['sn']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['start'] = \
p_d.Partition.dict[dev]['partition'][p]['start']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['end'] = \
p_d.Partition.dict[dev]['partition'][p]['end']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['size'] = \
p_d.Partition.dict[dev]['partition'][p]['size']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['filesystem'] = \
p_d.Partition.dict[dev]['partition'][p]['filesystem']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['type'] = \
p_d.Partition.dict[dev]['partition'][p]['type']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['flags'] = \
p_d.Partition.dict[dev]['partition'][p]['flags']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['from_os'] = \
p_d.Partition.dict[dev]['partition'][p]['from_os']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['mount_point'] = \
p_d.Partition.dict[dev]['partition'][p]['mount_point']
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['format'] = \
p_d.Partition.dict[dev]['partition'][p]['format']
p_num_max = 1
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "partition"):
if p_d.Partition.dict[dev]['partition'][p]['num'] > p_num_max:
p_num_max = p_d.Partition.dict[dev]['partition'][p]['num']
if p_num_max > partition_num:
p_d.delete_one_partition(p_d.Partition.dict, dev, pre_partition_name+str(p_num_max))
else:
free_num = 0
list_free_sorted = p_d.sort_partitions(p_d.Partition.dict, dev, "free")