Exemple #1
0
        // Format the given CourseView into a bunch of course objects, and add it to the given course Layout
        public RectangleF FormatCourseToLayout(SymbolDB symbolDB, CourseView courseViewAllVariations, CourseView specificVariation, CourseLayout courseLayout,
                                               Id <CourseControl> ccSelection1, Id <CourseControl> ccSelection2, CourseLayer layerAllVariations, CourseLayer layerSpecificVariation)
        {
            this.eventDB      = courseViewAllVariations.EventDB;
            this.symbolDB     = symbolDB;
            this.courseLayout = courseLayout;
            this.courseLayerAllVariationsAndParts  = layerAllVariations;
            this.courseLayerSpecificVariation      = layerSpecificVariation;
            this.controlViewsAllVariationsAndParts = courseViewAllVariations.ControlViews;
            this.controlViewsSpecificVariation     = specificVariation.ControlViews;
            this.controlPositions = new ControlPosition[controlViewsAllVariationsAndParts.Count];
            this.courseControlIdsSpecificVariation = QueryEvent.EnumCourseControlIds(eventDB, specificVariation.CourseDesignator).ToArray();
            this.courseControlIdSelection1         = ccSelection1;
            this.courseControlIdSelection2         = ccSelection2;
            this.variationMap = QueryEvent.GetVariantCodeMapping(eventDB, courseViewAllVariations.CourseDesignator);

            SizeF totalAbstractSize = AssignControlPositions(0, controlViewsAllVariationsAndParts.Count, 0, 0);

            // Now create objects now that the positions have been created.
            courseObjRatio = 1.0F;
            appearance     = new CourseAppearance();

            for (int index = 0; index < controlViewsAllVariationsAndParts.Count; ++index)
            {
                CreateObjectsForControlView(controlViewsAllVariationsAndParts[index], controlPositions[index]);
            }

            PointF     bottomCenter = LocationFromAbstractPosition(0, 0);
            SizeF      size         = SizeFromAbstractSize(totalAbstractSize);
            RectangleF rect         = new RectangleF(bottomCenter.X - size.Width / 2, bottomCenter.Y - size.Height, size.Width, size.Height);

            rect.Inflate(widthUnit, heightUnit);
            return(rect);
        }
        internal double CalculateTransaction(string checkInTime, string checkOutTime, string eventName, double eventFee)
        {
            EventDB  eventDB             = new EventDB();
            TimeSpan TimeSpanCheckOut    = TimeSpan.Parse(DateTime.Parse(checkOutTime).ToString("HH:mm:ss"));
            TimeSpan TimeSpanCheckIn     = TimeSpan.Parse(DateTime.Parse(checkInTime).ToString("HH:mm:ss"));
            double   totalCheckedInHours = (TimeSpanCheckOut.Hours - TimeSpanCheckIn.Hours) + ((TimeSpanCheckOut.Minutes - TimeSpanCheckIn.Minutes) / 60.0);
            double   lateMaximum         = eventDB.GetEventHourCap(eventName);

            if (totalCheckedInHours > lateMaximum && eventName.CompareTo("Late Fee") != 0)
            {
                double timeDifference = totalCheckedInHours - lateMaximum;
                if (timeDifference > this.lateTime)
                {
                    this.lateTime       = timeDifference;
                    totalCheckedInHours = lateMaximum;
                }
                else
                {
                    totalCheckedInHours = totalCheckedInHours - this.lateTime;
                }
                this.isLate = true;
            }
            else if (this.lateTime > 0 && eventName.CompareTo("Late Fee") != 0)
            {
                totalCheckedInHours = totalCheckedInHours - this.lateTime;
                this.isLate         = true;
            }
            return(getCharge(eventFee, eventName, totalCheckedInHours));
        }
        public void ActiveTab()
        {
            bool success = controller.LoadInitialFile(TestUtil.GetTestFile("selectionmgr\\sampleevent1.coursescribe"), true);

            Assert.IsTrue(success);

            Assert.AreEqual(7, selectionMgr.TabCount);
            Assert.AreEqual(0, selectionMgr.ActiveTab);

            selectionMgr.ActiveTab = 5;
            Assert.AreEqual(5, selectionMgr.ActiveTab);

            UndoMgr undoMgr = controller.GetUndoMgr();
            EventDB eventDB = controller.GetEventDB();

            undoMgr.BeginCommand(197, "Add course");
            eventDB.AddCourse(new Course(CourseKind.Normal, "AAA", 15000, 1));
            undoMgr.EndCommand(197);

            Assert.AreEqual(6, selectionMgr.ActiveTab);

            undoMgr.BeginCommand(198, "Remove courses");
            eventDB.RemoveCourse(CourseId(1));
            undoMgr.EndCommand(198);

            Assert.AreEqual(0, selectionMgr.ActiveTab);
        }
        public void AllControlsEquals()
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            CourseView courseView, courseView2;
            CourseLayout course, course2;

            eventDB.Load(TestUtil.GetTestFile("courselayout\\marymoor1.coursescribe"));
            eventDB.Validate();

            // Create the all controls course
            courseView = CourseView.CreateViewingCourseView(eventDB, CourseDesignator.AllControls);
            course = new CourseLayout();
            course.SetLayerColor(CourseLayer.Descriptions, 0, "Black", 0, 0, 0, 1F, false);
            course.SetLayerColor(CourseLayer.MainCourse, 12, "Purple", 0.2F, 1, 0, 0.1F, false);
            CourseFormatter.FormatCourseToLayout(symbolDB, courseView, defaultCourseAppearance, course, CourseLayer.MainCourse);

            // Create the all controls course again
            courseView2 = CourseView.CreateViewingCourseView(eventDB, CourseDesignator.AllControls);
            course2 = new CourseLayout();
            course2.SetLayerColor(CourseLayer.Descriptions, 0, "Black", 0, 0, 0, 1F, false);
            course2.SetLayerColor(CourseLayer.MainCourse, 12, "Purple", 0.2F, 1, 0, 0.1F, false);
            CourseFormatter.FormatCourseToLayout(symbolDB, courseView2, defaultCourseAppearance, course2, CourseLayer.MainCourse);

            // Make sure that they are equal.
            Assert.AreEqual(course, course, "CourseLayouts that are equivalent should compare equal.");
            Assert.AreEqual(course, course2, "CourseLayouts that are equivalent should compare equal.");
        }
 public CourseSelectorTestForm(EventDB eventDB)
 {
     InitializeComponent();
     this.courseSelector1.EventDB                   = eventDB;
     this.courseSelector1.ShowAllControls           = true;
     this.courseSelector1.SelectedCourseDesignators = new CourseDesignator[] { CourseDesignator.AllControls, new CourseDesignator(new Id <Course>(2), 1), new CourseDesignator(new Id <Course>(3)), new CourseDesignator(new Id <Course>(6)) };
 }
Exemple #6
0
        // Create highlights to and from a point to course controls. If controlDrag is set (optional), it is
        // used to get the correct bends for legs.
        // Static because it is used from DragControlMode also.
        public static CourseObj[] CreateLegHighlights(EventDB eventDB, PointF newPoint, Id <ControlPoint> controlDrag, ControlPointKind controlKind, Id <CourseControl> courseControlId1, Id <CourseControl> courseControlId2, float courseObjRatio, CourseAppearance appearance)
        {
            List <CourseObj> highlights = new List <CourseObj>();

            if (courseControlId1.IsNotNone)
            {
                Id <ControlPoint> controlId1 = eventDB.GetCourseControl(courseControlId1).control;
                ControlPoint      control1   = eventDB.GetControl(controlId1);
                LegCourseObj      highlight  = CreateLegHighlight(eventDB, control1.location, control1.kind, controlId1, newPoint, controlKind, controlDrag, courseObjRatio, appearance);
                if (highlight != null)
                {
                    highlights.Add(highlight);
                }
            }

            if (courseControlId2.IsNotNone)
            {
                Id <ControlPoint> controlId2 = eventDB.GetCourseControl(courseControlId2).control;
                ControlPoint      control2   = eventDB.GetControl(controlId2);
                LegCourseObj      highlight  = CreateLegHighlight(eventDB, newPoint, controlKind, controlDrag, control2.location, control2.kind, controlId2, courseObjRatio, appearance);
                if (highlight != null)
                {
                    highlights.Add(highlight);
                }
            }

            return(highlights.ToArray());
        }
Exemple #7
0
        CourseLayout activeTopologyCourseLayout;            // The active topology

        public SelectionMgr(EventDB eventDB, SymbolDB symbolDB, Controller controller)
        {
            this.eventDB = eventDB;
            this.symbolDB = symbolDB;
            this.controller = controller;
            this.activeCourseDesignator = CourseDesignator.AllControls;
        }
Exemple #8
0
        public void Event()
        {
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);

            Event e = eventDB.GetEvent();

            Assert.AreEqual(e.title, "");
            Assert.AreEqual(e.notes, null);
            Assert.AreEqual(e.mapType, MapType.None);

            Event e2 = new Event();

            e2.title       = "Hello";
            e2.notes       = "These are my notes";
            e2.mapType     = MapType.OCAD;
            e2.mapFileName = "C:\\hello.ocad";

            undomgr.BeginCommand(198, "change event");
            eventDB.ChangeEvent(e2);
            undomgr.EndCommand(198);

            e = eventDB.GetEvent();
            Assert.AreEqual(e2, e);
        }
        public void OldStyleCustomText()
        {
            TestLoadFile("compatibility\\customtext.ppen");

            // Make sure the custom text is right.
            EventDB eventDB = controller.GetEventDB();
            Event   ev      = eventDB.GetEvent();

            Assert.AreEqual(5, ev.customSymbolKey.Count);
            Assert.AreEqual(5, ev.customSymbolText.Count);

            Assert.AreEqual(true, ev.customSymbolKey["6.1"]);
            Assert.AreEqual(true, ev.customSymbolKey["5.6"]);
            Assert.AreEqual(false, ev.customSymbolKey["8.7"]);

            Assert.AreEqual(1, ev.customSymbolText["6.2"].Count);
            Assert.AreEqual("en", ev.customSymbolText["6.2"][0].Lang);
            Assert.AreEqual(false, ev.customSymbolText["6.2"][0].Plural);
            Assert.AreEqual("", ev.customSymbolText["6.2"][0].Gender);
            Assert.AreEqual("playground equipment", ev.customSymbolText["6.2"][0].Text);

            Assert.AreEqual(1, ev.customSymbolText["8.7"].Count);
            Assert.AreEqual("en", ev.customSymbolText["8.7"][0].Lang);
            Assert.AreEqual(false, ev.customSymbolText["8.7"][0].Plural);
            Assert.AreEqual("", ev.customSymbolText["8.7"][0].Gender);
            Assert.AreEqual("wet {0}", ev.customSymbolText["8.7"][0].Text);
        }
Exemple #10
0
        public JsonResult SaveEvent(Event e)
        {
            var status = false;

            using (EventDB dc = new EventDB())
            {
                if (e.EventID > 0)
                {
                    //Update the event
                    var v = dc.Events.Where(a => a.EventID == e.EventID).FirstOrDefault();
                    if (v != null)
                    {
                        v.Subject     = e.Subject;
                        v.Start       = e.Start;
                        v.End         = e.End;
                        v.Description = e.Description;
                        v.IsFullDay   = e.IsFullDay;
                        v.ThemeColor  = e.ThemeColor;
                    }
                }
                else
                {
                    dc.Events.Add(e);
                }

                dc.SaveChanges();
                status = true;
            }
            return(new JsonResult {
                Data = new { status = status }
            });
        }
        public void ClearTextAndSymbols()
        {
            UndoMgr      undomgr = new UndoMgr(5);
            EventDB      eventDB = new EventDB(undomgr);
            SymbolDB     symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            StringWriter writer = new StringWriter();
            string       actual, expected;

            eventDB.Load(TestUtil.GetTestFile("descformatter\\sampleevent1.coursescribe"));
            eventDB.Validate();

            CourseView           courseView    = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(4)));
            DescriptionFormatter descFormatter = new DescriptionFormatter(courseView, symbolDB, DescriptionFormatter.Purpose.ForPrinting);

            DescriptionLine[] description = descFormatter.CreateDescription(false);
            DescriptionFormatter.ClearTextAndSymbols(description);

            DescriptionFormatter.DumpDescription(symbolDB, description, writer);
            actual   = writer.ToString();
            expected =
                @"      |                                               |
      |                 |                 |           |
(  1) |     |     |     |     |     |     |     |     |
( 11) |     |     |     |     |     |     |     |     |
( 22) |                     :                         |
(  4) |     |     |     |     |     |     |     |     |
( 15) |                     :                         |
(  5) |     |     |     |     |     |     |     |     |
( 18) |     |     |     |     |     |     |     |     |
(  6) |                     :                         |
";
            Assert.AreEqual(expected, actual);
        }
Exemple #12
0
    public Structure(string name, Vector3 location, Random random, Module module) : base(name, location, random)
    {
        base.type = PointOfInterestType.Structure;

        _module = module;
        _event  = EventDB.GetByName(name);
    }
Exemple #13
0
        public void EventsSetup()
        {
            EventDB eventDB = new EventDB();

            string[] events = eventDB.GetCurrentEvents();
            if (events != null)
            {
                for (int x = 0; x < events.GetLength(0); x++)
                {
                    ComboBoxItem newEvent = new ComboBoxItem()
                    {
                        Content = events[x], Tag = events[x]
                    };
                    cbo_EventChoice.Items.Add(newEvent);
                }

                if (events.GetLength(0) == 1)
                {
                    cbo_EventChoice.SelectedItem = cbo_EventChoice.Items[0];
                }
            }
            else
            {
                ExitToLogin();
            }
        }
 public DescriptionPrinting(EventDB eventDB, SymbolDB symbolDB, Controller controller, DescriptionPrintSettings descPrintSettings)
     : base(QueryEvent.GetEventTitle(eventDB, " "), controller, descPrintSettings.PageSettings, descPrintSettings.BoxSize, descPrintSettings.CountKind, descPrintSettings.Count)
 {
     this.eventDB           = eventDB;
     this.symbolDB          = symbolDB;
     this.descPrintSettings = descPrintSettings;
 }
Exemple #15
0
        public void Files_Relay_SingleFile()
        {
            EventDB  eventDB  = controller.GetEventDB();
            SymbolDB symbolDB = ui.symbolDB;

            CoursePdfSettings settings = new CoursePdfSettings();

            settings.mapDirectory              = settings.fileDirectory = false;
            settings.outputDirectory           = TestUtil.GetTestFile("controller\\pdf_create1");
            settings.CourseIds                 = new Id <Course>[] { CourseId(2), Id <Course> .None };
            settings.ColorModel                = ColorModel.CMYK;
            settings.CropLargePrintArea        = true;
            settings.FileCreation              = CoursePdfSettings.PdfFileCreation.SingleFile;
            settings.PrintMapExchangesOnOneMap = false;

            bool success = controller.LoadInitialFile(TestUtil.GetTestFile("controller\\variations.ppen"), true);

            Assert.IsTrue(success);

            var coursePdf     = new CoursePdf(eventDB, symbolDB, controller, controller.MapDisplay, settings, new CourseAppearance());
            var filesToCreate = coursePdf.GetFilesToCreate();

            VariationInfo[] relayVariations = QueryEvent.GetAllVariations(eventDB, CourseId(2)).ToArray();

            Assert.AreEqual(1, filesToCreate.Count);

            Assert.AreEqual(TestUtil.GetTestFile("controller\\pdf_create1\\variations.pdf"), filesToCreate[0].First);
            CollectionAssert.AreEqual(new CourseDesignator[] {
                new CourseDesignator(CourseId(2), relayVariations[0]),
                new CourseDesignator(CourseId(2), relayVariations[1]),
                new CourseDesignator(CourseId(2), relayVariations[2]),
                new CourseDesignator(CourseId(2), relayVariations[3]),
                CourseDesignator.AllControls
            }, filesToCreate[0].Second.ToList());
        }
Exemple #16
0
        public SelectVariations(EventDB eventDB, Id <Course> courseId)
        {
            InitializeComponent();

            this.eventDB  = eventDB;
            this.courseId = courseId;

            Course course = eventDB.GetCourse(courseId);

            if (course.relaySettings.relayTeams > 0)
            {
                firstTeam = course.relaySettings.firstTeamNumber;
                lastTeam  = firstTeam + course.relaySettings.relayTeams - 1;
            }
            else
            {
                firstTeam = lastTeam = null;
            }

            comboBoxVariations.SelectedIndex = 0;
            if (firstTeam.HasValue && lastTeam.HasValue)
            {
                upDownFirstTeam.Maximum = upDownLastTeam.Maximum = lastTeam.Value;
                upDownFirstTeam.Minimum = upDownLastTeam.Minimum = firstTeam.Value;
                upDownFirstTeam.Value   = firstTeam.Value;
                upDownLastTeam.Value    = lastTeam.Value;

                labelNumberOfTeams.Text = string.Format(labelNumberOfTeams.Text, (lastTeam.Value - firstTeam.Value) + 1);
            }

            UpdateControls();
        }
Exemple #17
0
        public void SpecialLegs()
        {
            UndoMgr      undomgr = new UndoMgr(5);
            EventDB      eventDB = new EventDB(undomgr);
            SymbolDB     symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            StringWriter writer = new StringWriter();
            string       actual, expected;

            eventDB.Load(TestUtil.GetTestFile("courseview\\speciallegs.coursescribe"));
            eventDB.Validate();

            CourseView courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(1)));

            DumpCourseView(courseView, writer);
            actual   = writer.ToString();
            expected =
                @"Name='Leggy', Kind='Normal', CourseId=1
Total Length=2242.8  Part Length=2242.8  Total Climb=-1  ScoreColumn=-1  Total Score=0  Total Controls=4
 0: [ 0] Ids:  1,  1
    Legs: (Next:1,Id:0,length:515.84)  
 1: [ 1] Ids:  2,  2
    Legs: (Next:2,Id:2,length:420.12)  
 2: [ 2] Ids:  3,  3
    Legs: (Next:3,Id:3,length:377.54)  
 3: [ 3] Ids:  4,  4
    Legs: (Next:4,Id:4,length:518.8)  
 4: [ 4] Ids:  5,  5
    Legs: (Next:5,Id:0,length:410.45)  
 5: [-1] Ids:  6,  6
";
            Assert.AreEqual(expected, actual);
        }
Exemple #18
0
        public void DisplayAllCourseViews()
        {
            UndoMgr  undomgr  = new UndoMgr(5);
            EventDB  eventDB  = new EventDB(undomgr);
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));

            eventDB.Load(TestUtil.GetTestFile("courseview\\sampleevent1.coursescribe"));
            eventDB.Validate();

            foreach (Id <Course> courseId in QueryEvent.SortedCourseIds(eventDB))
            {
                CourseDesignator designator;
                if (QueryEvent.HasVariations(eventDB, courseId))
                {
                    var variationInfo = QueryEvent.GetAllVariations(eventDB, courseId).First();
                    designator = new CourseDesignator(courseId, variationInfo);
                }
                else
                {
                    designator = new CourseDesignator(courseId);
                }

                CourseView courseView = CourseView.CreateViewingCourseView(eventDB, designator);
                DumpCourseView(courseView, Console.Out);
                Console.WriteLine();
            }
        }
 public CourseSelectorTestForm(EventDB eventDB)
 {
     InitializeComponent();
     this.courseSelector1.EventDB = eventDB;
     this.courseSelector1.ShowAllControls = true;
     this.courseSelector1.SelectedCourseDesignators = new CourseDesignator[] { CourseDesignator.AllControls, new CourseDesignator(new Id<Course>(2), 1), new CourseDesignator(new Id<Course>(3)), new CourseDesignator(new Id<Course>(6)) };
 }
        // Get the text name for a control.
        private static string SpecialName(EventDB eventDB, Id <Special> specialId)
        {
            Special special = eventDB.GetSpecial(specialId);

            // Resources have the name "SpecialKind_xxx" where "xxx" is the enumeration name.
            return(SelectionDescriptionText.ResourceManager.GetString("SpecialName_" + special.kind.ToString()));
        }
Exemple #21
0
        private void EditEventNoDiscount()
        {
            EventDB db = new EventDB();

            if (cmb_PriceType.SelectedIndex == 0 && cmb_Occurence.SelectedIndex == 0)
            {
                db.HourlyPriceAlwaysAvailable(txt_EventName.Text, Convert.ToDouble(txt_Rate.Text), this.oldEventName);
            }
            else if (cmb_PriceType.SelectedIndex == 1 && cmb_Occurence.SelectedIndex == 0)
            {
                db.DailyPriceAlwaysAvailable(txt_EventName.Text, Convert.ToDouble(txt_Rate.Text), this.oldEventName);
            }
            else if (cmb_PriceType.SelectedIndex == 0 && cmb_Occurence.SelectedIndex == 1)
            {
                db.HourlyPriceSpecificDay(txt_EventName.Text, Convert.ToDouble(txt_Rate.Text), Convert.ToInt32(txt_MonthNum.Text), Convert.ToInt32(txt_DayOfMonth.Text), this.oldEventName);
            }
            else if (cmb_PriceType.SelectedIndex == 1 && cmb_Occurence.SelectedIndex == 1)
            {
                db.DailyPriceSpecificDay(txt_EventName.Text, Convert.ToDouble(txt_Rate.Text), Convert.ToInt32(txt_MonthNum.Text), Convert.ToInt32(txt_DayOfMonth.Text), this.oldEventName);
            }
            else if (cmb_PriceType.SelectedIndex == 0 && cmb_Occurence.SelectedIndex == 2)
            {
                db.HourlyPriceWeeklyOcur(txt_EventName.Text, Convert.ToDouble(txt_Rate.Text), ((ComboBoxItem)cmb_DayName.SelectedItem).Content.ToString(), this.oldEventName);
            }
            else if (cmb_PriceType.SelectedIndex == 1 && cmb_Occurence.SelectedIndex == 2)
            {
                db.DailyPriceWeeklyOcur(txt_EventName.Text, Convert.ToDouble(txt_Rate.Text), ((ComboBoxItem)cmb_DayName.SelectedItem).Content.ToString(), this.oldEventName);
            }
        }
        // Describe the symbol key
        private static TextPart[] DescribeKey(EventDB eventDB)
        {
            List <TextPart> list = new List <TextPart>();

            list.Add(new TextPart(TextFormat.Title, SelectionDescriptionText.CustomizedSymbolDesc));
            return(list.ToArray());
        }
Exemple #23
0
        private void LoadEvents()
        {
            EventDB   eventDB = new EventDB();
            DataTable table   = eventDB.GetEventDisplay();

            EventViewDataGrid.ItemsSource = table.DefaultView;
        }
        // Determine the type of flagging
        private static string FlaggingType(EventDB eventDB, Id <ControlPoint> controlId1, Id <ControlPoint> controlId2, Id <Leg> legId)
        {
            string       flaggingType = SelectionDescriptionText.None;
            FlaggingKind kind         = QueryEvent.GetLegFlagging(eventDB, controlId1, controlId2, legId);

            switch (kind)
            {
            case FlaggingKind.All: flaggingType = SelectionDescriptionText.EntireLeg; break;

            case FlaggingKind.Begin: flaggingType = SelectionDescriptionText.AwayFromControl; break;

            case FlaggingKind.End: flaggingType = SelectionDescriptionText.IntoControl; break;
            }

            // We use slightly different wording based on the finish control.
            ControlPoint ending = eventDB.GetControl(controlId2);

            if (ending.kind == ControlPointKind.Finish)
            {
                // finish control can influence flagging!
                if (ending.symbolIds[0] == "14.2" && kind == FlaggingKind.None)
                {
                    flaggingType = SelectionDescriptionText.FinishFunnel;
                }
                else if (ending.symbolIds[0] == "14.2" && kind == FlaggingKind.End)
                {
                    flaggingType = SelectionDescriptionText.IntoFinishFunnel;
                }
            }

            return(flaggingType);
        }
 public void Execute(object parameter)
 {
     if (((EventsReminderViewModel)parameter).EditSmtpClientButton_Click())
     {
         ((EventsReminderViewModel)parameter).Refresh(EventDB.selectAll());
     }
 }
 // Describe the selection, and return an array of TextParts for display in the UI.
 public static TextPart[] DescribeSelection(SymbolDB symbolDB, EventDB eventDB, CourseView activeCourseView, SelectionMgr.SelectionInfo selection)
 {
     if (selection.SelectionKind == SelectionMgr.SelectionKind.Key)
     {
         return(DescribeKey(eventDB));
     }
     else if (selection.SelectionKind == SelectionMgr.SelectionKind.TextLine)
     {
         return(DescribeTextLine(eventDB, selection.SelectedControl, selection.SelectedTextLineKind));
     }
     else if (selection.SelectionKind == SelectionMgr.SelectionKind.Control)
     {
         return(DescribeControlPoint(symbolDB, eventDB, selection.SelectedControl, DescKind.DescPane));
     }
     else if (selection.SelectionKind == SelectionMgr.SelectionKind.Leg)
     {
         return(DescribeLeg(eventDB, selection.SelectedCourseControl, selection.SelectedCourseControl2, DescKind.DescPane));
     }
     else if (selection.SelectionKind == SelectionMgr.SelectionKind.Special)
     {
         return(DescribeSpecial(eventDB, selection.SelectedSpecial, activeCourseView.ScaleRatio, DescKind.DescPane));
     }
     else if (selection.SelectionKind == SelectionMgr.SelectionKind.MapExchangeAtControl)
     {
         return(DescribeMapExchangeAtControl(eventDB, selection.SelectedControl));
     }
     else if (selection.ActiveCourseDesignator.IsNotAllControls)
     {
         return(DescribeCourse(eventDB, activeCourseView));
     }
     else
     {
         return(DescribeAllControls(eventDB, activeCourseView));
     }
 }
Exemple #27
0
        public void HasChanged()
        {
            UndoMgr undomgr   = new UndoMgr(5);
            EventDB eventDB   = new EventDB(undomgr);
            long    changeNum = 0;

            Assert.IsTrue(changeNum < eventDB.ChangeNum);
            changeNum = eventDB.ChangeNum;

            undomgr.BeginCommand(61, "Command1");

            ControlPoint ctl1 = new ControlPoint(ControlPointKind.Start, null, new PointF(5, 0));

            ctl1.symbolIds[1] = "2.8";
            ctl1.symbolIds[2] = "8.5";
            eventDB.AddControlPoint(ctl1);

            undomgr.EndCommand(61);

            Assert.IsTrue(changeNum < eventDB.ChangeNum);
            changeNum = eventDB.ChangeNum;

            eventDB = new EventDB(undomgr);

            Assert.IsTrue(changeNum != eventDB.ChangeNum);
            changeNum = eventDB.ChangeNum;

            eventDB = new EventDB(undomgr);

            Assert.IsTrue(changeNum != eventDB.ChangeNum);
            changeNum = eventDB.ChangeNum;
        }
Exemple #28
0
        public void WriteFullXml(string filename, RelayVariations relayVariations, EventDB eventDB, Id <Course> courseId)
        {
            this.relayVariations  = relayVariations;
            this.eventDB          = eventDB;
            this.courseId         = courseId;
            this.modificationDate = DateTimeOffset.Now;
            this.courseName       = eventDB.GetCourse(courseId).name;

            // Create the XML writer.
            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Indent   = true;
            settings.Encoding = new UTF8Encoding(false);
            xmlWriter         = XmlWriter.Create(filename, settings);

            WriteStart();

            WriteAllTeams();

            WriteEnd();

            // And done.
            xmlWriter.Close();
            eventDB   = null;
            xmlWriter = null;
        }
        public void CourseEquals()
        {
            SymbolDB     symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr      undomgr = new UndoMgr(5);
            EventDB      eventDB = new EventDB(undomgr);
            CourseView   courseView, courseView2;
            CourseLayout course, course2;

            eventDB.Load(TestUtil.GetTestFile("courselayout\\marymoor1.coursescribe"));
            eventDB.Validate();

            // Create the a course view and layout
            courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(3)));
            course     = new CourseLayout();
            course.SetLayerColor(CourseLayer.Descriptions, 0, "Black", 0, 0, 0, 1F, false);
            course.SetLayerColor(CourseLayer.MainCourse, 12, "Purple", 0.2F, 1, 0, 0.1F, false);
            CourseFormatter.FormatCourseToLayout(symbolDB, courseView, defaultCourseAppearance, course, CourseLayer.MainCourse);

            // Create it again
            courseView2 = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(3)));
            course2     = new CourseLayout();
            course2.SetLayerColor(CourseLayer.Descriptions, 0, "Black", 0, 0, 0, 1F, false);
            course2.SetLayerColor(CourseLayer.MainCourse, 12, "Purple", 0.2F, 1, 0, 0.1F, false);
            CourseFormatter.FormatCourseToLayout(symbolDB, courseView2, defaultCourseAppearance, course2, CourseLayer.MainCourse);

            // Make sure that they are equal.
            Assert.AreEqual(course, course, "CourseLayouts that are equivalent should compare equal.");
            Assert.AreEqual(course, course2, "CourseLayouts that are equivalent should compare equal.");
        }
Exemple #30
0
 public DefaultMode(Controller controller, EventDB eventDB, SymbolDB symbolDB, SelectionMgr selectionMgr)
 {
     this.controller   = controller;
     this.eventDB      = eventDB;
     this.symbolDB     = symbolDB;
     this.selectionMgr = selectionMgr;
 }
        // CONSDER: shouldn't take an eventDB. Should instead take a pair of CourseViewData/name or some such.
        public CreatePdfCourses(EventDB eventDB, bool enableMultipart)
        {
            InitializeComponent();
            courseSelector.EventDB = eventDB;

            checkBoxMergeParts.Visible = enableMultipart;
        }
Exemple #32
0
        private bool EventNameValid(string eventName)
        {
            EventDB eventDB = new EventDB();

            if (eventName.Length < 1)
            {
                WPFMessageBox.Show("You must enter an event name.");
                return(false);
            }
            if (eventName.Length > 50)
            {
                WPFMessageBox.Show("Event names may not be longer than 50 characters.");
                return(false);
            }
            if (!RegExpressions.RegexValidateEventName(eventName))
            {
                WPFMessageBox.Show("Event names may only contain letters and spaces.");
                return(false);
            }
            if ((eventDB.EventNameExists(eventName) && this.oldEventName == null) ||
                (this.oldEventName != null && this.txt_EventName.Text != this.oldEventName && eventDB.EventNameExists(eventName)))
            {
                WPFMessageBox.Show("The event name you have entered already exists.");
                return(false);
            }
            return(true);
        }
	public DBManager(){
		mainDB = new MainDB ();
		supervillainsDB = new SupervillainsDB ();
		schoolClassDB = new SchoolClassDB ();
		buildingDB = new BuildingDB (schoolClassDB);
		researchDB = new ResearchDB ();
		superHeroesDB = new SuperheroesDB ();
		superPowersDB = new SuperPowersDB();
		eventDB = new EventDB();
	}
        public void AllControlsCourseView()
        {
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            StringWriter writer = new StringWriter();
            string actual, expected;

            eventDB.Load(TestUtil.GetTestFile("courseview\\sampleevent1.coursescribe"));
            eventDB.Validate();

            CourseView courseView = CourseView.CreateViewingCourseView(eventDB, CourseDesignator.AllControls);
            DumpCourseView(courseView, writer);
            actual = writer.ToString();
            expected =
            @"Name='All controls', Kind='AllControls', CourseId=0
            Total Length=0  Part Length=0  Total Climb=-1  ScoreColumn=-1  Total Score=0  Total Controls=17
             0: [-1] Ids:  1,  0
             1: [-1] Ids: 23,  0
             2: [-1] Ids:  2,  0
             3: [-1] Ids:  4,  0
             4: [-1] Ids: 12,  0
             5: [-1] Ids:  7,  0
             6: [-1] Ids: 10,  0
             7: [-1] Ids: 11,  0
             8: [-1] Ids:  8,  0
             9: [-1] Ids:  9,  0
            10: [-1] Ids: 13,  0
            11: [-1] Ids: 14,  0
            12: [-1] Ids: 16,  0
            13: [-1] Ids: 17,  0
            14: [-1] Ids: 18,  0
            15: [-1] Ids: 19,  0
            16: [-1] Ids: 20,  0
            17: [-1] Ids: 21,  0
            18: [-1] Ids:  5,  0
            19: [-1] Ids:  6,  0
            20: [-1] Ids: 24,  0
            21: [-1] Ids:  3,  0
            22: [-1] Ids: 15,  0
            23: [-1] Ids: 22,  0
            Special 1 (FirstAid)
            Special 2 (OptCrossing)
            Special 3 (Boundary)
            Special 4 (OOB)
            Special 5 (Text)
            ";
            Assert.AreEqual(expected, actual);
        }
Exemple #35
0
        public void Initialize(EventDB eventDB, SymbolDB symbolDB)
        {
            eventDB.Validate();

            this.eventDB = eventDB;
            this.symbolDB = symbolDB;
            descriptionControl1.SymbolDB = symbolDB;

            listBoxCourses.Items.Add(new CourseItem(eventDB, Id<Course>.None));
            foreach (Id<Course> courseId in QueryEvent.SortedCourseIds(eventDB)) {
                listBoxCourses.Items.Add(new CourseItem(eventDB, courseId));
            }

            listBoxCourses.SelectedIndex = 0;
        }
        // Get the file name for a bitmap description for testing purposes. CourseID == 0 means all controls. Extra
        // is an extra string to suffix to the base name. Does not end in .png unless specified in extra.
        public static string GetBitmapFileName(EventDB eventDB, Id<Course> courseId, string extra, DescriptionKind kind)
        {
            Course course = null;
            string name;

            if (courseId.IsNotNone)
                course = eventDB.GetCourse(courseId);

            if (course != null)
                name = course.name;
            else
                name = "Allcontrols";

            name = "descriptions\\" + name + "_" + kind.ToString() + extra;

            return name;
        }
Exemple #37
0
        public void Event()
        {
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);

            Event e = eventDB.GetEvent();
            Assert.AreEqual(e.title, "");
            Assert.AreEqual(e.notes, null);
            Assert.AreEqual(e.mapType, MapType.None);

            Event e2 = new Event();
            e2.title = "Hello";
            e2.notes = "These are my notes";
            e2.mapType = MapType.OCAD;
            e2.mapFileName = "C:\\hello.ocad";

            undomgr.BeginCommand(198, "change event");
            eventDB.ChangeEvent(e2);
            undomgr.EndCommand(198);

            e = eventDB.GetEvent();
            Assert.AreEqual(e2, e);
        }
        public void ExpandTextMapExchange()
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            CourseView courseView;

            // Map Exchange
            eventDB.Load(TestUtil.GetTestFile("courseformat\\mapexchange1.ppen"));
            eventDB.Validate();

            courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(6)));

            string result;

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CourseName)");
            Assert.AreEqual("Course 5", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CoursePart)");
            Assert.AreEqual("", result);

            courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(6), 0));
            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CourseName)");
            Assert.AreEqual("Course 5", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CoursePart)");
            Assert.AreEqual("1", result);

            courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(6), 3));
            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CourseName)");
            Assert.AreEqual("Course 5", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CoursePart)");
            Assert.AreEqual("4", result);
        }
        public void ExpandTextRelay()
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            CourseView courseView;
            string result;

            eventDB.Load(TestUtil.GetTestFile("queryevent\\variations.ppen"));
            eventDB.Validate();

            // Use course 1
            List<VariationInfo> variations = QueryEvent.GetAllVariations(eventDB, CourseId(1)).ToList();

            courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(1), variations[0]));
            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CourseName)");
            Assert.AreEqual("Course 1", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(Variation)");
            Assert.AreEqual("ACDEFH", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(RelayTeam)");
            Assert.AreEqual("--", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(RelayLeg)");
            Assert.AreEqual("-", result);

            CourseDesignator designator = QueryEvent.EnumerateCourseDesignators(eventDB,
                new[] { CourseId(1) },
                new Dictionary<Id<Course>, VariationChoices>() { { CourseId(1), new VariationChoices() { Kind = VariationChoices.VariationChoicesKind.ChosenTeams, FirstTeam = 4, LastTeam = 6 } } },
                true).Skip(1).First();
            courseView = CourseView.CreateViewingCourseView(eventDB, designator);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CourseName)");
            Assert.AreEqual("Course 1", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(Variation)");
            Assert.AreEqual("ADEFCH", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(RelayTeam)");
            Assert.AreEqual("4", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(RelayLeg)");
            Assert.AreEqual("2", result);
        }
        public void Initialize(EventDB eventDB, SymbolDB symbolDB)
        {
            this.symbolDB = symbolDB;
            this.eventDB = eventDB;
            eventDB.Validate();

            popup = new SymbolPopup(symbolDB, 26);
            popup.Selected += PopupSelected;
            popup.Canceled += PopupCanceled;
            descriptionRenderer = new DescriptionRenderer(symbolDB);

            listBoxCourses.Items.Add(new CourseItem(eventDB, Id<Course>.None));
            foreach (Id<Course> courseId in QueryEvent.SortedCourseIds(eventDB)) {
                listBoxCourses.Items.Add(new CourseItem(eventDB, courseId));
            }

            comboBoxKind.SelectedIndex = 0;
            listBoxCourses.SelectedIndex = 0;
        }
        public void ExpandText()
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            CourseView courseView;

            eventDB.Load(TestUtil.GetTestFile("courseformat\\marymoor6.coursescribe"));
            eventDB.Validate();

            // Use course 1
            courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(1)));

            string result;

            result = CourseFormatter.ExpandText(eventDB, courseView, "Simple text");
            Assert.AreEqual("Simple text", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$10 bill < $20 bill");
            Assert.AreEqual("$10 bill < $20 bill", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "");
            Assert.AreEqual("", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CourseName)");
            Assert.AreEqual("Course 1", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CoursePart)");
            Assert.AreEqual("", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(EventTitle): $(CourseName)");
            Assert.AreEqual("Marymoor WIOL 2 The remake: Course 1", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "Course: $(CourseName) Length: $(CourseLength) km Scale: $(PrintScale)");
            Assert.AreEqual("Course: Course 1 Length: 1.5 km Scale: 1:7,500", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "Course: $(CourseName) Climb: $(CourseClimb) m");
            Assert.AreEqual("Course: Course 1 Climb: 20 m", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CourseName) / $(ClassList)");
            Assert.AreEqual("Course 1 / This is cool very cool", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(Variation)");
            Assert.AreEqual("", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(RelayTeam)");
            Assert.AreEqual("--", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(RelayLeg)");
            Assert.AreEqual("-", result);

            // All Controls
            courseView = CourseView.CreateViewingCourseView(eventDB, CourseDesignator.AllControls);

            result = CourseFormatter.ExpandText(eventDB, courseView, "Course: $(CourseName) Length: $(CourseLength) km Scale: $(PrintScale)");
            Assert.AreEqual("Course: All controls Length: 0.0 km Scale: 1:10,000", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CourseName) / $(ClassList)");
            Assert.AreEqual("All controls / ", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(CoursePart)");
            Assert.AreEqual("", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(Variation)");
            Assert.AreEqual("", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(RelayTeam)");
            Assert.AreEqual("--", result);

            result = CourseFormatter.ExpandText(eventDB, courseView, "$(RelayLeg)");
            Assert.AreEqual("-", result);
        }
        // Render the given course id (0 = all controls) and kind to a bitmap, and compare it to the saved version.
        internal void CheckRenderBitmap(string filename, Id<Course> id, PunchcardFormat format)
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            CourseView courseView;

            eventDB.Load(filename);
            eventDB.Validate();

            courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(id));

            Bitmap bmNew = RenderToBitmap(eventDB, courseView, format);
            TestUtil.CheckBitmapsBase(bmNew, GetBitmapFileName(eventDB, id, ""));
        }
 public void Setup()
 {
     undomgr = new UndoMgr(5);
     eventDB = new EventDB(undomgr);
     symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
     eventDB.Load(TestUtil.GetTestFile("textifier\\sampleevent1.coursescribe"));
     eventDB.Validate();
 }
        public void HitTestRegular()
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            eventDB.Load(TestUtil.GetTestFile("descriptions\\sampleevent1.coursescribe"));
            eventDB.Validate();
            CourseView courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(4)));
            DescriptionFormatter descFormatter = new DescriptionFormatter(courseView, symbolDB);
            DescriptionLine[] description = descFormatter.CreateDescription(false);
            DescriptionRenderer descriptionRenderer = new DescriptionRenderer(symbolDB);
            descriptionRenderer.Description = description;
            descriptionRenderer.CellSize = 40;
            descriptionRenderer.Margin = 5;

            descriptionRenderer.DescriptionKind = DescriptionKind.Symbols;

            CheckHitTest(descriptionRenderer, new Point(201,36), HitTestKind.Title, 0, 0, 0, new RectangleF(5, 5, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(79,50), HitTestKind.Header, 1, 1, 0, new RectangleF(5, 45, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(145,80), HitTestKind.Header, 1, 1, 1, new RectangleF(125, 45, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(289, 60), HitTestKind.Header, 1, 1, 2, new RectangleF(245, 45, 80, 40));
            CheckHitTest(descriptionRenderer, new Point(175,216), HitTestKind.NormalBox, 5, 5,4, new RectangleF(165,205, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(285,365), HitTestKind.NormalBox, 9, 9,7, new RectangleF(285, 365, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(81,193), HitTestKind.Directive, 4, 4,0, new RectangleF(5,165, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(328,147), HitTestKind.None, -1, -1, -1, new RectangleF(0, 0, 0, 0));
            CheckHitTest(descriptionRenderer, new Point(255, 427), HitTestKind.OtherTextLine, 10, 10, 0, new RectangleF(5, 405, 320, 40));

            descriptionRenderer.DescriptionKind = DescriptionKind.Text;
            CheckHitTest(descriptionRenderer, new Point(201, 36), HitTestKind.Title, 0, 0, 0, new RectangleF(5, 5, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(79, 50), HitTestKind.Header, 1, 1, 0, new RectangleF(5, 45, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(145, 80), HitTestKind.Header, 1, 1, 1, new RectangleF(125, 45, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(289, 60), HitTestKind.Header, 1, 1, 2, new RectangleF(245, 45, 80, 40));
            CheckHitTest(descriptionRenderer, new Point(175, 216), HitTestKind.NormalText, 5, 5, -1, new RectangleF(85, 205, 240, 40));
            CheckHitTest(descriptionRenderer, new Point(285, 365), HitTestKind.NormalText, 9, 9, -1, new RectangleF(85, 365, 240, 40));
            CheckHitTest(descriptionRenderer, new Point(59, 302), HitTestKind.NormalBox, 7, 7, 1, new RectangleF(45,285, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(81, 193), HitTestKind.DirectiveText, 4, 4, -1, new RectangleF(5, 165, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(328, 147), HitTestKind.None, -1, -1, -1, new RectangleF(0, 0, 0, 0));
            CheckHitTest(descriptionRenderer, new Point(255, 427), HitTestKind.OtherTextLine, 10, 10, 0, new RectangleF(5, 405, 320, 40));

            descriptionRenderer.DescriptionKind = DescriptionKind.SymbolsAndText;
            CheckHitTest(descriptionRenderer, new Point(201, 36), HitTestKind.Title, 0, 0, 0, new RectangleF(5, 5, 520, 40));
            CheckHitTest(descriptionRenderer, new Point(79, 50), HitTestKind.Header, 1, 1, 0, new RectangleF(5, 45, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(145, 80), HitTestKind.Header, 1, 1, 1, new RectangleF(125, 45, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(289, 60), HitTestKind.Header, 1, 1, 2, new RectangleF(245, 45, 80, 40));
            CheckHitTest(descriptionRenderer, new Point(175, 216), HitTestKind.NormalBox, 5, 5, 4, new RectangleF(165, 205, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(285, 365), HitTestKind.NormalBox, 9, 9, 7, new RectangleF(285, 365, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(81, 193), HitTestKind.Directive, 4, 4, 0, new RectangleF(5, 165, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(431, 56), HitTestKind.None, 1, 1, -1, new RectangleF(325, 45, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(333, 131), HitTestKind.NormalText, 3, 3, -1, new RectangleF(325, 125, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(491,252), HitTestKind.DirectiveText, 6, 6, -1, new RectangleF(325, 245, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(527,433), HitTestKind.None, -1, -1, -1, new RectangleF(0, 0, 0, 0));
            CheckHitTest(descriptionRenderer, new Point(255, 427), HitTestKind.OtherTextLine, 10, 10, 0, new RectangleF(5, 405, 520, 40));
        }
        // Get the file name for a bitmap description for testing purposes. CourseID == 0 means all controls. Extra
        // is an extra string to suffix to the base name. Does not end in .png unless specified in extra.
        internal static string GetBitmapFileName(EventDB eventDB, Id<Course> courseId, string extra)
        {
            Course course = null;
            string name;

            if (courseId.IsNotNone)
                course = eventDB.GetCourse(courseId);

            if (course != null)
                name = course.name;
            else
                name = "Allcontrols";

            name = "punchcards\\" + name + extra;

            return name;
        }
        public void HitTestAllControls()
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            eventDB.Load(TestUtil.GetTestFile("descriptions\\sampleevent1.coursescribe"));
            eventDB.Validate();
            CourseView courseView = CourseView.CreateViewingCourseView(eventDB, CourseDesignator.AllControls);
            DescriptionFormatter descFormatter = new DescriptionFormatter(courseView, symbolDB);
            DescriptionLine[] description = descFormatter.CreateDescription(false);
            DescriptionRenderer descriptionRenderer = new DescriptionRenderer(symbolDB);
            descriptionRenderer.Description = description;
            descriptionRenderer.CellSize = 40;
            descriptionRenderer.Margin = 5;

            descriptionRenderer.DescriptionKind = DescriptionKind.Symbols;

            CheckHitTest(descriptionRenderer, new Point(143, 22), HitTestKind.Title, 0, 0, 0, new RectangleF(5, 5, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(116, 53), HitTestKind.Header, 1, 1, 0, new RectangleF(5, 45, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(259,78), HitTestKind.Header, 1, 1, 1, new RectangleF(125, 45, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(38,97), HitTestKind.NormalBox, 2, 2, 0, new RectangleF(5,85, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(226,260), HitTestKind.NormalBox, 6, 6, 5, new RectangleF(205,245, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(68,999), HitTestKind.Directive, 24, 24, 0, new RectangleF(5, 965, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(3, 184), HitTestKind.None, -1, -1, -1, new RectangleF(0, 0, 0, 0));
            CheckHitTest(descriptionRenderer, new Point(262,745), HitTestKind.OtherTextLine, 18, 18,0, new RectangleF(5, 725, 320, 40));

            descriptionRenderer.DescriptionKind = DescriptionKind.Text;

            CheckHitTest(descriptionRenderer, new Point(311,12), HitTestKind.Title, 0, 0, 0, new RectangleF(5, 5, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(16,82), HitTestKind.Header, 1, 1, 0, new RectangleF(5, 45, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(178,76), HitTestKind.Header, 1, 1, 1, new RectangleF(125, 45, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(38, 97), HitTestKind.NormalBox, 2, 2, 0, new RectangleF(5, 85, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(182,234), HitTestKind.NormalText, 5, 5, -1, new RectangleF(85,205, 240, 40));
            CheckHitTest(descriptionRenderer, new Point(60,942), HitTestKind.DirectiveText, 23, 23,-1, new RectangleF(5,925, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(3, 184), HitTestKind.None, -1, -1, -1, new RectangleF(0, 0, 0, 0));
            CheckHitTest(descriptionRenderer, new Point(262,745), HitTestKind.OtherTextLine, 18, 18,0, new RectangleF(5, 725, 320, 40));

            descriptionRenderer.DescriptionKind = DescriptionKind.SymbolsAndText;

            CheckHitTest(descriptionRenderer, new Point(143, 22), HitTestKind.Title, 0, 0, 0, new RectangleF(5, 5, 520, 40));
            CheckHitTest(descriptionRenderer, new Point(434, 25), HitTestKind.Title, 0, 0, 0, new RectangleF(5, 5, 520, 40));
            CheckHitTest(descriptionRenderer, new Point(116, 53), HitTestKind.Header, 1, 1, 0, new RectangleF(5, 45, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(259, 78), HitTestKind.Header, 1, 1, 1, new RectangleF(125, 45, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(380, 76), HitTestKind.None, 1, 1, -1, new RectangleF(325,45, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(38, 97), HitTestKind.NormalBox, 2, 2, 0, new RectangleF(5, 85, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(226, 260), HitTestKind.NormalBox, 6, 6, 5, new RectangleF(205, 245, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(68, 999), HitTestKind.Directive, 24, 24, 0, new RectangleF(5, 965, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(398,554), HitTestKind.NormalText, 13, 13, -1, new RectangleF(325,525, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(401, 934), HitTestKind.DirectiveText, 23, 23, -1, new RectangleF(325, 925, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(3, 184), HitTestKind.None, -1, -1, -1, new RectangleF(0, 0, 0, 0));
            CheckHitTest(descriptionRenderer, new Point(262,745), HitTestKind.OtherTextLine, 18, 18,0, new RectangleF(5, 725, 520, 40));
        }
        public void HitTestMultiLine()
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            eventDB.Load(TestUtil.GetTestFile("descriptions\\sampleevent6.coursescribe"));
            eventDB.Validate();
            CourseView courseView = CourseView.CreateViewingCourseView(eventDB, DesignatorFromCourseId(eventDB, CourseId(1)));
            DescriptionFormatter descFormatter = new DescriptionFormatter(courseView, symbolDB);
            DescriptionLine[] description = descFormatter.CreateDescription(false);
            DescriptionRenderer descriptionRenderer = new DescriptionRenderer(symbolDB);
            descriptionRenderer.Description = description;
            descriptionRenderer.CellSize = 40;
            descriptionRenderer.Margin = 5;

            descriptionRenderer.DescriptionKind = DescriptionKind.Symbols;

            CheckHitTest(descriptionRenderer, new Point(143, 22), HitTestKind.Title, 0, 1, 0, new RectangleF(5, 5, 320, 80));
            CheckHitTest(descriptionRenderer, new Point(13, 51), HitTestKind.Title, 0, 1, 0, new RectangleF(5, 5, 320, 80));
            CheckHitTest(descriptionRenderer, new Point(178, 101), HitTestKind.SecondaryTitle, 2, 4, 0, new RectangleF(5, 85, 320, 120));
            CheckHitTest(descriptionRenderer, new Point(178, 141), HitTestKind.SecondaryTitle, 2, 4, 0, new RectangleF(5, 85, 320, 120));
            CheckHitTest(descriptionRenderer, new Point(178, 181), HitTestKind.SecondaryTitle, 2, 4, 0, new RectangleF(5, 85, 320, 120));
            CheckHitTest(descriptionRenderer, new Point(116, 213), HitTestKind.Header, 5, 5, 0, new RectangleF(5, 205, 120, 40));

            descriptionRenderer.DescriptionKind = DescriptionKind.Text;

            CheckHitTest(descriptionRenderer, new Point(143, 22), HitTestKind.Title, 0, 1, 0, new RectangleF(5, 5, 320, 80));
            CheckHitTest(descriptionRenderer, new Point(13, 51), HitTestKind.Title, 0, 1, 0, new RectangleF(5, 5, 320, 80));
            CheckHitTest(descriptionRenderer, new Point(178, 101), HitTestKind.SecondaryTitle, 2, 4, 0, new RectangleF(5, 85, 320, 120));
            CheckHitTest(descriptionRenderer, new Point(178, 141), HitTestKind.SecondaryTitle, 2, 4, 0, new RectangleF(5, 85, 320, 120));
            CheckHitTest(descriptionRenderer, new Point(178, 181), HitTestKind.SecondaryTitle, 2, 4, 0, new RectangleF(5, 85, 320, 120));
            CheckHitTest(descriptionRenderer, new Point(116, 213), HitTestKind.Header, 5, 5, 0, new RectangleF(5, 205, 120, 40));

            descriptionRenderer.DescriptionKind = DescriptionKind.SymbolsAndText;

            CheckHitTest(descriptionRenderer, new Point(143, 22), HitTestKind.Title, 0, 1, 0, new RectangleF(5, 5, 520, 80));
            CheckHitTest(descriptionRenderer, new Point(13, 51), HitTestKind.Title, 0, 1, 0, new RectangleF(5, 5, 520, 80));
            CheckHitTest(descriptionRenderer, new Point(178, 101), HitTestKind.SecondaryTitle, 2, 4, 0, new RectangleF(5, 85, 520, 120));
            CheckHitTest(descriptionRenderer, new Point(178, 141), HitTestKind.SecondaryTitle, 2, 4, 0, new RectangleF(5, 85, 520, 120));
            CheckHitTest(descriptionRenderer, new Point(178, 181), HitTestKind.SecondaryTitle, 2, 4, 0, new RectangleF(5, 85, 520, 120));
            CheckHitTest(descriptionRenderer, new Point(116, 213), HitTestKind.Header, 5, 5, 0, new RectangleF(5, 205, 120, 40));
        }
 public CourseDesignator DesignatorFromCourseId(EventDB eventDB, Id<Course> courseId)
 {
     CourseDesignator designator;
     if (QueryEvent.HasVariations(eventDB, courseId)) {
         var variationInfo = QueryEvent.GetAllVariations(eventDB, courseId).First();
         designator = new CourseDesignator(courseId, variationInfo);
     }
     else {
         designator = new CourseDesignator(courseId);
     }
     return designator;
 }
        public void SingleVariation()
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);

            eventDB.Load(TestUtil.GetTestFile("queryevent\\variations.ppen"));
            eventDB.Validate();

            VariationInfo.VariationPath variationPath = new VariationInfo.VariationPath(new[] {
                CourseControlId(2),
                CourseControlId(27),
                CourseControlId(30),
                CourseControlId(26),
                CourseControlId(25),
                CourseControlId(4),
                CourseControlId(28),
            });
            VariationInfo variationInfo = new VariationInfo("AEFDCI", variationPath);

            CourseDesignator courseDesignator = new CourseDesignator(CourseId(1), variationInfo);

            CheckCourseBothAppearances("queryevent\\variations.ppen", courseDesignator, false, "singlevariation", new RectangleF(-15, -100, 230, 230));
        }
        void CheckCourse(string filename, CourseDesignator courseDesignator, bool addAllControls, string testName, RectangleF rect, CourseAppearance appearance)
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            CourseView courseView;
            CourseLayout course;

            eventDB.Load(TestUtil.GetTestFile(filename));
            eventDB.Validate();

            // Create the course
            courseView = CourseView.CreateViewingCourseView(eventDB, courseDesignator);
            course = new CourseLayout();
            course.SetLayerColor(CourseLayer.Descriptions, 0, "Black", 0, 0, 0, 1F, false);
            course.SetLayerColor(CourseLayer.MainCourse, 11, "Purple", 0.2F, 1.0F, 0.0F, 0.07F, false);
            CourseFormatter.FormatCourseToLayout(symbolDB, courseView, appearance, course, CourseLayer.MainCourse);

            // Add all controls if requested.
            if (addAllControls && courseDesignator.IsNotAllControls) {
                courseView = CourseView.CreateFilteredAllControlsView(eventDB, new CourseDesignator[] { courseDesignator }, ControlPointKind.None, false, true);
                course.SetLayerColor(CourseLayer.AllControls, 12, "LightPurple", 0.1F, 0.5F, 0.0F, 0.0F, false);
                CourseFormatter.FormatCourseToLayout(symbolDB, courseView, appearance, course, CourseLayer.AllControls);
            }

            // Render to a map
            Map map = course.RenderToMap();

            // Render map to the graphics.
            Bitmap bm = new Bitmap(1000,1000);
            using (Graphics g = Graphics.FromImage(bm)) {
                RenderOptions options = new RenderOptions();

                options.usePatternBitmaps = true;
                options.minResolution = (float) (rect.Width / bm.Width);
                options.renderTemplates = RenderTemplateOption.MapAndTemplates;

                g.ScaleTransform((float) (bm.Width / rect.Width), - (float) (bm.Height / rect.Height));
                g.TranslateTransform(-rect.Left, -rect.Top-rect.Height);

                g.Clear(Color.White);
                using (map.Read())
                    map.Draw(new GDIPlus_GraphicsTarget(g), rect, options, null);
            }

            TestUtil.CheckBitmapsBase(bm, "courserenderer\\" + testName);
        }
        void CheckCourse(string testfileName, Id<Course> courseId, CourseLayer layer, string expected)
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            CourseView courseView;
            CourseLayout course;

            eventDB.Load(TestUtil.GetTestFile(testfileName));
            eventDB.Validate();

            // Create the course
            courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(courseId));
            course = new CourseLayout();
            CourseFormatter.FormatCourseToLayout(symbolDB, courseView, defaultCourseAppearance, course, layer);

            // Dump it to a string.
            StringWriter writer = new StringWriter();
            course.Dump(writer);

            // Check that the string is correct.
            string actual = writer.ToString();
            if (expected != actual) {
                for (int i = 0; i < Math.Min(expected.Length, actual.Length); ++i)
                    if (actual[i] != expected[i]) {
                        Console.WriteLine("Difference at -->{0}", actual.Substring(i, 30));
                        break;
                    }
            }

            Assert.AreEqual(expected, writer.ToString());
        }
        public void HitTestScore()
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            eventDB.Load(TestUtil.GetTestFile("descriptions\\sampleevent1.coursescribe"));
            eventDB.Validate();
            CourseView courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(5)));
            DescriptionFormatter descFormatter = new DescriptionFormatter(courseView, symbolDB);
            DescriptionLine[] description = descFormatter.CreateDescription(false);
            DescriptionRenderer descriptionRenderer = new DescriptionRenderer(symbolDB);
            descriptionRenderer.Description = description;
            descriptionRenderer.CellSize = 40;
            descriptionRenderer.Margin = 5;

            descriptionRenderer.DescriptionKind = DescriptionKind.Symbols;

            CheckHitTest(descriptionRenderer, new Point(143, 22), HitTestKind.Title, 0, 0, 0, new RectangleF(5, 5, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(178,51), HitTestKind.SecondaryTitle, 1, 1, 0, new RectangleF(5, 45, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(116, 93), HitTestKind.Header, 2, 2, 0, new RectangleF(5, 85, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(259, 118), HitTestKind.Header, 2, 2, 1, new RectangleF(125, 85, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(38, 137), HitTestKind.NormalBox, 3, 3, 0, new RectangleF(5, 125, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(226, 260), HitTestKind.NormalBox, 6, 6, 5, new RectangleF(205, 245, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(3, 184), HitTestKind.None, -1, -1, -1, new RectangleF(0, 0, 0, 0));
            CheckHitTest(descriptionRenderer, new Point(228,534), HitTestKind.OtherTextLine, 13, 13,0, new RectangleF(5, 525, 320, 40));

            descriptionRenderer.DescriptionKind = DescriptionKind.Text;

            CheckHitTest(descriptionRenderer, new Point(311, 12), HitTestKind.Title, 0, 0, 0, new RectangleF(5, 5, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(178, 51), HitTestKind.SecondaryTitle, 1, 1, 0, new RectangleF(5, 45, 320, 40));
            CheckHitTest(descriptionRenderer, new Point(16, 112), HitTestKind.Header, 2, 2, 0, new RectangleF(5, 85, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(178, 116), HitTestKind.Header, 2, 2, 1, new RectangleF(125, 85, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(38, 137), HitTestKind.NormalBox, 3, 3, 0, new RectangleF(5, 125, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(182, 234), HitTestKind.NormalText, 5, 5, -1, new RectangleF(85, 205, 240, 40));
            CheckHitTest(descriptionRenderer, new Point(3, 184), HitTestKind.None, -1, -1, -1, new RectangleF(0, 0, 0, 0));
            CheckHitTest(descriptionRenderer, new Point(228, 534), HitTestKind.OtherTextLine, 13, 13, 0, new RectangleF(5, 525, 320, 40));

            descriptionRenderer.DescriptionKind = DescriptionKind.SymbolsAndText;

            CheckHitTest(descriptionRenderer, new Point(143, 22), HitTestKind.Title, 0, 0, 0, new RectangleF(5, 5, 520, 40));
            CheckHitTest(descriptionRenderer, new Point(178, 51), HitTestKind.SecondaryTitle, 1, 1, 0, new RectangleF(5, 45, 520, 40));
            CheckHitTest(descriptionRenderer, new Point(434, 25), HitTestKind.Title, 0, 0, 0, new RectangleF(5, 5, 520, 40));
            CheckHitTest(descriptionRenderer, new Point(116, 93), HitTestKind.Header, 2, 2, 0, new RectangleF(5, 85, 120, 40));
            CheckHitTest(descriptionRenderer, new Point(259, 118), HitTestKind.Header, 2, 2, 1, new RectangleF(125, 85, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(380, 116), HitTestKind.None, 2, 2, -1, new RectangleF(325, 85, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(38, 137), HitTestKind.NormalBox, 3, 3, 0, new RectangleF(5, 125, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(226, 260), HitTestKind.NormalBox, 6, 6, 5, new RectangleF(205, 245, 40, 40));
            CheckHitTest(descriptionRenderer, new Point(398, 594), HitTestKind.NormalText, 14, 14, -1, new RectangleF(325, 565, 200, 40));
            CheckHitTest(descriptionRenderer, new Point(3, 184), HitTestKind.None, -1, -1, -1, new RectangleF(0, 0, 0, 0));
            CheckHitTest(descriptionRenderer, new Point(451, 534), HitTestKind.OtherTextLine, 13, 13, 0, new RectangleF(5, 525, 520, 40));
        }
 // Sets up with special symbols.xml that has fake polish text in it, to test case agreement stuff.
 public void SetupWithPolish()
 {
     undomgr = new UndoMgr(5);
     eventDB = new EventDB(undomgr);
     symbolDB = new SymbolDB(TestUtil.GetTestFile("textifier\\pl-symbols.xml"));
     eventDB.Load(TestUtil.GetTestFile("textifier\\PolishTest.ppen"));
     eventDB.Validate();
 }
        // Render the given course id (0 = all controls) and kind to a bitmap, and compare it to the saved version.
        internal void CheckRenderBitmapPixelAtATime(Id<Course> id, DescriptionKind kind)
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            CourseView courseView;

            eventDB.Load(TestUtil.GetTestFile("descriptions\\sampleevent1.coursescribe"));
            eventDB.Validate();

            courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(id));

            DescriptionFormatter descFormatter = new DescriptionFormatter(courseView, symbolDB);
            DescriptionLine[] description = descFormatter.CreateDescription(false);

            Bitmap bmNew = RenderToBitmapPixelAtATime(symbolDB, description, kind);
            TestUtil.CheckBitmapsBase(bmNew, DescriptionBrowser.GetBitmapFileName(eventDB, id, "", kind));
        }
        // Render a description to a bitmap for testing purposes. Hardcoded 70 pixel box size.
        internal static Bitmap RenderToBitmap(EventDB eventDB, CourseView courseView, PunchcardFormat format)
        {
            PunchesRenderer punchesRenderer = new PunchesRenderer(eventDB);
            punchesRenderer.CourseView = courseView;
            punchesRenderer.PunchcardFormat = format;
            punchesRenderer.CellSize = 70;
            punchesRenderer.Margin = 4;

            SizeF size = punchesRenderer.Measure();

            Bitmap bm = new Bitmap((int) size.Width, (int) size.Height);
            Graphics g = Graphics.FromImage(bm);

            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

            g.Clear(Color.White);
            punchesRenderer.Draw(g, 0, 0, 0, punchesRenderer.Boxes.Height);

            g.Dispose();

            return bm;
        }
        // Render the given course id (0 = all controls) and kind to a map, and compare it to the saved version.
        internal void CheckRenderMap(string filename, Id<Course> id, DescriptionKind kind, int numColumns = 1)
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            CourseView courseView;

            eventDB.Load(filename);
            eventDB.Validate();

            courseView = CourseView.CreateViewingCourseView(eventDB, DesignatorFromCourseId(eventDB, id));

            DescriptionFormatter descFormatter = new DescriptionFormatter(courseView, symbolDB);
            DescriptionLine[] description = descFormatter.CreateDescription(kind == DescriptionKind.Symbols);

            Bitmap bmNew = RenderToMapThenToBitmap(symbolDB, description, kind, numColumns);
            if (numColumns > 1)
                TestUtil.CheckBitmapsBase(bmNew, DescriptionBrowser.GetBitmapFileName(eventDB, id, "_ocad_" + numColumns + "col", kind));
            else
                TestUtil.CheckBitmapsBase(bmNew, DescriptionBrowser.GetBitmapFileName(eventDB, id, "_ocad", kind));
        }
 // Sets up with special symbols.xml that has fake german text in it, to test gender/plural stuff.
 public void SetupWithGerman()
 {
     undomgr = new UndoMgr(5);
     eventDB = new EventDB(undomgr);
     symbolDB = new SymbolDB(TestUtil.GetTestFile("textifier\\de_symbols.xml"));
     eventDB.Load(TestUtil.GetTestFile("textifier\\sampleevent2.coursescribe"));
     eventDB.Validate();
 }
        public void DisplayAllCourses()
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            CourseView courseView;
            CourseLayout course;

            eventDB.Load(TestUtil.GetTestFile("courseformat\\marymoor1.coursescribe"));
            eventDB.Validate();

            foreach (Id<Course> courseId in QueryEvent.SortedCourseIds(eventDB)) {
                courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(courseId));
                course = new CourseLayout();
                CourseFormatter.FormatCourseToLayout(symbolDB, courseView, defaultCourseAppearance, course, 0);
                course.Dump(Console.Out);
                Console.WriteLine();
            }

            courseView = CourseView.CreateViewingCourseView(eventDB, CourseDesignator.AllControls);
            course = new CourseLayout();
            CourseFormatter.FormatCourseToLayout(symbolDB, courseView, defaultCourseAppearance, course, 0);
            course.Dump(Console.Out);
        }
        public void Setup(string filename)
        {
            ui = TestUI.Create();
            controller = ui.controller;
            eventDB = controller.GetEventDB();

            string fileName = TestUtil.GetTestFile(filename);

            bool success = controller.LoadInitialFile(fileName, true);
            Assert.IsTrue(success);
        }
 public CourseItem(EventDB eventDB, Id<Course> id)
 {
     this.eventDB = eventDB;
     this.id = id;
 }