*
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+
#include <string.h>
#include "viking.h"
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
+ /* Layer column */
renderer = gtk_cell_renderer_text_new ();
g_signal_connect (renderer, "edited",
G_CALLBACK (treeview_edited_cb), 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,
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,
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 )
{
guint16 i;
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);
}
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;
* and call the move method of that layer type.
*
*/
+ if (!gtk_tree_model_get_iter (src_model, &src_iter, src_path)) {
+ goto out;
+ }
+ if (!gtk_tree_path_compare(src_path, dest)) {
+ goto out;
+ }
+
i_src = gtk_tree_path_get_indices (src_path);
dest_cp = gtk_tree_path_copy (dest);
TREEVIEW_GET(tree_model, &root_iter, ITEM_POINTER_COLUMN, &vl);
vt = vl->vt;
- if (!gtk_tree_model_get_iter (src_model, &src_iter, src_path)) {
- goto out;
- }
if (gtk_tree_path_get_depth(dest_cp)>1) { /* can't be sibling of top layer */
VikLayer *vl_src, *vl_dest;
/* TODO: might want to allow different types, and let the clients handle how they want */
if (vl_src->type == vl_dest->type && vik_layer_get_interface(vl_dest->type)->drag_drop_request) {
- g_print("moving an item from layer '%s' into layer '%s'\n", vl_src->name, vl_dest->name);
+ // g_print("moving an item from layer '%s' into layer '%s'\n", vl_src->name, vl_dest->name);
vik_layer_get_interface(vl_dest->type)->drag_drop_request(vl_src, vl_dest, &src_iter, dest);
}
}
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;
}