.
1 /*
2 Copyright (C) 2015 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
15 using Cairo;
16
17 namespace BirdFont {
18
19 public class LicenseDialog : Dialog {
20 TextArea agreement;
21 Button accept;
22 Button decline;
23
24 double width = 0;
25 double height;
26
27 static const double font_size = 20;
28 static const double margin = 20;
29
30 public LicenseDialog () {
31 agreement = new TextArea (font_size);
32 agreement.min_width = 300;
33 agreement.set_editable (false);
34 agreement.draw_border = false;
35 agreement.text_color = Theme.get_color ("Text Tool Box");
36 agreement.set_text ("This is the freeware version of BirdFont. You may use it for creating fonts under the SIL Open Font License.\n\nWhich license do you want to use for your font?");
37
38 decline = new Button ("Commercial License");
39 decline.action.connect (() => {
40 commercial ();
41 });
42
43 accept = new Button ("SIL Open Font License");
44 accept.action.connect (() => {
45 MainWindow.hide_dialog ();
46 MainWindow.get_toolbox ().set_suppress_event (false);
47 });
48
49 height = 190 * MainWindow.units;
50
51 MainWindow.get_toolbox ().set_suppress_event (true);
52 }
53
54 void layout () {
55 double cx = 0;
56 double cy = (allocation.height - height) / 2.0;
57 double center;
58 double h;
59
60 cx = margin;
61 decline.widget_x = cx;
62
63 cx += margin + decline.get_width ();
64 accept.widget_x = cx;
65
66 width = agreement.get_width () + margin;
67 center = (allocation.width - width) / 2.0;
68
69 agreement.widget_x = margin + center;
70 agreement.widget_y = cy + margin;
71 agreement.allocation = new WidgetAllocation.for_area (0, 0, 300, 300);
72
73 h = agreement.get_height () + margin;
74
75 decline.widget_x += center;
76 decline.widget_y = cy + h + margin;
77
78 accept.widget_x += center;
79 accept.widget_y = cy + h + margin;
80 }
81
82 public override void draw (Context cr) {
83 double cx, cy;
84
85 layout ();
86
87 cx = (allocation.width - width) / 2.0;
88 cy = (allocation.height - height) / 2.0;
89
90 cr.save ();
91 Theme.color (cr, "Dialog Shadow");
92 cr.rectangle (0, 0, allocation.width, allocation.height);
93 cr.fill ();
94 cr.restore ();
95
96 cr.save ();
97 Theme.color (cr, "Dialog Background");
98 draw_rounded_rectangle (cr, cx, cy, width, height, 10 * MainWindow.units);
99 cr.fill ();
100 cr.restore ();
101
102 cr.save ();
103 Theme.color (cr, "Button Border 4");
104 cr.set_line_width (1);
105 draw_rounded_rectangle (cr, cx, cy, width, height, 10 * MainWindow.units);
106 cr.stroke ();
107 cr.restore ();
108
109 decline.draw (cr);
110 accept.draw (cr);
111 agreement.draw (cr);
112 }
113
114 public override void button_press (uint button, double x, double y) {
115 decline.button_press (button, x, y);
116 accept.button_press (button, x, y);
117 }
118
119 public override void button_release (uint button, double x, double y) {
120 decline.button_release (button, x, y);
121 accept.button_release (button, x, y);
122 }
123
124 void commercial () {
125 MessageDialog md = new MessageDialog ("You need to get a commercial copy of BirdFont. Visit to birdfont.org");
126 md.close.connect (exit);
127 MainWindow.show_dialog (md);
128 }
129
130 static void exit () {
131 MainWindow.native_window.quit ();
132 }
133 }
134
135 }
136