.
1 /*
2 Copyright (C) 2014 Johan Mattsson
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as
6 published by the Free Software Foundation; either version 3 of the
7 License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful, but
10 WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13 */
14 using Cairo;
15 using Math;
16
17 namespace BirdFont {
18
19 public class SpacingClass : GLib.Object {
20
21 public string first;
22 public string next;
23
24 bool update_first = true;
25 TextListener listener;
26
27 public signal void updated (SpacingClass s);
28
29 public SpacingClass (string first, string next) {
30 this.first = first;
31 this.next = next;
32 }
33
34 public void set_first () {
35 update_first = true;
36 update (first);
37 }
38
39 public void set_next () {
40 update_first = false;
41 update (next);
42 }
43
44 void update (string val) {
45 listener = new TextListener (t_("Character"), val, t_("Set"));
46
47 listener.signal_text_input.connect ((text) => {
48 string v = text;
49
50 if (v.has_prefix ("U+") || v.has_prefix ("u+")) {
51 v = (!) Font.to_unichar (val).to_string ();
52 }
53
54 if (update_first) {
55 first = v.dup ();
56 } else {
57 next = v.dup ();
58 }
59
60 updated (this);
61 });
62
63 listener.signal_submit.connect (() => {
64 TabContent.hide_text_input ();
65 });
66
67 TabContent.show_text_input (listener);
68 }
69 }
70
71 }
72