Hi! Since it's the first time I'm posting here, my name is Felipe. I'm a Blender user for years, and as a software developer I see a lot of posts asking about which one is the GUI toolkit used by Blender. The answer is that it is a embed library (very integrated with the rest of the program), and it is hard to use as a stand-alone.
Well, I'm working on a personal project, and a need to create a custom toolkit has emerged (I was using Gtk+, but it was useless at such point, since integrate Gtk+ with OpenGL is very wearing), and maybe this toolkit could be used in the future of Blender. I'm creating a GUI toolkit in C with a simple system of class hierarchy for the widgets. It is very easy to create new classes of widgets. For now, I have only 4 widget classes, but my plan is to create equivalent classes to those of Gtk+. I'm using SDL2 for inputs and drawing. The widgets are drawn using the SDL_Texture, and I will put support to OpenGL widgets (just converting the SDL_Texture of an widget to a OpenGL rendering and then back to SDL_Texture). I'm not even using the hardware accelerated option of SDL2, and the drawing is surprisingly fast. screenshots: https://lh5.googleusercontent.com/-3vTAPZlQpGY/Upr1izkbv2I/AAAAAAAAAE8/h-Cy7ibJYCQ/s1055/Screen001.png https://lh3.googleusercontent.com/-cANZBgd_5EQ/Upr1i_UhjmI/AAAAAAAAAFA/rd5_kf-Mmc8/s1055/Screen002.png In this second screen, the window has two "client widgets", that are top-level widgets. The top widget will be drawn above the others and a shadow/hatch effect will be drawn behind to indicate that we are dealing with a widget that acts has a modal window. And here is the code that takes to create this window and widgets: https://lh3.googleusercontent.com/-3jrwV6dYbFk/Upr57CyQ1TI/AAAAAAAAAFQ/mgMQ_oBAlj0/s800/Screen003.png It is very simple. To create new classes of widget, you just need to create an allocation function and register it in the class manager. To create new properties just need to use a function Widget_AddInt(), Widget_AddBool(), Widget_AddPointer()... and so on. The same is to set or get a value. Well, it is just it for now, I think that a stand-alone gui toolkit could give to the developers more flexibility over the interface, but I know that it would be something very arduous to change, so I'm just exposing a suggestion. I will keep working on this toolkit because I need it, but if anyone show interest, I plan to put it on git as GPL or LGPL when it becomes more usable. -- - Felipe Ferreira da Silva _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
