Editing User:Vladbogolin/GSoC2013/Logs

From BRL-CAD

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 211: Line 211:
 
*'''Conclusion''':
 
*'''Conclusion''':
 
**Good week in which the embedding problem was solved.
 
**Good week in which the embedding problem was solved.
 
==Week 7 (29 July - 4 August) ==
 
*'''Weekly milestones''':
 
**Finish drawing.
 
**Start working at mouse integration.
 
*29 July 2013:
 
**Submitted the evaluation form on melange.
 
**A little break
 
*30 July 2013:
 
**Implemented the qt_loadMatrix, qt_setWinBounds and qt_drawVList function.
 
**The display manager is able to display more complex objects:
 
[[File:Sph.png|500px]]
 
[[File:Tor.png|500px]]
 
*31 July 2013:
 
**Struggled with mouse integration.
 
**The problem is that Qt receives the events but the Tk window does not so I tried to make Qt pass the events to Tk but I have been unsuccessful for the moment.
 
*1 August 2013:
 
**Continued to find a way to send Tk events from Qt. Still I was unsuccessful.
 
*2 August 2013:
 
**Break day
 
*3 August 2013:
 
**Tried sending events using the XSendEvent function but there still are things that I need to figure out.
 
*4 August 2013:
 
**Managed to send events to the Tk window using Tcl_Eval function. I still have a problem  because the events are not processed when they are sent but they are processed later.
 
*'''Conclusion''':
 
**At the end of this week more complex objects can be drawn in the qt window.
 
**Also I have made progress in integrating the mouse between Qt and Tk.
 
 
==Week 8 (5 August - 11 August)==
 
*'''Weekly milestone''':
 
**Finish the keyboard and mouse integration
 
*5 August:
 
**Struggled with locale settings and after an IRC discussion found a solution.
 
**Committed the changes I've made during the last days regarding mouse integration.
 
**Almost finished the mouse integration: the content resizes when pressing mouse buttons:
 
[[File:Tor1.png|500px]][[File:Tor2.png|500px]]
 
*6 August 2013:
 
**Dealt with Control+LeftMouseButton binding: I successfully managed to rotate the object but I still have some problems because since it starts rotating it never stops:
 
[[File:Rotate1.png|500px]][[File:Rotate2.png|500px]]
 
*7 August 2013:
 
**Break day
 
*8 August 2013:
 
**Solved the rotation problem
 
**Read about keyboard events
 
*9 August 2013:
 
**Integrated keyboard events:
 
[[File:Keyboard.png|500px]][[File:Keyboard2.png|500px]]
 
*10 August 2013:
 
**Break day
 
*11 August 2013:
 
**Searched for a more generic way of dealing with events. I've got a couple of ideas that will ease adding new key bindings to the display manager.
 
**Did some more testing to see if everything behaves as expected.
 
*'''Conclusion''':
 
**Good week in which I've almost finished dealing with keyboard and mouse integration.
 
**As I am a bit ahead of schedule I'll focus on testing in the next couple of days.
 
 
==Week 9 (12 August - 19 August)==
 
*'''Weekly milestone''':
 
**Finish the keyboard and mouse integration
 
*12 August 2013:
 
**Some more testing: found a problem when pressing control+mouse button: at the first move the object jumps in a new position then moves as expected.
 
*13 August 2013:
 
**Studied archer code to see how the new display manager can be integrated.
 
*14 August 2013:
 
**Break day
 
*15 August 2013:
 
**Continued to see how archer works and how can I integrate the new display manager.
 
*16 August 2013:
 
**Break day
 
*17 August 2013:
 
**Break day
 
**I had a small holiday and from tomorrow I'll get back to work.
 
*18 August 2013:
 
**Back to work so I continued searching for a way to integrate the new display manager in archer.
 
*'''Conclusion''':
 
**The display manager is taking shape after the mouse and the keyboard integration are complete.
 
 
==Week 10 (19 August - 25 August)==
 
*'''Weekly milestones''':
 
**Test the display manager
 
**Solve any issues that might appear
 
**Research embedding a framebuffer window functionality
 
*19 August 2013:
 
**Found a issue regarding starting the display manager without a database: the background colour is not set.
 
**Added the option to select the Qt display manager from Modes>Display Manager in mged's menu:
 
[[File:Mged1.png|500px]]
 
*20 August 2013:
 
**Solved the issue regarding opening the display manager without a database: the problem was that after setting the background colour (in drawend) the UpdateRequest event is invoked, but it takes effect just if the window is exposed. Without processing other events the window wasn't exposed so the behaviour wasn't the expected one.
 
**Continued searching a way to integrate the display manager in archer: I've managed to add a Modes>Display Manager option but now I have to see how I can add the appropriate behaviour.
 
*21 August 2013:
 
**Studied more archer code: found some keypoints in libtclcad that I will focus on tomorrow.
 
**Searched about how framebuffer windows are embedded in current dms.
 
**Tested the Qt display manager in mged.
 
*22 August 2013:
 
**Got the first object drawn in archer. However after discussing with my mentor and testing on another platform I get a segfault.
 
**Solved some sanity checks regarding calling drawVList before drawBegin or if some error occurs.
 
*23 August 2013:
 
**Tested a solution for the segfault from yesterday.
 
**Found a solution to bound: invalid bounds. This occurred because Qt sets different locale so that comma is used for decimal separator.
 
*24 August 2013:
 
**Break day
 
*25 August 2013:
 
**Drawing in archer with segfault solved.
 
**Tried to find a way to hook the Modes->Display Manager to actually selecting a new display manager. Haven't managed yet.
 
*'''Conclusion''':
 
**Even though I changed a little bit the weekly milestones I managed to get drawings displayed in archer. Still there are some things that need to be solved (event processing in archer) but at the moment the display manager can be used in both mged and archer.
 
 
==Week 11 (26 August - 1 September)==
 
*'''Weekly milestone''':
 
**Finish the archer integration.
 
**Start working at framebuffer window embedding.
 
*26 August 2013:
 
**Tried do solve the event problem that still occurs when using the dm in archer.
 
*27 August 2013:
 
**Continued struggling with linking the menu item with the actual code.
 
*28 August 2013:
 
**Searched for actual framebuffer window embedding and tried to find all relevant paths.
 
*29 August 2013:
 
**Break day
 
*30 August 2013:
 
**Continued the research in the both aspects: archer and framebuffer window.
 
**Being one of the most unclear parts of the project, embedding a framebuffer window needs a lot of research.
 
*31 August 2013:
 
**Continued the quest to find useful code sections.
 
*1 September 2013:
 
**Made some testing in archer to see if objects are displayed well. Everything seems to work except the event processing which is only done when drawing.
 
**Unfortunately I haven't found archers event processing code section.
 
*'''Conclusion''':
 
**The archer integration is 90% done.
 
**I have studied and tried to came up with a solution for framebuffer window embedding.
 
 
==Week 12 (2 September - 8 September)==
 
*'''Weekly milestone''':
 
**Finish archer integration.
 
**Testing and fixing other issues.
 
*2 September 2013:
 
**Fix one issue regarding object rotation. The event was generated without initial coordinates so that the object first jumped in a position the started to rotate correctly.
 
**Modified the event processing so that new bindings can be easily added: just add a function that from the Qt event generates the corresponding Tk one.
 
*3 September 2013:
 
**Fixed a locale issue: even though it was set in mged.c there still were some problems so I've set the locale to POSIX in dm-qt.cpp. Now everything seems to work fine.
 
**Tried to process events in archer. I've made some progress in order to process events correctly.
 
*4 September 2013:
 
**Break day
 
*5 September 2013:
 
**Researched a strange behavior while running archer: at startup there are no drawing functions called but when trying with a different dm the functions are called. Probably this is due to lack of event processing.
 
*6 September 2013:
 
**Tried to solve the issue reported yesterday. I hope by the end of this week the new display manager would be able to run in archer perfectly.
 
*7 September 2013:
 
**Almost finished the event processing for archer. Just some small changes are needed.
 
*8 September 2013:
 
**Finished the archer integration.
 
**Studied existing frambuffer interface so that I can start implementing a Qt framebuffer.
 
*'''Conclusion''':
 
**Archer integration is done.
 
 
==Week 13 (9 September - 15 September)==
 
*'''Weekly milestone''':
 
**Testing
 
*9 September 2013:
 
**Did some testing and I found out that the selection tool in archer and the measure tool do not work correctly so I investigated the behavior: turns out the tk click events generated do not had mouse position infos.
 
**There still is a problem with the measuring tool: after showing the distance and drawing the line, it draws multiple other lines
 
*10 September 2013:
 
**Fixed some memory leaks and did some testing.
 
*11 September 2013:
 
**Rewritten the event integration using Tcl_CreateEventSource so that QApplication::processEvents is called every time Tcl_DoOneEvent is called and no additional calls have to be made.
 
*12 September 2013:
 
**Simulated the non-blocking processing events using Tcl_DoWhenIdle and Tcl_CreateTimerHandler so that the actual archer/mged/bwish code shouldn't be modified at all.
 
*13 September 2013:
 
**Made some fixes and added comments.
 
**Investigated the closing segfault but I haven't been able to solve it yet.
 
*14 September 2013:
 
**Mostly a break day but I've continued working to the segfault reported yesterday. Still no luck.
 
*15 September 2013:
 
**Added Qt to cmake report.
 
**Made some cleanups since after the past days changing there were some things that were not needed anymore.
 
**Added some comments.
 
*'''Conclusion''':
 
**The display manager is mostly done and working.
 
 
==Week 14 (16 September - 22 September)==
 
*Weekly milestone:
 
**More testing and other fixes.
 
**Start implementing the Qt framebuffer.
 
*16 September 2013:
 
**Started working on the qt framebuffer interface.
 
*17 September 2013:
 
**Continued researching the closing segfault.
 
**Researched the existing framebuffer interfaces and how are they integrated.
 
*18 September 2013:
 
**Tried to solve the segfault: gdb + searches in libx and qt code.
 
*19 September 2013:
 
**More attempts to solve the segfault.
 
*20 September 2013:
 
**Mostly a break day.
 
*21 September 2013:
 
**Added new events
 
**Small fixes + comments
 
**Started working on project summary.
 
*22 September 2013:
 
**Cleanups
 
*'''Conclusion''':
 
**Everything seems to work fine.
 
 
==Week 15==
 
*23 September 2013:
 
**Tried more approaches to solve the segfault.
 
*24 September 2013:
 
**Completed final evaluation.
 
 
=Project summary=
 
[http://brlcad.org/wiki/User:Vladbogolin/GSoC2013/qt-display-manager The project summary can be found here]
 

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)