[latexila] Build Tools: show/hide detailed messages



commit e7f8c0c8ec690cbf858b0cad175094f6d61ba086
Author: SÃbastien Wilmet <swilmet src gnome org>
Date:   Sun Jul 15 21:13:12 2012 +0200

    Build Tools: show/hide detailed messages
    
    There is a problem with the (owned) Node<BuildMsg?>. The same problem
    when using the GLib.List. It is better to use Gee in Vala, but Gee
    doesn't have a Node interface. So I'll use Gee.List, and in the
    structure have another Gee.List with the children, to form the tree.

 src/build_tool_runner.vala |   32 ++++++++++++++++++++++++++++++--
 src/build_view.vala        |    9 +++++++++
 2 files changed, 39 insertions(+), 2 deletions(-)
---
diff --git a/src/build_tool_runner.vala b/src/build_tool_runner.vala
index 9be563c..22a5975 100644
--- a/src/build_tool_runner.vala
+++ b/src/build_tool_runner.vala
@@ -65,6 +65,29 @@ public class BuildToolRunner : GLib.Object
                 }
             }
         });
+
+        /* Show/hide details */
+        _view.notify["show-details"].connect (() =>
+        {
+            for (int job_num = 0 ; job_num < _job_titles.length ; job_num++)
+            {
+                TreeIter job_title = _job_titles[job_num];
+                BuildJobRunner job_runner = _job_runners[job_num];
+
+                if (job_runner.has_details ())
+                {
+                    _view.remove_children (job_title);
+
+                    Node<BuildMsg?> messages;
+                    if (_view.show_details)
+                        messages = job_runner.get_detailed_messages ();
+                    else
+                        messages = job_runner.get_messages ();
+
+                    _view.append_messages (job_title, messages);
+                }
+            }
+        });
     }
 
     public void abort ()
@@ -118,8 +141,13 @@ public class BuildToolRunner : GLib.Object
 
         _current_job_runner.finished.connect ((success) =>
         {
-            _view.append_messages (_current_job_title,
-                _current_job_runner.get_messages ());
+            Node<BuildMsg?> messages;
+            if (_view.show_details)
+                messages = _current_job_runner.get_detailed_messages ();
+            else
+                messages = _current_job_runner.get_messages ();
+
+            _view.append_messages (_current_job_title, messages);
 
             if (_aborted)
                 return;
diff --git a/src/build_view.vala b/src/build_view.vala
index ebba41d..3da6bef 100644
--- a/src/build_view.vala
+++ b/src/build_view.vala
@@ -336,6 +336,15 @@ public class BuildView : TreeView
         return iter;
     }
 
+    public void remove_children (TreeIter parent)
+    {
+        TreeIter child;
+        if (! _store.iter_children (out child, parent))
+            return;
+
+        while (_store.remove (ref child));
+    }
+
     private string? get_icon_from_state (BuildState state)
     {
         switch (state)



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