예제 #1
0
파일: Form1.cs 프로젝트: MintyRoma/StepMap
        private void StartPaintTrace()
        {
            TasksPanel.CreateGraphics().Clear(Color.White);
            foreach (TaskUI tk in TasksPanel.Controls)
            {
                foreach (NetPoint np in tk.Task.Connections)
                {
                    TaskUI link = null;
                    foreach (TaskUI tik in TasksPanel.Controls)
                    {
                        if (tik.Task == np)
                        {
                            link = tik;
                            break;
                        }
                    }
                    if (link == null)
                    {
                        continue;
                    }
                    Graphics g = TasksPanel.CreateGraphics();
                    Pen      p = new Pen(Color.Black, 3);
                    g.DrawLine(p, tk.APoint, link.APoint);

                    Point center = new Point((tk.APoint.X + link.APoint.X) / 2, (tk.APoint.Y + link.APoint.Y) / 2);
                    AdjustableArrowCap bigArrow = new AdjustableArrowCap(5, 5);
                    p.CustomEndCap = bigArrow;
                    g.DrawLine(p, tk.APoint, center);
                }
            }
            DrawShortPath();
        }
예제 #2
0
파일: Form1.cs 프로젝트: MintyRoma/StepMap
        private void DrawShortPath()
        {
            if (way == null)
            {
                return;
            }
            Graphics      g  = TasksPanel.CreateGraphics();
            Pen           p  = new Pen(Color.Red, 5);
            List <TaskUI> tk = new List <TaskUI>();

            foreach (NetPoint np in way)
            {
                foreach (TaskUI tik in TasksPanel.Controls)
                {
                    if (tik.Task == np)
                    {
                        tk.Add(tik);
                        break;
                    }
                }
            }
            for (int i = 0; i < tk.Count - 1; i++)
            {
                g.DrawLine(p, tk[i].APoint, tk[i + 1].APoint);
                Point center = new Point((tk[i].APoint.X + tk[i + 1].APoint.X) / 2, (tk[i].APoint.Y + tk[i + 1].APoint.Y) / 2);
                AdjustableArrowCap bigArrow = new AdjustableArrowCap(5, 5);
                p.CustomEndCap = bigArrow;
                g.DrawLine(p, tk[i].APoint, center);
            }
        }
 private void LayoutTask(TaskControl task)
 {
     task.SuspendLayout();
     TasksPanel.Controls.Add(task);
     TasksPanel.ScrollControlIntoView(task);
     task.ResumeLayout();
     task.Width = TasksPanel.ClientSize.Width - 10;
 }
예제 #4
0
파일: Form1.cs 프로젝트: MintyRoma/StepMap
        /// <summary>
        /// Обработчик события изменения данных внутри NetPoint для дальнейшей перерисовки панели.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void RedrawTasks(object sender, EventArgs e)
        {
            Graphics gr = TasksPanel.CreateGraphics();

            gr.Clear(Color.White);
            gr.Dispose();
            StartPaintTrace();
        }
        private void OpenCopyTask()
        {
            // Create an instance of the open file dialog box.
            var ofd = new OpenFileDialog
            {
                Filter      = "Text Files (.txt)|*.txt|All Files (*.*)|*.*",
                FilterIndex = 1,
                Multiselect = false
            };

            // Set filter options and filter index.

            // Call the ShowDialog method to show the dialog box.
            var dialogResult = ofd.ShowDialog();

            // Process input if the user clicked OK.
            if (dialogResult == DialogResult.OK)
            {
                ClearAllFields();

                StreamReader inputReader = null;
                try
                {
                    // Open the selected file to read.
                    var tasksXML = new XmlDocument();
                    inputReader = new StreamReader(ofd.FileName, Encoding.UTF8);
                    tasksXML.Load(inputReader);

                    FileDirectory = Path.GetDirectoryName(ofd.FileName);

                    txtGeneralInstructions.Text   = XMLUtil.GetChildNodeValue(tasksXML["copytask"], "general_instructions");
                    txtGeneralTitle.Text          = XMLUtil.GetChildNodeValue(tasksXML["copytask"], "title");
                    txtGeneralDescription.Text    = XMLUtil.GetChildNodeValue(tasksXML["copytask"], "description");
                    LanguageComboBox.SelectedItem = XMLUtil.GetChildNodeValue(tasksXML["copytask"], "language");

                    var taskNodes = tasksXML.DocumentElement.SelectNodes("task");

                    // Create a TaskControl object for each task node in xml document and add it to the taskspanel.
                    if (taskNodes != null)
                    {
                        foreach (XmlNode node in taskNodes)
                        {
                            var task = new TaskControl(node);
                            TasksPanel.Controls.Add(task);
                            TasksPanel.ScrollControlIntoView(task);
                            task.Width = TasksPanel.ClientSize.Width - 10;
                        }

                        _isExisting = true;
                    }
                }
                finally
                {
                    inputReader?.Close();
                }
            }
        }
        private void TasksPanelSizeChanged(object sender, EventArgs e)
        {
            TasksPanel.SuspendLayout();

            var taskControls = TasksPanel.Controls.
                               OfType <TaskControl>().ToList();

            foreach (var task in taskControls)
            {
                task.Width = TasksPanel.ClientSize.Width - 10;
            }

            TasksPanel.ResumeLayout();
        }