public MachineParamsManager(Guid plowmachineId, Metadata.MetadataManager manager) { _plowMachineId = plowmachineId; _manager = manager; _connection = DBConnectionProvider.GetConnection(); _connection.Open(); }
/// <summary> /// Write the metadata of all the properties for the given typein the xmlWriter /// </summary> /// <param name="xmlWriter">xmlWriter in which metadata needs to be written</param> /// <param name="type">resource type whose property metadata needs to be written</param> /// <param name="associationsInThisNamespace">list of associations in the current namespace.</param> /// <param name="metadataManager">metadata manager instance</param> private static void WriteProperties( XmlWriter xmlWriter, ResourceType type, Dictionary<string, ResourceAssociationType> associationsInThisNamespace, MetadataManager metadataManager) { Debug.Assert(xmlWriter != null, "xmlWriter != null"); Debug.Assert(type != null, "type != null"); foreach (ResourceProperty resourceProperty in metadataManager.GetPropertiesDeclaredInThisType(type)) { string elementName; // For primitive types, get the corresponding edm typename if (resourceProperty.TypeKind == ResourceTypeKind.Primitive) { xmlWriter.WriteStartElement(XmlConstants.Property); xmlWriter.WriteAttributeString(XmlConstants.Name, resourceProperty.Name); xmlWriter.WriteAttributeString(XmlConstants.Type, resourceProperty.ResourceType.FullName); WritePrimitivePropertyFacets(xmlWriter, resourceProperty); if (!String.IsNullOrEmpty(resourceProperty.MimeType)) { MetadataSerializer.WriteDataWebMetadata(xmlWriter, XmlConstants.DataWebMimeTypeAttributeName, resourceProperty.MimeType); } if (type.ResourceTypeKind == ResourceTypeKind.EntityType && type.ETagProperties.Contains(resourceProperty)) { xmlWriter.WriteAttributeString(XmlConstants.ConcurrencyAttribute, XmlConstants.ConcurrencyFixedValue); } if (type.HasEntityPropertyMappings) { var currentEpmInfos = type.OwnEpmInfo.Where(e => e.SourcePath.Split('/').First() == resourceProperty.Name); WriteEpmProperties(xmlWriter, currentEpmInfos, true, false); } } else if (resourceProperty.Kind == ResourcePropertyKind.ComplexType) { xmlWriter.WriteStartElement(XmlConstants.Property); xmlWriter.WriteAttributeString(XmlConstants.Name, resourceProperty.Name); elementName = resourceProperty.ResourceType.FullName; xmlWriter.WriteAttributeString(XmlConstants.Type, elementName); // Edm doesn't support nullable complex type properties xmlWriter.WriteAttributeString(XmlConstants.Nullable, XmlConstants.XmlFalseLiteral); if (type.HasEntityPropertyMappings) { var currentEpmInfos = type.OwnEpmInfo.Where(e => e.SourcePath.Split('/').First() == resourceProperty.Name); WriteEpmProperties(xmlWriter, currentEpmInfos, currentEpmInfos.Any(ei => ei.SourcePath == resourceProperty.Name), true); } } else { Debug.Assert( ResourceTypeKind.EntityType == resourceProperty.TypeKind, "Unexpected property type kind"); xmlWriter.WriteStartElement(XmlConstants.NavigationProperty); xmlWriter.WriteAttributeString(XmlConstants.Name, resourceProperty.Name); elementName = resourceProperty.ResourceType.FullName; string associationTypeLookupName = MetadataManager.GetAssociationTypeLookupName(type, resourceProperty); ResourceAssociationType associationType; if (!associationsInThisNamespace.TryGetValue(associationTypeLookupName, out associationType)) { throw new InvalidOperationException(Strings.MetadataSerializer_NoResourceAssociationSetForNavigationProperty(resourceProperty.Name, type.FullName)); } ResourceAssociationTypeEnd thisEnd = associationType.GetResourceAssociationTypeEnd(type, resourceProperty); ResourceAssociationTypeEnd relatedEnd = associationType.GetRelatedResourceAssociationSetEnd(type, resourceProperty); xmlWriter.WriteAttributeString(XmlConstants.Relationship, associationType.FullName); xmlWriter.WriteAttributeString(XmlConstants.FromRole, thisEnd.Name); xmlWriter.WriteAttributeString(XmlConstants.ToRole, relatedEnd.Name); } xmlWriter.WriteEndElement(); } }
/// <summary> /// Write the metadata for the entityType in the xmlWriter /// </summary> /// <param name="xmlWriter">xmlWriter in which metadata needs to be written</param> /// <param name="entityType">entityType whose metadata needs to be written</param> /// <param name="associationsInThisNamespace">list of associations in the current namespace.</param> /// <param name="metadataManager">metadata manager instance</param> private static void WriteEntityType( XmlWriter xmlWriter, ResourceType entityType, Dictionary<string, ResourceAssociationType> associationsInThisNamespace, MetadataManager metadataManager) { Debug.Assert(xmlWriter != null, "XmlWriter cannot be null"); Debug.Assert(entityType.ResourceTypeKind == ResourceTypeKind.EntityType, "Type must be entityType"); xmlWriter.WriteStartElement(XmlConstants.EntityType); xmlWriter.WriteAttributeString(XmlConstants.Name, XmlConvert.EncodeName(entityType.Name)); if (entityType.IsAbstract) { xmlWriter.WriteAttributeString(XmlConstants.Abstract, "true"); } if (entityType.IsOpenType) { if (entityType.BaseType == null || entityType.BaseType.IsOpenType == false) { WriteOpenTypeAttribute(xmlWriter); } } // Write the HasStream attribute only if this is an MLE and the base type isn't also an MLE (if it is, // it's sufficient that HasStream is written on the base type). if (entityType.IsMediaLinkEntry && (entityType.BaseType == null || entityType.BaseType.IsMediaLinkEntry == false)) { xmlWriter.WriteAttributeString( XmlConstants.DataWebAccessHasStreamAttribute, XmlConstants.DataWebMetadataNamespace, XmlConstants.DataWebAccessDefaultStreamPropertyValue); } if (entityType.HasEntityPropertyMappings) { WriteEpmProperties(xmlWriter, entityType.InheritedEpmInfo, false, false); } if (entityType.BaseType != null) { xmlWriter.WriteAttributeString(XmlConstants.BaseType, XmlConvert.EncodeName(entityType.BaseType.FullName)); } else { xmlWriter.WriteStartElement(XmlConstants.Key); foreach (ResourceProperty property in entityType.KeyProperties) { xmlWriter.WriteStartElement(XmlConstants.PropertyRef); xmlWriter.WriteAttributeString(XmlConstants.Name, property.Name); xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); } WriteProperties(xmlWriter, entityType, associationsInThisNamespace, metadataManager); xmlWriter.WriteEndElement(); }
/// <summary>Gets the metadata document for this provider.</summary> /// <param name="metadataEdmSchemaVersion">EDM schema version.</param> /// <param name="service">Data service instance.</param> internal void GenerateMetadata(MetadataEdmSchemaVersion metadataEdmSchemaVersion, IDataService service) { Debug.Assert(this.Writer != null, "this.Writer != null"); Debug.Assert(this.Provider != null, "this.Provider != null"); MetadataManager metadataManager = new MetadataManager(this.Provider, service); string dataServiceVersion = MetadataSerializer.GetVersionsForMetadata(metadataManager.ResourceTypes, ref metadataEdmSchemaVersion); MetadataSerializer.WriteTopLevelSchemaElements(this.Writer, dataServiceVersion); HashSet<ResourceType> typesInEntityContainerNamespace = null; // Write the schema Element for every namespace foreach (KeyValuePair<string, HashSet<ResourceType>> namespaceAlongWithTypes in metadataManager.NamespaceAlongWithTypes) { Debug.Assert(!string.IsNullOrEmpty(namespaceAlongWithTypes.Key), "!string.IsNullOrEmpty(namespaceAlongWithTypes.Key)"); // If the types live in the same namespace as that of entity container and types that don't live in any namespace, // should be written out in the service namespace. If the service type also doesn't have a namespace, we will use // the service name as the namespace. See code below for that. if (namespaceAlongWithTypes.Key == metadataManager.GetContainerNamespace()) { typesInEntityContainerNamespace = namespaceAlongWithTypes.Value; } else { Dictionary<string, ResourceAssociationType> associationsInThisNamespace = metadataManager.GetAssociationTypesForNamespace(namespaceAlongWithTypes.Key); MetadataSerializer.WriteSchemaElement(this.Writer, namespaceAlongWithTypes.Key, metadataEdmSchemaVersion); WriteTypes(this.Writer, namespaceAlongWithTypes.Value, associationsInThisNamespace, metadataManager); WriteAssociationTypes(this.Writer, new HashSet<ResourceAssociationType>(associationsInThisNamespace.Values, EqualityComparer<ResourceAssociationType>.Default)); this.Writer.WriteEndElement(); } } // Write the entity container definition. Also if there are types in the same namespace, // we need to write them out too. string typeNamespace = metadataManager.GetContainerNamespace(); MetadataSerializer.WriteSchemaElement(this.Writer, typeNamespace, metadataEdmSchemaVersion); if (typesInEntityContainerNamespace != null) { Dictionary<string, ResourceAssociationType> associationsInThisNamespace = metadataManager.GetAssociationTypesForNamespace(typeNamespace); WriteTypes(this.Writer, typesInEntityContainerNamespace, associationsInThisNamespace, metadataManager); WriteAssociationTypes(this.Writer, new HashSet<ResourceAssociationType>(associationsInThisNamespace.Values, EqualityComparer<ResourceAssociationType>.Default)); } this.WriteEntityContainer(this.Writer, XmlConvert.EncodeName(this.Provider.ContainerName), metadataManager.ResourceSets, metadataManager.ResourceAssociationSets); this.Writer.WriteEndElement(); // These end elements balance the elements written out in WriteTopLevelSchemaElements this.Writer.WriteEndElement(); this.Writer.WriteEndElement(); this.Writer.Flush(); }
public RyuJitNodeFactory(CompilerTypeSystemContext context, CompilationModuleGroup compilationModuleGroup, MetadataManager metadataManager, NameMangler nameMangler) : base(context, compilationModuleGroup, metadataManager, nameMangler, new LazyGenericsDisabledPolicy()) { }
private void Import() { if (txtImportFilePath.Text.Length == 0) { return; } if (!File.Exists(txtImportFilePath.Text)) { MessageBox.Show(this, $"The file {txtImportFilePath.Text} does not exist!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } btnCancel.Visible = true; lblProgress.Text = "Deserializing file..."; SendMessageToStatusBar?.Invoke(this, new StatusBarMessageEventArgs("Deserializing file...")); EntityCollection ec; using (var reader = new StreamReader(txtImportFilePath.Text)) { var serializer = new DataContractSerializer(typeof(EntityCollection), new List <Type> { typeof(Entity) }); ec = (EntityCollection)serializer.ReadObject(reader.BaseStream); } var webSitesId = ec.Entities.SelectMany(e => e.Attributes) .Where(a => a.Value is EntityReference && ((EntityReference)a.Value).LogicalName == "adx_website") .Select(a => ((EntityReference)a.Value).Id) .Distinct() .ToList(); var targetWebSites = Service.RetrieveMultiple(new QueryExpression("adx_website") { ColumnSet = new ColumnSet("adx_name") }).Entities; if (!webSitesId.All(id => targetWebSites.Select(w => w.Id).Contains(id))) { var wsmDialog = new WebSiteMapper(ec, targetWebSites.Select(t => new Website(t)).ToList()); if (wsmDialog.ShowDialog() == DialogResult.Cancel) { return; } } if (ec.Entities.Any(e => e.LogicalName == "adx_webpage")) { var message = "You are trying to import web pages. It is recommended to deactivate plugins steps related to this entity to ensure successful import. Do you want to deactivate these plugins ? \n\nNote: The plugins will be reactivated at the end of the import process"; iSettings.DeactivateWebPagePlugins = MessageBox.Show(this, message, @"Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes; } btnImport.Enabled = false; pnlImportMain.Visible = true; pbImport.IsOnError = false; var worker = new BackgroundWorker { WorkerReportsProgress = true, WorkerSupportsCancellation = true }; worker.DoWork += (s, evt) => { importWorker = (BackgroundWorker)s; if (emds.Count == 0) { importWorker.ReportProgress(0, "Retrieving metadata..."); emds = MetadataManager.GetEntitiesList(Service); } if (iSettings.DeactivateWebPagePlugins) { importWorker.ReportProgress(0, "Deactivating Webpage plugins steps..."); pManager = new PluginManager(Service); pManager.DeactivateWebpagePlugins(); } importWorker.ReportProgress(0, "Processing records..."); var rm = new RecordManager(Service); evt.Cancel = rm.ProcessRecords((EntityCollection)evt.Argument, emds, ConnectionDetail.OrganizationMajorVersion, importWorker); if (iSettings.DeactivateWebPagePlugins) { importWorker.ReportProgress(0, "Reactivating Webpage plugins steps..."); pManager.ActivateWebpagePlugins(); } }; worker.RunWorkerCompleted += (s, evt) => { SendMessageToStatusBar?.Invoke(this, new StatusBarMessageEventArgs(string.Empty)); lblProgress.Text = "Records imported!"; llOpenLogFile.Visible = true; btnImportClose.Enabled = true; btnImport.Enabled = true; btnCancel.Visible = false; if (evt.Cancelled) { lblProgress.Text = "Import was canceled!"; return; } if (evt.Error != null) { MessageBox.Show(this, $"An error occured: {evt.Error.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (pbImport.IsOnError) { MessageBox.Show(this, "Import complete with errors\n\nPlease review the logs", "Information", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { MessageBox.Show(this, "Import complete", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } }; worker.ProgressChanged += (s, evt) => { if (evt.UserState is string) { lblProgress.Text = evt.UserState.ToString(); SendMessageToStatusBar?.Invoke(this, new StatusBarMessageEventArgs(evt.UserState.ToString())); } else { var progress = evt.UserState as ImportProgress; if (progress != null) { foreach (var ep in progress.Entities) { var item = lvProgress.Items.Cast <ListViewItem>().FirstOrDefault(i => i.Text == ep.Entity); if (item == null) { item = new ListViewItem(ep.Entity); item.SubItems.Add(ep.Success.ToString()); item.SubItems.Add(ep.Error.ToString()); lvProgress.Items.Add(item); } else { item.SubItems[1].Text = ep.Success.ToString(); item.SubItems[2].Text = ep.Error.ToString(); } if (ep.Error > 0) { pbImport.IsOnError = true; } pbImport.Value = progress.Entities.Sum(ent => ent.Processed) * 100 / progress.Count; } } else if (evt.UserState is bool) { if ((bool)evt.UserState == false) { pbImport.IsOnError = true; } pbImport.Value = evt.ProgressPercentage; } } }; worker.RunWorkerAsync(ec); }
void RibbonButtonsUpdateProperties() { //update tabs visibility { Metadata.TypeInfo selectedType = null; { var obj = workspaceController.SelectedDocumentWindow?.ObjectOfWindow; if( obj != null ) selectedType = MetadataManager.MetadataGetType( obj ); } foreach( var ribbonTab in kryptonRibbon.RibbonTabs ) { var tab = ribbonTab.Tag as EditorRibbonDefaultConfiguration.Tab; if( tab != null ) { bool visible = true; if( tab.VisibleOnlyForType != null && visible ) visible = selectedType != null && tab.VisibleOnlyForType.IsAssignableFrom( selectedType ); if( tab.VisibleCondition != null && visible ) visible = tab.VisibleCondition(); if( ribbonTab.Visible != visible ) { ribbonLastSelectedTabTypeByUser_DisableUpdate = true; ribbonTab.Visible = visible; ribbonLastSelectedTabTypeByUser_DisableUpdate = false; } if( ribbonTab.Visible && ribbonLastSelectedTabTypeByUser != "" && ribbonLastSelectedTabTypeByUser == tab.Type ) { ribbonLastSelectedTabTypeByUser_DisableUpdate = true; kryptonRibbon.SelectedTab = ribbonTab; ribbonLastSelectedTabTypeByUser_DisableUpdate = false; } } } } //update controls foreach( var ribbonTab in kryptonRibbon.RibbonTabs ) { foreach( var ribbonGroup in ribbonTab.Groups ) { foreach( var groupItem in ribbonGroup.Items ) { var tripple = groupItem as KryptonRibbonGroupTriple; if( tripple != null ) { foreach( var trippleItem in tripple.Items ) { //Button, DropDown var button = trippleItem as KryptonRibbonGroupButton; if( button != null ) { //sub group if( button.Tag as string == "SubGroup" && button.KryptonContextMenu != null ) { RibbonSubGroupUpdateItemsRecursive( button.KryptonContextMenu.Items, out var existsEnabled ); //disable group when all items are disabled button.Enabled = existsEnabled; } //action var action = button.Tag as EditorAction; if( action != null ) { var state = EditorAPI.EditorActionGetState( EditorAction.HolderEnum.RibbonQAT, action ); button.Enabled = state.Enabled; //кнопка меняет тип, т.к. в действиях не указывается может ли она быть Checked. //сделано так, что меняет при первом изменении isChecked. if( state.Checked && action.ActionType == EditorAction.ActionTypeEnum.Button ) button.ButtonType = GroupButtonType.Check; button.Checked = state.Checked; } } //Slider var slider = trippleItem as KryptonRibbonGroupSlider; if( slider != null ) { var action = slider.Tag as EditorAction; if( action != null ) { var lastValue = action.Slider.Value; var state = EditorAPI.EditorActionGetState( EditorAction.HolderEnum.RibbonQAT, action ); slider.Enabled = state.Enabled; if( lastValue != action.Slider.Value ) { slider.Control.SetValue( action.Slider.Value ); //trackBar.Value = action.Slider.Value; } } } ////ComboBox //var comboBox = trippleItem as KryptonRibbonGroupComboBox; //if( comboBox != null ) //{ // var action = comboBox.Tag as EditorAction; // if( action != null ) // { // var lastItems = action.ComboBox.Items; // var lastSelectedIndex = action.ComboBox.SelectedIndex; // var state = EditorAPI.GetEditorActionState( EditorAction.HolderEnum.RibbonQAT, action ); // comboBox.Enabled = state.Enabled; // if( !action.ComboBox.Items.SequenceEqual( lastItems ) ) // { // var oldSelectedIndex = comboBox.SelectedIndex; // comboBox.Items.Clear(); // foreach( var item in action.ComboBox.Items ) // comboBox.Items.Add( item ); // if( oldSelectedIndex >= 0 && oldSelectedIndex < comboBox.Items.Count ) // comboBox.SelectedIndex = oldSelectedIndex; // else if( comboBox.Items.Count != 0 ) // comboBox.SelectedIndex = 0; // } // if( lastSelectedIndex != action.ComboBox.SelectedIndex ) // comboBox.SelectedIndex = action.ComboBox.SelectedIndex; // } //} //ListBox var listBox = trippleItem as KryptonRibbonGroupListBox; if( listBox != null ) { var action = listBox.Tag as EditorAction; if( action != null ) { var lastItems = action.ListBox.Items; var lastSelectedIndex = action.ListBox.SelectedIndex; var state = EditorAPI.EditorActionGetState( EditorAction.HolderEnum.RibbonQAT, action ); //!!!!не listBox2? listBox.Enabled = state.Enabled; var browser = listBox.Control.contentBrowser1; //update items if( !action.ListBox.Items.SequenceEqual( lastItems ) ) listBox.SetItems( action.ListBox.Items ); //update selected item if( action.ListBox.SelectIndex != null ) { int selectIndex = action.ListBox.SelectIndex.Value; var itemToSelect = browser.Items.FirstOrDefault( i => (int)i.Tag == selectIndex ); if( itemToSelect != null ) { var toSelect = new ContentBrowser.Item[] { itemToSelect }; if( !toSelect.SequenceEqual( browser.SelectedItems ) ) browser.SelectItems( toSelect ); } else { if( browser.SelectedItems.Length != 0 ) browser.SelectItems( null ); } action.ListBox.SelectIndex = null; } //{ // int selectIndex = action.ListBox.SelectedIndex; // int currentSelectedIndex = -1; // if( browser.SelectedItems.Length == 1 ) // currentSelectedIndex = (int)browser.SelectedItems[ 0 ].Tag; // //if( browser.SelectedItems.Length == 1 ) // // currentSelectedIndex = browser.RootItems.IndexOf( browser.SelectedItems[ 0 ] ); // if( selectIndex != currentSelectedIndex ) // { // var itemToSelect = browser.Items.FirstOrDefault( i => (int)i.Tag == selectIndex ); // if( itemToSelect != null ) // browser.SelectItems( new ContentBrowser.Item[] { itemToSelect } ); // else // browser.SelectItems( null ); // } //} //!!!!? //if( lastSelectedIndex != action.ListBox.SelectedIndex ) //{ // if(browser.Items // browser.SelectItems( new ContentBrowser.Item[] { items[ 0 ] } ); // //browser.SelectedIndex = action.ListBox.SelectedIndex; //} } } } } } } } }
public RyuJitNodeFactory(CompilerTypeSystemContext context, CompilationModuleGroup compilationModuleGroup, MetadataManager metadataManager, InteropStubManager interopStubManager, NameMangler nameMangler, VTableSliceProvider vtableSliceProvider, DictionaryLayoutProvider dictionaryLayoutProvider) : base(context, compilationModuleGroup, metadataManager, interopStubManager, nameMangler, new LazyGenericsDisabledPolicy(), vtableSliceProvider, dictionaryLayoutProvider) { }
public DataTable Execute(SelectStatement statement) { var metadata = new MetadataManager(CRMInstance); ValidateStatement(statement); var entityName = ((SelectFrom)statement.From.First()).Name; var query = new QueryExpression(entityName); if (statement.Columns.Any()) { query.ColumnSet = new ColumnSet(false); // Until caching layer is ready we will retrieve fields every time var entityFields = metadata.GetEntityFields(entityName); if (entityFields == null) { throw new Exception($"Unable to read entity '{entityName}' fields."); } if (statement.Columns.Any(x => x.Type.In(SelectColumnTypeEnum.All, SelectColumnTypeEnum.System))) { for (int i = 0; i < statement.Columns.Count; i++) { var column = statement.Columns[i]; if (column.Type == SelectColumnTypeEnum.All) { foreach (var entityField in entityFields) { var fieldSelectColumn = new FieldSelectColumn(entityField.SchemaName); statement.Columns.Insert(i++, fieldSelectColumn); } } else if (column.Type == SelectColumnTypeEnum.System) { foreach (var fieldName in Configuration.Settings.SystemSelectFields) { if (fieldName.IsEmpty()) { throw new Exception($"'{fieldName}' not set."); } if (string.Equals(fieldName, "$id", StringComparison.OrdinalIgnoreCase)) { var idEntityField = entityFields.Single(x => x.IsPrimaryId); var fieldSelectColumn = new FieldSelectColumn(idEntityField.SchemaName); statement.Columns.Insert(i++, fieldSelectColumn); } else if (string.Equals(fieldName, "$name", StringComparison.OrdinalIgnoreCase)) { var nameEntityField = entityFields.Single(x => x.IsPrimaryName); var fieldSelectColumn = new FieldSelectColumn(nameEntityField.SchemaName); statement.Columns.Insert(i++, fieldSelectColumn); } else if (fieldName.StartsWith("$")) { throw new Exception($"System field '{fieldName}' not supported."); } else { var fieldSelectColumn = new FieldSelectColumn(fieldName); statement.Columns.Insert(i++, fieldSelectColumn); } } } } } for (int i = 0; i < statement.Columns.Count; i++) { var column = statement.Columns[i]; if (column.Type == SelectColumnTypeEnum.Field) { var fieldColumn = (FieldSelectColumn)column; query.ColumnSet.AddColumn(fieldColumn.Name); } else if (column.Type == SelectColumnTypeEnum.InnerSelect) { throw new Exception("Inner selects are currently unsupported."); } else if (column.Type == SelectColumnTypeEnum.Function) { throw new Exception("Columns with functions are currently unsupported."); } } } else { query.ColumnSet = new ColumnSet(true); } if (statement.Top.HasValue) { query.TopCount = statement.Top.Value; } if (statement.Where.Any()) { for (var i = 0; i < statement.Where.Count; i++) { var whereClause = statement.Where[i]; if (whereClause.Type == SelectWhereTypeEnum.Comparison) { var comparisonClause = (SelectWhereComparison)whereClause; var conditionName = GetWhereClauseAttributeName(comparisonClause.LeftExpression); var conditionValue = GetWhereClauseAttributeName(comparisonClause.RightExpression); var conditionOperator = ConditionOperator.Equal; switch (comparisonClause.Operator) { case SelectWhereComparisonOperatorEnum.Equal: conditionOperator = comparisonClause.Negate ? ConditionOperator.NotEqual : ConditionOperator.Equal; break; case SelectWhereComparisonOperatorEnum.NotEqual: conditionOperator = comparisonClause.Negate ? ConditionOperator.Equal : ConditionOperator.NotEqual; break; case SelectWhereComparisonOperatorEnum.LessThan: conditionOperator = comparisonClause.Negate ? ConditionOperator.GreaterEqual : ConditionOperator.LessThan; break; case SelectWhereComparisonOperatorEnum.LessEqualThan: conditionOperator = comparisonClause.Negate ? ConditionOperator.GreaterThan : ConditionOperator.LessEqual; break; case SelectWhereComparisonOperatorEnum.GreaterThan: conditionOperator = comparisonClause.Negate ? ConditionOperator.LessEqual : ConditionOperator.GreaterThan; break; case SelectWhereComparisonOperatorEnum.GreaterEqualThan: conditionOperator = comparisonClause.Negate ? ConditionOperator.LessThan : ConditionOperator.GreaterEqual; break; default: throw new Exception($"Found unexpected comparison operator '{comparisonClause.Operator}'"); } query.Criteria.AddCondition(conditionName, conditionOperator, conditionValue); } else if (whereClause.Type == SelectWhereTypeEnum.Null) { var nullClause = (SelectWhereNull)whereClause; var conditionName = GetWhereClauseAttributeName(nullClause.Expression); query.Criteria.AddCondition(conditionName, nullClause.Negate ? ConditionOperator.NotNull : ConditionOperator.Null); } else if (whereClause.Type == SelectWhereTypeEnum.Like) { var likeClause = (SelectWhereLike)whereClause; var conditionName = GetWhereClauseAttributeName(likeClause.LeftExpression); var conditionValue = GetWhereClauseAttributeName(likeClause.RightExpression); query.Criteria.AddCondition(conditionName, likeClause.Negate ? ConditionOperator.NotLike : ConditionOperator.Like, conditionValue); } else if (whereClause.Type != SelectWhereTypeEnum.Operator) { throw new Exception($"Found unexpected where clause {whereClause.Type}"); } } } if (statement.Order.Any()) { foreach (var orderItem in statement.Order) { if (orderItem.Type == SelectOrderTypeEnum.Column) { var columnOrder = (SelectOrderColumn)orderItem; var direction = orderItem.Direction == OrderDirection.Asc ? OrderType.Ascending : OrderType.Descending; query.AddOrder(columnOrder.Name, direction); } else if (orderItem.Type == SelectOrderTypeEnum.Position) { var columnPosition = (SelectOrderPosition)orderItem; var direction = orderItem.Direction == OrderDirection.Asc ? OrderType.Ascending : OrderType.Descending; var fieldColumn = statement.Columns[columnPosition.Position - 1] as FieldSelectColumn; if (fieldColumn == null) { throw new Exception($"Position '{columnPosition.Position}' must point to a CRM field"); } query.AddOrder(fieldColumn.Name, direction); } else { throw new Exception($"Unsupported order type '{orderItem.Type}'"); } } } var entities = CRMInstance.Service.RetrieveMultiple(query).Entities.ToList(); var list = new List <List <KeyValuePair <string, object> > >(); foreach (var entity in entities) { var values = new List <KeyValuePair <string, object> >(); foreach (var attribute in entity.Attributes) { object value = null; var type = attribute.Value.GetType(); if (type != typeof(string)) { if (entity.FormattedValues.ContainsKey(attribute.Key)) { value = entity.FormattedValues[attribute.Key]; } } if (value == null) { value = Convert.ToString(attribute.Value); } values.Add(new KeyValuePair <string, object>(attribute.Key, value)); } list.Add(values); } return(ConvertToDataTable(list, statement.Columns)); }
static void AddBaseItems() { //Common { var group = @"Base\Common"; //!!!! //GroupDescriptions[ group ] = "Description text"; Items.Add(new Item(group + @"\Component", typeof(Component))); Items.Add(new Item(group + @"\Text File", typeof(NewResourceType_TextFile))); //!!!!убрать "The feature is not implemented." Items.Add(new Item(group + @"\C# Class Library", typeof(NewResourceType_CSharpClassLibrary), disabled: true)); Items.Add(new Item(group + @"\Executable App", typeof(NewResourceType_ExecutableApp), disabled: true)); Items.Add(new Item(group + @"\Advanced\Component Host", typeof(Component_ComponentHost))); //!!!!Image } //Scripting { //Common { var group = @"Base\Scripting"; // Common\"; Items.Add(new Item(group + @"\C# File", typeof(NewResourceType_CSharpClass))); Items.Add(new Item(group + @"\C# Script", typeof(Component_CSharpScript))); Items.Add(new Item(group + @"\Flow Graph", typeof(Component_FlowGraph))); //group.types.Add( new Item( "C# library", typeof( NewResourceType_CSharpClassLibrary ), true ) ); //Items.Add( new Item( group + "Event Handler", typeof( Component_EventHandler ) ) ); } //Metadata { var group = @"Base\Scripting\Metadata"; Items.Add(new Item(group + @"\Property", typeof(Component_Property))); Items.Add(new Item(group + @"\Method", typeof(Component_Method))); //Items.Add( new Item( group + @"\Event", typeof( Component_Event ), true ) ); Items.Add(new Item(group + @"\Member Parameter", typeof(Component_MemberParameter))); //Items.Add( new Item( group + @"\Event", typeof( Component_Event ), true ) ); } //Flow scripting { var group = @"Base\Scripting\Flow scripting"; Items.Add(new Item(group + @"\Invoke Member", typeof(Component_InvokeMember))); Items.Add(new Item(group + @"\Event Handler", typeof(Component_EventHandler))); Items.Add(new Item(group + @"\Declare Variable", typeof(Component_DeclareVariable))); Items.Add(new Item(group + @"\Set Variable", typeof(Component_SetVariable))); Items.Add(new Item(group + @"\If", typeof(Component_If))); Items.Add(new Item(group + @"\Switch", typeof(Component_Switch))); Items.Add(new Item(group + @"\While", typeof(Component_While))); Items.Add(new Item(group + @"\Do While", typeof(Component_DoWhile))); Items.Add(new Item(group + @"\Do Number", typeof(Component_DoNumber))); Items.Add(new Item(group + @"\For Each", typeof(Component_ForEach))); Items.Add(new Item(group + @"\For", typeof(Component_For))); Items.Add(new Item(group + @"\Sequence", typeof(Component_Sequence))); Items.Add(new Item(group + @"\Flow Start", typeof(Component_FlowStart))); Items.Add(new Item(group + @"\Convert To", typeof(Component_ConvertTo))); } ////!!!!nb ////C# projects //{ // var group = @"Base\Scripting\C# projects"; // { // var item = new Item( group + @"\C# Class Library", typeof( NewResourceType_CSharpClassLibrary ) ); // item.Disabled = true; // Items.Add( item ); // } // { // var item = new Item( group + @"\C# Windows Forms App", typeof( NewResourceType_CSharpClassLibrary ) ); // item.Disabled = true; // Items.Add( item ); // } // { // var item = new Item( group + @"\C# WPF App", typeof( NewResourceType_CSharpClassLibrary ) ); // item.Disabled = true; // Items.Add( item ); // } // { // var item = new Item( group + @"\C# NeoAxis Addon", typeof( NewResourceType_CSharpClassLibrary ) ); // item.Disabled = true; // Items.Add( item ); // } // //Items.Add( new Item( group + @"\C# Class Library", typeof( NewResourceType_CSharpClassLibrary ) ) ); // //Items.Add( new Item( group + @"\C# Windows Forms App", typeof( NewResourceType_CSharpClassLibrary ) ) ); // //Items.Add( new Item( group + @"\C# WPF App", typeof( NewResourceType_CSharpClassLibrary ) ) ); // //Items.Add( new Item( group + @"\C# Class Library", typeof( NewResourceType_CSharpClassLibrary ) ) ); // //Items.Add( new Item( group + @"\C# Windows Forms App", typeof( NewResourceType_CSharpClassLibrary ) ) ); // //Items.Add( new Item( group + @"\C# WPF App", typeof( NewResourceType_CSharpClassLibrary ) ) ); // //Items.Add( new Item( group + @"\NeoAxis Editor App", typeof( NewResourceType_CSharpClassLibrary ) ) ); // //Items.Add( new Item( group + @"\NeoAxis Simulation App", typeof( NewResourceType_CSharpClassLibrary ) ) ); //} } //UI { { var group = @"Base\UI"; Items.Add(new Item(group + @"\Control", typeof(UIControl))); Items.Add(new Item(group + @"\Window", typeof(UIWindow))); Items.Add(new Item(group + @"\Text", typeof(UIText))); Items.Add(new Item(group + @"\Image", typeof(UIImage))); Items.Add(new Item(group + @"\Button", typeof(UIButton))); Items.Add(new Item(group + @"\Check", typeof(UICheck))); Items.Add(new Item(group + @"\Edit", typeof(UIEdit))); Items.Add(new Item(group + @"\Slider", typeof(UISlider))); Items.Add(new Item(group + @"\Progress", typeof(UIProgress))); Items.Add(new Item(group + @"\Scroll", typeof(UIScroll))); Items.Add(new Item(group + @"\Combo", typeof(UICombo))); Items.Add(new Item(group + @"\List", typeof(UIList))); //Items.Add( new Item( group + @"\Tree", typeof( UITree ) ) ); Items.Add(new Item(group + @"\Video", typeof(UIVideo))); Items.Add(new Item(group + @"\Web Browser", typeof(UIWebBrowser))); Items.Add(new Item(group + @"\Render Target", typeof(UIRenderTarget))); //Items.Add( new Item( group + @"\Menu", typeof( UIMenu ) ) ); } //Containers { var group = @"Base\UI\Containers"; Items.Add(new Item(group + @"\Tab Control", typeof(UITabControl))); //Items.Add( new Item( group + @"\Split Container", typeof( UISplitContainer ) ) ); Items.Add(new Item(group + @"\Grid", typeof(UIGrid))); Items.Add(new Item(group + @"\Toolbar", typeof(UIToolbar))); } //More { var group = @"Base\UI\More"; Items.Add(new Item(group + @"\Style", typeof(UIStyle))); Items.Add(new Item(group + @"\Tooltip", typeof(UITooltip))); } } //Common 3D { var group = @"Base\Scene common"; //var group = @"Base\Common 3D"; Items.Add(new Item(group + @"\Scene", typeof(Component_Scene))); Items.Add(new Item(group + @"\Material", typeof(Component_Material))); Items.Add(new Item(group + @"\Surface", typeof(Component_Surface))); Items.Add(new Item(group + @"\Cubemap", typeof(Component_Image))); Items.Add(new Item(group + @"\Paint Layer", typeof(Component_PaintLayer))); if (MetadataManager.GetType("NeoAxis.Component_RenderingPipeline_Default") != null) { Items.Add(new Item(group + @"\Rendering Pipeline Default", MetadataManager.GetType("NeoAxis.Component_RenderingPipeline_Default").GetNetType())); } Items.Add(new Item(group + @"\Mesh", typeof(Component_Mesh))); ////Mesh modifiers //var groupMeshModifiers = @"Base\Scene common\Mesh modifiers"; //Items.Add( new Item( groupMeshModifiers + @"\Box UV", typeof( Component_MeshModifier_BoxUV ), disabled: true ) ); //Items.Add( new Item( groupMeshModifiers + @"\Spherical UV", typeof( Component_MeshModifier_SphericalUV ), disabled: true ) ); //Items.Add( new Item( groupMeshModifiers + @"\Tiling UV", typeof( Component_MeshModifier_TilingUV ), disabled: true ) ); ////Items.Add( new Item( groupMeshModifiers + @"\Unwrap", typeof( Component_MeshModifier_Unwrap ), disabled: true ) ); ////Items.Add( new Item( groupMeshModifiers + @"\Smooth", typeof( Component_MeshModifier_Smooth ), disabled: true ) ); //Items.Add( new Item( group + @"\Paint Layer", typeof( Component_PaintLayer ) ) ); } //Scene objects { var group = @"Base\Scene objects"; Items.Add(new Item(group + @"\Object In Space", typeof(Component_ObjectInSpace))); Items.Add(new Item(group + @"\Group Of Objects", typeof(Component_GroupOfObjects))); Items.Add(new Item(group + @"\Layer", typeof(Component_Layer))); Items.Add(new Item(group + @"\Mesh In Space", typeof(Component_MeshInSpace))); Items.Add(new Item(group + @"\Mesh In Space Animation Controller", typeof(Component_MeshInSpaceAnimationController))); Items.Add(new Item(group + @"\Particle System In Space", typeof(Component_ParticleSystemInSpace))); Items.Add(new Item(group + @"\Light", typeof(Component_Light))); Items.Add(new Item(group + @"\Camera", typeof(Component_Camera))); Items.Add(new Item(group + @"\Terrain", typeof(Component_Terrain))); Items.Add(new Item(group + @"\Billboard", typeof(Component_Billboard))); Items.Add(new Item(group + @"\Decal", typeof(Component_Decal))); Items.Add(new Item(group + @"\Reflection Probe", typeof(Component_ReflectionProbe))); Items.Add(new Item(group + @"\Sound Source", typeof(Component_SoundSource))); if (MetadataManager.GetType("NeoAxis.Component_RenderTargetInSpace") != null) { Items.Add(new Item(group + @"\Render Target In Space", MetadataManager.GetType("NeoAxis.Component_RenderTargetInSpace").GetNetType())); } if (MetadataManager.GetType("NeoAxis.Component_Skybox") != null) { Items.Add(new Item(group + @"\Environment\Skybox", MetadataManager.GetType("NeoAxis.Component_Skybox").GetNetType())); } if (MetadataManager.GetType("NeoAxis.Component_Fog") != null) { Items.Add(new Item(group + @"\Environment\Fog", MetadataManager.GetType("NeoAxis.Component_Fog").GetNetType())); } if (MetadataManager.GetType("NeoAxis.Component_LensFlares") != null) { Items.Add(new Item(group + @"\Environment\Lens Flares", MetadataManager.GetType("NeoAxis.Component_LensFlares").GetNetType())); } Items.Add(new Item(group + @"\Areas\Area", typeof(Component_Area))); Items.Add(new Item(group + @"\Areas\Surface Area", typeof(Component_SurfaceArea))); Items.Add(new Item(group + @"\Sensors\Sensor", typeof(Component_Sensor))); if (MetadataManager.GetType("NeoAxis.Component_DestroyingSensor") != null) { Items.Add(new Item(group + @"\Sensors\Destroying Sensor", MetadataManager.GetType("NeoAxis.Component_DestroyingSensor").GetNetType())); } Items.Add(new Item(group + @"\Additional\Text 2D", typeof(Component_Text2D))); if (MetadataManager.GetType("NeoAxis.Component_Grid") != null) { Items.Add(new Item(group + @"\Additional\Grid", MetadataManager.GetType("NeoAxis.Component_Grid").GetNetType())); } if (MetadataManager.GetType("NeoAxis.Component_CurveInSpace") != null) { Items.Add(new Item(group + @"\Additional\Curve In Space", MetadataManager.GetType("NeoAxis.Component_CurveInSpace").GetNetType())); } //Items.Add( new Item( group + @"\Object In Space", typeof( Component_ObjectInSpace ) ) ); //Items.Add( new Item( group + @"\Group Of Objects", typeof( Component_GroupOfObjects ) ) ); //Items.Add( new Item( group + @"\Layer", typeof( Component_Layer ) ) ); //Items.Add( new Item( group + @"\Mesh In Space", typeof( Component_MeshInSpace ) ) ); //Items.Add( new Item( group + @"\Mesh In Space Animation Controller", typeof( Component_MeshInSpaceAnimationController ) ) ); //Items.Add( new Item( group + @"\Particle System In Space", typeof( Component_ParticleSystemInSpace ) ) ); //Items.Add( new Item( group + @"\Light", typeof( Component_Light ) ) ); //if( MetadataManager.GetType( "NeoAxis.Component_Skybox" ) != null ) // Items.Add( new Item( group + @"\Skybox", MetadataManager.GetType( "NeoAxis.Component_Skybox" ).GetNetType() ) ); //if( MetadataManager.GetType( "NeoAxis.Component_Fog" ) != null ) // Items.Add( new Item( group + @"\Fog", MetadataManager.GetType( "NeoAxis.Component_Fog" ).GetNetType() ) ); //Items.Add( new Item( group + @"\Terrain", typeof( Component_Terrain ) ) ); //Items.Add( new Item( group + @"\Billboard", typeof( Component_Billboard ) ) ); //Items.Add( new Item( group + @"\Decal", typeof( Component_Decal ) ) ); //Items.Add( new Item( group + @"\Camera", typeof( Component_Camera ) ) ); //Items.Add( new Item( group + @"\Reflection Probe", typeof( Component_ReflectionProbe ) ) ); //Items.Add( new Item( group + @"\Sound Source", typeof( Component_SoundSource ) ) ); //Items.Add( new Item( group + @"\Sensor", typeof( Component_Sensor ) ) ); //if( MetadataManager.GetType( "NeoAxis.Component_CurveInSpace" ) != null ) // Items.Add( new Item( group + @"\Curve In Space", MetadataManager.GetType( "NeoAxis.Component_CurveInSpace" ).GetNetType() ) ); //if( MetadataManager.GetType( "NeoAxis.Component_LensFlares" ) != null ) // Items.Add( new Item( group + @"\Lens Flares", MetadataManager.GetType( "NeoAxis.Component_LensFlares" ).GetNetType() ) ); //if( MetadataManager.GetType( "NeoAxis.Component_Grid" ) != null ) // Items.Add( new Item( group + @"\Grid", MetadataManager.GetType( "NeoAxis.Component_Grid" ).GetNetType() ) ); //if( MetadataManager.GetType( "NeoAxis.Component_DestroyingSensor" ) != null ) // Items.Add( new Item( group + @"\Destroying Sensor", MetadataManager.GetType( "NeoAxis.Component_DestroyingSensor" ).GetNetType() ) ); //Items.Add( new Item( group + @"\Area", typeof( Component_Area ) ) ); //Items.Add( new Item( group + @"\Surface Area", typeof( Component_SurfaceArea ) ) ); //Items.Add( new Item( group + @"\Text 2D", typeof( Component_Text2D ) ) ); //if( MetadataManager.GetType( "NeoAxis.Component_RenderTargetInSpace" ) != null ) // Items.Add( new Item( group + @"\Render Target In Space", MetadataManager.GetType( "NeoAxis.Component_RenderTargetInSpace" ).GetNetType() ) ); //Items.Add( new Item( group + @"\Particle Emitter", typeof( Component_ParticleEmitter ), true ) ); //Items.Add( new Item( group + @"\Particle System", typeof( Component_ParticleSystem ), true ) ); //Items.Add( new Item( group + @"\Light Probe", typeof( Component_LightProbe ), true ) ); //Items.Add( new Item( group + @"\Liquid Surface", typeof( Component_LiquidSurface ), true ) ); } //Primitives { var group = @"Base\Primitives"; //"Simple meshes" Items.Add(new Item(group + @"\Arch", typeof(Component_MeshGeometry_Arch))); Items.Add(new Item(group + @"\Box", typeof(Component_MeshGeometry_Box))); Items.Add(new Item(group + @"\Capsule", typeof(Component_MeshGeometry_Capsule))); Items.Add(new Item(group + @"\Cone", typeof(Component_MeshGeometry_Cone))); Items.Add(new Item(group + @"\Cylinder", typeof(Component_MeshGeometry_Cylinder))); Items.Add(new Item(group + @"\Door", typeof(Component_MeshGeometry_Door))); Items.Add(new Item(group + @"\Pipe", typeof(Component_MeshGeometry_Pipe))); Items.Add(new Item(group + @"\Plane", typeof(Component_MeshGeometry_Plane))); Items.Add(new Item(group + @"\Prism", typeof(Component_MeshGeometry_Prism))); Items.Add(new Item(group + @"\Sphere", typeof(Component_MeshGeometry_Sphere))); Items.Add(new Item(group + @"\Stairs", typeof(Component_MeshGeometry_Stairs))); Items.Add(new Item(group + @"\Torus", typeof(Component_MeshGeometry_Torus))); Items.Add(new Item(group + @"\Polygon Based Polyhedron", typeof(Component_MeshGeometry_PolygonBasedPolyhedron))); } //Physics { var group = @"Base\Physics"; Items.Add(new Item(group + @"\Rigid Body", typeof(Component_RigidBody))); Items.Add(new Item(group + @"\Box Shape", typeof(Component_CollisionShape_Box))); Items.Add(new Item(group + @"\Sphere Shape", typeof(Component_CollisionShape_Sphere))); Items.Add(new Item(group + @"\Cylinder Shape", typeof(Component_CollisionShape_Cylinder))); Items.Add(new Item(group + @"\Cone Shape", typeof(Component_CollisionShape_Cone))); Items.Add(new Item(group + @"\Capsule Shape", typeof(Component_CollisionShape_Capsule))); Items.Add(new Item(group + @"\Mesh Shape", typeof(Component_CollisionShape_Mesh))); Items.Add(new Item(group + @"\Physical Material", typeof(Component_PhysicalMaterial))); Items.Add(new Item(group + @"\Soft Body", typeof(Component_SoftBody))); Items.Add(new Item(group + @"\Constraint", typeof(Component_Constraint))); Items.Add(new Item(group + @"\Sensor", typeof(Component_Sensor))); //group.Types.Add( new TypeItem( subgroup,"Collision Trigger", typeof( Component_CollisionTrigger ), true ) ); //group.Types.Add( new TypeItem( subgroup,"Physical Liquid Surface", typeof( Component_PhysicalLiquidSurface ), true ) ); } //Particles { var groupParticles = @"Base\Particles"; Items.Add(new Item(groupParticles + @"\Particle System", typeof(Component_ParticleSystem))); Items.Add(new Item(groupParticles + @"\Particle Emitter", typeof(Component_ParticleEmitter))); var groupParticlesShapes = @"Base\Particles\Shapes"; Items.Add(new Item(groupParticlesShapes + @"\Box Shape", typeof(Component_ParticleEmitterShape_Box))); Items.Add(new Item(groupParticlesShapes + @"\Point Shape", typeof(Component_ParticleEmitterShape_Point))); Items.Add(new Item(groupParticlesShapes + @"\Sphere Shape", typeof(Component_ParticleEmitterShape_Sphere))); Items.Add(new Item(groupParticlesShapes + @"\Cylinder Shape", typeof(Component_ParticleEmitterShape_Cylinder))); Items.Add(new Item(groupParticlesShapes + @"\Custom Shape", typeof(Component_ParticleEmitterShape))); var groupParticlesModules = @"Base\Particles\Modules"; Items.Add(new Item(groupParticlesModules + @"\Size Multiplier By Time", typeof(Component_ParticleSizeMultiplierByTime))); Items.Add(new Item(groupParticlesModules + @"\Color Multiplier By Time", typeof(Component_ParticleColorMultiplierByTime))); Items.Add(new Item(groupParticlesModules + @"\Linear Acceleration By Time", typeof(Component_ParticleLinearAccelerationByTime))); Items.Add(new Item(groupParticlesModules + @"\Linear Velocity By Time", typeof(Component_ParticleLinearVelocityByTime))); Items.Add(new Item(groupParticlesModules + @"\Linear Speed Multiplier By Time", typeof(Component_ParticleLinearSpeedMultiplierByTime))); Items.Add(new Item(groupParticlesModules + @"\Angular Acceleration By Time", typeof(Component_ParticleAngularAccelerationByTime))); Items.Add(new Item(groupParticlesModules + @"\Angular Velocity By Time", typeof(Component_ParticleAngularVelocityByTime))); Items.Add(new Item(groupParticlesModules + @"\Angular Speed Multiplier By Time", typeof(Component_ParticleAngularSpeedMultiplierByTime))); Items.Add(new Item(groupParticlesModules + @"\Custom Module", typeof(Component_ParticleModuleCustom))); } //Screen effects { var group = @"Base\Screen effects"; var list = new List <(string, string)>(); list.Add(("Ambient Occlusion", "Component_RenderingEffect_AmbientOcclusion")); list.Add(("Antialiasing", "Component_RenderingEffect_Antialiasing")); list.Add(("Bloom", "Component_RenderingEffect_Bloom")); list.Add(("Color Grading", "Component_RenderingEffect_ColorGrading")); list.Add(("Depth Of Field", "Component_RenderingEffect_DepthOfField")); list.Add(("Gaussian Blur", "Component_RenderingEffect_GaussianBlur")); list.Add(("Grayscale", "Component_RenderingEffect_Grayscale")); list.Add(("Lens Effects", "Component_RenderingEffect_LensEffects")); list.Add(("Light Shafts", "Component_RenderingEffect_LightShafts")); list.Add(("Motion Blur", "Component_RenderingEffect_MotionBlur")); list.Add(("Noise", "Component_RenderingEffect_Noise")); list.Add(("Radial Blur", "Component_RenderingEffect_RadialBlur")); list.Add(("Screen Space Reflection", "Component_RenderingEffect_ScreenSpaceReflection")); list.Add(("Sharpen", "Component_RenderingEffect_Sharpen")); list.Add(("Show Render Target", "Component_RenderingEffect_ShowRenderTarget")); list.Add(("To LDR", "Component_RenderingEffect_ToLDR")); list.Add(("Tone Mapping", "Component_RenderingEffect_ToneMapping")); list.Add(("Vignetting", "Component_RenderingEffect_Vignetting")); foreach (var item in list) { var type = MetadataManager.GetType("NeoAxis." + item.Item2); if (type != null) { Items.Add(new Item(group + "\\" + item.Item1, type.GetNetType())); } } } }
public MetadataController(MetadataManager metadataManager) { this.metadataManager = metadataManager; }
private void buttonTypeSettingsDefaultValue_Click(object sender, EventArgs e) { var component = GetTypeSettingsComponent(); if (component != null) { var text = EditorLocalization.Translate("SettingsWindow", "Reset to default?"); if (EditorMessageBox.ShowQuestion(text, EMessageBoxButtons.YesNo) == EDialogResult.Yes) { var oldValue = component.TypeSettingsPrivateObjects; component.TypeSettingsPrivateObjects = null; var undoItem = new UndoActionPropertiesChange.Item(component, (Metadata.Property)MetadataManager.GetTypeOfNetType(typeof(Component)).MetadataGetMemberBySignature("property:TypeSettingsPrivateObjects"), oldValue, null); SettingsPanel.documentWindow.Document.UndoSystem.CommitAction(new UndoActionPropertiesChange(undoItem)); SettingsPanel.documentWindow.Document.Modified = true; } } }
IEnumerable <Item> GetNewItems(object[] objects) { var itemByGroupName = new Dictionary <string, HCItemGroup>(); var itemByMember = new Dictionary <Metadata.Member, HCItemMember>(); foreach (var item in rootItems) { var groupItem = item as HCItemGroup; if (groupItem != null) { itemByGroupName.Add(groupItem.Name, groupItem); } var memberItem = item as HCItemMember; if (memberItem != null) { itemByMember.Add(memberItem.Member, memberItem); } } var groups = new EDictionary <string, List <Metadata.Member> >(); //var members = MetadataManager.MetadataGetMembers( obj ); //if( ReverseItems ) // members = members.Reverse(); var firstObject = objects[0]; var membersToAdd = new EDictionary <Metadata.Member, int>(128); //foreach( var member in members ) foreach (var member in MetadataManager.MetadataGetMembers(firstObject)) { if (contentMode == ContentModeEnum.Properties && !(member is Metadata.Property)) { continue; } if (contentMode == ContentModeEnum.Events && !(member is Metadata.Event)) { continue; } if (EditorUtility.IsMemberVisible(firstObject, member)) { bool skip = false; //Type Settings filter var component = firstObject as Component; if (component != null && !component.TypeSettingsIsPublicMember(member)) { skip = true; } //if( component != null ) //{ //var baseComponentType = component.BaseType as Metadata.ComponentTypeInfo; //if( baseComponentType != null && baseComponentType.BasedOnObject.TypeSettingsIsPrivateObject( member ) ) // skip = true; //} if (!skip) { membersToAdd[member] = 1; } } } for (int nObject = 1; nObject < objects.Length; nObject++) { var obj = objects[nObject]; foreach (var member in MetadataManager.MetadataGetMembers(obj)) { if (membersToAdd.TryGetValue(member, out var counter)) { membersToAdd[member] = counter + 1; } } } foreach (var pair in membersToAdd) { var member = pair.Key; var counter = pair.Value; if (counter == objects.Length) { var groupName = TypeUtility.GetUserFriendlyCategory(member); List <Metadata.Member> list; if (!groups.TryGetValue(groupName, out list)) { list = new List <Metadata.Member>(); groups.Add(groupName, list); } list.Add(member); } } ////foreach( var member in members ) //foreach( var member in MetadataManager.MetadataGetMembers( obj ) ) //{ // if( contentMode == ContentModeEnum.Properties && !( member is Metadata.Property ) ) // continue; // if( contentMode == ContentModeEnum.Events && !( member is Metadata.Event ) ) // continue; // if( EditorUtility.IsMemberVisible( member ) ) // { // bool skip = false; // //Type Settings filter // var component = obj as Component; // if( component != null && !component.TypeSettingsIsPublicMember( member ) ) // skip = true; // //if( component != null ) // //{ // //var baseComponentType = component.BaseType as Metadata.ComponentTypeInfo; // //if( baseComponentType != null && baseComponentType.BasedOnObject.TypeSettingsIsPrivateObject( member ) ) // // skip = true; // //} // if( !skip ) // { // var groupName = TypeUtility.GetUserFriendlyCategory( member ); // List<Metadata.Member> list; // if( !groups.TryGetValue( groupName, out list ) ) // { // list = new List<Metadata.Member>(); // groups.Add( groupName, list ); // } // list.Add( member ); // } // } //} //!!!!change order //reverse groups for Events mode if (ReverseGroups) //if( contentMode == ContentModeEnum.Events ) { var newGroups = new EDictionary <string, List <Metadata.Member> >(groups.Count); foreach (var pair in groups.Reverse()) { newGroups.Add(pair.Key, pair.Value); } groups = newGroups; } foreach (var groupPair in groups) { var groupName = groupPair.Key; var list = groupPair.Value; //update group if (DisplayGroups) { if (!itemByGroupName.TryGetValue(groupName, out HCItemGroup groupItem)) { groupItem = new HCItemGroup(this, null, groupName); } yield return(groupItem); } //update properties of the group foreach (var member in list) { if (!itemByMember.TryGetValue(member, out var item)) { Type itemType = GetSuitableItemType(member); //var originalType = property.Type.GetNetType(); //var unrefType = ReferenceUtils.GetUnreferencedType( originalType ); //Type itemType = HCPropertyItemTypes.GetSuitableType( unrefType ); //!!!!может быть null. Component.MetadataGetMembers в _InvokeMember if (itemType != null) { var property = member as Metadata.Property; if (property != null) { var constructor = itemType.GetConstructor(new Type[] { typeof(HierarchicalContainer), typeof(Item), typeof(object[]), typeof(Metadata.Property), typeof(object[]) }); item = (HCItemMember)constructor.Invoke(new object[] { this, null, SelectedObjects, property, property.Indexers }); } var _event = member as Metadata.Event; if (_event != null) { var constructor = itemType.GetConstructor(new Type[] { typeof(HierarchicalContainer), typeof(Item), typeof(object[]), typeof(Metadata.Event) }); item = (HCItemMember)constructor.Invoke(new object[] { this, null, SelectedObjects, _event }); } } } if (item != null) { yield return(item); } } } }
public CppCodegenNodeFactory(CompilerTypeSystemContext context, CompilationModuleGroup compilationModuleGroup, MetadataManager metadataManager) : base(context, compilationModuleGroup, metadataManager, new CoreRTNameMangler(new CppNodeMangler(), true)) { }
public static Component_Material CreateMaterial(Component materialsGroup, MaterialData data) { //create material var material = materialsGroup.CreateComponent <Component_Material>(enabled: false); material.Name = data.Name; material.ShadingModel = data.ShadingModel; material.TwoSided = data.TwoSided; if (!string.IsNullOrEmpty(data.OpacityTexture)) { material.BlendMode = Component_Material.BlendModeEnum.Masked; } //create shader graph Component_FlowGraph graph; { graph = material.CreateComponent <Component_FlowGraph>(); graph.Name = material.Name + " shader graph"; graph.Specialization = ReferenceUtility.MakeReference <Component_FlowGraphSpecialization>(null, MetadataManager.GetTypeOfNetType(typeof(Component_FlowGraphSpecialization_Shader)).Name + "|Instance"); var node = graph.CreateComponent <Component_FlowGraphNode>(); node.Name = "Node " + material.Name; node.Position = new Vector2I(10, -7); node.ControlledObject = ReferenceUtility.MakeThisReference(node, material); } const int step = 9; Vector2I position = new Vector2I(-20, -data.GetTextureCount() * step / 2); //BaseColor if (!string.IsNullOrEmpty(data.BaseColorTexture)) { var node = graph.CreateComponent <Component_FlowGraphNode>(); node.Name = "Node Texture Sample " + "BaseColor"; node.Position = position; position.Y += step; var sample = node.CreateComponent <Component_ShaderTextureSample>(); sample.Name = ComponentUtility.GetNewObjectUniqueName(sample); sample.Texture = new Reference <Component_Image>(null, data.BaseColorTexture); node.ControlledObject = ReferenceUtility.MakeThisReference(node, sample); material.BaseColor = ReferenceUtility.MakeThisReference(material, sample, "RGBA"); } else if (data.BaseColor.HasValue) { material.BaseColor = data.BaseColor.Value; } //Metallic if (!string.IsNullOrEmpty(data.MetallicTexture)) { var node = graph.CreateComponent <Component_FlowGraphNode>(); node.Name = "Node Texture Sample " + "Metallic"; node.Position = position; position.Y += step; var sample = node.CreateComponent <Component_ShaderTextureSample>(); sample.Name = ComponentUtility.GetNewObjectUniqueName(sample); sample.Texture = new Reference <Component_Image>(null, data.MetallicTexture); node.ControlledObject = ReferenceUtility.MakeThisReference(node, sample); material.Metallic = ReferenceUtility.MakeThisReference(material, sample, "R"); } //Roughness if (!string.IsNullOrEmpty(data.RoughnessTexture)) { var node = graph.CreateComponent <Component_FlowGraphNode>(); node.Name = "Node Texture Sample " + "Roughness"; node.Position = position; position.Y += step; var sample = node.CreateComponent <Component_ShaderTextureSample>(); sample.Name = ComponentUtility.GetNewObjectUniqueName(sample); sample.Texture = new Reference <Component_Image>(null, data.RoughnessTexture); node.ControlledObject = ReferenceUtility.MakeThisReference(node, sample); material.Roughness = ReferenceUtility.MakeThisReference(material, sample, "R"); } //Normal if (!string.IsNullOrEmpty(data.NormalTexture)) { var node = graph.CreateComponent <Component_FlowGraphNode>(); node.Name = "Node Texture Sample " + "Normal"; node.Position = position; position.Y += step; var sample = node.CreateComponent <Component_ShaderTextureSample>(); sample.Name = ComponentUtility.GetNewObjectUniqueName(sample); sample.Texture = new Reference <Component_Image>(null, data.NormalTexture); node.ControlledObject = ReferenceUtility.MakeThisReference(node, sample); material.Normal = ReferenceUtility.MakeThisReference(material, sample, "RGBA"); } //Displacement if (!string.IsNullOrEmpty(data.DisplacementTexture)) { var node = graph.CreateComponent <Component_FlowGraphNode>(); node.Name = "Node Texture Sample " + "Displacement"; node.Position = position; position.Y += step; var sample = node.CreateComponent <Component_ShaderTextureSample>(); sample.Name = ComponentUtility.GetNewObjectUniqueName(sample); sample.Texture = new Reference <Component_Image>(null, data.DisplacementTexture); node.ControlledObject = ReferenceUtility.MakeThisReference(node, sample); material.Displacement = ReferenceUtility.MakeThisReference(material, sample, "R"); } //AmbientOcclusion if (!string.IsNullOrEmpty(data.AmbientOcclusionTexture)) { var node = graph.CreateComponent <Component_FlowGraphNode>(); node.Name = "Node Texture Sample " + "AmbientOcclusion"; node.Position = position; position.Y += step; var sample = node.CreateComponent <Component_ShaderTextureSample>(); sample.Name = ComponentUtility.GetNewObjectUniqueName(sample); sample.Texture = new Reference <Component_Image>(null, data.AmbientOcclusionTexture); node.ControlledObject = ReferenceUtility.MakeThisReference(node, sample); material.AmbientOcclusion = ReferenceUtility.MakeThisReference(material, sample, "R"); } //Emissive if (!string.IsNullOrEmpty(data.EmissiveTexture)) { var node = graph.CreateComponent <Component_FlowGraphNode>(); node.Name = "Node Texture Sample " + "Emissive"; node.Position = position; position.Y += step; var sample = node.CreateComponent <Component_ShaderTextureSample>(); sample.Name = ComponentUtility.GetNewObjectUniqueName(sample); sample.Texture = new Reference <Component_Image>(null, data.EmissiveTexture); node.ControlledObject = ReferenceUtility.MakeThisReference(node, sample); material.Emissive = ReferenceUtility.MakeThisReference(material, sample, "RGBA"); } //Opacity if (!string.IsNullOrEmpty(data.OpacityTexture)) { var node = graph.CreateComponent <Component_FlowGraphNode>(); node.Name = "Node Texture Sample " + "Opacity"; node.Position = position; position.Y += step; var sample = node.CreateComponent <Component_ShaderTextureSample>(); sample.Name = ComponentUtility.GetNewObjectUniqueName(sample); sample.Texture = new Reference <Component_Image>(null, data.OpacityTexture); node.ControlledObject = ReferenceUtility.MakeThisReference(node, sample); material.Opacity = ReferenceUtility.MakeThisReference(material, sample, "R"); } material.Enabled = true; return(material); }
public void AttachToDependencyGraph(DependencyAnalyzerBase <NodeFactory> graph) { graph.ComputingDependencyPhaseChange += Graph_ComputingDependencyPhaseChange; var compilerIdentifierNode = new CompilerIdentifierNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.CompilerIdentifier, compilerIdentifierNode, compilerIdentifierNode); RuntimeFunctionsTable = new RuntimeFunctionsTableNode(this); Header.Add(Internal.Runtime.ReadyToRunSectionType.RuntimeFunctions, RuntimeFunctionsTable, RuntimeFunctionsTable); RuntimeFunctionsGCInfo = new RuntimeFunctionsGCInfoNode(); graph.AddRoot(RuntimeFunctionsGCInfo, "GC info is always generated"); ProfileDataSection = new ProfileDataSectionNode(); Header.Add(Internal.Runtime.ReadyToRunSectionType.ProfileDataInfo, ProfileDataSection, ProfileDataSection.StartSymbol); DelayLoadMethodCallThunks = new DelayLoadMethodCallThunkNodeRange(); Header.Add(Internal.Runtime.ReadyToRunSectionType.DelayLoadMethodCallThunks, DelayLoadMethodCallThunks, DelayLoadMethodCallThunks); ExceptionInfoLookupTableNode exceptionInfoLookupTableNode = new ExceptionInfoLookupTableNode(this); Header.Add(Internal.Runtime.ReadyToRunSectionType.ExceptionInfo, exceptionInfoLookupTableNode, exceptionInfoLookupTableNode); graph.AddRoot(exceptionInfoLookupTableNode, "ExceptionInfoLookupTable is always generated"); ManifestMetadataTable = new ManifestMetadataTableNode(this); Header.Add(Internal.Runtime.ReadyToRunSectionType.ManifestMetadata, ManifestMetadataTable, ManifestMetadataTable); Resolver.SetModuleIndexLookup(ManifestMetadataTable.ModuleToIndex); ManifestAssemblyMvidHeaderNode mvidTableNode = new ManifestAssemblyMvidHeaderNode(ManifestMetadataTable); Header.Add(Internal.Runtime.ReadyToRunSectionType.ManifestAssemblyMvids, mvidTableNode, mvidTableNode); AssemblyTableNode assemblyTable = null; if (CompilationModuleGroup.IsCompositeBuildMode) { assemblyTable = new AssemblyTableNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.ComponentAssemblies, assemblyTable, assemblyTable); } // Generate per assembly header tables int assemblyIndex = -1; foreach (EcmaModule inputModule in CompilationModuleGroup.CompilationModuleSet) { assemblyIndex++; HeaderNode tableHeader = Header; if (assemblyTable != null) { AssemblyHeaderNode perAssemblyHeader = new AssemblyHeaderNode(Target, ReadyToRunFlags.READYTORUN_FLAG_Component, assemblyIndex); assemblyTable.Add(perAssemblyHeader); tableHeader = perAssemblyHeader; } MethodEntryPointTableNode methodEntryPointTable = new MethodEntryPointTableNode(inputModule, Target); tableHeader.Add(Internal.Runtime.ReadyToRunSectionType.MethodDefEntryPoints, methodEntryPointTable, methodEntryPointTable); TypesTableNode typesTable = new TypesTableNode(Target, inputModule); tableHeader.Add(Internal.Runtime.ReadyToRunSectionType.AvailableTypes, typesTable, typesTable); InliningInfoNode inliningInfoTable = new InliningInfoNode(Target, inputModule); tableHeader.Add(Internal.Runtime.ReadyToRunSectionType.InliningInfo2, inliningInfoTable, inliningInfoTable); // Core library attributes are checked FAR more often than other dlls // attributes, so produce a highly efficient table for determining if they are // present. Other assemblies *MAY* benefit from this feature, but it doesn't show // as useful at this time. if (inputModule == TypeSystemContext.SystemModule) { AttributePresenceFilterNode attributePresenceTable = new AttributePresenceFilterNode(inputModule); Header.Add(Internal.Runtime.ReadyToRunSectionType.AttributePresence, attributePresenceTable, attributePresenceTable); } } InstanceEntryPointTable = new InstanceEntryPointTableNode(this); Header.Add(Internal.Runtime.ReadyToRunSectionType.InstanceMethodEntryPoints, InstanceEntryPointTable, InstanceEntryPointTable); ImportSectionsTable = new ImportSectionsTableNode(this); Header.Add(Internal.Runtime.ReadyToRunSectionType.ImportSections, ImportSectionsTable, ImportSectionsTable.StartSymbol); DebugInfoTable = new DebugInfoTableNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.DebugInfo, DebugInfoTable, DebugInfoTable); EagerImports = new ImportSectionNode( "EagerImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_UNKNOWN, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_EAGER, (byte)Target.PointerSize, emitPrecode: false, emitGCRefMap: false); ImportSectionsTable.AddEmbeddedObject(EagerImports); // All ready-to-run images have a module import helper which gets patched by the runtime on image load ModuleImport = new Import(EagerImports, new ReadyToRunHelperSignature( ReadyToRunHelper.Module)); graph.AddRoot(ModuleImport, "Module import is required by the R2R format spec"); if (Target.Architecture != TargetArchitecture.X86) { Import personalityRoutineImport = new Import(EagerImports, new ReadyToRunHelperSignature( ReadyToRunHelper.PersonalityRoutine)); PersonalityRoutine = new ImportThunk(this, ReadyToRunHelper.PersonalityRoutine, EagerImports, useVirtualCall: false); graph.AddRoot(PersonalityRoutine, "Personality routine is faster to root early rather than referencing it from each unwind info"); Import filterFuncletPersonalityRoutineImport = new Import(EagerImports, new ReadyToRunHelperSignature( ReadyToRunHelper.PersonalityRoutineFilterFunclet)); FilterFuncletPersonalityRoutine = new ImportThunk(this, ReadyToRunHelper.PersonalityRoutineFilterFunclet, EagerImports, useVirtualCall: false); graph.AddRoot(FilterFuncletPersonalityRoutine, "Filter funclet personality routine is faster to root early rather than referencing it from each unwind info"); } if ((ProfileDataManager != null) && (ProfileDataManager.EmbedPgoDataInR2RImage)) { // Profile instrumentation data attaches here HashSet <MethodDesc> methodsToInsertInstrumentationDataFor = new HashSet <MethodDesc>(); foreach (EcmaModule inputModule in CompilationModuleGroup.CompilationModuleSet) { foreach (MethodDesc method in ProfileDataManager.GetMethodsForModuleDesc(inputModule)) { if (ProfileDataManager[method].SchemaData != null) { methodsToInsertInstrumentationDataFor.Add(method); } } } if (methodsToInsertInstrumentationDataFor.Count != 0) { MethodDesc[] methodsToInsert = methodsToInsertInstrumentationDataFor.ToArray(); methodsToInsert.MergeSort(new TypeSystemComparer().Compare); InstrumentationDataTable = new InstrumentationDataTableNode(this, methodsToInsert, ProfileDataManager); Header.Add(Internal.Runtime.ReadyToRunSectionType.PgoInstrumentationData, InstrumentationDataTable, InstrumentationDataTable); } } MethodImports = new ImportSectionNode( "MethodImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: false, emitGCRefMap: true); ImportSectionsTable.AddEmbeddedObject(MethodImports); DispatchImports = new ImportSectionNode( "DispatchImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: false, emitGCRefMap: true); ImportSectionsTable.AddEmbeddedObject(DispatchImports); HelperImports = new ImportSectionNode( "HelperImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_UNKNOWN, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: false, emitGCRefMap: false); ImportSectionsTable.AddEmbeddedObject(HelperImports); PrecodeImports = new ImportSectionNode( "PrecodeImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_UNKNOWN, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: true, emitGCRefMap: false); ImportSectionsTable.AddEmbeddedObject(PrecodeImports); StringImports = new ImportSectionNode( "StringImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_STRING_HANDLE, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_UNKNOWN, (byte)Target.PointerSize, emitPrecode: true, emitGCRefMap: false); ImportSectionsTable.AddEmbeddedObject(StringImports); graph.AddRoot(ImportSectionsTable, "Import sections table is always generated"); graph.AddRoot(ModuleImport, "Module import is always generated"); graph.AddRoot(EagerImports, "Eager imports are always generated"); graph.AddRoot(MethodImports, "Method imports are always generated"); graph.AddRoot(DispatchImports, "Dispatch imports are always generated"); graph.AddRoot(HelperImports, "Helper imports are always generated"); graph.AddRoot(PrecodeImports, "Precode helper imports are always generated"); graph.AddRoot(StringImports, "String imports are always generated"); graph.AddRoot(Header, "ReadyToRunHeader is always generated"); graph.AddRoot(CopiedCorHeaderNode, "MSIL COR header is always generated for R2R files"); graph.AddRoot(DebugDirectoryNode, "Debug Directory will always contain at least one entry"); if (Win32ResourcesNode != null) { graph.AddRoot(Win32ResourcesNode, "Win32 Resources are placed if not empty"); } MetadataManager.AttachToDependencyGraph(graph); }
//private void Editor_TextChanged( object sender, EventArgs e ) //{ //if( disableTextChanged ) // return; //var newText = scriptEditorControl.Editor.Text; //if( Script.Code.Value != newText ) //{ // var oldValue = Script.Code; // //!!!! // Script.DisableUpdate = true; // Script.Code = newText; // var undoItems = new List<UndoActionPropertiesChange.Item>(); // var property = (Metadata.Property)MetadataManager.GetTypeOfNetType( // typeof( Component_CSharpScript ) ).MetadataGetMemberBySignature( "property:Code" ); // undoItems.Add( new UndoActionPropertiesChange.Item( Script, property, oldValue ) ); // var undoAction = new UndoActionPropertiesChange( undoItems ); // Document.CommitUndoAction( undoAction ); // //!!!! // Log.Info( "undo added" ); // //!!!! // scriptEditorControl.Editor.Document.UndoStack.ClearAll(); //} //} private void timer1_Tick(object sender, EventArgs e) { if (!IsHandleCreated || WinFormsUtility.IsDesignerHosted(this) || EditorAPI.ClosingApplication) { return; } var newValue = scriptEditorControl.Editor.Text; if (sentTextToEngineUndoSystem != newValue) { sentTextToEngineUndoSystem = newValue; var oldValue = Script.Code; //!!!!в опции редактора var time = 3.0; disableUpdateRestoreTime = EngineApp.GetSystemTime() + time; Script.DisableUpdate = true; if (newValue != Script.Code.Value) { //update Code Script.Code = newValue; //add undo var undoItems = new List <UndoActionPropertiesChange.Item>(); var property = (Metadata.Property)MetadataManager.GetTypeOfNetType( typeof(Component_CSharpScript)).MetadataGetMemberBySignature("property:Code"); undoItems.Add(new UndoActionPropertiesChange.Item(Script, property, oldValue)); var undoAction = new UndoActionPropertiesChange(undoItems); Document.CommitUndoAction(undoAction); } } if (disableUpdateRestoreTime != 0 && EngineApp.GetSystemTime() > disableUpdateRestoreTime) { Script.DisableUpdate = false; disableUpdateRestoreTime = 0; //to refresh preview texture Script.RaiseCodeChangedEventAndSetNeedUpdate(); } //scriptEditorControl.Editor.Document.UndoStack.ClearAll(); ////check for update Script.Code //{ // var editor = scriptEditorControl.Editor; // if( Script.Code.Value != editor.Text ) // { // ////var caret = editor.TextArea.Caret.Location; // //var selectionStart = editor.SelectionStart; // //var selectionLength = editor.SelectionLength; // disableTextChanged = true; // //xx xx; // editor.Document.Text = Script.Code.Value; // scriptEditorControl.Editor.Document.UndoStack.ClearAll(); // disableTextChanged = false; // //try // //{ // // //editor.TextArea.Caret.Location = caret; // // editor.Select( selectionStart, selectionLength ); // //} // //catch { } // } //} }
public void TestAlternateFormatsFailsGracefully() { var noAlternateFormats = MetadataManager.GetAlternateFormatsForCountry(999); Assert.Null(noAlternateFormats); }
public WebAssemblyCodegenNodeFactory(CompilerTypeSystemContext context, CompilationModuleGroup compilationModuleGroup, MetadataManager metadataManager, InteropStubManager interopStubManager, NameMangler nameMangler, VTableSliceProvider vtableSliceProvider, DictionaryLayoutProvider dictionaryLayoutProvider) : base(context, compilationModuleGroup, metadataManager, interopStubManager, nameMangler, new LazyGenericsDisabledPolicy(), vtableSliceProvider, dictionaryLayoutProvider, new ImportedNodeProviderThrowing()) { _vTableSlotNodes = new NodeCache <MethodDesc, WebAssemblyVTableSlotNode>(methodKey => { return(new WebAssemblyVTableSlotNode(methodKey)); }); }
public ILScanNodeFactory(CompilerTypeSystemContext context, CompilationModuleGroup compilationModuleGroup, MetadataManager metadataManager, InteropStubManager interopStubManager, NameMangler nameMangler) : base(context, compilationModuleGroup, metadataManager, interopStubManager, nameMangler, new LazyGenericsDisabledPolicy(), new LazyVTableSliceProvider(), new LazyDictionaryLayoutProvider(), new ExternSymbolsImportedNodeProvider()) { }
public override void AttachToDependencyGraph(DependencyAnalyzerBase <NodeFactory> graph) { Header = new HeaderNode(Target); var compilerIdentifierNode = new CompilerIdentifierNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.CompilerIdentifier, compilerIdentifierNode, compilerIdentifierNode); RuntimeFunctionsTable = new RuntimeFunctionsTableNode(this); Header.Add(Internal.Runtime.ReadyToRunSectionType.RuntimeFunctions, RuntimeFunctionsTable, RuntimeFunctionsTable); RuntimeFunctionsGCInfo = new RuntimeFunctionsGCInfoNode(); graph.AddRoot(RuntimeFunctionsGCInfo, "GC info is always generated"); ProfileDataSection = new ProfileDataSectionNode(); Header.Add(Internal.Runtime.ReadyToRunSectionType.ProfileDataInfo, ProfileDataSection, ProfileDataSection.StartSymbol); ExceptionInfoLookupTableNode exceptionInfoLookupTableNode = new ExceptionInfoLookupTableNode(this); Header.Add(Internal.Runtime.ReadyToRunSectionType.ExceptionInfo, exceptionInfoLookupTableNode, exceptionInfoLookupTableNode); graph.AddRoot(exceptionInfoLookupTableNode, "ExceptionInfoLookupTable is always generated"); MethodEntryPointTable = new MethodEntryPointTableNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.MethodDefEntryPoints, MethodEntryPointTable, MethodEntryPointTable); ManifestMetadataTable = new ManifestMetadataTableNode(InputModuleContext.GlobalContext, this); Header.Add(Internal.Runtime.ReadyToRunSectionType.ManifestMetadata, ManifestMetadataTable, ManifestMetadataTable); Resolver.SetModuleIndexLookup(ManifestMetadataTable.ModuleToIndex); InstanceEntryPointTable = new InstanceEntryPointTableNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.InstanceMethodEntryPoints, InstanceEntryPointTable, InstanceEntryPointTable); TypesTable = new TypesTableNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.AvailableTypes, TypesTable, TypesTable); ImportSectionsTable = new ImportSectionsTableNode(this); Header.Add(Internal.Runtime.ReadyToRunSectionType.ImportSections, ImportSectionsTable, ImportSectionsTable.StartSymbol); DebugInfoTable = new DebugInfoTableNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.DebugInfo, DebugInfoTable, DebugInfoTable); // Core library attributes are checked FAR more often than other dlls // attributes, so produce a highly efficient table for determining if they are // present. Other assemblies *MAY* benefit from this feature, but it doesn't show // as useful at this time. if (this.AttributePresenceFilter != null) { Header.Add(Internal.Runtime.ReadyToRunSectionType.AttributePresence, AttributePresenceFilter, AttributePresenceFilter); } EagerImports = new ImportSectionNode( "EagerImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_UNKNOWN, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_EAGER, (byte)Target.PointerSize, emitPrecode: false, emitGCRefMap: false); ImportSectionsTable.AddEmbeddedObject(EagerImports); // All ready-to-run images have a module import helper which gets patched by the runtime on image load ModuleImport = new Import(EagerImports, new ReadyToRunHelperSignature( ReadyToRunHelper.Module)); graph.AddRoot(ModuleImport, "Module import is required by the R2R format spec"); if (Target.Architecture != TargetArchitecture.X86) { Import personalityRoutineImport = new Import(EagerImports, new ReadyToRunHelperSignature( ReadyToRunHelper.PersonalityRoutine)); PersonalityRoutine = new ImportThunk( ReadyToRunHelper.PersonalityRoutine, this, personalityRoutineImport, useVirtualCall: false); graph.AddRoot(PersonalityRoutine, "Personality routine is faster to root early rather than referencing it from each unwind info"); Import filterFuncletPersonalityRoutineImport = new Import(EagerImports, new ReadyToRunHelperSignature( ReadyToRunHelper.PersonalityRoutineFilterFunclet)); FilterFuncletPersonalityRoutine = new ImportThunk( ReadyToRunHelper.PersonalityRoutineFilterFunclet, this, filterFuncletPersonalityRoutineImport, useVirtualCall: false); graph.AddRoot(FilterFuncletPersonalityRoutine, "Filter funclet personality routine is faster to root early rather than referencing it from each unwind info"); } MethodImports = new ImportSectionNode( "MethodImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: false, emitGCRefMap: true); ImportSectionsTable.AddEmbeddedObject(MethodImports); DispatchImports = new ImportSectionNode( "DispatchImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: false, emitGCRefMap: true); ImportSectionsTable.AddEmbeddedObject(DispatchImports); HelperImports = new ImportSectionNode( "HelperImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_UNKNOWN, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: false, emitGCRefMap: false); ImportSectionsTable.AddEmbeddedObject(HelperImports); PrecodeImports = new ImportSectionNode( "PrecodeImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_UNKNOWN, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: true, emitGCRefMap: false); ImportSectionsTable.AddEmbeddedObject(PrecodeImports); StringImports = new ImportSectionNode( "StringImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_STRING_HANDLE, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_UNKNOWN, (byte)Target.PointerSize, emitPrecode: true, emitGCRefMap: false); ImportSectionsTable.AddEmbeddedObject(StringImports); graph.AddRoot(ImportSectionsTable, "Import sections table is always generated"); graph.AddRoot(ModuleImport, "Module import is always generated"); graph.AddRoot(EagerImports, "Eager imports are always generated"); graph.AddRoot(MethodImports, "Method imports are always generated"); graph.AddRoot(DispatchImports, "Dispatch imports are always generated"); graph.AddRoot(HelperImports, "Helper imports are always generated"); graph.AddRoot(PrecodeImports, "Precode helper imports are always generated"); graph.AddRoot(StringImports, "String imports are always generated"); graph.AddRoot(Header, "ReadyToRunHeader is always generated"); graph.AddRoot(CopiedCorHeaderNode, "MSIL COR header is always generated"); if (Win32ResourcesNode != null) { graph.AddRoot(Win32ResourcesNode, "Win32 Resources are placed if not empty"); } MetadataManager.AttachToDependencyGraph(graph); }
public override void Register() { var types = new List <Metadata.TypeInfo>(); types.Add(MetadataManager.GetTypeOfNetType(typeof(Component_Constraint2D_Revolute))); types.Add(MetadataManager.GetTypeOfNetType(typeof(Component_Constraint2D_Prismatic))); types.Add(MetadataManager.GetTypeOfNetType(typeof(Component_Constraint2D_Distance))); types.Add(MetadataManager.GetTypeOfNetType(typeof(Component_Constraint2D_Weld))); types.Add(MetadataManager.GetTypeOfNetType(typeof(Component_Constraint2D_Fixed))); foreach (var type in types) { var displayName = TypeUtility.GetUserFriendlyNameForInstanceOfType(type.GetNetType()); var a = new EditorAction(); a.Name = "Add " + displayName; //a.ImageSmall = Properties.Resources.New_16; //a.ImageBig = Properties.Resources.New_32; a.QatSupport = true; //a.qatAddByDefault = true; a.ContextMenuSupport = EditorContextMenuWinForms.MenuTypeEnum.Document; Component_PhysicalBody2D GetBody(object obj) { if (obj is Component_PhysicalBody2D body) { return(body); } var c = obj as Component; if (c != null) { var body2 = c.GetComponent <Component_PhysicalBody2D>(); if (body2 != null) { return(body2); } } return(null); } a.GetState += delegate(EditorAction.GetStateContext context) { if (context.ObjectsInFocus.DocumentWindow != null) { object[] selectedObjects = context.ObjectsInFocus.Objects; if (selectedObjects.Length == 2) { var bodyA = GetBody(selectedObjects[0]); var bodyB = GetBody(selectedObjects[1]); if (bodyA != null && bodyB != null) { context.Enabled = true; } //if( selectedObjects[ 0 ] is Component_PhysicalBody2D && selectedObjects[ 1 ] is Component_PhysicalBody2D ) // context.Enabled = true; } } }; a.Click += delegate(EditorAction.ClickContext context) { object[] selectedObjects = context.ObjectsInFocus.Objects; if (selectedObjects.Length == 2) { var bodyA = GetBody(selectedObjects[0]); var bodyB = GetBody(selectedObjects[1]); //var bodyA = (Component_PhysicalBody2D)context.ObjectsInFocus.Objects[ 0 ]; //var bodyB = (Component_PhysicalBody2D)context.ObjectsInFocus.Objects[ 1 ]; var parent = ComponentUtility.FindNearestCommonParent(new Component[] { bodyA, bodyB }); if (parent != null) { var data = new NewObjectWindow.CreationDataClass(); data.initDocumentWindow = context.ObjectsInFocus.DocumentWindow; data.initParentObjects = new List <object>(); data.initParentObjects.Add(parent); data.initLockType = type; data.additionActionBeforeEnabled = delegate(NewObjectWindow window) { var constraint = (Component_Constraint2D)data.createdComponentsOnTopLevel[0]; constraint.BodyA = ReferenceUtility.MakeReference <Component_PhysicalBody2D>( null, ReferenceUtility.CalculateThisReference(constraint, bodyA)); constraint.BodyB = ReferenceUtility.MakeReference <Component_PhysicalBody2D>( null, ReferenceUtility.CalculateThisReference(constraint, bodyB)); if (constraint is Component_Constraint2D_Distance) { var pos = bodyA.Transform.Value.Position; var posB = bodyB.Transform.Value.Position; var distance = (posB - pos).Length(); var rot = Quaternion.FromDirectionZAxisUp((posB - pos).GetNormalize()); var scl = new Vector3(distance, distance, distance); constraint.Transform = new Transform(pos, rot, scl); } else { var pos = (bodyA.Transform.Value.Position + bodyB.Transform.Value.Position) * 0.5; constraint.Transform = new Transform(pos, Quaternion.Identity); } }; EditorAPI.OpenNewObjectWindow(data); } } }; EditorActions.Register(a); } }
public MetadataManagerTest() { _metadataManager = null; }
public override void AttachToDependencyGraph(DependencyAnalyzerBase <NodeFactory> graph) { Header = new HeaderNode(Target); var compilerIdentifierNode = new CompilerIdentifierNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.CompilerIdentifier, compilerIdentifierNode, compilerIdentifierNode); RuntimeFunctionsTable = new RuntimeFunctionsTableNode(this); Header.Add(Internal.Runtime.ReadyToRunSectionType.RuntimeFunctions, RuntimeFunctionsTable, RuntimeFunctionsTable); RuntimeFunctionsGCInfo = new RuntimeFunctionsGCInfoNode(); graph.AddRoot(RuntimeFunctionsGCInfo, "GC info is always generated"); ExceptionInfoLookupTableNode exceptionInfoLookupTableNode = new ExceptionInfoLookupTableNode(this); Header.Add(Internal.Runtime.ReadyToRunSectionType.ExceptionInfo, exceptionInfoLookupTableNode, exceptionInfoLookupTableNode); graph.AddRoot(exceptionInfoLookupTableNode, "ExceptionInfoLookupTable is always generated"); MethodEntryPointTable = new MethodEntryPointTableNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.MethodDefEntryPoints, MethodEntryPointTable, MethodEntryPointTable); InstanceEntryPointTable = new InstanceEntryPointTableNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.InstanceMethodEntryPoints, InstanceEntryPointTable, InstanceEntryPointTable); TypesTable = new TypesTableNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.AvailableTypes, TypesTable, TypesTable); ImportSectionsTable = new ImportSectionsTableNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.ImportSections, ImportSectionsTable, ImportSectionsTable.StartSymbol); DebugInfoTable = new DebugInfoTableNode(Target); Header.Add(Internal.Runtime.ReadyToRunSectionType.DebugInfo, DebugInfoTable, DebugInfoTable); EagerImports = new ImportSectionNode( "EagerImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_UNKNOWN, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_EAGER, (byte)Target.PointerSize, emitPrecode: false); ImportSectionsTable.AddEmbeddedObject(EagerImports); // All ready-to-run images have a module import helper which gets patched by the runtime on image load ModuleImport = new Import(EagerImports, new ReadyToRunHelperSignature( ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunHelper.READYTORUN_HELPER_Module)); graph.AddRoot(ModuleImport, "Module import is required by the R2R format spec"); if (Target.Architecture != TargetArchitecture.X86) { Import personalityRoutineImport = new Import(EagerImports, new ReadyToRunHelperSignature( ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunHelper.READYTORUN_HELPER_PersonalityRoutine)); PersonalityRoutine = new ImportThunk( ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunHelper.READYTORUN_HELPER_PersonalityRoutine, this, personalityRoutineImport); graph.AddRoot(PersonalityRoutine, "Personality routine is faster to root early rather than referencing it from each unwind info"); Import filterFuncletPersonalityRoutineImport = new Import(EagerImports, new ReadyToRunHelperSignature( ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunHelper.READYTORUN_HELPER_PersonalityRoutineFilterFunclet)); FilterFuncletPersonalityRoutine = new ImportThunk( ILCompiler.DependencyAnalysis.ReadyToRun.ReadyToRunHelper.READYTORUN_HELPER_PersonalityRoutineFilterFunclet, this, filterFuncletPersonalityRoutineImport); graph.AddRoot(FilterFuncletPersonalityRoutine, "Filter funclet personality routine is faster to root early rather than referencing it from each unwind info"); } MethodImports = new ImportSectionNode( "MethodImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: false); ImportSectionsTable.AddEmbeddedObject(MethodImports); DispatchImports = new ImportSectionNode( "DispatchImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: false); ImportSectionsTable.AddEmbeddedObject(DispatchImports); HelperImports = new ImportSectionNode( "HelperImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_UNKNOWN, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: false); ImportSectionsTable.AddEmbeddedObject(HelperImports); PrecodeImports = new ImportSectionNode( "PrecodeImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_UNKNOWN, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_PCODE, (byte)Target.PointerSize, emitPrecode: true); ImportSectionsTable.AddEmbeddedObject(PrecodeImports); StringImports = new ImportSectionNode( "StringImports", CorCompileImportType.CORCOMPILE_IMPORT_TYPE_STRING_HANDLE, CorCompileImportFlags.CORCOMPILE_IMPORT_FLAGS_UNKNOWN, (byte)Target.PointerSize, emitPrecode: true); ImportSectionsTable.AddEmbeddedObject(StringImports); graph.AddRoot(ImportSectionsTable, "Import sections table is always generated"); graph.AddRoot(ModuleImport, "Module import is always generated"); graph.AddRoot(EagerImports, "Eager imports are always generated"); graph.AddRoot(MethodImports, "Method imports are always generated"); graph.AddRoot(DispatchImports, "Dispatch imports are always generated"); graph.AddRoot(HelperImports, "Helper imports are always generated"); graph.AddRoot(PrecodeImports, "Precode imports are always generated"); graph.AddRoot(StringImports, "String imports are always generated"); graph.AddRoot(Header, "ReadyToRunHeader is always generated"); MetadataManager.AttachToDependencyGraph(graph); }
//!!!!new public static (Metadata.TypeInfo objectType, string referenceToObject) GetObjectToCreateByContentBrowserItem(ContentBrowser.Item item) { Metadata.TypeInfo objectType = null; string referenceToObject = ""; //string memberFullSignature = ""; //Component createNodeWithComponent = null; //!!!!не все итемы можно создать. //_Type var typeItem = item as ContentBrowserItem_Type; if (typeItem != null) { var type = typeItem.Type; //!!!!генериковому нужно указать типы if (MetadataManager.GetTypeOfNetType(typeof(Component)).IsAssignableFrom(type) && !type.Abstract) { objectType = type; //referenceToObject = objectType.Name; } } //!!!! //var memberItem = item as ContentBrowserItem_Member; //if( memberItem != null ) //{ // var member = memberItem.Member; // var type = member.Creator as Metadata.TypeInfo; // if( type != null ) // memberFullSignature = string.Format( "{0}|{1}", type.Name, member.Signature ); //} //_File var fileItem = item as ContentBrowserItem_File; if (fileItem != null && !fileItem.IsDirectory) { //!!!!не делать предпросмотр для сцены, т.к. долго. что еще? var ext = Path.GetExtension(fileItem.FullPath); if (ResourceManager.GetTypeByFileExtension(ext) != null) { var res = ResourceManager.GetByName(VirtualPathUtility.GetVirtualPathByReal(fileItem.FullPath)); var type = res?.PrimaryInstance?.ResultComponent?.GetProvidedType(); if (type != null) { objectType = type; referenceToObject = res.Name; } } } //_Component var componentItem = item as ContentBrowserItem_Component; if (componentItem != null) { var component = componentItem.Component; if (component.ParentRoot.HierarchyController != null && component.ParentRoot.HierarchyController.CreatedByResource.InstanceType == Resource.InstanceType.Resource) { objectType = component.GetProvidedType(); if (objectType != null) { referenceToObject = objectType.Name; } } //else //{ //if( Scene.ParentRoot == component.ParentRoot ) //{ //!!!! ////add node with component //createNodeWithComponent = component; //} //} } return(objectType, referenceToObject); }
/// <summary> /// Writes the definition of types in the XmlWriter /// </summary> /// <param name="xmlWriter">xmlWriter in which metadata needs to be written</param> /// <param name="types">resourceTypes whose metadata needs to be written</param> /// <param name="associationsInThisNamespace">list of associations in the current namespace.</param> /// <param name="metadataManager">metadata manager instance</param> private static void WriteTypes( XmlWriter xmlWriter, IEnumerable<ResourceType> types, Dictionary<string, ResourceAssociationType> associationsInThisNamespace, MetadataManager metadataManager) { foreach (ResourceType type in types) { if (ResourceTypeKind.EntityType == type.ResourceTypeKind) { WriteEntityType(xmlWriter, type, associationsInThisNamespace, metadataManager); } else { Debug.Assert(ResourceTypeKind.ComplexType == type.ResourceTypeKind, "this must be a complex type"); WriteComplexType(xmlWriter, type, metadataManager); } } }
public override void Register() { //Add Constraint { var a = new EditorAction(); //!!!!"New Constraint"? a.Name = "Add Constraint"; //a.imageSmall = Properties.Resources.Save_16; //a.imageBig = Properties.Resources.Save_32; //!!!!выключить где-то? a.QatSupport = true; //a.qatAddByDefault = true; a.ContextMenuSupport = EditorContextMenu.MenuTypeEnum.Document; Component_PhysicalBody GetBody(object obj) { if (obj is Component_PhysicalBody body) { return(body); } var c = obj as Component; if (c != null) { var body2 = c.GetComponent <Component_PhysicalBody>(); if (body2 != null) { return(body2); } } return(null); } a.GetState += delegate(EditorAction.GetStateContext context) { if (context.ObjectsInFocus.DocumentWindow != null) { object[] selectedObjects = context.ObjectsInFocus.Objects; if (selectedObjects.Length == 2) { var bodyA = GetBody(selectedObjects[0]); var bodyB = GetBody(selectedObjects[1]); if (bodyA != null && bodyB != null) { context.Enabled = true; } //if( selectedObjects[ 0 ] is Component_PhysicalBody && selectedObjects[ 1 ] is Component_PhysicalBody ) // context.Enabled = true; } } }; a.Click += delegate(EditorAction.ClickContext context) { object[] selectedObjects = context.ObjectsInFocus.Objects; if (selectedObjects.Length == 2) { var bodyA = GetBody(selectedObjects[0]); var bodyB = GetBody(selectedObjects[1]); //var bodyA = (Component_PhysicalBody)context.ObjectsInFocus.Objects[ 0 ]; //var bodyB = (Component_PhysicalBody)context.ObjectsInFocus.Objects[ 1 ]; var parent = ComponentUtility.FindNearestCommonParent(new Component[] { bodyA, bodyB }); if (parent != null) { var data = new NewObjectWindow.CreationDataClass(); data.initDocumentWindow = context.ObjectsInFocus.DocumentWindow; data.initParentObjects = new List <object>(); data.initParentObjects.Add(parent); data.initLockType = MetadataManager.GetTypeOfNetType(typeof(Component_Constraint)); //data.initDemandedTypeDisableChange = true; data.additionActionBeforeEnabled = delegate(NewObjectWindow window) { var constraint = (Component_Constraint)data.createdComponentsOnTopLevel[0]; constraint.BodyA = ReferenceUtility.MakeReference <Component_PhysicalBody>( null, ReferenceUtility.CalculateThisReference(constraint, bodyA)); constraint.BodyB = ReferenceUtility.MakeReference <Component_PhysicalBody>( null, ReferenceUtility.CalculateThisReference(constraint, bodyB)); var pos = (bodyA.Transform.Value.Position + bodyB.Transform.Value.Position) * 0.5; constraint.Transform = new Transform(pos, Quaternion.Identity); }; EditorAPI.OpenNewObjectWindow(data); } } }; EditorActions.Register(a); } }
/// <summary> /// Write the metadata for the complexType in the xmlWriter /// </summary> /// <param name="xmlWriter">xmlWriter in which metadata needs to be written</param> /// <param name="complexType">complexType whose metadata needs to be written</param> /// <param name="metadataManager">metadata manager instance</param> private static void WriteComplexType(XmlWriter xmlWriter, ResourceType complexType, MetadataManager metadataManager) { Debug.Assert(xmlWriter != null, "XmlWriter cannot be null"); Debug.Assert(complexType.ResourceTypeKind == ResourceTypeKind.ComplexType, "Type must be complexType"); Debug.Assert(complexType.IsOpenType == false, "Complex types cannot be open."); xmlWriter.WriteStartElement(XmlConstants.ComplexType); xmlWriter.WriteAttributeString(XmlConstants.Name, XmlConvert.EncodeName(complexType.Name)); WriteProperties(xmlWriter, complexType, null, metadataManager); xmlWriter.WriteEndElement(); }
private void Import() { if (txtImportFilePath.Text.Length == 0) { return; } if (!File.Exists(txtImportFilePath.Text)) { MessageBox.Show(this, $"The file {txtImportFilePath.Text} does not exist!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } btnCancel.Visible = true; lblProgress.Text = "Deserializing file..."; SendMessageToStatusBar?.Invoke(this, new StatusBarMessageEventArgs("Deserializing file...")); EntityCollection ec; using (var reader = new StreamReader(txtImportFilePath.Text)) { var serializer = new DataContractSerializer(typeof(EntityCollection), new List <Type> { typeof(Entity) }); ec = (EntityCollection)serializer.ReadObject(reader.BaseStream); } // References to websites var webSitesRefId = ec.Entities.SelectMany(e => e.Attributes) .Where(a => a.Value is EntityReference reference && reference.LogicalName == "adx_website") .Select(a => ((EntityReference)a.Value).Id) .Distinct() .ToList(); // Websites included in records to process var webSitesIds = ec.Entities.Where(e => e.LogicalName == "adx_website") .Select(e => e.Id) .ToList(); // If some references are not found in websites included in records // to process, ask the user to map to the appropriate website if (!webSitesRefId.All(id => webSitesIds.Contains(id))) { var targetWebSites = Service.RetrieveMultiple(new QueryExpression("adx_website") { ColumnSet = new ColumnSet("adx_name") }).Entities; if (!webSitesRefId.All(id => targetWebSites.Select(w => w.Id).Contains(id))) { var wsmDialog = new WebSiteMapper(ec, targetWebSites.Select(t => new Website(t)).ToList()); if (wsmDialog.ShowDialog() == DialogResult.Cancel) { return; } } } if (ec.Entities.Any(e => e.LogicalName == "adx_webpage")) { var message = "You are trying to import web pages. It is recommended to deactivate plugins steps related to this entity to ensure successful import. Do you want to deactivate these plugins ? \n\nNote: The plugins will be reactivated at the end of the import process"; iSettings.DeactivateWebPagePlugins = MessageBox.Show(this, message, @"Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes; } if (ec.Entities.Any(e => e.LogicalName == "annotation" && (e.GetAttributeValue <string>("filename")?.ToLower().EndsWith(".js") ?? false)) && nManager.HasJsRestriction) { var message = "You are trying to import JavaScript note. It is recommended to remove JavaScript file type restriction to ensure successful import. Do you want to remove this restriction ? \n\nNote: The restriction will be added back at the end of the import process"; iSettings.RemoveJavaScriptFileRestriction = MessageBox.Show(this, message, @"Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes; } btnImport.Enabled = false; pnlImportMain.Visible = true; pbImport.IsOnError = false; lvProgress.Items.Clear(); var worker = new BackgroundWorker { WorkerReportsProgress = true, WorkerSupportsCancellation = true }; worker.DoWork += (s, evt) => { importWorker = (BackgroundWorker)s; if (emds.Count == 0) { importWorker.ReportProgress(0, "Retrieving metadata..."); emds = MetadataManager.GetEntitiesList(Service); } if (iSettings.DeactivateWebPagePlugins) { importWorker.ReportProgress(0, "Deactivating Webpage plugins steps..."); logger.LogInfo("Deactivating Webpage plugins steps"); pManager = new PluginManager(Service); pManager.DeactivateWebpagePlugins(); logger.LogInfo("Webpage plugins steps deactivated"); } if (iSettings.RemoveJavaScriptFileRestriction && nManager.HasJsRestriction) { logger.LogInfo("Removing JavaScript file restriction"); importWorker.ReportProgress(0, "Removing JavaScript file restriction..."); nManager.RemoveRestriction(); // Wait 2 seconds to be sure the settings is updated Thread.Sleep(2000); logger.LogInfo("JavaScript file restriction removed"); } importWorker.ReportProgress(0, "Processing records..."); var rm = new RecordManager(Service); evt.Cancel = rm.ProcessRecords((EntityCollection)evt.Argument, emds, ConnectionDetail.OrganizationMajorVersion, importWorker); if (iSettings.DeactivateWebPagePlugins) { importWorker.ReportProgress(0, "Reactivating Webpage plugins steps..."); logger.LogInfo("Reactivating Webpage plugins steps"); pManager.ActivateWebpagePlugins(); logger.LogInfo("Webpage plugins steps activated"); } if (iSettings.RemoveJavaScriptFileRestriction && nManager.HasJsRestriction) { logger.LogInfo("Adding back JavaScript file restriction"); importWorker.ReportProgress(0, "Adding back JavaScript file restriction..."); nManager.AddRestriction(); logger.LogInfo("JavaScript file restriction added back"); } }; worker.RunWorkerCompleted += (s, evt) => { SendMessageToStatusBar?.Invoke(this, new StatusBarMessageEventArgs(string.Empty)); lblProgress.Text = "Records imported!"; llOpenLogFile.Visible = true; btnImportClose.Enabled = true; btnImport.Enabled = true; btnCancel.Visible = false; if (evt.Cancelled) { lblProgress.Text = "Import was canceled!"; return; } if (evt.Error != null) { MessageBox.Show(this, $"An error occured: {evt.Error.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (pbImport.IsOnError) { MessageBox.Show(this, "Import complete with errors\n\nPlease review the logs", "Information", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { MessageBox.Show(this, "Import complete", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } }; worker.ProgressChanged += (s, evt) => { if (evt.UserState is string) { lblProgress.Text = evt.UserState.ToString(); SendMessageToStatusBar?.Invoke(this, new StatusBarMessageEventArgs(evt.UserState.ToString())); } else { var progress = evt.UserState as ImportProgress; if (progress != null) { foreach (var ep in progress.Entities) { var item = lvProgress.Items.Cast <ListViewItem>().FirstOrDefault(i => i.Tag.ToString() == ep.LogicalName); if (item == null) { item = new ListViewItem($"{ep.Entity} ({ep.Count})") { Tag = ep.LogicalName }; item.SubItems.Add(ep.SuccessFirstPhase.ToString()); item.SubItems.Add(ep.ErrorFirstPhase.ToString()); item.SubItems.AddRange(new[] { "", "", "", "" }); if (ep.SuccessSecondPhase.HasValue || ep.ErrorSecondPhase.HasValue) { item.SubItems[3].Text = (ep.SuccessSecondPhase ?? 0).ToString(); item.SubItems[4].Text = (ep.ErrorSecondPhase ?? 0).ToString(); } if (ep.SuccessSetStatePhase.HasValue || ep.ErrorSetState.HasValue) { item.SubItems[5].Text = (ep.SuccessSetStatePhase ?? 0).ToString(); item.SubItems[6].Text = (ep.ErrorSetState ?? 0).ToString(); } lvProgress.Items.Add(item); } else { item.SubItems[1].Text = ep.SuccessFirstPhase.ToString(); item.SubItems[2].Text = ep.ErrorFirstPhase.ToString(); if (ep.SuccessSecondPhase.HasValue || ep.ErrorSecondPhase.HasValue) { item.SubItems[3].Text = (ep.SuccessSecondPhase ?? 0).ToString(); item.SubItems[4].Text = (ep.ErrorSecondPhase ?? 0).ToString(); } if (ep.SuccessSetStatePhase.HasValue || ep.ErrorSetState.HasValue) { item.SubItems[5].Text = (ep.SuccessSetStatePhase ?? 0).ToString(); item.SubItems[6].Text = (ep.ErrorSetState ?? 0).ToString(); } } if (ep.ErrorFirstPhase > 0 || ep.ErrorSecondPhase > 0 || ep.ErrorSetState > 0) { pbImport.IsOnError = true; } pbImport.Value = progress.Entities.Sum(ent => ent.Processed) * 100 / progress.Count; } } } }; worker.RunWorkerAsync(ec); }
private void Connect() { Site SP3DSite = null; SP3DSite = MiddleServiceProvider.SiteMgr.ConnectSite(); if (SP3DSite != null) { if( SP3DSite.Plants.Count > 0 ) MiddleServiceProvider.SiteMgr.ActiveSite.OpenPlant((Plant)SP3DSite.Plants[0]); } Catalog SP3DCatalog = null; SP3DCatalog = MiddleServiceProvider.SiteMgr.ActiveSite.ActivePlant.PlantCatalog; metadataManager = SP3DCatalog.MetadataMgr; //string displayName, name, showupMsg = "", category, iid, interfaceInfoNamespace, propertyName, propertyDescriber; //string propertyInterfaceInformationStr, unitTypeString; //Type type; //ReadOnlyDictionary<InterfaceInformation> interfactInfo, commonInterfaceInfo; //ReadOnlyDictionary<PropertyInformation> properties; //ReadOnlyDictionary<BOCInformation> oSystemsByName = metadataManager.BOCs; //bool complex, comAccess, displayedOnPage, isvalueRequired, metaDataAccess, metadataReadOnly, SqlAccess; //string propertyDisplayName, proPropertyName, uomType; //CodelistInformation codeListInfo; //InterfaceInformation propertyInterfaceInformation; //SP3DPropType sp3dProType; //UnitType unitType; //string showupPropertyMessage = ""; //string showupProMsg = ""; //foreach (string key in oSystemsByName.Keys) //{ // BOCInformation bocInfo = null; // oSystemsByName.TryGetValue(key, out bocInfo); // displayName = bocInfo.DisplayName; // name = bocInfo.Name; // type = bocInfo.GetType(); // interfactInfo = bocInfo.DefiningInterfaces; // foreach (string infoKey in interfactInfo.Keys) // { // InterfaceInformation itemInterfaceInfo; // interfactInfo.TryGetValue(infoKey, out itemInterfaceInfo); // interfaceInfoNamespace = itemInterfaceInfo.Namespace; // category = itemInterfaceInfo.Category; // iid = itemInterfaceInfo.IID; // properties = itemInterfaceInfo.Properties; // foreach (string propertyKey in properties.Keys) // { // PropertyInformation propertyInfo; // properties.TryGetValue(propertyKey, out propertyInfo); // complex = propertyInfo.Complex; // codeListInfo = propertyInfo.CodeListInfo; // comAccess = propertyInfo.COMAccess; // displayedOnPage = propertyInfo.DisplayedOnPropertyPage; // propertyDisplayName = propertyInfo.DisplayName; // propertyInterfaceInformation = propertyInfo.InterfaceInfo; // propertyInterfaceInformationStr = propertyInterfaceInformation.ToString(); // isvalueRequired = propertyInfo.IsValueRequired; // metaDataAccess = propertyInfo.MetadataAccess; // metadataReadOnly = propertyInfo.MetadataReadOnly; // proPropertyName = propertyInfo.Name; // sp3dProType = propertyInfo.PropertyType; // SqlAccess = propertyInfo.SQLAccess; // unitType = propertyInfo.UOMType; // unitTypeString = unitType.ToString(); // showupPropertyMessage = showupPropertyMessage + "\n propertyInfo.key: " + propertyKey + "\n" // + "CodeListInfo.DisplayName: " + codeListInfo.DisplayName + "\n" // + "comAccess: " + comAccess + "\n" // + "propertyDisplayName: " + propertyDisplayName + "\n" // + "propertyInterfaceInformation: " + propertyInterfaceInformation.Name + "\n" // + "proPropertyName: " + proPropertyName; // } // } // commonInterfaceInfo = bocInfo.CommonInterfaces; // foreach (string comInfoKey in commonInterfaceInfo.Keys) // { // InterfaceInformation comItemInterfaceInfo; // commonInterfaceInfo.TryGetValue(comInfoKey, out comItemInterfaceInfo); // interfaceInfoNamespace = comItemInterfaceInfo.Namespace; // category = comItemInterfaceInfo.Category; // iid = comItemInterfaceInfo.IID; // properties = comItemInterfaceInfo.Properties; // foreach (string propertyKey in properties.Keys) // { // PropertyInformation propertyInfo; // properties.TryGetValue(propertyKey, out propertyInfo); // complex = propertyInfo.Complex; // codeListInfo = propertyInfo.CodeListInfo; // comAccess = propertyInfo.COMAccess; // displayedOnPage = propertyInfo.DisplayedOnPropertyPage; // propertyDisplayName = propertyInfo.DisplayName; // propertyInterfaceInformation = propertyInfo.InterfaceInfo; // propertyInterfaceInformationStr = propertyInterfaceInformation.ToString(); // isvalueRequired = propertyInfo.IsValueRequired; // metaDataAccess = propertyInfo.MetadataAccess; // metadataReadOnly = propertyInfo.MetadataReadOnly; // proPropertyName = propertyInfo.Name; // sp3dProType = propertyInfo.PropertyType; // SqlAccess = propertyInfo.SQLAccess; // unitType = propertyInfo.UOMType; // unitTypeString = unitType.ToString(); // showupProMsg = showupProMsg + "\n propertyInfo.key: " + propertyKey + "\n" // + "CodeListInfo.DisplayName: " + codeListInfo.DisplayName + "\n" // + "comAccess: " + comAccess + "\n" // + "propertyDisplayName: " + propertyDisplayName + "\n" // + "propertyInterfaceInformation: " + propertyInterfaceInformation.Name + "\n" // + "proPropertyName: " + proPropertyName; // } // } // showupMsg = showupMsg + "\n bocInfo.key: " + key + "\n" // + "bocInfo.DisplayName: " + displayName + "\n" // + "bocInfo.Name: " + name + "\n" // + "bocInfo.type: " + type.FullName + "\n" // // + "bocInfo.DefiningInterfaces: " + showupPropertyMessage + "\n" // + "bocInfo.commonInterfaceInfo: " + showupProMsg + "\n"; //} //File.WriteAllText(@"C:\temp\sp3d.txt", showupMsg); //System.Windows.Forms.MessageBox.Show(showupMsg); //oSystemsByName }
public VoiceAssistantWorker(SocketGuildUser user, VoiceChannelWorker voiceChannelWorker, MetadataManager metadataManager, WitAiClient witAiClient) { _voiceChannelWorker = voiceChannelWorker; _metadataManager = metadataManager; _witAiClient = witAiClient; _user = user; }