Skip to content

Instantly share code, notes, and snippets.

@Nihlus
Last active April 27, 2018 12:38
Show Gist options
  • Save Nihlus/01f2457406aa5776a7502d371cba6d29 to your computer and use it in GitHub Desktop.
Save Nihlus/01f2457406aa5776a7502d371cba6d29 to your computer and use it in GitHub Desktop.
// Accel.cs - customizations to Gtk.Accel
//
// Authors: Mike Kestner <mkestner@ximian.com>
//
// Copyright (c) 2004-2005 Novell, Inc.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of version 2 of the Lesser GNU General
// Public License as published by the Free Software Foundation.
//
// This program 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
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
namespace Gtk
{
using System;
using System.Runtime.InteropServices;
public partial class Accel
{
private interface IAccel
{
[NativeSymbol("gtk_accel_map_save")]
void MapSave(IntPtr file_name);
[NativeSymbol("gtk_accel_map_add_filter")]
void MapAddFilter(IntPtr filter_pattern);
[NativeSymbol("gtk_accel_map_foreach_unfiltered")]
void MapForeachUnfiltered(IntPtr data, GtkSharp.AccelMapForeachNative foreachFunc);
[NativeSymbol("gtk_accel_map_save_fd")]
void MapSaveFd(int fd);
[NativeSymbol("gtk_accel_map_add_entry")]
void MapAddEntry(IntPtr accelPath, uint accelKey, int accelMods);
[NativeSymbol("gtk_accel_map_load_fd")]
void MapLoadFd(int fd);
[NativeSymbol("gtk_accel_map_lookup_entry")]
void MapLookupEntry(IntPtr accelPath, ref Gtk.AccelKey key);
[NativeSymbol("gtk_accel_map_change_entry")]
void MapChangeEntry(IntPtr accelPath, uing accelKey, int accelMods, bool replace);
[NativeSymbol("gtk_accel_map_load")]
void MapLoad(IntPtr fileName);
[NativeSymbol("gtk_accel_map_foreach")]
void MapForeach(IntPtr data, GtkSharp.AccelMapForeachNative foreachFunc);
[NativeSymbol("gtk_accel_groups_from_object")]
IntPtr GroupsFromObject(IntPtr obj);
}
private static IAccel Native;
static Accel()
{
Native = NativeLibraryBuilder.Default.ActivateInterface<IAccel>(Library.Gtk);
}
[Obsolete("Moved to AccelMap class. Use AccelMap.Save instead")]
public static void MapSave(string file_name)
{
IntPtr native = GLib.Marshaller.StringToPtrGStrdup (file_name);
Native.MapSave(native);
GLib.Marshaller.Free (native);
}
[Obsolete("Moved to AccelMap class. Use AccelMap.AddFilter instead")]
public static void MapAddFilter(string filter_pattern)
{
IntPtr native = GLib.Marshaller.StringToPtrGStrdup (filter_pattern);
Native.MapAddFilter(native);
GLib.Marshaller.Free (native);
}
[Obsolete("Moved to AccelMap class. Use AccelMap.ForeachUnfiltered instead")]
public static void MapForeachUnfiltered(IntPtr data, Gtk.AccelMapForeach foreach_func)
{
GtkSharp.AccelMapForeachWrapper foreach_func_wrapper = new GtkSharp.AccelMapForeachWrapper (foreach_func);
Native.MapForeachUnfiltered(data, foreach_func_wrapper.NativeDelegate);
}
[Obsolete("Moved to AccelMap class. Use AccelMap.SaveFd instead")]
public static void MapSaveFd(int fd)
{
Native.MapSaveFd(fd);
}
[Obsolete("Moved to AccelMap class. Use AccelMap.AddEntry instead")]
public static void MapAddEntry(string accel_path, uint accel_key, Gdk.ModifierType accel_mods)
{
IntPtr native = GLib.Marshaller.StringToPtrGStrdup (accel_path);
Native.MapAddEntry(native, accel_key, (int) accel_mods);
GLib.Marshaller.Free (native);
}
[Obsolete("Moved to AccelMap class. Use AccelMap.LoadFd instead")]
public static void MapLoadFd(int fd)
{
gtk_accel_map_load_fd(fd);
}
[Obsolete("Moved to AccelMap class. Use AccelMap.LookupEntry instead")]
public static bool MapLookupEntry(string accel_path, Gtk.AccelKey key)
{
IntPtr native = GLib.Marshaller.StringToPtrGStrdup (accel_path);
bool ret = Native.MapLookupEntry(native, ref key);
GLib.Marshaller.Free (native);
return ret;
}
[Obsolete("Moved to AccelMap class. Use AccelMap.ChangeEntry instead")]
public static bool MapChangeEntry (string accel_path, uint accel_key, Gdk.ModifierType accel_mods, bool replace)
{
IntPtr native = GLib.Marshaller.StringToPtrGStrdup (accel_path);
bool ret = Native.MapChangeEntry(native, accel_key, (int) accel_mods, replace);
GLib.Marshaller.Free (native);
return ret;
}
[Obsolete("Moved to AccelMap class. Use AccelMap.Load instead")]
public static void MapLoad (string file_name)
{
IntPtr native = GLib.Marshaller.StringToPtrGStrdup (file_name);
Native.MapLoad(native);
GLib.Marshaller.Free (native);
}
[Obsolete("Moved to AccelMap class. Use AccelMap.Foreach instead")]
public static void MapForeach(IntPtr data, Gtk.AccelMapForeach foreach_func)
{
GtkSharp.AccelMapForeachWrapper foreach_func_wrapper = new GtkSharp.AccelMapForeachWrapper (foreach_func);
Native.MapForeach(data, foreach_func_wrapper.NativeDelegate);
}
public static AccelGroup[] GroupsFromObject (GLib.Object obj)
{
IntPtr raw_ret = Native.GroupsFromObject(obj.Handle);
if (raw_ret == IntPtr.Zero)
{
return new AccelGroup [0];
}
GLib.SList list = new GLib.SList(raw_ret);
AccelGroup[] result = new AccelGroup [list.Count];
for (int i = 0; i < list.Count; i++)
{
result [i] = list [i] as AccelGroup;
}
return result;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment