[latexila/wip/build-tools-revamp: 1/9] Use the build tools written in C
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [latexila/wip/build-tools-revamp: 1/9] Use the build tools written in C
- Date: Sun, 11 May 2014 13:24:35 +0000 (UTC)
commit 6f70dfb850d1cac2764ac481656c01e2daf99f8e
Author: Sébastien Wilmet <swilmet gnome org>
Date: Wed May 7 13:45:27 2014 +0200
Use the build tools written in C
The build tools in C are far from finished, but it's better to use them
as soon as possible, so it will be better tested.
This commit also renames Latexila -> LatexilaApp (in Vala), because
there is a conflict with the Latexila namespace used by the liblatexila.
docs/reference/latexila-sections.txt | 4 +
src/Makefile.am | 26 +-
src/app_settings.vala | 18 +-
src/bottom_panel.vala | 2 +-
src/build_command_runner.vala | 170 -----
src/build_job_runner.vala | 191 ------
src/build_tool_dialog.vala | 58 +-
src/build_tool_runner.vala | 312 ---------
src/build_tools.vala | 560 ----------------
src/build_tools_preferences.vala | 41 +-
src/build_view.vala | 396 -----------
src/completion.vala | 2 +-
src/document.vala | 2 +-
src/latex_post_processor.vala | 830 ------------------------
src/{latexila.vala => latexila_app.vala} | 10 +-
src/liblatexila/latexila-build-job.c | 19 +
src/liblatexila/latexila-build-job.h | 2 +
src/liblatexila/latexila-build-tool.c | 38 ++
src/liblatexila/latexila-build-tool.h | 2 +
src/liblatexila/latexila-build-tools-default.c | 2 +-
src/liblatexila/latexila-build-tools.c | 21 +
src/liblatexila/latexila-build-tools.h | 7 +-
src/liblatexila/latexila-post-processor.h | 4 +-
src/main.vala | 4 +-
src/main_window.vala | 6 +-
src/main_window_build_tools.vala | 68 ++-
src/main_window_documents.vala | 2 +-
src/main_window_file.vala | 2 +-
src/post_processors.vala | 253 -------
src/projects.vala | 10 +-
src/synctex.vala | 4 +-
31 files changed, 234 insertions(+), 2832 deletions(-)
---
diff --git a/docs/reference/latexila-sections.txt b/docs/reference/latexila-sections.txt
index e8e291c..85eae96 100644
--- a/docs/reference/latexila-sections.txt
+++ b/docs/reference/latexila-sections.txt
@@ -6,6 +6,7 @@
LatexilaBuildTools
latexila_build_tools_load
latexila_build_tools_set_enabled
+latexila_build_tools_nth
<SUBSECTION Standard>
LATEXILA_BUILD_TOOLS
LATEXILA_BUILD_TOOLS_CLASS
@@ -61,10 +62,12 @@ LatexilaBuildToolsPersonalPrivate
<TITLE>LatexilaBuildTool</TITLE>
LatexilaBuildTool
latexila_build_tool_new
+latexila_build_tool_clone
latexila_build_tool_add_job
latexila_build_tool_get_jobs
latexila_build_tool_get_description
latexila_build_tool_to_xml
+latexila_build_tool_run
<SUBSECTION Standard>
LATEXILA_BUILD_TOOL
LATEXILA_BUILD_TOOL_CLASS
@@ -82,6 +85,7 @@ latexila_build_tool_get_type
<TITLE>LatexilaBuildJob</TITLE>
LatexilaBuildJob
latexila_build_job_new
+latexila_build_job_clone
latexila_build_job_to_xml
<SUBSECTION Standard>
LATEXILA_BUILD_JOB
diff --git a/src/Makefile.am b/src/Makefile.am
index b36511f..508fd87 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -17,13 +17,8 @@ vapidir = ../vapi
vala_files = \
app_settings.vala \
bottom_panel.vala \
- build_command_runner.vala \
- build_job_runner.vala \
build_tool_dialog.vala \
- build_tool_runner.vala \
build_tools_preferences.vala \
- build_tools.vala \
- build_view.vala \
clean_build_files.vala \
completion.vala \
custom_statusbar.vala \
@@ -36,9 +31,8 @@ vala_files = \
encodings.vala \
error_entry.vala \
file_browser.vala \
- latexila.vala \
+ latexila_app.vala \
latex_menu.vala \
- latex_post_processor.vala \
main.vala \
main_window_build_tools.vala \
main_window_documents.vala \
@@ -48,7 +42,6 @@ vala_files = \
main_window.vala \
menu_in_toolbar.vala \
most_used_symbols.vala \
- post_processors.vala \
preferences_dialog.vala \
project_dialogs.vala \
projects.vala \
@@ -65,19 +58,22 @@ vala_files = \
templates.vala \
utils.vala
-latexila_SOURCES = \
- $(vala_files) \
- $(vapidir)/config.vapi \
- $(vapidir)/gedit.vapi \
- $(vapidir)/menu_tool_action.vapi
+latexila_SOURCES = \
+ $(vala_files) \
+ $(vapidir)/config.vapi \
+ $(vapidir)/gedit.vapi \
+ $(vapidir)/menu_tool_action.vapi \
+ liblatexila/latexila.vapi
latexila_CPPFLAGS = \
-I$(top_srcdir) \
-I$(srcdir)/gedit \
+ -I$(srcdir)/liblatexila \
-include config.h
-latexila_LDADD = \
- gedit/libgedit.la
+latexila_LDADD = \
+ gedit/libgedit.la \
+ liblatexila/liblatexila.la
MAINTAINERCLEANFILES = \
$(vala_files:.vala=.c) \
diff --git a/src/app_settings.vala b/src/app_settings.vala
index b3e00ff..b519238 100644
--- a/src/app_settings.vala
+++ b/src/app_settings.vala
@@ -76,7 +76,7 @@ public class AppSettings : GLib.Settings
Gtk.SourceStyleSchemeManager.get_default ();
Gtk.SourceStyleScheme scheme = manager.get_scheme (scheme_id);
- foreach (Document doc in Latexila.get_instance ().get_documents ())
+ foreach (Document doc in LatexilaApp.get_instance ().get_documents ())
doc.style_scheme = scheme;
// we don't use doc.set_style_scheme_from_string() for performance reason
@@ -87,7 +87,7 @@ public class AppSettings : GLib.Settings
uint val;
setting.get (key, "u", out val);
- foreach (DocumentView view in Latexila.get_instance ().get_views ())
+ foreach (DocumentView view in LatexilaApp.get_instance ().get_views ())
view.tab_width = val;
});
@@ -95,7 +95,7 @@ public class AppSettings : GLib.Settings
{
bool val = setting.get_boolean (key);
- foreach (DocumentView view in Latexila.get_instance ().get_views ())
+ foreach (DocumentView view in LatexilaApp.get_instance ().get_views ())
view.insert_spaces_instead_of_tabs = val;
});
@@ -103,7 +103,7 @@ public class AppSettings : GLib.Settings
{
bool val = setting.get_boolean (key);
- foreach (DocumentView view in Latexila.get_instance ().get_views ())
+ foreach (DocumentView view in LatexilaApp.get_instance ().get_views ())
view.show_line_numbers = val;
});
@@ -111,7 +111,7 @@ public class AppSettings : GLib.Settings
{
bool val = setting.get_boolean (key);
- foreach (DocumentView view in Latexila.get_instance ().get_views ())
+ foreach (DocumentView view in LatexilaApp.get_instance ().get_views ())
view.highlight_current_line = val;
});
@@ -119,7 +119,7 @@ public class AppSettings : GLib.Settings
{
bool val = setting.get_boolean (key);
- foreach (Document doc in Latexila.get_instance ().get_documents ())
+ foreach (Document doc in LatexilaApp.get_instance ().get_documents ())
doc.highlight_matching_brackets = val;
});
@@ -127,7 +127,7 @@ public class AppSettings : GLib.Settings
{
bool val = setting.get_boolean (key);
- foreach (Document doc in Latexila.get_instance ().get_documents ())
+ foreach (Document doc in LatexilaApp.get_instance ().get_documents ())
doc.tab.auto_save = val;
});
@@ -136,14 +136,14 @@ public class AppSettings : GLib.Settings
uint val;
setting.get (key, "u", out val);
- foreach (Document doc in Latexila.get_instance ().get_documents ())
+ foreach (Document doc in LatexilaApp.get_instance ().get_documents ())
doc.tab.auto_save_interval = val;
});
}
private void set_font (string font)
{
- foreach (DocumentView view in Latexila.get_instance ().get_views ())
+ foreach (DocumentView view in LatexilaApp.get_instance ().get_views ())
view.set_font_from_string (font);
}
}
diff --git a/src/bottom_panel.vala b/src/bottom_panel.vala
index 13a5d27..c9af892 100644
--- a/src/bottom_panel.vala
+++ b/src/bottom_panel.vala
@@ -23,7 +23,7 @@ using Gtk;
public class BottomPanel : Grid
{
- public BottomPanel (BuildView build_view, Toolbar toolbar)
+ public BottomPanel (Latexila.BuildView build_view, Toolbar toolbar)
{
set_orientation (Orientation.HORIZONTAL);
diff --git a/src/build_tool_dialog.vala b/src/build_tool_dialog.vala
index 28ebc21..3b1f6b0 100644
--- a/src/build_tool_dialog.vala
+++ b/src/build_tool_dialog.vala
@@ -1,7 +1,7 @@
/*
* This file is part of LaTeXila.
*
- * Copyright © 2010-2012 Sébastien Wilmet
+ * Copyright © 2010-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
@@ -89,12 +89,12 @@ public class BuildToolDialog : GLib.Object
}
// Returns true if the build tool is edited.
- public bool open_build_tool (BuildTools build_tools, int build_tool_num)
+ public bool open_build_tool (Latexila.BuildTools build_tools, int build_tool_num)
{
- BuildTool? build_tool = build_tools.get_build_tool (build_tool_num);
+ Latexila.BuildTool? build_tool = build_tools.nth (build_tool_num);
return_val_if_fail (build_tool != null, false);
- if (build_tools is DefaultBuildTools)
+ if (build_tools is Latexila.BuildToolsDefault)
set_read_only ();
else
set_editable ();
@@ -105,11 +105,12 @@ public class BuildToolDialog : GLib.Object
if (ok)
{
- BuildTool new_build_tool = retrieve_build_tool ();
+ Latexila.BuildTool new_build_tool = retrieve_build_tool ();
new_build_tool.enabled = build_tool.enabled;
- PersonalBuildTools personal_build_tools = build_tools as PersonalBuildTools;
- personal_build_tools.update (build_tool_num, new_build_tool);
+ Latexila.BuildToolsPersonal personal_build_tools =
+ build_tools as Latexila.BuildToolsPersonal;
+ personal_build_tools.replace (new_build_tool, build_tool_num);
}
_dialog.destroy ();
@@ -127,10 +128,11 @@ public class BuildToolDialog : GLib.Object
if (ok)
{
- BuildTool new_build_tool = retrieve_build_tool ();
+ Latexila.BuildTool new_build_tool = retrieve_build_tool ();
new_build_tool.enabled = true;
- PersonalBuildTools build_tools = PersonalBuildTools.get_default ();
+ Latexila.BuildToolsPersonal build_tools =
+ Latexila.BuildToolsPersonal.get_instance ();
build_tools.add (new_build_tool);
}
@@ -207,10 +209,10 @@ public class BuildToolDialog : GLib.Object
typeof (string) // the name of the post processor
);
- for (int type = 0 ; type < PostProcessorType.N_POST_PROCESSORS ; type++)
+ for (int type = 0 ; type < Latexila.PostProcessorType.NB_TYPES ; type++)
{
- string name = BuildTools.get_post_processor_name_from_type (
- (PostProcessorType) type);
+ unowned string name = Latexila.PostProcessor.get_name_from_type (
+ (Latexila.PostProcessorType) type);
TreeIter iter;
post_processor_store.append (out iter);
@@ -266,9 +268,9 @@ public class BuildToolDialog : GLib.Object
add_button.clicked.connect (() =>
{
- BuildJob new_job = BuildJob ();
+ Latexila.BuildJob new_job = new Latexila.BuildJob ();
new_job.command = "";
- new_job.post_processor = PostProcessorType.ALL_OUTPUT;
+ new_job.post_processor_type = Latexila.PostProcessorType.ALL_OUTPUT;
add_build_job (new_job);
});
@@ -426,7 +428,7 @@ public class BuildToolDialog : GLib.Object
_jobs_view.columns_autosize ();
}
- private void set_build_tool (BuildTool build_tool)
+ private void set_build_tool (Latexila.BuildTool build_tool)
{
/* Text entries */
@@ -461,21 +463,21 @@ public class BuildToolDialog : GLib.Object
/* Jobs */
_jobs_store.clear ();
- foreach (BuildJob build_job in build_tool.jobs)
+ foreach (Latexila.BuildJob build_job in build_tool.get_jobs ())
add_build_job (build_job);
_jobs_view.columns_autosize ();
}
// Retrieve the build tool from the data stored in the main widgets of the dialog.
- private BuildTool retrieve_build_tool ()
+ private Latexila.BuildTool retrieve_build_tool ()
{
- BuildTool tool = BuildTool ();
+ Latexila.BuildTool tool = new Latexila.BuildTool ();
/* Text entries */
tool.label = _entry_label.text.strip ();
- tool.set_description (_entry_desc.text.strip ());
+ tool.description = _entry_desc.text.strip ();
tool.extensions = _entry_extensions.text.strip ();
tool.files_to_open = _entry_files_to_open.text.strip ();
@@ -484,7 +486,9 @@ public class BuildToolDialog : GLib.Object
TreeIter iter;
_icons_combobox.get_active_iter (out iter);
TreeModel model = _icons_store as TreeModel;
- model.get (iter, IconColumn.STOCK_ID, out tool.icon);
+ string icon;
+ model.get (iter, IconColumn.STOCK_ID, out icon);
+ tool.icon = icon;
/* Jobs */
@@ -493,7 +497,7 @@ public class BuildToolDialog : GLib.Object
while (valid)
{
- BuildJob job = BuildJob ();
+ Latexila.BuildJob job = new Latexila.BuildJob ();
string command;
string post_processor_name;
@@ -503,10 +507,12 @@ public class BuildToolDialog : GLib.Object
);
job.command = command.strip ();
- job.post_processor = BuildTools.get_post_processor_type_from_name (
- post_processor_name);
- tool.jobs.add (job);
+ Latexila.PostProcessorType type;
+ if (Latexila.PostProcessor.get_type_from_name (post_processor_name, out type))
+ job.post_processor_type = type;
+
+ tool.add_job (job);
valid = _jobs_store.iter_next (ref iter);
}
@@ -517,10 +523,10 @@ public class BuildToolDialog : GLib.Object
/*************************************************************************/
// Misc utilities functions
- private void add_build_job (BuildJob job)
+ private void add_build_job (Latexila.BuildJob job)
{
string post_processor_name =
- BuildTools.get_post_processor_name_from_type (job.post_processor);
+ Latexila.PostProcessor.get_name_from_type (job.post_processor_type);
TreeIter iter;
_jobs_store.append (out iter);
diff --git a/src/build_tools_preferences.vala b/src/build_tools_preferences.vala
index 911fc5d..528ed9d 100644
--- a/src/build_tools_preferences.vala
+++ b/src/build_tools_preferences.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
@@ -72,10 +72,10 @@ public class BuildToolsPreferences : GLib.Object
private void init_views ()
{
_default_view = get_new_view (_default_store,
- DefaultBuildTools.get_default ());
+ Latexila.BuildToolsDefault.get_instance ());
_personal_view = get_new_view (_personal_store,
- PersonalBuildTools.get_default ());
+ Latexila.BuildToolsPersonal.get_instance ());
// Only one item of the two views can be selected at once.
@@ -95,7 +95,8 @@ public class BuildToolsPreferences : GLib.Object
private Grid get_default_grid ()
{
- BuildTools default_build_tools = DefaultBuildTools.get_default ();
+ Latexila.BuildTools default_build_tools =
+ Latexila.BuildToolsDefault.get_instance () as Latexila.BuildTools;
ToolButton properties_button = get_properties_button (_default_view,
default_build_tools);
ToolButton copy_button = get_copy_button (_default_view, default_build_tools);
@@ -111,7 +112,8 @@ public class BuildToolsPreferences : GLib.Object
private Grid get_personal_grid ()
{
- BuildTools personal_build_tools = PersonalBuildTools.get_default ();
+ Latexila.BuildTools personal_build_tools =
+ Latexila.BuildToolsPersonal.get_instance () as Latexila.BuildTools;
ToolButton properties_button = get_properties_button (_personal_view,
personal_build_tools);
ToolButton copy_button = get_copy_button (_personal_view, personal_build_tools);
@@ -163,7 +165,7 @@ public class BuildToolsPreferences : GLib.Object
);
}
- private TreeView get_new_view (ListStore store, BuildTools build_tools)
+ private TreeView get_new_view (ListStore store, Latexila.BuildTools build_tools)
{
TreeView view = new TreeView.with_model (store);
view.set_rules_hint (true);
@@ -234,7 +236,8 @@ public class BuildToolsPreferences : GLib.Object
other_select.unselect_all ();
}
- private ToolButton get_properties_button (TreeView view, BuildTools build_tools)
+ private ToolButton get_properties_button (TreeView view,
+ Latexila.BuildTools build_tools)
{
ToolButton properties_button = new ToolButton (null, null);
properties_button.set_icon_name ("document-properties-symbolic");
@@ -253,7 +256,7 @@ public class BuildToolsPreferences : GLib.Object
return properties_button;
}
- private ToolButton get_copy_button (TreeView view, BuildTools build_tools)
+ private ToolButton get_copy_button (TreeView view, Latexila.BuildTools build_tools)
{
ToolButton copy_button = new ToolButton (null, null);
copy_button.set_icon_name ("edit-copy-symbolic");
@@ -267,13 +270,15 @@ public class BuildToolsPreferences : GLib.Object
if (selected_row < 0)
return;
- BuildTool? tool = build_tools.get_build_tool (selected_row);
+ Latexila.BuildTool? tool = build_tools.nth (selected_row);
return_if_fail (tool != null);
+ tool = tool.clone ();
tool.enabled = false;
tool.label = _("%s [copy]").printf (tool.label);
- PersonalBuildTools personal_build_tools = PersonalBuildTools.get_default ();
+ Latexila.BuildToolsPersonal personal_build_tools =
+ Latexila.BuildToolsPersonal.get_instance ();
personal_build_tools.add (tool);
update_personal_store ();
@@ -330,7 +335,7 @@ public class BuildToolsPreferences : GLib.Object
if (dialog.run () == ResponseType.YES)
{
_personal_store.remove (iter);
- PersonalBuildTools.get_default ().delete (selected_row);
+ Latexila.BuildToolsPersonal.get_instance ().delete (selected_row);
}
dialog.destroy ();
@@ -380,7 +385,7 @@ public class BuildToolsPreferences : GLib.Object
if (Utils.tree_model_iter_prev (_personal_store, ref iter_up))
{
_personal_store.swap (iter_selected, iter_up);
- PersonalBuildTools.get_default ().move_up (selected_row);
+ Latexila.BuildToolsPersonal.get_instance ().move_up (selected_row);
// Force the 'changed' signal on the selection to be emitted
select.changed ();
@@ -435,7 +440,7 @@ public class BuildToolsPreferences : GLib.Object
if (_personal_store.iter_next (ref iter_down))
{
_personal_store.swap (iter_selected, iter_down);
- PersonalBuildTools.get_default ().move_down (selected_row);
+ Latexila.BuildToolsPersonal.get_instance ().move_down (selected_row);
// Force the 'changed' signal on the selection to be emitted
select.changed ();
@@ -448,19 +453,19 @@ public class BuildToolsPreferences : GLib.Object
private void update_default_store ()
{
- update_store (_default_store, DefaultBuildTools.get_default ());
+ update_store (_default_store, Latexila.BuildToolsDefault.get_instance ());
}
private void update_personal_store ()
{
- update_store (_personal_store, PersonalBuildTools.get_default ());
+ update_store (_personal_store, Latexila.BuildToolsPersonal.get_instance ());
}
- private void update_store (ListStore store, BuildTools build_tools)
+ private void update_store (ListStore store, Latexila.BuildTools build_tools)
{
store.clear ();
- foreach (BuildTool tool in build_tools)
+ foreach (Latexila.BuildTool tool in build_tools.build_tools)
{
string description = Markup.escape_text (tool.get_description ());
@@ -475,7 +480,7 @@ public class BuildToolsPreferences : GLib.Object
}
}
- private void open_build_tool (BuildTools build_tools, int build_tool_num)
+ private void open_build_tool (Latexila.BuildTools build_tools, int build_tool_num)
{
BuildToolDialog dialog = new BuildToolDialog (_dialog);
diff --git a/src/completion.vala b/src/completion.vala
index dbb5b27..0021c4f 100644
--- a/src/completion.vala
+++ b/src/completion.vala
@@ -352,7 +352,7 @@ public class CompletionProvider : GLib.Object, SourceCompletionProvider
_calltip_window_label.set_markup (markup);
- MainWindow window = Latexila.get_instance ().active_window as MainWindow;
+ MainWindow window = LatexilaApp.get_instance ().active_window as MainWindow;
_calltip_window.set_transient_for (window);
_calltip_window.set_attached_to (window.active_view);
diff --git a/src/document.vala b/src/document.vala
index 51418cb..e91cdb1 100644
--- a/src/document.vala
+++ b/src/document.vala
@@ -305,7 +305,7 @@ public class Document : Gtk.SourceBuffer
// get all unsaved document numbers
uint[] all_nums = {};
- foreach (Document doc in Latexila.get_instance ().get_documents ())
+ foreach (Document doc in LatexilaApp.get_instance ().get_documents ())
{
// avoid infinite loop
if (doc == this)
diff --git a/src/latexila.vala b/src/latexila_app.vala
similarity index 96%
rename from src/latexila.vala
rename to src/latexila_app.vala
index 9704adc..03a138c 100644
--- a/src/latexila.vala
+++ b/src/latexila_app.vala
@@ -19,9 +19,9 @@
* Author: Sébastien Wilmet
*/
-public class Latexila : Gtk.Application
+public class LatexilaApp : Gtk.Application
{
- public Latexila ()
+ public LatexilaApp ()
{
Object (application_id: "org.gnome.latexila");
Environment.set_application_name (Config.PACKAGE_NAME);
@@ -45,7 +45,7 @@ public class Latexila : Gtk.Application
{
hold ();
Projects.get_default ().save ();
- PersonalBuildTools.get_default ().save ();
+ Latexila.BuildToolsPersonal.get_instance ().save ();
MostUsedSymbols.get_default ().save ();
Gtk.AccelMap.save (get_accel_filename ());
release ();
@@ -97,9 +97,9 @@ public class Latexila : Gtk.Application
});
}
- public static Latexila get_instance ()
+ public static LatexilaApp get_instance ()
{
- return GLib.Application.get_default () as Latexila;
+ return GLib.Application.get_default () as LatexilaApp;
}
private void init_primary_instance ()
diff --git a/src/liblatexila/latexila-build-job.c b/src/liblatexila/latexila-build-job.c
index bacf1f4..f6d458b 100644
--- a/src/liblatexila/latexila-build-job.c
+++ b/src/liblatexila/latexila-build-job.c
@@ -159,6 +159,25 @@ latexila_build_job_new (void)
}
/**
+ * latexila_build_job_clone:
+ * @build_job: the build job to clone.
+ *
+ * Clones a build job (deep copy).
+ *
+ * Returns: (transfer full): the cloned build job.
+ */
+LatexilaBuildJob *
+latexila_build_job_clone (LatexilaBuildJob *build_job)
+{
+ g_return_val_if_fail (LATEXILA_IS_BUILD_JOB (build_job), NULL);
+
+ return g_object_new (LATEXILA_TYPE_BUILD_JOB,
+ "command", build_job->priv->command,
+ "post-processor-type", build_job->priv->post_processor_type,
+ NULL);
+}
+
+/**
* latexila_build_job_to_xml:
* @build_job: a #LatexilaBuildJob object.
*
diff --git a/src/liblatexila/latexila-build-job.h b/src/liblatexila/latexila-build-job.h
index d636bc7..d09da3d 100644
--- a/src/liblatexila/latexila-build-job.h
+++ b/src/liblatexila/latexila-build-job.h
@@ -52,6 +52,8 @@ GType latexila_build_job_get_type (void) G_GNUC_
LatexilaBuildJob * latexila_build_job_new (void);
+LatexilaBuildJob * latexila_build_job_clone (LatexilaBuildJob *build_job);
+
gchar * latexila_build_job_to_xml (LatexilaBuildJob *build_job);
G_END_DECLS
diff --git a/src/liblatexila/latexila-build-tool.c b/src/liblatexila/latexila-build-tool.c
index c9da018..b1e2e8f 100644
--- a/src/liblatexila/latexila-build-tool.c
+++ b/src/liblatexila/latexila-build-tool.c
@@ -291,6 +291,44 @@ latexila_build_tool_new (void)
}
/**
+ * latexila_build_tool_clone:
+ * @build_tool: the build tool to clone.
+ *
+ * Clones a build tool (deep copy).
+ *
+ * Returns: (transfer full): the cloned build tool.
+ */
+LatexilaBuildTool *
+latexila_build_tool_clone (LatexilaBuildTool *build_tool)
+{
+ LatexilaBuildTool *new_build_tool;
+ GList *l;
+
+ g_return_val_if_fail (LATEXILA_IS_BUILD_TOOL (build_tool), NULL);
+
+ new_build_tool = g_object_new (LATEXILA_TYPE_BUILD_TOOL,
+ "label", build_tool->priv->label,
+ "description", build_tool->priv->description,
+ "extensions", build_tool->priv->extensions,
+ "icon", build_tool->priv->icon,
+ "files-to-open", build_tool->priv->files_to_open,
+ "enabled", build_tool->priv->enabled,
+ "id", build_tool->priv->id,
+ NULL);
+
+ for (l = build_tool->priv->jobs->head; l != NULL; l = l->next)
+ {
+ LatexilaBuildJob *build_job = l->data;
+ LatexilaBuildJob *new_build_job = latexila_build_job_clone (build_job);
+
+ latexila_build_tool_add_job (new_build_tool, new_build_job);
+ g_object_unref (new_build_job);
+ }
+
+ return new_build_tool;
+}
+
+/**
* latexila_build_tool_get_description:
* @build_tool: a #LatexilaBuildTool.
*
diff --git a/src/liblatexila/latexila-build-tool.h b/src/liblatexila/latexila-build-tool.h
index 62635f7..77c6443 100644
--- a/src/liblatexila/latexila-build-tool.h
+++ b/src/liblatexila/latexila-build-tool.h
@@ -51,6 +51,8 @@ GType latexila_build_tool_get_type (void) G_GNU
LatexilaBuildTool * latexila_build_tool_new (void);
+LatexilaBuildTool * latexila_build_tool_clone (LatexilaBuildTool *build_tool);
+
const gchar * latexila_build_tool_get_description (LatexilaBuildTool *build_tool);
void latexila_build_tool_add_job (LatexilaBuildTool *build_tool,
diff --git a/src/liblatexila/latexila-build-tools-default.c b/src/liblatexila/latexila-build-tools-default.c
index f57ff8a..326bdee 100644
--- a/src/liblatexila/latexila-build-tools-default.c
+++ b/src/liblatexila/latexila-build-tools-default.c
@@ -211,7 +211,7 @@ latexila_build_tools_default_init (LatexilaBuildToolsDefault *build_tools)
NULL);
xml_file = get_xml_file ();
- latexila_build_tools_load (LATEXILA_BUILD_TOOLS (instance), xml_file);
+ latexila_build_tools_load (LATEXILA_BUILD_TOOLS (build_tools), xml_file);
g_object_unref (xml_file);
}
diff --git a/src/liblatexila/latexila-build-tools.c b/src/liblatexila/latexila-build-tools.c
index 3e02f20..4daa0d6 100644
--- a/src/liblatexila/latexila-build-tools.c
+++ b/src/liblatexila/latexila-build-tools.c
@@ -405,6 +405,27 @@ latexila_build_tools_load (LatexilaBuildTools *build_tools,
}
/**
+ * latexila_build_tools_nth:
+ * @build_tools: a #LatexilaBuildTools object.
+ * @tool_num: the build tool position in the list.
+ *
+ * Returns: (transfer none): the #LatexilaBuildTool located at @tool_num.
+ */
+LatexilaBuildTool *
+latexila_build_tools_nth (LatexilaBuildTools *build_tools,
+ guint tool_num)
+{
+ LatexilaBuildTool *build_tool;
+
+ g_return_val_if_fail (LATEXILA_IS_BUILD_TOOLS (build_tools), NULL);
+
+ build_tool = g_list_nth_data (build_tools->build_tools, tool_num);
+ g_return_val_if_fail (build_tool != NULL, NULL);
+
+ return build_tool;
+}
+
+/**
* latexila_build_tools_set_enabled:
* @build_tools: a #LatexilaBuildTools object.
* @tool_num: the build tool position in the list.
diff --git a/src/liblatexila/latexila-build-tools.h b/src/liblatexila/latexila-build-tools.h
index 0a9c7be..7710556 100644
--- a/src/liblatexila/latexila-build-tools.h
+++ b/src/liblatexila/latexila-build-tools.h
@@ -37,8 +37,8 @@ typedef struct _LatexilaBuildToolsPrivate LatexilaBuildToolsPrivate;
/**
* LatexilaBuildTools:
- * @build_tools: a list of #LatexilaBuildTool's. External code should just read
- * the list, not modify it.
+ * @build_tools: (element-type LatexilaBuildTool): a list of
+ * #LatexilaBuildTool's. External code should just read the list, not modify it.
*/
struct _LatexilaBuildTools
{
@@ -62,6 +62,9 @@ GType latexila_build_tools_get_type (void) G_GNU
void latexila_build_tools_load (LatexilaBuildTools *build_tools,
GFile *xml_file);
+LatexilaBuildTool * latexila_build_tools_nth (LatexilaBuildTools *build_tools,
+ guint tool_num);
+
void latexila_build_tools_set_enabled (LatexilaBuildTools *build_tools,
guint tool_num,
gboolean enabled);
diff --git a/src/liblatexila/latexila-post-processor.h b/src/liblatexila/latexila-post-processor.h
index 61049a1..51e5bab 100644
--- a/src/liblatexila/latexila-post-processor.h
+++ b/src/liblatexila/latexila-post-processor.h
@@ -42,6 +42,7 @@ typedef struct _LatexilaPostProcessorPrivate LatexilaPostProcessorPrivate;
* @LATEXILA_POST_PROCESSOR_TYPE_ALL_OUTPUT: all output.
* @LATEXILA_POST_PROCESSOR_TYPE_LATEX: for a LaTeX command.
* @LATEXILA_POST_PROCESSOR_TYPE_LATEXMK: for the latexmk command.
+ * @LATEXILA_POST_PROCESSOR_TYPE_NB_TYPES: number of post-processor types.
*
* Types of post-processors.
*/
@@ -50,7 +51,8 @@ typedef enum
LATEXILA_POST_PROCESSOR_TYPE_NO_OUTPUT,
LATEXILA_POST_PROCESSOR_TYPE_ALL_OUTPUT,
LATEXILA_POST_PROCESSOR_TYPE_LATEX,
- LATEXILA_POST_PROCESSOR_TYPE_LATEXMK
+ LATEXILA_POST_PROCESSOR_TYPE_LATEXMK,
+ LATEXILA_POST_PROCESSOR_TYPE_NB_TYPES
} LatexilaPostProcessorType;
struct _LatexilaPostProcessor
diff --git a/src/main.vala b/src/main.vala
index 5ef897f..821a106 100644
--- a/src/main.vala
+++ b/src/main.vala
@@ -94,7 +94,7 @@ private CmdLineData parse_cmd_line_options (string[] args)
string[] uris = {};
foreach (string filename in files_list)
{
- // Call File.new_for_commandline_arg() here (and not in the Latexila class)
+ // Call File.new_for_commandline_arg() here (and not in the LatexilaApp class)
// because relative path resolution needs the right current working directory,
// which can be different for the primary instance.
File file = File.new_for_commandline_arg (filename);
@@ -113,7 +113,7 @@ int main (string[] args)
CmdLineData data = parse_cmd_line_options (args);
- Latexila app = new Latexila ();
+ LatexilaApp app = new LatexilaApp ();
try
{
diff --git a/src/main_window.vala b/src/main_window.vala
index d088542..4559d39 100644
--- a/src/main_window.vala
+++ b/src/main_window.vala
@@ -470,7 +470,7 @@ public class MainWindow : Window
private BottomPanel get_bottom_panel ()
{
- BuildView build_view = new BuildView (this);
+ Latexila.BuildView build_view = new Latexila.BuildView ();
_main_window_build_tools.set_build_view (build_view);
Toolbar build_toolbar = _ui_manager.get_widget ("/BuildToolbar") as Toolbar;
@@ -526,7 +526,7 @@ public class MainWindow : Window
Gtk.drag_dest_add_uri_targets (this);
drag_data_received.connect ((dc, x, y, selection_data, info, time) =>
{
- Latexila app = Latexila.get_instance ();
+ LatexilaApp app = LatexilaApp.get_instance ();
File[] files = {};
foreach (string uri in selection_data.get_uris ())
@@ -631,7 +631,7 @@ public class MainWindow : Window
public DocumentTab? open_document (File location, bool jump_to = true)
{
/* check if the document is already opened */
- foreach (Window window in Latexila.get_instance ().get_windows ())
+ foreach (Window window in LatexilaApp.get_instance ().get_windows ())
{
MainWindow w = window as MainWindow;
diff --git a/src/main_window_build_tools.vala b/src/main_window_build_tools.vala
index 301c83e..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
@@ -55,13 +55,12 @@ public class MainWindowBuildTools
private unowned MainWindow _main_window;
private UIManager _ui_manager;
- private BuildView _build_view;
+ private Latexila.BuildView _build_view;
private BottomPanel _bottom_panel;
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,14 +83,16 @@ 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 ());
}
- public void set_build_view (BuildView build_view)
+ public void set_build_view (Latexila.BuildView build_view)
{
_build_view = build_view;
connect_toggle_actions ();
@@ -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)
{
@@ -326,7 +335,7 @@ public class MainWindowBuildTools
// Save all the documents belonging to the project
else
{
- Gee.List<Document> docs = Latexila.get_instance ().get_documents ();
+ Gee.List<Document> docs = LatexilaApp.get_instance ().get_documents ();
foreach (Document doc in docs)
{
if (doc.project_id == project_id)
@@ -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 ()
diff --git a/src/main_window_documents.vala b/src/main_window_documents.vala
index 9642f10..db51603 100644
--- a/src/main_window_documents.vala
+++ b/src/main_window_documents.vala
@@ -282,7 +282,7 @@ public class MainWindowDocuments
return_if_fail (tab != null);
return_if_fail (_documents_panel != null);
- MainWindow new_window = Latexila.get_instance ().create_window ();
+ MainWindow new_window = LatexilaApp.get_instance ().create_window ();
DocumentView view = tab.view;
_documents_panel.remove_tab (tab);
diff --git a/src/main_window_file.vala b/src/main_window_file.vala
index 6d6d210..922d7b6 100644
--- a/src/main_window_file.vala
+++ b/src/main_window_file.vala
@@ -135,7 +135,7 @@ public class MainWindowFile
public void on_new_window ()
{
- Latexila.get_instance ().create_window ();
+ LatexilaApp.get_instance ().create_window ();
}
public void on_file_open ()
diff --git a/src/projects.vala b/src/projects.vala
index 2d61759..a2d3690 100644
--- a/src/projects.vala
+++ b/src/projects.vala
@@ -80,7 +80,7 @@ public class Projects
private void update_all_menus ()
{
- foreach (Gtk.Window window in Latexila.get_instance ().get_windows ())
+ foreach (Gtk.Window window in LatexilaApp.get_instance ().get_windows ())
{
MainWindow main_window = window as MainWindow;
main_window.update_config_project_sensitivity ();
@@ -105,7 +105,7 @@ public class Projects
modified = true;
// find if some opened documents are belonging to the new project
- Gee.List<Document> docs = Latexila.get_instance ().get_documents ();
+ Gee.List<Document> docs = LatexilaApp.get_instance ().get_documents ();
foreach (Document doc in docs)
{
if (doc.project_id != -1 || doc.location == null)
@@ -136,7 +136,7 @@ public class Projects
modified = true;
// refresh docs
- Gee.List<Document> docs = Latexila.get_instance ().get_documents ();
+ Gee.List<Document> docs = LatexilaApp.get_instance ().get_documents ();
foreach (Document doc in docs)
{
if (doc.project_id == num)
@@ -153,7 +153,7 @@ public class Projects
modified = true;
// refresh docs
- Gee.List<Document> docs = Latexila.get_instance ().get_documents ();
+ Gee.List<Document> docs = LatexilaApp.get_instance ().get_documents ();
foreach (Document doc in docs)
{
if (doc.project_id == num)
@@ -175,7 +175,7 @@ public class Projects
private void update_all_documents ()
{
- Gee.List<Document> docs = Latexila.get_instance ().get_documents ();
+ Gee.List<Document> docs = LatexilaApp.get_instance ().get_documents ();
foreach (Document doc in docs)
{
doc.project_id = -1;
diff --git a/src/synctex.vala b/src/synctex.vala
index eeceea5..7ed4665 100644
--- a/src/synctex.vala
+++ b/src/synctex.vala
@@ -116,7 +116,7 @@ public class Synctex : Object
private void show_warning (string message)
{
- MainWindow main_window = Latexila.get_instance ().active_window as MainWindow;
+ MainWindow main_window = LatexilaApp.get_instance ().active_window as MainWindow;
MessageDialog dialog = new MessageDialog (main_window,
DialogFlags.DESTROY_WITH_PARENT,
@@ -256,7 +256,7 @@ public class Synctex : Object
return;
}
- MainWindow main_window = Latexila.get_instance ().active_window as MainWindow;
+ MainWindow main_window = LatexilaApp.get_instance ().active_window as MainWindow;
main_window.jump_to_file_position (tex_file, pos.line - 1, pos.line);
main_window.present_with_time (timestamp);
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]