Making a Rich GUI

As of now I’m programming an RPG with an Indie development group. I really would like another gui system other than DirectGUI. I’d really like something that is done via XML or possibly HTML. I was looking at the CEGUI patch for Panda3D but that would make distributing the application very tough.

I was also looking at FLTK, Clutter, librocket, QT, and wxWidgets.

Each one presented its own set of problems. FLTK means I have to embed the Panda3D window into a FLTK window, thus I can’t go fullscreen and it would probably look messy and poorly done. Clutter, I have no clue how to either overlay it in a Panda3D window or embed it in a Clutter window. librocket integration for Panda3D is C++ only, but I’m using Python… QT and wxWidgets are the same problem as FLTK.

Any suggestions? Possibly some code examples?

Please don’t tell me to just use DirectGUI, I can’t stand it.

Have you seen TreeGui: [[Alpha] TreeGUI)

Or you can always roll your own, of course, if you really hate DirectGui that much. People occasionally suggest a gui element here or there, e.g.: [Popup Menu & Drop-down Menu Bar)


I’m kind of just trying to get this done, I’d like something with more features than directgui, and something that uses 2D coordinates…

Something that I can more easily grid on to the screen, because eventually I’m going to have to develop a fairly complex GUI and I don’t want to bother developing my own GUI system out of DirectGUI, because theres just too much to be done.

I don’t want to tell you to “just use DirectGUI” :wink:, but it seems to be the only OOTB route in Panda right now. And I don’t think that’s gonna change in until Panda 2.0. It’s a similar situation to that with physics.

I haven’t tried TreeGUI, but everything aside of that seems half-baked at best. Or C++ only.

Besides, DirectGUI isn’t as bad as it seems at the first glance. It’s actually very powerful and flexible, once you get to know it. With a little training you can make almost everything using it, and there are even snippets that will make it easier (simply put – easy) for you to make windows, if you need that.

I’m using DirectGUI for my project, which contains a relatively complex interface. And while it surely isn’t as easy to maintain as an HTML/CSS based system would be, I really like the flexibility of it. And the 3D coordinates don’t hurt – using Vec3 instead of Vec2 affects only the code’s aesthetics, if anything.

Actually, I wonder what kind of features you’re missing in DirectGUI. Other than “it’s API could really be better” because everyone knows that ;D.

If you render the DirectGUI object to render 2D its acts just like a 2D object, I am pretty sure that you can ignore once of the (x,y,z) cords, its either y or z that you leave as 0.

My problem with it is I believe it correspond with the 3D coordinates of the world, so if the camera moves wouldn’t I have to change the GUI coordinates accordingly?

Regardless I don’t really like it. TreeGUI seems like a responsible solution, it has support for Python also, and it seems decent, however I’m going to have to write my own script for it.

I also think that it might be a good idea to use Clutter. Embed a Panda3D window into clutter, and then form the HUB around the game screen, and create windows(in clutter, not the OS’s window manager) that will display stats. I don’t know it this is possible, but I’m going to mess around with it. Does anybody have any guidance to using pyclutter and Panda3D together? I wouldn’t be using Clutter inside the Panda3D window, but rather embedding a Panda3D window in a Clutter window.

Of course not. Just try it. Simple.

Maybe you dont really need another GUI library

aspect2d is a separate render tree that is mapped to the screen area, not world space. 0,0 is center, -1,0 is far left, 0,1 is center top, etc. There is also one that uses pixel based coordinates, I think called pixel2d.