Exemple #1
0
 internal override void PreRemoveChild(Atk.Object childToRemove)
 {
     if (splitter != null && childToRemove == splitter)
     {
         splitter = null;
         ParentAdapter parentAdapter = childToRemove as ParentAdapter;
         int           count         = parentAdapter.NAccessibleChildren;
         while (count > 0)
         {
             Atk.Object obj = parentAdapter.RefAccessibleChild(0);
             parentAdapter.RemoveChild(obj, false);
             SetParent(obj, this);
             AddOneChild(obj);
             count--;
         }
     }
     base.PreRemoveChild(childToRemove);
 }
        public static void SetMainWindow(this Atk.Object o, Atk.Object mainWindow)
        {
            var nsa = GetNSAccessibilityElement(o);

            if (nsa == null)
            {
                return;
            }

            var windowAccessible = GetNSAccessibilityElement(mainWindow);

            if (windowAccessible == null)
            {
                return;
            }

            nsa.AccessibilityMainWindow = (NSObject)windowAccessible;
        }
Exemple #3
0
        public static void MakeAccessibilityAnnouncement(this Atk.Object o, string message)
        {
            if (o == null)
            {
                return;
            }
            var nsObject = GetNSAccessibilityElement(o) as NSObject;

            if (nsObject == null)
            {
                return;
            }
            var dictionary =
                new NSDictionary(NSAccessibilityNotificationUserInfoKeys.AnnouncementKey, new NSString(message),
                                 NSAccessibilityNotificationUserInfoKeys.PriorityKey, NSAccessibilityPriorityLevel.High);

            NSAccessibility.PostNotification(nsObject, NSAccessibilityNotifications.AnnouncementRequestedNotification, dictionary);
        }
Exemple #4
0
        public virtual void RaiseAutomationEvent(AutomationEvent eventId, AutomationEventArgs e)
        {
            if (eventId != AutomationElementIdentifiers.AutomationFocusChangedEvent)
            {
                return;
            }

            Atk.Object parent = this;             //in case this.GetType () == typeof(UiaAtkBridge.Window)
            while (!(parent is UiaAtkBridge.Window))
            {
                if (parent == null)
                {
                    Log.Error("Parent of an object should not be null");
                    return;
                }
                parent = GetParent(parent);
            }
            TopLevelRootItem.Instance.CheckAndHandleNewActiveWindow((UiaAtkBridge.Window)parent);
        }
Exemple #5
0
        protected void NotifyFocused(bool focused)
        {
            Window focusWindow = null;

            // FIXME: Gail sends the events in a slighly different order:
            // window:activate , object:state-changed:focused, object:state-changed:active
            if (focused)
            {
                Atk.Object container = Parent;
                while (container != null)
                {
                    if (container is Window)
                    {
                        focusWindow = (Window)container;
                        TopLevelRootItem.Instance.CheckAndHandleNewActiveWindow(focusWindow);
                        break;
                    }
                    else if (container is Adapter)
                    {
                        focusWindow = ((Adapter)container).PrivateWindow;
                        if (focusWindow != null)
                        {
                            break;
                        }
                    }
                    container = container.Parent;
                }

                NotifyStateChange(Atk.StateType.Focused, focused);
            }

            if (focused)
            {
                GLib.Timeout.Add(0, new GLib.TimeoutHandler(delegate {
                    Atk.Focus.TrackerNotify(this);
                    return(false);
                }));
            }
            if (focusWindow != null)
            {
                focusWindow.SendActiveStateChange();
            }
        }
Exemple #6
0
        public static void States(Atk.Object accessible, params Atk.StateType [] expected)
        {
            List <Atk.StateType> expectedStates    = new List <Atk.StateType> (expected);
            List <Atk.StateType> missingStates     = new List <Atk.StateType> ();
            List <Atk.StateType> superfluousStates = new List <Atk.StateType> ();

            Atk.StateSet stateSet = accessible.RefStateSet();
            foreach (Atk.StateType state in Enum.GetValues(typeof(Atk.StateType)))
            {
                if (expectedStates.Contains(state) &&
                    (!(stateSet.ContainsState(state))))
                {
                    missingStates.Add(state);
                }
                else if ((!expectedStates.Contains(state)) &&
                         (stateSet.ContainsState(state)))
                {
                    superfluousStates.Add(state);
                }
            }

            string missingStatesMsg     = string.Empty;
            string superfluousStatesMsg = string.Empty;

            if (missingStates.Count != 0)
            {
                missingStatesMsg = "Missing states: ";
                foreach (Atk.StateType state in missingStates)
                {
                    missingStatesMsg += state.ToString() + ",";
                }
            }
            if (superfluousStates.Count != 0)
            {
                superfluousStatesMsg = "Superfluous states: ";
                foreach (Atk.StateType state in superfluousStates)
                {
                    superfluousStatesMsg += state.ToString() + ",";
                }
            }
            Assert.IsTrue((missingStates.Count == 0) && (superfluousStates.Count == 0),
                          missingStatesMsg + " .. " + superfluousStatesMsg);
        }
Exemple #7
0
 public override object CastToAtkInterface(Type t, Atk.Object accessible)
 {
     try {
         if (t == typeof(Atk.Action))
         {
             return(Atk.ActionAdapter.GetObject(accessible.Handle, false));
         }
         else if (t == typeof(Atk.Text))
         {
             return(Atk.TextAdapter.GetObject(accessible.Handle, false));
         }
         else if (t == typeof(Atk.Component))
         {
             return(Atk.ComponentAdapter.GetObject(accessible.Handle, false));
         }
         else if (t == typeof(Atk.EditableText))
         {
             return(Atk.EditableTextAdapter.GetObject(accessible.Handle, false));
         }
         else if (t == typeof(Atk.Image))
         {
             return(Atk.ImageAdapter.GetObject(accessible.Handle, false));
         }
         else if (t == typeof(Atk.Table))
         {
             return(Atk.TableAdapter.GetObject(accessible.Handle, false));
         }
         else if (t == typeof(Atk.Selection))
         {
             return(Atk.SelectionAdapter.GetObject(accessible.Handle, false));
         }
         else if (t == typeof(Atk.Value))
         {
             return(Atk.ValueAdapter.GetObject(accessible.Handle, false));
         }
         else
         {
             throw new NotImplementedException("Couldn't cast to interface " + t.Name);
         }
     } catch (ArgumentException) {
         return(null);
     }
 }
        public static void SetTabs(this Atk.Object o, params Atk.Object [] tabs)
        {
            var nsa = GetNSAccessibilityElement(o);

            if (nsa == null)
            {
                return;
            }

            NSObject [] realTabs = new NSObject [tabs.Length];
            int         i        = 0;

            foreach (var tab in tabs)
            {
                realTabs [i] = (NSObject)GetNSAccessibilityElement(tab);
                i++;
            }

            nsa.AccessibilityTabs = realTabs;
        }
Exemple #9
0
        internal override void AddOneChild(Atk.Object child)
        {
            base.AddOneChild(child);

            Adapter adapter = child as Adapter;

            if (adapter == null)
            {
                return;
            }

            for (int i = 0; i < NAccessibleChildren; i++)
            {
                Adapter currentChild = RefAccessibleChild(i) as Adapter;
                if (adapter.ParentProvider == currentChild.Provider)
                {
                    ((TreeItem)currentChild).NotifyChildAdded(adapter);
                }
            }
        }
Exemple #10
0
        public bool AddSelection(int i)
        {
            bool success = selectionHelper.AddSelection(i);

            if (success)
            {
                string propagateName = null;
                if (!selProvider.CanSelectMultiple)
                {
                    Atk.Object selected = RefSelection(0);
                    if (selected != null)
                    {
                        propagateName = selected.Name;
                    }
                }
                RaiseSelectionChanged(propagateName);
            }

            // TODO: Report gail bug, and return 'success' instead
            return(true);
        }
        public static void RemoveElementFromTitle(this Atk.Object title, Atk.Object o)
        {
            var titleNsa = GetNSAccessibilityElement(title);
            var nsa      = GetNSAccessibilityElement(o);

            if (nsa == null || titleNsa == null)
            {
                return;
            }

            if (titleNsa.AccessibilityServesAsTitleForUIElements == null)
            {
                return;
            }

            List <NSObject> oldElements = new List <NSObject> (titleNsa.AccessibilityServesAsTitleForUIElements);

            oldElements.Remove((NSObject)nsa);

            titleNsa.AccessibilityServesAsTitleForUIElements = oldElements.ToArray();
        }
Exemple #12
0
        internal override void RemoveChild(Atk.Object childToRemove)
        {
            int  childIndex      = children.IndexOf(childToRemove);
            bool cancelSelection = false;

            if (IsChildSelected(childIndex))
            {
                cancelSelection = true;
            }
            base.RemoveChild(childToRemove);
            if (children.Count <= 0 || cancelSelection)
            {
                ComboBox parent = Parent as ComboBox;
                if (parent != null)
                {
                    parent.RaiseSelectionChanged(null);
                }
                else
                {
                    Log.Error("Parent of a ComboBoxOptions is null or not a ComboBox");
                }
            }
        }
Exemple #13
0
        internal virtual void RemoveChild(Atk.Object childToRemove, bool terminate)
        {
            if (childToRemove == null) {
                //FIXME: better throw an ArgumentNullException
                return;
            }

            //Console.WriteLine ("RemoveChild: {0}", childToRemove.GetType ());

            if (childToRemove is ParentAdapter) {
                ((ParentAdapter)childToRemove).RemoveUnmanagedChildren ();
            }

            Adapter adapter = childToRemove as Adapter;
            if (adapter != null)
                adapter.RemoveFromParent (this, terminate);

            int childIndex;
            lock (syncRoot) {
                childIndex = children.IndexOf (childToRemove);
                children.Remove (childToRemove);
            }
            EmitChildrenChanged (Atk.Object.ChildrenChangedDetail.Remove, (uint)childIndex, childToRemove);
        }
Exemple #14
0
 public HyperlinkObject(Hyperlink resource, int index)
 {
     this.resource = resource;
     this.index    = index;
     this.obj      = new HyperlinkActor(resource, index);
 }
 public void AddTarget(Atk.Object target)
 {
     atk_relation_add_target(Handle, target == null ? IntPtr.Zero : target.Handle);
 }
 public static void SetTitleUIElement(this Atk.Object o, Atk.Object title)
 {
 }
 public static void SetAlternateUIVisible(this Atk.Object o, bool visible)
 {
 }
 public static void SetRole(this Atk.Object o, AtkCocoa.Roles role, string description = null)
 {
 }
 public static void SetSubRole(this Atk.Object o, string subrole)
 {
 }
 public static void SetValue(this Atk.Object o, string stringValue)
 {
 }
 public static void SetUrl(this Atk.Object o, string url)
 {
 }
 public static void SetMainWindow(this Atk.Object o, Atk.Object mainWindow)
 {
 }
Exemple #23
0
		public HyperlinkObject (Hyperlink resource, int index)
		{
			this.resource = resource;
			this.index = index;
			this.obj = new HyperlinkActor (resource, index);
		}
Exemple #24
0
 public void SetColumnHeader(int column, Atk.Object header)
 {
     tableExpert.SetColumnHeader(column, header);
 }
Exemple #25
0
 public void SetRowHeader(int row, Atk.Object header)
 {
 }
Exemple #26
0
 void InvokeNative(Atk.Object obj)
 {
     native_cb(obj == null ? IntPtr.Zero : obj.Handle);
 }
Exemple #27
0
 public void SetColumnHeader(int column, Atk.Object header)
 {
 }
 public static void SetFilename(this Atk.Object o, string filename)
 {
 }
 public ActionDelegate(Gtk.Widget widget)
 {
     widget.Destroyed += WidgetDestroyed;
     Owner             = widget.Accessible;
 }
 public static void SetIsMainWindow(this Atk.Object o, bool isMainWindow)
 {
 }
Exemple #31
0
 public void SetRowHeader(int row, Atk.Object header)
 {
     tableExpert.SetRowHeader(row, header);
 }
Exemple #32
0
		internal void ConvertCoords (ref int x, ref int y, bool toScreen)
		{
			Adapter adapter = this;
			int mult = (toScreen? 1: -1);
			for (;;) {
				Adapter parent = adapter.Parent as Adapter;
				if (this is ContextMenu)
					parent = VirtualParent;
				if (parent == null || parent is TopLevelRootItem) {
					if (adapter is Window) {
						System.Windows.Rect rect = adapter.BoundingRectangle;
						x += (int)rect.X * mult;
						y += (int)rect.Y * mult;
					}
					return;
				}
				adapter = parent;
			}
		}