public static void AddActions(IntPtr app, IEnumerable <GtkAction> actions) { var gtkActions = actions.OfType <GtkAction>(); foreach (var action in gtkActions) { if (action.Action != null) { Delegates.Add(action.Action); var simpleAction = NewAction(action.Name, null); Gtk.SignalConnect <Action>(simpleAction, "activate", action.Action); AddAction(app, simpleAction); } else { Delegates.Add(action.StateChanged); var state = action.StateParameterType == "s" ? NewString(action.State as string) : NewBool((bool)action.State == true ? -1 : 0); var simpleAction = NewStatefulAction(action.Name, action.StateParameterType, state); Gtk.SignalConnect <GtkAction.StateChangedDelegate>(simpleAction, "change-state", action.StateChanged); AddAction(app, simpleAction); } } var accelEntries = actions .Where(n => n.Accelerator != null) .Select(n => new { Name = "app." + n.Name, n.Accelerator }); foreach (var accelEntry in accelEntries) { Application.SetAccelsForAction(app, accelEntry.Name, new [] { accelEntry.Accelerator, null }); } }
public static string GuessContentType(string filename) { var ptr = Gtk.GuessContentType(filename, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); var text = Marshal.PtrToStringUTF8(ptr); GObject.Free(ptr); return(text); }
public static int Run(IntPtr app, Action onActivate) { Gtk.SignalConnect(app, "activate", onActivate); return(_Run(app, 0, IntPtr.Zero)); }