From 055c0ea4aca3ae5d81c9ff8e967d6a4b9dd1f5dc Mon Sep 17 00:00:00 2001
From: einarr <einarr@pvv.ntnu.no>
Date: Mon, 10 Dec 2007 21:08:09 +0000
Subject: [PATCH] Dataset dimensions are shown in statusbar.

---
 fluents/navigator.py | 47 ++++++++++++++++++--------------------------
 1 file changed, 19 insertions(+), 28 deletions(-)

diff --git a/fluents/navigator.py b/fluents/navigator.py
index 4e44951..10c1a7a 100644
--- a/fluents/navigator.py
+++ b/fluents/navigator.py
@@ -9,8 +9,6 @@ import scipy
 
 class NavigatorView (gtk.TreeView):
     def __init__(self):
-#        self.project = project
-#        self.app = app
         if main.project:
             self.data_tree = main.project.data_tree
         else:
@@ -26,13 +24,12 @@ class NavigatorView (gtk.TreeView):
 
         # Selection Mode
         self.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
-#        self.get_selection().set_select_function(self.is_selectable)
         self.get_selection().connect('changed',self.selection_changed_handler)
         self._previous_selection = []
 
         # Setting up TextRenderers etc
-        #        self.connect('cursor_changed', self.cursor_changed_handler)
-        self.connect('row_activated', self.row_activated_handler)
+        self.connect('row_activated', self.on_row_activated)
+        self.connect('cursor_changed', self.on_cursor_changed)
 
         # Activate context menu
         self.menu = NavigatorMenu(self)
@@ -56,7 +53,6 @@ class NavigatorView (gtk.TreeView):
         self.connect("drag-data-get",self.slot_drag_data)
 
         logger.log('debug', 'Initializing navigator window.')
-
    
     # sets data for drag event.
     def slot_drag_data(self, treeview, context, selection, target_id, etime):
@@ -66,10 +62,9 @@ class NavigatorView (gtk.TreeView):
             self.data_tree.drag_data_get(paths[0], selection)
 
     def add_project(self, project):
-#        self.project = project
         self.data_tree = project.data_tree
         self.set_model(project.data_tree)
-        self.data_tree.connect('row-changed',self.row_changed_handler)
+        self.data_tree.connect('row-changed',self.on_row_changed)
     
     # selection changed, setting current_data ojbects
     def selection_changed_handler(self, selection):
@@ -80,6 +75,7 @@ class NavigatorView (gtk.TreeView):
 
         tmp = self._previous_selection
         self._previous_selection = paths
+
         # set timestamp on newly selected objects
         [self.data_tree.set_value(self.data_tree.get_iter(path), 6, time.time()) 
             for path in paths if path not in tmp]
@@ -100,7 +96,7 @@ class NavigatorView (gtk.TreeView):
 
 
     # TreeView changed. Set correct focus and colours
-    def row_changed_handler(self, treestore, pos, iter):
+    def on_row_changed(self, treestore, pos, iter):
         obj  = treestore.get_value(iter,2)
         type_= treestore.get_value(iter,1)
 
@@ -112,23 +108,7 @@ class NavigatorView (gtk.TreeView):
             self.set_cursor(pos)
             self.grab_focus()
         
-    def display_data_info(self, data):
-        dims = zip(data.get_dim_name(), data.shape)
-        
-        dim_text = ", ".join(["%s (%d)" % dim for dim in dims])
-
-        text = """<span weight="bold">Data:</span> %s
-
-<span weight="bold">Dimensions:</span> %s""" % (data.get_name(), dim_text)
-
-        d = gtk.MessageDialog(flags=(gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT),
-                              buttons=gtk.BUTTONS_OK)
-        d.set_markup(text)
-        d.set_default_response(gtk.BUTTONS_OK)
-        d.run()
-        d.destroy()        
-        
-    def row_activated_handler(self, widget, path, column):
+    def on_row_activated(self, widget, path, column):
         tree_iter = self.data_tree.get_iter(path)
         obj = self.data_tree.get_value(tree_iter, 2)
         
@@ -136,7 +116,7 @@ class NavigatorView (gtk.TreeView):
             logger.log('debug', 'Activating plot')
             main.application.change_plot(obj)
         elif isinstance(obj, dataset.Dataset):
-            self.display_data_info(obj)
+            pass
         elif obj == None:
             children = []
             i = self.data_tree.iter_children(tree_iter)
@@ -148,7 +128,7 @@ class NavigatorView (gtk.TreeView):
             main.application.change_plots(children)
         else:
             t = type(obj)
-            logger.log('debug', 'Activated datatype was %s. Don\'t know what to do.' % t)
+            logger.log('notice', 'Activated datatype was %s. Don\'t know what to do.' % t)
 
     def popup_menu(self, *rest):
         self.menu.popup(None, None, None, 0, 0)
@@ -171,6 +151,17 @@ class NavigatorView (gtk.TreeView):
         if event.button == 3:
             self.menu.popup(None, None, None, event.button, event.time)
 
+    def on_cursor_changed(self, widget):
+        path = widget.get_cursor()[0]
+        tree_iter = self.data_tree.get_iter(path)
+        obj = self.data_tree.get_value(tree_iter, 2)
+        if isinstance(obj, dataset.Dataset):
+            dims = zip(obj.get_dim_name(), obj.shape)
+            dim_text = ", ".join(["%s (%d)" % dim for dim in dims])
+        else:
+            dim_text = ""
+        main.application['appbar1'].push(dim_text)
+        
 
 class NavigatorMenu(gtk.Menu):
     def __init__(self, navigator):