コード例 #1
0
        private void Drag(object sender, MouseButtonEventArgs e)
        {
            FormulaBorder formula = (FormulaBorder)sender;
            DataObject    data    = new DataObject(formula);

            DragDrop.DoDragDrop(formula.Parent, data, DragDropEffects.Move);
        }
コード例 #2
0
        public Task(string folder, UserControl algorithm, BitmapImage image, string ImageText)
        {
            InitializeComponent();
            this.folder    = folder;
            this.algorithm = algorithm;
            this.image     = image;
            this.ImageText = ImageText;

            if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + "/Sections/" + folder + "self.json"))
            {
                self_button.Visibility = Visibility.Collapsed;
            }

            taskdata = JsonConvert.DeserializeObject <TaskData>(Base.ReadFile(folder + "task.json"));

            TextBlock cond = Helpers.GetFormattedText(taskdata.Condition, 20);

            condition.Content = cond;

            string given = string.Join("\n", taskdata.Given);

            condition_brief.Children.Insert(1, Helpers.GetFormattedText(given, 20));

            string determine = string.Join("\n", taskdata.Determine);

            condition_brief.Children.Add(Helpers.GetFormattedText(determine, 20));

            AddText();

            List <Border> formulas_blocks = new List <Border>();

            for (int i = 0; i < taskdata.FormulasList.Count; i++)
            {
                Formula f = taskdata.FormulasList[i];
                f.Order = i + 1;
                FormulaBorder border = new FormulaBorder()
                {
                    Formula = f, Check = Check
                };
                border.AddFormulaBlock();
                border.MouseDown += Drag;
                formulas_blocks.Add(border);
            }

            Random random = new Random();

            for (int i = formulas_blocks.Count - 1; i >= 1; i--)
            {
                int j    = random.Next(i + 1);
                var temp = formulas_blocks[j];
                formulas_blocks[j] = formulas_blocks[i];
                formulas_blocks[i] = temp;
            }

            foreach (var t in formulas_blocks)
            {
                formulas.Children.Add(t);
            }
        }
コード例 #3
0
        private void Formulas_Drop(object sender, DragEventArgs e)
        {
            FormulaBorder source = (FormulaBorder)e.Data.GetData(typeof(FormulaBorder));

            if (formulas.Children.Contains(source))
            {
                return;
            }
            area.Children.Remove(source);

            source.FormulasDrop();

            formulas.Children.Add(source);
        }
コード例 #4
0
        private void Check(bool right, InputFields inputs)
        {
            FormulaBorder border = (inputs.Parent as StackPanel).Parent as FormulaBorder;

            int index_area = area.Children.IndexOf(border);
            int order      = 1;

            for (int i = 2; i < index_area; i += 2)
            {
                ++order;
            }

            if (right && order == border.Formula.Order)
            {
                inputs.LockFields();
                border.BrushBorder(FormulaBorder.STATUS.RIGHT);
                border.MouseDown -= Drag;
                AddText();
            }
            else
            {
                border.BrushBorder(FormulaBorder.STATUS.WRONG);
            }
        }
コード例 #5
0
        private void Area_Drop(object sender, DragEventArgs e)
        {
            FormulaBorder source = (FormulaBorder)e.Data.GetData(typeof(FormulaBorder));

            if (!area.Children.Contains(source))
            {
                var element = area.Children[area.Children.Count - 1];

                source.Margin = new Thickness(0, 10, 0, 25);
                source.HorizontalAlignment = HorizontalAlignment.Left;
                source.AddInputsBlock();
                formulas.Children.Remove(source);

                if (element is FormulaBorder)
                {
                    area.Children.Remove(element);
                    formulas.Children.Add(element);
                    (element as FormulaBorder).FormulasDrop();
                }

                area.Children.Add(source);
                source.BringIntoView();
            }
        }