public override object DoConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { Logger.Trace(string.Format("{0} args: {1}", GetTraceInfo(), string.Join(", ", value, targetType, parameter, culture))); using (var memStream = new System.IO.MemoryStream()) { var writer = new System.IO.StreamWriter(memStream); writer.Write("class myClass{arr[]={"); writer.Write(value as string); writer.Write("};};"); writer.Flush(); memStream.Seek(0, System.IO.SeekOrigin.Begin); SQF.ClassParser.Generated.Parser p = new SQF.ClassParser.Generated.Parser(new SQF.ClassParser.Generated.Scanner(memStream)); var tmpField = p.Parse().GetKey("myClass/arr", ConfigField.KeyMode.ThrowOnNotFound); if (tmpField.Array.Length != (int)parameter) { return(null); } return(tmpField.Value); } }
public void Initialize(SQF.ClassParser.ConfigField MainConfigField) { this.Image = Parent.ThisPath + Image.Replace('/', '\\'); this.__ClassPath = Parent.ThisPath + __ClassPath.Replace('/', '\\'); this.__XamlPath = Parent.ThisPath + __XamlPath.Replace('/', '\\'); using (var stream = System.IO.File.OpenRead(this.__ClassPath)) { var parser = new SQF.ClassParser.Generated.Parser(new SQF.ClassParser.Generated.Scanner(stream)); parser.Patch(MainConfigField, false); this.ConfigKey = MainConfigField[MainConfigField.Count - 1].Name; } foreach (var it in this.__PropertiesPath) { var path = System.IO.Path.Combine(Parent.ThisPath, it.TrimStart(new[] { '\\', '/' })); var groups = Group.Load(path); foreach (var groupA in this.Properties) { foreach (var groupB in groups) { if (groupA.Name.ToUpper() == groupB.Name.ToUpper()) { groups.Remove(groupB); groupA.Items.AddRange(groupB.Items); break; } } } this.Properties.AddRange(groups); } foreach (var it in this.__EventsPath) { var path = System.IO.Path.Combine(Parent.ThisPath, it.TrimStart(new[] { '\\', '/' })); this.Events.AddRange(Event.Load(path)); } }
public override object DoConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { Logger.Trace(string.Format("{0} args: {1}", GetTraceInfo(), string.Join(", ", value, targetType, parameter, culture))); using (var memStream = new System.IO.MemoryStream()) { var writer = new System.IO.StreamWriter(memStream); writer.Write("class myClass{arr[]={"); writer.Write(value as string); writer.Write("};};"); writer.Flush(); memStream.Seek(0, System.IO.SeekOrigin.Begin); SQF.ClassParser.Generated.Parser p = new SQF.ClassParser.Generated.Parser(new SQF.ClassParser.Generated.Scanner(memStream)); var tmpField = p.Parse().GetKey("myClass/arr", ConfigField.KeyMode.ThrowOnNotFound); if (tmpField.Array.Length != (int)parameter) return null; return tmpField.Value; } }
public void Initialize(SQF.ClassParser.ConfigField MainConfigField) { this.Image = Parent.ThisPath + Image.Replace('/', '\\'); this.__ClassPath = Parent.ThisPath + __ClassPath.Replace('/', '\\'); this.__XamlPath = Parent.ThisPath + __XamlPath.Replace('/', '\\'); using (var stream = System.IO.File.OpenRead(this.__ClassPath)) { var parser = new SQF.ClassParser.Generated.Parser(new SQF.ClassParser.Generated.Scanner(stream)); parser.Patch(MainConfigField, false); this.ConfigKey = MainConfigField[MainConfigField.Count - 1].Name; } foreach (var it in this.__PropertiesPath) { var path = System.IO.Path.Combine(Parent.ThisPath, it.TrimStart(new[] { '\\', '/' })); var groups = Group.Load(path); foreach(var groupA in this.Properties) { foreach(var groupB in groups) { if(groupA.Name.ToUpper() == groupB.Name.ToUpper()) { groups.Remove(groupB); groupA.Items.AddRange(groupB.Items); break; } } } this.Properties.AddRange(groups); } foreach (var it in this.__EventsPath) { var path = System.IO.Path.Combine(Parent.ThisPath, it.TrimStart(new[] { '\\', '/' })); this.Events.AddRange(Event.Load(path)); } }
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 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 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 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()); }
public void LoadSnap() { Logger.Trace(string.Format("{0} args: -/-", this.GetTraceInfo())); this.Config = AddInManager.Instance.MainFile.AddKey(string.Format("EditingSnap_{0}_WorkingConfig", Counter++)); this.Config.ToClass(); using (var stream = this.Textbox.Text.AsMemoryStream()) { SQF.ClassParser.Generated.Parser p = new SQF.ClassParser.Generated.Parser(new SQF.ClassParser.Generated.Scanner(stream)); p.Patch(this.Config, true); } this.RegenerateDisplay(); }
private void Textbox_LostFocus(object sender, RoutedEventArgs e) { Logger.Trace(string.Format("{0} args: {1}", this.GetTraceInfo(), string.Join(", ", sender, e))); if (!this.AllowConfigPatching) return; this.AllowConfigPatching = false; using (var stream = this.Textbox.Text.AsMemoryStream()) { SQF.ClassParser.Generated.Parser p = new SQF.ClassParser.Generated.Parser(new SQF.ClassParser.Generated.Scanner(stream)); p.Patch(this.Config, true); } this.RegenerateDisplay(); }