Skip to main content

Overview and final looks at RTL GUI

This past week, I spent the majority of my time polishing the GUI, adjusting spacing and padding so that it matches the original (LTR) GUI well, solved my PR review issues, cleaning up my history.

I have to say, I did not know before how important and time-consuming polishing things take in the context of GUI. I solve one thing, there's a new thing discovered and needed to solve, a new bug discovered and so on.

One example, a bug, for which I was a little confused:
I implemented a way to fetch an "RTL" boolean flag from the theme. If this is true and GUI is also using RTL, the widget will be flipped.
One of my mentors has a Mac, and I was surprised to see my implementation did not work on their system. I didn't know what was causing the issue, but my mentor found the root of it. It was because the RTL flag of the object was uninitialized, which caused the issue. I use windows and MSVC - and my environment didn't have a problem with it.

The problem quickly went away when I initialized the flag in the constructor(s).

Below are a bunch of Hebrew (Hebrew is an RTL language) specific screenshots, so you can have a look at how an RTL GUI would look in the final merged build. (Also how well it complements the language!)



Above - MIDI Tab (Hebrew, RTL GUI)

Above - MIDI Tab (English, LTR GUI)



Did you notice how the Hebrew language in GUI also has some English mixed in it? Before I started my work in May, a few people in the community had begun in implementing FriBiDi ("GNU FriBidi is an implementation of the Unicode Bidirectional Algorithm (bidi)"), which basically adjusts the text to be a combination of LTR+RTL languages. I don't know much about other languages, but I'm guessing that certain words lose meaning (and maybe context?) when translated. So, certain words, are kept as-is (in English) when they're translated to other languages. (I might be wrong about this)

For example,
LTR -> "GUI language:" [Image on right]
RTL -> ":GUI שפה"         [Image on left]


The box highlighted in blue is the ones I've written in the example above. It is just one example, but you can see a good example of how it looks. This, combined with RTL GUI should give native RTL users a very homely feeling!

I feel happy, that the current version of the RTL based GUI looks very neat and clean. I cannot wait for the native RTL users to try out this RTL based GUI, and get feedback!

Lastly, I will start my work on "Moving GUI to U32 String" from today. More about this next week, when I get my hands on and try to figure out a way to get started with this task!



Thanks for reading!

Comments

Popular posts from this blog

The (official) end of an amazing journey!

 Hello! GSoC has officially ended, and I'm in the final stage - submitting my work for the entire summer to Google! When I first received the acceptance letter in May, I was very much baffled. It was exciting and a bit scary at the same time, because I have never ever worked on a project of this scale. Well, first time for everything I guess :) So, what have I been doing this past week? Last week I left off saying my U32 PR was showing some activity, and this week, @criezy helped out a lot by reviewing my U32 PR, and providing much feedback. He also helped out pretty much entirely towards the MacOS/iOS platforms, because it was quite not an area (Objective-C) I was comfortable in. It was really a huge help. Apart from that, I mostly spent the entire week looking at the PR to see what could be changed, fixing my mistakes, and making the PR ready for merge. It has improved quite a lot!  Criezy pushed an update for iOS, which led me to believe that there might be many more missin...

ScummVM translation files

This week there was slow progress on my task. I was also doing some miscellaneous things that related to my task. The very first thing I want to say:  My RTL-GUI PR has been merged into the master branch of ScummVM! Hooray! Since the previous work was also related to GUI, I had to rebase my branch to even out with master and merge the RTL-GUI work into my own. There were many merge conflicts, but I was able to solve them all! Now that I think about it, merge conflicts are not as scary as I thought they were before. They are pretty simple! I've set up Travis-CI to build my branch. I did this because continuous building on my machine was very slow, and with Travis, it is very easy to catch up on errors, correct them, and so on. After rewriting history several times, I was able to solve all errors (~50) that didn't appear on my local machine. I use MSVC, so many instances of errors don't appear on my machine - even though it builds and runs completely fine. This week,...

Some exciting progress to share, some new things to do!

Hello! Some very nice progress this week I can't wait to tell you about. Let's just jump right into it! So, last week I shared that even though I had something cooked up that was somewhat correct, it wouldn't really be suitable as a proper solution. I also discussed briefly on what was the approach I was taking on next. Because the new work would require cleaning up a lot, I just set up a new branch and cherry-picked some of the commits that would be relevant. The plan did work out, and after laying out the brief structure I explained last week, some engines started to show life again. For some engines, the story was a little different though.. but we'll get to that next week because these might not be final, and I used my best judgment for them. Once the few engines were working well, I got started with porting all the engines over, and this week - I managed to convert them all to the new infrastructure! 79 engines in total, including the ones that are unstable! A very...