summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2009-04-11 17:15:39 -0400
committerDavid Zeuthen <davidz@redhat.com>2009-04-11 17:15:39 -0400
commit01b800c41e0684d50ac60b3a54766f1e2cb4814c (patch)
tree7b541d058854c3fff34133ab106d249aa8231fe5
parent94f27580d508812b533bc85170d48e3c33a8625c (diff)
downloadgnome-disk-utility-01b800c41e0684d50ac60b3a54766f1e2cb4814c.tar.gz
gnome-disk-utility-01b800c41e0684d50ac60b3a54766f1e2cb4814c.tar.xz
gnome-disk-utility-01b800c41e0684d50ac60b3a54766f1e2cb4814c.zip
grid: misc changes
-rw-r--r--src/playground/grid/gdu-grid-details.c100
-rw-r--r--src/playground/grid/grid.c2
2 files changed, 88 insertions, 14 deletions
diff --git a/src/playground/grid/gdu-grid-details.c b/src/playground/grid/gdu-grid-details.c
index 390a91c..d8a9797 100644
--- a/src/playground/grid/gdu-grid-details.c
+++ b/src/playground/grid/gdu-grid-details.c
@@ -5,11 +5,14 @@
#include "gdu-grid-view.h"
#include "gdu-grid-details.h"
+#define NUM_ROWS 6
+
struct GduGridDetailsPrivate
{
GduGridView *view;
- GtkWidget *notebook;
+ GtkWidget *table_key_label[NUM_ROWS];
+ GtkWidget *table_value_label[NUM_ROWS];
};
enum
@@ -20,11 +23,14 @@ enum
G_DEFINE_TYPE (GduGridDetails, gdu_grid_details, GTK_TYPE_VBOX)
+static void on_selection_changed (GduGridView *view, gpointer user_data);
+
static void
gdu_grid_details_finalize (GObject *object)
{
GduGridDetails *details = GDU_GRID_DETAILS (object);
+ g_signal_handlers_disconnect_by_func (details->priv->view, on_selection_changed, details);
g_object_unref (details->priv->view);
if (G_OBJECT_CLASS (gdu_grid_details_parent_class)->finalize != NULL)
@@ -71,21 +77,40 @@ static void
gdu_grid_details_constructed (GObject *object)
{
GduGridDetails *details = GDU_GRID_DETAILS (object);
- GtkWidget *notebook;
- GtkWidget *no_media_page;
+ GtkWidget *hbox;
+ GtkWidget *table;
GtkWidget *label;
+ guint row;
+
+ hbox = gtk_hbox_new (TRUE, 12);
+
+ table = gtk_table_new (NUM_ROWS, 2, TRUE);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 12);
+ gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, TRUE, 0);
+
+ for (row = 0; row < NUM_ROWS; row++) {
+ label = gtk_label_new (NULL);
+ gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
+ gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row + 1,
+ GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 2, 2);
+ details->priv->table_key_label[row] = label;
+
+ label = gtk_label_new (NULL);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row + 1,
+ GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 2, 2);
+ details->priv->table_value_label[row] = label;
+ }
- no_media_page = gtk_alignment_new (0.5, 0.5, 0, 0);
- label = gtk_label_new (_("No media detected"));
- gtk_container_add (GTK_CONTAINER (no_media_page), label);
+ label = gtk_label_new (_("Operations should go here"));
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
- notebook = gtk_notebook_new ();
- gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
- no_media_page,
- NULL);
- details->priv->notebook = notebook;
+ gtk_container_add (GTK_CONTAINER (details), hbox);
- gtk_container_add (GTK_CONTAINER (details), notebook);
+ g_signal_connect (details->priv->view,
+ "selection-changed",
+ G_CALLBACK (on_selection_changed),
+ details);
if (G_OBJECT_CLASS (gdu_grid_details_parent_class)->constructed != NULL)
G_OBJECT_CLASS (gdu_grid_details_parent_class)->constructed (object);
@@ -127,3 +152,54 @@ gdu_grid_details_new (GduGridView *view)
"view", view,
NULL));
}
+
+static void
+set_kv (GduGridDetails *details,
+ guint row,
+ const gchar *key,
+ const gchar *value)
+{
+ gchar *s;
+
+ g_return_if_fail (row < NUM_ROWS);
+
+ s = g_strdup_printf ("<b>%s</b>", key);
+ gtk_label_set_markup (GTK_LABEL (details->priv->table_key_label[row]), s);
+ g_free (s);
+
+ gtk_label_set_markup (GTK_LABEL (details->priv->table_value_label[row]), value);
+}
+
+static void
+on_selection_changed (GduGridView *view,
+ gpointer user_data)
+{
+ GduGridDetails *details = GDU_GRID_DETAILS (user_data);
+ GList *selection;
+ guint n;
+
+ for (n = 0; n < NUM_ROWS; n++) {
+ gtk_label_set_text (GTK_LABEL (details->priv->table_key_label[n]), "");
+ gtk_label_set_text (GTK_LABEL (details->priv->table_value_label[n]), "");
+ }
+
+ selection = gdu_grid_view_selection_get (view);
+
+ g_debug ("selection has %d items", g_list_length (selection));
+ if (g_list_length (selection) == 1) {
+ GduPresentable *p = GDU_PRESENTABLE (selection->data);
+ GduDevice *d;
+
+ d = gdu_presentable_get_device (p);
+
+ if (GDU_IS_VOLUME (p) && d != NULL) {
+ set_kv (details, 0, _("Device:"), gdu_device_get_device_file (d));
+ }
+
+ if (d != NULL)
+ g_object_unref (d);
+ }
+
+ g_list_foreach (selection, (GFunc) g_object_unref, NULL);
+ g_list_free (selection);
+}
diff --git a/src/playground/grid/grid.c b/src/playground/grid/grid.c
index 853c48e..8358fe6 100644
--- a/src/playground/grid/grid.c
+++ b/src/playground/grid/grid.c
@@ -37,14 +37,12 @@ main (int argc, char *argv[])
TRUE,
0);
-#if 0
details = gdu_grid_details_new (GDU_GRID_VIEW (view));
gtk_box_pack_start (GTK_BOX (vbox),
details,
TRUE,
TRUE,
0);
-#endif
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
gtk_widget_show_all (window);