private void CheckPosition(int x, int y, ComponentAction action, Action onNoMatch = null) { if (this.components.Count == 0) { return; } for (int i = 0; i < 3; i++) { if (this.components[i].containsPoint(x, y)) { action(null, i); return; } } for (int i = 3; i < this.components.Count; i++) { if (this.components[i].containsPoint(x, y)) { action(this.statuses[(i - 3) / UpdateMenu.sections.Length], i % UpdateMenu.sections.Length); return; } } onNoMatch?.Invoke(); }
public Component() { codeField = new Code(); dependencyField = new ObservableCollection <Dependency>(); parameterField = new ObservableCollection <Parameter>(); actionField = ComponentAction.None; languageField = Language.csharp; }
/// <summary> /// Call a function on a component if it exists. Useful for one-off components that won't need to be reused. /// </summary> /// <param name="action">The function to be called.</param> /// <typeparam name="T">The type of component to call on.</typeparam> /// <returns>Whether or not the component exists.</returns> public static bool GetComponentCallbackOrIgnore <T>(this GameObject gameObject, ComponentAction <T> action) where T : Component { var component = gameObject.GetComponent <T>(); if (component == null) { return(false); } action(component); return(true); }
protected void PrintReturnCode(InstallResult result, IComponent package, ComponentAction executeAction) { if (result.IsFailure()) { var installResultDetails = GetInstallResultDetails(result, package, executeAction.ToString().ToLowerInvariant()); LogFailure(package, executeAction, installResultDetails); } else { var text = "Result: " + result; Logger.Trace("Package executed successfully. {0}", text); } }
private bool DownloadRequired(ComponentAction action, IComponent component) { if (action != ComponentAction.Update) { return(false); } if (component.CurrentState == CurrentState.Downloaded && ComponentDownloadPathStorage.Instance.TryGetValue(component, out _)) { return(false); } return(true); }
public async Task VersionHigher() { var dependency = new Dependency(); dependency.Name = "FocLauncher.dll"; dependency.Version = "2.0.0.0"; dependency.Destination = ApplicationBasePath; dependency.Origin = "https://example.com"; var component = CatalogExtensions.DependencyToComponent(dependency); const ComponentAction expected = ComponentAction.Update; await _updateManager.CalculateComponentStatusAsync(component); Assert.AreEqual(expected, component.RequiredAction); }
public async Task VersionNotSpecifiedShaNotEqual() { var dependency = new Dependency(); dependency.Name = "FocLauncher.dll"; dependency.Destination = ApplicationBasePath; dependency.Sha2 = UpdaterUtilities.HexToArray("d32b568cd1b96d459e7291ebf4b25d007f275c9f13149beeb782fac0716613f8"); dependency.Origin = "https://example.com"; var component = CatalogExtensions.DependencyToComponent(dependency); const ComponentAction expected = ComponentAction.Update; await _updateManager.CalculateComponentStatusAsync(component); Assert.AreEqual(expected, component.RequiredAction); }
public async Task VersionEqualShaEqual() { var dependency = new Dependency(); dependency.Name = "FocLauncher.dll"; dependency.Version = "1.0.0.0"; dependency.Destination = ApplicationBasePath; dependency.Sha2 = UpdaterUtilities.GetFileHash(Path.Combine(ApplicationBasePath, dependency.Name), HashType.Sha256); dependency.Origin = "https://example.com"; var component = CatalogExtensions.DependencyToComponent(dependency); const ComponentAction expected = ComponentAction.Keep; await _updateManager.CalculateComponentStatusAsync(component); Assert.AreEqual(expected, component.RequiredAction); }
public static string ComponentActionToString(ComponentAction _action) { switch (_action) { case ComponentAction.CREATE: return("CREATE"); case ComponentAction.DELETE: return("DELETE"); case ComponentAction.UPDATE: return("UPDATE"); default: return("NONE"); } }
public ComponentActionAdapter(ComponentAction target) { _target = target; }
private PackageActivities CreateDownloadInstallActivities(IComponent component, ComponentAction action, bool isPresent) { ComponentDownloadTask downloadComponent; ComponentInstallTask install; if (DownloadRequired(action, component)) { downloadComponent = new ComponentDownloadTask(component); downloadComponent.Canceled += (_, __) => _linkedCancellationTokenSource?.Cancel(); install = new ComponentInstallTask(component, action, downloadComponent, isPresent); } else { downloadComponent = null; install = new ComponentInstallTask(component, action, isPresent); } return(new PackageActivities { Download = downloadComponent, Install = install }); }
private static void LogFailure(IComponent package, ComponentAction executeAction, string details) { Logger.Error(package != null ? $"Package '{package.Name}' failed to {executeAction.ToString().ToLowerInvariant()}. {details}" : $"Failed to {executeAction.ToString().ToLowerInvariant()}. {details}"); }
public static void TranslateIntoComponents(List <ComponentMessage> _messages, ComponentFactory _comp_factory, out List <ParameterStructure.Component.Component> new_comps_created) { new_comps_created = new List <ParameterStructure.Component.Component>(); if (_messages == null) { return; } if (_messages.Count == 0) { return; } if (_comp_factory == null) { return; } // 1. Modify the components Dictionary <Component, ComponentAction> updated = new Dictionary <Component, ComponentAction>(); foreach (ComponentMessage msg in _messages) { ParameterStructure.Component.Component comp = null; ComponentAction action_to_take = ComponentAction.NONE; if (msg.CompID > -1) { // handling of existing components comp = _comp_factory.GetByID(msg.CompID); action_to_take = (msg.ActionToTake == MessageAction.DELETE) ? ComponentAction.DELETE : ComponentAction.UPDATE; } else { Debug.WriteLine("CB: creating new component from {0}", msg.CompDescr); // create a new component (adds it to the top level of the component record of the Factory) // NOTE: should happen only for components describing a space comp = _comp_factory.CreateEmptyComponent(false); new_comps_created.Add(comp); ////comp.Name = GeometryUtils.Relationship2GeometryToCompNameDE(msg.GeomType); comp.Name = msg.CompDescr; comp.Description = "Representation"; action_to_take = ComponentAction.CREATE; } if (comp != null) { Debug.WriteLine("CB: calling 'UpdateComponentFromMessage' with {0} for {1}", action_to_take, msg.CompDescr); ComponentMessageTranslator.UpdateComponentFromMessage(comp, msg, _comp_factory.Caller, true); _comp_factory.UpdateConnectivity(comp); // for Relation2Geometry Type CONTAINED_IN -> propagates realization if (!(updated.ContainsKey(comp))) { updated.Add(comp, action_to_take); } } } // 2. Adjust the relationships btw the components // NOTE: includes deletion of all automatically generated sub-components and // replacing them with the new automatically created components List <long> parent_ids = new List <long>(); foreach (ComponentMessage msg in _messages) { if (msg.CompParentID < 0 && msg.CompRepParentID > -1) { // the parent was just generated... int index = _messages.FindIndex(x => x.CompRepID == msg.CompRepParentID); long new_parent_id = updated.ElementAt(index).Key.ID; parent_ids.Add(new_parent_id); } else { // the parent existed already before the call to this method OR // there is no parent parent_ids.Add(msg.CompParentID); } } List <List <long> > ref_comp_ids = _messages.Select(x => new List <long>(x.CompRefIds)).ToList(); // happens independent of the current user (references have a higher priority than writing access) _comp_factory.AdjustSubAndRefComponentDependenciesAfterAutomaticGeneration(updated, parent_ids, ref_comp_ids); }
public ComponentInstallTask(IComponent component, ComponentAction action, bool isPresent = false) { Component = component ?? throw new ArgumentNullException(nameof(component)); Action = action; _isPresent = isPresent; }
public ComponentInstallTask(IComponent component, ComponentAction action, ComponentDownloadTask download, bool isPresent = false) : this(component, action, isPresent) { _download = download; }