2017-10-19 95 views
0

我正在使用GTKADA,为一个小应用程序,并希望右对齐菜单栏上的帮助菜单。如何让一个菜单项目右对齐使用gtkada,但不是折旧程序

旧的方法是在新菜单上调用Set_Right_justified,但现在已过时。

可以看到,我应该可以使用Set_Hexpand和Set_Halign来做到这一点。

我目前使用的代码是: -

with GTK.WIDGET; 
procedure Add_Menu_To_Menu_Bar 
(Menu_Bar  : in GTK.MENU_BAR.Gtk_Menu_Bar; 
    Menu   : in GTK.MENU.Gtk_Menu; 
    Label   : in string; 
    Right_Justified : in boolean := False) 
is 
    New_Item : GTK.MENU_ITEM.Gtk_Menu_Item; 
begin 
    GTK.MENU_ITEM.Gtk_New(Menu_Item => New_Item, 
         Label  => Label); 

    New_Item.Set_Right_Justified(Right_Justified => Right_Justified); 

-- if Right_Justified then 
--  -- Below is the recommended alternative to above 
--  -- but dosn't work 
--   New_Item.Set_Hexpand(Expand => true); 
--   New_Item.Set_Hexpand_Set(Set => true); 
--   New_Item.Set_Halign(Align => GTK.WIDGET.Align_End); 
--  -- Below does work, but only sets a fixed margin 
--   New_Item.Set_Margin_Start(Margin => 40); 
--   New_Item.Set_Margin_End(Margin => 40); 
--  -- Below effects the entire menu bar 
--   Menu_Bar.Set_Hexpand(Expand => true); 
--   Menu_Bar.Set_Halign(Align => GTK.WIDGET.Align_End); 
-- end if; 


    GTK.MENU_ITEM.Show(New_Item); 

    GTK.MENU_ITEM.Set_Submenu(New_Item, Menu); 

    GTK.MENU_BAR.Append(Menu_Shell => Menu_Bar, 
         Child  => New_Item); 

末Add_Menu_To_Menu_Bar;

N.B. 1.我知道这现在被认为是不好的做法。 2.我利用林间空地 3.这是Windows 10,与2017年GPL版本的GTK & GPS的

+0

为什么建议的替代方法不起作用?什么是实际结果? – flyx

回答

0

我现在已经通过具有两个菜单栏解决了这个,他们将在一个相对的两侧Hbox,并将右对齐菜单添加到右侧菜单栏。

但是我仍然认为这有点混乱。

N.B.我的尝试结果显示在代码示例中的注释中,基本上明显的解决方案不会做任何事情...

相关问题