[gnome-disk-utility/wip/mdraid] Add a "Go To Disk" toolbar button to the MD-RAID disk dialog



commit c410ab2f94d137ae6ff0492e9350d9324432f993
Author: David Zeuthen <zeuthen gmail com>
Date:   Tue Sep 18 13:38:36 2012 -0400

    Add a "Go To Disk" toolbar button to the MD-RAID disk dialog
    
    Signed-off-by: David Zeuthen <zeuthen gmail com>

 data/ui/md-raid-disks-dialog.ui  |   30 +++++++++++++++++++++++++
 src/disks/gdumdraiddisksdialog.c |   45 +++++++++++++++++++++++++++++++++++++-
 2 files changed, 74 insertions(+), 1 deletions(-)
---
diff --git a/data/ui/md-raid-disks-dialog.ui b/data/ui/md-raid-disks-dialog.ui
index 38b6fed..9f2d833 100644
--- a/data/ui/md-raid-disks-dialog.ui
+++ b/data/ui/md-raid-disks-dialog.ui
@@ -86,6 +86,7 @@
                         <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <property name="tooltip_text" translatable="yes">Add Disk...</property>
                         <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Add Disk...</property>
                         <property name="use_underline">True</property>
@@ -101,6 +102,7 @@
                         <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <property name="tooltip_text" translatable="yes">Remove Disk...</property>
                         <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Remove Disk...</property>
                         <property name="use_underline">True</property>
@@ -111,6 +113,34 @@
                         <property name="homogeneous">True</property>
                       </packing>
                     </child>
+                    <child>
+                      <object class="GtkSeparatorToolItem" id="toolbutton1">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="homogeneous">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkToolButton" id="goto-disk-toolbutton">
+                        <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="tooltip_text" translatable="yes">Go To Disk</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="label" translatable="yes">Go To Disk</property>
+                        <property name="use_underline">True</property>
+                        <property name="icon_name">go-jump-symbolic</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="homogeneous">True</property>
+                      </packing>
+                    </child>
                   </object>
                   <packing>
                     <property name="expand">False</property>
diff --git a/src/disks/gdumdraiddisksdialog.c b/src/disks/gdumdraiddisksdialog.c
index 72b52ba..e2a0d6e 100644
--- a/src/disks/gdumdraiddisksdialog.c
+++ b/src/disks/gdumdraiddisksdialog.c
@@ -43,6 +43,7 @@ typedef struct
   GtkWidget *toolbar;
   GtkWidget *add_toolbutton;
   GtkWidget *remove_toolbutton;
+  GtkWidget *goto_disk_toolbutton;
 
   GtkWidget *model_label;
   GtkWidget *device_label;
@@ -64,6 +65,7 @@ static const struct {
   {G_STRUCT_OFFSET (DialogData, toolbar), "toolbar"},
   {G_STRUCT_OFFSET (DialogData, add_toolbutton), "add-toolbutton"},
   {G_STRUCT_OFFSET (DialogData, remove_toolbutton), "remove-toolbutton"},
+  {G_STRUCT_OFFSET (DialogData, goto_disk_toolbutton), "goto-disk-toolbutton"},
 
   {G_STRUCT_OFFSET (DialogData, model_label), "model-label"},
   {G_STRUCT_OFFSET (DialogData, device_label), "device-label"},
@@ -393,6 +395,43 @@ on_remove_toolbutton_clicked (GtkToolButton   *tool_button,
 /* ---------------------------------------------------------------------------------------------------- */
 
 static void
+on_goto_disk_toolbutton_clicked (GtkToolButton   *tool_button,
+                                 gpointer         user_data)
+{
+  DialogData *data = user_data;
+  UDisksBlock *selected_block = NULL;
+  UDisksObject *selected_block_object = NULL;
+  GtkTreeIter titer;
+
+  if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (data->treeview)),
+                                       NULL, /* out_model */
+                                       &titer))
+    {
+      gtk_tree_model_get (GTK_TREE_MODEL (data->store),
+                          &titer,
+                          COLUMN_BLOCK, &selected_block,
+                          -1);
+      if (selected_block != NULL)
+        selected_block_object = (UDisksObject *) g_dbus_interface_dup_object (G_DBUS_INTERFACE (selected_block));
+    }
+
+  if (selected_block_object == NULL)
+    {
+      g_warning ("Cannot determine device to go to");
+      goto out;
+    }
+
+  dialog_data_close (data);
+  gdu_window_select_object (data->window, selected_block_object);
+
+ out:
+  g_clear_object (&selected_block_object);
+  g_clear_object (&selected_block);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+static void
 slot_cell_func (GtkTreeViewColumn *column,
                 GtkCellRenderer   *renderer,
                 GtkTreeModel      *model,
@@ -705,7 +744,6 @@ init_dialog (DialogData *data)
   context = gtk_widget_get_style_context (data->toolbar);
   gtk_style_context_add_class (context, GTK_STYLE_CLASS_INLINE_TOOLBAR);
   gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP);
-  gtk_widget_set_name (data->toolbar, "mdraid-disks-toolbar");
 
   data->store = gtk_list_store_new (5,
                                     G_TYPE_INT,
@@ -809,6 +847,11 @@ init_dialog (DialogData *data)
                     G_CALLBACK (on_remove_toolbutton_clicked),
                     data);
 
+  g_signal_connect (data->goto_disk_toolbutton,
+                    "clicked",
+                    G_CALLBACK (on_goto_disk_toolbutton_clicked),
+                    data);
+
 
   /* ---------- */
 



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