Esempio n. 1
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var vbox = base.Layout(layout).AddLayoutVertical();

            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(new Label(hbox.RemainingWidth / 2,hbox.RemainingHeight,Viewer.Catalog.GetString("Speed:")));
                hbox.Add(SpeedCurrent = new Label(hbox.RemainingWidth, hbox.RemainingHeight, "", LabelAlignment.Right));
            }
            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(new Label(hbox.RemainingWidth / 2, hbox.RemainingHeight, Viewer.Catalog.GetString("Projected:")));
                hbox.Add(SpeedProjected = new Label(hbox.RemainingWidth, hbox.RemainingHeight, "", LabelAlignment.Right));
            }
            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(new Label(hbox.RemainingWidth / 2, hbox.RemainingHeight, Viewer.Catalog.GetString("Limit:")));
                hbox.Add(SpeedAllowed = new Label(hbox.RemainingWidth, hbox.RemainingHeight, "", LabelAlignment.Right));
            }
            vbox.AddHorizontalSeparator();
            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(ControlMode = new Label(hbox.RemainingWidth - 18, hbox.RemainingHeight, "", LabelAlignment.Left));
            }
            vbox.AddHorizontalSeparator();
            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(new Label(hbox.RemainingWidth, hbox.RemainingHeight, Viewer.Catalog.GetString(" Dist      Speed   Aspect")));
            }
            vbox.AddHorizontalSeparator();
            vbox.Add(Monitor = new TrackMonitor(vbox.RemainingWidth, vbox.RemainingHeight, Owner));

            return(vbox);
        }
Esempio n. 2
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var vbox = base.Layout(layout).AddLayoutVertical();

            if (Owner.Viewer.Simulator.FullEOTPaths != null)
            {
                var colWidth = (vbox.RemainingWidth - vbox.TextHeight * 2) / 2;
                {
                    var line = vbox.AddLayoutHorizontalLineOfText();
                    line.Add(new Label(colWidth, line.RemainingHeight, Viewer.Catalog.GetString("Filename")));
                    line.Add(new Label(colWidth, line.RemainingHeight, Viewer.Catalog.GetString("Folder Name"), LabelAlignment.Left));
                }
                vbox.AddHorizontalSeparator();
                var scrollbox        = vbox.AddLayoutScrollboxVertical(vbox.RemainingWidth);
                var playerLocomotive = Owner.Viewer.Simulator.PlayerLocomotive;
                foreach (var eotType in Owner.Viewer.Simulator.FullEOTPaths)
                {
                    var      line = scrollbox.AddLayoutHorizontalLineOfText();
                    EOTLabel filename, foldername;
                    line.Add(filename   = new EOTLabel(colWidth, line.RemainingHeight, Owner.Viewer, eotType, Path.GetFileNameWithoutExtension(eotType), LabelAlignment.Left));
                    line.Add(foldername = new EOTLabel(colWidth - Owner.TextFontDefault.Height, line.RemainingHeight, Owner.Viewer, eotType, (Path.GetDirectoryName(eotType)).Remove(0, Owner.Viewer.Simulator.EOTPath.Length), LabelAlignment.Left));
                    if (playerLocomotive?.Train != null && eotType.ToLower() == playerLocomotive.Train.EOT?.WagFilePath.ToLower())
                    {
                        filename.Color   = Color.Red;
                        foldername.Color = Color.Red;
                    }
                }
            }
            return(vbox);
        }
Esempio n. 3
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            Label buttonQuit, buttonSave, buttonContinue;
            var   vbox            = base.Layout(layout).AddLayoutVertical();
            var   heightForLabels = 10;

            if (!Orts.MultiPlayer.MPManager.IsMultiPlayer())
            {
                heightForLabels = (vbox.RemainingHeight - 2 * ControlLayout.SeparatorSize) / 3;
            }
            else
            {
                heightForLabels = (vbox.RemainingHeight - 2 * ControlLayout.SeparatorSize) / 2;
            }
            var spacing = (heightForLabels - Owner.TextFontDefault.Height) / 2;

            vbox.AddSpace(0, spacing);
            vbox.Add(buttonQuit = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetStringFmt("Quit {1} ({0})", Owner.Viewer.Settings.Input.Commands[(int)UserCommands.GameQuit], Application.ProductName), LabelAlignment.Center));
            vbox.AddSpace(0, spacing);
            vbox.AddHorizontalSeparator();
            if (!Orts.MultiPlayer.MPManager.IsMultiPlayer())
            {
                buttonSave = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetStringFmt("Save your game ({0})", Owner.Viewer.Settings.Input.Commands[(int)UserCommands.GameSave]), LabelAlignment.Center);
                vbox.AddSpace(0, spacing);
                vbox.Add(buttonSave);
                vbox.AddSpace(0, spacing);
                vbox.AddHorizontalSeparator();
                buttonSave.Click += new Action <Control, Point>(buttonSave_Click);
            }
            vbox.AddSpace(0, spacing);
            vbox.Add(buttonContinue = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetStringFmt("Continue playing ({0})", Owner.Viewer.Settings.Input.Commands[(int)UserCommands.GamePauseMenu]), LabelAlignment.Center));
            buttonQuit.Click       += new Action <Control, Point>(buttonQuit_Click);
            buttonContinue.Click   += new Action <Control, Point>(buttonContinue_Click);
            return(vbox);
        }
Esempio n. 4
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            Label buttonHandbrake, buttonTogglePower, buttonToggleMU, buttonToggleBrakeHose, buttonToggleAngleCockA, buttonToggleAngleCockB, buttonToggleBleedOffValve, buttonClose;

            var vbox = base.Layout(layout).AddLayoutVertical();

            vbox.Add(buttonHandbrake = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Toggle Handbrake"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonTogglePower = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Toggle Power"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleMU = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Toggle MU Connection"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleBrakeHose = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Toggle Brake Hose Connection"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleAngleCockA = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Open/Close Front Angle C**k"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleAngleCockB = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Open/Close Rear Angle C**k"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleBleedOffValve = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Open/Close Bleed Off Valve"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonClose = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Close window"), LabelAlignment.Center));

            buttonHandbrake.Click           += new Action <Control, Point>(buttonHandbrake_Click);
            buttonTogglePower.Click         += new Action <Control, Point>(buttonTogglePower_Click);
            buttonToggleMU.Click            += new Action <Control, Point>(buttonToggleMU_Click);
            buttonToggleBrakeHose.Click     += new Action <Control, Point>(buttonToggleBrakeHose_Click);
            buttonToggleAngleCockA.Click    += new Action <Control, Point>(buttonToggleAngleCockA_Click);
            buttonToggleAngleCockB.Click    += new Action <Control, Point>(buttonToggleAngleCockB_Click);
            buttonToggleBleedOffValve.Click += new Action <Control, Point>(buttonToggleBleedOffValve_Click);
            buttonClose.Click += new Action <Control, Point>(buttonClose_Click);

            return(vbox);
        }
Esempio n. 5
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var textHeight = Owner.TextFontDefault.Height;

            var hbox      = base.Layout(layout).AddLayoutHorizontal();
            var scrollbox = hbox.AddLayoutScrollboxHorizontal(hbox.RemainingHeight);

            if (PlayerTrain != null)
            {
                int carPosition = 0;
                foreach (var car in PlayerTrain.Cars)
                {
                    var carLabel = new TrainOperationsLabel(textHeight * 6, textHeight, Owner.Viewer, car, carPosition, LabelAlignment.Center);
                    carLabel.Click += new Action <Control, Point>(carLabel_Click);

                    if (car == PlayerTrain.LeadLocomotive)
                    {
                        carLabel.Color = Color.Red;
                    }

                    scrollbox.Add(carLabel);
                    if (car != PlayerTrain.Cars.Last())
                    {
                        scrollbox.Add(new TrainOperationsCoupler(0, 0, textHeight, Owner.Viewer, car, carPosition));
                    }
                    carPosition++;
                }
            }
            return(hbox);
        }
Esempio n. 6
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var vbox     = base.Layout(layout).AddLayoutVertical();
            var boxWidth = vbox.RemainingWidth;

            var hbox1 = vbox.AddLayoutHorizontalLineOfText();

            hbox1.Add(new Label(boxWidth, hbox1.RemainingHeight, Viewer.Catalog.GetString("This train is about to split."), LabelAlignment.Left));

            var hbox2 = vbox.AddLayoutHorizontalLineOfText();

            hbox2.Add(ThisPortionLine = new Label(boxWidth, hbox2.RemainingHeight, "", LabelAlignment.Left));

            var hbox3 = vbox.AddLayoutHorizontalLineOfText();

            hbox3.Add(OtherPortionLine = new Label(boxWidth, hbox3.RemainingHeight, "", LabelAlignment.Left));

            var hbox4 = vbox.AddLayoutHorizontalLineOfText();

            hbox4.Add(new Label(boxWidth, hbox4.RemainingHeight, Viewer.Catalog.GetString("Use 'cab switch' command to select cab in required portion."), LabelAlignment.Left));

            vbox.AddSpace(0, Owner.TextFontDefault.Height);
            vbox.AddHorizontalSeparator();

            vbox.AddSpace(0, Owner.TextFontDefault.Height);
            vbox.Add(ButtonDetach = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Perform Detach"), LabelAlignment.Center));
            ButtonDetach.Click   += new Action <Control, Point>(ButtonDetach_Click);

            return(vbox);
        }
Esempio n. 7
0
        protected virtual ControlLayout Layout(ControlLayout layout)
        {
            // Pad window by 4px, add caption and space between to content area.
            var content = layout.AddLayoutOffset(4, 4, 4, 4).AddLayoutVertical();

            content.Add(new Label(content.RemainingWidth, Owner.TextFontDefault.Height, Caption, LabelAlignment.Center));
            content.AddSpace(0, 5);
            return(content);
        }
Esempio n. 8
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var vbox = base.Layout(layout).AddLayoutVertical();

            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(Message = new Label(hbox.RemainingWidth, hbox.RemainingHeight, ""));
            }
            return(vbox);
        }
Esempio n. 9
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var vbox     = base.Layout(layout).AddLayoutVertical();
            var boxWidth = vbox.RemainingWidth / 8;

            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(StationPlatform = new Label(boxWidth * 3, hbox.RemainingHeight, "", LabelAlignment.Left));
                hbox.Add(CurrentDelay    = new Label(boxWidth * 4, hbox.RemainingHeight, ""));
                hbox.Add(CurrentTime     = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
            }
            vbox.AddHorizontalSeparator();
            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(new Label(boxWidth * 3, hbox.RemainingHeight, Viewer.Catalog.GetString("Station")));
                hbox.Add(new Label(boxWidth, hbox.RemainingHeight, Viewer.Catalog.GetString("Distance"), LabelAlignment.Center));
                hbox.Add(new Label(boxWidth, hbox.RemainingHeight, Viewer.Catalog.GetString("Arrive"), LabelAlignment.Center));
                hbox.Add(new Label(boxWidth, hbox.RemainingHeight, Viewer.Catalog.GetString("Actual"), LabelAlignment.Center));
                hbox.Add(new Label(boxWidth, hbox.RemainingHeight, Viewer.Catalog.GetString("Depart"), LabelAlignment.Center));
                hbox.Add(new Label(boxWidth, hbox.RemainingHeight, Viewer.Catalog.GetString("Actual"), LabelAlignment.Center));
            }
            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(StationPreviousName            = new Label(boxWidth * 3, hbox.RemainingHeight, ""));
                hbox.Add(StationPreviousDistance        = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
                hbox.Add(StationPreviousArriveScheduled = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
                hbox.Add(StationPreviousArriveActual    = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
                hbox.Add(StationPreviousDepartScheduled = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
                hbox.Add(StationPreviousDepartActual    = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
            }
            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(StationCurrentName            = new Label(boxWidth * 3, hbox.RemainingHeight, ""));
                hbox.Add(StationCurrentDistance        = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
                hbox.Add(StationCurrentArriveScheduled = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
                hbox.Add(StationCurrentArriveActual    = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
                hbox.Add(StationCurrentDepartScheduled = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
                hbox.AddSpace(boxWidth, hbox.RemainingHeight);
            }
            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(StationNextName            = new Label(boxWidth * 3, hbox.RemainingHeight, ""));
                hbox.Add(StationNextDistance        = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
                hbox.Add(StationNextArriveScheduled = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
                hbox.AddSpace(boxWidth, hbox.RemainingHeight);
                hbox.Add(StationNextDepartScheduled = new Label(boxWidth, hbox.RemainingHeight, "", LabelAlignment.Center));
                hbox.AddSpace(boxWidth, hbox.RemainingHeight);
            }
            vbox.AddHorizontalSeparator();
            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                hbox.Add(Message = new Label(boxWidth * 7, hbox.RemainingHeight, ""));
            }
            return(vbox);
        }
Esempio n. 10
0
        protected internal void Layout()
        {
            var windowLayout = new WindowControlLayout(this, location.Width, location.Height);

            windowLayout.TextHeight = Owner.TextFontDefault.Height;
            if (Owner.ScreenSize != Point.Zero)
            {
                Layout(windowLayout);
            }
            windowLayout.Initialize(Owner);
            WindowLayout = windowLayout;
        }
Esempio n. 11
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var vbox = base.Layout(layout).AddLayoutVertical();

            vbox.Add(Compass = new PopupCompass(vbox.RemainingWidth, vbox.RemainingHeight - vbox.TextHeight));
            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                var w    = hbox.RemainingWidth / 9;
                hbox.Add(new Label(1 * w, hbox.RemainingHeight, Viewer.Catalog.GetString("Lat:"), LabelAlignment.Right));
                hbox.Add(Latitude = new Label(3 * w, hbox.RemainingHeight, "000.000000", LabelAlignment.Right));
                hbox.AddSpace(w, hbox.RemainingHeight);
                hbox.Add(new Label(1 * w, hbox.RemainingHeight, Viewer.Catalog.GetString("Lon:"), LabelAlignment.Right));
                hbox.Add(Longitude = new Label(3 * w, hbox.RemainingHeight, "000.000000", LabelAlignment.Right));
            }
            return(vbox);
        }
Esempio n. 12
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var vbox = base.Layout(layout).AddLayoutVertical();

            var maxLines = vbox.RemainingHeight / TextSize;
            var messages = Messages.Take(maxLines).Reverse().ToList();

            vbox.AddSpace(0, vbox.RemainingHeight - TextSize * messages.Count());
            foreach (var message in messages)
            {
                var hbox  = vbox.AddLayoutHorizontal(TextSize);
                var width = Owner.Viewer.WindowManager.TextFontDefault.MeasureString(message.Text);
                hbox.Add(message.LabelShadow = new LabelShadow(width, hbox.RemainingHeight));
                hbox.Add(message.LabelText   = new Label(-width, 0, width, TextSize, message.Text));
            }
            return(vbox);
        }
Esempio n. 13
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            Label ID, buttonHandbrake, buttonTogglePower, buttonToggleMU, buttonToggleBatterySwitch, buttonToggleElectricTrainSupplyCable, buttonToggleBrakeHose, buttonToggleAngleCockA, buttonToggleAngleCockB, buttonToggleBleedOffValve, buttonClose;

            var vbox = base.Layout(layout).AddLayoutVertical();

            vbox.Add(ID = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Car ID") + "  " + (CarPosition >= Viewer.PlayerTrain.Cars.Count? " " :Viewer.PlayerTrain.Cars[CarPosition].CarID), LabelAlignment.Center));
            ID.Color    = Color.Red;
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonHandbrake = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Toggle Handbrake"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonTogglePower = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Toggle Power"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleMU = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Toggle MU Connection"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleBatterySwitch = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Toggle Battery Switch"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleElectricTrainSupplyCable = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Toggle Electric Train Supply Connection"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleBrakeHose = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Toggle Brake Hose Connection"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleAngleCockA = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Open/Close Front Angle C**k"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleAngleCockB = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Open/Close Rear Angle C**k"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonToggleBleedOffValve = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Open/Close Bleed Off Valve"), LabelAlignment.Center));
            vbox.AddHorizontalSeparator();
            vbox.Add(buttonClose = new Label(vbox.RemainingWidth, Owner.TextFontDefault.Height, Viewer.Catalog.GetString("Close window"), LabelAlignment.Center));

            buttonHandbrake.Click                      += new Action <Control, Point>(buttonHandbrake_Click);
            buttonTogglePower.Click                    += new Action <Control, Point>(buttonTogglePower_Click);
            buttonToggleMU.Click                       += new Action <Control, Point>(buttonToggleMU_Click);
            buttonToggleBatterySwitch.Click            += new Action <Control, Point>(buttonToggleBatterySwitch_Click);
            buttonToggleElectricTrainSupplyCable.Click += new Action <Control, Point>(buttonToggleElectricTrainSupplyCable_Click);
            buttonToggleBrakeHose.Click                += new Action <Control, Point>(buttonToggleBrakeHose_Click);
            buttonToggleAngleCockA.Click               += new Action <Control, Point>(buttonToggleAngleCockA_Click);
            buttonToggleAngleCockB.Click               += new Action <Control, Point>(buttonToggleAngleCockB_Click);
            buttonToggleBleedOffValve.Click            += new Action <Control, Point>(buttonToggleBleedOffValve_Click);
            buttonClose.Click += new Action <Control, Point>(buttonClose_Click);

            return(vbox);
        }
Esempio n. 14
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var hbox = base.Layout(layout).AddLayoutHorizontal();

            {
                var vbox1 = hbox.AddLayoutVertical(SwitchImageSize);
                vbox1.Add(ForwardEye     = new Image(0, 0, SwitchImageSize, SwitchImageSize / 2));
                vbox1.Add(TrainDirection = new Image(0, 0, SwitchImageSize, SwitchImageSize));
                vbox1.Add(BackwardEye    = new Image(0, 0, SwitchImageSize, SwitchImageSize / 2));

                var vbox2 = hbox.AddLayoutVertical(hbox.RemainingWidth);
                vbox2.Add(SwitchForwards  = new Image(0, 0, SwitchImageSize, SwitchImageSize));
                vbox2.Add(SwitchBackwards = new Image(0, 0, SwitchImageSize, SwitchImageSize));
                SwitchForwards.Texture    = SwitchBackwards.Texture = SwitchStates;
                SwitchForwards.Click     += new Action <Control, Point>(SwitchForwards_Click);
                SwitchBackwards.Click    += new Action <Control, Point>(SwitchBackwards_Click);
                TrainDirection.Texture    = ForwardEye.Texture = BackwardEye.Texture = SwitchStates;
            }
            return(hbox);
        }
Esempio n. 15
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var vbox = base.Layout(layout).AddLayoutVertical();

            if (Tabs.Count > 0)
            {
                var hbox = vbox.AddLayoutHorizontalLineOfText();
                var tabWidth = hbox.RemainingWidth / Tabs.Count;
                for (var i = 0; i < Tabs.Count; i++)
                {
                    var label = new Label(tabWidth, hbox.RemainingHeight, Tabs[i].TabLabel, LabelAlignment.Center) { Color = ActiveTab == i ? Color.White : Color.Gray, Tag = i };
                    label.Click += label_Click;
                    hbox.Add(label);
                }
                vbox.AddHorizontalSeparator();

                Tabs[ActiveTab].Layout(vbox);
            }

            return vbox;
        }
Esempio n. 16
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var originalMessage          = Message == null ? null : Message.Text;
            var originalResumeLabel      = ResumeLabel == null ? null : ResumeLabel.Text;
            var originalCloseLabel       = CloseLabel == null ? null : CloseLabel.Text;
            var originalQuitLabel        = QuitLabel == null ? null : QuitLabel.Text;
            var originalEventNameLabel   = EventNameLabel == null ? null : EventNameLabel.Text;
            var originalStatusLabel      = StatusLabel == null ? null : StatusLabel.Text;
            var originalStatusLabelColor = StatusLabel == null ? null : new Color?(StatusLabel.Color);

            var vbox = base.Layout(layout).AddLayoutVertical();

            {
                var hbox      = vbox.AddLayoutHorizontal(vbox.RemainingHeight - (ControlLayout.SeparatorSize + vbox.TextHeight) * 2);
                var scrollbox = hbox.AddLayoutScrollboxVertical(hbox.RemainingWidth);
                scrollbox.Add(Message = new TextFlow(scrollbox.RemainingWidth - scrollbox.TextHeight, originalMessage));
                MessageScroller       = (ControlLayoutScrollbox)hbox.Controls.Last();
            }
            vbox.AddHorizontalSeparator();
            {
                var hbox     = vbox.AddLayoutHorizontalLineOfText();
                var boxWidth = hbox.RemainingWidth / 3;
                hbox.Add(ResumeLabel = new Label(boxWidth, hbox.RemainingHeight, originalResumeLabel, LabelAlignment.Center));
                hbox.Add(CloseLabel  = new Label(boxWidth, hbox.RemainingHeight, originalCloseLabel, LabelAlignment.Center));
                hbox.Add(QuitLabel   = new Label(boxWidth, hbox.RemainingHeight, originalQuitLabel, LabelAlignment.Center));
                ResumeLabel.Click   += new Action <Control, Point>(ResumeActivity_Click);
                CloseLabel.Click    += new Action <Control, Point>(CloseBox_Click);
                QuitLabel.Click     += new Action <Control, Point>(QuitActivity_Click);
            }
            vbox.AddHorizontalSeparator();
            {
                var hbox     = vbox.AddLayoutHorizontalLineOfText();
                var boxWidth = hbox.RemainingWidth / 2;
                hbox.Add(EventNameLabel = new Label(boxWidth, hbox.RemainingHeight, originalEventNameLabel, LabelAlignment.Left));
                hbox.Add(StatusLabel    = new Label(boxWidth, hbox.RemainingHeight, originalStatusLabel, LabelAlignment.Left));
                StatusLabel.Color       = originalStatusLabelColor.HasValue ? originalStatusLabelColor.Value : Color.LightSalmon;
            }
            return(vbox);
        }
Esempio n. 17
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            // Display main HUD data
            var vbox = base.Layout(layout).AddLayoutVertical();

            if (labels.Count > 0)
            {
                var colWidth          = labels.Max(x => x.FirstColWidth) + (FontToBold ? 19 : 16);
                var TimeHboxPositionY = 0;
                foreach (var data in labels)
                {
                    if (data.FirstCol.Contains("NwLn"))
                    {
                        var hbox = vbox.AddLayoutHorizontalLineOfText();
                        hbox.Add(new Label(colWidth * 2, hbox.RemainingHeight, " "));
                    }
                    else if (data.FirstCol.Contains("Sprtr"))
                    {
                        vbox.AddHorizontalSeparator();
                    }
                    else
                    {
                        var hbox      = vbox.AddLayoutHorizontalLineOfText();
                        var FirstCol  = data.FirstCol;
                        var LastCol   = data.LastCol;
                        var SymbolCol = data.SymbolCol;

                        {   // blanck space
                            keyPressed         = "";
                            hbox.Add(indicator = new Label(TextSize, hbox.RemainingHeight, keyPressed, LabelAlignment.Center));
                            indicator.Color    = Color.White; // Default color

                            //Avoids troubles when the Main Scale (Windows DPI settings) is not set to 100%
                            if (FirstCol.Contains(Viewer.Catalog.GetString("Time")))
                            {
                                TimeHboxPositionY = hbox.Position.Y;
                            }

                            hbox.Add(indicator = new Label(colWidth, hbox.RemainingHeight, FirstCol));
                            indicator.Color    = Color.White; // Default color

                            // Font to bold
                            if (hbox.Position.Y == TimeHboxPositionY && FirstCol.Contains(Viewer.Catalog.GetString("Time"))) // Time line.
                            {
                                hbox.Add(LabelFontToBold = new Label(-colWidth, 0, data.FirstColWidth, hbox.RemainingHeight, " "));
                                LabelFontToBold.Color    = Color.White;
                                LabelFontToBold.Click   += new Action <Control, Point>(FontToBold_Click);
                            }
                            else
                            {
                                hbox.Add(indicator = new Label(colWidth, hbox.RemainingHeight, LastCol));
                                indicator.Color    = Color.White; // Default color
                            }
                        }

                        // Separator line
                        if (data.FirstCol.Contains("Sprtr"))
                        {
                            hbox.AddHorizontalSeparator();
                        }
                    }
                }
            }// close
            return(vbox);
        }
Esempio n. 18
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            // Display main DUP data
            var vbox = base.Layout(layout).AddLayoutVertical();

            if (labels.Count > 0)
            {
                var colWidth = labels.Max(x => x.FirstColWidth) + TextSize;// right space

                var lastColLenght = 0;
                var LastColLenght = 0;
                foreach (var data in labels.Where(x => x.LastColWidth != null && x.LastColWidth.Count > 0))
                {
                    lastColLenght = data.LastColWidth.Max(x => x);
                    LastColLenght = lastColLenght > LastColLenght ? lastColLenght : LastColLenght;
                }

                var lastWidth         = LastColLenght + TextSize / 2;
                var TimeHboxPositionY = 0;

                foreach (var data in labels.ToList())
                {
                    if (data.FirstCol.Contains("NwLn"))
                    {
                        var hbox = vbox.AddLayoutHorizontalLineOfText();
                        hbox.Add(new Label(colWidth * 2, hbox.RemainingHeight, " "));
                    }
                    else if (data.FirstCol.Contains("Sprtr"))
                    {
                        vbox.AddHorizontalSeparator();
                    }
                    else
                    {
                        var hbox = vbox.AddLayoutHorizontalLineOfText();
                        var FirstCol = " " + data.FirstCol;
                        var LastCol = data.LastCol;
                        var SymbolCol = data.SymbolCol;
                        var locoGroups = new[] { Viewer.Catalog.GetString("Loco Groups"), Viewer.Catalog.GetString("GRUP") }.Any(s => FirstCol.Contains(s));

                        if (LastCol != null && LastCol[0] != null)
                        {
                            //Avoids troubles when the Main Scale (Windows DPI settings) is not set to 100%
                            if (locoGroups)
                            {
                                TimeHboxPositionY = hbox.Position.Y;
                            }

                            if (normalTextMode)
                            {
                                hbox.Add(indicator = new Label(colWidth, hbox.RemainingHeight, FirstCol));
                                indicator.Color    = Color.White; // Default color
                            }
                            else
                            {
                                hbox.Add(indicatorMono = new LabelMono(colWidth, hbox.RemainingHeight, FirstCol));
                                indicatorMono.Color    = Color.White; // Default color
                            }

                            for (int i = 0; i < data.LastCol.Count; i++)
                            {
                                var colorFirstColEndsWith = ColorCodeCtrl.Keys.Any(FirstCol.EndsWith) ? ColorCodeCtrl[FirstCol.Substring(FirstCol.Length - 3)] : Color.White;
                                var colorLastColEndsWith  = ColorCodeCtrl.Keys.Any(LastCol[i].EndsWith) ? ColorCodeCtrl[LastCol[i].Substring(LastCol[i].Length - 3)] : Color.White;
                                var colorSymbolCol        = ColorCodeCtrl.Keys.Any(data.SymbolCol[i].EndsWith) ? ColorCodeCtrl[data.SymbolCol[i].Substring(data.SymbolCol[i].Length - 3)] : Color.White;

                                // Erase the color code at the string end
                                SymbolCol[i] = ColorCodeCtrl.Keys.Any(data.SymbolCol[i].EndsWith) ? data.SymbolCol[i].Substring(0, data.SymbolCol[i].Length - 3) : data.SymbolCol[i];
                                LastCol[i]   = ColorCodeCtrl.Keys.Any(LastCol[i].EndsWith) ? LastCol[i].Substring(0, LastCol[i].Length - 3) : LastCol[i];

                                if (SymbolCol[i].Contains(Symbols.Fence))
                                {
                                    hbox.Add(indicator = new Label(-(TextSize / 2), 0, TextSize, hbox.RemainingHeight, Symbols.Fence, LabelAlignment.Left));
                                    indicator.Color    = Color.Green;

                                    // Apply color to LastCol
                                    var lastCol = LastCol[i].Replace("|", " ");
                                    hbox.Add(indicator = new Label(lastWidth, hbox.RemainingHeight, lastCol, locoGroups ? LabelAlignment.Center : LabelAlignment.Left));//center
                                    indicator.Color    = colorFirstColEndsWith == Color.White ? colorLastColEndsWith : colorFirstColEndsWith;
                                }
                                else
                                {
                                    // Font to bold, clickable label
                                    if (hbox.Position.Y == TimeHboxPositionY && i == 0)
                                    {
                                        hbox.Add(LabelFontToBold = new Label(lastWidth, hbox.RemainingHeight, LastCol[i], locoGroups ? LabelAlignment.Center : LabelAlignment.Left));
                                        LabelFontToBold.Click   += new Action <Control, Point>(FontToBold_Click);
                                    }
                                    else
                                    {
                                        if (i > 0)
                                        {
                                            hbox.Add(indicator = new Label(-(TextSize / 2), 0, TextSize, hbox.RemainingHeight, SymbolCol[i], LabelAlignment.Left));
                                            indicator.Color    = colorSymbolCol;
                                        }
                                        hbox.Add(indicator = new Label(lastWidth, hbox.RemainingHeight, LastCol[i], locoGroups ? LabelAlignment.Center : LabelAlignment.Left));
                                        indicator.Color    = colorLastColEndsWith;
                                    }
                                }
                            }
                        }

                        // Clickable symbol
                        if (hbox.Position.Y == TimeHboxPositionY)
                        {
                            var verticalWindow = normalVerticalMode ? Symbols.ArrowDown : Symbols.ArrowUp;// ▲ : ▶
                            hbox.Add(VerticalWindow = new Label(hbox.RemainingWidth - (TextSize * 2), 0, TextSize, hbox.RemainingHeight, verticalWindow.ToString(), LabelAlignment.Right));
                            VerticalWindow.Color    = Color.Yellow;
                            VerticalWindow.Click   += new Action <Control, Point>(VerticalWindow_Click);

                            var expandWindow = normalTextMode ? Symbols.ArrowToLeft : Symbols.ArrowToRight;// ◀ : ▶
                            hbox.Add(ExpandWindow = new Label(hbox.RemainingWidth - TextSize, 0, TextSize, hbox.RemainingHeight, expandWindow.ToString(), LabelAlignment.Right));
                            ExpandWindow.Color    = Color.Yellow;
                            ExpandWindow.Click   += new Action <Control, Point>(ExpandWindow_Click);
                        }
                        // Separator line
                        if (data.FirstCol.Contains("Sprtr"))
                        {
                            hbox.AddHorizontalSeparator();
                        }
                    }
                }
            }// close
            return(vbox);
        }
Esempio n. 19
0
 protected override ControlLayout Layout(ControlLayout layout)
 {
     return(layout);
 }
Esempio n. 20
0
        protected override ControlLayout Layout(ControlLayout layout)
        {
            var vbox = base.Layout(layout).AddLayoutVertical();

            if (Owner.Viewer.Simulator.Activity != null || Owner.Viewer.Simulator.TimetableMode)
            {
                var colWidth = (vbox.RemainingWidth - vbox.TextHeight * 2) / 5;
                {
                    var line = vbox.AddLayoutHorizontalLineOfText();
                    line.Add(new Label(colWidth, line.RemainingHeight, Viewer.Catalog.GetString("Number")));
                    line.Add(new Label(colWidth * 3, line.RemainingHeight, Viewer.Catalog.GetString("Service Name"), LabelAlignment.Left));
                    line.Add(new Label(colWidth, line.RemainingHeight, Viewer.Catalog.GetString("Viewed"), LabelAlignment.Right));
                }
                vbox.AddHorizontalSeparator();
                var scrollbox = vbox.AddLayoutScrollboxVertical(vbox.RemainingWidth);
                var train0    = Owner.Viewer.Simulator.Trains.Find(item => item.IsActualPlayerTrain);
                if (train0 != null)
                {
                    TrainLabel number, name, viewed;
                    var        line = scrollbox.AddLayoutHorizontalLineOfText();
                    line.Add(number = new TrainLabel(colWidth, line.RemainingHeight, Owner.Viewer, train0, train0.Number.ToString(), LabelAlignment.Left));
                    line.Add(name   = new TrainLabel(colWidth * 4 - Owner.TextFontDefault.Height, line.RemainingHeight, Owner.Viewer, train0, train0.Name, LabelAlignment.Left));
                    if (train0 == Owner.Viewer.SelectedTrain)
                    {
                        line.Add(viewed = new TrainLabel(Owner.TextFontDefault.Height, line.RemainingHeight, Owner.Viewer, train0, "*", LabelAlignment.Right));
                        viewed.Color    = Color.Red;
                    }
                    if (Owner.Viewer.Simulator.IsAutopilotMode)
                    {
                        number.Color = train0.IsPlayable ? Color.LightGreen : Color.White;
                        name.Color   = train0.IsPlayable ? Color.LightGreen : Color.White;
                    }
                    if (train0 is AITrain && (train0 as AITrain).MovementState == AITrain.AI_MOVEMENT_STATE.SUSPENDED)
                    {
                        number.Color = Color.Orange;
                        name.Color   = Color.Orange;
                    }
                    if (train0.IsActualPlayerTrain)
                    {
                        number.Color = Color.Red;
                        name.Color   = Color.Red;
                    }
                }
                foreach (var thisTrain in Owner.Viewer.Simulator.AI.AITrains)
                {
                    if (thisTrain.MovementState != AITrain.AI_MOVEMENT_STATE.AI_STATIC && thisTrain.TrainType != Train.TRAINTYPE.PLAYER &&
                        !(thisTrain.TrainType == Train.TRAINTYPE.AI_INCORPORATED && !thisTrain.IncorporatingTrain.IsPathless))
                    {
                        var        line = scrollbox.AddLayoutHorizontalLineOfText();
                        TrainLabel number, name, viewed;
                        line.Add(number = new TrainLabel(colWidth, line.RemainingHeight, Owner.Viewer, thisTrain, thisTrain.Number.ToString(), LabelAlignment.Left));
                        line.Add(name   = new TrainLabel(colWidth * 4 - Owner.TextFontDefault.Height, line.RemainingHeight, Owner.Viewer, thisTrain, thisTrain.Name, LabelAlignment.Left));
                        if (thisTrain == Owner.Viewer.SelectedTrain)
                        {
                            line.Add(viewed = new TrainLabel(Owner.TextFontDefault.Height, line.RemainingHeight, Owner.Viewer, thisTrain, "*", LabelAlignment.Right));
                            viewed.Color    = Color.Red;
                        }
                        if (Owner.Viewer.Simulator.IsAutopilotMode)
                        {
                            number.Color = thisTrain.IsPlayable ? Color.LightGreen : Color.White;
                            name.Color   = thisTrain.IsPlayable ? Color.LightGreen : Color.White;
                        }
                        if (thisTrain.MovementState == AITrain.AI_MOVEMENT_STATE.SUSPENDED)
                        {
                            number.Color = Color.Orange;
                            name.Color   = Color.Orange;
                        }
                        if (thisTrain.IsActualPlayerTrain)
                        {
                            number.Color = Color.Red;
                            name.Color   = Color.Red;
                        }
                    }
                }

                // Now list static trains with loco and cab
                if (Owner.Viewer.Simulator.IsAutopilotMode)
                {
                    foreach (var thisTrain in Owner.Viewer.Simulator.Trains)
                    {
                        if (thisTrain.TrainType == Train.TRAINTYPE.STATIC && thisTrain.IsPlayable)
                        {
                            var        line = scrollbox.AddLayoutHorizontalLineOfText();
                            TrainLabel number, name, viewed;
                            line.Add(number = new TrainLabel(colWidth, line.RemainingHeight, Owner.Viewer, thisTrain, thisTrain.Number.ToString(), LabelAlignment.Left));
                            line.Add(name   = new TrainLabel(colWidth * 4 - Owner.TextFontDefault.Height, line.RemainingHeight, Owner.Viewer, thisTrain, thisTrain.Name, LabelAlignment.Left));
                            if (thisTrain == Owner.Viewer.SelectedTrain)
                            {
                                line.Add(viewed = new TrainLabel(Owner.TextFontDefault.Height, line.RemainingHeight, Owner.Viewer, thisTrain, "*", LabelAlignment.Right));
                                viewed.Color    = Color.Red;
                            }
                            number.Color = Color.Yellow;
                            name.Color   = Color.Yellow;
                        }
                    }
                }
            }
            return(vbox);
        }