Widgets_BorderDouble,
     Widgets_BorderDefault,
 
+    Widgets_LayoutDirection,
+
     Widgets_GlobalBusyCursor,
     Widgets_BusyCursor,
 
     void OnEnable(wxCommandEvent& event);
     void OnSetBorder(wxCommandEvent& event);
 
+    void OnToggleLayoutDirection(wxCommandEvent& event);
+
     void OnToggleGlobalBusyCursor(wxCommandEvent& event);
     void OnToggleBusyCursor(wxCommandEvent& event);
 
     EVT_MENU_RANGE(Widgets_BorderNone, Widgets_BorderDefault,
                    WidgetsFrame::OnSetBorder)
 
+    EVT_MENU(Widgets_LayoutDirection,   WidgetsFrame::OnToggleLayoutDirection)
+
     EVT_MENU(Widgets_GlobalBusyCursor,  WidgetsFrame::OnToggleGlobalBusyCursor)
     EVT_MENU(Widgets_BusyCursor,        WidgetsFrame::OnToggleBusyCursor)
 
     menuBorders->AppendRadioItem(Widgets_BorderSunken, wxT("S&unken\tCtrl-Shift-5"));
     menuWidget->AppendSubMenu(menuBorders, wxT("Set &border"));
 
+    menuWidget->AppendSeparator();
+    menuWidget->AppendCheckItem(Widgets_LayoutDirection,
+                                "Toggle &layout direction\tCtrl-L");
+
     menuWidget->AppendSeparator();
     menuWidget->AppendCheckItem(Widgets_GlobalBusyCursor,
                                 wxT("Toggle &global busy cursor\tCtrl-Shift-U"));
     page->RecreateWidget();
 }
 
+void WidgetsFrame::OnToggleLayoutDirection(wxCommandEvent& event)
+{
+    wxLayoutDirection dir = event.IsChecked() ? wxLayout_RightToLeft
+                                              : wxLayout_LeftToRight;
+
+    const Widgets widgets = CurrentPage()->GetWidgets();
+    for ( Widgets::const_iterator it = widgets.begin();
+          it != widgets.end();
+          ++it )
+    {
+        (*it)->SetLayoutDirection(dir);
+        (*it)->Refresh();
+    }
+}
+
 void WidgetsFrame::OnToggleGlobalBusyCursor(wxCommandEvent& event)
 {
     if ( event.IsChecked() )