Page 1 of 1

Initial post - CEGUI Unified Editor

Posted: Thu Dec 09, 2010 16:22
by Kulik
CrazyEddie ported CELayoutEditor to python with many usability fixes. It's already in svn or you can try my quick and painless win32 distribution with everything included - If you download this, please do svn update on the svn folders to download any updates.

With this out of the way I would like to propose a direction this editor should be going IMO. I would like an all inclusive pluggable tool (even though I was opposed to this idea a month ago or something, people change.. :D ). The glue of the tool would be a "project" file. It would hold information about resource paths and settings related to how to bootstrap CEGUI and get it going. This way you can easily switch between projects without having to reset the paths. The project file would be a XML to go along CEGUI's philosophy (throw XML at everything!! :lol: )

Code: Select all

<Project version="0.8"> <!-- if the editor & CEGUI version is higher than this, editor should be able to upgrade the file -->
    .. this should be fairly straightforward

    <Group name="Inventory">
      <Imageset path="Inventory.imageset" />
      <Layout path="InventoryScreen.layout" />
      <Layout path="ItemDescription.layout" />
      <AnimationDefinitions path="InventoryAnimations.xml" locked="True" /> <!-- if the file is locked, editor can't touch it, it can only be handedited -->

      <!-- I dunno if we want this or not, it allows more linear workflow but doesn't really add anything --> <Bitmap path="Inventory.png" /> <!-- the editor will have no bitmap editing capabilities at all, instead we will just launch application of choice (gimp, ..) -->

    <LookNFeel path="MySuperGame.looknfeel" />

How I think it should all look:
There will be a project browser dock widget defaultly located at the left corner of the screen. It will allow you to double click files to view/edit them.
On the right a property editor will be located (also a dock widget). It will change it's content depending on the currently active edited file.
User should be able to edit more files at once, this will be accomplished by tabs at the top.
Because I want CEGUI to only start once to avoid memory bloat, the center widget (CEGUI view) will be singular. It will change it's contents depending on edited file (looknfeel preview, layout editing, ...)
Full blown Undo/Redo is a must.

Layout Editing
The current CELE2 will be reused there.

Animation Editing
I was thinking flash like timeline with auto keyframes. You seek to the time you want and then you alter something on the screen. Keyframe, Affector, Animation all will get created automatically. You will be able to turn this off and work with manual keyframes.

Imageset Editing
I will probably port CEImagesetEditor as it is with only minor changes. I want to solve overlapping boxes a bit because it makes it hard to work in the old CEImagesetEditor but I don't know how I will solve that yet.

LookNFeel Editing
This will be a tough one. For starters I will probably throw in a XML editor with instant preview but Falagard needs some changes to make this happen. In the future I could slowly start adding WYSIWYG capabilities (adding components, positioning them, etc...)

Scheme Editing
This will be easy if I am not wrong.

Why do I think this will get done?
All this is very fancy but it requires a lot of work (more than I have devoted to CEGUI so far I think). I want to push this into becoming my semester coding project next year (summer term). That should force me into getting it done. This doesn't mean that I won't need help with this. All help is encouraged and much appreciated!

The layout editor that I want to incorporate is GPL but the only author is CrazyEddie. We will have to discuss how this will be done. I would love it to be all GPLed but on the other hand I feel like I am giving out a lot without getting anything back so I have to think about that a bit more. PySide allows us to make it non-GPL so other licenses are still an option.

Please give some feedback, I want to brainstorm this a bit before I start any work. I won't be able to work on it at all until maybe mid January or February but I want to have some solid concepts laid out by then.

* I need somebody able to create and maintain nice UI layouts in Qt4 Designer. I know I suck at this myself. I usually end up doing something only I can use.
* Artists who can do icons are highly needed as well but I may end up reusing Oxygen or other project. I don't think they will have looknfeel icons and stuff like that though.
* Any coding help is highly needed (python skills and Qt4 experience would be great). The whole project will be very dynamic, living in SVN only in the early stages. I will create hassle free prepackaged versions so you can just unpack and it will work. The project is python only so hacking around will be very easy

Re: CEToolset

Posted: Fri Dec 10, 2010 00:10
by Jamarr
I think that the core pluggable tool should be free, essentially an empty shell if no plugins are installed. The core tool should provide some generic functionality, otherwise there would be no point for it. Perhaps a plugin-wide/accessible undo/redo, cross-plugin messaging / synchronizing, automated update service, multi-renderer previewing capability, etc.

The accessibility of the plugins would be dependent on the plugin author(s), such as paying for a license, offering them for free, etc. Keeping the core tool open allows the community to stay involved, and keeps this tool in the spotlight. Allowing paid plugins gives authors the opportunity for monetary reimbursement. I also think that you need at least one free plugin for this to work, and assuming CE is content with allowing the new LayoutEditor to be free, that would be the most suitable choice; and perhaps thrown in a generic Xml(text)Editor. This promotes the core tool, makes it accessible and value to every CEGUI client, and gives those clients as sense of familiarity/loyalty to the core tool. And then you setup shop :) There are many possibilities for remaining tools: LooknfeelEditor, AnimationEditor, ImagesetEditor, SchemeEditor, etc. You could also have some simple plugins for launching thirdparty applications for image and bmp font editors. And you do not have to work on all the tools at once, they can be developed separately in parallel or incrementally added. It also keeps paid plugins honest, since they may have competition from freelance authors.

I do not think the GPL would be an issue here, since plugins are not dependent on (derived from or linked too) each other, only the core tool. So long as the core tool license is open and is compatible (MIT) with both GPLish and non-GPLish plugins to link to it, and so long as the plugins are not dependent on each other, then I assume there would be no licensing conflicts between them.

Unfortunately I have never developed in Python, nor have I every used the Qt, although I have been interested in both for awhile ;)

Re: CEToolset

Posted: Fri Dec 10, 2010 00:31
by Kulik
That is actually a pretty good idea but I don't know if we are not thinking too big in this area. The number of things the editor will do is limited and don't think there will be companies willing to maintain and provide plugins for money.

I think for practical reasons releasing the code is necessary (patches, also python is dynamic and decompiling the bytecode is pretty easy and the results are usable, obfuscating it by us is just lame IMO).

I was thinking free for non-commercial and some fee for commercial products. No serial codes bullshit, just relying on people's honesty (so I think we will get ~$0 :lol: ). The idea is not to get millions but to get something. It's pretty much just to ease my capitalist's mind since this is as far from "get rich quick" as possible.

Re: CEToolset

Posted: Fri Dec 10, 2010 19:03
by Jamarr
Yeah, obfuscating python is fairly pointless and even if you compile it to bytecode before distribution, there are programs out there to revert the process; how successful those are I am not too sure.

The main idea with plugins is that the core tool has to be useful, but if the core tool itself is proprietary, or not open to the community then there would be no point for the community to contribute since the core tool could hold the community hostage. Asking a fee for the core tool, so long as it is open-source could work out, although I still think that a free core tool would be spread and integrated into the community faster.

The core tool can always be incrementally developed, it does not need a fully support cross-plugin messaging, etc. off the bat. In your original post, you mention a project browser; this would probably be a sufficient start. Your approach to the core tool was kind of vague in the original post, where you going to use CELE2 as the core tool or would that also be a plugin?

Re: CEToolset

Posted: Fri Dec 10, 2010 21:41
by Kulik
I said pluggable in the starter post. I actually didn't mean plugins per se but pluggable functionality, meaning that you would want the editor to do something it doesn't do and you could simply hack it together quickly reusing various classes. The editor should have as much reusable components (Property Editor generic enough to be used with anything derived form PropertySet, widget tree selector, widget manipulator - move, scale, resize, ...) as possible to make it easy for us to extend it - widget manipulator would be used by layout editor as well as animation editor for example.

CELE2 would simply be ported into the toolset. I would definitely take some stuff out of it and reuse it in the core tool.

Shipping bytecode compiled python is pointless, the only thing that isn't decompilable are the comments. Obfuscating it is possible but lame and too much of a hassle. As I said, ideally this would be a community project but since there only are a handful of people I expect getting involved and plethora of whiners, naggers and know-it-all-but-never-done-anythings, releasing this for free doesn't feel comfortable to me. It's still an open question and really depends on how all this turns out.

Current license idea: Commercial product devs pay a small fee, open sourcers should get it for free. Notable contributors would get a commercial license for free. Of course all this is very open to abuse and people can always claim they wrote the damn files by hand, so it's probably a lost fight. Me and my idealistic ideas should probably crawl under a rock now. :lol:

Re: CEToolset

Posted: Mon Dec 20, 2010 03:28
by Ident
Link saved my night, old folder didn't work anymore (dunno why). DIdn't find any docu at all on the new layoutEditor (except here in the forums) and svn alone doesnt really help, unfortunately. But this works nicely out of the box without any issues, I hope it stays like this.

As for improvements, a small thing i noticed: I have to set the cegui display size myself, i wish there was an option to have it fit to the size of the whole editor window (by default) and an option to set it to a fixed size - but then it should not resize the window containing the display, as it does now, due to which it is leaving white parts to the right and bottom.

Also it seems none of my layout files (also those submitted in the package with the editor) work. Also everything is grey and none of the skins work. Kinda weird, and if I load existing layout files it creates bugs in the console. I guess this isnt implemented as far, or should this already work???


Just figured i need to set a resources directory manually as it does not default to "./datafiles/"

i wish there was an .ini that specified things like:
• generally a default resources directory ( i think you proposed to specify this per xml in a seperate file which is even better as you can use that for different projects using different datafile resources)
• default cegui window size on new layouts
• if cegui window size automatically adapts to window-resizing of the whole editor, on new layouts

Else it works greatly now that i found out i need to set this directory :D silly me.


If you need some errors:

- If setting a wrong variable value in the "Widget Properties" the fields turn red. However all of the fields after the current one turn red.
- Crash if selecting a window and hitting "delete" key
- If decreasing UnfiedX(or Y)PositionScale to a value of 0,00 the Offset value wont apply and the window is stuck to the left. If setting it to zero, the Offset value will be taken. I don't know if this is supposed to be.
- For some reason it seems the maximum numbers are limited. For example in the field Offset i can enter no number higher than 2 digits, which is ridiculous if you wanna offset a window towards the very right lol
- Also isnt UnifiedXPosition + UnifiedYPosition and UnifiedPosition the same? I m confused, havent touched cegui for some time but this seems weird, especially after playing around with it.

Needs some polishing and fixing then it is a solid and nice tool. I will use it from now on. Btw. I didnt wanna flood the ticket system (if there is one set u for this already) so i posted the bugs here, else I d have to create like 30 now. Reminds me of my internship. *shudders*. But I could do that as well ,if you like it Kulik.

Re: CEToolset

Posted: Sat Apr 09, 2011 21:09
by Kulik
Few months later I might have something to show off :wink:

I renamed the thing to CEED, CEGUI EDitor. It's a just codename and a sucky one at that...
The imageset editing is usable but resizing is a bit flaky at the moment (you can only resize via keyboard - SHIFT+WSAD). The layout editor is just some test code that doesn't really do anything productive yet.

I plan to provide installers for Windows but the editor works fine on Linux as well (and I hope/think MacOSX should work as well but have no hardware to test on).

If you have any suggestions, share them :-)

Re: CEToolset

Posted: Sun Apr 10, 2011 19:37
by Jabberwocky
Cool! It looks like a polished editor layout, and it's really nice to have both layout and imageset editing all in one place.

Re: CEToolset

Posted: Mon Apr 11, 2011 14:39
by Kulik
Jabberwocky: Yeah and it will do much more :D It's quite an ambitious project...

btw: I definitely DO accept small patches/contribs so if anyone is interested in helping, contact me.

Re: CEED - CEGUI Unified Editor

Posted: Mon Apr 11, 2011 19:50
by Mikademus
Impressive indeed! I *very* much enjoyed seeing the section of the skin layout with guidelines and name tooltips.

Re: CEED - CEGUI Unified Editor

Posted: Wed Apr 13, 2011 14:56
by IrmatDen
It's Looking great, nice job Kulik :)
Also, I love your splash screen :D

Re: CEED - CEGUI Unified Editor

Posted: Thu Apr 14, 2011 07:18
by CrazyEddie
I have (finally!) gotten around to creating a dedicated forum for CEED. I will link that here: viewforum.php?f=15 though I also propose that this topic now be moved there to keep things organised :)