GUI libraries

Xavier Bigand flamaros.xavier at gmail.com
Fri Nov 29 15:45:58 PST 2013


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,
		},
	},
}



More information about the Digitalmars-d mailing list