On Friday, 29 November 2013 at 23:46:02 UTC, Xavier Bigand wrote:
Le 29/11/2013 04:48, Rikki Cattermole a écrit :
On Thursday, 28 November 2013 at 12:13:42 UTC, Chris wrote:
On Thursday, 28 November 2013 at 12:05:09 UTC, Jacob Carlborg
wrote:
On 2013-11-28 11:12, Chris wrote:
+1 GtkD & Glade (UI builder) are very good
(http://gtkd.org/).
Hopefully
one day we will have our own pure D GUI toolkit.
DWT is a pure D GUI toolkit.
What I meant was no bindings to native widgets or other
toolkits. DWT
(like SWT) uses the native widgets and needs an interface. I
was
thinking of a toolkit where everything is provided by D and
done in D
without any reference to native frameworks (Cocoa etc.).
DOOGLE[1] currently only depends on libfreetype2, (with
Windows as only
target) Windows API and OpenGL. I would remove libfreetype2
but.. its
basically standard for font rasterization cross platform wise.
I have designed it to have its interface abstracted away from
the
implementation fully.
Its current state is well listed on my blog[2] it may not look
much now
and not ready for production use, but definitely should be
said.
[1] https://github.com/rikkimax/doogle
[2]
http://alphaglosined.blogspot.com/2013/11/web-services-and-opengl-oh-my.html
You may want take a look to DQuick :
https://github.com/D-Quick/DQuick
It's run on top of openGL too, the main difference is that you
describe the UI in dedicated script files. Scripts provide
allow to provide fully dynamical UIs.
An UI file (original lua script format for the moment) :
GraphicItem
{
id = "main",
Image {
id = "kerningImageButton",
source = "images/border-image.png",
width = 300,
height = 50,
MouseArea {
id = "kerningButton",
width = function()
return kerningImageButton.width
end,
height = function()
return kerningImageButton.height
end,
},
},
ScrollView {
id = "scrollView",
y = function()
return kerningImageButton.height
end,
width = function()
return main.width
end,
height = function()
return main.height - scrollView.y
end,
clip = true,
Text {
id = "text",
wrapMode = Text.WrapMode.WordWrap,
width = function()
return scrollView.width
end,
height = function()
return scrollView.height
end,
text = textFr,
family = function()
if (kerningButton.pressed) then
return "AngsanaUPC"
end
return "Arial"
end,
fontSize = 24,
fontStyle = function()
if (kerningButton.pressed) then
return Text.FontStyle.Italic
end
return Text.FontStyle.Regular
end,
},
},
}
I know, I've kept an eye on all other GUI toolkits since I
started work. I'm currently sticking to just plain old class
objects to build it primarily because of a) efficiency and b)
extra dependencies.
Eventually there will be a meta based system to configure it. But
that'll come when I'll start on an IDE.