summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2009-03-31 17:00:22 -0400
committerDavid Zeuthen <davidz@redhat.com>2009-03-31 17:00:22 -0400
commit1c2c67959f76ac5f0262d7d4dd198540a4055e26 (patch)
treec4bf0dbad6d2c981d36ad6aec356ee62841e464d
parent27e65927d7b71bb3605f0f26d82bbea9bb2da308 (diff)
downloadgnome-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.c101
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))),