Clone in a terminal:
Commit 95d7934
Johan Mattsson - 2015-10-06T18:48:06+00:00
95d7934e2071ab9e84ec840db7597f442a63791ajohan.mattsson.m@gmail.com

Move code from main class

Changed files (3)

Diff

diff --git a/libbirdfont/BirdFont.vala b/libbirdfont/BirdFont.valaindex bcb73ed..4f9ed13 100644--- a/libbirdfont/BirdFont.vala+++ b/libbirdfont/BirdFont.vala@@ -19,295 +19,15 @@ namespace BirdFont {  public static string? settings_directory = null; -static void print_import_help (string[] arg) {-	stdout.printf (t_("Usage:"));-	stdout.printf (arg[0]);-	stdout.printf (" " + t_("BF-FILE") + " " + t_("SVG-FILES ...") +"\n");-	stdout.printf ("\n");-}--public static int run_import (string[] arg) {-	string bf_file = "";-	Gee.ArrayList<string> svg_files = new Gee.ArrayList<string> ();-	File bf;-	File svg;-	Font font;-	bool imported;-	-	Theme.set_default_colors ();-	Preferences.load ();-	BirdFont.args = new Argument ("");-	BirdFont.current_font = new Font ();-	BirdFont.current_glyph_collection = new GlyphCollection.with_glyph ('\0', "");-	MainWindow.init ();--	if (arg.length < 3) {-		print_import_help (arg);-		return -1;-	}-	-	bf_file = build_absoulute_path (arg[1]);-	-	for (int i = 2; i < arg.length; i++) {-		svg_files.add (arg[i]);-	}-	-	bf = File.new_for_path (bf_file);-	foreach (string f in svg_files) {-		svg = File.new_for_path (f);-		-		if (!svg.query_exists ()) {-			stdout.printf (@"$f " + t_("does not exist.") + "\n");-			return -1;-		}-	}-	-	font = BirdFont.get_current_font ();--	if (!bf.query_exists ()) {-		stdout.printf (@"$bf_file " + t_("does not exist.") + " ");-		stdout.printf (t_("A new font will be created.") + "\n");-		font.set_file (bf_file);-	} else {-		font.set_file (bf_file);-		if (!font.load ()) {-			warning (@"Failed to load font $bf_file.\n");-			-			if (!bf_file.has_suffix (".bf")) {-				warning (@"Is it a .bf file?\n");-			}-			-			return -1;-		}-	}--	font.save_backup ();--	foreach (string f in svg_files) {-		svg = File.new_for_path (f);-		imported = import_svg_file (font, svg);-		-		if (!imported) {-			stdout.printf (t_("Failed to import") + " " + f + "\n");-			stdout.printf (t_("Aborting") + "\n");-			return -1;-		}-	}-	-	font.save_bf ();-	-	return 0;-}- internal static string build_absoulute_path (string file_name) { 	File f = File.new_for_path (file_name); 	return (!) f.get_path (); } -static bool import_svg_file (Font font, File svg_file) {-	string file_name = (!) svg_file.get_basename ();-	string glyph_name;-	StringBuilder n;-	Glyph glyph;-	GlyphCollection? gc = null;-	GlyphCollection glyph_collection;-	unichar character;-	GlyphCanvas canvas;-	-	glyph_name = file_name.replace (".svg", "");-	glyph_name = glyph_name.replace (".SVG", "");-	-	if (glyph_name.char_count () > 1) {-		if (glyph_name.has_prefix ("U+")) {-			n = new StringBuilder ();-			n.append_unichar (Font.to_unichar (glyph_name));-			glyph_name = n.str;-			gc = font.get_glyph_collection (glyph_name);-		} else {-			gc = font.get_glyph_collection_by_name (glyph_name);-			-			if (gc == null) {-				stdout.printf (file_name + " " + t_("is not the name of a glyph or a Unicode value.") + "\n");-				stdout.printf (t_("Unicode values must start with U+.") + "\n");-				return false;-			}-		}		-	} else {-		gc = font.get_glyph_collection (glyph_name);-	}--	if (gc != null) {-		glyph_collection = (!) gc;-		character = glyph_collection.get_unicode_character ();-		glyph = new Glyph (glyph_collection.get_name (), character);-		glyph.version_id = glyph_collection.get_last_id () + 1;-		glyph_collection.insert_glyph (glyph, true);-	} else {-		return_val_if_fail (glyph_name.char_count () == 1, false);-		character = glyph_name.get_char (0);-		glyph_collection = new GlyphCollection (character, glyph_name);-		glyph = new Glyph (glyph_name, character);-		glyph_collection.insert_glyph (glyph, true);-		font.add_glyph_collection (glyph_collection);-	}--	canvas = MainWindow.get_glyph_canvas ();-	canvas.set_current_glyph_collection (glyph_collection);--	stdout.printf (t_("Adding"));-	stdout.printf (" ");-	stdout.printf ((!) svg_file.get_basename ());-	stdout.printf (" ");-	stdout.printf (t_("to"));-	stdout.printf (" ");-	stdout.printf (t_("Glyph"));-	stdout.printf (": ");-	stdout.printf (glyph.get_name ());-	stdout.printf (" ");-	stdout.printf (t_("Version"));-	stdout.printf (": ");-	stdout.printf (@"$(glyph.version_id)");-	stdout.printf ("\n");-	-	SvgParser.import_svg ((!) svg_file.get_path ());-	-	return true;-}--static void print_export_help (string[] arg) {-	stdout.printf (t_("Usage:"));-	stdout.printf (arg[0]);-	stdout.printf (" [" + t_("OPTION") + "...] " + t_("FILE") +"\n");-	stdout.printf ("-h, --help                      " + t_("print this message") + "\n");-	stdout.printf ("-o, --output [DIRECTORY]        " + t_("write files to this directory") + "\n");-	stdout.printf ("-s, --svg                       " + t_("write svg file") + "\n");-	stdout.printf ("-t, --ttf                       " + t_("write ttf and eot file") + "\n");-	stdout.printf ("\n");-}- public static string get_version () { 	return VERSION; } -public static int run_export (string[] arg) {-	string output_directory = ".";-	string file_name = "";-	bool specific_formats = false;	-	bool write_ttf = false;-	bool write_svg = false;	-	File directory;-	Font font;-	MainWindow main_window;--	stdout.printf ("birdfont-export version %s\n", VERSION);--	if (arg.length < 2) {-		print_export_help (arg);-		return -1;-	}--	Theme.set_default_colors ();-	BirdFont.current_font = BirdFont.new_font ();-	BirdFont.current_glyph_collection = new GlyphCollection.with_glyph ( '\0', "null");-	main_window = new MainWindow ();-	-	// FIXME: create a option for this and add structure the log messages-	-	if (BirdFont.logging) {-		init_logfile ();-	}-	-	for (int i = 1; i < arg.length; i++) {--		if (arg[i] == "-f" || arg[i] == "--fatal-warnings") {-			BirdFont.fatal_wanings = true;-			return 0;-		}--		if (arg[i] == "-h" || arg[i] == "--help") {-			print_export_help (arg);-			return 0;-		}-		-		if ((arg[i] == "-o" || arg[i] == "--output") && i + 1 < arg.length) {-			output_directory = arg[i + 1];-			i++;-			continue;-		}--		if (arg[i] == "-s" || arg[i] == "--svg") {-			write_svg = true;-			specific_formats = true;-			continue;-		}-		-		if (arg[i] == "-t" || arg[i] == "--ttf") {-			write_ttf = true;-			specific_formats = true;-			continue;-		}-		-		if (arg[i].has_prefix ("-")) {-			print_export_help (arg);-			return 1;-		}-		-		if (!arg[i].has_prefix ("-")) {-			file_name = arg[i];-						-			if (i != arg.length - 1) {-				print_export_help (arg);-				return 1;-			}-			-			break;-		}-	}--	if (BirdFont.fatal_wanings) {-		LogLevelFlags levels = LogLevelFlags.LEVEL_ERROR | LogLevelFlags.LEVEL_CRITICAL | LogLevelFlags.LEVEL_WARNING;-		Log.set_handler (null, levels, BirdFont.fatal_warning);		-	}-	-	Preferences.load ();-			-	BirdFont.args = new Argument ("");-	BirdFont.current_glyph_collection = new GlyphCollection.with_glyph ('\0', "");-	-	file_name = build_absoulute_path (file_name);-	-	font = BirdFont.get_current_font ();-	font.set_file (file_name);-	if (!font.load ()) {-		warning (@"Failed to load font $file_name.\n");-		-		if (!file_name.has_suffix (".bf")) {-			warning (@"Is it a .bf file?\n");-		}-		-		return 1;-	}--	directory = File.new_for_path (output_directory);-	-	if (!directory.query_exists ()) {-		stderr.printf (t_("Can't find output directory") + @"$((!)directory.get_path ())\n");-		return 1;-	}--	if (!specific_formats || write_svg) {-		print (@"Writing $(ExportSettings.get_file_name (font)).svg to $output_directory\n");-		ExportTool.export_svg_font_path (File.new_for_path (output_directory));-	}--	if (!specific_formats || write_ttf) {-		print (@"Writing $(ExportSettings.get_file_name (font)).ttf to $output_directory\n");-		ExportTool.export_ttf_font_path (File.new_for_path (output_directory));-	}-	-	return 0;-}- public static void set_logging (bool log) { 	BirdFont.logging = log; }diff --git a/libbirdfont/ExportUtils.vala b/libbirdfont/ExportUtils.valanew file mode 100644index 0000000..2587a93--- /dev/null+++ b/libbirdfont/ExportUtils.vala@@ -0,0 +1,149 @@+/*+    Copyright (C) 2012 2014 Johan Mattsson++    This library is free software; you can redistribute it and/or modify +    it under the terms of the GNU Lesser General Public License as +    published by the Free Software Foundation; either version 3 of the +    License, or (at your option) any later version.++    This library is distributed in the hope that it will be useful, but +    WITHOUT ANY WARRANTY; without even the implied warranty of +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +    Lesser General Public License for more details.+*/+using BirdFont;++namespace BirdFont {++static void print_export_help (string[] arg) {+	stdout.printf (t_("Usage:"));+	stdout.printf (arg[0]);+	stdout.printf (" [" + t_("OPTION") + "...] " + t_("FILE") +"\n");+	stdout.printf ("-h, --help                      " + t_("print this message") + "\n");+	stdout.printf ("-o, --output [DIRECTORY]        " + t_("write files to this directory") + "\n");+	stdout.printf ("-s, --svg                       " + t_("write svg file") + "\n");+	stdout.printf ("-t, --ttf                       " + t_("write ttf and eot file") + "\n");+	stdout.printf ("\n");+}+++public static int run_export (string[] arg) {+	string output_directory = ".";+	string file_name = "";+	bool specific_formats = false;	+	bool write_ttf = false;+	bool write_svg = false;	+	File directory;+	Font font;+	MainWindow main_window;++	stdout.printf ("birdfont-export version %s\n", VERSION);++	if (arg.length < 2) {+		print_export_help (arg);+		return -1;+	}++	Theme.set_default_colors ();+	BirdFont.current_font = BirdFont.new_font ();+	BirdFont.current_glyph_collection = new GlyphCollection.with_glyph ( '\0', "null");+	main_window = new MainWindow ();+	+	// FIXME: create a option for this and add structure the log messages+	+	if (BirdFont.logging) {+		init_logfile ();+	}+	+	for (int i = 1; i < arg.length; i++) {++		if (arg[i] == "-f" || arg[i] == "--fatal-warnings") {+			BirdFont.fatal_wanings = true;+			return 0;+		}++		if (arg[i] == "-h" || arg[i] == "--help") {+			print_export_help (arg);+			return 0;+		}+		+		if ((arg[i] == "-o" || arg[i] == "--output") && i + 1 < arg.length) {+			output_directory = arg[i + 1];+			i++;+			continue;+		}++		if (arg[i] == "-s" || arg[i] == "--svg") {+			write_svg = true;+			specific_formats = true;+			continue;+		}+		+		if (arg[i] == "-t" || arg[i] == "--ttf") {+			write_ttf = true;+			specific_formats = true;+			continue;+		}+		+		if (arg[i].has_prefix ("-")) {+			print_export_help (arg);+			return 1;+		}+		+		if (!arg[i].has_prefix ("-")) {+			file_name = arg[i];+						+			if (i != arg.length - 1) {+				print_export_help (arg);+				return 1;+			}+			+			break;+		}+	}++	if (BirdFont.fatal_wanings) {+		LogLevelFlags levels = LogLevelFlags.LEVEL_ERROR | LogLevelFlags.LEVEL_CRITICAL | LogLevelFlags.LEVEL_WARNING;+		Log.set_handler (null, levels, BirdFont.fatal_warning);		+	}+	+	Preferences.load ();+			+	BirdFont.args = new Argument ("");+	BirdFont.current_glyph_collection = new GlyphCollection.with_glyph ('\0', "");+	+	file_name = build_absoulute_path (file_name);+	+	font = BirdFont.get_current_font ();+	font.set_file (file_name);+	if (!font.load ()) {+		warning (@"Failed to load font $file_name.\n");+		+		if (!file_name.has_suffix (".bf")) {+			warning (@"Is it a .bf file?\n");+		}+		+		return 1;+	}++	directory = File.new_for_path (output_directory);+	+	if (!directory.query_exists ()) {+		stderr.printf (t_("Can't find output directory") + @"$((!)directory.get_path ())\n");+		return 1;+	}++	if (!specific_formats || write_svg) {+		print (@"Writing $(ExportSettings.get_file_name (font)).svg to $output_directory\n");+		ExportTool.export_svg_font_path (File.new_for_path (output_directory));+	}++	if (!specific_formats || write_ttf) {+		print (@"Writing $(ExportSettings.get_file_name (font)).ttf to $output_directory\n");+		ExportTool.export_ttf_font_path (File.new_for_path (output_directory));+	}+	+	return 0;+}++}diff --git a/libbirdfont/ImportUtils.vala b/libbirdfont/ImportUtils.valanew file mode 100644index 0000000..f6178e9--- /dev/null+++ b/libbirdfont/ImportUtils.vala@@ -0,0 +1,168 @@+/*+    Copyright (C) 2012 2014 Johan Mattsson++    This library is free software; you can redistribute it and/or modify +    it under the terms of the GNU Lesser General Public License as +    published by the Free Software Foundation; either version 3 of the +    License, or (at your option) any later version.++    This library is distributed in the hope that it will be useful, but +    WITHOUT ANY WARRANTY; without even the implied warranty of +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +    Lesser General Public License for more details.+*/+using BirdFont;++namespace BirdFont {++static void print_import_help (string[] arg) {+	stdout.printf (t_("Usage:"));+	stdout.printf (arg[0]);+	stdout.printf (" " + t_("BF-FILE") + " " + t_("SVG-FILES ...") +"\n");+	stdout.printf ("\n");+}++public static int run_import (string[] arg) {+	string bf_file = "";+	Gee.ArrayList<string> svg_files = new Gee.ArrayList<string> ();+	File bf;+	File svg;+	Font font;+	bool imported;+	+	Theme.set_default_colors ();+	Preferences.load ();+	BirdFont.args = new Argument ("");+	BirdFont.current_font = new Font ();+	BirdFont.current_glyph_collection = new GlyphCollection.with_glyph ('\0', "");+	MainWindow.init ();++	if (arg.length < 3) {+		print_import_help (arg);+		return -1;+	}+	+	bf_file = build_absoulute_path (arg[1]);+	+	for (int i = 2; i < arg.length; i++) {+		svg_files.add (arg[i]);+	}+	+	bf = File.new_for_path (bf_file);+	foreach (string f in svg_files) {+		svg = File.new_for_path (f);+		+		if (!svg.query_exists ()) {+			stdout.printf (@"$f " + t_("does not exist.") + "\n");+			return -1;+		}+	}+	+	font = BirdFont.get_current_font ();++	if (!bf.query_exists ()) {+		stdout.printf (@"$bf_file " + t_("does not exist.") + " ");+		stdout.printf (t_("A new font will be created.") + "\n");+		font.set_file (bf_file);+	} else {+		font.set_file (bf_file);+		if (!font.load ()) {+			warning (@"Failed to load font $bf_file.\n");+			+			if (!bf_file.has_suffix (".bf")) {+				warning (@"Is it a .bf file?\n");+			}+			+			return -1;+		}+	}++	font.save_backup ();++	foreach (string f in svg_files) {+		svg = File.new_for_path (f);+		imported = import_svg_file (font, svg);+		+		if (!imported) {+			stdout.printf (t_("Failed to import") + " " + f + "\n");+			stdout.printf (t_("Aborting") + "\n");+			return -1;+		}+	}+	+	font.save_bf ();+	+	return 0;+}++static bool import_svg_file (Font font, File svg_file) {+	string file_name = (!) svg_file.get_basename ();+	string glyph_name;+	StringBuilder n;+	Glyph glyph;+	GlyphCollection? gc = null;+	GlyphCollection glyph_collection;+	unichar character;+	GlyphCanvas canvas;+	+	glyph_name = file_name.replace (".svg", "");+	glyph_name = glyph_name.replace (".SVG", "");+	+	if (glyph_name.char_count () > 1) {+		if (glyph_name.has_prefix ("U+")) {+			n = new StringBuilder ();+			n.append_unichar (Font.to_unichar (glyph_name));+			glyph_name = n.str;+			gc = font.get_glyph_collection (glyph_name);+		} else {+			gc = font.get_glyph_collection_by_name (glyph_name);+			+			if (gc == null) {+				stdout.printf (file_name + " " + t_("is not the name of a glyph or a Unicode value.") + "\n");+				stdout.printf (t_("Unicode values must start with U+.") + "\n");+				return false;+			}+		}		+	} else {+		gc = font.get_glyph_collection (glyph_name);+	}++	if (gc != null) {+		glyph_collection = (!) gc;+		character = glyph_collection.get_unicode_character ();+		glyph = new Glyph (glyph_collection.get_name (), character);+		glyph.version_id = glyph_collection.get_last_id () + 1;+		glyph_collection.insert_glyph (glyph, true);+	} else {+		return_val_if_fail (glyph_name.char_count () == 1, false);+		character = glyph_name.get_char (0);+		glyph_collection = new GlyphCollection (character, glyph_name);+		glyph = new Glyph (glyph_name, character);+		glyph_collection.insert_glyph (glyph, true);+		font.add_glyph_collection (glyph_collection);+	}++	canvas = MainWindow.get_glyph_canvas ();+	canvas.set_current_glyph_collection (glyph_collection);++	stdout.printf (t_("Adding"));+	stdout.printf (" ");+	stdout.printf ((!) svg_file.get_basename ());+	stdout.printf (" ");+	stdout.printf (t_("to"));+	stdout.printf (" ");+	stdout.printf (t_("Glyph"));+	stdout.printf (": ");+	stdout.printf (glyph.get_name ());+	stdout.printf (" ");+	stdout.printf (t_("Version"));+	stdout.printf (": ");+	stdout.printf (@"$(glyph.version_id)");+	stdout.printf ("\n");+	+	SvgParser.import_svg ((!) svg_file.get_path ());+	+	return true;+}++}

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112