From b0d6294edde299a4835d69c78c35d2f46d7ad6c2 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Tue, 3 Mar 2009 18:18:03 +0100 Subject: Port to libgdu-0.2 --- configure.in | 6 +- src/format-window-operation.c | 12 ++- src/format-window.c | 231 +++++++++++++++++++++++++----------------- src/format-window.h | 1 + 4 files changed, 150 insertions(+), 100 deletions(-) diff --git a/configure.in b/configure.in index b3f0ac0..f3390ee 100644 --- a/configure.in +++ b/configure.in @@ -1,7 +1,7 @@ AC_INIT PACKAGE=nautilus-gdu -VERSION=0.1 +VERSION=0.2 AC_SUBST(PACKAGE) AC_SUBST(VERSION) @@ -13,8 +13,8 @@ AM_CONFIG_HEADER(config.h) GLIB_REQUIRED=2.18.0 GTK_REQUIRED=2.14.0 NAUTILUS_REQUIRED=2.24.0 -GDU_REQUIRED=0.1 -GDU_GTK_REQUIRED=0.1 +GDU_REQUIRED=0.2 +GDU_GTK_REQUIRED=0.2 AC_C_CONST AC_ISC_POSIX diff --git a/src/format-window-operation.c b/src/format-window-operation.c index 113a3e6..40ea754 100644 --- a/src/format-window-operation.c +++ b/src/format-window-operation.c @@ -310,6 +310,7 @@ action_finished (FormatProcessData *data, char *new_device_path) } /* ---------------------------------------------------------------------------------------------------- */ +/* keep in sync with gdu-shell.c/gdu_shell_raise_error() */ static void nautilus_gdu_show_error (GtkWidget *parent_window, GduPresentable *presentable, @@ -320,7 +321,7 @@ nautilus_gdu_show_error (GtkWidget *parent_window, GtkWidget *dialog; char *error_text; char *window_title; - char *window_icon_name; + GIcon *window_icon; va_list args; g_return_if_fail (presentable != NULL); @@ -329,7 +330,7 @@ nautilus_gdu_show_error (GtkWidget *parent_window, /* TODO: this still needs work */ window_title = gdu_presentable_get_name (presentable); - window_icon_name = gdu_presentable_get_icon_name (presentable); + window_icon = gdu_presentable_get_icon (presentable); va_start (args, primary_markup_format); error_text = g_strdup_vprintf (primary_markup_format, args); @@ -345,7 +346,8 @@ nautilus_gdu_show_error (GtkWidget *parent_window, gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", error->message); gtk_window_set_title (GTK_WINDOW (dialog), window_title); - gtk_window_set_icon_name (GTK_WINDOW (dialog), window_icon_name); + // TODO: no support for GIcon in GtkWindow + //gtk_window_set_icon_name (GTK_WINDOW (dialog), window_icon_name); g_signal_connect_swapped (dialog, "response", @@ -354,8 +356,9 @@ nautilus_gdu_show_error (GtkWidget *parent_window, gtk_window_present (GTK_WINDOW (dialog)); g_free (window_title); - g_free (window_icon_name); g_free (error_text); + if (window_icon != NULL) + g_object_unref (window_icon); } /* ---------------------------------------------------------------------------------------------------- */ @@ -899,6 +902,7 @@ do_format (FormatDialogPrivate *priv) data->secure_erase = gdu_util_delete_confirmation_dialog (GTK_WIDGET (priv->dialog), "", + TRUE, primary, secondary, _("C_reate")); diff --git a/src/format-window.c b/src/format-window.c index 17fc595..f652afb 100644 --- a/src/format-window.c +++ b/src/format-window.c @@ -153,20 +153,19 @@ update_ui_controls (FormatDialogPrivate *priv) /* most of the code here was stolen from palimpsest */ +/* keep in sync with gdu-shell.c/details_update() */ static void update_ui (FormatDialogPrivate *priv) { - char *details1; - char *details2; - char *details3; char *s; + char *p; char *name = NULL; - char *icon_name = NULL; - GdkPixbuf *pixbuf; + GdkPixbuf *pixbuf = NULL; const char *usage; const char *type; const char *device_file; - char *strsize = NULL; + guint64 presentable_size = 0; + char *strsize_long; GduDevice *device = NULL; GduPresentable *toplevel_presentable = NULL; GduDevice *toplevel_device = NULL; @@ -176,6 +175,8 @@ update_ui (FormatDialogPrivate *priv) gboolean known_fs; const char *scheme; char **flags; + GPtrArray *details; + guint n; if (priv->presentable) { @@ -183,9 +184,9 @@ update_ui (FormatDialogPrivate *priv) toplevel_presentable = gdu_presentable_get_toplevel (priv->presentable); if (toplevel_presentable != NULL) toplevel_device = gdu_presentable_get_device (toplevel_presentable); - icon_name = gdu_presentable_get_icon_name (priv->presentable); name = gdu_presentable_get_name (priv->presentable); - strsize = gdu_util_get_size_for_display (gdu_presentable_get_size (priv->presentable), FALSE); + presentable_size = gdu_presentable_get_size (priv->presentable); + pixbuf = gdu_util_get_pixbuf_for_presentable_at_pixel_size (priv->presentable, 112); } /* window title */ @@ -195,15 +196,6 @@ update_ui (FormatDialogPrivate *priv) /* icon */ - pixbuf = NULL; - /* we can also use gdu_util_get_pixbuf_for_presentable() */ - if (icon_name != NULL) { - pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), - icon_name, - 96, - GTK_ICON_LOOKUP_GENERIC_FALLBACK, - NULL); - } gtk_image_set_from_pixbuf (GTK_IMAGE (priv->icon_image), pixbuf); if (pixbuf) g_object_unref (pixbuf); @@ -221,31 +213,20 @@ update_ui (FormatDialogPrivate *priv) type = gdu_device_id_get_type (device); device_file = gdu_device_get_device_file (device); } + details = g_ptr_array_new (); + - details1 = NULL; - details2 = NULL; - details3 = NULL; + /* header labels */ + if (presentable_size > 0) { + strsize_long = gdu_util_get_size_for_display (presentable_size, TRUE); + } else { + strsize_long = g_strdup ("Unknown Size"); + } - /* Labels, header */ - /* TODO: clean unused code up */ if (GDU_IS_DRIVE (priv->presentable)) { - details3 = g_strdup (device_file); - if (GDU_IS_ACTIVATABLE_DRIVE (priv->presentable)) { - switch (gdu_activatable_drive_get_kind (GDU_ACTIVATABLE_DRIVE (priv->presentable))) { - case GDU_ACTIVATABLE_DRIVE_KIND_LINUX_MD: - details1 = g_strdup (_("Linux Software RAID")); - break; - default: - details1 = g_strdup (_("Activatable Drive")); - break; - } - } else { - s = gdu_util_get_connection_for_display ( - gdu_device_drive_get_connection_interface (device), - gdu_device_drive_get_connection_speed (device)); - details1 = g_strdup_printf (_("Connected via %s"), s); - g_free (s); - } + + g_ptr_array_add (details, + g_strdup (strsize_long)); if (device == NULL) { /* TODO */ @@ -264,15 +245,19 @@ update_ui (FormatDialogPrivate *priv) s = g_strdup_printf (_("Unknown Scheme: %s"), scheme); } - details2 = g_strdup_printf (_("%s Partitioned Media (%s)"), strsize, s); + g_ptr_array_add (details, + g_strdup_printf (_("Partitioned Media (%s)"), s)); g_free (s); } else if (usage != NULL && strlen (usage) > 0) { - details2 = g_strdup_printf (_("%s Unpartitioned Media"), strsize); + g_ptr_array_add (details, + g_strdup (_("Unpartitioned Media"))); } else if (!gdu_device_is_media_available (device)) { - details2 = g_strdup_printf (_("No Media Detected")); + g_ptr_array_add (details, + g_strdup_printf (_("No Media Detected"))); } else { - details2 = g_strdup_printf (_("Unrecognized")); + g_ptr_array_add (details, + g_strdup_printf (_("Unrecognized"))); } } else { if (gdu_device_is_partition_table (device)) { @@ -287,25 +272,49 @@ update_ui (FormatDialogPrivate *priv) } else { s = g_strdup_printf (_("Unknown Scheme: %s"), scheme); } - details2 = g_strdup_printf (_("Partitioned (%s)"), s); - g_free (s); + g_ptr_array_add (details, s); } else if (usage != NULL && strlen (usage) > 0) { - details2 = g_strdup_printf (_("Not Partitioned")); + g_ptr_array_add (details, + g_strdup_printf (_("Not Partitioned"))); } else if (!gdu_device_is_media_available (device)) { - details2 = g_strdup_printf (_("No Media Detected")); + g_ptr_array_add (details, + g_strdup_printf (_("No Media Detected"))); } else { - details2 = g_strdup_printf (_("Unrecognized")); + g_ptr_array_add (details, + g_strdup_printf (_("Unrecognized"))); } } + } + + if (GDU_IS_LINUX_MD_DRIVE (priv->presentable)) { + g_ptr_array_add (details, + g_strdup (_("Linux Software RAID"))); + } else { + s = gdu_util_get_connection_for_display ( + gdu_device_drive_get_connection_interface (device), + gdu_device_drive_get_connection_speed (device)); + g_ptr_array_add (details, + g_strdup_printf (_("Connected via %s"), s)); + g_free (s); + } + if (device_file != NULL) { if (gdu_device_is_read_only (device)) { - s = details3; - details3 = g_strconcat (details3, _(" (Read Only)"), NULL); - g_free (s); + g_ptr_array_add (details, + g_strdup_printf (_("%s (Read Only)"), device_file)); + } else { + g_ptr_array_add (details, + g_strdup (device_file)); } + } else { + g_ptr_array_add (details, + g_strdup (_("Not running"))); } + } else if (GDU_IS_VOLUME (priv->presentable)) { - details3 = g_strdup (device_file); + + g_ptr_array_add (details, + g_strdup (strsize_long)); if (strcmp (usage, "filesystem") == 0) { char *fsname; @@ -313,7 +322,8 @@ update_ui (FormatDialogPrivate *priv) gdu_device_id_get_type (device), gdu_device_id_get_version (device), TRUE); - details1 = g_strdup_printf (_("%s %s File System"), strsize, fsname); + g_ptr_array_add (details, + g_strdup_printf (_("%s File System"), fsname)); g_free (fsname); } else if (strcmp (usage, "raid") == 0) { char *fsname; @@ -321,84 +331,115 @@ update_ui (FormatDialogPrivate *priv) gdu_device_id_get_type (device), gdu_device_id_get_version (device), TRUE); - details1 = g_strdup_printf (_("%s %s"), strsize, fsname); - g_free (fsname); + g_ptr_array_add (details, fsname); } else if (strcmp (usage, "crypto") == 0) { - details1 = g_strdup_printf (_("%s Encrypted LUKS Device"), strsize); + g_ptr_array_add (details, + g_strdup (_("Encrypted LUKS Device"))); } else if (strcmp (usage, "other") == 0) { if (strcmp (type, "swap") == 0) { - details1 = g_strdup_printf (_("%s Swap Space"), strsize); + g_ptr_array_add (details, + g_strdup (_("Swap Space"))); } else { - details1 = g_strdup_printf (_("%s Data"), strsize); + g_ptr_array_add (details, + g_strdup (_("Data"))); } } else { - details1 = g_strdup_printf (_("%s Unrecognized"), strsize); + g_ptr_array_add (details, + g_strdup (_("Unrecognized"))); } if (gdu_device_is_luks_cleartext (device)) { - details2 = g_strdup (_("Unlocked Encrypted LUKS Volume")); + g_ptr_array_add (details, + g_strdup (_("Unlocked Encrypted LUKS Volume"))); } else { if (gdu_device_is_partition (device)) { char *part_desc; part_desc = gdu_util_get_desc_for_part_type (gdu_device_partition_get_scheme (device), gdu_device_partition_get_type (device)); - details2 = g_strdup_printf (_("Partition %d (%s)"), - gdu_device_partition_get_number (device), part_desc); + g_ptr_array_add (details, + g_strdup_printf (_("Partition %d (%s)"), + gdu_device_partition_get_number (device), part_desc)); g_free (part_desc); } else { - details2 = g_strdup (_("Not Partitioned")); + g_ptr_array_add (details, + g_strdup (_("Not Partitioned"))); } } + s = g_strdup (device_file); if (gdu_device_is_read_only (device)) { - s = details3; - details3 = g_strconcat (details3, _(" (Read Only)"), NULL); - g_free (s); + p = s; + s = g_strconcat (s, _(" (Read Only)"), NULL); + g_free (p); } if (gdu_device_is_mounted (device)) { - s = details3; - details3 = g_strconcat (details3, - _(" mounted at "), - gdu_device_get_mount_path (device), - NULL); - g_free (s); + p = s; + s = g_strconcat (s, + _(" mounted at "), + gdu_device_get_mount_path (device), + NULL); + g_free (p); } + g_ptr_array_add (details, s); + + } else if (GDU_IS_VOLUME_HOLE (priv->presentable)) { - details1 = g_strdup_printf (_("%s Unallocated"), strsize); + g_ptr_array_add (details, + g_strdup (strsize_long)); - if (toplevel_device != NULL) { - details2 = g_strdup (gdu_device_get_device_file (toplevel_device)); + g_ptr_array_add (details, + g_strdup (_("Unallocated Space"))); - if (gdu_device_is_read_only (toplevel_device)) { - s = details2; - details2 = g_strconcat (details2, _(" (Read Only)"), NULL); - g_free (s); - } + if (toplevel_device != NULL) { + if (gdu_device_is_read_only (toplevel_device)) + g_ptr_array_add (details, g_strdup_printf (_("%s (Read Only)"), gdu_device_get_device_file (toplevel_device))); + else + g_ptr_array_add (details, g_strdup (gdu_device_get_device_file (toplevel_device))); } } + if (device) g_print ("gdu_device_id_get_type (device) = '%s', gdu_device_partition_get_type (device) = '%s'\n", gdu_device_id_get_type (device), gdu_device_partition_get_type (device)); - if (icon_name) - g_free (icon_name); if (name) g_free (name); - if (strsize) - g_free (strsize); + if (strsize_long) + g_free (strsize_long); + + + for (n = 0; n < 4; n++) { + GtkWidget *label; + const gchar *detail_str; + + switch (n) { + case 0: + label = priv->details1_label; + break; + case 1: + label = priv->details2_label; + break; + case 2: + label = priv->details3_label; + break; + case 3: + label = priv->details4_label; + break; + } + + if (n < details->len) + detail_str = details->pdata[n]; + else + detail_str = ""; - gtk_label_set_markup (GTK_LABEL (priv->details1_label), details1); - gtk_label_set_markup (GTK_LABEL (priv->details2_label), details2); - gtk_label_set_markup (GTK_LABEL (priv->details3_label), details3); - if (details1) - g_free (details1); - if (details2) - g_free (details2); - if (details3) - g_free (details3); + gtk_label_set_markup (GTK_LABEL (label), detail_str); + } + + g_ptr_array_foreach (details, (GFunc) g_free, NULL); + g_ptr_array_free (details, TRUE); /* partition type combo */ @@ -776,6 +817,10 @@ nautilus_gdu_spawn_dialog (GduPresentable *presentable, gtk_box_pack_start (GTK_BOX (vbox3), label, FALSE, TRUE, 0); priv->details3_label = label; + label = gtk_label_new (NULL); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_box_pack_start (GTK_BOX (vbox3), label, FALSE, TRUE, 0); + priv->details4_label = label; /* partition */ diff --git a/src/format-window.h b/src/format-window.h index 94445a5..f3c993e 100644 --- a/src/format-window.h +++ b/src/format-window.h @@ -39,6 +39,7 @@ typedef struct { GtkWidget *details1_label; GtkWidget *details2_label; GtkWidget *details3_label; + GtkWidget *details4_label; GtkWidget *mount_warning; GtkWidget *readonly_warning; GtkWidget *no_media_warning; -- cgit