예제 #1
0
        // Если кто-то будет смотреть или редактировать этот код
        // Простите меня ;(


        public void SaveProjectExecute(TabControl testTabControl, string Path, int mainNumber)
        {
            tempTabControl = testTabControl;

            project = new SaveProject();

            for (int i = 0; i < tempTabControl.Items.Count; i++)
            //foreach (TabItem item in tempTabControl.Items)
            {
                TabItem item = tempTabControl.Items[i] as TabItem;

                if (!(processSaved.ContainsKey(item.Header as Process)))
                {
                    String name = (item.Header as Process).Description;

                    var drawArea  = item.Content as DrawArea; // Достаём область рисования
                    var savedProc = SaveProcessExecute(drawArea.Children, name);
                    project.ProcessList.Add(savedProc);       // Сохраняем процессы
                    processSaved.Add(item.Header as Process, savedProc.ProcessId);

                    if (mainNumber == i)
                    {
                        project.MainProcessID = savedProc.ProcessId;
                    }
                }
            }

            // Записываем информацию о проекте
            using (FileStream stream = new FileStream(Path, FileMode.Create))
            {
                DataContractSerializer ser = new DataContractSerializer(typeof(SaveProject), types);
                ser.WriteObject(stream, project);
            }
        }
예제 #2
0
        /// <summary>
        /// Загрузка проекта
        /// </summary>
        /// <param name="path"></param>
        /// <param name="testTabControl"></param>
        /// <param name="drawAreas"></param>
        /// <param name="processes"></param>
        /// <param name="mainprocess"></param>
        /// <returns></returns>
        public int LoadProjectExecute(string path, TabControl testTabControl, List <DrawArea> drawAreas, List <Process> processes, out Process mainprocess)
        {
            SaveProject temp = null;

            // Считываем иформацию о проекте
            using (FileStream stream = new FileStream(path, FileMode.Open))
            {
                DataContractSerializer ser = new DataContractSerializer(typeof(SaveProject), types);
                temp = (ser.ReadObject(stream)) as SaveProject;
            }

            mainprocess = null;
            int num = 0;

            // Очищаем информацию
            testTabControl.Items.Clear();
            drawAreas.Clear();
            processes.Clear();

            List <TabItem> tabitems = new List <TabItem>();

            // Проходим по каждому процессу
            for (int i = 0; i < temp.ProcessList.Count; i++)
            {
                // Создаём процесс
                Process process = new Process()
                {
                    Description = temp[i].ProcessName
                };
                processes.Add(process); // Добавляем в список процессов

                var tabItem = new TabItem()
                {
                    Header = process
                };
                testTabControl.SelectedItem = tabItem;

                // Создаём область рисования
                var drawArea = new DrawArea()
                {
                    Processes = processes
                };
                drawAreas.Add(drawArea);
                tabItem.Content = drawArea;

                LoadProcess(temp[i], drawArea);
                processWorked.Add(temp[i].ProcessId, process);

                if (temp.MainProcessID == temp[i].ProcessId)
                {
                    mainprocess = process;
                    num         = i;
                }

                //testTabControl.Items.Add(tabItem);
                tabitems.Add(tabItem);
            }

            // А теперь добавляем, чтобы было в нормальном порядке
            tabitems.Reverse();

            foreach (var ch in tabitems)
            {
                testTabControl.Items.Add(ch);
            }
            //testTabControl.ItemsSource = tabitems;

            return(num);
        }