コード例 #1
0
        void controlBar_AddZoneCommand(object sender, AddObjectEventArgs e)
        {
            Point centerStart = zoomCanvas.PointFromScreen(e.Center);

            Point centerTarget = new Point(zoomCanvas.ActualWidth / 2 + rand.Next(-100, 100),
                                           zoomCanvas.ActualHeight / 2 + rand.Next(-100, 100));

            double orientationStart  = -180;
            double orientationTarget = 0;

            Vector scaleStart  = new Vector(0.2, 0.2);
            Vector scaleTarget = zoomCanvas.ViewScaleInvert * 3;

            if (e.IsMap)
            {
                GenerateMapModel(centerStart, centerTarget, orientationStart, orientationTarget, scaleStart, scaleTarget);
            }
            else
            {
                ShowZoneModel zoneModel = new ShowZoneModel();
                zoneModel.Text = "Zone";

                ShowView view = GenerateModel(zoneModel, centerStart, centerTarget, orientationStart, orientationTarget, scaleStart, scaleTarget);

                textEntry.SelectCursor(view);
                textEntry.SelectAll = true;
            }
        }
コード例 #2
0
ファイル: Scene.cs プロジェクト: JulianoCristian/EngineGL
        public Result <IObject> AddObject(IObject obj)
        {
            if (!_sceneObjects.ContainsKey(obj.InstanceGuid))
            {
                AddObjectEventArgs args = new AddObjectEventArgs(this, obj);
                EventManager <AddObjectEventArgs> manager
                    = new EventManager <AddObjectEventArgs>(AddObjectEvent, this, args);
                manager.OnSuccess = ev =>
                {
                    ev.AddObject.Scene = this;
                    return(_sceneObjects.TryAdd(ev.AddObject.InstanceGuid, ev.AddObject));
                };

                if (manager.Call())
                {
                    args.AddObject.OnInitialze();
                    if (args.AddObject is IDrawable)
                    {
                        _drawables.Add(args.AddObject.InstanceGuid, (IDrawable)args.AddObject);
                    }
                    return(Result <IObject> .Success(args.AddObject));
                }
                else
                {
                    return(Result <IObject> .Fail());
                }
            }

            return(Result <IObject> .Fail());
        }
コード例 #3
0
        public Result <IObject> AddObject(IObject obj)
        {
            if (!_sceneObjects.ContainsKey(obj.InstanceGuid))
            {
                AddObjectEventArgs args = new AddObjectEventArgs(this, obj);
                EventManager <AddObjectEventArgs> manager
                          = new EventManager <AddObjectEventArgs>(AddObjectEvent, this, args);
                obj.Scene = this;
                _sceneObjects.TryAdd(obj.InstanceGuid, obj);

                manager.Call();
                args.AddObject.OnInitialze();
                if (args.AddObject is IComponentAttachable componentAttachable)
                {
                    foreach (IComponent component in componentAttachable.GetComponents().Value)
                    {
                        if (component is IDrawable drawable)
                        {
                            _drawables.Add(component.InstanceGuid, drawable);
                        }
                    }
                }

                return(Result <IObject> .Success(args.AddObject));
            }
            else
            {
                return(Result <IObject> .Fail());
            }
        }
コード例 #4
0
 /// ------------------------------------------------------------------------------------
 /// <summary>
 /// Validation done before adding an object to some vector flid.
 /// </summary>
 /// <exception cref="InvalidOperationException">The addition is not valid</exception>
 /// ------------------------------------------------------------------------------------
 protected override void ValidateAddObjectInternal(AddObjectEventArgs e)
 {
     if (e.Flid == ScrFootnoteTags.kflidParagraphs && ParagraphsOS.Count >= s_maxAllowedParagraphs)
     {
         throw new InvalidOperationException("Scripture footnotes are limited to " + s_maxAllowedParagraphs + " paragraph(s).");
     }
     base.ValidateAddObjectInternal(e);
 }
コード例 #5
0
        // JohnT: this was once overridden to delete the associated CmFile also, if nothing else uses it.
        // However we can no longer be sure of this without searching all strings in the system to see whether
        // any contain embedded links to the file. For now we are just accepting that some CmFiles will leak.
        //internal override void OnBeforeObjectDeleted()

        protected override void AddObjectSideEffectsInternal(AddObjectEventArgs e)
        {
            if (e.Flid == CmPictureTags.kflidDoNotPublishIn)
            {
                var uowService = ((IServiceLocatorInternal)Services).UnitOfWorkService;
                uowService.RegisterVirtualAsModified(this, "PublishIn", PublishIn.Cast <ICmObject>());
            }
            base.AddObjectSideEffectsInternal(e);
        }
コード例 #6
0
        protected override void AddObjectSideEffectsInternal(AddObjectEventArgs e)
        {
            if (e.Flid == RnResearchNbkTags.kflidRecords)
            {
                UpdateAllRecords();
            }

            base.AddObjectSideEffectsInternal(e);
        }
コード例 #7
0
        protected override void AddObjectSideEffectsInternal(AddObjectEventArgs e)
        {
            if (e.Flid == RnGenericRecTags.kflidSubRecords)
            {
                var notebook = OwnerOfClass <RnResearchNbk>();
                notebook.UpdateAllRecords();

                int       flid  = m_cache.MetaDataCache.GetFieldId2(RnGenericRecTags.kClassId, "IndexInOwnerTSS", false);
                ITsString dummy = m_cache.TsStrFactory.MakeString("", m_cache.DefaultAnalWs);
                RegisterAllSubrecordIndexTSSChanged(this.SubRecordsOS, flid, dummy);
                NoteSubrecordOfChanges(this, e.Index);
            }
            base.AddObjectSideEffectsInternal(e);
        }
コード例 #8
0
ファイル: StText.cs プロジェクト: vkarthim/liblcm
 /// ------------------------------------------------------------------------------------
 /// <summary>
 /// Overridden to allow special handling to prevent moving Scripture paragraphs to a
 /// different book.
 /// </summary>
 /// ------------------------------------------------------------------------------------
 protected override void ValidateAddObjectInternal(AddObjectEventArgs e)
 {
     if (e.Flid == StTextTags.kflidParagraphs &&
         e.ObjectAdded.Hvo != (int)SpecialHVOValues.kHvoUninitializedObject)
     {
         IScrBook originalOwningBook = e.ObjectAdded.OwnerOfClass <IScrBook>();
         if (originalOwningBook != null)
         {
             // this StText is the one that is to be the new owner.
             IScrBook newOwningBook = OwnerOfClass <IScrBook>();
             if (newOwningBook != originalOwningBook)
             {
                 throw new InvalidOperationException("Scripture pargraphs cannot be moved between books.");
             }
         }
     }
     base.ValidateAddObjectInternal(e);
 }
コード例 #9
0
        void controlBar_AddImageCommand(object sender, AddObjectEventArgs e)
        {
            ShowImageModel imgModel = new ShowImageModel();

            imgModel.UriPath = e.UriPath;

            Point centerStart = zoomCanvas.PointFromScreen(e.Center);

            Point centerTarget = new Point(zoomCanvas.ActualWidth / 2 + rand.Next(-100, 100),
                                           zoomCanvas.ActualHeight / 2 + rand.Next(-100, 100));

            double orientationStart  = -180;
            double orientationTarget = 0;

            Vector scaleStart  = new Vector(0.1, 0.1);
            Vector scaleTarget = zoomCanvas.ViewScaleInvert;

            GenerateModel(imgModel, centerStart, centerTarget, orientationStart, orientationTarget, scaleStart, scaleTarget);
        }
コード例 #10
0
ファイル: StText.cs プロジェクト: vkarthim/liblcm
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// This version overrides the CmObject version. Handles various Scripture side effects
        /// and TagsOC modifications.
        /// </summary>
        /// <param name="e"></param>
        /// ------------------------------------------------------------------------------------
        protected override void AddObjectSideEffectsInternal(AddObjectEventArgs e)
        {
            // Prevent accidentally adding a plain StTxtPara to a Scripture text...
            // the ScrTxtPara subclass should always be used.
            // But watch out for the case (FWR-3477) where paragraph is owned by a CmPossibility first!
            if (e.Flid == StTextTags.kflidParagraphs &&
                (OwnerOfClass <IScripture>() != null && !(Owner is ICmPossibility)) &&
                !(e.ObjectAdded is ScrTxtPara))
            {
                throw new ArgumentException("Can not add object of type " + e.ObjectAdded.GetType() +
                                            " to this StText");
            }

            base.AddObjectSideEffectsInternal(e);

            //if (e.Flid == StTextTags.kflidTags)
            //    TextTagCollectionChanges(true, e.ObjectAdded);

            if (e.Flid == StTextTags.kflidParagraphs)
            {
                if (e.ObjectAdded is IScrTxtPara)
                {
                    IScrSection section = OwnerOfClass <IScrSection>();
                    if (section != null)
                    {
                        ((ScrSection)section).AdjustReferences();
                    }
                }

                if (e.Index == ParagraphsOS.Count - 1 && e.Index > 0)
                {
                    int flid = Services.GetInstance <Virtuals>().StParaIsFinalParaInText;
                    Services.GetInstance <IUnitOfWorkService>().RegisterVirtualAsModified(
                        ParagraphsOS[e.Index - 1], flid, true, false);
                }
            }
        }