void UpdateAttr(LayerField f) { updateAttr[(int)f] = true; if (!IsVirtual) { lib.SetChanged(); } }
public void UpdateLayerFieldTest() { var oldName = "fieldName"; var url = String.Join("/", new string[] { urlPrefix1, layer1, "fields", oldName }); var handler = new MockHttpHandler(url, "POST", (req, res, param) => { var result = new RestResult(); result.Success = true; return(JsonConvert.SerializeObject(result)); }); mockServer.AddRequestHandler(handler); try { var db = new MapDB(db1); var layer = new FeatureLayer(layer1, db); var field = new LayerField() { FieldName = "newFieldName", DataType = "INT", FieldSize = 64 }; layer.UpdateLayerField(oldName, field); } catch (Exception ex) { Assert.Fail(ex.Message); } }
public override void Open() { if (IsOpened) throw new Exception(string.Format("Cannot open before to close the resource {0}", Path)); if (string.IsNullOrEmpty(Path)) throw new Exception("Cannot open a null or empty path"); #if USE_SFDR reader = Shapefile.CreateDataReader(Path, new GeometryFactory()); var s1 = reader.ShapeHeader; var h = reader.DbaseHeader; #else var shpReader = new ShapefileReader(Path); shpProvider = shpReader.GetEnumerator(); var dbfReader = new DbaseFileReader(IoManager.File.ChangeExtension(Path, ".dbf")); var h = dbfReader.GetHeader(); dbfProvider = dbfReader.GetEnumerator(); #endif foreach (var f in h.Fields) { var lf = new LayerField(); lf.Name = f.Name; switch (f.DbaseType) { case 'L': // logical data type, one character (T,t,F,f,Y,y,N,n) lf.FieldType = GisFieldType.GisFieldTypeBoolean; break; case 'C': // char or string lf.FieldType = GisFieldType.GisFieldTypeString; break; case 'D': // date lf.FieldType = GisFieldType.GisFieldTypeDate; break; case 'N': // numeric if (f.DecimalCount > 0) lf.FieldType = GisFieldType.GisFieldTypeFloat; else lf.FieldType = GisFieldType.GisFieldTypeNumber; break; case 'F': // double lf.FieldType = GisFieldType.GisFieldTypeNumber; break; default: throw new NotSupportedException("Do not know how to parse Field type " + f.DbaseType); } Fields.Add(lf); } }
/// <summary> /// 增加图层表字段 /// </summary> /// <param name="field">图层表字段</param> public void AddLayerField(LayerField field) { var request = new RestRequest(); request.Resource = "layers/{id}/fields"; request.Method = Method.POST; request.AddUrlSegment("id", this.id); request.AddQueryParameter("op", "create"); request.AddParameter("data", JsonConvert.SerializeObject(field)); this.Execute(request); }
/// <summary> /// 更新图层表字段 /// </summary> /// <param name="fieldName">字段名</param> /// <param name="field">新的图层表字段</param> public void UpdateLayerField(string fieldName, LayerField field) { var request = new RestRequest(); request.Resource = "layers/{id}/fields/{name}"; request.Method = Method.POST; request.AddUrlSegment("id", this.id); request.AddUrlSegment("name", fieldName); request.AddQueryParameter("op", "update"); request.AddParameter("data", JsonConvert.SerializeObject(field)); this.Execute(request); }
public bool CreateFeature(GeometryFeature geomFeature, params string[] fields) { Geometry geometria = geomFeature.Geometry; Feature feature = new Feature(_layer.GetLayerDefn()); for (int i = 0; i < _catalog.Schema.Fields.Count; i++) { LayerField field = _catalog.Schema.Fields[i]; string value = fields[i]; switch (field.Type) { case FieldTypeName.Date: DateTime date = DateTime.Parse(value); int rok = date.Year, miesiac = date.Month, dzien = date.Day; feature.SetField(i, rok, miesiac, dzien, 0, 0, 0, 0); break; case FieldTypeName.Float: feature.SetField(i, double.Parse(value)); break; case FieldTypeName.String: feature.SetField(i, value); break; case FieldTypeName.Real: feature.SetField(i, double.Parse(value)); break; case FieldTypeName.Integer: feature.SetField(i, int.Parse(value)); break; } } if (geometria != null) { if (feature.SetGeometry(geometria) != 0) { return(false); } } return(_layer.CreateFeature(feature) == 0); }
internal override void Apply(VisualElement container) { /// <sample> // Get a reference to the field from UXML and assign it its value. var uxmlField = container.Q <LayerField>("the-uxml-field"); uxmlField.value = 1; // Create a new field, disable it, and give it a style class. var csharpField = new LayerField("C# Field"); csharpField.SetEnabled(false); csharpField.AddToClassList("some-styled-field"); csharpField.value = uxmlField.value; container.Add(csharpField); // Mirror value of uxml field into the C# field. uxmlField.RegisterCallback <ChangeEvent <int> >((evt) => { csharpField.value = evt.newValue; }); /// </sample> }
BuilderStyleRow CreateAttributeRow(UxmlAttributeDescription attribute) { var attributeType = attribute.GetType(); // Generate field label. var fieldLabel = BuilderNameUtilities.ConvertDashToHuman(attribute.name); BindableElement fieldElement; if (attribute is UxmlStringAttributeDescription) { // Hard-coded if (attribute.name.Equals("value") && currentVisualElement is EnumField enumField) { var uiField = new EnumField("Value"); if (null != enumField.value) { uiField.Init(enumField.value, enumField.includeObsoleteValues); } else { uiField.SetValueWithoutNotify(null); } uiField.RegisterValueChangedCallback(evt => PostAttributeValueChange(uiField, uiField.value.ToString())); fieldElement = uiField; } else if (attribute.name.Equals("value") && currentVisualElement is TagField tagField) { var uiField = new TagField("Value"); uiField.RegisterValueChangedCallback(evt => PostAttributeValueChange(uiField, uiField.value.ToString())); fieldElement = uiField; } else { var uiField = new TextField(fieldLabel); if (attribute.name.Equals("name") || attribute.name.Equals("view-data-key")) { uiField.RegisterValueChangedCallback(e => { OnValidatedAttributeValueChange(e, BuilderNameUtilities.attributeRegex, BuilderConstants.AttributeValidationSpacialCharacters); }); } else if (attribute.name.Equals("binding-path")) { uiField.RegisterValueChangedCallback(e => { OnValidatedAttributeValueChange(e, BuilderNameUtilities.bindingPathAttributeRegex, BuilderConstants.BindingPathAttributeValidationSpacialCharacters); }); } else { uiField.RegisterValueChangedCallback(OnAttributeValueChange); } if (attribute.name.Equals("text") || attribute.name.Equals("label")) { uiField.multiline = true; uiField.AddToClassList(BuilderConstants.InspectorMultiLineTextFieldClassName); } fieldElement = uiField; } } else if (attribute is UxmlFloatAttributeDescription) { var uiField = new FloatField(fieldLabel); uiField.RegisterValueChangedCallback(OnAttributeValueChange); fieldElement = uiField; } else if (attribute is UxmlDoubleAttributeDescription) { var uiField = new DoubleField(fieldLabel); uiField.RegisterValueChangedCallback(OnAttributeValueChange); fieldElement = uiField; } else if (attribute is UxmlIntAttributeDescription) { if (attribute.name.Equals("value") && currentVisualElement is LayerField) { var uiField = new LayerField("Value"); uiField.RegisterValueChangedCallback(OnAttributeValueChange); fieldElement = uiField; } else if (attribute.name.Equals("value") && currentVisualElement is LayerMaskField) { var uiField = new LayerMaskField("Value"); uiField.RegisterValueChangedCallback(OnAttributeValueChange); fieldElement = uiField; } else { var uiField = new IntegerField(fieldLabel); uiField.RegisterValueChangedCallback(OnAttributeValueChange); fieldElement = uiField; } } else if (attribute is UxmlLongAttributeDescription) { var uiField = new LongField(fieldLabel); uiField.RegisterValueChangedCallback(OnAttributeValueChange); fieldElement = uiField; } else if (attribute is UxmlBoolAttributeDescription) { var uiField = new Toggle(fieldLabel); uiField.RegisterValueChangedCallback(OnAttributeValueChange); fieldElement = uiField; } else if (attribute is UxmlColorAttributeDescription) { var uiField = new ColorField(fieldLabel); uiField.RegisterValueChangedCallback(OnAttributeValueChange); fieldElement = uiField; } else if (attributeType.IsGenericType && !attributeType.GetGenericArguments()[0].IsEnum && attributeType.GetGenericArguments()[0] is Type) { var desiredType = attributeType.GetGenericArguments()[0]; var uiField = new TextField(fieldLabel) { isDelayed = true }; var completer = new FieldSearchCompleter <TypeInfo>(uiField); uiField.RegisterCallback <AttachToPanelEvent, FieldSearchCompleter <TypeInfo> >((evt, c) => { // When possible, the popup should have the same width as the input field, so that the auto-complete // characters will try to match said input field. c.popup.anchoredControl = ((VisualElement)evt.target).Q(className: "unity-text-field__input"); }, completer); completer.matcherCallback += (str, info) => info.value.IndexOf(str, StringComparison.OrdinalIgnoreCase) >= 0; completer.itemHeight = 36; completer.dataSourceCallback += () => { return(TypeCache.GetTypesDerivedFrom(desiredType) .Where(t => !t.IsGenericType) // Remove UIBuilder types from the list .Where(t => t.Assembly != GetType().Assembly) .Select(GetTypeInfo)); }; completer.getTextFromDataCallback += info => info.value; completer.makeItem = () => s_TypeNameItemPool.Get(); completer.destroyItem = e => { if (e is BuilderAttributeTypeName typeItem) { s_TypeNameItemPool.Release(typeItem); } }; completer.bindItem = (v, i) => { if (v is BuilderAttributeTypeName l) { l.SetType(completer.results[i].type, completer.textField.text); } }; uiField.RegisterValueChangedCallback(e => OnValidatedTypeAttributeChange(e, desiredType)); fieldElement = uiField; uiField.RegisterCallback <DetachFromPanelEvent, FieldSearchCompleter <TypeInfo> >((evt, c) => { c.popup.RemoveFromHierarchy(); }, completer); uiField.userData = completer; } else if (attributeType.IsGenericType && attributeType.GetGenericArguments()[0].IsEnum) { var propInfo = attributeType.GetProperty("defaultValue"); var defaultEnumValue = propInfo.GetValue(attribute, null) as Enum; if (defaultEnumValue.GetType().GetCustomAttribute <FlagsAttribute>() == null) { // Create and initialize the EnumField. var uiField = new EnumField(fieldLabel); uiField.Init(defaultEnumValue); uiField.RegisterValueChangedCallback(OnAttributeValueChange); fieldElement = uiField; } else { // Create and initialize the EnumField. var uiField = new EnumFlagsField(fieldLabel); uiField.Init(defaultEnumValue); uiField.RegisterValueChangedCallback(OnAttributeValueChange); fieldElement = uiField; } } else { var uiField = new TextField(fieldLabel); uiField.RegisterValueChangedCallback(OnAttributeValueChange); fieldElement = uiField; } // Create row. var styleRow = new BuilderStyleRow(); styleRow.Add(fieldElement); // Link the field. fieldElement.SetProperty(BuilderConstants.InspectorLinkedStyleRowVEPropertyName, styleRow); fieldElement.SetProperty(BuilderConstants.InspectorLinkedAttributeDescriptionVEPropertyName, attribute); // Set initial value. RefreshAttributeField(fieldElement); // Setup field binding path. fieldElement.bindingPath = attribute.name; fieldElement.tooltip = attribute.name; // Context menu. fieldElement.AddManipulator(new ContextualMenuManipulator(BuildAttributeFieldContextualMenu)); return(styleRow); }
public bool Validate(LayerSchema schema) { Evaluate(); string dot = ".", comma = ","; double doubleValue = 0.1; string doubleString = doubleValue.ToString(); if (!doubleString.Contains(dot)) { dot = ","; comma = "."; } string msg = "\nAtrybuty"; for (int i = 0; i < schema.Fields.Count; i++) { LayerField field = schema.Fields[i]; if (!_values.ContainsKey(field.Name)) { throw new Exception("Brak wymaganego pola: " + field.Name); } string value = _values[field.Name]; msg += "\n" + field.Name + " = " + value; switch (field.Type) { case FieldTypeName.Date: DateTime date; if (!DateTime.TryParse(value, out date)) { throw new Exception("Format daty niepoprawny: " + value + " dla pola " + field.Name + msg); } break; case FieldTypeName.Float: value = _values[field.Name] = value.Replace(comma, dot); double f; if (!double.TryParse(value, out f)) { throw new Exception("Format typu Float niepoprawny: " + value + " dla pola " + field.Name + msg); } break; case FieldTypeName.String: if (field.Width < value.Length) { throw new Exception("Długość tekstu " + value.Length + " za długa dla pola: " + field.Name + "[" + field.Width + "]"); } break; case FieldTypeName.Real: value = _values[field.Name] = value.Replace(comma, dot); double d; if (!double.TryParse(value, out d)) { throw new Exception("Format typu Real niepoprawny: " + value + " dla pola " + field.Name + msg); } break; case FieldTypeName.Integer: int n; if (!int.TryParse(value, out n)) { throw new Exception("Format typu Integer niepoprawny: " + value + " dla pola " + field.Name + msg); } break; } } return(true); }
void CreateUIElements() { var titleRow = new VisualElement() { style = { flexDirection = FlexDirection.Row, flexShrink = 0f, justifyContent = Justify.SpaceBetween } }; m_VisualElementContainer.Add(new Label("VisualElements Container")); var curveX = AnimationCurve.Linear(0, 0, 1, 0); var popupFieldValues = new List <SomeClass> { new SomeClass("First Class Value"), new SomeClass("Second Value"), new SomeClass("Another Value"), new SomeClass("Another Value with a very lonnnnnnnnnnnnnnnnnnnnnnnnng text to make sure this is really overflowing the popup field.") }; var maskFieldOptions = new List <string>(m_MaskFieldOptions); m_VisualElementContainer.Add(m_IntegerField = new IntegerField()); m_VisualElementContainer.Add(m_LongField = new LongField()); m_VisualElementContainer.Add(m_FloatField = new FloatField()); m_VisualElementContainer.Add(m_DoubleField = new DoubleField()); m_VisualElementContainer.Add(m_EnumField = new EnumField(EnumValues.Two)); m_VisualElementContainer.Add(m_TextField = new TextField()); m_VisualElementContainer.Add(m_PasswordField = new TextField() { isPasswordField = true, maskChar = '*' }); m_VisualElementContainer.Add(m_Vector3Field = new Vector3Field()); m_VisualElementContainer.Add(m_Vector3IntField = new Vector3IntField()); m_VisualElementContainer.Add(m_Vector2Field = new Vector2Field()); m_VisualElementContainer.Add(m_ColorField = new ColorField()); m_VisualElementContainer.Add(m_ObjectFieldCamera = new ObjectField() { objectType = typeof(Camera) }); m_VisualElementContainer.Add(m_ObjectFieldGameObject = new ObjectField() { objectType = typeof(GameObject) }); m_VisualElementContainer.Add(m_CurveField = new CurveField() { value = curveX }); m_VisualElementContainer.Add(m_CurveFieldMesh = new CurveField() { value = curveX, renderMode = CurveField.RenderMode.Mesh }); m_VisualElementContainer.Add(m_PopupField = new PopupField <SomeClass>(popupFieldValues, popupFieldValues[1])); m_VisualElementContainer.Add(m_RectField = new RectField()); m_VisualElementContainer.Add(m_BoundsField = new BoundsField()); m_VisualElementContainer.Add(m_ToggleField = new Toggle()); m_VisualElementContainer.Add(m_MaskField = new MaskField(maskFieldOptions, 6)); m_VisualElementContainer.Add(m_LayerField = new LayerField()); m_VisualElementContainer.Add(m_TagField = new TagField()); m_VisualElementContainer.Add(m_MinMaxSliderField = new MinMaxSlider(5, 10, 0, 125)); m_VisualElementContainer.Add(m_Slider = new Slider(2, 8)); m_VisualElementContainer.Add(m_SliderInt = new SliderInt(11, 23)); var buttonRow = new VisualElement() { style = { flexDirection = FlexDirection.Row, flexShrink = 0f, } }; buttonRow.Add(new Button() { text = k_ButtonLeftTitle, style = { flexGrow = 1 } }); buttonRow.Add(new Button() { text = k_ButtonRightTitle, style = { flexGrow = 1 } }); m_VisualElementContainer.Add(buttonRow); m_VisualElementContainer.Add(new Button() { text = k_ButtonTopTitle }); m_VisualElementContainer.Add(new Button() { text = k_ButtonBottomTitle }); m_VisualElementContainer.Add(m_ColorField1 = new ColorField()); m_VisualElementContainer.Add(m_LayerMaskField = new LayerMaskField(0)); m_VisualElementContainer.Add(m_MultiLineTextField = new TextField() { multiline = true }); m_VisualElementContainer.Add(m_SliderProgressBar = new SliderInt()); m_VisualElementContainer.Add(m_ProgressBar = new ProgressBar()); m_ProgressBar.title = nameof(ProgressBar); m_SliderProgressBar.lowValue = 0; m_SliderProgressBar.highValue = 100; m_SliderProgressBar.bindingPath = nameof(SliderProgressTestObject.exampleValue); m_ProgressBar.bindingPath = nameof(SliderProgressTestObject.exampleValue); m_SliderProgressBar.Bind(SliderProgressTestSO); m_ProgressBar.Bind(SliderProgressTestSO); // The progress bar by itself does not contain any margin in IMGUI... // In this example, we are artifically adding the textfield margin to it. (see below, in the IMGUI section, ProgressBar()) m_ProgressBar.style.marginBottom = 2f; m_VisualElementContainer.Add(m_GradientField = new GradientField()); RefreshUIElements(); }