示例#1
0
        public void CaptureSnapshot(TestObjectNurse nurseObject)
        {
            string token = null;

            UIATestObject testObject = nurseObject.TestObject as UIATestObject;

            if (testObject == null)
            {
                return;                     //not the UIA object
            }
            AutomationElement element = testObject.AutomationElement;

            if (SpySettings.CaptureSnapshots)
            {
                try
                {
                    //capture snapshot of clicked area
                    SnapshotHelper.CaptureTempSnapshot(element, out token);
                }
                catch (ElementNotAvailableException)
                {
                    MessageBox.Show(StringResources.LPSpy_SpyMainWindow_CannotFindObjectMsg);
                }
                catch (ApplicationException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

            nurseObject.ImageFile = SnapshotHelper.GetCachedSnapshot(token, nurseObject.ImageFile);


            AppEnvironment.SetModelChanged(true);
        }
示例#2
0
        private void btnAddProperty_Click(object sender, EventArgs e)
        {
            if (_nurseObject == null)
            {
                MessageBox.Show(StringResources.LPSpy_SpyMainWindow_SelectobjMsg);
                return;
            }

            addPropertyWindow = new AddPropertiesWindow();

            addPropertyWindow.Tag   = _nurseObject.TreeNode;
            addPropertyWindow.Owner = this.ParentForm;

            if (addPropertyWindow.EndUpdating == null)
            {
                addPropertyWindow.EndUpdating = new AddPropertiesWindow.EndAddingProperty(
                    nurseObject =>
                {
                    propertyGrid.SetTestObject(nurseObject);
                    AppEnvironment.SetModelChanged(true);
                }
                    );
            }

            addPropertyWindow.ShowDialog();
        }
示例#3
0
        /// <summary>
        /// create a new empty model
        /// </summary>
        /// <param name="filePath"></param>
        internal void NewModel(string filePath)
        {
            RootNurseObject.Clear();

            _nodeView.NodeChanged(null);

            AppEnvironment.CurrentModelPath = filePath;
            AppEnvironment.SetModelChanged(false);
        }
示例#4
0
        public static bool Save(TestObjectNurse rootNurseObject)
        {
            bool succeed = ModelFileHandler.SaveToModelFile(rootNurseObject);

            if (succeed)
            {
                AppEnvironment.SetModelChanged(false);
            }

            SpySettings.Persist();
            return(succeed);
        }
示例#5
0
        public void mnuPropertyRemove_Click(object sender, EventArgs e)
        {
            string key = this.SelectedGridItem.PropertyDescriptor.Name;
            TestObjectNurse nurseObject = (TestObjectNurse)this.Tag;
            if (SpyWindowHelper.DeleteSelectedProperties(key, nurseObject.TestObject))
            {
                SetTestObject(nurseObject);

                AppEnvironment.SetModelChanged(true);
            }

        }
示例#6
0
        private void UpdateNodePropertyCompleteHandler(ResultType result)
        {
            if (ResultType.OK == result)
            {
                AppEnvironment.SetModelChanged(true);

                //TODO Is this necessary?
                //SelectedNodesChanged(_selectedNode);
            }
            else if (ResultType.NotSameControlType == result)
            {
                MessageBox.Show(StringResources.LPSpy_SpyMainWindow_RefreshobjNotMatchWarningMsg,
                                StringResources.LPSpy_SpyMainWindow_RefreshobjWarningTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
示例#7
0
        public void SetTestObject(TestObjectNurse testNurse)
        {
            if (testNurse == null)
            {
                this.SelectedObject = null;
                return;
            }
            TestObjectPropertyBag propertyBag = this.SelectedObject as TestObjectPropertyBag;
            if (propertyBag != null)
            {
                //dispose the old object
                propertyBag.Dispose();
            }
            propertyBag = new TestObjectPropertyBag(testNurse);
            propertyBag.PropertyChanged += () => { AppEnvironment.SetModelChanged(true); };
            this.SelectedObject = propertyBag;
            this.Tag = testNurse; //cache5 it for use later (editing properties)

        }
示例#8
0
        internal void EditVirtualControl(TestObjectNurse nurseObject)
        {
            if (nurseObject.ControlTypeString == NodeType.VirtualControl)
            {
                nurseObject = nurseObject.ParentNurse;

                Debug.Assert(nurseObject.TestObject is UIATestObject);
            }

            if (nurseObject.ImageFile == null)
            {
                //"Please capture the screen shot of the control before editing virtual controls"
                MessageBox.Show(StringResources.LPSpy_SpyMainWindow_CaptureSnapshotFirst);
                return;
            }

            string imagePath = AppEnvironment.GetModelResourceFilePath(nurseObject.ImageFile);

            VirtualTestObject[] virtualControls = VirtualControlHelper.GetVirtualControls(nurseObject.TestObject);

            System.Drawing.Image controlImage = System.Drawing.Image.FromFile(imagePath);

            UIATestObject testObject = (UIATestObject)nurseObject.TestObject;

            bool changed = VirtualControlHelper.EditVirtualControls(testObject, controlImage, ref virtualControls);

            if (changed)
            {
                VirtualTestObject[] updatedControls = virtualControls;

                bool different = TreeNodeHelper.MergeVirtualControlsToTree(updatedControls, nurseObject.TreeNode);

                nurseObject.TreeNode.Expand();

                if (different)
                {
                    AppEnvironment.SetModelChanged(true);
                }
            }
        }