예제 #1
0
        private List <UIElement> GenerateLayout(InstructionInstance instructionInstance)
        {
            var basicValues         = instructionInstance.BasicValues;
            var asmValues           = instructionInstance.AsmValues;
            List <UIElement> layout = new List <UIElement>();

            layout.Add(new Label {
                Content = instructionInstance.Instruction.Name
            });
            for (int k = 0; k < basicValues.Count; k++)
            {
                var v = basicValues[k];
                layout.Add(v.Match(str => (UIElement) new Label {
                    Content = str
                }, i => new Label {
                    Content = i.ToString()
                }));
            }
            for (int k = 0; k < asmValues.Count; k++)
            {
                var v = asmValues[k];
                layout.Add(v.Match(str => (UIElement) new Label {
                    Content = str
                }, i => (UIElement) new Label {
                    Content = i.ToString()
                }));
            }
            return(layout);
        }
예제 #2
0
        private Action <object, RoutedEventArgs> AddInstance(Rule rule, List <ComboBox> asmList, List <ComboBox> basicList)
        {
            //TODO: Fix possibly memory leak
            return
                ((object sender, RoutedEventArgs e) =>
            {
                List <IExprValue> asmValues = asmList.Select(ComboBox => ComboBox.SelectedItem as IExprValue).ToList();
                List <IExprValue> basicValues = basicList.Select(ComboBox => ComboBox.SelectedItem as IExprValue).ToList();
                var instruction = InstructionDB.instructionMap.FindMatch(rule, basicValues, asmValues);
                InstructionInstance instance = new InstructionInstance(instruction, asmValues, basicValues);

                IEnumerable source = listview.ItemsSource;

                var list = source.Cast <InstructionCellData>().ToList();
                list.Add(new InstructionCellData(instance, Editor.counter));
                list.Sort((x, y) => x.Id.CompareTo(y.Id));
                listview.ItemsSource = list;
                // App.Database.AddToSave(instance);
                Editor.currentState = State.Start;
                //ClearLayout(Editor.lastSelected.StackPanel);
                ClearLayout(MenuStack);
            });
        }
예제 #3
0
 public InstructionCellData(InstructionInstance Instance, int Id)
 {
     this.Instance = Instance;
     this.Id       = Id;
 }
예제 #4
0
 public void AddToSave(InstructionInstance i)
 {
     lista.Add(new InstructionInstanceSerialized(i.Instruction.Name + " " + i.ToString()));
 }