示例#1
0
        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 });
            }
        }
示例#2
0
文件: Gtk.cs 项目: uriegel/GtkDotNet
        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);
        }
示例#3
0
 public static int Run(IntPtr app, Action onActivate)
 {
     Gtk.SignalConnect(app, "activate", onActivate);
     return(_Run(app, 0, IntPtr.Zero));
 }