]> git.street.me.uk Git - andy/viking.git/blobdiff - src/viktreeview.c
Remove dependencies to gob2
[andy/viking.git] / src / viktreeview.c
index 50a59de6a0c283ed9b9a34a678d1f9cc9cdb5c18..0e5e81b5bea4c2533c49d14affcb45a8f476a6d4 100644 (file)
  *
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <gtk/gtk.h>
+#include <glib/gi18n.h>
+
 #include <string.h>
 
 #include "viking.h"
@@ -183,6 +189,7 @@ static void treeview_add_columns ( VikTreeview *vt )
   GtkCellRenderer *renderer;
   GtkTreeViewColumn *column;
 
+  /* Layer column */
   renderer = gtk_cell_renderer_text_new ();
   g_signal_connect (renderer, "edited",
                    G_CALLBACK (treeview_edited_cb), vt);
@@ -190,7 +197,7 @@ static void treeview_add_columns ( VikTreeview *vt )
   g_object_set (G_OBJECT (renderer), "xalign", 0.0, NULL);
 
   col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (vt),
-                                                           -1, "Layer Name",
+                                                           -1, _("Layer Name"),
                                                            renderer, "text",
                                                            NAME_COLUMN,
                                                            "editable", EDITABLE_COLUMN,
@@ -198,36 +205,32 @@ static void treeview_add_columns ( VikTreeview *vt )
 
   column = gtk_tree_view_get_column (GTK_TREE_VIEW (vt), col_offset - 1);
   gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
-                                  GTK_TREE_VIEW_COLUMN_FIXED);
-  gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 100);
-  gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
-  gtk_tree_view_column_set_resizable (GTK_TREE_VIEW_COLUMN (column), TRUE);
+                                   GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+  gtk_tree_view_column_set_expand (GTK_TREE_VIEW_COLUMN (column), TRUE);
 
+  /* Layer type */
   renderer = gtk_cell_renderer_pixbuf_new ();
 
-  g_object_set (G_OBJECT (renderer), "xalign", 0.0, NULL);
+  g_object_set (G_OBJECT (renderer), "xalign", 0.5, NULL);
 
   col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (vt),
-                                                           -1, "Type",
+                                                           -1, "",
                                                            renderer, "pixbuf",
                                                            ICON_COLUMN,
                                                            NULL);
 
-
   column = gtk_tree_view_get_column (GTK_TREE_VIEW (vt), col_offset - 1);
-  gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 33);
   gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
-                                  GTK_TREE_VIEW_COLUMN_FIXED);
-  gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
-
+                                   GTK_TREE_VIEW_COLUMN_AUTOSIZE);
 
+  /* Layer visible */
   renderer = gtk_cell_renderer_toggle_new ();
-  g_object_set (G_OBJECT (renderer), "xalign", 0.0, NULL);
+  g_object_set (G_OBJECT (renderer), "xalign", 0.5, NULL);
 
   g_signal_connect (renderer, "toggled", G_CALLBACK (treeview_toggled_cb), vt);
 
   col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (vt),
-                                                           -1, "Visible",
+                                                           -1, "",
                                                            renderer,
                                                            "active",
                                                            VISIBLE_COLUMN,
@@ -238,11 +241,33 @@ static void treeview_add_columns ( VikTreeview *vt )
                                                            NULL);
 
   column = gtk_tree_view_get_column (GTK_TREE_VIEW (vt), col_offset - 1);
-  gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 40);
   gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
-                                  GTK_TREE_VIEW_COLUMN_FIXED);
-  gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), TRUE);
+                                   GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+
+}
+
+static void select_cb(GtkTreeSelection *selection, gpointer data)
+{
+  VikTreeview *vt = data;
+  gint type;
+  GtkTreeIter iter, parent;
+  VikLayer *vl;
+  VikWindow * vw;
+
+  if (!gtk_tree_selection_get_selected(selection, NULL, &iter)) return;
+  type = vik_treeview_item_get_type( vt, &iter);
+
+  while ( type != VIK_TREEVIEW_TYPE_LAYER ) {
+    if ( ! vik_treeview_item_get_parent_iter ( vt, &iter, &parent ) )
+      return;
+    iter = parent;
+    type = vik_treeview_item_get_type (vt, &iter );
+  }
+
+  vl = VIK_LAYER( vik_treeview_item_get_pointer ( vt, &iter ) );
 
+  vw = VIK_WINDOW(VIK_GTK_WINDOW_FROM_LAYER(vl));
+  vik_window_selected_layer(vw, vl);
 }
 
 void treeview_init ( VikTreeview *vt )
@@ -279,6 +304,8 @@ void treeview_init ( VikTreeview *vt )
     vt->layer_type_icons[i] = vik_layer_load_icon ( i ); /* if icon can't be loaded, it will be null and simply not be shown. */
 
   gtk_tree_view_set_reorderable (GTK_TREE_VIEW(vt), TRUE);
+  g_signal_connect(gtk_tree_view_get_selection (GTK_TREE_VIEW (vt)), "changed",
+      G_CALLBACK(select_cb), vt);
 
 }
 
@@ -486,7 +513,7 @@ static gboolean treeview_drag_data_received (GtkTreeDragDest *drag_dest, GtkTree
   GtkTreePath *src_path = NULL, *dest_cp = NULL;
   gboolean retval = FALSE;
   GtkTreeIter src_iter, root_iter, dest_iter, dest_parent;
-  guint *i_src = NULL;
+  gint *i_src = NULL;
   VikTreeview *vt;
   VikLayer *vl;
 
@@ -567,7 +594,7 @@ static gboolean treeview_drag_data_received (GtkTreeDragDest *drag_dest, GtkTree
 static gboolean treeview_drag_data_delete ( GtkTreeDragSource *drag_source, GtkTreePath *path )
 {
   gchar *s_dest = gtk_tree_path_to_string(path);
-  g_print("delete data from %s\n", s_dest);
+  g_print(_("delete data from %s\n"), s_dest);
   g_free(s_dest);
   return FALSE;
 }