예제 #1
0
        //True, если комманда c1 строго более важна чем f2, форма f2 закрывается при выполнени c1
        public static bool Greater(this ReporterCommand c1, ReporterCommand f2)
        {
            switch (c1)
            {
            case ReporterCommand.PutLinks:
            case ReporterCommand.DeleteLinks:
            case ReporterCommand.Update:
            case ReporterCommand.LinksList:
            case ReporterCommand.ClearCells:
            case ReporterCommand.ShapeLibrary:
                return(f2 == ReporterCommand.Report || f2 == ReporterCommand.LiveReport || f2 == ReporterCommand.Video || f2 == ReporterCommand.ArchivesRanges || f2 == ReporterCommand.Intervals || f2 == ReporterCommand.AbsoluteEdit || f2 == ReporterCommand.HandInput);

            case ReporterCommand.Setup:
                return(f2 == ReporterCommand.Report || f2 == ReporterCommand.LiveReport || f2 == ReporterCommand.Video || f2 == ReporterCommand.ArchivesRanges || f2 == ReporterCommand.Intervals || f2 == ReporterCommand.AbsoluteEdit || f2 == ReporterCommand.HandInput ||
                       f2 == ReporterCommand.PutLinks || f2 == ReporterCommand.LinksList || f2 == ReporterCommand.FindLinks || f2 == ReporterCommand.LinksTemplate || f2 == ReporterCommand.FilterParams || f2 == ReporterCommand.LinkProperties || f2 == ReporterCommand.ShapeLibrary);

            case ReporterCommand.LiveReport:
            case ReporterCommand.Video:
                return(f2 == ReporterCommand.Report || f2 == ReporterCommand.Intervals || f2 == ReporterCommand.AbsoluteEdit);

            case ReporterCommand.Report:
                return(f2 == ReporterCommand.Intervals || f2 == ReporterCommand.AbsoluteEdit);

            case ReporterCommand.Intervals:
                return(f2 == ReporterCommand.AbsoluteEdit || f2 == ReporterCommand.Report || f2 == ReporterCommand.LiveReport || f2 == ReporterCommand.Video);

            case ReporterCommand.AbsoluteEdit:
                return(f2 == ReporterCommand.Intervals || f2 == ReporterCommand.Report || f2 == ReporterCommand.LiveReport || f2 == ReporterCommand.Video);
            }
            return(false);
        }
예제 #2
0
 public Command StartAtom(ReporterCommand form)
 {
     if (form.ToStringHistory() == null)
     {
         return(Start());
     }
     return(StartLog(form.ToStringHistory(), "", Code, Code, true));
 }
예제 #3
0
 //Какую запись об открытии формы нужно добавлять в History, если null, то никакую
 public static string ToStringHistory(this ReporterCommand c)
 {
     if (c == ReporterCommand.DeleteLinks || c == ReporterCommand.AppInfo || c == ReporterCommand.FilterParams || c == ReporterCommand.LinkProperties || c == ReporterCommand.HandInputValues)
     {
         return(null);
     }
     if (c == ReporterCommand.Update || c == ReporterCommand.CopyServerReport || c == ReporterCommand.ClearCells)
     {
         return("Запуск комманды " + c);
     }
     return("Открытие формы " + c);
 }
예제 #4
0
 //Запускает комманду и возвращает новую заданную форму, если такая есть
 public static Form RunReporterCommand(ReporterCommand c)
 {
     if (!IsActivated)
     {
         return(null);
     }
     if (c.OneForAllBooks() || ActiveBook == null)
     {
         return(CommonBook.RunCommandReporter(c));
     }
     return(ActiveBook.RunCommandReporter(c));
 }
예제 #5
0
        //Вызывается при закрытии заданной формы form, close - закрывать форму прямо здесь в процедуре
        public void CloseForm(ReporterCommand form, bool close = false)
        {
            if (Forms.ContainsKey(form))
            {
                var fform = Forms[form];
                Forms.Remove(form);
                var list = (from f in Forms where f.Key.IsChildOf(form) select f.Key).ToList();
                foreach (var ff in list)
                {
                    CloseForm(ff, true);
                }
                using (StartAtom("Закрытие формы " + form))
                {
                    try
                    {
                        if (close)
                        {
                            fform.Close();
                        }
                        switch (form)
                        {
                        case ReporterCommand.PutLinks:
                            UpdateDataFile(false, true);
                            Workbook.Save();
                            break;

                        case ReporterCommand.Setup:
                            SysPage.PutValue("LastSetup", DateTime.Now.ToString());
                            Workbook.Save();
                            UpdateDataFile(true);
                            LoadSetup();
                            break;

                        case ReporterCommand.AbsoluteEdit:
                            AddEvent("Запись абсолютных значений в архив");
                            foreach (var project in UsedProjects.Values)
                            {
                                project.Archive.WriteAbsoluteEdit(project.AbsoluteEditValues.Values.Where(hip => !hip.Value.IsEmpty()).ToList());
                            }
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        AddError("Ошибка при закрытии формы", ex, form.ToString());
                    }
                }
            }
        }
예제 #6
0
 //Закрывает заданную форму, close - закрывать форму прямо здесь в процедуре
 public static void CloseForm(ReporterCommand form, bool close = false)
 {
     if (!IsActivated)
     {
         return;
     }
     if (form.OneForAllBooks())
     {
         CommonBook.CloseForm(form, close);
     }
     else if (ActiveBook != null)
     {
         ActiveBook.CloseForm(form, close);
     }
 }
예제 #7
0
        //True, если форма f1 вызывется только из f2 и если f1 должна закрываться при закрытии f2
        public static bool IsChildOf(this ReporterCommand f1, ReporterCommand f2)
        {
            switch (f2)
            {
            case ReporterCommand.PutLinks:
                return(f1 == ReporterCommand.FindLinks || f1 == ReporterCommand.LinksTemplate || f1 == ReporterCommand.FilterParams || f1 == ReporterCommand.LinkProperties);

            case ReporterCommand.GroupReports:
                return(f1 == ReporterCommand.GroupReportEdit);

            case ReporterCommand.Report:
            case ReporterCommand.Video:
                return(f1 == ReporterCommand.ArchivesRanges);

            case ReporterCommand.HandInput:
                return(f1 == ReporterCommand.HandInputValues);

            case ReporterCommand.Intervals:
                return(f1 == ReporterCommand.FilterIntervals);
            }
            return(false);
        }
예제 #8
0
        //True, если комманда c1 строго менее важна чем форма f2, с1 нельзя выполнить, когда открыта f2
        public static bool Less(this ReporterCommand c1, ReporterCommand f2)
        {
            switch (c1)
            {
            case ReporterCommand.Create:
                return(false);

            case ReporterCommand.Setup:
                return(f2 == ReporterCommand.Create || f2 == ReporterCommand.ClearCells);

            case ReporterCommand.PutLinks:
            case ReporterCommand.DeleteLinks:
            case ReporterCommand.Update:
            case ReporterCommand.LinksList:
            case ReporterCommand.ShapeLibrary:
                return(f2 == ReporterCommand.Create || f2 == ReporterCommand.Setup || f2 == ReporterCommand.ClearCells);

            case ReporterCommand.Report:
            case ReporterCommand.GroupReports:
                return(f2 == ReporterCommand.LiveReport || f2 == ReporterCommand.Video || f2 == ReporterCommand.Create || f2 == ReporterCommand.Setup || f2 == ReporterCommand.PutLinks || f2 == ReporterCommand.LinksList || f2 == ReporterCommand.ClearCells || f2 == ReporterCommand.ShapeLibrary);

            case ReporterCommand.LiveReport:
            case ReporterCommand.Video:
            case ReporterCommand.Intervals:
            case ReporterCommand.SaveReport:
            case ReporterCommand.HandInput:
            case ReporterCommand.AbsoluteEdit:
                return(f2 == ReporterCommand.Create || f2 == ReporterCommand.Setup || f2 == ReporterCommand.PutLinks || f2 == ReporterCommand.LinksList || f2 == ReporterCommand.ClearCells || f2 == ReporterCommand.ShapeLibrary);

            case ReporterCommand.CopyServerReport:
                return(f2 == ReporterCommand.Create || f2 == ReporterCommand.Setup || f2 == ReporterCommand.PutLinks || f2 == ReporterCommand.LinksList || f2 == ReporterCommand.ShapeLibrary ||
                       f2 == ReporterCommand.Report || f2 == ReporterCommand.LiveReport || f2 == ReporterCommand.Video || f2 == ReporterCommand.Intervals || f2 == ReporterCommand.AbsoluteEdit || f2 == ReporterCommand.HandInput);

            case ReporterCommand.GroupReportEdit:
                return(f2 != ReporterCommand.GroupReports);
            }
            return(false);
        }
예제 #9
0
        //Открывает новую заданную форму
        public Form RunCommandReporter(ReporterCommand c)
        {
            if (Forms.ContainsKey(c) && Forms[c] != null)
            {
                var fm = Forms[c];
                if (!fm.Visible)
                {
                    fm.Show();
                }
                if (fm.WindowState == FormWindowState.Minimized)
                {
                    fm.WindowState = FormWindowState.Normal;
                }
                fm.Focus();
                return(fm);
            }
            if (!c.OneForAllBooks() && IsReportForming)
            {
                return(null);
            }
            if (c.NeedCheckReport() && !SysPage.IsInfoTask())
            {
                MessageReportError("Да запуска команды необходимо открыть отчет InfoTask");
                return(null);
            }

            Form f = null;

            using (StartAtom(c))
            {
                try
                {
                    AddEvent("Закрытие лишних форм");
                    var less  = new Dictionary <ReporterCommand, Form>();
                    var great = new Dictionary <ReporterCommand, Form>();
                    foreach (var k in Forms)
                    {
                        if (c.Greater(k.Key))
                        {
                            less.Add(k.Key, k.Value);
                        }
                        if (c.Less(k.Key))
                        {
                            great.Add(k.Key, k.Value);
                        }
                    }
                    var cForms = GeneralRep.CommonBook.Forms;
                    foreach (var k in cForms)
                    {
                        if (c.Less(k.Key))
                        {
                            great.Add(k.Key, k.Value);
                        }
                    }

                    if (great.Count > 0)
                    {
                        string smess = "";
                        foreach (var g in great)
                        {
                            smess += (smess != "" ? "," : "") + " Форма " + g.Key.ToFormName();
                        }
                        smess = "Команда не может быть выполнена, пока открыты:" + smess + ". Закрыть формы?";
                        if (!MessageReportQuestion(smess))
                        {
                            return(null);
                        }
                    }

                    foreach (var k in less)
                    {
                        k.Value.Close();
                        if (Forms.ContainsKey(k.Key))
                        {
                            Forms.Remove(k.Key);
                        }
                        if (cForms.ContainsKey(k.Key))
                        {
                            cForms.Remove(k.Key);
                        }
                    }
                    foreach (var k in great)
                    {
                        GeneralRep.CloseForm(k.Key, true);
                    }

                    if (c == ReporterCommand.PutLinks || c == ReporterCommand.ShapeLibrary || c == ReporterCommand.Report || c == ReporterCommand.LiveReport || c == ReporterCommand.Intervals || c == ReporterCommand.AbsoluteEdit || c == ReporterCommand.LinksList)
                    {
                        UpdateDataFile(false);
                    }

                    System.Windows.Forms.Application.EnableVisualStyles();
                    switch (c)
                    {
                    case ReporterCommand.GroupReports:
                        f = new FormGroupReports();
                        break;

                    case ReporterCommand.GroupReportEdit:
                        f = new FormGroupReportEdit();
                        break;

                    case ReporterCommand.Create:
                        f = new FormCreate();
                        break;

                    case ReporterCommand.Setup:
                        f = new FormSetup();
                        break;

                    case ReporterCommand.CopyServerReport:
                        CopyServerReport();
                        break;

                    case ReporterCommand.PutLinks:
                        using (Start()) LoadCurTemplate();
                        LastChangeLinks = DateTime.Now;
                        f = new FormPutLinks();
                        break;

                    case ReporterCommand.FilterParams:
                        f = new FormFiltersParams();
                        break;

                    case ReporterCommand.LinkProperties:
                        f = new FormLinkProperties();
                        break;

                    case ReporterCommand.FindLinks:
                        f = new FormFindLinks();
                        break;

                    case ReporterCommand.LinksTemplate:
                        f = new FormLinksTemplate();
                        break;

                    case ReporterCommand.DeleteLinks:
                        DeleteLinks();
                        LastChangeLinks = DateTime.Now;
                        break;

                    case ReporterCommand.ClearCells:
                        Forms.Add(ReporterCommand.ClearCells, null);
                        UsedFileToMemory();
                        ClearAllCells();
                        Forms.Remove(ReporterCommand.ClearCells);
                        break;

                    case ReporterCommand.ShapeLibrary:
                        f = new FormShapeLibrary();
                        break;

                    case ReporterCommand.Report:
                        UsedFileToMemory();
                        PrepareController();
                        f = new FormReport();
                        break;

                    case ReporterCommand.LiveReport:
                        UsedFileToMemory();
                        PrepareController();
                        f = new FormLiveReport();
                        break;

                    case ReporterCommand.Video:
                        UsedFileToMemory();
                        PrepareController();
                        f = new FormVideo();
                        break;

                    case ReporterCommand.ArchivesRanges:
                        f = new FormArchivesRanges();
                        break;

                    case ReporterCommand.Intervals:
                        UsedFileToMemory();
                        if (FormInf == null || FormToDir || FormToFile)
                        {
                            MessageReportError("Сохранение в журнал возможно только при формировании отчета непосредственно в бланк отчета (задается в настройках)");
                        }
                        else
                        {
                            PrepareArchive();
                            f = new FormIntervals();
                        }
                        break;

                    case ReporterCommand.FilterIntervals:
                        f = new FormFiltersIntervals();
                        break;

                    case ReporterCommand.SaveReport:
                        if (CanSaveReport())
                        {
                            f = new FormSaveReport();
                        }
                        break;

                    case ReporterCommand.AbsoluteEdit:
                        UsedFileToMemory();
                        AddEvent("Чтение абсолютных значений из архива");
                        foreach (var project in UsedProjects.Values)
                        {
                            project.AbsoluteEditValues = project.Archive.ReadAbsoluteEdit(project.Code, false);
                        }
                        f = new FormAbsoluteEdit();
                        break;

                    case ReporterCommand.Update:
                        UpdateDataFile(true);
                        if (!Command.IsError)
                        {
                            MessageReport("Ссылки были обновлены");
                        }
                        break;

                    case ReporterCommand.LinksList:
                        f = new FormLinksList();
                        break;

                    case ReporterCommand.AppInfo:
                        f = new FormAppInfo();
                        break;
                    }
                    if (f != null)
                    {
                        if (!c.OneForAllBooks())
                        {
                            f.Text += " (" + Code + ")";
                        }
                        Forms.Add(c, f);
                        f.Show();
                    }
                }
                catch (Exception ex)
                {
                    AddError("Ошибка при открытии формы", ex, c.ToString());
                }
                if (Command != null && Command.IsError)
                {
                    foreach (var ff in Forms)
                    {
                        if (ff.Key != ReporterCommand.LinkProperties && ff.Value != null && ff.Value.Visible)
                        {
                            ff.Value.Activate();
                            break;
                        }
                    }
                    ShowError();
                }
            }
            return(f);
        }
예제 #10
0
 //True, если при выполнении комманды нужно проверять, что активная книга является отчетом
 public static bool NeedCheckReport(this ReporterCommand f)
 {
     return(f == ReporterCommand.Report || f == ReporterCommand.LiveReport || f == ReporterCommand.Video || f == ReporterCommand.Setup || f == ReporterCommand.PutLinks || f == ReporterCommand.DeleteLinks || f == ReporterCommand.Update ||
            f == ReporterCommand.ClearCells || f == ReporterCommand.Update || f == ReporterCommand.AbsoluteEdit || f == ReporterCommand.LinksList || f == ReporterCommand.ShapeLibrary ||
            f == ReporterCommand.HandInputValues || f == ReporterCommand.SaveReport || f == ReporterCommand.Intervals || f == ReporterCommand.CopyServerReport);
 }
예제 #11
0
 //True, если форма открывается одна на все книги
 public static bool OneForAllBooks(this ReporterCommand f)
 {
     return(f == ReporterCommand.Create || f == ReporterCommand.GroupReports || f == ReporterCommand.GroupReportEdit || f == ReporterCommand.AppInfo);
 }
예제 #12
0
        //Переводит ReporterCommand в название формы, если форма есть
        public static string ToFormName(this ReporterCommand f)
        {
            switch (f)
            {
            case ReporterCommand.AbsoluteEdit:
                return("редактирования абсолютных значений");

            case ReporterCommand.AppInfo:
                return("информации о программе");

            case ReporterCommand.ArchivesRanges:
                return("диапазонов провайдеров");

            case ReporterCommand.Create:
                return("создания отчета");

            case ReporterCommand.FilterParams:
                return("фильтрации списка параметров");

            case ReporterCommand.FilterIntervals:
                return("фильтрации журнала отчетов");

            case ReporterCommand.FindLinks:
                return("поиска ссылок на выбранный параметр");

            case ReporterCommand.GroupReports:
                return("списка групповых отчетов");

            case ReporterCommand.GroupReportEdit:
                return("редактирования группового отчета");

            case ReporterCommand.HandInput:
                return("списка парамтров ручного ввода");

            case ReporterCommand.HandInputValues:
                return("значений парамтра ручного ввода");

            case ReporterCommand.Intervals:
                return("списка интервалов журнала отчетов");

            case ReporterCommand.LinkProperties:
                return("свойств ссылки");

            case ReporterCommand.LinksTemplate:
                return("редактирования шаблонов установки ссылок");

            case ReporterCommand.PutLinks:
                return("установки ссылок");

            case ReporterCommand.Report:
                return("формирования отчетов");

            case ReporterCommand.LiveReport:
                return("динамических отчетов");

            case ReporterCommand.Video:
                return("видеомагнитофона");

            case ReporterCommand.SaveReport:
                return("сохранения в журнал");

            case ReporterCommand.Setup:
                return("настройки отчета");

            case ReporterCommand.LinksList:
                return("списка ссылок");

            case ReporterCommand.ShapeLibrary:
                return("свойств библиотечной фигуры");
            }
            return("");
        }