Need some opinions for a GUI editor

Flamaros flamaros.xavier at gmail.com
Wed May 29 03:22:19 PDT 2013


On Wednesday, 29 May 2013 at 09:51:04 UTC, Jacob Carlborg wrote:
> On 2013-05-28 23:25, Flamaros wrote:
>> Hi,
>>
>> I and a friend are developing a GUI library, and now our 
>> script engine
>> is ready to start a prototype (but far to be finished). We 
>> think to try
>> to create a GUI editor based on our library.
>> In this way, we'll see which features are need.
>>
>> My concern is about how the editor have to works, we see two 
>> different
>> ways to do it :
>> 1) Classic editor external to the user applications
>>  a) Good :
>>     - Lightweight (easy to deploy and test)
>>     - No need to modify application code
>>     - Stable due to isolation of application
>>     - Real-time edition but limited on one view (bad to 
>> preview menus
>> transitions)
>>  b) Bad :
>>     - Limited, plugins needed to extend editor components and 
>> his
>> knowledge of application (can't predict size of unknown 
>> application
>> specific items)
>>
>> 2) Integrated editor (launch with the user application in a 
>> second Window)
>>  a) Good :
>>     - Preview is the final result with real data
>>     - All application components accessible to the editor 
>> without
>> complex plugin system (in this way all editors components will 
>> be well
>> placed in the preview)
>>     - Full real-time edition (can preview menus 
>> transitions,...)
>>     - User can customize the editor
>>  b) Bad :
>>     - Intrusive in the application code
>>     - Force the user to port application on a desktop OS 
>> (Linux, Mac or
>> Windows), not friendly if he target only embedded devices (can 
>> be
>> bypassed with a remote system)
>>     - Less stable editor?
>>
>> The second solution is commonly used in the video game 
>> industry, but is
>> the best choice for a larger usage?
>>
>> What do you think about?
>
> I would go with the first approach because I would guess it's 
> easier. The editor creates the controls. When saving it will 
> serialize all the controls to some format. This format is then 
> read by the application.
>
> For serialization you could have a look at Orange:
>
> https://github.com/jacob-carlborg/orange

You think it's easier to do or to use?


We can't do serialization because our GUI files are lua scripts.

It looks like :
[CODE]
Image {
	id = "image",
	source = "images/pngtest.png",
	x = 50,
	y = 50,
	
	titi = 0,
	toto = function()
		return image.width + image.height
	end,
	onTotoChanged = function()
		image.titi = image.toto
		print("onTotoChanged = "..image.titi)		
	end,
	
	Button {
		width = function()
			return image.width
		end,
		height = function()
			return image.height
		end,
	}
}
[/CODE]

Button isn't a D Object :
[CODE]
function Button(t)
	print(t.width)
	local Buttonimage3 = Image {
		id = "Buttonimage",
		width = 100,	-- property binding, when image change width is 
automatically updated
		height = 50,
		-- opGet = function(propertyName)
			-- return ButtonmouseArea[propertyName]
		-- end,
		-- opSet = function(propertyName, value)
			-- ButtonmouseArea[propertyName] = value
		-- end,
		

		source = function ()
			if ButtonmouseArea.pressed then	-- property binding, when 
mouseArea state change this condition is updated directly
				return "images/Alpha-blue-trans.png"
			else
				return "images/pngtest.png"
			end
		end,

		MouseArea {					-- parent/child object encapsulation
			id = "ButtonmouseArea",
			width = function ()
				return Buttonimage.width
			end,
			height = function ()
				return Buttonimage.height
			end,
		},
	}
	for key, value in pairs(t) do
		print(value)
		Buttonimage3[key] = value
	end
	return Buttonimage3
end
[/CODE]



More information about the Digitalmars-d mailing list