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!


Popular posts from this blog

I got accepted into GSoC!

Hello World GSoC!A start of a wonderful journey, and I'm a part of it! I'm pleased to announce that my proposal has been accepted to GSoC 2020! 
From coding "Hello World", to making small projects, to being a part of ScummVM's GSoC student is fascinating. You know, honestly speaking, I didn't think I would make it. I started my GSoC proposal late, around 19th March. I sent in the first mail to my potential mentor then - and crafting a great proposal usually takes many days. Regardless of the proximity to the deadline, I worked as hard as I could to make a decent proposal, and on 4th May - that hard-work reflected an essential part of my life!
This is my first ever professional experience, and things look a little scary but I have fantastic mentors. Eugene "sev" Sandulenko - the current project lead of ScummVM & John "DJWillis" Willis - team member of ScummVM since 2006. In fact, they're so qualified that it's almost overwhelming! …

My first week experience and my first task!

Hello, it's nice to talk to you again! This is my first week after being accepted into ScummVM and I have a lot to talk about, so let's get started. A little sidenote - Originally, I thought to update my blog once every two weeks and that it would be a good idea, but I just really wanted to update you guys with my exciting first week! 
I was reading my fellow GSoC student's introductory blog post when I realized that the introductory blog post is also meant to introduce a person, something I completely forgot in my first post.
Yes, that's right, I forgot to introduce myself - in my introductory blog post. You read that right - but I hope that you didn't find it rude, I was just really excited to be a part of ScummVM for this summer, and somehow forgot what I was supposed to write! Let's do it right this time before we move on to my first week's experience!

Introduction Hiya! I am Aryan Rawlani, a Computer Science student in Ahmedabad, India. I am 19 years o…

Official coding starts, my first task - polished!

Hello again, it's been a while!

The last time I wrote this, I felt like I was getting pretty close to the completion of my first task. But, whenever I'd complete one thing, another thing popped up and so on and so forth it went.

These past 3 weeks,

- I worked on the positioning of tabs and dialogs which overlapped each other.

- I then worked on some individual widgets and added the support to flip them internally.
Have a look at some of them!




These involved majorly working with the XML theme-based layout system that ScummVM uses, and it feels so awesome that all of them now have the support to be viewed as in RTL!
- I worked on extending this RTL based support to the 3 existing themes, as well as extending support for RTL based on the resolution. Have a look!

If you've ever played IGI, this gives some sort of relevance to it. I love this theme, so classy!

I also worked on making the text look right aligned and easy to see for RTL users
While …