public CheckBox(Base parent) : base(parent) { Control.CheckBox check = new Control.CheckBox(this); check.SetPosition(10, 10); check.Checked += OnChecked; check.UnChecked += OnUnchecked; check.CheckChanged += OnCheckChanged; Control.LabeledCheckBox labeled = new Control.LabeledCheckBox(this); labeled.Text = "Labeled CheckBox"; labeled.Checked += OnChecked; labeled.UnChecked += OnUnchecked; labeled.CheckChanged += OnCheckChanged; Align.PlaceDownLeft(labeled, check, 10); Control.LabeledCheckBox labeled2 = new Control.LabeledCheckBox(this); labeled2.Text = "I'm autosized"; labeled2.SizeToChildren(); Align.PlaceDownLeft(labeled2, labeled, 10); Control.CheckBox check2 = new Control.CheckBox(this); check2.IsDisabled = true; Align.PlaceDownLeft(check2, labeled2, 20); }
public Docking(Base parent) : base(parent) { font = Skin.DefaultFont.Copy(); font.Size = 20; outer = new Control.Label(this); outer.SetBounds(10, 10, 400, 400); Control.Label inner1 = new Control.Label(outer); inner1.Text = "1"; inner1.Font = font; inner1.SetSize(100, 100); inner1.Dock = Pos.Left; Control.Label inner2 = new Control.Label(outer); inner2.Text = "2"; inner2.Font = font; inner2.SetSize(100, 100); inner2.Dock = Pos.Top; Control.Label inner3 = new Control.Label(outer); inner3.Text = "3"; inner3.Font = font; inner3.SetSize(100, 100); inner3.Dock = Pos.Right; Control.Label inner4 = new Control.Label(outer); inner4.Text = "4"; inner4.Font = font; inner4.SetSize(100, 100); inner4.Dock = Pos.Bottom; Control.Label inner5 = new Control.Label(outer); inner5.Text = "5"; inner5.Font = font; inner5.SetSize(100, 100); inner5.Dock = Pos.Fill; outer.DrawDebugOutlines = true; inner1.UserData.Add("test", CreateControls(inner1, 0, "Control 1", 440, 10)); inner2.UserData.Add("test", CreateControls(inner2, 1, "Control 2", 650, 10)); inner3.UserData.Add("test", CreateControls(inner3, 2, "Control 3", 440, 170)); inner4.UserData.Add("test", CreateControls(inner4, 3, "Control 4", 650, 170)); inner5.UserData.Add("test", CreateControls(inner5, 4, "Control 5", 440, 330)); Control.Label l_padding = new Control.Label(this); l_padding.Text = "Padding:"; l_padding.SetSize(50, 15); Align.PlaceDownLeft(l_padding, outer, 20); Control.HorizontalSlider padding = new Control.HorizontalSlider(this); padding.Min = 0; padding.Max = 200; padding.Value = 10; padding.SetSize(100, 20); padding.ValueChanged += PaddingChanged; Align.PlaceRightBottom(padding, l_padding); //DrawDebugOutlines = true; }
/// <summary> /// Lays out the control's interior according to alignment, padding, dock etc. /// </summary> /// <param name="skin">Skin to use.</param> protected override void Layout(Skin.Base skin) { base.Layout(skin); Align.PlaceDownLeft(m_Button, m_Label, 10); Align.CenterHorizontally(m_Button); m_InnerPanel.SizeToChildren(); m_InnerPanel.Height += 10; SizeToChildren(); }
/// <summary> /// Lays out the control's interior according to alignment, padding, dock etc. /// </summary> /// <param name="skin">Skin to use.</param> protected override void layout(Skin.SkinBase skin) { base.layout(skin); Align.PlaceDownLeft(button, label, 10); Align.CenterHorizontally(button); innerPanel.SizeToChildren(); innerPanel.Height += 10; SizeToChildren(); }
public Button(ControlBase parent) : base(parent) { buttonA = new Control.Button(this); buttonA.Text = "Event tester"; buttonA.SetBounds(200, 30, 300, 200); buttonA.Pressed += onButtonAp; buttonA.Clicked += onButtonAc; buttonA.Released += onButtonAr; buttonB = new Control.Button(this); buttonB.Text = "\u0417\u0430\u043C\u0435\u0436\u043D\u0430\u044F \u043C\u043E\u0432\u0430"; buttonB.SetPosition(0, 20); buttonC = new Control.Button(this); buttonC.Text = "Image button"; buttonC.SetImage("test16.png"); Align.PlaceDownLeft(buttonC, buttonB, 10); buttonD = new Control.Button(this); buttonD.SetImage("test16.png"); buttonD.SetSize(20, 20); Align.PlaceDownLeft(buttonD, buttonC, 10); buttonE = new Control.Button(this); buttonE.Text = "Toggle me"; buttonE.IsToggle = true; buttonE.Toggled += onToggle; buttonE.ToggledOn += onToggleOn; buttonE.ToggledOff += onToggleOff; Align.PlaceDownLeft(buttonE, buttonD, 10); buttonF = new Control.Button(this); buttonF.Text = "Disabled :D"; buttonF.IsDisabled = true; Align.PlaceDownLeft(buttonF, buttonE, 10); buttonG = new Control.Button(this); buttonG.Text = "With Tooltip"; buttonG.SetToolTipText("This is tooltip"); Align.PlaceDownLeft(buttonG, buttonF, 10); buttonH = new Control.Button(this); buttonH.Text = "I'm autosized"; buttonH.SizeToContents(); Align.PlaceDownLeft(buttonH, buttonG, 10); }
Base CreateControls(Control.Base subject, int dock_idx, String name, int x, int y) { Control.GroupBox gb = new Control.GroupBox(this); gb.SetBounds(x, y, 200, 150); gb.Text = name; Control.Label l_width = new Control.Label(gb); l_width.SetSize(35, 15); l_width.Text = "Width:"; Control.HorizontalSlider width = new HorizontalSlider(gb); width.Name = "Width"; width.UserData.Add("test", subject); width.Min = 50; width.Max = 350; width.Value = 100; width.SetSize(55, 15); width.ValueChanged += WidthChanged; Align.PlaceRightBottom(width, l_width); Control.Label l_height = new Control.Label(gb); l_height.SetSize(35, 15); l_height.Text = "Height:"; Align.PlaceRightBottom(l_height, width, 10); Control.HorizontalSlider height = new Control.HorizontalSlider(gb); height.Name = "Height"; height.UserData.Add("test", subject); height.Min = 50; height.Max = 350; height.Value = 100; height.SetSize(55, 15); height.ValueChanged += HeightChanged; Align.PlaceRightBottom(height, l_height); Control.RadioButtonGroup dock = new RadioButtonGroup(gb, "Dock"); dock.UserData.Add("test", subject); // store control that we are controlling dock.AddOption("Left"); dock.AddOption("Top"); dock.AddOption("Right"); dock.AddOption("Bottom"); dock.AddOption("Fill"); dock.SetSelection(dock_idx); Align.PlaceDownLeft(dock, l_width, 5); //dock.DrawDebugOutlines = true; dock.Invalidate(); Control.Label l_margin = new Control.Label(gb); l_margin.Text = "Margin:"; l_margin.SetBounds(75, 20, 35, 15); //Align.PlaceRightBottom(l_margin, dock); // can't use Align to anchor with 'dock' because radio group is resized only after layout ~_~ // this is become really cumbersome //l_margin.DrawDebugOutlines = true; Control.HorizontalSlider margin = new HorizontalSlider(gb); margin.Name = "Margin"; margin.UserData.Add("test", subject); margin.Min = 0; margin.Max = 50; margin.Value = 10; margin.SetSize(55, 15); margin.ValueChanged += MarginChanged; Align.PlaceRightBottom(margin, l_margin); dock.SelectionChanged += DockChanged; return(gb); }
private void CreateBasicTab(TabControl tcontainer) { var container = tcontainer.AddPage("Basic").Page; tcontainer.Dock = Gwen.Pos.Fill; //modes GroupBox gb = new GroupBox(container); var modesgb = gb; gb.Text = "Modes"; gb.Width = 180; gb.Height = 200; var marg = tcontainer.Margin; marg.Bottom = 5; tcontainer.Margin = marg; marg = gb.Margin; marg.Bottom = 15; marg.Right = 5; gb.Margin = marg; RecurseLayout(Skin); Gwen.Align.AlignBottom(gb); Gwen.Align.AlignRight(gb); LabeledCheckBox lcb = new LabeledCheckBox(gb); marg = lcb.Margin; marg.Top += 5; lcb.Margin = marg; lcb.Text = "Recording Mode"; lcb.Dock = Pos.Top; lcb.IsChecked = Settings.Local.RecordingMode; lcb.CheckChanged += (o, e) => { Settings.Local.RecordingMode = ((LabeledCheckBox)o).IsChecked; }; lcb.SetToolTipText(@"Disables many editor features and changes the client so it can be recorded with a specific aesthetic"); lcb = new LabeledCheckBox(gb); lcb.Text = "Color Playback"; lcb.IsChecked = Settings.Local.ColorPlayback; lcb.CheckChanged += (o, e) => { Settings.Local.ColorPlayback = ((LabeledCheckBox)o).IsChecked; }; lcb.SetToolTipText(@"During playback the lines will no longer turn black by default, and will stay as they are in editor mode"); lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Hit Test"; lcb.IsChecked = Settings.Local.HitTest; lcb.CheckChanged += (o, e) => { Settings.Local.HitTest = ((LabeledCheckBox)o).IsChecked; }; lcb.SetToolTipText(@"During playback, hitting a line will turn it the color of the original line."); lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Preview Mode"; lcb.IsChecked = Settings.Local.PreviewMode; lcb.CheckChanged += (o, e) => { Settings.Local.PreviewMode = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb.SetToolTipText(@"The opposite of Color Playback. The editor will show the lines as black instead"); // lcb = new LabeledCheckBox(gb); lcb.Text = "Zero Start"; lcb.IsChecked = game.Track.ZeroStart; lcb.CheckChanged += (o, e) => { game.Track.ZeroStart = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb.SetToolTipText(@"Starts the track with 0 momentum"); lcb = new LabeledCheckBox(gb); lcb.Text = "Smooth Camera"; lcb.IsChecked = Settings.SmoothCamera; lcb.CheckChanged += (o, e) => { Settings.SmoothCamera = ((LabeledCheckBox)o).IsChecked; Settings.Save(); game.Track.Stop(); game.Track.InitCamera(); var round = FindChildByName("roundlegacycamera", true); foreach (var c in round.Children) { c.IsDisabled = Settings.SmoothCamera; } }; lcb.Dock = Pos.Top; lcb.SetToolTipText("Enables a smooth predictive camera.\r\nExperimental and subject to change."); lcb = new LabeledCheckBox(gb); lcb.Name = "roundlegacycamera"; lcb.Text = "Round Legacy Camera"; lcb.IsChecked = Settings.RoundLegacyCamera; lcb.CheckChanged += (o, e) => { Settings.RoundLegacyCamera = ((LabeledCheckBox)o).IsChecked; Settings.Save(); game.Track.Stop(); game.Track.InitCamera(); }; lcb.Dock = Pos.Top; lcb.SetToolTipText("If the new camera is disabled\r\nmakes the camera bounds round\r\ninstead of rectangle"); foreach (var c in lcb.Children) { c.IsDisabled = Settings.SmoothCamera; } lcb = new LabeledCheckBox(gb); lcb.Text = "Smooth Playback"; lcb.IsChecked = Settings.SmoothPlayback; lcb.CheckChanged += (o, e) => { Settings.SmoothPlayback = ((LabeledCheckBox)o).IsChecked; Settings.Save(); }; lcb.SetToolTipText("Interpolates frames for a smooth 60+ fps."); lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Onion Skinning"; lcb.IsChecked = Settings.Local.OnionSkinning; lcb.CheckChanged += (o, e) => { Settings.Local.OnionSkinning = ((LabeledCheckBox)o).IsChecked; game.Invalidate(); }; lcb.Dock = Pos.Top; // gb = new GroupBox(container); gb.Text = "Editor View"; gb.Width = 180; gb.Height = 100; marg = gb.Margin; marg.Bottom = 15; marg.Right = 5; gb.Margin = marg; Gwen.Align.AlignTop(gb); Gwen.Align.AlignRight(gb); Align.PlaceDownLeft(modesgb, gb); lcb = new LabeledCheckBox(gb); marg = lcb.Margin; marg.Top += 5; lcb.Margin = marg; lcb.Text = "Contact Lines"; lcb.IsChecked = Settings.Local.DrawContactPoints; lcb.CheckChanged += (o, e) => { Settings.Local.DrawContactPoints = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Momentum Vectors"; lcb.IsChecked = Settings.Local.MomentumVectors; lcb.CheckChanged += (o, e) => { Settings.Local.MomentumVectors = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Gravity Wells"; lcb.IsChecked = Settings.Local.RenderGravityWells; lcb.CheckChanged += (o, e) => { Settings.Local.RenderGravityWells = ((LabeledCheckBox)o).IsChecked; game.Track.Invalidate(); }; lcb.Dock = Pos.Top; //playback gb = new GroupBox(container); gb.Text = "Playback"; gb.Width = 180; gb.Height = 150; marg = gb.Margin; marg.Bottom = 5; marg.Right = 5; gb.Margin = marg; Gwen.Align.AlignTop(gb); Gwen.Align.AlignLeft(gb); RadioButtonGroup rbg = new RadioButtonGroup(gb); rbg.Text = "Playback Zoom"; rbg.AddOption("Current Zoom"); rbg.AddOption("Default Zoom"); rbg.AddOption("Specific Zoom"); rbg.SetSelection(Settings.PlaybackZoomType); rbg.SelectionChanged += (o, e) => { Settings.PlaybackZoomType = ((RadioButtonGroup)o).SelectedIndex; Settings.Save(); }; rbg.Dock = Pos.Top; rbg.AutoSizeToContents = false; rbg.Height = 90; var nud = new NumericUpDown(rbg); nud.Value = Settings.PlaybackZoomValue; nud.Max = 24; nud.Min = 1; nud.Dock = Pos.Bottom; nud.ValueChanged += (o, e) => { Settings.PlaybackZoomValue = ((NumericUpDown)o).Value; Settings.Save(); }; var cbplayback = new ComboBox(gb); cbplayback.Dock = Pos.Top; for (var i = 0; i < Constants.MotionArray.Length; i++) { var f = (Constants.MotionArray[i] / (float)Constants.PhysicsRate); cbplayback.AddItem("Playback: " + f + "x", f.ToString(CultureInfo.InvariantCulture), f); } cbplayback.SelectByName(Settings.Local.DefaultPlayback.ToString(CultureInfo.InvariantCulture)); cbplayback.ItemSelected += (o, e) => { Settings.Local.DefaultPlayback = (float)e.SelectedItem.UserData; }; var cbslowmo = new ComboBox(gb); cbslowmo.Dock = Pos.Top; var fpsarray = new[] { 1, 2, 5, 10, 20 }; for (var i = 0; i < fpsarray.Length; i++) { cbslowmo.AddItem("Slowmo FPS: " + fpsarray[i], fpsarray[i].ToString(CultureInfo.InvariantCulture), fpsarray[i]); } cbslowmo.SelectByName(Settings.Local.SlowmoSpeed.ToString(CultureInfo.InvariantCulture)); cbslowmo.ItemSelected += (o, e) => { Settings.Local.SlowmoSpeed = (int)e.SelectedItem.UserData; }; //editor var backup = gb; gb = new GroupBox(container); gb.Text = "Editor"; gb.Width = 180; gb.Height = 170; marg = gb.Margin; marg.Bottom = 5; marg.Right = 5; gb.Margin = marg; Gwen.Align.PlaceDownLeft(gb, backup); //Gwen.Align.AlignRight(gb); lcb = new LabeledCheckBox(gb); marg = lcb.Margin; marg.Top += 5; lcb.Margin = marg; lcb.Text = "All Pink Lifelock"; lcb.SetToolTipText(@"I hope you know where the manual is."); lcb.IsChecked = Settings.PinkLifelock; lcb.CheckChanged += (o, e) => { Settings.PinkLifelock = ((LabeledCheckBox)o).IsChecked; Settings.Save(); }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Disable Line Snap"; lcb.IsChecked = Settings.Local.DisableSnap; lcb.CheckChanged += (o, e) => { Settings.Local.DisableSnap = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Force XY Snap"; lcb.IsChecked = Settings.Local.ForceXySnap; lcb.CheckChanged += (o, e) => { Settings.Local.ForceXySnap = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Superzoom"; lcb.IsChecked = Settings.SuperZoom; lcb.CheckChanged += (o, e) => { Settings.SuperZoom = ((LabeledCheckBox)o).IsChecked; Settings.Save(); }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "White BG"; lcb.IsChecked = Settings.WhiteBG; lcb.CheckChanged += (o, e) => { Settings.WhiteBG = ((LabeledCheckBox)o).IsChecked; Settings.Save(); }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Night Mode"; lcb.IsChecked = Settings.NightMode; lcb.CheckChanged += (o, e) => { Settings.NightMode = ((LabeledCheckBox)o).IsChecked; Settings.Save(); game.Invalidate(); game.Canvas.ButtonsToggleNightmode(); }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(container); lcb.Text = "Check for Updates"; lcb.IsChecked = Settings.CheckForUpdates; lcb.CheckChanged += (o, e) => { Settings.CheckForUpdates = ((LabeledCheckBox)o).IsChecked; Settings.Save(); }; lcb.Dock = Pos.Bottom; }
private void CreateBasicTab(TabControl tcontainer) { var container = tcontainer.AddPage("Basic").Page; tcontainer.Dock = Gwen.Pos.Fill; //modes GroupBox gb = new GroupBox(container); var modesgb = gb; gb.Text = "Modes"; gb.Width = 180; gb.Height = 160; var marg = tcontainer.Margin; marg.Bottom = 5; tcontainer.Margin = marg; marg = gb.Margin; marg.Bottom = 15; marg.Right = 5; gb.Margin = marg; RecurseLayout(Skin); Gwen.Align.AlignBottom(gb); Gwen.Align.AlignRight(gb); LabeledCheckBox lcb = new LabeledCheckBox(gb); marg = lcb.Margin; marg.Top += 5; lcb.Margin = marg; lcb.Text = "Recording Mode"; lcb.Dock = Pos.Top; lcb.IsChecked = game.SettingRecordingMode; lcb.CheckChanged += (o, e) => { game.SettingRecordingMode = ((LabeledCheckBox)o).IsChecked; }; lcb.SetToolTipText(@"Disables many editor features and changes the client so it can be recorded with a specific aesthetic"); lcb = new LabeledCheckBox(gb); lcb.Text = "Color Playback"; lcb.IsChecked = game.SettingColorPlayback; lcb.CheckChanged += (o, e) => { game.SettingColorPlayback = ((LabeledCheckBox)o).IsChecked; }; lcb.SetToolTipText(@"During playback the lines will no longer turn black by default, and will stay as they are in editor mode"); lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Hit Test"; lcb.IsChecked = game.HitTest; lcb.CheckChanged += (o, e) => { game.HitTest = ((LabeledCheckBox)o).IsChecked; }; lcb.SetToolTipText(@"During playback, hitting a line will turn it the color of the original line."); lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Preview Mode"; lcb.IsChecked = game.SettingPreviewMode; lcb.CheckChanged += (o, e) => { game.SettingPreviewMode = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb.SetToolTipText(@"The opposite of Color Playback. The editor will shoe the lines as black instead"); // lcb = new LabeledCheckBox(gb); lcb.Text = "Zero Start"; lcb.IsChecked = game.Track.ZeroStart; lcb.CheckChanged += (o, e) => { game.Track.ZeroStart = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb.SetToolTipText(@"Starts the track with 0 momentum"); lcb = new LabeledCheckBox(gb); lcb.Text = "Smooth Camera"; lcb.IsChecked = Settings.Default.SmoothCamera; lcb.CheckChanged += (o, e) => { Settings.Default.SmoothCamera = ((LabeledCheckBox)o).IsChecked; Settings.Default.Save(); }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Onion Skinning"; lcb.IsChecked = game.SettingOnionSkinning; lcb.CheckChanged += (o, e) => { game.SettingOnionSkinning = ((LabeledCheckBox)o).IsChecked; game.Invalidate(); }; lcb.Dock = Pos.Top; // gb = new GroupBox(container); gb.Text = "Editor View"; gb.Width = 180; gb.Height = 100; marg = gb.Margin; marg.Bottom = 15; marg.Right = 5; gb.Margin = marg; Gwen.Align.AlignTop(gb); Gwen.Align.AlignRight(gb); Align.PlaceDownLeft(modesgb, gb); lcb = new LabeledCheckBox(gb); marg = lcb.Margin; marg.Top += 5; lcb.Margin = marg; lcb.Text = "Contact Lines"; lcb.IsChecked = game.SettingDrawContactPoints; lcb.CheckChanged += (o, e) => { game.SettingDrawContactPoints = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Momentum Vectors"; lcb.IsChecked = game.SettingMomentumVectors; lcb.CheckChanged += (o, e) => { game.SettingMomentumVectors = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Gravity Wells"; lcb.IsChecked = game.SettingRenderGravityWells; lcb.CheckChanged += (o, e) => { game.SettingRenderGravityWells = ((LabeledCheckBox)o).IsChecked; game.InvalidateTrack(); }; lcb.Dock = Pos.Top; //playback gb = new GroupBox(container); gb.Text = "Playback"; gb.Width = 180; gb.Height = 150; marg = gb.Margin; marg.Bottom = 5; marg.Right = 5; gb.Margin = marg; Gwen.Align.AlignTop(gb); Gwen.Align.AlignLeft(gb); RadioButtonGroup rbg = new RadioButtonGroup(gb); rbg.Text = "Playback Zoom"; rbg.AddOption("Current Zoom"); rbg.AddOption("Default Zoom"); rbg.AddOption("Specific Zoom"); rbg.SetSelection(Settings.Default.PlaybackZoom); rbg.SelectionChanged += (o, e) => { Settings.Default.PlaybackZoom = ((RadioButtonGroup)o).SelectedIndex; Settings.Default.Save(); }; rbg.Dock = Pos.Top; rbg.AutoSizeToContents = false; rbg.Height = 90; var nud = new NumericUpDown(rbg); nud.Value = Settings.Default.PlaybackZoomSpecific; nud.Max = 24; nud.Min = 1; nud.Dock = Pos.Bottom; nud.ValueChanged += (o, e) => { Settings.Default.PlaybackZoomSpecific = ((NumericUpDown)o).Value; Settings.Default.Save(); }; var cbplayback = new ComboBox(gb); cbplayback.Dock = Pos.Top; for (var i = 0; i < GLWindow.MotionArray.Length; i++) { var f = (GLWindow.MotionArray[i] / 40f); cbplayback.AddItem("Playback: " + f + "x", f.ToString(CultureInfo.InvariantCulture), f); } cbplayback.SelectByName(game.SettingDefaultPlayback.ToString(CultureInfo.InvariantCulture)); cbplayback.ItemSelected += (o, e) => { game.SettingDefaultPlayback = (float)e.SelectedItem.UserData; }; var cbslowmo = new ComboBox(gb); cbslowmo.Dock = Pos.Top; var fpsarray = new[] { 1, 2, 5, 10, 20 }; for (var i = 0; i < fpsarray.Length; i++) { cbslowmo.AddItem("Slowmo FPS: " + fpsarray[i], fpsarray[i].ToString(CultureInfo.InvariantCulture), fpsarray[i]); } cbslowmo.SelectByName(game.SettingSlowmoSpeed.ToString(CultureInfo.InvariantCulture)); cbslowmo.ItemSelected += (o, e) => { game.SettingSlowmoSpeed = (int)e.SelectedItem.UserData; }; //editor var backup = gb; gb = new GroupBox(container); gb.Text = "Editor"; gb.Width = 180; gb.Height = 170; marg = gb.Margin; marg.Bottom = 5; marg.Right = 5; gb.Margin = marg; Gwen.Align.PlaceDownLeft(gb, backup); //Gwen.Align.AlignRight(gb); lcb = new LabeledCheckBox(gb); marg = lcb.Margin; marg.Top += 5; lcb.Margin = marg; lcb.Text = "All Pink Lifelock"; lcb.IsChecked = Settings.Default.PinkLifelock; lcb.CheckChanged += (o, e) => { Settings.Default.PinkLifelock = ((LabeledCheckBox)o).IsChecked; Settings.Default.Save(); }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Disable Line Snap"; lcb.IsChecked = game.SettingDisableSnap; lcb.CheckChanged += (o, e) => { game.SettingDisableSnap = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Force XY Snap"; lcb.IsChecked = game.SettingForceXySnap; lcb.CheckChanged += (o, e) => { game.SettingForceXySnap = ((LabeledCheckBox)o).IsChecked; }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Superzoom"; lcb.IsChecked = Settings.Default.SuperZoom; lcb.CheckChanged += (o, e) => { Settings.Default.SuperZoom = ((LabeledCheckBox)o).IsChecked; Settings.Default.Save(); }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "White BG"; lcb.SetToolTipText(@"For if you're a bad person"); lcb.IsChecked = Settings.Default.WhiteBG; lcb.CheckChanged += (o, e) => { Settings.Default.WhiteBG = ((LabeledCheckBox)o).IsChecked; Settings.Default.Save(); if (!Settings.Default.NightMode) { GL.ClearColor(Settings.Default.WhiteBG ? GLWindow.ColorWhite : GLWindow.ColorOffwhite); } }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Night Mode"; lcb.IsChecked = Settings.Default.NightMode; lcb.CheckChanged += (o, e) => { if (((LabeledCheckBox)o).IsChecked) { GL.ClearColor(new Color4(50, 50, 60, 255)); } else { GL.ClearColor(Settings.Default.WhiteBG ? GLWindow.ColorWhite : GLWindow.ColorOffwhite); } Settings.Default.NightMode = ((LabeledCheckBox)o).IsChecked; Settings.Default.Save(); game.Canvas.ButtonsToggleNightmode(); game.Track.RefreshTrack(); }; lcb.Dock = Pos.Top; lcb = new LabeledCheckBox(gb); lcb.Text = "Live Line Editing"; lcb.SetToolTipText("For the line adjust tool during playback\r\nEnable this if you have a slow PC"); lcb.IsChecked = Settings.Default.LiveAdjustment; lcb.CheckChanged += (o, e) => { Settings.Default.LiveAdjustment = ((LabeledCheckBox)o).IsChecked; Settings.Default.Save(); }; lcb.Dock = Pos.Top; }
public static GameCanvas CreateCanvas(GLWindow game) { var renderer = new Gwen.Renderer.OpenTK(); var tx = new Texture(renderer); Gwen.Renderer.OpenTK.LoadTextureInternal(tx, GameResources.DefaultSkin); var skin = new TexturedBase(renderer, tx, GameResources.DefaultColors); var bmpfont = new Gwen.Renderer.OpenTK.BitmapFont(renderer, "SourceSansPro", 10, 10, GameResources.SourceSansProq, new List <System.Drawing.Bitmap> { GameResources.SourceSansPro_img }); skin.DefaultFont = bmpfont; var canvas = new GameCanvas(skin, game) { Renderer = renderer }; canvas.SpriteLoading = new Sprite(canvas); canvas.SpriteLoading.SetImage(GameResources.loading); canvas.SpriteLoading.IsHidden = true; canvas.SpriteLoading.IsTabable = false; canvas.SpriteLoading.KeyboardInputEnabled = false; canvas.SpriteLoading.MouseInputEnabled = false; canvas.SpriteLoading.SetSize(32, 32); canvas.SpriteLoading.RotationPoint.X = 16; canvas.SpriteLoading.RotationPoint.Y = 16; canvas.SpriteLoading.SetPosition(canvas.Width - 32, 0); var timeslider = new HorizontalIntSlider(canvas) { X = 120, Y = canvas.Height - 25, Width = canvas.Width - 120 * 2, Height = 25, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "timeslider", }; var btnfastfoward = new ImageButton(canvas) { X = timeslider.Right, Y = canvas.Height - 25, Width = 24, Height = 24, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "btnfastforward" }; btnfastfoward.SetImage(GameResources.fast_forward, GameResources.fast_forward_white); var btnslowmo = new ImageButton(canvas) { X = timeslider.X - 24, Y = canvas.Height - 25, Width = 24, Height = 24, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "btnslowmo" }; btnslowmo.SetImage(GameResources.rewind, GameResources.rewind_white); btnslowmo.Clicked += (o, e) => { game.PlaybackDown(); }; btnfastfoward.Clicked += (o, e) => { game.PlaybackUp(); }; timeslider.ValueChanged += canvas.timeslider_ValueChanged; var labelTrackName = new Label(canvas) { TextColor = System.Drawing.Color.Black, Dock = Pos.Left, Margin = new Margin(5, 0, 0, 0), Name = "trackname" }; Label labeliteration = new Label(canvas); labeliteration.Name = "labeliterations"; labeliteration.Font = new Font(renderer, "Arial", 18); labeliteration.SetText(""); labeliteration.TextColor = Color.Black; Align.PlaceDownLeft(labeliteration, labelTrackName); var toprightcontainer = new ControlBase(canvas) { Dock = Pos.Right, Width = 150, Height = 300, MouseInputEnabled = false }; var fps = new Label(toprightcontainer) { TextColor = Color.Black, Name = "fps" }; var labelppf = new Label(toprightcontainer) { TextColor = Color.Black, Name = "ppf" }; var labelPlayback = new Label(toprightcontainer) { TextColor = Color.Black, Name = "labelplayback" }; var flagtime = new Label(canvas) { TextColor = Color.Black, Name = "flagtime" }; var textheight = renderer.MeasureText(skin.DefaultFont, "@").Y + 3; labelppf.SetPosition(0, textheight); labelPlayback.SetPosition(0, textheight * 2); var vslider = new VerticalSlider(canvas) { Min = 0.1f, Max = 24f, Value = game.Track.Zoom, IsTabable = false }; vslider.ValueChanged += (o, e) => { var slider = (VerticalSlider)o; var diff = slider.Value - game.Track.Zoom; game.Zoom(diff, false); }; vslider.SetPosition(0, (int)canvas.Height - 150); vslider.Name = "vslider"; Align.AlignRight(vslider); vslider.Height = 125; return(canvas); }
public GameCanvas(SkinBase skin, MainWindow Game, Gwen.Renderer.OpenTK renderer) : base(skin) { game = Game; this.Renderer = renderer; BoundsChanged += GameCanvas_BoundsChanged; SpriteLoading = new Sprite(this); SpriteLoading.SetImage(GameResources.loading); SpriteLoading.IsHidden = true; SpriteLoading.IsTabable = false; SpriteLoading.KeyboardInputEnabled = false; SpriteLoading.MouseInputEnabled = false; SpriteLoading.SetSize(32, 32); SpriteLoading.RotationPoint.X = 16; SpriteLoading.RotationPoint.Y = 16; SpriteLoading.SetPosition(Width - 32, 0); Scrubber = new HorizontalIntSlider(this) { X = 120, Y = Height - 25, Width = Width - 120 * 2, Height = 25, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "timeslider", }; var btnfastfoward = new ImageButton(this) { X = Scrubber.Right, Y = Height - 36, Width = 32, Height = 32, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "btnfastforward" }; btnfastfoward.SetImage(GameResources.fast_forward, GameResources.fast_forward_white); var btnslowmo = new ImageButton(this) { X = Scrubber.X - 24, Y = Height - 36, Width = 32, Height = 32, IsTabable = false, IsHidden = true, KeyboardInputEnabled = false, Name = "btnslowmo" }; btnslowmo.SetImage(GameResources.rewind, GameResources.rewind_white); btnslowmo.Clicked += (o, e) => { game.PlaybackSpeedDown(); }; btnfastfoward.Clicked += (o, e) => { game.PlaybackSpeedUp(); }; Scrubber.ValueChanged += scrubber_ValueChanged; var labelTrackName = new Label(this) { TextColor = System.Drawing.Color.Black, Dock = Pos.Left, Margin = new Margin(5, 0, 0, 20), Name = "trackname" }; Label labeliteration = new Label(this); labeliteration.Name = "labeliterations"; labeliteration.SetText(""); labeliteration.TextColor = Color.Black; Align.PlaceDownLeft(labeliteration, labelTrackName); var toprightcontainer = new ControlBase(this) { Dock = Pos.Right, IsTabable = false, Width = 150, Height = 300, MouseInputEnabled = false }; new Label(toprightcontainer) { TextColor = Color.Black, Name = "fps" }; var labelppf = new Label(toprightcontainer) { TextColor = Color.Black, Name = "ppf" }; var labelPlayback = new Label(toprightcontainer) { TextColor = Color.Black, Name = "labelplayback" }; new Label(this) { TextColor = Color.Black, Name = "flagtime" }; var textheight = renderer.MeasureText(skin.DefaultFont, "").Y + 3; labelppf.SetPosition(0, textheight); labelPlayback.SetPosition(0, textheight * 2); var vslider = new VerticalSlider(this) { Min = 0.1f, Max = 24f, Value = game.Track.Zoom, IsTabable = false, KeyboardInputEnabled = false }; vslider.ValueChanged += (o, e) => { var slider = (VerticalSlider)o; game.SetZoom(slider.Value, false); }; vslider.SetPosition(0, (int)Height - 150); vslider.Name = "vslider"; Align.AlignRight(vslider); vslider.Height = 125; }
public static void Create(MainWindow game) { string howto = "You are about to export your track as a video file. Make sure the end of the track is marked by a flag. " + "It will be located in your line rider user directory (Documents/LRA).\r\n" + "Please allow some minutes depending on your computer speed. " + "The window will become unresponsive during this time.\n\n" + "After recording, a console window will open to encode the video. " + "Closing it will cancel the process and all progress will be lost."; if (!SafeFrameBuffer.CanRecord) { howto = "Video export is not supported on this machine.\n\nSorry."; } var popup = PopupWindow.Create(howto, "Export Video", true, true); popup.Width = 350; popup.Container.Height += 50; var btn = popup.Container.FindChildByName("Okay"); btn.Margin = new Margin(btn.Margin.Left, btn.Margin.Top + (Settings.Local.EnableSong ? 70 : 50), btn.Margin.Right, btn.Margin.Bottom); btn = popup.Container.FindChildByName("Cancel"); btn.Margin = new Margin(btn.Margin.Left, btn.Margin.Top + (Settings.Local.EnableSong ? 70 : 50), btn.Margin.Right, btn.Margin.Bottom); popup.Layout(); var radio = new RadioButtonGroup(popup.Container); radio.Name = "qualityselector"; if (Settings.Record108p) { radio.AddOption("720p"); radio.AddOption("1080p").Select(); } else { radio.AddOption("720p").Select(); radio.AddOption("1080p"); } if (!SafeFrameBuffer.CanRecord) { radio.IsHidden = true; } LabeledCheckBox smooth = new LabeledCheckBox(popup.Container); smooth.Name = "smooth"; smooth.IsChecked = Settings.RecordSmooth; smooth.Text = "Smooth Playback"; Align.AlignBottom(smooth); LabeledCheckBox music = new LabeledCheckBox(popup.Container); music.Name = "music"; music.IsChecked = Settings.Local.EnableSong && Settings.RecordMusic; music.IsHidden = !Settings.Local.EnableSong; music.Text = "Include Music"; if (Settings.Local.EnableSong) { popup.Container.Height += 20; Align.PlaceDownLeft(music, smooth); } popup.Layout(); popup.SetPosition((game.RenderSize.Width / 2) - (popup.Width / 2), (game.RenderSize.Height / 2) - (popup.Height / 2)); popup.Dismissed += (o, e) => { if (popup.Result == System.Windows.Forms.DialogResult.OK) { var radiogrp = radio; bool is1080p = radiogrp.Selected.Text == "1080p"; Settings.Record108p = is1080p; Settings.RecordSmooth = smooth.IsChecked; if (Settings.Local.EnableSong) { Settings.RecordMusic = music.IsChecked; } Settings.Save(); if (game.Track.GetFlag() == null) { var pop = PopupWindow.Create( "No flag detected, place one at the end of the track so the recorder knows where to stop.", "Error", true, false); } else if (game.Track.Name == Utils.Constants.DefaultTrackName) { var pop = PopupWindow.Create( "Please name your track before recording.", "Error", true, false); } else { IO.TrackRecorder.RecordTrack(game, is1080p, smooth.IsChecked, music.IsChecked); } } }; }