コード例 #1
0
ファイル: Customers.cs プロジェクト: desautel/Sdl-Community
        public static void SaveCustomer(String name, Customer customer)
        {
            if (String.IsNullOrEmpty(name))
                return;
            var xmlDoc = new XmlDocument();
            xmlDoc.Load(Settings.SettingsFile);
            var xmlNodeSettings = xmlDoc.SelectSingleNode("//Settings");
            if (xmlNodeSettings != null)
            {
                XmlNode xmlNodeCustomers = xmlNodeSettings.SelectSingleNode("//Customers");

                if (xmlNodeCustomers != null)
                {
                    XmlNodeList customerNodes = ((XmlElement) xmlNodeCustomers).GetElementsByTagName("Customer");
                    XmlElement xmlNodeCustomer = customerNodes.Cast<XmlElement>().FirstOrDefault(node => node.HasAttribute("Name") && node.Attributes["Name"].Value == name);
                    if (xmlNodeCustomer != null)
                        xmlNodeCustomers.RemoveChild(xmlNodeCustomer);
                }

                if (xmlNodeCustomers != null)
                    xmlNodeCustomers.AppendChild(CreateCustomerElement(xmlDoc, customer));
                else
                {
                    xmlNodeCustomers = xmlDoc.CreateElement("Customers");
                    xmlNodeSettings.AppendChild(xmlNodeCustomers);
                    xmlNodeCustomers.AppendChild(CreateCustomerElement(xmlDoc, customer));
                }
            }

            xmlDoc.Save(Settings.SettingsFile);
        }
コード例 #2
0
        private void UpdateWorksheetContent(WorksheetPart workSheetPart, List<ExcelSheet> templateRows, SharedStringTable sharedStrings, List<ProjectFile> projectFiles, Customer customer, User user)
        {
            IEnumerable<SheetData> sheets = workSheetPart.Worksheet.ChildElements.OfType<SheetData>();

            foreach (var sheetData in sheets)
            {
                sheetData.RemoveAllChildren<Row>();

                List<String> strings = sharedStrings.ChildElements.OfType<SharedStringItem>().Where(shItem => shItem.ChildElements.OfType<Text>().Any()).Select(shItem =>
                    {
                        var firstOrDefault = shItem.ChildElements.OfType<Text>().FirstOrDefault();
                        return firstOrDefault != null ? firstOrDefault.Text : String.Empty;
                    }).ToList();

                //from this point is the content
                int linesToAdd = 0;
                var templateSheet = templateRows.FirstOrDefault(row => row.SheetData.Equals(sheetData));
                if (templateSheet != null)
                {
                    foreach (var projectFile in projectFiles)
                    {
                        GenerateWorksheetDataContent(sheetData, templateSheet.Rows, linesToAdd, new List<TokensProvider> {projectFile, customer, user}, strings);
                        linesToAdd += (templateSheet.Rows.Count + 5);
                    }
                }
            }
        }
コード例 #3
0
 private void btnSelect_Click(object sender, EventArgs e)
 {
     if (gridCustomers.SelectedRows.Count == 0)
         return;
     SelectedCustomer = Customers.GetCustomer(gridCustomers.SelectedRows[0].Cells[0].Value.ToString());
     DialogResult = DialogResult.OK;
 }
コード例 #4
0
 public AddOrEditCustomer(String culture, Customer customer)
 {
     _customer = customer;
     InitializeComponent();
     InitializeCustomControls();
     EnsureUiBasedOnCultureInfo(culture, customer);
 }
コード例 #5
0
 // Creates a SpreadsheetDocument.
 public void CreatePackage(string filePath, List<ProjectFile> projectFiles, Customer customer, User user)
 {
     using(SpreadsheetDocument package = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook))
     {
         CreateParts(package, projectFiles);
     }
 }
コード例 #6
0
ファイル: Customers.cs プロジェクト: desautel/Sdl-Community
        private static XmlNode CreateCustomerElement(XmlDocument xmlDoc, Customer customer)
        {
            var xmlNodeCustomer = xmlDoc.CreateElement("Customer");

            SetInnerTextCustomerElement(customer, xmlNodeCustomer);

            return xmlNodeCustomer;
        }
コード例 #7
0
 public override void GenerateExcelData(List<ProjectFile> files, Customer customer, User user, String fileToSave, String template)
 {
     StandardLinesExcelHelper xmlHelper = new StandardLinesExcelHelper();
     if (String.IsNullOrEmpty(template))
         xmlHelper.CreatePackage(fileToSave, files, customer, user);
     else
         xmlHelper.UpdatePackage(template, fileToSave, files, customer, user);
 }
コード例 #8
0
 // Updates a SpreadsheetDocument.
 public void UpdatePackage(string templateFile, string filePath, List<ProjectFile> projectFiles, Customer customer, User user)
 {
     File.Copy(templateFile, filePath, true);
     Thread.Sleep(100);
     using (WordprocessingDocument package = WordprocessingDocument.Open(filePath, true, new OpenSettings() { AutoSave = true }))
     {
         UpdateParts(package, projectFiles, customer, user);
     }
 }
コード例 #9
0
        private void UpdateParts(SpreadsheetDocument document, Dictionary<WorksheetPart, List<ExcelSheet>> worksheetsWithRows, List<ProjectFile> projectFiles, Customer customer, User user)
        {
            var workSheets = document.WorkbookPart.WorksheetParts;

            foreach (var workSheet in workSheets)
            {
                UpdateWorksheetContent(workSheet, worksheetsWithRows[workSheet], document.WorkbookPart.SharedStringTablePart.SharedStringTable, projectFiles, customer, user);
            }
        }
コード例 #10
0
ファイル: Customers.cs プロジェクト: desautel/Sdl-Community
        private static void SetInnerTextCustomerElement(Customer customer, XmlElement xmlNodeCustomer)
        {
            var serializedCustomer = Settings.SerializeObject(customer);

            var bytes = new byte[serializedCustomer.Length * sizeof(char)];
            Buffer.BlockCopy(serializedCustomer.ToCharArray(), 0, bytes, 0, bytes.Length);
            xmlNodeCustomer.SetAttribute("Name", customer.Name);
            xmlNodeCustomer.InnerText = Convert.ToBase64String(bytes);
        }
コード例 #11
0
 // Updates a SpreadsheetDocument.
 public void UpdatePackage(string templateFile, string filePath, List<ProjectFile> projectFiles, Customer customer, User user)
 {
     File.Copy(templateFile, filePath, true);//.Replace("xlsx", "xltx"));
     Thread.Sleep(100);
     using (SpreadsheetDocument package = SpreadsheetDocument.Open(filePath, true, new OpenSettings {AutoSave = true}))
     {
         var worksheetsWithRows = package.WorkbookPart.WorksheetParts.ToDictionary(workSheet => workSheet, GetRowsForWorksheet);
         UpdateParts(package, worksheetsWithRows, projectFiles, customer, user);
     }
 }
コード例 #12
0
        public virtual void GenerateClipboardData(List<ProjectFile> projectFiles, Customer customer, User user)
        {
            Encoding enc = Encoding.UTF8;
            const string begin = "Version:0.9\r\nStartHTML:{0:000000}\r\nEndHTML:{1:000000}\r\nStartFragment:{2:000000}\r\nEndFragment:{3:000000}\r\n";
            String htmlBegin = "<html>\r\n<head>\r\n"
                                + "<meta http-equiv=\"Content-Type\""
                                + " content=\"text/html; charset=" + enc.WebName + "\">\r\n"
                                + "<title>HTML clipboard</title>\r\n</head>\r\n<body>\r\n"
                                + "<!--StartFragment-->";

            var sb = new StringBuilder();
            sb.AppendLine(GenerateCustomerData(customer));
            sb.AppendLine("<br>");
            foreach (var porjectFile in projectFiles)
            {
                sb.AppendLine(porjectFile.FileName.Replace(".sdlxliff", ""));
                sb.AppendLine(GenerateHeader(porjectFile));
                foreach (var porjectProperty in porjectFile.ProjectProperties)
                {
                    if (porjectProperty.StandardType != ExcludedType)
                    {
                        sb.AppendLine(GenerateLine(porjectProperty));
                    }
                }
                sb.AppendLine( GenerateTotal(porjectFile.ProjectProperties));
                sb.AppendLine("</tbody></TABLE>");
                sb.AppendLine("<br>");
            }
            sb.AppendLine(GenerateUserData(user));
            String html = sb.ToString();
            const string htmlEnd = "<!--EndFragment-->\r\n</body>\r\n</html>\r\n";

            string beginSample = String.Format(begin, 0, 0, 0, 0);

            int countBegin = enc.GetByteCount(beginSample);
            int countHtmlBegin = enc.GetByteCount(htmlBegin);
            int countHtml = enc.GetByteCount(html);
            int countHtmlEnd = enc.GetByteCount(htmlEnd);

            string htmlTotal = String.Format(
               begin
               , countBegin
               , countBegin + countHtmlBegin + countHtml + countHtmlEnd
               , countBegin + countHtmlBegin
               , countBegin + countHtmlBegin + countHtml
               ) + htmlBegin + html + htmlEnd;

            DataObject obj = new DataObject();
            obj.SetData(DataFormats.Html, new System.IO.MemoryStream(
               enc.GetBytes(htmlTotal)));
            Clipboard.SetDataObject(obj, true);
        }
コード例 #13
0
ファイル: Customers.cs プロジェクト: desautel/Sdl-Community
        public static void DeleteCustomer(Customer customer)
        {
            var xmlDoc = new XmlDocument();
            xmlDoc.Load(Settings.SettingsFile);
            var xmlNodeSettings = xmlDoc.SelectSingleNode("//Settings");
            if (xmlNodeSettings != null)
            {
                XmlNode xmlNodeCustomers = xmlNodeSettings.SelectSingleNode("//Customers");

                if (xmlNodeCustomers != null)
                {
                    XmlNodeList customerNodes = ((XmlElement)xmlNodeCustomers).GetElementsByTagName("Customer");
                    XmlElement xmlNodeCustomer = customerNodes.Cast<XmlElement>().FirstOrDefault(node => node.HasAttribute("Name") && node.Attributes["Name"].Value == customer.Name);
                    if (xmlNodeCustomer != null)
                        xmlNodeCustomers.RemoveChild(xmlNodeCustomer);
                }
            }

            xmlDoc.Save(Settings.SettingsFile);
        }
コード例 #14
0
        private void UpdateParts(WordprocessingDocument document, List<ProjectFile> projectFiles, Customer customer,
                                 User user)
        {
            try
            {
                OpenXmlElement root = document.MainDocumentPart.Document.Body;
                UpdateElementsForRoot(projectFiles, customer, user, root);
            }
            catch {}

            try
            {
                foreach (FooterPart footerPart in document.MainDocumentPart.FooterParts)
                {
                    OpenXmlElement root = footerPart.Footer;
                    UpdateElementsForRoot(customer, user, root);
                }
            }
            catch { }

            try
            {
                foreach (HeaderPart headerPart in document.MainDocumentPart.HeaderParts)
                {
                    OpenXmlElement root = headerPart.Header;
                    UpdateElementsForRoot(customer, user, root);
                }
            }
            catch { }

            #region comments part
            //try
            //{
            //    if (document.MainDocumentPart.WordprocessingCommentsPart == null) return;
            //    OpenXmlElement root = document.MainDocumentPart.WordprocessingCommentsPart.Comments;
            //    UpdateElementsForRoot(projectFiles, customer, user, root);
            //}
            //catch { }
            #endregion
        }
コード例 #15
0
 private void UpdateElements(OpenXmlElement root, List<OpenXmlElement> elements, Customer customer, User user)
 {
     UpdateSingleFile(root, elements, new List<TokensProvider>() { customer, user }, false);
 }
コード例 #16
0
        private string GenerateCustomerData(Customer customer)
        {
            if (customer == null)
                return String.Empty;
            UIResources resources = new UIResources(Settings.GetSavedCulture());
            var sb = new StringBuilder();
            sb.AppendLine(resources.GeneratedFor);
            sb.AppendLine("<br>");
            if (!String.IsNullOrEmpty(customer.Name))
            {
                sb.AppendLine(String.Format("   {1}: {0}", customer.Name, resources.CustomerName));
                sb.AppendLine("<br>");
            }
            if (!String.IsNullOrEmpty(customer.Street))
            {
                sb.AppendLine(String.Format("   {1}: {0}", customer.Street, resources.Street));
                sb.AppendLine("<br>");
            }
            if (!String.IsNullOrEmpty(customer.City))
            {
                sb.AppendLine(String.Format("   {1}: {0}", customer.City, resources.City));
                sb.AppendLine("<br>");
            }
            if (!String.IsNullOrEmpty(customer.State))
            {
                sb.AppendLine(String.Format("   {1}: {0}", customer.State, resources.State));
                sb.AppendLine("<br>");
            }
            if (!String.IsNullOrEmpty(customer.Zip))
            {
                sb.AppendLine(String.Format("   {1}: {0}", customer.Zip, resources.Zip));
                sb.AppendLine("<br>");
            }
            if (!String.IsNullOrEmpty(customer.Country))
            {
                sb.AppendLine(String.Format("   {1}: {0}", customer.Country, resources.Country));
                sb.AppendLine("<br>");
            }

            return sb.ToString();
        }
コード例 #17
0
 public virtual void GenerateWordData(List<ProjectFile> files, Customer customer, User user, string fileToSave, string template)
 {
     WordHelperBase xmlHelper = new WordHelperBase();
     xmlHelper.UpdatePackage(template, fileToSave, files, customer, user);
 }
コード例 #18
0
 public virtual void GenerateExcelData(List<ProjectFile> files, Customer customer, User user, String fileToSave, String template)
 {
 }
コード例 #19
0
        private void btnGenerate_Click(object sender, EventArgs e)
        {
            if (!ckWord.Checked && !ckExcel.Checked && !ckClipboard.Checked)
                return;

            Settings.SaveRatesState(_rates.State);

            ITemplateRates currentSelectedTemplate = _rates.CurrentRatesTemplate;
            if (currentSelectedTemplate == null)
            {
                if (_rates == null || _rates.State == null)
                    currentSelectedTemplate = new SimpleWordTemplate();
                else
                {
                    currentSelectedTemplate = _rates.GetSimpleWordTemplateFromState();
                }
            }
            Project project = new Project(cmbLanguagePair.SelectedValue.ToString(),
                currentSelectedTemplate, 
                cmbReportType.SelectedIndex == 0 ? ReportType.Detailed : ReportType.Summary);

            Customer customer = new Customer(
                txtCustomerName.SDLText,
                txtCustomerStreet.SDLText,
                txtCustomerCity.SDLText,
                txtCustomerState.SDLText,
                txtCustomerZip.SDLText,
                txtCustomerCountry.SDLText);

            //Settings.SaveCurrentCustomer(customer);
            bool emptyUser = String.IsNullOrEmpty(txtUserName.SDLText);
            User user = new User()
                {
                    Name = emptyUser ? String.Empty : txtUserName.SDLText,
                    Street = emptyUser ? String.Empty : txtUserStreet.SDLText,
                    City = emptyUser ? String.Empty : txtUserCity.SDLText,
                    State = emptyUser ? String.Empty : txtUserState.SDLText,
                    Zip = emptyUser ? String.Empty : txtUserZip.SDLText,
                    Country = emptyUser ? String.Empty : txtUserCountry.SDLText,
                    Phone = emptyUser ? String.Empty : txtUserPhone.SDLText,
                    Mobile = emptyUser ? String.Empty : txtUserMobile.SDLText,
                    Email = emptyUser ? String.Empty : txtUserEmail.SDLText,
                    Skype = emptyUser ? String.Empty : txtUserSkype.SDLText,
                    WebAddress = emptyUser ? String.Empty : txtUserWebAdress.SDLText,
                    Twitter = emptyUser ? String.Empty : txtUserTwitter.SDLText
                };
            Settings.SaveCurrentUser(user);
            UIResources resources = new UIResources(ddlLanguages.SelectedValue.ToString());
            if (ckClipboard.Checked)
            {
                project.GenerateClipboardData(customer, user);
                MessageBox.Show(resources.QuoteGeneratedClipboard, resources.Information, MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
            if (ckExcel.Checked)
            {
                saveFileDialog.FileName = String.Empty;
                saveFileDialog.DefaultExt = "xlsx";
                saveFileDialog.AddExtension = true;
                saveFileDialog.Filter = @"Excel Document|*.xlsx";

                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    String fileToSave = saveFileDialog.FileName;
                    String template = ddlExcel.SelectedValue.ToString();

                    project.GenerateExcelData(customer, user, fileToSave, template);
                    MessageBox.Show(resources.QuoteGeneratedExcel, resources.Information, MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);
                }
            }
            if (ckWord.Checked)
            {
                saveFileDialog.FileName = String.Empty;
                saveFileDialog.DefaultExt = "docx";
                saveFileDialog.AddExtension = true;
                saveFileDialog.Filter = @"Word Document|*.docx";
                saveFileDialog.SupportMultiDottedExtensions = false;

                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    String fileToSave = saveFileDialog.FileName;
                    String template = ddlWord.SelectedValue.ToString();

                    project.GenerateWordData(customer, user, fileToSave, template);
                    MessageBox.Show(resources.QuoteGeneratedWord, resources.Information, MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);
                }
            }
        }
コード例 #20
0
 private void UpdateElementsForRoot(IEnumerable<ProjectFile> projectFiles, Customer customer, User user, OpenXmlElement root)
 {
     List<OpenXmlElement> elements = InitializeRoot(root);
     UpdateElements(root, elements, projectFiles, customer, user);
 }
コード例 #21
0
ファイル: Project.cs プロジェクト: desautel/Sdl-Community
 public void GenerateWordData(Customer customer, User user, string fileToSave, string template)
 {
     _template.GenerateWordData(Files, customer, user, fileToSave, template);
 }
コード例 #22
0
ファイル: Project.cs プロジェクト: desautel/Sdl-Community
        public void GenerateExcelData(Customer customer, User user, String fileToSave, String template)
        {
            _template.GenerateExcelData(Files, customer, user, fileToSave, template);

        }
コード例 #23
0
ファイル: Project.cs プロジェクト: desautel/Sdl-Community
 public void GenerateClipboardData(Customer customer, User user)
 {
     _template.GenerateClipboardData(Files, customer, user);
 }
コード例 #24
0
 private void UpdateElementsForRoot(Customer customer, User user, OpenXmlElement root)
 {
     List<OpenXmlElement> elements = InitializeRoot(root, false);
     UpdateElements(root, elements, customer, user);
 }
コード例 #25
0
        private void EnsureUiBasedOnCultureInfo(String culture, Customer customer)
        {
            var resources = new UIResources(culture);

            groupCustomer.Text = resources.Customer;
            _txtCustomerName.LabelText = resources.CustomerName;
            _txtCustomerStreet.LabelText = resources.Street;
            _txtCustomerCountry.LabelText = resources.Country;
            _txtCustomerZip.LabelText = resources.Zip;
            _txtCustomerState.LabelText = resources.State;
            _txtCustomerCity.LabelText = resources.City;

            _txtCustomerName.SDLText = customer != null ? customer.Name : String.Empty;
            _txtCustomerStreet.SDLText = customer != null ? customer.Street : String.Empty;
            _txtCustomerCountry.SDLText = customer != null ? customer.Country : String.Empty;
            _txtCustomerZip.SDLText = customer != null ? customer.Zip : String.Empty;
            _txtCustomerState.SDLText = customer != null ? customer.State : String.Empty;
            _txtCustomerCity.SDLText = customer != null ? customer.City : String.Empty;

            groupStudioAnalysisBands.Text = resources.StudioAnalysisBands;
            groupTemplateTemplates.Text = resources.Templates;

            rbTemplateGroupedAnalysis.Text = resources.GroupedAnalysis;
            rbTemplateSimpleWordAnalysis.Text = resources.SimpleWordAnalysis;
            rbTemplateStandardLines.Text = resources.StandardLines;
        }
コード例 #26
0
        private void UpdateElements(OpenXmlElement root, List<OpenXmlElement> elements, IEnumerable<ProjectFile> projectFiles, Customer customer, User user)
        {
            foreach (var projectFile in projectFiles)
            {
                UpdateSingleFile(root, elements, new List<TokensProvider>() {customer, user, projectFile});

                #region empty lines
                var emptyLineParagraph = new Paragraph() { RsidParagraphAddition = "0077013B", RsidRunAdditionDefault = "00684C81", ParagraphId = "5E06053C", TextId = "77777777" };
                var emptyLineRun = new Run();
                var emptyLineText = new Text() { Text = String.Empty };
                emptyLineRun.Append(emptyLineText);
                emptyLineParagraph.Append(emptyLineRun);
                root.Append(emptyLineParagraph); 
                root.Append((OpenXmlElement)emptyLineParagraph.Clone());
                #endregion
            }
        }
コード例 #27
0
 private void btnSave_Click(object sender, EventArgs e)
 {
     var customer = new Customer
     {
             Name = _txtCustomerName.SDLText,
             Street = _txtCustomerStreet.SDLText,
             City = _txtCustomerCity.SDLText,
             Zip = _txtCustomerZip.SDLText,
             State = _txtCustomerState.SDLText,
             Country = _txtCustomerCountry.SDLText
         };
     customer.Rates = _rates.State;
     Customers.SaveCustomer(customer.Name, customer);
    
     DialogResult = DialogResult.OK;
 }