GSOC 2012 Ryzom GUI editor - weekly reports

Added by dfighter over 6 years ago

Status report 1

Completed work:
So far since before and during the bonding period, I've done the following
  • Refactored and extracted the CDB system
  • Refactored and extracted some of the input handling ( obviously the part that is needed for the GUI )
  • Started the work on refactoring the GUI widgets themselves, right now I am still working on resolving their dependencies so they can be extracted later.

Work that was planned but couldn't be completed:
-

Plan for the week:
  • Continue the work on refactoring the widgets ( hopefully I can get this all done this week )
  • Create the basic UI design for the OVQT GUI editor plugin
  • Create a skeleton for the OVQT GUI editor plugin

Replies (13)

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status Report 2

Completed work:
  • Created a skeleton for the OVQT GUI Editor plugin
  • Made lots of progress with refactoring the Ryzom GUI code
Work that was planned but couldn't be completed:
  • There was no time for the UI design of the plugin
  • Unfortunately the Ryzom GUI code is a lot more coupled than anticipated, so couldn't finish refactoring it.
    Just to give some idea of the coupling complexity we are talking about here:
Plan for the week:
  • Continue refactoring the GUI code: I will attempt to break CInterfaceManager ( a Singleton that handles lots of the GUI widget management code, among other things ) into more parts in order to be able to extract some basic GUI widgets that depend on it.

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status Report 3

Completed work:
  • Continued refactoring the GUI code
    • Created CWidgetManager, and moved tons of code into it from CInterfaceManager ( obviously only code that deals with the widgets )
    • Created CAHManager which is now responsible for instantiating and running action handlers.
    • Moved CViewRenderer to the GUI library.

Work that was planned but couldn't be completed:
-

Plan for the week:
  • Continue refactoring, hopefully by the end of this week I will finally get to move these "new" classes and the basic GUI widget to the library, but no promises.

For future reference, here's the repository I am working with: https://bitbucket.org/dfighter1985/ryzom-fork/changesets

Also this month as I mentioned in my proposal, I will have exams, however with careful time management, they should not interfere with my GSOC progress.

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status Report 4

Completed Work:
  • Finally after lots of refactoring I got around to move the first widget classes, with their manager classes to the library!
    • CWidgetManager
    • CAHManager
    • CInterfaceElement
    • CViewBase
    • CCtrlBase
    • CInterfaceGroup
    • CGroupFrame
    • CGroupModal
  • Additional classes moved
    • CInterfaceLink
    • CInterfaceOptions

Work that was planned, but couldn't be completed:
-

Plan for the week:
  • Continue refactoring, and start moving the classes that are based on these widget base classes.

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status report 5

Completed Work
Unfortunately some due to some unforeseen school tasks I had to do ( lab exercises that I had to do due to missing them earlier ),
I had little time the last week and it messed up my schedule big time.

However I could still get some things done over the weekend.
Refactored and moved the following classes to the NELGUI library:
  • CCtrlBaseButton
  • CCtrlButton
  • CCtrlScroll
  • CCtrlQuad
  • CCtrlPolygon
  • CCtrlColPick
  • CCtrlTooltip
  • CViewQuad
  • CViewPolygon
  • CViewText
  • CGroupWheel

Work that was planned, but couldn't be completed
-

Plan for the week
Continue the refactoring work relentlessly.

However due to my messed up schedule, I will not be able to work as much as before this week either.
Of course I will be able to catch up once my exams are done ( end of June ), with working more every day and working on weekends too.

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status Report 6

Completed Work
As with last week I only had limited time to work, however I think I still managed to get quite some work done
Refactored and moved the following classes to the GUI library:
  • CViewTextID
  • CViewTextFormated ( not a typo, it's written like this )
  • CViewTextIDFormated ( also not a typo )
  • CCtrlTextButton
  • CViewBitmap
  • CViewBitmapCombo
  • CGroupTree
  • CGroupList
  • CGroupEditBox
  • CGroupContainer
  • CGroupScrollText
  • CViewTextMenu
  • CGroupTab
  • CGroupHeader
  • CDBViewBar
  • CDBViewBar3

Work that was planned, but couldn't be completed
-

Plan for the week
This is the last week of my exam period, so from Thursday I will be able to focus more.
This week I plan on continuing to refactor, and maybe start with the actual GUI editor even without having the library done ( it obviously has parts that can be worked on without the library being finished ), as my mentor is starting to be a little bit impatient and pushy :P ( Although I don't at all mind this )

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status report 7

Completed Work
Refactored and moved the following classes to the GUI library:
  • CDBViewDigit
  • CDBViewNumber
  • CDBViewQuantity
  • CDBGroupSelectNumber
  • CDBGroupComboBox
  • CGroupTable
  • CGroupCell
  • CGroupHTML ( This also involved moving some libwww adapter code )
  • CGroupParagraph
  • CViewLink
  • CInterfaceTrack
  • CInterfaceAnim
  • CViewPointer ( broke this up into two classes, the CViewPointerRyzom subclass implements the game related special pointers )

Also moved some very basic interface expression function handlers to the GUI library.
These are basically the handlers that implement the interface link expressions in the GUI XMLs, like div, mul, ifthenelse, abs, add, sub, etc.

Also I am not 100% sure yet, however it seems that I've successfully moved all the non-game related GUI widget classes, so now just have to finish refactoring the parser, and refactor and move the code that actually draws the widgets from CInterfaceManager.
So fairly soon a huge milestone is going to be hit :)

Work that was planned, but couldn't be completed
I planned to start building the GUI editor itself, but sadly didn't get time to do so.

Plan for the week
First of all I will have to merge the mainline changes since by now I am very much out of sync, then I can merge the GUI changes into the GUI editor's branch and start working on it. At the very least I'd like to build the GUI widget definition XML parser code ( this is which conveys the available GUI widgets to the editor ).
I will also continue my refactoring efforts with the GUI library, I'd like to move the remaining action handlers to the library for example.

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status Report 8

Completed work
  • Created the GUI for the GUI Editor. Altough for now it's just an empty shell mostly. See this video http://www.youtube.com/watch?v=MbHHKlD5JSU
  • Wrote the widget definition parser code, including widget definition inheritance support. ( can be seen in action at 0:39 in the video above )
  • Continued refactoring and finally got to refactor the parser code too! Also to demonstrate the progress I've made so far, I've had Visual Studio auto-generate a class diagram about the GUI library: http://dev.ryzom.com/attachments/download/1543/ClassDiagram1.png

Work that was planned, but couldn't be completed
-

Plan for the week
Continue the refactoring effort, it's time to start to refactor the code that actually draws the widgets

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status Report 9

Completed Work
Finally I seem to have finished the GUI library!
Tested it outside of the Ryzom client, and it seems to be working, at least it can parse the GUI XML files.
Also did some minor refactoring and commenting.

Work that was planned but couldn't be completed
-

Plan for the week
It's time to start serious work on the editor itself!

First of all, I will need to write the code to parse the project files, so that I can load GUI XMLs and parse those.
Secondly since those XML files can be parsed now, I can fill up the GUI hierarchy widget with real data!
Finally I'd like to build the central widget of the editor, that is where the GUI library can draw, and where those widgets will be managed.
Obviously I can't finish it during this week, but it would be nice to at least be able to draw the GUI into it by the end of the week.

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status report 10

Completed Work
  • Created project file parser, and a sample project file that loads the Ryzom login interface
  • Implemented a project file window, which contains the project files. New files can be added, and/or old ones removed.
  • Implemented (mostly) the GUI hierarchy widget,
    when a project is loaded and the GUI files are parsed, it's filled up with the hierarchy. Also with
    double clicking a widget can be selected.
  • Started work on the central widget, it can render the GUI (although due to library limitations not perfectly), and also select buttons with a simple click, which are highlighted when selected.

Here's a video to show all the progress this week:
http://www.youtube.com/watch?v=JOBgofSEeIU&hd=1

Work that was planned but couldn't be completed
-

Plan for the week
I'd like to implement the proc, action, and link editors, and also implement the widget properties widget.
If time allows I'd like to continue working on the central widget ( to be honest it's more like work on the library, since that is what actually renders the contents ) which is essential since most of the work will be done here in the editor.

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status report 11

Completed Work

Work that was planned but couldn't be completed

I was unable to finish the widget properties widget, because it's more work ( and more mind numbing ) than anticipated.
Still need to write XML definition files, and implement the property query/change code, and also make the widget itself function
as an editor, not just a viewer.

Plan for the week

I will continue working on the widget property widget, and if there's time I will start writing the widget serialization code.

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status Report 12

Completed work

  • Finished implementing property querying for the widgets
  • Started implementing property setting, the widget properties widget can now set lots of properties
    A little teaser about what can already be done with these:
    http://www.youtube.com/watch?v=udva8R7Rmyc

Work that was planned but couldn't be completed

  • Couldn't implement all property setting methods yet.
  • This also means I couldn't even start working on widget serialization.

Plan for the week

  • Finish property setting and start working on widget serialization code.

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status Report 13

Completed Work

  • Finished property setting
  • Widget serialization code is mostly done

Work that was planned but couldn't be completed

-

Plan for the week

  • Finish the widget serialization code ( it's about a day's work ).
  • Add link, gui process, action handler, options, etc serialization code
  • Some bug fixes ( like right now there are widgets serialized that shouldn't be.
    It's because some widgets are added by other widgets and these end up being duplicates ).
  • Documentation!

RE: GSOC 2012 Ryzom GUI editor - weekly reports - Added by dfighter about 6 years ago

Status Report 14

Completed Work

  • Finished widget serialization
  • Added code for link, gui proc, action handler, options, tree, etc serialization so the serialized GUI can be used in the client
  • Keys are now parsed and serialized
  • Pointer is parsed and serialized even if it cannot be instantiated in the editor
  • Action handlers are cached separately, so that they can be edited and serialized even if they are not instantiated in the editor.
  • Fixed up the CMake project file for the editor, so that it can link fine now, without having to manually add the libraries

Work that was planned but couldn't be completed

  • Documentation will have to be created outside of GSOC

(1-13/13)