GUI libraries
Rikki Cattermole
alphaglosined at gmail.com
Fri Nov 29 19:25:33 PST 2013
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.
More information about the Digitalmars-d
mailing list