private bool LoadTemplateInfo()
        {
            if (givenTemplate != null)
            {
                templateInfo = givenTemplate.info; return(true);
            }                                                                              // nothing to do, if an other caller than the UI already provided a loaded template

            if (givenTemplateName != null)
            {
                templatePath = givenTemplateName;                               // another caller than the UI provided the name of the template to load
            }
            else
            {
                templatePath = (comboBox1.SelectedItem as TemplateItem).Value;  // UI-call
            }
            if (XML_handling.ParseTemplateInfo(templatePath, out templateInfo, out ErrorCollector errorCollector))
            {
                return(true);
            }

            MessageBox.Show(errorCollector.GetErrorMessage());
            if (givenTemplateName != null)
            {
                DialogResult = DialogResult.Cancel;
                Close(); // terminate the whole selection process if an other caller than the UI provided rubbish input
            }
            return(false);
        }
コード例 #2
0
        private static bool MenuCall_GetSelection(string templateName, out List <HHTypes_Files> hhTypes_files)
        {
            hhTypes_files = new List <HHTypes_Files>();
            if (!XML_handling.ParseTemplateInfo(Path.Combine(Program.getHHOTfolder(), templateName), out Template.TemplateInfo templateInfo, out ErrorCollector errorCollector))
            {
                MessageBox.Show(errorCollector.GetErrorMessage());
                return(false);
            }
            try
            {
                // first let user select files
                // and find out which HH-types the selected files contain:
                // i.e. to each distinct HH-type found in any of the files assign a list of files that contain it
                SelectFilesForm selectFilesForm = new SelectFilesForm(templateInfo);
                if (selectFilesForm.ShowDialog() == DialogResult.Cancel)
                {
                    return(false);
                }

                // then let user select HH-types
                if (templateName == TEMPLATE_NAME_BARS_PER_HHTYPE)
                {
                    hhTypes_files = selectFilesForm.hhTypes_files; // breakdown per HH-type does not require user-selection of HH-types
                }
                else
                {
                    SelectHHTypesForm selectHHTypesForm = new SelectHHTypesForm(templateInfo,
                                                                                (from hhtf in selectFilesForm.hhTypes_files select hhtf.hhTypeName).ToList()); // the (rather stupid) dialog gets just the names of the HH-types ...
                    if (selectHHTypesForm.ShowDialog() == DialogResult.Cancel)
                    {
                        return(false);
                    }
                    foreach (int index in selectHHTypesForm.selectedHHTypesIndices) // ... and returns the inidces of the selected HH-types ...
                    {
                        hhTypes_files.Add(selectFilesForm.hhTypes_files[index]);    // ... which are used to copy from the SelectFilesForm-structure to the result of this function
                    }
                    // warn if a selected file is dropped, because it does not contain any of the selected hh-types
                    string notCovered = Environment.NewLine;
                    foreach (string selectedFile in GetPlainFileList(selectFilesForm.hhTypes_files))
                    {
                        if (!GetPlainFileList(hhTypes_files).Contains(selectedFile))
                        {
                            notCovered += Path.GetFileName(selectedFile) + Environment.NewLine;
                        }
                    }
                    if (notCovered.Trim() != string.Empty && MessageBox.Show($"The following file(s) do not contain any of the selected HH-types and are therefore neglected: {notCovered.TrimEnd()}",
                                                                             string.Empty, MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                    {
                        return(false);
                    }
                }
                return(true);
            }
            catch (Exception e) { MessageBox.Show(e.Message); return(false); }
        }
        private void SelectDefaultTemplateComboForm_Load(object sender, EventArgs e)
        {
            if (givenTemplateName != null || givenTemplate != null)
            {
                btnOK_Click(null, null);
            }

            // Preload default templates into combobox
            if (Directory.Exists(EnvironmentInfo.GetUserSelectableTemplateFolder()))
            {
                // Try reading only the brand templates
                string[] allTemplates = Directory.GetFiles(EnvironmentInfo.GetUserSelectableTemplateFolder(), DefGeneral.BRAND_NAME + "*.xml");
                // If no brand-specific template is found, load all available templates
                if (allTemplates.Length == 0)
                {
                    allTemplates = Directory.GetFiles(EnvironmentInfo.GetUserSelectableTemplateFolder(), "*.xml");
                }

                // try to retieve last selected template from session info
                TSDictionary pluginSessionInfo    = UISessionInfo.GetSessionUserSettings(StatisticsPresenter.USER_SETTINGS_ID);
                string       lastSelectedTemplate = pluginSessionInfo != null && pluginSessionInfo.ContainsKey(StatisticsPresenter.LAST_SELECTED_TEMPLATE)
                    ? pluginSessionInfo.GetItem <string>(StatisticsPresenter.LAST_SELECTED_TEMPLATE) : null;

                int selectedIndex = 0;
                foreach (string templatePath in allTemplates)
                {
                    if (XML_handling.ParseTemplateInfo(templatePath, out Template.TemplateInfo templateInfo, out ErrorCollector errorCollector))
                    {
                        comboBox1.Items.Add(new TemplateItem(templateInfo.name, templatePath));
                        if (templateInfo.name == lastSelectedTemplate)
                        {
                            selectedIndex = comboBox1.Items.Count - 1;
                        }
                    }
                }
                if (comboBox1.Items.Count > 0)
                {
                    comboBox1.SelectedIndex = selectedIndex;
                }
            }
            else
            {
                MessageBox.Show("The default template folder was not found!");
            }
        }