----------------------------------------------------------------------- -- GtkAda - Ada95 binding for Gtk+/Gnome -- -- -- -- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet -- -- Copyright (C) 2000-2006 AdaCore -- -- -- -- This library is free software; you can redistribute it and/or -- -- modify it under the terms of the GNU General Public -- -- License as published by the Free Software Foundation; either -- -- version 2 of the License, or (at your option) any later version. -- -- -- -- This library is distributed in the hope that it will be useful, -- -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- -- General Public License for more details. -- -- -- -- You should have received a copy of the GNU General Public -- -- License along with this library; if not, write to the -- -- Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- -- Boston, MA 02111-1307, USA. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ----------------------------------------------------------------------- -- -- The Gtk_Accel_Label widget is a child of Gtk_Label that also displays an -- accelerator key on the right of the label text, e.g. 'Ctl+S'. It is -- commonly used in menus to show the keyboard short-cuts for commands. -- -- The accelerator key to display is not set explicitly. Instead, the -- Gtk_Accel_Label displays the accelerators which have been added to a -- particular widget. This widget is set by calling Set_Accel_Widget. -- -- For example, a Gtk_Menu_Item widget may have an accelerator added to emit -- the "activate" signal when the 'Ctl+S' key combination is pressed. -- A Gtk_Accel_Label is created and added to the Gtk_Menu_Item, and -- Set_Accel_Widget is called with the Gtk_Menu_Item as the second argument. -- The Gtk_Accel_Label will now display 'Ctl+S' after its label. -- -- Note that creating a Gtk_Menu_Item with Gtk_New and a non null "label" -- parameter (ditto for Gtk_Check_Menu_Item and Gtk_Radio_Menu_Item) -- automatically adds a Gtk_Accel_Label to the Gtk_Menu_Item and calls -- Set_Accel_Widget to set it up for you. -- -- A Gtk_Accel_Label will only display accelerators which have the -- Accel_Visible (see Gtk.Accel_Group) flag set. A Gtk_Accel_Label can display -- multiple accelerators and even signal names, though it is almost always -- used to display just one accelerator key. -- -- 2.8.17 -- Display widgets -- gtk-accel_label with Glib.Properties; with Gtk.Label; with Gtk.Widget; package Gtk.Accel_Label is type Gtk_Accel_Label_Record is new Gtk.Label.Gtk_Label_Record with private; type Gtk_Accel_Label is access all Gtk_Accel_Label_Record; procedure Gtk_New (Accel_Label : out Gtk_Accel_Label; Str : UTF8_String); -- Create a new Gtk_Accel_Label. -- Str is the label string. procedure Initialize (Accel_Label : access Gtk_Accel_Label_Record'Class; Str : UTF8_String); -- Internal initialization function. -- See the section "Creating your own widgets" in the documentation. function Get_Type return Gtk.Gtk_Type; -- Return the internal value associated with a Gtk_Accel_Label. procedure Set_Accel_Widget (Accel_Label : access Gtk_Accel_Label_Record; Accel_Widget : access Gtk.Widget.Gtk_Widget_Record'Class); -- Add an accelerator to a particular widget. function Get_Accel_Widget (Accel_Label : access Gtk_Accel_Label_Record) return Gtk.Widget.Gtk_Widget; -- Return the widget monitored by Accel_Label. function Get_Accel_Width (Accel_Label : access Gtk_Accel_Label_Record) return Guint; -- Return the width needed to display the accelerator key(s). -- This is used by menus to align all of the Gtk_Menu_Item widgets, and -- shouldn't be needed by applications. function Refetch (Accel_Label : access Gtk_Accel_Label_Record) return Boolean; -- Recreate the string representing the accelerator keys. -- This should not be needed since the string is automatically updated -- whenever accelerators are added or removed from the associated widget. -- Always return False. ---------------- -- Properties -- ---------------- -- -- The following properties are defined for this widget. See -- Glib.Properties for more information on properties. -- ------------- -- Signals -- ------------- -- -- The following new signals are defined for this widget: -- -- Name: Accel_Closure_Property -- Type: Boxed -- Descr: The closure to be monitored for accelerator changes -- -- Name: Accel_Widget_Property -- Type: Object -- Descr: The widget to be monitored for accelerator changes -- -- -- Accel_Closure_Property : constant Glib.Properties.Property_Boxed; Accel_Widget_Property : constant Glib.Properties.Property_Object; private type Gtk_Accel_Label_Record is new Gtk.Label.Gtk_Label_Record with null record; -- Accel_Closure_Property : constant Glib.Properties.Property_Boxed := -- Glib.Properties.Build ("accel-closure"); Accel_Widget_Property : constant Glib.Properties.Property_Object := Glib.Properties.Build ("accel-widget"); pragma Import (C, Get_Type, "gtk_accel_label_get_type"); end Gtk.Accel_Label; -- -- Creating a simple menu item with an accelerator key. -- -- Save_Item : Gtk_Menu_Item; -- Accel_Group : Gtk_Accel_Group; -- -- -- Create a Gtk_Accel_Group and add it to the window. -- Gtk_New (Accel_Group); -- Add_Accel_Group (Window, Accel_Group); -- -- -- Create the menu item using the convenience function. -- Gtk_New (Save_Item, "Save"); -- Show (Save_Item); -- Add (Menu, Save_Item); -- -- -- Now add the accelerator to the Gtk_Menu_Item. Note that since we called -- -- Gtk_New with a label to create the Gtk_Menu_Item the -- -- Gtk_Accel_Label is automatically set up to display the Gtk_Menu_Item -- -- accelerators. We just need to make sure we use Accel_Visible here. -- -- Add_Accelerator -- (Save_Item, "activate", Accel_Group, -- GDK_S, Control_Mask, Accel_Visible); -- -- No binding: gtk_accel_label_set_accel_closure