In this post, I’ll go over everything I did in my first two weeks of GSoC.
Make GNOME Platform demos for Workbench
Sonny Piers, Andy Holmes
We first started out with a meeting to discuss a project plan, decide what needs to be done, and came up with a workflow that’ll work for everyone. Sonny made a Kanban board and filled it with some tickets to start us off. Our mentors briefly explained to us the functionality of some of the widgets and gave us an idea of what’s expected from the demos, so that we are not completely clueless when we start working on them. And when everyone is on the same page, we mark the ticket as “Ready” which means anyone is free to take up the ticket and start working on it. We also decided that we’ll have meetings weekly, to discuss the upcoming week’s work and also solve any issues or roadblocks that we may have come across along the way.
The first thing I did was finish one of my previously open pull requests which was a demo for AdwHeaderBar, a simple widget but a very commonly used one. The demo shows a header bar with a primary menu, a secondary “Open” menu, and a “New Tab” button similar to Text Editor.
The next demo I did was a pretty big one, it was WebKit’s WebView. WebView is a super cool widget, it lets you render webpages, HTML, or plain text and it powers apps such as Epiphany and Tangram. A problem I had while working on this one was that the upstream documentation wasn’t up to date, but Sonny discovered that you could still access the latest documentation using DevHelp. The demo currently only shows some basic signals and properties with some controls such as a URL bar, buttons for navigation, and buttons to reload and stop loading the webpage.
In another follow-up, we plan to add some more functionality to this demo such as showing how to communicate with the webpage.
In the next week, I worked on an “Advanced Buttons” demo which shows two different kinds of buttons. The first is AdwSplitButton which combines the functionality of a button and menu model, and the second one is not a complete widget on its own but it's pretty useful when used with other buttons which is AdwButtonContent. We already had a Button demo in the Library but we felt that this one couldn’t really fit in so we decided to separate it out into another demo.
Then I worked on the AdwTabView demo, which shows you how to create a basic tabbed layout using TabView along with other widgets such as AdwTabBar and AdwTabOverview.
With the addition of this demo, we decided to introduce a new section to the Library, the “Navigation” section which was pretty exciting.
The last one is a fun one which is AdwAnimation (WIP). The demo explains two ways to use Animation, first is using AdwAnimationTarget which simply animates a widget property and the second one is using AdwAnimationCallbackTarget which allows for more control over what can be animated. I had some difficulties trying to get a working demo for the latter one but I figured something out in the end. The demo also shows the difference between a TimedAnimation and a SpringAnimation.
That’s all for this one, I hope to keep contributing to Workbench and I’ll continue giving reports every two weeks (maybe).