Commit 7257a16b authored by Matthias Klumpp's avatar Matthias Klumpp

Imported Upstream version 3.3.1


Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

GTKD AUTHORS (alphabetical by last name)
Frank Benoit
Jake Day
Jonas Kivi
Alan Knowles
Antonio Monteiro
Sebastián E. Peyrott
John Reimer
Mike Wey
\ No newline at end of file
module Build;
import std.algorithm;
import std.array;
import std.file;
import std.getopt;
import std.path;
import std.process;
import std.stdio;
import std.string;
string dcflags;
string ldflags;
int main(string[] args)
writeln("This build script is currently Windows only.");
getopt(args, "dcflags", &dcflags, "ldflags", &ldflags);
foreach ( arg; args )
if ( !["gtkd", "gtkdgl", "sv", "gstreamer", "vte", "all"].canFind(arg) )
writefln("Unknown option: %s", arg);
return 1;
if ( args.length == 0 )
args = ["gtkd", "gtkdgl", "sv"];
if ( args.canFind("all") )
args = ["gtkd", "gtkdgl", "sv", "gstreamer", "vte"];
foreach ( arg; args )
switch ( arg )
case "gtkd":
build("src", "gtkd");
case "gtkdgl":
build("srcgl", "gtkdgl");
case "sv":
build("srcsv", "gtkdsv");
case "gstreamer":
build("srcgstreamer", "gstreamerd");
case "vte":
build("srcvte", "vted");
void build(string dir, string lib)
std.file.write("build.rf", format("-m64 -c -lib %s %s -Isrc -of%s.lib %s", dcflags, ldflags, lib, dFiles(dir)));
executeShell("dmd @build.rf");
std.file.write("build.rf", format("-c %s -Isrc -of%s.obj %s", dcflags, lib, dFiles(dir)));
executeShell("dmd @build.rf");
executeShell(format("dmd -lib %s -of%s.lib %s.obj", ldflags, lib, lib));
std.file.remove(lib ~".obj");
string dFiles(string sourceDir)
string files;
auto entries = dirEntries(sourceDir, SpanMode.breadth);
foreach ( DirEntry entry; entries )
if ( entry.isDir == false && == ".d" )
files ~= ~ " ";
return files;
GtkD ChangeLog
Release: 3.3.0
-Update to GTK 3.20.
Release: 3.2.3
-Fix some memory errors, #146
-Add a scoped version of addOnCommandline. #142
Release: 3.2.2
-Add ddox generation script by Gerald Nunn.
-Allocate GTK structs with g_malloc0.
-GIO Action and Popover demo by Gerald Nunn. #140
-Don't create new objects in ListG and ListSG toArray.
Release: 3.2.1
-Fix ListG.toArray, and the unittest. #129
-Returning a TreeIter from a custom TreeModel should be optional. #130
-New CoreGL demo by: Sebastien Alaiwan. #132
-New Multithreading demo by: Gerald Nunn. #134
-Fix the vte path. #135
Release: 3.2.0
-Update to GTK 3.18.
Release: 3.1.5
-The Wrapper now shows file and linenumber on errors in the GIR files.
-Fix iterating ListG and ListSG. #123
-Fix building GtkDGL.
Release: 3.1.4
-Fix issues with dmd 2.068.
-Throw GExceptions before ConstructionExceptions. #118
-Add addMany and removeMany to gstreamer.Bin. #116
Release: 3.1.3
-Don't document length parameters that arn't there.
-Don't treat guchar* as string. #115
-Set the TreeModel after retrieving the TreeIter. Fix #113
Release: 3.1.2
-Fix Builder.addFromFile.
Release: 3.1.1
-Remove conflicting GStreamer Files
Release: 3.1.0
-Wraps the GTK+ 3.16 API.
-Add TreeModelFilter and TreeModelSort constructors, Fix #110
Release: 3.0.0
-New Generator based on the gir files. for changes because of it see the wiki:
-Wraps the GTK+ 3.14 API.
-Deprecated the addOnDraw function that doesn't use scoped.
-Improve memory management for classes derived from gobject.ObjectG.
-Don't use absolute paths for the GTK libraries on OSX, Issue #97.
Release: 2.4.2
-Fix issue #102, stop allocating in the ObjectG destructor.
Release: 2.4.1
-Fix memory leak with gdk.Pixbuf.
-On Windows search for an copy of GTK+ in <exe path>\gtk.
Release: 2.4.0
- Calling unsupported functions now throws an Error.
- Add a Scoped overload for addOnDraw.
Since the GC can keep a lot of Contexts alive before a collection cycle
starts, some memory and GDI/X11 handles arn't released when no longer
The Scoped overload destroys the Context at the end of the call
releasing there resources.
- Avoid DLL issues on Windows.
GtkD now searches for the correct copy of Gtk+.
- Add a toArray function to glib.ListG and glib.ListSG.
- Add VTE binding, provided by Deadalnix.
- Remove D1 support.
There are a few reasons to do this:
1. All three compilers have discontinued there D1 version.
2. GtkD with D1 + Tango has been broken for a year now, without any complain
3. I hope to better support D2 features like const, imutable, nothrow, pure.
- bug fixes.
The GtkD library and included works are provided under the terms of the
GNU Library General Public License (LGPL) version 3, or (at your option)
any later version, with the following exceptions:
1. Modifications to any of the works included within the GtkD library to support a specific
platform or application do not constitute a modified or derivative work.
2. Static linking of applications or any other source to the GtkD library does not constitute a
modified or derivative work and does not require the author(s) to provide source code for said
work, use the shared GtkD libraries, or link their applications against a user-supplied version
of GtkD. If you link applications to a modified version of GtkD, then the changes to GtkD must be
provided under the terms of the LGPL.
3. You do not have to provide a copy of the GtkD license with applications that are linked to the
GtkD library, nor do you have to identify GtkD's license in your application as required by the
LGPL. However, applications must still identify their use of GtkD. The following example statement
can be included in the application or it's documentation to satisfy this requirement:
[application] is based in part on works of the GtkD project (
The above exceptions are temporary and are subject to change at any time.
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified