[latexila/wip/build-tools-revamp] Port MainWindowBuildTools to the build tools written in C



commit 540894293abe774b329a180cd31c9d70f5d3aa8b
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Wed May 7 17:32:42 2014 +0200

    Port MainWindowBuildTools to the build tools written in C

 src/main_window_build_tools.vala |   62 ++++++++++++++++++++++++--------------
 1 files changed, 39 insertions(+), 23 deletions(-)
---
diff --git a/src/main_window_build_tools.vala b/src/main_window_build_tools.vala
index e376e8c..e675e44 100644
--- a/src/main_window_build_tools.vala
+++ b/src/main_window_build_tools.vala
@@ -1,7 +1,7 @@
 /*
  * This file is part of LaTeXila.
  *
- * Copyright © 2012 Sébastien Wilmet
+ * Copyright © 2012, 2014 Sébastien Wilmet
  *
  * LaTeXila is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -61,7 +61,6 @@ public class MainWindowBuildTools
     private Gtk.ActionGroup _static_action_group;
     private Gtk.ActionGroup _dynamic_action_group;
     private uint _menu_ui_id;
-    private BuildToolRunner _build_tool_runner;
 
     public MainWindowBuildTools (MainWindow main_window, UIManager ui_manager)
     {
@@ -84,10 +83,12 @@ public class MainWindowBuildTools
         ui_manager.insert_action_group (_dynamic_action_group, 0);
         update_menu ();
 
-        PersonalBuildTools personal_build_tools = PersonalBuildTools.get_default ();
+        Latexila.BuildToolsPersonal personal_build_tools =
+            Latexila.BuildToolsPersonal.get_instance ();
         personal_build_tools.modified.connect (() => update_menu ());
 
-        DefaultBuildTools default_build_tools = DefaultBuildTools.get_default ();
+        Latexila.BuildToolsDefault default_build_tools =
+            Latexila.BuildToolsDefault.get_instance ();
         default_build_tools.modified.connect (() => update_menu ());
     }
 
@@ -121,16 +122,20 @@ public class MainWindowBuildTools
         clean_action.set_sensitive (is_tex);
         view_log_action.set_sensitive (is_tex);
 
+        Latexila.BuildTools build_tools =
+            Latexila.BuildToolsDefault.get_instance () as Latexila.BuildTools;
+
         int tool_num = 0;
-        foreach (BuildTool tool in DefaultBuildTools.get_default ())
+        foreach (Latexila.BuildTool tool in build_tools.build_tools)
         {
             string action_name = get_default_build_tool_name (tool_num);
             update_build_tool_sensitivity (tool, action_name);
             tool_num++;
         }
 
+        build_tools = Latexila.BuildToolsPersonal.get_instance () as Latexila.BuildTools;
         tool_num = 0;
-        foreach (BuildTool tool in PersonalBuildTools.get_default ())
+        foreach (Latexila.BuildTool tool in build_tools.build_tools)
         {
             string action_name = get_personal_build_tool_name (tool_num);
             update_build_tool_sensitivity (tool, action_name);
@@ -148,15 +153,15 @@ public class MainWindowBuildTools
         return @"PersonalBuildTool_$tool_num";
     }
 
-    private BuildTool? get_build_tool_from_name (string action_name)
+    private Latexila.BuildTool? get_build_tool_from_name (string action_name)
     {
-        BuildTools build_tools;
+        Latexila.BuildTools build_tools;
 
         if (action_name.has_prefix ("DefaultBuildTool_"))
-            build_tools = DefaultBuildTools.get_default ();
+            build_tools = Latexila.BuildToolsDefault.get_instance () as Latexila.BuildTools;
 
         else if (action_name.has_prefix ("PersonalBuildTool_"))
-            build_tools = PersonalBuildTools.get_default ();
+            build_tools = Latexila.BuildToolsPersonal.get_instance () as Latexila.BuildTools;
 
         else
             return_val_if_reached (null);
@@ -166,10 +171,11 @@ public class MainWindowBuildTools
 
         int tool_num = int.parse (name[1]);
 
-        return build_tools.get_build_tool (tool_num);
+        return build_tools.nth (tool_num);
     }
 
-    private void update_build_tool_sensitivity (BuildTool tool, string action_name)
+    private void update_build_tool_sensitivity (Latexila.BuildTool tool,
+        string action_name)
     {
         if (! tool.enabled)
             return;
@@ -181,7 +187,7 @@ public class MainWindowBuildTools
 
         if (unsaved_doc)
         {
-            action.set_sensitive (tool.has_jobs ());
+            action.set_sensitive (tool.get_jobs () != null);
             return;
         }
 
@@ -219,11 +225,14 @@ public class MainWindowBuildTools
             _dynamic_action_group.remove_action (action);
         }
 
+        Latexila.BuildTools default_build_tools =
+            Latexila.BuildToolsDefault.get_instance () as Latexila.BuildTools;
+        Latexila.BuildTools personal_build_tools =
+            Latexila.BuildToolsPersonal.get_instance () as Latexila.BuildTools;
 
-        DefaultBuildTools default_build_tools = DefaultBuildTools.get_default ();
-        PersonalBuildTools personal_build_tools = PersonalBuildTools.get_default ();
-
-        if (default_build_tools.is_empty () && personal_build_tools.is_empty ())
+        /* Empty */
+        if (default_build_tools.build_tools == null &&
+            personal_build_tools.build_tools == null)
         {
             _menu_ui_id = 0;
             return;
@@ -234,7 +243,7 @@ public class MainWindowBuildTools
         /* Add the default build tools */
         int tool_num = 0;
         int accel_num = 2;
-        foreach (BuildTool build_tool in default_build_tools)
+        foreach (Latexila.BuildTool build_tool in default_build_tools.build_tools)
         {
             string action_name = get_default_build_tool_name (tool_num);
             add_dynamic_action (build_tool, action_name, ref accel_num);
@@ -245,7 +254,7 @@ public class MainWindowBuildTools
 
         /* Add the personal build tools */
         tool_num = 0;
-        foreach (BuildTool build_tool in personal_build_tools)
+        foreach (Latexila.BuildTool build_tool in personal_build_tools.build_tools)
         {
             string action_name = get_personal_build_tool_name (tool_num);
             add_dynamic_action (build_tool, action_name, ref accel_num);
@@ -266,7 +275,7 @@ public class MainWindowBuildTools
             "BuildToolsSeparator", null, UIManagerItemType.SEPARATOR, false);
     }
 
-    private void add_dynamic_action (BuildTool build_tool, string action_name,
+    private void add_dynamic_action (Latexila.BuildTool build_tool, string action_name,
         ref int accel_num)
     {
         if (! build_tool.enabled)
@@ -301,16 +310,16 @@ public class MainWindowBuildTools
         return_if_fail (_build_view != null);
         return_if_fail (_bottom_panel != null);
 
-        BuildTool? tool = get_build_tool_from_name (action.name);
+        Latexila.BuildTool? tool = get_build_tool_from_name (action.name);
         return_if_fail (tool != null);
 
         Document active_doc = _main_window.active_document;
 
-        if (! tool.has_jobs ())
+        if (tool.get_jobs () == null)
             return_if_fail (active_doc.location != null);
 
         /* Save the document if jobs are executed */
-        if (tool.has_jobs ())
+        if (tool.get_jobs () != null)
         {
             if (active_doc.location == null)
             {
@@ -344,9 +353,13 @@ public class MainWindowBuildTools
         stop_exec.sensitive = true;
 
         File main_file = active_doc.get_main_file ();
+        tool.run (main_file, _build_view);
+        /* TODO port this code. */
+        /*
         _build_tool_runner = new BuildToolRunner (tool, main_file, _build_view);
         _build_tool_runner.finished.connect (() => stop_exec.sensitive = false);
         _build_tool_runner.run ();
+        */
     }
 
     private void connect_toggle_actions ()
@@ -393,8 +406,11 @@ public class MainWindowBuildTools
 
     public void on_stop_execution ()
     {
+        /* TODO port this code. */
+        /*
         return_if_fail (_build_tool_runner != null);
         _build_tool_runner.abort ();
+        */
     }
 
     public void on_clean ()


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