Clone in a terminal:
LicenseDialog.vala
/*
	Copyright (C) 2015 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;

namespace BirdFont {

public class LicenseDialog : Dialog {
	TextArea agreement;
	Button accept;
	Button decline;
	
	double width = 0;
	double height;
	
	const double font_size = 20;
	const double margin = 20;
	
	public LicenseDialog () {
		agreement = new TextArea (font_size);
		agreement.min_width = 300;
		agreement.set_editable (false);
		agreement.draw_border = false;
		agreement.text_color = Theme.get_color ("Text Tool Box");
		agreement.set_text ("BirdFont is developed with donations, please consider donating to the project.\n\nThis 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?");
		
		decline = new Button ("Commercial License");
		decline.action.connect (() => {
			commercial ();
		});
		
		accept = new Button ("SIL Open Font License");
		accept.action.connect (() => {
			MainWindow.hide_dialog ();
			MainWindow.get_toolbox ().set_suppress_event (false);
		});
		
		MainWindow.get_toolbox ().set_suppress_event (true);
		height = 240;
	}

	public override void layout () {
		double cx = 0;
		double cy = (allocation.height - height) / 2.0;
		double center;
		double h;
		
		cx = margin;
		decline.widget_x = cx;

		cx += margin + decline.get_width ();
		accept.widget_x = cx;
		
		width = agreement.get_width () + margin;
		center = (allocation.width - width) / 2.0;
		
		agreement.widget_x = margin + center;
		agreement.widget_y = cy + margin;
		agreement.allocation = new WidgetAllocation.for_area (0, 0, 300, 450);
		agreement.layout ();
		
		h = agreement.get_height () + margin;
		
		decline.widget_x += center;
		decline.widget_y = cy + h + margin;
		
		accept.widget_x += center;
		accept.widget_y = cy + h + margin;
	}

	public override void draw (Context cr) {	
		double cx, cy;
		
		layout ();

		cx = (allocation.width - width) / 2.0;
		cy = (allocation.height - height) / 2.0;
		
		cr.save ();
		Theme.color (cr, "Dialog Shadow");
		cr.rectangle (0, 0, allocation.width, allocation.height);
		cr.fill ();
		cr.restore ();
		
		cr.save ();
		Theme.color (cr, "Dialog Background");
		draw_rounded_rectangle (cr, cx, cy, width, height, 10);
		cr.fill ();
		cr.restore ();
		
		cr.save ();
		Theme.color (cr, "Button Border 4");
		cr.set_line_width (1);
		draw_rounded_rectangle (cr, cx, cy, width, height, 10);
		cr.stroke ();
		cr.restore ();

		decline.draw (cr);
		accept.draw (cr);
		agreement.draw (cr);
	}

	public override void button_press (uint button, double x, double y) {
		decline.button_press (button, x, y);
		accept.button_press (button, x, y);
	}

	public override void button_release (uint button, double x, double y) {
		decline.button_release (button, x, y);
		accept.button_release (button, x, y);
	}
	
	void commercial () {
		MessageDialog md = new MessageDialog ("You need to get a commercial copy of BirdFont. Visit to birdfont.org");
		md.close.connect (exit);		
		MainWindow.show_dialog (md);
	}
	
	static void exit () {
		MainWindow.native_window.quit ();
	}
}

}

Contact

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