- Name: Manuel A. Fernandez Montecelo
- E-mail/GoogleTalk: manuel.montezelo
- IRC nickname (freenode network): mafm
- SourceForge username: mafm
GSoC (Google Summer of Code) 2008
- Project: OpenGL GUI Framework
- Example for interaction: http://brlcad.org/design/gui/ioe_proto_final.mov , recommended by Sean
- Another example in the form of a real program: wmii (Plan9 window manager) ( http://www.suckless.org/wiki/wmii ), recommended by Sean
Milestones include (maybe some of them to be added or removed, to be discussed with the mentors and the community in general):
- Get logging working
- Get console working
- Being able to communicate with the back-end
- Displaying geometries
- Displaying various representations (wireframe, polygonal, etc)
- Rotating and positioning
- Input support (trackball, shift-grips)
- Clean cross-platform build system integration
- Usability enhancements to CommandOverlay and Console, such as sharing history and commands of CommandOverlay being reflected in the Console panel. Screenshot:
- Working on the implementation and redesign of many things in the GUI front (see screenshot for visual reference: ):
- New Window Manager class, to act as high level decision-maker about layout; and things like taking into account created windows (and deciding which ones to show in taskbar), so I think that "assimilates" the Taskbar class too, and thus I removed it as separate class.
- New panel in the top, which will be used for context operations, setting fullscreen modes and things like that.
- Created new Command Overlay, separated from Console (but probably would collaborate and share a common history, etc)
- Working "toggle Fullscreen" functionality
- Making Application and GuiWindowManager classes a Singleton, so they can be accessed from elsewhere without having to pass pointers around all the time (it's needed for the "toggle fullscreen" functionality, in example).
- Watching again the video about "ideal interaction", for inspiration and to create a list of ideas to implement. I would like to have a chat about this though, to see the differences that we need to apply to our program.
- Starting to implement a taskbar, to mimic the interaction shown with the video. Screenshot:
- Finished commiting OGRE (lots of hours spent seeking mime-types to meet SVN hooks' requirements), and also commiting Mocha and RBGui and brief, rudimentary building instructions.
- Starting to commit 3rd party libraries needed for all this to work: OGRE and OIS. Only OIS could be commited, at last.
- Sidetracked by work and bureaucracy, couldn't do almost anything.
- Preparing and uploading RBGui files (theme, shaders, images, fonts), OGRE config files are to be generated on the fly (they contain paths depending on installation options).
- Getting the current code to compile with CMake in a clean fashion (without hardcoded system, in example). I think that it's a good base and a very important step.
- Take wmii (Plan9 window manager) ( http://www.suckless.org/wiki/wmii ) as a guide when designing the console (recommended by Sean)
- Trying to get the project to build with CMake
- Creating Logging functionality.
- Starting to look into putting data files in place, creating a proper build system and all that.
- Looking into ideas to implement the User Interface.
- More work in the Console, getting lines to wrap instead of being cut; and fixing RBGui (with several hours of reasearch involved) so autorepeat does use an initial delay and you can actually write individual characters (instead of 'aaaaaaaa' when you press the key for only 200ms). See the screenshot of the day:
- A bit of work reorganizing code, making Doxygen documentation, removing leaks (even if the objects only are to be removed when the application closes anyway) and the like.
- I wrote to RBGui guys to know if they're interested in patches to support at least my platform (Debian GNU/Linux, amd64 -- but at least Linux and POSIX systems by extension) instead of having to maintain private patches.
- I need ideas and directions about what things to implement (e.g. how to implement console window, if I should use logging from libbu or making my own method, for a start).
- Today I continued working in the Console, now at least the history functionality and the way to create and position windows it is basically stable (can be changed easily, but I mean that it's not a hack-ish/example-ish application). Screenshot:
- OIS (the input library) is giving problems with auto-repeat, a problem that already had several years ago: it disables auto-repeat from X, so the rest of the applications in that DISPLAY that capability, and if the application crashes before OIS restores it, you have to reset it by hand. This looks unacceptable to me, but I haven't devised any solution yet.
- Mostly working in the Console window & functionality, still quite a lot of work to be finished.
- Still working in the example application, but now it looks much better -- documented, code style, reorganizing things, making cursor visible (wasn't there in the POSIX version at least)... Screenshot:
- Getting RBGui sample application to work, reading "administrative" information of rt^3 module and in general preparing for submitting the code.
- Commiting first patches, it's basically the example application coming with RBGui.
- Patching and recompiling other branches needed of some of the components, RBGui doesn't work with the most recent stable versions of OGRE right away.
- Investigating a bit about other GUIs, updates on the considered GUIs, etc; with no interesting results: things are basically the same as when making the application.
- Compiling OGRE and OIS (input system, needed for most applications using OGRE), since latest stable versions are not available in Debian. No big hassles.
- Compiling Mocha, a library needed by RBGui with misc utilities (3D math and the like) -- found a source RPM with minor patches for GNU/Linux systems, again no big problems.
- Compiling RBGui... this one is not so easy. Some CMake config files have to be modified, at least for my 64 bit system; and it's not in sync with OGRE (it seems to use some special function) so it doesn't compile successfully, yet.
- Thought: I'm starting to be a bit worried about RBGui... by the time of the application they had very recent releases adding support for [at least] GNU/Linux systems, apart from Windows. Now, even if there seems to be people porting it to MacOS X too, the developers seem are mostly silent and inactive. In general, it seems that this complicates the ease of installation for BRL-CAD users, and thus RBGui seems less convenient now than a while ago...
- Misc. preparations: compiling up-to-date BRL-CAD, re-enabling subscriptions to mailing lists, and checking the tools to use (OGRE, RBGui). Not a very productive day, but not so bad to be the 1st day after weeks of overworking and travelling... and at least it's a start!
- Back to Lisbon, at last. Hopefully tomorrow I'll start coding!
- SoC program starts :)
- Due to some personal problems and exam dates (as already noted when submitting the application) I couldn't start coding or submitting patches to get commit access, note sure if I'll be able to start before June 5th or so.