public override void AwakeFromNib ()
		{
			base.AwakeFromNib ();
			WantsLayer = true;
			Layer.BackgroundColor = new CGColor (1, 0, 0);
			trackingArea = new NSTrackingArea (Frame, NSTrackingAreaOptions.ActiveInKeyWindow | NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.MouseMoved
				, this, null);
			this.AddTrackingArea (trackingArea);
		}
Beispiel #2
0
		public StatusIcon (StatusBar bar) : base (CGRect.Empty)
		{
			imageView = new NSImageView (CGRect.Empty);
			AddSubview (imageView);

			var trackingArea = new NSTrackingArea (CGRect.Empty, NSTrackingAreaOptions.ActiveInKeyWindow | NSTrackingAreaOptions.InVisibleRect | NSTrackingAreaOptions.MouseEnteredAndExited, this, null);
			AddTrackingArea (trackingArea);

			this.bar = bar;
		}
		protected override void CreateHandle ()
		{
			m_helper = new PanelMouseView();
      		m_view = m_helper;
			m_helper.Host = this;
			trackingArea = new NSTrackingArea(m_helper.Frame,(NSTrackingAreaOptions.MouseEnteredAndExited |
			                                                             NSTrackingAreaOptions.MouseMoved |
			                                                             NSTrackingAreaOptions.ActiveInKeyWindow), m_helper,new NSDictionary());
			m_helper.AddTrackingArea( trackingArea);
		}
Beispiel #4
0
		public override void UpdateTrackingAreas ()
		{
			if (trackingArea != null) {
				RemoveTrackingArea (trackingArea);
				trackingArea.Dispose ();
			}
			System.Drawing.RectangleF viewBounds = this.Bounds;
			var options = NSTrackingAreaOptions.MouseMoved | NSTrackingAreaOptions.ActiveInKeyWindow | NSTrackingAreaOptions.MouseEnteredAndExited;
			trackingArea = new NSTrackingArea (viewBounds, options, this, null);
			AddTrackingArea (trackingArea);
		}
        private void Initialize()
        {
            // Add tracking area to receive mouse move and mouse dragged events
            var opts = NSTrackingAreaOptions.ActiveAlways | NSTrackingAreaOptions.InVisibleRect | NSTrackingAreaOptions.MouseMoved | NSTrackingAreaOptions.EnabledDuringMouseDrag;
            var trackingArea = new NSTrackingArea(Bounds, opts, this, new NSDictionary());
            AddTrackingArea(trackingArea);

            _control = new CircularProgressBarControl();    
            _control.OnInvalidateVisual += () => InvokeOnMainThread(() => SetNeedsDisplayInRect(Bounds));
            _control.OnInvalidateVisualInRect += (rect) => InvokeOnMainThread(() => SetNeedsDisplayInRect(GenericControlHelper.ToRect(rect)));
        }
Beispiel #6
0
        private void Initialize()
        {
            // Add tracking area to receive mouse move and mouse dragged events
            var opts = NSTrackingAreaOptions.ActiveAlways | NSTrackingAreaOptions.InVisibleRect | NSTrackingAreaOptions.MouseMoved | NSTrackingAreaOptions.EnabledDuringMouseDrag;
            var trackingArea = new NSTrackingArea(Bounds, opts, this, new NSDictionary());
            AddTrackingArea(trackingArea);

            _control = new FaderControl();    
            _control.OnFaderValueChanged += (sender, args) =>
            {
                if (OnFaderValueChanged != null)
                    OnFaderValueChanged(this, args);
            };
            // TODO: Could these be moved inside a generic helper or something?
            _control.OnInvalidateVisual += () => InvokeOnMainThread(() => SetNeedsDisplayInRect(Bounds));
            _control.OnInvalidateVisualInRect += (rect) => InvokeOnMainThread(() => SetNeedsDisplayInRect(GenericControlHelper.ToRect(rect)));
        }
Beispiel #7
0
        private void Initialize()
        {
            WantsLayer = true;
            DoubleClick += (sender, e) => { };
            MenuItemClicked += (menuItemType) => { };

            // Add tracking area to receive mouse move and mouse dragged events
            var opts = NSTrackingAreaOptions.ActiveAlways | NSTrackingAreaOptions.InVisibleRect | NSTrackingAreaOptions.MouseMoved | NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.EnabledDuringMouseDrag;
            var trackingArea = new NSTrackingArea(Bounds, opts, this, new NSDictionary());
            AddTrackingArea(trackingArea);

            _horizontalScrollBar = new HorizontalScrollBarWrapper();
            AddSubview(_horizontalScrollBar);

            _verticalScrollBar = new VerticalScrollBarWrapper();
            AddSubview(_verticalScrollBar);

            var disposableImageFactory = Bootstrapper.GetContainer().Resolve<IDisposableImageFactory>();
            _control = new SongGridViewControl(_horizontalScrollBar, _verticalScrollBar, disposableImageFactory);   
            _control.OnChangeMouseCursorType += GenericControlHelper.ChangeMouseCursor;
            _control.OnItemDoubleClick += (id, index) => DoubleClick(this, new EventArgs());
            _control.OnInvalidateVisual += () => InvokeOnMainThread(() => SetNeedsDisplayInRect(Bounds));
            _control.OnInvalidateVisualInRect += (rect) => InvokeOnMainThread(() => SetNeedsDisplayInRect(GenericControlHelper.ToRect(rect)));
            _control.OnDisplayContextMenu += (contextMenuType, x, y) => 
            { 
                switch (contextMenuType)
                {
                    case SongGridViewControl.ContextMenuType.Item:
                        NSMenu.PopUpContextMenu(_menuItems, _rightClickEvent, this);
                        break;
                    case SongGridViewControl.ContextMenuType.Header:
                        NSMenu.PopUpContextMenu(_menuHeader, _rightClickEvent, this);
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
            };

            SetFrame();
            PostsBoundsChangedNotifications = true;
            NSNotificationCenter.DefaultCenter.AddObserver(NSView.FrameChangedNotification, FrameDidChangeNotification, this);

            CreateContextualMenu();
        }
Beispiel #8
0
		public StatusBar ()
		{
			AllowsEditingTextAttributes = Selectable = Editable = false;

			textField.Cell = new VerticallyCenteredTextFieldCell (yOffset: -0.5f);
			textField.Cell.StringValue = "";
			textField.Cell.PlaceholderAttributedString = GetStatusString (BrandingService.ApplicationName, NSColor.DisabledControlText);

			// The rect is empty because we use InVisibleRect to track the whole of the view.
			textFieldArea = new NSTrackingArea (CGRect.Empty, NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveInKeyWindow | NSTrackingAreaOptions.InVisibleRect, this, null);
			textField.AddTrackingArea (textFieldArea);

			imageView.Image = ImageService.GetIcon (Stock.StatusSteady).ToNSImage ();

			buildResults = new BuildResultsView ();
			buildResults.Hidden = true;
			AddSubview (buildResults);

			// Fixes a render glitch of a whiter bg than the others.
			if (MacSystemInformation.OsVersion >= MacSystemInformation.Yosemite)
				BezelStyle = NSTextFieldBezelStyle.Rounded;

			WantsLayer = true;
			Layer.CornerRadius = MacSystemInformation.OsVersion >= MacSystemInformation.ElCapitan ? 6 : 4;
			ctxHandler = new StatusBarContextHandler (this);

			updateHandler = delegate {
				int ec = 0, wc = 0;

				foreach (var t in TaskService.Errors) {
					if (t.Severity == TaskSeverity.Error)
						ec++;
					else if (t.Severity == TaskSeverity.Warning)
						wc++;
				}

				Runtime.RunInMainThread (delegate {
					buildResults.Hidden = (ec == 0 && wc == 0);
					buildResults.ResultCount = ec > 0 ? ec : wc;

					buildImageId = ec > 0 ? "md-status-error-count" : "md-status-warning-count";
					buildResults.IconImage = ImageService.GetIcon (buildImageId, Gtk.IconSize.Menu).ToNSImage ();

					RepositionStatusIcons ();
				});
			};

			updateHandler (null, null);

			TaskService.Errors.TasksAdded += updateHandler;
			TaskService.Errors.TasksRemoved += updateHandler;

			AddSubview (imageView);
			AddSubview (textField);
		}
Beispiel #9
0
        // Shared initialization code
        void Initialize()
        {
            NSTrackingArea tracker = new NSTrackingArea (CoreGraphics.CGRect.Empty,
                NSTrackingAreaOptions.ActiveInActiveApp | NSTrackingAreaOptions.InVisibleRect | NSTrackingAreaOptions.MouseMoved,
                this, null);
            TranslatesAutoresizingMaskIntoConstraints = false;
            AddTrackingArea (tracker);

            overlay = new MapViewOverlay ();
            overlay.TranslatesAutoresizingMaskIntoConstraints = false;
            AddSubview (overlay);

            var viewsDict = new NSDictionary ("overlay", overlay);
            var constraints = NSLayoutConstraint.FromVisualFormat ("|[overlay]|", 0, null, viewsDict);
            AddConstraints (constraints);

            constraints = NSLayoutConstraint.FromVisualFormat ("V:|[overlay]|", 0, null, viewsDict);
            AddConstraints (constraints);
        }
        public override void UpdateTrackingAreas()
        {
            System.Diagnostics.Debug.WriteLine("Update tracking area");
            base.UpdateTrackingAreas();

            if (_trackingArea != null)
            {
                RemoveTrackingArea(_trackingArea);
            }
            _trackingArea = new NSTrackingArea(Frame, NSTrackingAreaOptions.MouseMoved | NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveAlways, this, null);
            AddTrackingArea(_trackingArea);
            ResetMouseClick();
        }
Beispiel #11
0
		public StatusBarIcon ShowStatusIcon (Xwt.Drawing.Image pixbuf)
		{
			nfloat right = layerToStatus.Count == 0 ?
				Layer.Frame.Width :
				Layer.Sublayers.Last (i => i.Name != null && i.Name.StartsWith (StatusIconPrefixId, StringComparison.Ordinal)).Frame.Left;

			right -= (nfloat)pixbuf.Width + 6;
			var layer = CALayer.Create ();
			layer.Name = StatusIconPrefixId + (++statusCounter);
			layer.Bounds = new CGRect (0, 0, (nfloat)pixbuf.Width, (nfloat)pixbuf.Height);
			layer.Frame = new CGRect (right, 3, (nfloat)pixbuf.Width, (nfloat)pixbuf.Height);

			var area = new NSTrackingArea (layer.Frame, NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveInKeyWindow, this, null);
			AddTrackingArea (area);

			var statusIcon = new StatusIcon (this, layer, area) {
				Image = pixbuf,
			};
			layerToStatus [layer.Name] = statusIcon;

			Layer.AddSublayer (layer);

			textField.SetFrameSize (new CGSize (right - 6 - textField.Frame.Left, Frame.Height));

			return statusIcon;
		}
Beispiel #12
0
        public StatusBar()
        {
            var nsa = (INSAccessibility)this;

            // Pretend that this button is a Group
            AccessibilityRole           = NSAccessibilityRoles.GroupRole;
            nsa.AccessibilityIdentifier = "MainToolbar.StatusDisplay";

            Cell       = new ColoredButtonCell();
            BezelStyle = NSBezelStyle.TexturedRounded;
            Title      = "";
            Enabled    = false;

            LoadStyles();

            // We don't need to resize the Statusbar here as a style change will trigger a complete relayout of the Awesomebar
            Ide.Gui.Styles.Changed += LoadStyles;

            textField.Cell             = new VerticallyCenteredTextFieldCell(0f);
            textField.Cell.StringValue = "";

            textField.AccessibilityRole    = NSAccessibilityRoles.StaticTextRole;
            textField.AccessibilityEnabled = true;
            textField.AccessibilityHelp    = GettextCatalog.GetString("Status of the current operation");

            var tfNSA = (INSAccessibility)textField;

            tfNSA.AccessibilityIdentifier = "MainToolbar.StatusDisplay.Status";

            UpdateApplicationNamePlaceholderText();

            // The rect is empty because we use InVisibleRect to track the whole of the view.
            textFieldArea = new NSTrackingArea(CGRect.Empty, NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveInKeyWindow | NSTrackingAreaOptions.InVisibleRect, this, null);
            textField.AddTrackingArea(textFieldArea);

            imageView.Frame = new CGRect(0.5, 0, 0, 0);
            imageView.Image = ImageService.GetIcon(Stock.StatusSteady).ToNSImage();

            // Hide this image from accessibility
            imageView.AccessibilityElement = false;

            buildResults        = new BuildResultsView();
            buildResults.Hidden = true;

            cancelButton            = new CancelButton();
            cancelButton.Activated += (o, e) => {
                cts?.Cancel();
            };

            ctxHandler = new StatusBarContextHandler(this);

            updateHandler = delegate {
                int ec = 0, wc = 0;

                foreach (var t in TaskService.Errors)
                {
                    if (t.Severity == TaskSeverity.Error)
                    {
                        ec++;
                    }
                    else if (t.Severity == TaskSeverity.Warning)
                    {
                        wc++;
                    }
                }

                Runtime.RunInMainThread(delegate {
                    buildResults.Hidden      = (ec == 0 && wc == 0);
                    buildResults.ResultCount = ec > 0 ? ec : wc;
                    buildResults.Type        = ec > 0 ? BuildResultsView.ResultsType.Error : BuildResultsView.ResultsType.Warning;

                    buildImageId           = ec > 0 ? "md-status-error-count" : "md-status-warning-count";
                    buildResults.IconImage = ImageService.GetIcon(buildImageId, Gtk.IconSize.Menu).ToNSImage();

                    RepositionStatusIcons();
                });
            };

            updateHandler(null, null);

            TaskService.Errors.TasksAdded          += updateHandler;
            TaskService.Errors.TasksRemoved        += updateHandler;
            BrandingService.ApplicationNameChanged += ApplicationNameChanged;

            AddSubview(cancelButton);
            AddSubview(buildResults);
            AddSubview(imageView);
            AddSubview(textField);

            progressView = new ProgressView();
            AddSubview(progressView);

            var newChildren = new NSObject [] {
                textField, buildResults, progressView
            };

            AccessibilityChildren = newChildren;
        }
Beispiel #13
0
        public StatusBar()
        {
            Cell       = new ColoredButtonCell();
            BezelStyle = NSBezelStyle.TexturedRounded;
            Title      = "";
            Enabled    = false;

            LoadStyles();

            // We don't need to resize the Statusbar here as a style change will trigger a complete relayout of the Awesomebar
            Ide.Gui.Styles.Changed += LoadStyles;

            textField.Cell             = new VerticallyCenteredTextFieldCell(0f);
            textField.Cell.StringValue = "";
            UpdateApplicationNamePlaceholderText();

            // The rect is empty because we use InVisibleRect to track the whole of the view.
            textFieldArea = new NSTrackingArea(CGRect.Empty, NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveInKeyWindow | NSTrackingAreaOptions.InVisibleRect, this, null);
            textField.AddTrackingArea(textFieldArea);

            imageView.Frame = new CGRect(0.5, 0, 0, 0);
            imageView.Image = ImageService.GetIcon(Stock.StatusSteady).ToNSImage();

            buildResults        = new BuildResultsView();
            buildResults.Hidden = true;

            ctxHandler = new StatusBarContextHandler(this);

            updateHandler = delegate {
                int ec = 0, wc = 0;

                foreach (var t in TaskService.Errors)
                {
                    if (t.Severity == TaskSeverity.Error)
                    {
                        ec++;
                    }
                    else if (t.Severity == TaskSeverity.Warning)
                    {
                        wc++;
                    }
                }

                Runtime.RunInMainThread(delegate {
                    buildResults.Hidden      = (ec == 0 && wc == 0);
                    buildResults.ResultCount = ec > 0 ? ec : wc;

                    buildImageId           = ec > 0 ? "md-status-error-count" : "md-status-warning-count";
                    buildResults.IconImage = ImageService.GetIcon(buildImageId, Gtk.IconSize.Menu).ToNSImage();

                    RepositionStatusIcons();
                });
            };

            updateHandler(null, null);

            TaskService.Errors.TasksAdded          += updateHandler;
            TaskService.Errors.TasksRemoved        += updateHandler;
            BrandingService.ApplicationNameChanged += ApplicationNameChanged;

            AddSubview(buildResults);
            AddSubview(imageView);
            AddSubview(textField);

            progressView = new ProgressView();
            AddSubview(progressView);
        }
Beispiel #14
0
 public override void ViewWillMoveToWindow(NSWindow newWindow)
 {
     if (_trackingArea != null) RemoveTrackingArea(_trackingArea);
     _trackingArea = new NSTrackingArea(Frame,
                           	NSTrackingAreaOptions.MouseMoved |
                             NSTrackingAreaOptions.MouseEnteredAndExited |
                             NSTrackingAreaOptions.EnabledDuringMouseDrag |
                             NSTrackingAreaOptions.ActiveAlways |
                             NSTrackingAreaOptions.InVisibleRect,
                           this, new NSDictionary());
     AddTrackingArea(_trackingArea);
 }
Beispiel #15
0
        public override void UpdateTrackingAreas()
        {
            base.UpdateTrackingAreas();
            if (_mouseTrackingArea != null)
            {
                RemoveTrackingArea(_mouseTrackingArea);
            }

            _mouseTrackingArea = new NSTrackingArea(new RectangleF(-4, -4, Bounds.Width, Bounds.Height),
                NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveAlways,
                this, null
            );

            AddTrackingArea(_mouseTrackingArea);
        }
Beispiel #16
0
 public static void Destroy(NSView aView, NSTrackingArea aTrackingArea)
 {
     aView.RemoveTrackingArea(aTrackingArea);
     aTrackingArea.Release();
 }
Beispiel #17
0
		void ReconstructString ()
		{
			if (string.IsNullOrEmpty (text)) {
				textField.AttributedStringValue = new NSAttributedString ("");
				imageView.Image = ImageService.GetIcon (Stock.StatusSteady).ToNSImage ();
			} else {
				textField.AttributedStringValue = GetStatusString (text, textColor);
				imageView.Image = image;
			}

			var width = textField.AttributedStringValue.BoundingRectWithSize (new CGSize (nfloat.MaxValue, textField.Frame.Height),
				NSStringDrawingOptions.UsesFontLeading | NSStringDrawingOptions.UsesLineFragmentOrigin).Width;

			if (textFieldArea != null) {
				RemoveTrackingArea (textFieldArea);
				DestroyPopover ();
			}

			if (width > textField.Frame.Width) {
				textFieldArea = new NSTrackingArea (textField.Frame, NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveInKeyWindow, this, null);
				AddTrackingArea (textFieldArea);
			} else
				textFieldArea = null;
		}
Beispiel #18
0
		public StatusBar ()
		{
			Cell = new ColoredButtonCell ();
			BezelStyle = NSBezelStyle.TexturedRounded;
			Title = "";
			Enabled = false;

			LoadStyles ();

			// We don't need to resize the Statusbar here as a style change will trigger a complete relayout of the Awesomebar
			Ide.Gui.Styles.Changed += LoadStyles;

			textField.Cell = new VerticallyCenteredTextFieldCell (0f);
			textField.Cell.StringValue = "";
			UpdateApplicationNamePlaceholderText ();

			// The rect is empty because we use InVisibleRect to track the whole of the view.
			textFieldArea = new NSTrackingArea (CGRect.Empty, NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveInKeyWindow | NSTrackingAreaOptions.InVisibleRect, this, null);
			textField.AddTrackingArea (textFieldArea);

			imageView.Frame = new CGRect (0.5, 0, 0, 0);
			imageView.Image = ImageService.GetIcon (Stock.StatusSteady).ToNSImage ();

			buildResults = new BuildResultsView ();
			buildResults.Hidden = true;

			cancelButton = new CancelButton ();
			cancelButton.Activated += (o, e) => {
				cts?.Cancel ();
			};

			ctxHandler = new StatusBarContextHandler (this);

			updateHandler = delegate {
				int ec = 0, wc = 0;

				foreach (var t in TaskService.Errors) {
					if (t.Severity == TaskSeverity.Error)
						ec++;
					else if (t.Severity == TaskSeverity.Warning)
						wc++;
				}

				Runtime.RunInMainThread (delegate {
					buildResults.Hidden = (ec == 0 && wc == 0);
					buildResults.ResultCount = ec > 0 ? ec : wc;

					buildImageId = ec > 0 ? "md-status-error-count" : "md-status-warning-count";
					buildResults.IconImage = ImageService.GetIcon (buildImageId, Gtk.IconSize.Menu).ToNSImage ();

					RepositionStatusIcons ();
				});
			};

			updateHandler (null, null);

			TaskService.Errors.TasksAdded += updateHandler;
			TaskService.Errors.TasksRemoved += updateHandler;
			BrandingService.ApplicationNameChanged += ApplicationNameChanged;

			AddSubview (cancelButton);
			AddSubview (buildResults);
			AddSubview (imageView);
			AddSubview (textField);

			progressView = new ProgressView ();
			AddSubview (progressView);
		}
Beispiel #19
0
		internal void RepositionStatusLayers ()
		{
			nfloat right = Layer.Frame.Width;
			CATransaction.DisableActions = true;
			foreach (var item in Layer.Sublayers) {
				if (item.Name != null && item.Name.StartsWith (StatusIconPrefixId, StringComparison.Ordinal)) {
					var icon = layerToStatus [item.Name];
					RemoveTrackingArea (icon.TrackingArea);

					right -= item.Bounds.Width + 6;
					item.Frame = new CGRect (right, 3, item.Bounds.Width, item.Bounds.Height);

					var area = new NSTrackingArea (item.Frame, NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveInKeyWindow, this, null);
					AddTrackingArea (area);

					icon.TrackingArea = area;
				}
			}

			nfloat buildResultPosition = DrawBuildResults ();
			CATransaction.DisableActions = false;
			if (buildResultPosition < right) { // We have a build result layer.
				textField.SetFrameSize (new CGSize (buildResultPosition - 6 - textField.Frame.Left, Frame.Height));
			} else
				textField.SetFrameSize (new CGSize (right - 6 - textField.Frame.Left, Frame.Height));
		}
            private void InitializeTrackingArea()
            {
                var area = new NSTrackingArea(Frame, NSTrackingAreaOptions.ActiveInKeyWindow | NSTrackingAreaOptions.MouseEnteredAndExited, this, null);

                AddTrackingArea(area);
            }
Beispiel #21
0
		public StatusIcon (StatusBar bar, CALayer layer, NSTrackingArea trackingArea)
		{
			this.bar = bar;
			this.layer = layer;
			TrackingArea = trackingArea;
		}
Beispiel #22
0
 public StatusIcon(StatusBar bar, CALayer layer, NSTrackingArea trackingArea)
 {
     this.bar     = bar;
     this.layer   = layer;
     TrackingArea = trackingArea;
 }
        public override void WindowDidLoad()
        {
            NSView containingView = this.Window.ContentView.Superview;

            NSTrackingArea area = new NSTrackingArea(containingView.Frame,
                                                     NSTrackingAreaOptions.NSTrackingMouseEnteredAndExited |
                                                     NSTrackingAreaOptions.NSTrackingActiveInActiveApp |
                                                     NSTrackingAreaOptions.NSTrackingInVisibleRect, this, null);
            containingView.AddTrackingArea(area);
            area.Release();

            NSTimer timer = NSTimer.ScheduledTimerWithTimeIntervalTargetSelectorUserInfoRepeats(4.0f, this, ObjectiveCRuntime.Selector("startFade:"), null, false);
            this.SetFadeTimer(timer);
        }
Beispiel #24
0
        private void Initialize()
        {
            WantsLayer = true;
            OnTrackBarValueChanged += () => {};
            OnTrackBarMouseDown += () => {};
            OnTrackBarMouseUp += () => {};

            // Add tracking area to receive mouse move and mouse dragged events
            var opts = NSTrackingAreaOptions.ActiveAlways | NSTrackingAreaOptions.InVisibleRect | NSTrackingAreaOptions.MouseMoved | NSTrackingAreaOptions.EnabledDuringMouseDrag;
            var trackingArea = new NSTrackingArea(Bounds, opts, this, new NSDictionary());
            AddTrackingArea(trackingArea);

            _control = new TrackBarControl();    
            _control.OnTrackBarValueChanged += () => {
                OnTrackBarValueChanged();
            };
            _control.OnInvalidateVisual += () => InvokeOnMainThread(() => SetNeedsDisplayInRect(Bounds));
            _control.OnInvalidateVisualInRect += (rect) => InvokeOnMainThread(() => SetNeedsDisplayInRect(GenericControlHelper.ToRect(rect)));
        }
Beispiel #25
0
		public override void ViewWillMoveToWindow (NSWindow newWindow)
		{
			//Console.WriteLine("View will move to window");
			if (_trackingArea != null) RemoveTrackingArea(_trackingArea);
			_trackingArea = new NSTrackingArea(Frame,
			                      	NSTrackingAreaOptions.MouseMoved | 
			                        NSTrackingAreaOptions.MouseEnteredAndExited |
			                        NSTrackingAreaOptions.EnabledDuringMouseDrag |
			                        NSTrackingAreaOptions.ActiveWhenFirstResponder |
			                        NSTrackingAreaOptions.InVisibleRect |
				NSTrackingAreaOptions.CursorUpdate,
			                      this, new NSDictionary());
			AddTrackingArea(_trackingArea);

		}
Beispiel #26
0
        public StatusBar()
        {
            AllowsEditingTextAttributes = Selectable = Editable = false;

            textField.Cell             = new VerticallyCenteredTextFieldCell(yOffset: -0.5f);
            textField.Cell.StringValue = "";
            textField.Cell.PlaceholderAttributedString = GetStatusString(BrandingService.ApplicationName, NSColor.DisabledControlText);

            // The rect is empty because we use InVisibleRect to track the whole of the view.
            textFieldArea = new NSTrackingArea(CGRect.Empty, NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveInKeyWindow | NSTrackingAreaOptions.InVisibleRect, this, null);
            textField.AddTrackingArea(textFieldArea);

            imageView.Image = ImageService.GetIcon(Stock.StatusSteady).ToNSImage();

            buildResults        = new BuildResultsView();
            buildResults.Hidden = true;
            AddSubview(buildResults);

            // Fixes a render glitch of a whiter bg than the others.
            if (MacSystemInformation.OsVersion >= MacSystemInformation.Yosemite)
            {
                BezelStyle = NSTextFieldBezelStyle.Rounded;
            }

            WantsLayer         = true;
            Layer.CornerRadius = MacSystemInformation.OsVersion >= MacSystemInformation.ElCapitan ? 6 : 4;
            ctxHandler         = new StatusBarContextHandler(this);

            updateHandler = delegate {
                int ec = 0, wc = 0;

                foreach (var t in TaskService.Errors)
                {
                    if (t.Severity == TaskSeverity.Error)
                    {
                        ec++;
                    }
                    else if (t.Severity == TaskSeverity.Warning)
                    {
                        wc++;
                    }
                }

                Runtime.RunInMainThread(delegate {
                    buildResults.Hidden      = (ec == 0 && wc == 0);
                    buildResults.ResultCount = ec > 0 ? ec : wc;

                    buildImageId           = ec > 0 ? "md-status-error-count" : "md-status-warning-count";
                    buildResults.IconImage = ImageService.GetIcon(buildImageId, Gtk.IconSize.Menu).ToNSImage();

                    RepositionStatusIcons();
                });
            };

            updateHandler(null, null);

            TaskService.Errors.TasksAdded   += updateHandler;
            TaskService.Errors.TasksRemoved += updateHandler;

            AddSubview(imageView);
            AddSubview(textField);
        }