Clone in a terminal:
SpacingClass.vala
/*
	Copyright (C) 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 Cairo;
using Math;

namespace BirdFont {

public class SpacingClass : GLib.Object  {

	public string first;
	public string next;

	bool update_first = true;
	TextListener listener;
	
	public signal void updated (SpacingClass s);
	
	public SpacingClass (string first, string next) {
		this.first = first;
		this.next = next;
	}
	
	public void set_first () {	
		update_first = true;
		update (first);
	}
	
	public void set_next () {	
		update_first = false;
		update (next);
	}
	
	public void update_class (string value, bool first) {
		update_first = first;
		update (value);
	}
	
	void update (string val) {
		listener = new TextListener (t_("Character"), val, t_("Set"));
		
		listener.signal_text_input.connect ((text) => {
			string v = text;
			
			if (v.has_prefix ("U+") || v.has_prefix ("u+")) {
				v = ((!) Font.to_unichar (v).to_string ()).dup ();
			}
			
			if (update_first) {
				first = v.dup ();
			} else {
				next = v.dup ();
			}
		});
		
		listener.signal_submit.connect (() => {
			TabContent.hide_text_input ();
			updated (this);
		});
		
		TabContent.show_text_input (listener);
	}
}

}

Contact

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