-----------------------------------------------------------------------
-- GtkAda - Ada95 binding for Gtk+/Gnome --
-- --
-- Copyright (C) 2002-2007 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. --
-- --
-- --
-- --
-- --
-- --
-- --
-- --
-----------------------------------------------------------------------
--
-- An accel_map provides support for loading and saving accelerators (see
-- also Gtk.Accel_Group).
--
-- 2.8.17
with Glib;
with Gdk.Types;
with Gtk.Accel_Group;
package Gtk.Accel_Map is
type Gtk_Accel_Map_Record is
new Glib.Object.GObject_Record with null record;
type Gtk_Accel_Map is access all Gtk_Accel_Map_Record'Class;
function Get return Gtk_Accel_Map;
-- Gets the singleton global Gtk_Accel_Map object. This object
-- is useful only for notification of changes to the accelerator
-- map via the ::changed signal; it isn't a parameter to the
-- other accelerator map functions.
function Get_Type return Glib.GType;
-- Return the internal type used for a Gtk_Accel_Map
procedure Save (File_Name : String);
-- Save the key shortcuts to a file. These are the shortcuts that might
-- have been changed dynamically by the user, if the RC file (see Gtk.RC)
-- contained the line "gtk-can-change-accels=1"
procedure Load (File_Name : String);
-- Load the key shortcuts from a file
procedure Add_Entry
(Accel_Path : String;
Accel_Key : Gdk.Types.Gdk_Key_Type;
Accel_Mods : Gdk.Types.Gdk_Modifier_Type);
-- Register a new accelerator for a given menu item, within the global
-- accelerator map.
-- This function should only be called once per Accel_Path. To change it
-- programmatically during runtime, use Change_Entry.
-- Accel_Path is of the form:
-- /Category1/Category2/.../Action",
-- where "app" is a unique, application-specific identifier (for examples
-- of valid Accel_Path, check the file created by Save above).
--
-- For instance, the path in the testgtk application for the menu
-- File->Open would be
-- /file/open
--
-- Generally, the path need to be set explicitely for an item, through a
-- call to Gtk.Menu_Item.Set_Accel_Path or
-- Gtk.Widget.Set_Accel_Path. However, if the widget is created
-- automatically through a Gtk.Item_Factory, this is done automatically.
--
-- It is better to use this function instead of Add_Accelerator, since when
-- the accelerators are changed interactively by the user, the new value
-- will be shown properly in the menu, which wouldn't happen if they had
-- been forced by Add_Accelerator.
procedure Lookup_Entry
(Accel_Path : String;
Key : out Gtk.Accel_Group.Gtk_Accel_Key;
Found : out Boolean);
-- Look up the accelerator for Accel_Path, and set Key appropriately. If no
-- accelerator was set, Found is set to False, and the value of Key is
-- meaningless.
function Change_Entry
(Accel_Path : String;
Accel_Key : Gdk.Types.Gdk_Key_Type;
Accel_Mods : Gdk.Types.Gdk_Modifier_Type;
Replace : Boolean) return Boolean;
-- Change the accelerator currently associated wtih Accel_Path.
-- A change may not always be possible due to conflicts with other
-- accelerators. Replace should be set to True if other accelerators may be
-- deleted to resolve such conflicts.
-- Returns True if the entry could be changed
procedure Lock_Path (Accel_Path : String);
procedure Unlock_Path (Accel_Path : String);
-- Locks the given accelerator path. If the accelerator map doesn't yet
-- contain an entry for Accel_Path, a new one is created.
--
-- Locking an accelerator path prevents its accelerator from being changed
-- during runtime. A locked accelerator path can be unlocked by
-- Unlock_Path. Refer to Change_Entry for information about runtime
-- accelerator changes.
--
-- If called more than once, Accel_Path remains locked until Unlock_Path
-- has been called an equivalent number of times.
--
-- Note that locking of individual accelerator paths is independent from
-- locking the Gtk_Accel_Group containing them. For runtime accelerator
-- changes to be possible both the accelerator path and its accel group
-- have to be unlocked.
-------------
-- Foreach --
-------------
procedure Add_Filter (Filter_Pattern : String);
-- Adds a filter to the global list of accel path filters.
-- Accel map entries whose accel path matches one of the filters
-- are skipped by Foreach.
-- This function is intended for GTK+ modules that create their own
-- menus, but don't want them to be saved into the applications accelerator
-- map dump.
type Gtk_Accel_Map_Foreach is access procedure
(Data : System.Address;
Accel_Path : String;
Accel_Key : Gdk.Types.Gdk_Key_Type;
Accel_Mods : Gdk.Types.Gdk_Modifier_Type;
Changed : Boolean);
-- Changed is set to true if the keybinding was changed manually by the
-- user, and thus would need saving during an accelerator map dump.
procedure Foreach
(Data : System.Address; Func : Gtk_Accel_Map_Foreach);
-- Calls Func for each of the currently defined key shortcuts.
-- Data is passed as is to Func
procedure Foreach_Unfiltered
(Data : System.Address; Func : Gtk_Accel_Map_Foreach);
-- Loops over all entries in the accelerator map, and execute
-- Func on each.
-------------
-- Signals --
-------------
--
-- The following new signals are defined for this widget:
--
-- - "changed"
-- procedure Handler
-- (Map : Gtk_Accel_Map;
-- Accel_Path : String;
-- Accel_Key : Gdk_Key_Type;
-- Accel_Mods : Gdk_Modifier_Type);
-- Notifies of a change in the global accelerator map. The path is also
-- used as the detail for the signal, so it is possible to connect to
-- changed::accel_path.
--
--
Signal_Changed : constant Glib.Signal_Name := "changed";
private
pragma Import (C, Get_Type, "gtk_accel_map_get_type");
end Gtk.Accel_Map;
-- No binding: gtk_accel_map_load_fd
-- No binding: gtk_accel_map_save_fd
-- No binding: gtk_accel_map_load_scanner