private void DisplayCanvas_Drop(object sender, DragEventArgs e) { Logger.Trace(string.Format("{0} args: {1}", this.GetTraceInfo(), string.Join(", ", sender, e))); Logger.Trace(string.Format("{0} args: {1}", this.GetTraceInfo(), string.Join(", ", sender, e))); if (!e.Data.GetDataPresent("UiElementsListBoxData")) return; var dragDropData = (e.Data.GetData("UiElementsListBoxData") as Code.UI.DragDrop.UiElementsListBoxData); var controlsField = this.LastFileConfig.GetKey("controls", ConfigField.KeyMode.CreateNew); string name = string.Concat("My" + dragDropData.ElementData.ConfigKey); int count = 1; while (controlsField.Contains(name)) { count++; name = string.Concat("My" + dragDropData.ElementData.ConfigKey, count); } var field = controlsField.AddKey(name, dragDropData.ElementData.ConfigKey); var mousePos = e.GetPosition(this.DisplayCanvas); field.SetKey("x", this.ToSqfString(FieldTypeEnum.XField, mousePos.X)); field.SetKey("y", this.ToSqfString(FieldTypeEnum.YField, mousePos.Y)); var widthField = field.GetKey("w", ConfigField.KeyMode.CheckParentsNull); if (widthField != null) { double d = widthField.IsNumber ? widthField.Number : this.FromSqfString(FieldTypeEnum.HField, widthField.String); field.SetKey("w", this.ToSqfString(FieldTypeEnum.WField, d)); } var heightField = field.GetKey("h", ConfigField.KeyMode.CheckParentsNull); if (heightField != null) { double d = heightField.IsNumber ? heightField.Number : this.FromSqfString(FieldTypeEnum.HField, heightField.String); field.SetKey("h", this.ToSqfString(FieldTypeEnum.HField, d)); } using (var stream = this.Textbox.Text.AsMemoryStream()) { SQF.ClassParser.Generated.Parser p = new SQF.ClassParser.Generated.Parser(new SQF.ClassParser.Generated.Scanner(stream)); var searchKey = controlsField.Key; searchKey = searchKey.Remove(0, searchKey.IndexOf(this.LastFileConfig.Name) - 1); var index = p.GetRange(searchKey); this.Textbox.Text = this.Textbox.Text.Insert(index.ValueEnd, string.Concat("\r\n", field.ToPrintString(2))); } this.RegenerateDisplay(); this.ThisScrollViewer.Focus(); }
public void RenameConfigKey(string keyOld, string newName) { Logger.Trace(string.Format("{0} args: {1}", this.GetTraceInfo(), string.Join(", ", keyOld, newName))); using (var stream = this.Textbox.Text.AsMemoryStream()) { SQF.ClassParser.Generated.Parser p = new SQF.ClassParser.Generated.Parser(new SQF.ClassParser.Generated.Scanner(stream)); keyOld = keyOld.Remove(0, keyOld.IndexOf(this.LastFileConfig.Name) - 1); var index = p.GetRange(keyOld); if (index == null) { throw new ArgumentException(); } else { this.Textbox.Text = this.Textbox.Text.Remove(index.NameStart, index.NameEnd - index.NameStart).Insert(index.NameStart, newName); } } this.AllowConfigPatching = false; }
public void UpdateConfigKey(string key) { //Logger.Trace(string.Format("{0} args: {1}", this.GetTraceInfo(), string.Join(", ", key))); using (var stream = this.Textbox.Text.AsMemoryStream()) { SQF.ClassParser.Generated.Parser p = new SQF.ClassParser.Generated.Parser(new SQF.ClassParser.Generated.Scanner(stream)); key = key.Remove(0, key.IndexOf(this.LastFileConfig.Name) - 1); var index = p.GetRange(key); if (index == null) { stream.Seek(0, System.IO.SeekOrigin.Begin); p = new SQF.ClassParser.Generated.Parser(new SQF.ClassParser.Generated.Scanner(stream)); index = p.GetRange(key.Remove(key.LastIndexOf('/'))); var field = this.Config.GetKey(key, ConfigField.KeyMode.NullOnNotFound); if (field == null) return; this.Textbox.Text = this.Textbox.Text.Insert(index.ValueStart, string.Concat(field.ToPrintString(), "\r\n", new string('\t', key.Count((c) => c == '/') - 1))); } else { var field = this.Config.GetKey(key, ConfigField.KeyMode.NullOnNotFound); if (field == null) { throw new NotImplementedException(); this.Textbox.Text = this.Textbox.Text.Remove(index.ValueStart, index.ValueEnd - index.ValueStart); } else { this.Textbox.Text = this.Textbox.Text.Remove(index.ValueStart, index.ValueEnd - index.ValueStart).Insert(index.ValueStart, field.ToValueString()); } } } this.AllowConfigPatching = false; }
public void RemoveConfigKey(string key) { Logger.Trace(string.Format("{0} args: {1}", this.GetTraceInfo(), string.Join(", ", key))); using (var stream = this.Textbox.Text.AsMemoryStream()) { SQF.ClassParser.Generated.Parser p = new SQF.ClassParser.Generated.Parser(new SQF.ClassParser.Generated.Scanner(stream)); key = key.Remove(0, key.IndexOf(this.LastFileConfig.Name) - 1); var index = p.GetRange(key); if (index == null) { throw new ArgumentException(); } else { this.Textbox.Text = this.Textbox.Text.Remove(index.WholeStart, index.WholeEnd - index.WholeStart); } this.SelectElements(false, false, new FrameworkElement[0]); var field = this.Config.GetKey(key, ConfigField.KeyMode.ThrowOnNotFound); field.Parent.RemoveKey(field.Name); } this.AllowConfigPatching = false; if (this.OnUiElementsChanged != null) this.OnUiElementsChanged(this, new EventArgs()); }