[gnome-disk-utility] Be smart about how many digits are shown in the create partition spinbuttons



commit f72943f08af81172aad12a7e6a028335937fe288
Author: David Zeuthen <zeuthen gmail com>
Date:   Tue Dec 4 12:16:39 2012 -0500

    Be smart about how many digits are shown in the create partition spinbuttons
    
    The guiding principle is that we want to show around three significant
    figures. If the user needs more precision he can choose a smaller
    unit.
    
    Signed-off-by: David Zeuthen <zeuthen gmail com>

 data/ui/create-partition-dialog.ui   |    4 ++--
 src/disks/gducreatepartitiondialog.c |   11 +++++++++++
 2 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/data/ui/create-partition-dialog.ui b/data/ui/create-partition-dialog.ui
index 3503810..6a4abf8 100644
--- a/data/ui/create-partition-dialog.ui
+++ b/data/ui/create-partition-dialog.ui
@@ -133,7 +133,7 @@
                         <property name="activates_default">True</property>
                         <property name="invisible_char_set">True</property>
                         <property name="adjustment">size-adjustment</property>
-                        <property name="digits">3</property>
+                        <property name="digits">0</property>
                       </object>
                       <packing>
                         <property name="expand">False</property>
@@ -198,7 +198,7 @@
                         <property name="activates_default">True</property>
                         <property name="invisible_char_set">True</property>
                         <property name="adjustment">free-following-adjustment</property>
-                        <property name="digits">3</property>
+                        <property name="digits">0</property>
                       </object>
                       <packing>
                         <property name="expand">True</property>
diff --git a/src/disks/gducreatepartitiondialog.c b/src/disks/gducreatepartitiondialog.c
index beccbc3..4cf65bb 100644
--- a/src/disks/gducreatepartitiondialog.c
+++ b/src/disks/gducreatepartitiondialog.c
@@ -52,6 +52,7 @@ typedef struct
   GtkWidget *dos_error_infobar;
   GtkWidget *dos_warning_infobar;
   GtkWidget *size_spinbutton;
+  GtkWidget *free_following_spinbutton;
   GtkAdjustment *size_adjustment;
   GtkAdjustment *free_following_adjustment;
 
@@ -203,6 +204,7 @@ set_unit_num (CreatePartitionData *data,
   gdouble value;
   gdouble value_units;
   gdouble max_size_units;
+  gint num_digits;
 
   g_assert (unit_num < NUM_UNITS);
 
@@ -221,6 +223,11 @@ set_unit_num (CreatePartitionData *data,
   value_units = value / unit_size;
   max_size_units = ((gdouble) data->max_size) / unit_size;
 
+  /* show at least three digits in the spin buttons */
+  num_digits = 3.0 - ceil (log10 (max_size_units));
+  if (num_digits < 0)
+    num_digits = 0;
+
   g_object_freeze_notify (G_OBJECT (data->size_adjustment));
   g_object_freeze_notify (G_OBJECT (data->free_following_adjustment));
 
@@ -241,6 +248,9 @@ set_unit_num (CreatePartitionData *data,
                             100,                    /* page increment */
                             0.0);                   /* page_size */
 
+  gtk_spin_button_set_digits (GTK_SPIN_BUTTON (data->size_spinbutton), num_digits);
+  gtk_spin_button_set_digits (GTK_SPIN_BUTTON (data->free_following_spinbutton), num_digits);
+
   gtk_adjustment_set_value (data->size_adjustment, value_units);
   gtk_adjustment_set_value (data->free_following_adjustment, max_size_units - value_units);
 
@@ -464,6 +474,7 @@ gdu_create_partition_dialog_show (GduWindow    *window,
                                                          NULL);
   gtk_box_pack_start (GTK_BOX (data->infobar_vbox), data->dos_warning_infobar, TRUE, TRUE, 0);
   data->size_spinbutton = GTK_WIDGET (gtk_builder_get_object (data->builder, "size-spinbutton"));
+  data->free_following_spinbutton = GTK_WIDGET (gtk_builder_get_object (data->builder, "free-following-spinbutton"));
   data->size_adjustment = GTK_ADJUSTMENT (gtk_builder_get_object (data->builder, "size-adjustment"));
   g_signal_connect (data->size_adjustment, "notify::value", G_CALLBACK (create_partition_property_changed), data);
   data->free_following_adjustment = GTK_ADJUSTMENT (gtk_builder_get_object (data->builder, "free-following-adjustment"));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]