diff options
author | Matthias Clasen <mclasen@redhat.com> | 2009-03-31 17:00:22 -0400 |
---|---|---|
committer | David Zeuthen <davidz@redhat.com> | 2009-03-31 17:00:22 -0400 |
commit | 1c2c67959f76ac5f0262d7d4dd198540a4055e26 (patch) | |
tree | c4bf0dbad6d2c981d36ad6aec356ee62841e464d | |
parent | 27e65927d7b71bb3605f0f26d82bbea9bb2da308 (diff) | |
download | gnome-disk-utility-1c2c67959f76ac5f0262d7d4dd198540a4055e26.tar.gz gnome-disk-utility-1c2c67959f76ac5f0262d7d4dd198540a4055e26.tar.xz gnome-disk-utility-1c2c67959f76ac5f0262d7d4dd198540a4055e26.zip |
bug 576431 – better warning
I was trying to delete a partition that was inside an extended partition. The
partitions I have are
part1
part2
part3
[extended]
part4
part5
part6
I was going to delete part6. I got a warning dialog that was talking about
deleting "partition 7 on the media". This had me slightly confused, because my
naming choice didn't make it obvious that part6 is the seventh. I think it
would be better to mention the label in the warning dialog, if there is a
label.
Similarly, when deleting an extended partition, the warning should make it very
clear that all the partitions contained in the extended partition will be
deleted too.
http://bugzilla.gnome.org/show_bug.cgi?id=576431
Signed-off-by: David Zeuthen <davidz@redhat.com>
-rw-r--r-- | src/palimpsest/gdu-section-partition.c | 101 |
1 files changed, 88 insertions, 13 deletions
diff --git a/src/palimpsest/gdu-section-partition.c b/src/palimpsest/gdu-section-partition.c index b186744..b404404 100644 --- a/src/palimpsest/gdu-section-partition.c +++ b/src/palimpsest/gdu-section-partition.c @@ -72,12 +72,16 @@ delete_partition_callback (GtkAction *action, gpointer user_data) { GduSectionPartition *section = GDU_SECTION_PARTITION (user_data); GduDevice *device; + GduPresentable *presentable; char *primary; char *secondary; char *secure_erase; GduPresentable *toplevel_presentable; GduDevice *toplevel_device; char *drive_name; + char *name; + const gchar *type; + gint msdos_type; secure_erase = NULL; primary = NULL; @@ -85,8 +89,10 @@ delete_partition_callback (GtkAction *action, gpointer user_data) toplevel_presentable = NULL; toplevel_device = NULL; drive_name = NULL; + name = NULL; - device = gdu_presentable_get_device (gdu_section_get_presentable (GDU_SECTION (section))); + presentable = gdu_section_get_presentable (GDU_SECTION (section)); + device = gdu_presentable_get_device (presentable); if (device == NULL) { g_warning ("%s: device is not supposed to be NULL", __FUNCTION__); goto out; @@ -104,23 +110,92 @@ delete_partition_callback (GtkAction *action, gpointer user_data) } drive_name = gdu_presentable_get_name (toplevel_presentable); + name = gdu_presentable_get_name (presentable); + type = gdu_device_partition_get_type (device); + msdos_type = strtol (type, NULL, 0); primary = g_strconcat ("<b><big>", _("Are you sure you want to remove the partition, deleting existing data ?"), "</big></b>", NULL); if (gdu_device_is_removable (toplevel_device)) { - secondary = g_strdup_printf (_("All data on partition %d on the media in \"%s\" will be " - "irrecovably erased. " - "Make sure important data is backed up. " - "This action cannot be undone."), - gdu_device_partition_get_number (device), - drive_name); + if (name != NULL && strlen (name) > 0) { + if (msdos_type == 0x05 || msdos_type == 0x0f || msdos_type == 0x85) { + secondary = g_strdup_printf (_("All data on partition %d with name \"%s\" on the media in \"%s\" " + "and all partitions contained in this extended partition " + "will be irrecovably erased.\n\n" + "Make sure important data is backed up. " + "This action cannot be undone."), + gdu_device_partition_get_number (device), + name, + drive_name); + } + else { + secondary = g_strdup_printf (_("All data on partition %d with name \"%s\" on the media in \"%s\" will be " + "irrecovably erased.\n\n" + "Make sure important data is backed up. " + "This action cannot be undone."), + gdu_device_partition_get_number (device), + name, + drive_name); + } + } else { + if (msdos_type == 0x05 || msdos_type == 0x0f || msdos_type == 0x85) { + secondary = g_strdup_printf (_("All data on partition %d on the media in \"%s\" " + "and all partitions contained in this extended partition " + "will be irrecovably erased.\n\n" + "Make sure important data is backed up. " + "This action cannot be undone."), + gdu_device_partition_get_number (device), + drive_name); + } + else { + secondary = g_strdup_printf (_("All data on partition %d on the media in \"%s\" " + "will be irrecovably erased.\n\n" + "Make sure important data is backed up. " + "This action cannot be undone."), + gdu_device_partition_get_number (device), + drive_name); + } + } } else { - secondary = g_strdup_printf (_("All data on partition %d of \"%s\" will be " - "irrecovably erased. " - "Make sure important data is backed up. " - "This action cannot be undone."), - gdu_device_partition_get_number (device), - drive_name); + if (name != NULL && strlen (name) > 0) { + if (msdos_type == 0x05 || msdos_type == 0x0f || msdos_type == 0x85) { + secondary = g_strdup_printf (_("All data on partition %d with name \"%s\" of \"%s\" " + "and all partitions contained in this extended partition " + "will be irrecovably erased.\n\n" + "Make sure important data is backed up. " + "This action cannot be undone."), + gdu_device_partition_get_number (device), + name, + drive_name); + } + else { + secondary = g_strdup_printf (_("All data on partition %d with name \"%s\" of \"%s\" will be " + "irrecovably erased.\n\n" + "Make sure important data is backed up. " + "This action cannot be undone."), + gdu_device_partition_get_number (device), + name, + drive_name); + } + } else { + if (msdos_type == 0x05 || msdos_type == 0x0f || msdos_type == 0x85) { + secondary = g_strdup_printf (_("All data on partition %d of \"%s\" " + "and all partitions contained in this extended partition " + "will be irrecovably erased.\n\n" + "Make sure important data is backed up. " + "This action cannot be undone."), + gdu_device_partition_get_number (device), + drive_name); + } + else { + secondary = g_strdup_printf (_("All data on partition %d of \"%s\" will be " + "irrecovably erased.\n\n" + "Make sure important data is backed up. " + "This action cannot be undone."), + gdu_device_partition_get_number (device), + drive_name); + } + } } secure_erase = gdu_util_delete_confirmation_dialog (gdu_shell_get_toplevel (gdu_section_get_shell (GDU_SECTION (section))), |