Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 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());
 }