Hi Florian, Many thanks for your feedback. I guessed you might be busy with the new architecture, so i thought about sharing with the Elisa list.
Regarding the isRTL flag, I am not that pigment expert to tell if the pigment frontend is the best place. But i totally agree with you as eventually this should be available as a pigment built in feature. This is much better. I think the following is needed too - It should be serializable to configuration files. - Once it is changed an event should be fired to relayout/repaint the UI. Please let me know your feedback. Best regards, Mohamed Imam On Tue, Jun 3, 2008 at 1:32 PM, Florian Boucault <[EMAIL PROTECTED]> wrote: > Hi guys, > > Forwarding my answer to Mohamed here :) > > First of all I am no expert in UI mirroring. What you did in the piece > of code you sent looks find from a widget point of view. The remaining > question in my view is what the best place to store that parameter > (isRTL) is. My feeling is that it could be an option of the > PigmentFrontend. > What do you think of that? > > Florian > > Le mardi 03 juin 2008 à 13:05 +0300, Mohamed Imam a écrit : > > Hi All, > > > > Please let me share with you a UI requirement that is needed for RTL - > > Right to Left - interfaces such as Arabic, Hebrew. > > > > This requirement is mirroring the user interface controls. > > > > For English interface the controls are laid out left to right while > > for RTL interface they are laid out right to left. > > > > The following article explains the mirroring concept > > http://www.microsoft.com/globaldev/getwr/steps/WRG_mirror.mspx > > > > In Elisa 0.3.5 I have implemented a limited version in some UI > > controls > > > > A simple equation is used > > > > Given a widget has x,y > > Then the mirrored widget x = mx > > > > mx = parentWidth - x - widgetWidth > > y is the same > > > > To optimize the RTL support I have created a global application > > variable that I check during UI creation/relayout. Using a function > > named isRTL() > > > > > > Sample change in context_bar.py > > > > def compute_layout(self): > > if not self.parent: > > return > > p = 1 > > margin = self.icon_margin * self.parent.height > > right_margin = self.right_margin * self.parent.height > > index = 0 > > for i in reversed(self.children): > > i.size = (self.parent.height - margin*2, > > self.parent.height - margin * 2) > > x = self.parent.width - i.width * p - margin * (p-1) - > > right_margin > > i.x = x > > > > #Added for RTL Support > > if isRTL(): > > i.x = self.parent.width - x - i.width > > > > i.y += margin > > p += 1 > > if self._current_index > -1 and index == > > self._current_index: > > i.opacity = 255 > > else: > > i.opacity = self.unselected_opacity > > index += 1 > > > > > > def isRTL(): > > return rtl_global > > > > > > I wonder if you have any ideas or suggestions on implementing this > > into the new Elisa 0.5.0 to support RTL/LTR interfaces > > > > > > Best regards, > > Mohamed Imam > > > -- Best regards, Mohamed Imam Chief Technical Architect ConnectmeTV www.connectmetv.com
