Пример #1
0
        internal void WriteOutputFile(LeadSheet ls, string outputPath)
        {
            var order = ls.Order.Split('|');

            pptHandler.CreateNewPPT();

            //write Title
            pptHandler.AddText(ls.Title.ToUpper(), (float)20, Helpers.PowerpointHandling.Orientation.Right, System.Drawing.Color.White, false, false);

            pptHandler.ShiftY(pptHandler.PositionFromTop); //Preshift
            //write Intro Chords
            if (ls.Intro.Count != 0 && (!order.Contains("INTRO")))
            {
                pptHandler.ShiftY((float)(-1.8 * Helpers.QualifierHelper.QualifiersWithTextHeight["Default"])); //Intro can fit next to the title --> so move it two lines up
                AppendText("INTRO", ls.RetrieveFromCategory("INTRO"), Helpers.QualifierHelper.QualifiersWithColors["INTRO"]);
            }



            foreach (var o in order)
            {
                if (!String.IsNullOrWhiteSpace(o))
                {
                    if (o == "INTRO")
                    {
                        pptHandler.ShiftY((float)(-1.8 * Helpers.QualifierHelper.QualifiersWithTextHeight["Default"])); //Intro can fit next to the title --> so move it two lines up
                    }
                    AppendText(o, ls.RetrieveFromCategory(o), Helpers.QualifierHelper.QualifiersWithColors[o]);
                }
            }
        }
        internal LeadSheet ReadWordFile(string inputPath)
        {
            var    documentInfo  = WH.RetrieveTextWithPosition(inputPath);
            var    header        = documentInfo.Header;
            var    documentLines = documentInfo.Text.Split('\r', '\a', '\f', '\v', '\n').ToList();
            string title         = "";


            if (header.Contains("0") || header.Contains("\t"))  //zero in header is equivalent to tab
            {
                title = header.Split('0', '\t')[1];
            }
            else
            {
                title = documentLines[0];
                documentLines.RemoveAt(0);

                if (documentLines[0].TrimStart('\t', ' ').StartsWith("("))
                {
                    //second line starts with bracket --> also part of the title, but not relevant to be on the screen
                    documentLines.RemoveAt(0);
                }
            }

            var ls = new LeadSheet(title);

            var currentCategoryName  = "";
            var currentCategoryLines = new List <string>();

            // organize by type
            foreach (var documentLine in documentLines)
            {
                var line = documentLine;
                if (IsCategoryQualifier(line))
                {
                    //write to Leadsheet
                    ls.WriteToCategory(currentCategoryName, currentCategoryLines);
                    ls.Order += currentCategoryName + "|";

                    //Get new Type
                    currentCategoryLines = new List <string>();

                    //Get Category Name
                    currentCategoryName = GetCategoryQualifier(line);
                    //it might be that there is already real text within this line
                    var remainingLine = TrimLineFromQualifier(line, currentCategoryName);
                    if (!String.IsNullOrEmpty(remainingLine.Trim()))
                    {
                        currentCategoryLines.Add(remainingLine);
                    }
                }
                else
                {
                    //only non- Blanks
                    if (line.Trim() != string.Empty)
                    {
                        currentCategoryLines.Add(line);//do not add .Trim() here, bc. we also need the whitespaces
                    }
                }
            }

            //also write last Category
            ls.WriteToCategory(currentCategoryName, currentCategoryLines);
            ls.Order += currentCategoryName;

            return(ls);
        }