This post is a detailed view of the my first GSOC process. I don’t post entries to the blogs often, so the ones I post are generally long posts. One of the reasons of the opening this blog was to provide information for the new contributors(like me). For better transition to being productive. I did a lot of small mistakes which are blocking the development. I thought telling these mistakes or some challenges to the others should be useful. I will publish them later. So anyway get ready to a long post.
I was hoping to get a boost on development and better understanding the LibreOffice Code when I first applied to the GSOC. I wasn’t have a great experience on coding. Most of the work I did before was some School projects. Biggest one was implementing a graph algorithms visualizer with Python. So we can say I am not experienced at all.
Because of my lack of experience I wasn’t very productive during the project. Half of my time spent on learning things and the other half spent on implementing the things I learned. I was a learner mostly. It was enough for me to finishing the main goals of the project. I did lots of things first time in my life. I used a profiler first time, which is a cool thing in my friend group. 🙂 Lots of things like that. So my personal goal is accomplished somehow. I get a great boost for understanding the code. 🙂
That’s enough trash talk I think. Let’s talk about the project. 🙂
First, screenshots(because we love screenshots , aren’t we all?):
The page is now handles about 25K lines of options. It shows all of them and edits them back. Libreoffice has a about:config utility as expected from the GSOC project. Yes it is working but it is not in enough quality I think. At least not enough for me. I will continue to work especially on this page.
Current situation with technical details.
- Page is currently a tab page.(SfxTabPage)
- Takes the options using UNO API with a recursive function. Basically it is a tree traversal algorithm.(it is named preorder depth-first traversal as I remember)
- Uses “OptHeaderTabListBox” for showing the options. It is basically a “SvSimpleTable”.
- Edit button opens a new dialog(value dialog) and checks the given string according to the type of the option. If it is correct stores it in a vector for saving it later.
- value dialog handles list types as comma separated string.(i.e if list is has “0,1,2”, it will show them to you as “0,1,2,”. Expects new value as same format.)
- boolean types are toggled with edit button no new dialog opens.
- If you try to enter a string instead of a integer type(short,long,hyper) you simply cannot. It controls the key inputs for integer types.
- If you write a number which exceeds the range of the number it is controlled for integers. But if you do this for float,double or in a list type the value will be 0. Need some work on there a little more.
- Page loads about 6 seconds. It was 20 minutes on first working load. Still not perfect but I can definitely say better :).
- Page don’t have a filterbar yet. Which is important when you talk about 25K lines of options.
- Page has visual problems. Values are so long, tab page is not enough for that long. Thinking to move it as a Dialog to advanced page.
- There is a default button which doesn’t work for now.
- Value dialog has a custom edit widget. I planned to use a custom multi edit but couldn’t make it work. So for the time being I used a custom edit.
So yes, It works but also need more work for quality. Which I plan to make the page better in following weeks.
Thats it for now.
Yazı çok uzun. Daha sonra ayrı bir girdi olarak göndereceğim. İngilizcesinden takip etmeye çalışabilirsiniz şimdilik. 🙂