/// <summary> /// Constructor /// </summary> /// <param name="factory">Factory of position objects</param> public VisibleFactory(IPositionObjectFactory factory) { DeleteTextures(); this.factory = factory; PositionObjectFactory.Factory = factory; PureDesktop.DesktopPostLoad += (Diagram.UI.Interfaces.IDesktop d) => { DeleteTextures(); }; }
/// <summary> /// Creates application form /// </summary> /// <param name="coordinator">Database coordinator</param> /// <param name="holder">byte holder for editor of proprerties</param> /// <param name="ordSolver">Ordinary differential equations solver</param> /// <param name="diffProcessor">Ordinary differential equations processor</param> /// <param name="initializers">Array of initializers</param> /// <param name="factories">UI Factotries</param> /// <param name="throwsRepeatException">The "throw exception for repeat" sign</param> /// <param name="buttons">Palette buttons</param> /// <param name="icon">Form icon</param> /// <param name="positionFactory">Position factory</param> /// <param name="filename">File name</param> /// <param name="resources">Localization resourses</param> /// <param name="text">Caption text</param> /// <param name="ext">File extesion</param> /// <returns>The Application form</returns> public static BasicEngineering.UI.Factory.Advanced.Forms.FormMain CreateForm(IDatabaseCoordinator coordinator, ByteHolder holder, OrdinaryDifferentialEquations.IDifferentialEquationSolver ordSolver, DataPerformer.Portable.DifferentialEquationProcessors.DifferentialEquationProcessor diffProcessor, IApplicationInitializer[] initializers, IUIFactory[] factories, bool throwsRepeatException, LightDictionary <string, ButtonWrapper[]> buttons, Icon icon, IPositionObjectFactory positionFactory, string filename, Dictionary <string, object>[] resources, string text, string ext, string fileFilter, TextWriter logWriter, TestCategory.Interfaces.ITestInterface testInterface) { Motion6D.PositionFactory.Factory = Motion6D.Drawing.Factory.ColoredPositionFactory.Object; Motion6D.UI.UserControls.SimpleChooser.Chooser = Motion6D.UI.UserControls.ColoredChooser.Object; List <IUIFactory> fact = null; if (factories == null) { fact = new List <IUIFactory>(); } else { fact = new List <IUIFactory>(factories); } fact.Add(MotionFactory.Object); if (positionFactory != null) { VisibleFactory vf = new VisibleFactory(positionFactory); fact.Add(vf); } List <IApplicationInitializer> apps = new List <IApplicationInitializer>(initializers); apps.Add(Motion6D.ApplicationInitializer.Object); apps.Add(Event.Basic.ApplicationInitializer.Singleton); FormMain form = DefaultApplicationCreator.CreateForm(coordinator, holder, ordSolver, diffProcessor, Motion6D.Runtime.DataRuntimeFactory.Object, apps.ToArray(), fact.ToArray(), throwsRepeatException, buttons, icon, filename, resources, text, ext, fileFilter, logWriter, testInterface); StaticExtensionMotion6D.Animation = form; return(form); }
/// <summary> /// Gets visual object buttons /// </summary> /// <param name="factory">The factory</param> /// <returns>Buttons</returns> public static ButtonWrapper[] GetVisualObjectButtons(IPositionObjectFactory factory) { if (factory == null) { return(new ButtonWrapper[0]); } ButtonWrapper[] b = new ButtonWrapper[] { new ButtonWrapper(factory.CameraType, "", "Camera", ResourceImage.Camera, null, true, false), new ButtonWrapper(typeof(Motion6D.SerializablePosition), "", "3D Object", ResourceImage.Cube, null, true, false), new ButtonWrapper(typeof(Motion6D.SerializablePosition), "Collection", "3D Object Collection", ResourceImage.CubeCollection, null, true, false), new ButtonWrapper(typeof(Motion6D.SerializablePosition), "Deformed figure", "Deformed object", ResourceImage.FormFigure, null, true, false), new ButtonWrapper(typeof(Motion6D.SerializablePosition), "3D Field Consumer", "Consumer of 3D field", ResourceImage.Field3D_Consumer, null, true, false), new ButtonWrapper(typeof(Motion6D.SerializablePosition), "Reper", "Reper", ResourceImage.Reper, null, true, false), }; List <ButtonWrapper> l = new List <ButtonWrapper>(); foreach (ButtonWrapper bw in b) { if (factory.SupportsKind(bw.Kind)) { l.Add(bw); } } FieldInfo fi = factory.GetType().GetField("Buttons"); if (fi != null) { l.AddRange(fi.GetValue(fi) as ButtonWrapper[]); } b = l.ToArray(); return(b); }