Beispiel #1
0
        public static string GetString(this NSTextView self)
        {
            var selector = new ObjCRuntime.Selector("string");
            var handle   = LibObjc.IntPtr_objc_msgSend(self.Handle, selector.Handle);

            return(handle != IntPtr.Zero ? NSString.FromHandle(handle) : (string)null);
        }
Beispiel #2
0
        //NSClassFromString
        //NSSelectorFromString
        //NSProtocolFromString

#if MONOMAC
        public static CGSize SizeThatFits(this NSControl self, CGSize proposedSize)
        {
            var selector = new ObjCRuntime.Selector("sizeThatFits:");
            var size     = ObjCRuntime.Messaging.CGSize_objc_msgSend_CGSize(self.Handle, selector.Handle, proposedSize);

            return(size);
        }
		internal NativeMethodBuilder (MethodInfo minfo) {
			ExportAttribute ea = (ExportAttribute) Attribute.GetCustomAttribute (minfo.GetBaseDefinition (), typeof (ExportAttribute));
			ParameterInfo [] parms = minfo.GetParameters ();

			if (ea == null)
				throw new ArgumentException ("MethodInfo does not have a export attribute");

			rettype = ConvertReturnType (minfo.ReturnType);
			// FIXME: We should detect if this is in a bound assembly or not and only alloc if needed
			Selector = new Selector (ea.Selector ?? minfo.Name, true).Handle;
			Signature = string.Format ("{0}@:", TypeConverter.ToNative (rettype));
			ParameterTypes = new Type [2 + parms.Length];

			ParameterTypes [0] = typeof (NSObject);
			ParameterTypes [1] = typeof (Selector);

			for (int i = 0; i < parms.Length; i++) {
				if (parms [i].ParameterType.IsByRef && (parms[i].ParameterType.IsSubclassOf (typeof (NSObject)) || parms[i].ParameterType == typeof (NSObject)))
					ParameterTypes [i + 2] = typeof (IntPtr).MakeByRefType ();
				else
					ParameterTypes [i + 2] = parms [i].ParameterType;
				Signature += TypeConverter.ToNative (parms [i].ParameterType);
			}
			
			DelegateType = CreateDelegateType (rettype, ParameterTypes);

			this.minfo = minfo;
		}
Beispiel #4
0
        internal NativeMethodBuilder(MethodInfo minfo)
        {
            ExportAttribute ea = (ExportAttribute) Attribute.GetCustomAttribute (minfo.GetBaseDefinition (), typeof (ExportAttribute));

            if (ea == null)
                throw new ArgumentException ("MethodInfo does not have a export attribute");

            parms = minfo.GetParameters ();

            rettype = ConvertReturnType (minfo.ReturnType);
            // FIXME: We should detect if this is in a bound assembly or not and only alloc if needed
            Selector = new Selector (ea.Selector ?? minfo.Name, true).Handle;
            Signature = string.Format ("{0}@:", TypeConverter.ToNative (rettype));
            ParameterTypes = new Type [2 + parms.Length];

            ParameterTypes [0] = typeof (NSObject);
            ParameterTypes [1] = typeof (Selector);

            for (int i = 0; i < parms.Length; i++) {
                if (parms [i].ParameterType.IsByRef && (parms[i].ParameterType.GetElementType ().IsSubclassOf (typeof (NSObject)) || parms[i].ParameterType.GetElementType () == typeof (NSObject)))
                    ParameterTypes [i + 2] = typeof (IntPtr).MakeByRefType ();
                else
                    ParameterTypes [i + 2] = parms [i].ParameterType;
                // The TypeConverter will emit a ^@ for a byref type that is a NSObject or NSObject subclass in this case
                // If we passed the ParameterTypes [i+2] as would be more logical we would emit a ^^v for that case, which
                // while currently acceptible isn't representative of what obj-c wants.
                Signature += TypeConverter.ToNative (parms [i].ParameterType);
            }

            DelegateType = CreateDelegateType (rettype, ParameterTypes);

            this.minfo = minfo;
        }
        internal NativeConstructorBuilder(ConstructorInfo cinfo)
        {
            ExportAttribute ea = (ExportAttribute) Attribute.GetCustomAttribute (cinfo, typeof (ExportAttribute));
            ParameterInfo [] parms = cinfo.GetParameters ();

            if (ea == null && parms.Length > 0)
                throw new ArgumentException ("ConstructorInfo does not have a export attribute");

            if (ea == null)
                Selector = selInit;
            else
                Selector = new Selector (ea.Selector, true).Handle;

            Signature = "@@:";
            ParameterTypes = new Type [2 + parms.Length];

            ParameterTypes [0] = typeof (IntPtr);
            ParameterTypes [1] = typeof (Selector);

            for (int i = 0; i < parms.Length; i++) {
                ParameterTypes [i + 2] = parms [i].ParameterType;
                Signature += TypeConverter.ToNative (parms [i].ParameterType);
            }

            DelegateType = CreateDelegateType (typeof (IntPtr), ParameterTypes);

            this.cinfo = cinfo;
        }
Beispiel #6
0
        public static void WriteObject(this NSPasteboard pboard, NSObject pasteboardWriting)
        {
            // NOTE: pasteboardWriting must conform to NSPasteboardWriting protocol
            var selector = new ObjCRuntime.Selector("writeObjects:");
            var array    = NSArray.FromNSObjects(pasteboardWriting);

            ObjCRuntime.Messaging.void_objc_msgSend_IntPtr(pboard.Handle, selector.Handle, array.Handle);
        }
Beispiel #7
0
        public static NSWindow[] OrderedWindows(this NSApplication self)
        {
            var selector = new ObjCRuntime.Selector("orderedWindows");
            var ptr      = LibObjc.IntPtr_objc_msgSend(self.Handle, selector.Handle);
            var array    = NSArray.ArrayFromHandle <NSWindow>(ptr);

            return(array);
        }
        public override void WillFinishLaunching(NSNotification notification)
        {
            var selector = new MonoMac.ObjCRuntime.Selector("handleGetURLEvent:withReplyEvent:");

            NSAppleEventManager.SharedAppleEventManager.SetEventHandler(this,
                                                                        selector,
                                                                        AEEventClass.Internet,
                                                                        AEEventID.GetUrl);
        }
Beispiel #9
0
        public static NSData GetData(this NSAttributedString astr, NSRange range, NSDictionary options, out NSError error)
        {
            var selector = new ObjCRuntime.Selector("dataFromRange:documentAttributes:error:");
            var e        = new NSError();
            var h        = ObjCRuntime.Messaging.IntPtr_objc_msgSend_NSRange_IntPtr_IntPtr_int(astr.Handle, selector.Handle, range, options.Handle, e.Handle, 0);

            error = null;
            return(h.AsNSObject <NSData>());
        }
Beispiel #10
0
        static bool isSelectorExcludedFromWebScript(Selector sel)
        {
            switch (sel.Name)
            {
                case "clicked:":
                case "logMessage:":
                case "updateMarker:":
                    return false;
            }

            return true;
        }
Beispiel #11
0
        //[Export ("initWithContentRect:styleMask:backing:defer:"), CompilerGenerated]
        internal MonoWindow(NSRect contentRect, NSWindowStyle aStyle, NSBackingStore bufferingType, bool deferCreation, XplatUICocoa driver)
            : base(contentRect, aStyle, bufferingType, deferCreation)
        {
            this.driver = driver;

            // Disable tabbing on Sierra until we properly support it
            var setTabbingModeSelector = new ObjCRuntime.Selector("setTabbingMode:");

            if (this.RespondsToSelector(setTabbingModeSelector))
            {
                this.SetValueForKey(NSNumber.FromInt32(2), new NSString("tabbingMode"));
            }
        }
Beispiel #12
0
        static string webScriptNameForSelector(Selector sel)
        {
            switch (sel.Name)
            {
                case "clicked:":
                    return "clicked";

                case "logMessage:":
                    return "logMessage";

                case "updateMarker:":
                    return "updateMarker";
            }

            return "";
        }
		internal NativeConstructorBuilder (ConstructorInfo cinfo) {
			ExportAttribute ea = (ExportAttribute) Attribute.GetCustomAttribute (cinfo, typeof (ExportAttribute));

			Parameters = cinfo.GetParameters ();

			if (ea == null && Parameters.Length > 0)
				throw new ArgumentException ("ConstructorInfo does not have a export attribute");

			if (ea == null)
				Selector = selInit;
			else
				Selector = new Selector (ea.Selector, true).Handle;

			Signature = "@@:";
			ConvertParameters (Parameters, true, false);
			DelegateType = CreateDelegateType (typeof (IntPtr), ParameterTypes);

			this.cinfo = cinfo;
		}
		internal NativeMethodBuilder (MethodInfo minfo, Type type, ExportAttribute ea) {
			if (ea == null)
				throw new ArgumentException ("MethodInfo does not have a export attribute");

			if (minfo.DeclaringType.IsGenericType)
				throw new ArgumentException ("MethodInfo cannot be in a generic type");

			Parameters = minfo.GetParameters ();

			rettype = ConvertReturnType (minfo.ReturnType);

			// FIXME: We should detect if this is in a bound assembly or not and only alloc if needed
			Selector = new Selector (ea.Selector ?? minfo.Name, true).Handle;
			Signature = string.Format ("{0}@:", TypeConverter.ToNative (rettype));

			ConvertParameters (Parameters, minfo.IsStatic, isstret);
			
			DelegateType = CreateDelegateType (rettype, ParameterTypes);

			this.minfo = minfo;
			this.type = type;
		}
Beispiel #15
0
		public void BeginInvokeOnMainThread (Selector sel, NSObject obj)
		{
			InvokeOnMainThread (sel, obj, false);
		}
 public virtual bool RespondsToSelector(Selector sel)
 {
     #if MONOMAC
     if (IsDirectBinding) {
         return Messaging.bool_objc_msgSend_intptr (this.Handle, selRespondsToSelectorHandle, sel.Handle);
     } else {
         return Messaging.bool_objc_msgSendSuper_intptr (this.SuperHandle, selRespondsToSelectorHandle, sel.Handle);
     }
     #else
     if (IsDirectBinding) {
         return Messaging.bool_objc_msgSend_intptr (this.Handle, Selector.GetHandle (selRespondsToSelector), sel.Handle);
     } else {
         return Messaging.bool_objc_msgSendSuper_intptr (this.SuperHandle, Selector.GetHandle (selRespondsToSelector), sel.Handle);
     }
     #endif
 }
Beispiel #17
0
 // provider must implement NSPasteboardItemDataProvider
 public static void SetDataProviderForTypes(this NSPasteboardItem item, NSObject provider, string[] types)
 {
     var sel   = new ObjCRuntime.Selector("setDataProvider:forTypes:");
     var array = NSArray.FromStrings(types);
     var ok    = LibObjc.bool_objc_msgSend_IntPtr_IntPtr(item.Handle, sel.Handle, provider.Handle, array.Handle);
 }
 public static string WebScriptNameForSelector(MonoMac.ObjCRuntime.Selector aSelector)
 {
     return(aSelector.Name.Replace(":", ""));
 }
Beispiel #19
0
        public static bool AllowsUndo(this NSTextView self)
        {
            var selector = new ObjCRuntime.Selector("allowsUndo");

            return(LibObjc.bool_objc_msgSend(self.Handle, selector.Handle));
        }
Beispiel #20
0
 public static IntPtr GetMethod(this Class cls, Selector selector)
 {
     return class_getClassMethod (cls.Handle, selector.Handle);
 }
Beispiel #21
0
		public MacCommand(string id, string text, string selector)
		{
			ID = id;
			MenuText = ToolBarText = text;
			Selector = new Selector(selector);
		}
Beispiel #22
0
 public virtual void DoesNotRecognizeSelector(Selector sel)
 {
     Messaging.void_objc_msgSendSuper_intptr (SuperHandle, Selector.DoesNotRecognizeSelector, sel.Handle);
 }
Beispiel #23
0
		public virtual void DoesNotRecognizeSelector (Selector sel) {
			if (sel == null)
				throw new ArgumentNullException ("sel");
			Console.WriteLine ("CRITICAL WARNING: [{0} {1}] is not recognized", this.GetType (), sel.Name);

			Messaging.void_objc_msgSendSuper_intptr (SuperHandle, selDoesNotRecognizeSelector, sel.Handle);
		}
Beispiel #24
0
		public virtual bool RespondsToSelector (Selector sel) {
			if (sel == null)
				throw new ArgumentNullException ("sel");
			if (IsDirectBinding) {
				return Messaging.bool_objc_msgSend_intptr (Handle, selRespondsToSelector, sel.Handle);
			} else {
				return Messaging.bool_objc_msgSendSuper_intptr (SuperHandle, selRespondsToSelector, sel.Handle);
			}
		}
 public virtual void DoesNotRecognizeSelector(Selector sel)
 {
     #if MONOMAC
     Messaging.void_objc_msgSendSuper_intptr (SuperHandle, Selector.DoesNotRecognizeSelectorHandle, sel.Handle);
     #else
     Messaging.void_objc_msgSendSuper_intptr (SuperHandle, Selector.GetHandle (Selector.DoesNotRecognizeSelector), sel.Handle);
     #endif
 }
Beispiel #26
0
		public override void WillFinishLaunching (NSNotification notification)
		{
			var selector = new MonoMac.ObjCRuntime.Selector ("handleGetURLEvent:withReplyEvent:");
			NSAppleEventManager.SharedAppleEventManager.SetEventHandler (this,
			                                                             selector,
			                                                             AEEventClass.Internet,
			                                                             AEEventID.GetUrl);
		}
Beispiel #27
0
		public MacButtonAction(string id, string text, string selector)
			: base(id, text)
		{
			this.Selector = new Selector(selector);
		}
 private void InvokeOnMainThread(Selector sel, NSObject obj, bool wait)
 {
     #if MONOMAC
     Messaging.void_objc_msgSend_intptr_intptr_bool (this.Handle, Selector.PerformSelectorOnMainThreadWithObjectWaitUntilDoneHandle, sel.Handle, obj == null ? IntPtr.Zero : obj.Handle, wait);
     #else
     Messaging.void_objc_msgSend_intptr_intptr_bool (this.Handle, Selector.GetHandle (Selector.PerformSelectorOnMainThreadWithObjectWaitUntilDone), sel.Handle, obj == null ? IntPtr.Zero : obj.Handle, wait);
     #endif
 }
Beispiel #29
0
		public void InvokeOnMainThread (Selector sel, NSObject obj)
		{
			InvokeOnMainThread (sel, obj, true);
		}
Beispiel #30
0
		public virtual bool RespondsToSelector (Selector sel) {
			if (IsDirectBinding) {
				return Messaging.bool_objc_msgSend_intptr (Handle, selRespondsToSelector, sel.Handle);
			} else {
				return Messaging.bool_objc_msgSendSuper_intptr (SuperHandle, selRespondsToSelector, sel.Handle);
			}
		}
 public static bool IsSelectorExcludedFromWebScript(MonoMac.ObjCRuntime.Selector aSelector)
 {
     return(!allowed.Contains(aSelector.Name));
 }
 public void AddObserver(NSObject observer, Selector aSelector, string aname, NSObject anObject)
 {
     AddObserver (observer, aSelector, new NSString (aname), anObject);
 }
		// -------------------------------------------------------------------------------
		//	handleCommandSelectors
		//
		//	Handle all command selectors that we can handle here
		// -------------------------------------------------------------------------------		
		private bool handleCommandSelectors(NSControl control, NSTextView textView, Selector commandSelector)
		{
			
			bool result = false;
			
			if (textView.RespondsToSelector (commandSelector)){
				commandHandling = true;
				textView.PerformSelector (commandSelector,null,-1);
				//commandHandling = false;
				result = true;
			}
			
			return result;
			
		}
Beispiel #34
0
        public static void SetString(this NSTextView self, NSString value)
        {
            var selector = new ObjCRuntime.Selector("setString:");

            LibObjc.void_objc_msgSend_IntPtr(self.Handle, selector.Handle, value.Handle);
        }
Beispiel #35
0
		public virtual void DoesNotRecognizeSelector (Selector sel) {
			Console.WriteLine ("CRITICAL WARNING: [{0} {1}] is not recognized", this.GetType (), sel.Name);

			Messaging.void_objc_msgSendSuper_intptr (SuperHandle, selDoesNotRecognizeSelector, sel.Handle);
		}
Beispiel #36
0
        public static void AllowsUndo(this NSTextView self, bool value)
        {
            var selector = new ObjCRuntime.Selector("setAllowsUndo:");

            LibObjc.void_objc_msgSend_Bool(self.Handle, selector.Handle, value);
        }
Beispiel #37
0
		public virtual void PerformSelector (Selector sel, NSObject obj, float delay) {
			if (IsDirectBinding) {
				Messaging.void_objc_msgSend_intptr_intptr_float (this.Handle, selPerformSelectorWithObjectAfterDelay, sel.Handle, obj == null ? IntPtr.Zero : obj.Handle, delay);
			} else {
				Messaging.void_objc_msgSendSuper_intptr_intptr_float (this.SuperHandle, selPerformSelectorWithObjectAfterDelay, sel.Handle, obj == null ? IntPtr.Zero : obj.Handle, delay);
			}
		}
Beispiel #38
0
 public static bool AddMethod(this Class cls, Selector selector, Delegate method, string arguments)
 {
     return class_addMethod (cls.Handle, selector.Handle, method, arguments);
 }
Beispiel #39
0
		private void InvokeOnMainThread (Selector sel, NSObject obj, bool wait)
		{
			Messaging.void_objc_msgSend_intptr_intptr_bool (this.Handle, selPerformSelectorOnMainThreadWithObjectWaitUntilDone, sel.Handle, obj == null ? IntPtr.Zero : obj.Handle, wait);
		}
Beispiel #40
0
 private bool KeywordsCommandSelector(NSControl control, NSTextView textView, Selector commandSelector)
 {
     if (textView.RespondsToSelector(commandSelector))
     {
         commandHandling = true;
         textView.PerformSelector(commandSelector, null, -1);
         return true;
     }
     return false;
 }
 public virtual void PerformSelector(Selector sel, NSObject obj, double delay)
 {
     if (sel == null)
         throw new ArgumentNullException ("sel");
     #if MONOMAC
     if (IsDirectBinding) {
         Messaging.void_objc_msgSend_intptr_intptr_double (this.Handle, Selector.PerformSelectorWithObjectAfterDelayHandle, sel.Handle, obj == null ? IntPtr.Zero : obj.Handle, delay);
     } else {
         Messaging.void_objc_msgSendSuper_intptr_intptr_double (this.SuperHandle, Selector.PerformSelectorWithObjectAfterDelayHandle, sel.Handle, obj == null ? IntPtr.Zero : obj.Handle, delay);
     }
     #else
     if (IsDirectBinding) {
         Messaging.void_objc_msgSend_intptr_intptr_double (this.Handle, Selector.GetHandle (Selector.PerformSelectorWithObjectAfterDelay), sel.Handle, obj == null ? IntPtr.Zero : obj.Handle, delay);
     } else {
         Messaging.void_objc_msgSendSuper_intptr_intptr_double (this.SuperHandle, Selector.GetHandle (Selector.PerformSelectorWithObjectAfterDelay), sel.Handle, obj == null ? IntPtr.Zero : obj.Handle, delay);
     }
     #endif
 }
Beispiel #42
0
		public static void ConnectMethod (MethodInfo method, Selector selector) {
			if (method == null)
				throw new ArgumentNullException ("method");
			if (selector == null)
				throw new ArgumentNullException ("selector");
			var type = method.DeclaringType;

			if (!Class.IsCustomType (type))
				throw new ArgumentException ("Cannot late bind methods on core types");

			var ea = new ExportAttribute (selector.Name);
			var klass = new Class (type);

			Class.RegisterMethod (method, ea, type, klass.Handle);
		}
		public extern static void ShowAnimationEffect (NSAnimationEffect animationEffect, PointF centerLocation, SizeF size, NSObject animationDelegate, Selector didEndSelector, IntPtr contextInfo);