如何让一个菜单项右对齐使用gtkada而不是折旧程序

时间:2017-10-19 20:25:40

标签: menu gtk ada right-justified

我正在使用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。  我知道现在这被认为是不好的做法。  2.我使用林间空地  这是在Windows 10上,GPL 2017版本的GTK& GPS

1 个答案:

答案 0 :(得分:0)

我现在已经解决了这个问题,有两个菜单栏,将它们放在Hbox的两侧,并将右对齐菜单添加到右侧菜单栏。

但是我仍然认为这有点像淤泥。

N.B。我的尝试结果显示在代码示例中的注释中,基本上是显而易见的解决方案dosn做什么......