private void PopulatePlayback(ControlBase parent) { var playbackzoom = GwenHelper.CreateHeaderPanel(parent, "Playback Zoom"); RadioButtonGroup pbzoom = new RadioButtonGroup(playbackzoom) { Dock = Dock.Left, ShouldDrawBackground = false, }; pbzoom.AddOption("Default Zoom"); pbzoom.AddOption("Current Zoom"); pbzoom.AddOption("Specific Zoom"); Spinner playbackspinner = new Spinner(pbzoom) { Dock = Dock.Bottom, Max = 24, Min = 1, }; pbzoom.SelectionChanged += (o, e) => { Settings.PlaybackZoomType = ((RadioButtonGroup)o).SelectedIndex; Settings.Save(); playbackspinner.IsHidden = (((RadioButtonGroup)o).SelectedLabel != "Specific Zoom"); }; playbackspinner.ValueChanged += (o, e) => { Settings.PlaybackZoomValue = (float)((Spinner)o).Value; Settings.Save(); }; pbzoom.SetSelection(Settings.PlaybackZoomType); playbackspinner.Value = Settings.PlaybackZoomValue; var playbackmode = GwenHelper.CreateHeaderPanel(parent, "Playback Color"); GwenHelper.AddCheckbox(playbackmode, "Color Playback", Settings.ColorPlayback, (o, e) => { Settings.ColorPlayback = ((Checkbox)o).IsChecked; Settings.Save(); }); var preview = GwenHelper.AddCheckbox(playbackmode, "Preview Mode", Settings.PreviewMode, (o, e) => { Settings.PreviewMode = ((Checkbox)o).IsChecked; Settings.Save(); }); var recording = GwenHelper.AddCheckbox(playbackmode, "Recording Mode", Settings.Local.RecordingMode, (o, e) => { Settings.Local.RecordingMode = ((Checkbox)o).IsChecked; }); var framerate = GwenHelper.CreateHeaderPanel(parent, "Frame Control"); var smooth = GwenHelper.AddCheckbox(framerate, "Smooth Playback", Settings.SmoothPlayback, (o, e) => { Settings.SmoothPlayback = ((Checkbox)o).IsChecked; Settings.Save(); }); ComboBox pbrate = GwenHelper.CreateLabeledCombobox(framerate, "Playback Rate:"); for (var i = 0; i < Constants.MotionArray.Length; i++) { var f = (Constants.MotionArray[i] / (float)Constants.PhysicsRate); pbrate.AddItem(f + "x", f.ToString(CultureInfo.InvariantCulture), f); } pbrate.SelectByName(Settings.DefaultPlayback.ToString(CultureInfo.InvariantCulture)); pbrate.ItemSelected += (o, e) => { Settings.DefaultPlayback = (float)e.SelectedItem.UserData; Settings.Save(); }; var cbslowmo = GwenHelper.CreateLabeledCombobox(framerate, "Slowmo FPS:"); var fpsarray = new[] { 1, 2, 5, 10, 20 }; for (var i = 0; i < fpsarray.Length; i++) { cbslowmo.AddItem(fpsarray[i].ToString(), fpsarray[i].ToString(CultureInfo.InvariantCulture), fpsarray[i]); } cbslowmo.SelectByName(Settings.SlowmoSpeed.ToString(CultureInfo.InvariantCulture)); cbslowmo.ItemSelected += (o, e) => { Settings.SlowmoSpeed = (int)e.SelectedItem.UserData; Settings.Save(); }; smooth.Tooltip = "Interpolates frames from the base\nphysics rate of 40 frames/second\nup to 60 frames/second"; }
private void PopulateRiderSettings(ControlBase parent) { var scarfSettingPanel = GwenHelper.CreateHeaderPanel(parent, "Scarf Settings"); var riderSettingPanel = GwenHelper.CreateHeaderPanel(parent, "Rider Settings"); ComboBox scarfCombobox = GwenHelper.CreateLabeledCombobox(scarfSettingPanel, "Selected Scarf:"); scarfCombobox.AddItem("Default", "*default*", "*default*"); string[] scarfPaths = Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\LRA\\Scarves"); for (int i = 0; i < scarfPaths.Length; i++) { string scarfNames = Path.GetFileName(scarfPaths[i]); scarfCombobox.AddItem(scarfNames, scarfNames, scarfNames); } scarfCombobox.ItemSelected += (o, e) => { Settings.SelectedScarf = (String)e.SelectedItem.UserData; Debug.WriteLine("Selected Scarf: \"" + Settings.SelectedScarf + "\""); Settings.Save(); }; var scarfSegments = new Spinner(parent) { Min = 1, Max = int.MaxValue - 1, Value = Settings.ScarfSegments, }; scarfSegments.ValueChanged += (o, e) => { Settings.ScarfSegments = (int)((Spinner)o).Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(scarfSettingPanel, "Scarf Segments (Needs Restart)", scarfSegments); var multiScarfAmount = new Spinner(parent) { Min = 1, Max = int.MaxValue - 1, Value = Settings.multiScarfAmount, }; multiScarfAmount.ValueChanged += (o, e) => { Settings.multiScarfAmount = (int)((Spinner)o).Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(scarfSettingPanel, "Multi-Scarf Amount (Needs Restart)", multiScarfAmount); var multiScarfSegments = new Spinner(parent) { Min = 1, Max = int.MaxValue - 1, Value = Settings.multiScarfSegments, }; multiScarfSegments.ValueChanged += (o, e) => { Settings.multiScarfSegments = (int)((Spinner)o).Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(scarfSettingPanel, "Multi-Scarf Segments (Needs Restart)", multiScarfSegments); var showid = GwenHelper.AddCheckbox(scarfSettingPanel, "Apply Custom Scarf to Rider png", Settings.customScarfOnPng, (o, e) => { Settings.customScarfOnPng = ((Checkbox)o).IsChecked; Settings.Save(); }); ComboBox boshSkinCombobox = GwenHelper.CreateLabeledCombobox(riderSettingPanel, "Selected Rider:"); boshSkinCombobox.AddItem("Default", "*default*", "*default*"); string[] riderPaths = Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/LRA/Riders"); for (int i = 0; i < riderPaths.Length; i++) { String riderNames = Path.GetFileName(riderPaths[i]); boshSkinCombobox.AddItem(riderNames, riderNames, riderNames); } boshSkinCombobox.ItemSelected += (o, e) => { Settings.SelectedBoshSkin = (String)e.SelectedItem.UserData;; Debug.WriteLine("Selected rider Skin: \"" + Settings.SelectedBoshSkin + "\""); Settings.Save(); }; scarfCombobox.SelectByUserData(Settings.SelectedScarf); boshSkinCombobox.SelectByUserData(Settings.SelectedBoshSkin); }
private void PopulateSong(ControlBase parent) { var currentpanel = GwenHelper.CreateHeaderPanel(parent, "Current Song"); currentpanel.Dock = Dock.Fill; ListSongs(currentpanel); var opts = GwenHelper.CreateHeaderPanel(parent, "Sync options"); var syncenabled = GwenHelper.AddCheckbox(opts, "Sync Song to Track", _editor.Song.Enabled, (o, e) => { var song = _editor.Song; song.Enabled = ((Checkbox)o).IsChecked; _editor.Song = song; }); Spinner offset = new Spinner(null) { Min = -2000, Max = 2000, Value = _editor.Song.Offset }; offset.ValueChanged += (o, e) => { var song = _editor.Song; song.Offset = (float)offset.Value; _editor.Song = song; }; CreateLabeledControl(opts, "Offset", offset); Button help = new Button(parent) { Dock = Dock.Bottom, Text = "Help", }; help.Clicked += (o, e) => { MessageBox.Show(_canvas, "LRA can sync songs with tracks you make.\nSongs are imported from Documents/LRA/Songs.\n\nWe load files as .ogg, but support importing all common filetypes. LRA will mark files it needs to automatically convert with [convert]", "Help", true); }; this.IsHiddenChanged += (o, e) => { if (!this.IsHidden) { return; } var fn = Program.UserDirectory + "Songs" + Path.DirectorySeparatorChar + _editor.Song.Location; if (_editor.Song.Enabled && File.Exists(fn)) { if (!IsOgg(fn) && !linerider.IO.ffmpeg.FFMPEG.HasExecutable) { var song = _editor.Song; song.Location = null; _editor.Song = song; _canvas.ShowffmpegMissing(); } else { _canvas.Loading = true; Audio.AudioService.LoadFile(ref fn); var song = _editor.Song; song.Location = Path.GetFileName(fn); _editor.Song = song; _canvas.Loading = false; } } }; }
private void PopulateTools(ControlBase parent) { var bezier = GwenHelper.CreateHeaderPanel(parent, "Bezier Tool"); var resolution = new Spinner(bezier) { Min = 5, Max = 100, Value = Settings.Bezier.Resolution, IncrementSize = 1 }; resolution.ValueChanged += (o, e) => { Settings.Bezier.Resolution = (int)((Spinner)o).Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(bezier, "Resolution (Lines per 100 pixels)", resolution); var nodeSize = new Spinner(bezier) { Min = 5, Max = 100, Value = Settings.Bezier.NodeSize, IncrementSize = 1 }; nodeSize.ValueChanged += (o, e) => { Settings.Bezier.NodeSize = (int)((Spinner)o).Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(bezier, "Size of the bezier curve nodes", nodeSize); var bezierModeSelector = new RadioButtonGroup(bezier) { Dock = Dock.Top, ShouldDrawBackground = false }; var directType = bezierModeSelector.AddOption("Direct Visualization Mode"); var traceType = bezierModeSelector.AddOption("Trace Visualization Mode"); switch ((Settings.BezierMode)Settings.Bezier.Mode) { case Settings.BezierMode.Direct: directType.Select(); break; case Settings.BezierMode.Trace: traceType.Select(); break; } directType.CheckChanged += (o, e) => { Settings.Bezier.Mode = (int)Settings.BezierMode.Direct; Settings.Save(); }; traceType.CheckChanged += (o, e) => { Settings.Bezier.Mode = (int)Settings.BezierMode.Trace; Settings.Save(); }; var select = GwenHelper.CreateHeaderPanel(parent, "Select Tool -- Line Info"); var length = GwenHelper.AddCheckbox(select, "Show Length", Settings.Editor.ShowLineLength, (o, e) => { Settings.Editor.ShowLineLength = ((Checkbox)o).IsChecked; Settings.Save(); }); var angle = GwenHelper.AddCheckbox(select, "Show Angle", Settings.Editor.ShowLineAngle, (o, e) => { Settings.Editor.ShowLineAngle = ((Checkbox)o).IsChecked; Settings.Save(); }); var showid = GwenHelper.AddCheckbox(select, "Show ID", Settings.Editor.ShowLineID, (o, e) => { Settings.Editor.ShowLineID = ((Checkbox)o).IsChecked; Settings.Save(); }); Panel panelSnap = GwenHelper.CreateHeaderPanel(parent, "Snapping"); var linesnap = GwenHelper.AddCheckbox(panelSnap, "Snap New Lines", Settings.Editor.SnapNewLines, (o, e) => { Settings.Editor.SnapNewLines = ((Checkbox)o).IsChecked; Settings.Save(); }); var movelinesnap = GwenHelper.AddCheckbox(panelSnap, "Snap Line Movement", Settings.Editor.SnapMoveLine, (o, e) => { Settings.Editor.SnapMoveLine = ((Checkbox)o).IsChecked; Settings.Save(); }); var gridsnap = GwenHelper.AddCheckbox(panelSnap, "Snap to displayed grids", Settings.Editor.SnapToGrid, (o, e) => { Settings.Editor.SnapToGrid = ((Checkbox)o).IsChecked; Settings.Save(); }); var forcesnap = GwenHelper.AddCheckbox(panelSnap, "Force X/Y snap", Settings.Editor.ForceXySnap, (o, e) => { Settings.Editor.ForceXySnap = ((Checkbox)o).IsChecked; Settings.Save(); }); var snapAngle = new Spinner(panelSnap) { Min = 0, Max = 180, Value = Settings.Editor.XySnapDegrees, IncrementSize = 1 }; snapAngle.ValueChanged += (o, e) => { Settings.Editor.XySnapDegrees = (float)Math.Round((float)((Spinner)o).Value, 2, MidpointRounding.AwayFromZero); ((Spinner)o).Value = Settings.Editor.XySnapDegrees; // Re-display the rounded value Settings.Save(); }; GwenHelper.CreateLabeledControl(panelSnap, "X/Y snap degrees", snapAngle); forcesnap.Tooltip = "Forces all lines drawn to\nsnap to multiples of a chosen angle"; movelinesnap.Tooltip = "Snap to lines when using the\nselect tool to move a single line"; }
private void PopulateOther(ControlBase parent) { var updates = GwenHelper.CreateHeaderPanel(parent, "Updates"); var showid = GwenHelper.AddCheckbox(updates, "Check For Updates", Settings.CheckForUpdates, (o, e) => { Settings.CheckForUpdates = ((Checkbox)o).IsChecked; Settings.Save(); }); var showChangelog = GwenHelper.AddCheckbox(updates, "Show LRTran Changelog", Settings.showChangelog, (o, e) => { Settings.showChangelog = ((Checkbox)o).IsChecked; Settings.Save(); }); var mainWindowSettings = GwenHelper.CreateHeaderPanel(parent, "Window Launch Size"); var mainWindowWidth = new Spinner(mainWindowSettings) { Min = 1, Max = int.MaxValue - 1, Value = Settings.mainWindowWidth, }; mainWindowWidth.ValueChanged += (o, e) => { Settings.mainWindowWidth = (int)((Spinner)o).Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(mainWindowSettings, "Main Window Width (Current: " + (Program.GetWindowWidth()) + ")", mainWindowWidth); var mainWindowHeight = new Spinner(mainWindowSettings) { Min = 1, Max = int.MaxValue - 1, Value = Settings.mainWindowHeight, }; mainWindowHeight.ValueChanged += (o, e) => { Settings.mainWindowHeight = (int)((Spinner)o).Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(mainWindowSettings, "Main Window Height (Current: " + (Program.GetWindowHeight()) + ")", mainWindowHeight); var saveSettings = GwenHelper.CreateHeaderPanel(parent, "Saves"); var autosaveMinutes = new Spinner(saveSettings) { Min = 1, Max = int.MaxValue - 1, Value = Settings.autosaveMinutes, }; autosaveMinutes.ValueChanged += (o, e) => { Settings.autosaveMinutes = (int)((Spinner)o).Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(saveSettings, "Minutes between autosaves", autosaveMinutes); var autosaveChanges = new Spinner(saveSettings) { Min = 1, Max = int.MaxValue - 1, Value = Settings.autosaveChanges, }; autosaveChanges.ValueChanged += (o, e) => { Settings.autosaveChanges = (int)((Spinner)o).Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(saveSettings, "Min changes to start autosaving", autosaveChanges); ComboBox defaultSaveType = GwenHelper.CreateLabeledCombobox(saveSettings, "Default Save As Format:"); defaultSaveType.AddItem(".trk", "", ".trk"); defaultSaveType.AddItem(".json", "", ".json"); defaultSaveType.AddItem(".sol", "", ".sol"); defaultSaveType.ItemSelected += (o, e) => { Settings.DefaultSaveFormat = (String)e.SelectedItem.UserData; Settings.Save(); }; ComboBox defaultQuicksaveType = GwenHelper.CreateLabeledCombobox(saveSettings, "Default Quicksave Format:"); defaultQuicksaveType.AddItem(".trk", "", ".trk"); defaultQuicksaveType.AddItem(".json", "", ".json"); defaultQuicksaveType.AddItem(".sol", "", ".sol"); defaultQuicksaveType.ItemSelected += (o, e) => { Settings.DefaultQuicksaveFormat = (String)e.SelectedItem.UserData; Settings.Save(); }; ComboBox defaultAutosaveType = GwenHelper.CreateLabeledCombobox(saveSettings, "Default Autosave Format:"); defaultAutosaveType.AddItem(".trk", "", ".trk"); defaultAutosaveType.AddItem(".json", "", ".json"); defaultAutosaveType.AddItem(".sol", "", ".sol"); defaultAutosaveType.SelectByUserData(Settings.DefaultAutosaveFormat); defaultAutosaveType.ItemSelected += (o, e) => { Settings.DefaultAutosaveFormat = (String)e.SelectedItem.UserData; Settings.Save(); }; ComboBox defaultCrashBackupType = GwenHelper.CreateLabeledCombobox(saveSettings, "Default Crash Backup Format:"); defaultCrashBackupType.AddItem(".trk", "", ".trk"); defaultCrashBackupType.AddItem(".json", "", ".json"); defaultCrashBackupType.AddItem(".sol", "", ".sol"); defaultCrashBackupType.SelectByUserData(Settings.DefaultCrashBackupFormat); defaultCrashBackupType.ItemSelected += (o, e) => { Settings.DefaultCrashBackupFormat = (String)e.SelectedItem.UserData; Settings.Save(); }; defaultSaveType.SelectByUserData(Settings.DefaultSaveFormat); defaultQuicksaveType.SelectByUserData(Settings.DefaultQuicksaveFormat); defaultAutosaveType.SelectByUserData(Settings.DefaultAutosaveFormat); defaultAutosaveType.SelectByUserData(Settings.DefaultCrashBackupFormat); }
private void PopulateLines(ControlBase parent) { Panel lineColors = GwenHelper.CreateHeaderPanel(parent, "Line Color Customization"); var defaultRed = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.DefaultLine.R }; defaultRed.ValueChanged += (o, e) => { Settings.Lines.DefaultLine = Color.FromArgb((int)((Spinner)o).Value, Settings.Lines.DefaultLine.G, Settings.Lines.DefaultLine.B); Settings.Save(); }; var defaultGreen = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.DefaultLine.G }; defaultGreen.ValueChanged += (o, e) => { Settings.Lines.DefaultLine = Color.FromArgb(Settings.Lines.DefaultLine.R, (int)((Spinner)o).Value, Settings.Lines.DefaultLine.B); Settings.Save(); }; var defaultBlue = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.DefaultLine.B }; defaultBlue.ValueChanged += (o, e) => { Settings.Lines.DefaultLine = Color.FromArgb(Settings.Lines.DefaultLine.R, Settings.Lines.DefaultLine.G, (int)((Spinner)o).Value); Settings.Save(); }; GwenHelper.CreateLabeledControl(parent, "Default line color (R,G,B)", new ControlBase[3] { defaultRed, defaultGreen, defaultBlue }); var nightRed = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.DefaultNightLine.R }; nightRed.ValueChanged += (o, e) => { Settings.Lines.DefaultNightLine = Color.FromArgb((int)((Spinner)o).Value, Settings.Lines.DefaultNightLine.G, Settings.Lines.DefaultNightLine.B); Settings.Save(); }; var nightGreen = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.DefaultNightLine.G }; nightGreen.ValueChanged += (o, e) => { Settings.Lines.DefaultNightLine = Color.FromArgb(Settings.Lines.DefaultNightLine.R, (int)((Spinner)o).Value, Settings.Lines.DefaultNightLine.B); Settings.Save(); }; var nightBlue = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.DefaultNightLine.B }; nightBlue.ValueChanged += (o, e) => { Settings.Lines.DefaultNightLine = Color.FromArgb(Settings.Lines.DefaultNightLine.R, Settings.Lines.DefaultNightLine.G, (int)((Spinner)o).Value); Settings.Save(); }; GwenHelper.CreateLabeledControl(parent, "Night line color (R,G,B)", new ControlBase[3] { nightRed, nightGreen, nightBlue }); var accelRed = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.AccelerationLine.R }; accelRed.ValueChanged += (o, e) => { Settings.Lines.AccelerationLine = Color.FromArgb((int)((Spinner)o).Value, Settings.Lines.AccelerationLine.G, Settings.Lines.AccelerationLine.B); SaveLines(); }; var accelGreen = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.AccelerationLine.G }; accelGreen.ValueChanged += (o, e) => { Settings.Lines.AccelerationLine = Color.FromArgb(Settings.Lines.AccelerationLine.R, (int)((Spinner)o).Value, Settings.Lines.AccelerationLine.B); SaveLines(); }; var accelBlue = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.AccelerationLine.B }; accelBlue.ValueChanged += (o, e) => { Settings.Lines.AccelerationLine = Color.FromArgb(Settings.Lines.AccelerationLine.R, Settings.Lines.AccelerationLine.G, (int)((Spinner)o).Value); SaveLines(); }; GwenHelper.CreateLabeledControl(parent, "Acceleration line color (R,G,B)", new ControlBase[3] { accelRed, accelGreen, accelBlue }); var sceneryRed = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.SceneryLine.R }; sceneryRed.ValueChanged += (o, e) => { Settings.Lines.SceneryLine = Color.FromArgb((int)((Spinner)o).Value, Settings.Lines.SceneryLine.G, Settings.Lines.SceneryLine.B); Settings.Save(); }; var sceneryGreen = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.SceneryLine.G }; sceneryGreen.ValueChanged += (o, e) => { Settings.Lines.SceneryLine = Color.FromArgb(Settings.Lines.SceneryLine.R, (int)((Spinner)o).Value, Settings.Lines.SceneryLine.B); Settings.Save(); }; var sceneryBlue = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.SceneryLine.B }; sceneryBlue.ValueChanged += (o, e) => { Settings.Lines.SceneryLine = Color.FromArgb(Settings.Lines.SceneryLine.R, Settings.Lines.SceneryLine.G, (int)((Spinner)o).Value); Settings.Save(); }; GwenHelper.CreateLabeledControl(parent, "Scenery line color (R,G,B)", new ControlBase[3] { sceneryRed, sceneryGreen, sceneryBlue }); var standardRed = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.StandardLine.R }; standardRed.ValueChanged += (o, e) => { Settings.Lines.StandardLine = Color.FromArgb((int)((Spinner)o).Value, Settings.Lines.StandardLine.G, Settings.Lines.StandardLine.B); SaveLines(); }; var standardGreen = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.StandardLine.G }; standardGreen.ValueChanged += (o, e) => { Settings.Lines.StandardLine = Color.FromArgb(Settings.Lines.StandardLine.R, (int)((Spinner)o).Value, Settings.Lines.StandardLine.B); SaveLines(); }; var standardBlue = new Spinner(lineColors) { Min = 0, Max = 255, Value = Settings.Lines.StandardLine.B }; standardBlue.ValueChanged += (o, e) => { Settings.Lines.StandardLine = Color.FromArgb(Settings.Lines.StandardLine.R, Settings.Lines.StandardLine.G, (int)((Spinner)o).Value); SaveLines(); }; GwenHelper.CreateLabeledControl(parent, "Standard line color (R,G,B)", new ControlBase[3] { standardRed, standardGreen, standardBlue }); }
private void PopulateEditor(ControlBase parent) { Panel advancedtools = GwenHelper.CreateHeaderPanel(parent, "Advanced Visualization"); var contact = GwenHelper.AddCheckbox(advancedtools, "Contact Points", Settings.Editor.DrawContactPoints, (o, e) => { Settings.Editor.DrawContactPoints = ((Checkbox)o).IsChecked; Settings.Save(); }); var momentum = GwenHelper.AddCheckbox(advancedtools, "Momentum Vectors", Settings.Editor.MomentumVectors, (o, e) => { Settings.Editor.MomentumVectors = ((Checkbox)o).IsChecked; Settings.Save(); }); var hitbox = GwenHelper.AddCheckbox(advancedtools, "Line Hitbox", Settings.Editor.RenderGravityWells, (o, e) => { Settings.Editor.RenderGravityWells = ((Checkbox)o).IsChecked; Settings.Save(); }); var hittest = GwenHelper.AddCheckbox(advancedtools, "Hit Test", Settings.Editor.HitTest, (o, e) => { Settings.Editor.HitTest = ((Checkbox)o).IsChecked; Settings.Save(); }); var onion = GwenHelper.AddCheckbox(advancedtools, "Onion Skinning", Settings.OnionSkinning, (o, e) => { Settings.OnionSkinning = ((Checkbox)o).IsChecked; Settings.Save(); }); var pastOnionSkins = new Spinner(advancedtools) { Min = 0, Max = 1000, Value = Settings.PastOnionSkins, }; pastOnionSkins.ValueChanged += (o, e) => { Settings.PastOnionSkins = (int)((Spinner)o).Value; Settings.Save(); }; var futureOnionSkins = new Spinner(advancedtools) { Min = 0, Max = 1000, Value = Settings.FutureOnionSkins, }; futureOnionSkins.ValueChanged += (o, e) => { Settings.FutureOnionSkins = (int)((Spinner)o).Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(advancedtools, "#Onion Skins (Before, After)", new ControlBase[2] { pastOnionSkins, futureOnionSkins }); var drawgrid = GwenHelper.AddCheckbox(advancedtools, "Simulation Grid", Settings.DrawCollisionGrid, (o, e) => { Settings.DrawCollisionGrid = ((Checkbox)o).IsChecked; Settings.Save(); }); var drawagws = GwenHelper.AddCheckbox(advancedtools, "Line Extensions (AGWs)", Settings.DrawAGWs, (o, e) => { Settings.DrawAGWs = ((Checkbox)o).IsChecked; Settings.Save(); }); var drawfloatgrid = GwenHelper.AddCheckbox(advancedtools, "Floating-point (angled kramual) grid", Settings.DrawFloatGrid, (o, e) => { Settings.DrawFloatGrid = ((Checkbox)o).IsChecked; Settings.Save(); }); var drawcam = GwenHelper.AddCheckbox(advancedtools, "Camera", Settings.DrawCamera, (o, e) => { Settings.DrawCamera = ((Checkbox)o).IsChecked; Settings.Save(); }); Panel pblifelock = GwenHelper.CreateHeaderPanel(parent, "Lifelock Conditions"); GwenHelper.AddCheckbox(pblifelock, "Next frame constraints", Settings.Editor.LifeLockNoOrange, (o, e) => { Settings.Editor.LifeLockNoOrange = ((Checkbox)o).IsChecked; Settings.Save(); }); GwenHelper.AddCheckbox(pblifelock, "No Fakie Death", Settings.Editor.LifeLockNoFakie, (o, e) => { Settings.Editor.LifeLockNoFakie = ((Checkbox)o).IsChecked; Settings.Save(); }); var overlay = GwenHelper.CreateHeaderPanel(parent, "Frame Overlay"); PopulateOverlay(overlay); onion.Tooltip = "Visualize the rider before/after\nthe current frame."; momentum.Tooltip = "Visualize the direction of\nmomentum for each contact point"; contact.Tooltip = "Visualize the parts of the rider\nthat interact with lines."; hitbox.Tooltip = "Visualizes the hitbox of lines\nUsed for advanced editing"; hittest.Tooltip = "Lines that have been hit by\nthe rider will glow."; }
private void PopulateRider(ControlBase parent) { var scarfSettingPanel = GwenHelper.CreateHeaderPanel(parent, "Scarf Settings"); var riderSettingPanel = GwenHelper.CreateHeaderPanel(parent, "Rider Settings"); ComboBox scarfCombobox = GwenHelper.CreateLabeledCombobox(scarfSettingPanel, "Selected Scarf:"); scarfCombobox.AddItem("LRLuna Default", "*default*", "*default*"); scarfCombobox.Width = 215; string[] scarfPaths = Directory.GetFiles(Program.UserDirectory + "\\Scarves"); for (int i = 0; i < scarfPaths.Length; i++) { string scarfNames = Path.GetFileName(scarfPaths[i]); if ((scarfNames.EndsWith(".txt", true, CultureInfo.CurrentCulture)) || (scarfNames.EndsWith(".scarf", true, CultureInfo.CurrentCulture))) { scarfCombobox.AddItem(scarfNames, scarfNames, scarfNames); } } scarfCombobox.SelectByUserData(Settings.SelectedScarf); scarfCombobox.ItemSelected += (o, e) => { Settings.SelectedScarf = (String)e.SelectedItem.UserData; Settings.Save(); _editor.UpdateScarf(Settings.SelectedScarf); }; var scarfSegments = new Spinner(parent) { Min = 1, Max = int.MaxValue - 1, Value = Settings.ScarfSegments, }; var scarfSegmentsLabel = GwenHelper.CreateLabeledControl(scarfSettingPanel, "Scarf Segments (Needs Restart)", scarfSegments); scarfSegments.ValueChanged += (o, e) => { Settings.ScarfSegments = (int)((Spinner)o).Value; Settings.Save(); }; var multiScarfAmount = new Spinner(parent) { Min = 1, Max = int.MaxValue - 1, Value = Settings.multiScarfAmount, }; multiScarfAmount.ValueChanged += (o, e) => { Settings.multiScarfAmount = (int)((Spinner)o).Value; Settings.Save(); _editor.InvalidateRenderRider(); }; GwenHelper.CreateLabeledControl(scarfSettingPanel, "Multi-Scarf Amount (Needs Restart)", multiScarfAmount); var multiScarfSegments = new Spinner(parent) { Min = 1, Max = int.MaxValue - 1, Value = Settings.multiScarfSegments, }; multiScarfSegments.ValueChanged += (o, e) => { Settings.multiScarfSegments = (int)((Spinner)o).Value; Settings.Save(); _editor.InvalidateRenderRider(); }; GwenHelper.CreateLabeledControl(scarfSettingPanel, "Multi-Scarf Segments (Needs Restart)", multiScarfSegments); var showid = GwenHelper.AddCheckbox(scarfSettingPanel, "Apply Custom Scarf to Rider Image", Settings.CustomScarfOnPng, (o, e) => { Settings.CustomScarfOnPng = ((Checkbox)o).IsChecked; Settings.Save(); Models.LoadModels(Settings.SelectedBoshSkin); }); ComboBox boshSkinCombobox = GwenHelper.CreateLabeledCombobox(riderSettingPanel, "Selected Rider:"); boshSkinCombobox.AddItem("LRLuna Default", "*default*", "*default*"); boshSkinCombobox.Width = 217; string[] riderPaths = Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/LRA/Riders"); for (int i = 0; i < riderPaths.Length; i++) { String riderNames = Path.GetFileName(riderPaths[i]); boshSkinCombobox.AddItem(riderNames, riderNames, riderNames); } boshSkinCombobox.SelectByUserData(Settings.SelectedBoshSkin); boshSkinCombobox.ItemSelected += (o, e) => { Settings.SelectedBoshSkin = (String)e.SelectedItem.UserData; Settings.Save(); Models.LoadModels(Settings.SelectedBoshSkin); }; }
private void PopulateDiscordSettings(ControlBase parent) { var discordHeader = GwenHelper.CreateHeaderPanel(parent, "Discord Activity Settings"); var showid = GwenHelper.AddCheckbox(discordHeader, "Enable Discord Activity (Needs Restart to Disable)", Settings.discordActivityEnabled, (o, e) => { Settings.discordActivityEnabled = ((Checkbox)o).IsChecked; Settings.Save(); }); ComboBox activity1 = GwenHelper.CreateLabeledCombobox(discordHeader, "Line 1 Text 1:"); ComboBox activity2 = GwenHelper.CreateLabeledCombobox(discordHeader, "Line 1 Text 2:"); ComboBox activity3 = GwenHelper.CreateLabeledCombobox(discordHeader, "Line 2 Text 1:"); ComboBox activity4 = GwenHelper.CreateLabeledCombobox(discordHeader, "Line 2 Text 2:"); ComboBox[] boxArr = { activity1, activity2, activity3, activity4 }; for (int i = 0; i < 4; i++) { boxArr[i].AddItem("None", "none", "none"); boxArr[i].AddItem("Selected Tool", "toolText", "toolText"); boxArr[i].AddItem("Number of Unsaved Changes", "unsavedChangesText", "unsavedChangesText"); boxArr[i].AddItem("Track Name", "trackText", "trackText"); boxArr[i].AddItem("Amount of Lines", "lineText", "lineText"); boxArr[i].AddItem("Version", "versionText", "versionText"); } activity1.SelectByUserData(Settings.discordActivity1); activity2.SelectByUserData(Settings.discordActivity2); activity3.SelectByUserData(Settings.discordActivity3); activity4.SelectByUserData(Settings.discordActivity4); activity1.ItemSelected += (o, e) => { Settings.discordActivity1 = (String)e.SelectedItem.UserData;; Settings.Save(); }; activity2.ItemSelected += (o, e) => { Settings.discordActivity2 = (String)e.SelectedItem.UserData;; Settings.Save(); }; activity3.ItemSelected += (o, e) => { Settings.discordActivity3 = (String)e.SelectedItem.UserData;; Settings.Save(); }; activity4.ItemSelected += (o, e) => { Settings.discordActivity4 = (String)e.SelectedItem.UserData;; Settings.Save(); }; ComboBox largeImageKey = GwenHelper.CreateLabeledCombobox(discordHeader, "Image:"); largeImageKey.AddItem("LRTran App Icon", "lrl", "lrl"); largeImageKey.AddItem(":boshbless:", "bosh_pray", "bosh_pray"); largeImageKey.SelectByUserData(Settings.largeImageKey); largeImageKey.ItemSelected += (o, e) => { Settings.largeImageKey = (String)e.SelectedItem.UserData;; Settings.Save(); }; }
private void PopulateCamera(ControlBase parent) { var camtype = GwenHelper.CreateHeaderPanel(parent, "Camera Type"); var camtracking = GwenHelper.CreateHeaderPanel(parent, "Camera Tracking"); var camprops = GwenHelper.CreateHeaderPanel(parent, "Camera Properties"); RadioButtonGroup rbcamera = new RadioButtonGroup(camtype) { Dock = Dock.Top, ShouldDrawBackground = false, }; var soft = rbcamera.AddOption("Soft Camera"); var predictive = rbcamera.AddOption("Predictive Camera"); var legacy = rbcamera.AddOption("Legacy Camera"); RadioButtonGroup xycamera = new RadioButtonGroup(camtracking) { Dock = Dock.Top, ShouldDrawBackground = false, }; var horizontal = xycamera.AddOption("Horizontal Tracking"); var vertical = xycamera.AddOption("Vertical Tracking"); var horizontalvertical = xycamera.AddOption("Normal Tracking"); var round = GwenHelper.AddCheckbox(camprops, "Round Legacy Camera", Settings.RoundLegacyCamera, (o, e) => { Settings.RoundLegacyCamera = ((Checkbox)o).IsChecked; Settings.Save(); _editor.InitCamera(); }); var offsledsled = GwenHelper.AddCheckbox(camprops, "Offsled Sled Camera", Settings.OffsledSledCam, (o, e) => { Settings.OffsledSledCam = ((Checkbox)o).IsChecked; Settings.Save(); _editor.InitCamera(); }); var offsledvar = GwenHelper.AddCheckbox(camprops, "Variable Contact Point Camera", Settings.OffsledVar, (o, e) => { Settings.OffsledVar = ((Checkbox)o).IsChecked; Settings.Save(); _editor.InitCamera(); }); var fixedcam = GwenHelper.AddCheckbox(camprops, "Fixed Camera", Settings.FixedCam, (o, e) => { Settings.FixedCam = ((Checkbox)o).IsChecked; Settings.Save(); _editor.InitCamera(); }); var variables = GwenHelper.CreateHeaderPanel(parent, "Contact Point Settings"); Spinner pointvar = new Spinner(variables) { Dock = Dock.Bottom, Max = 29, Min = 0, Value = Settings.PointVar, }; pointvar.ValueChanged += (o, e) => { Settings.PointVar = (int)pointvar.Value; Settings.Save(); }; var fixedpos = GwenHelper.CreateHeaderPanel(parent, "Fixed Camera X and Y Position"); var xfixed = new Spinner(null) { Dock = Dock.Bottom, Max = 2147483648, Min = -2147483648, Value = Settings.XFixed }; xfixed.ValueChanged += (o, e) => { Settings.XFixed = (int)xfixed.Value; Settings.Save(); _editor.InitCamera(); }; var yfixed = new Spinner(null) { Dock = Dock.Bottom, Max = 2147483648, Min = -2147483648, Value = Settings.YFixed }; yfixed.ValueChanged += (o, e) => { Settings.YFixed = (int)yfixed.Value; Settings.Save(); _editor.InitCamera(); }; GwenHelper.CreateLabeledControl(fixedpos, "X Location", xfixed); GwenHelper.CreateLabeledControl(fixedpos, "Y Location", yfixed); if (Settings.SmoothCamera) { if (Settings.PredictiveCamera) { predictive.Select(); } else { soft.Select(); } } else { legacy.Select(); } if (Settings.HorizontalTracking) { horizontal.Select(); } else if (Settings.VerticalTracking) { vertical.Select(); } else { horizontalvertical.Select(); } horizontal.Checked += (o, e) => { Settings.HorizontalTracking = true; Settings.VerticalTracking = false; Settings.Save(); _editor.InitCamera(); }; vertical.Checked += (o, e) => { Settings.HorizontalTracking = false; Settings.VerticalTracking = true; Settings.Save(); _editor.InitCamera(); }; horizontalvertical.Checked += (o, e) => { Settings.HorizontalTracking = false; Settings.VerticalTracking = false; Settings.Save(); _editor.InitCamera(); }; soft.Checked += (o, e) => { Settings.SmoothCamera = true; Settings.PredictiveCamera = false; Settings.Save(); round.IsDisabled = Settings.SmoothCamera; _editor.InitCamera(); }; predictive.Checked += (o, e) => { Settings.SmoothCamera = true; Settings.PredictiveCamera = true; Settings.Save(); round.IsDisabled = Settings.SmoothCamera; _editor.InitCamera(); }; legacy.Checked += (o, e) => { Settings.SmoothCamera = false; Settings.PredictiveCamera = false; Settings.Save(); round.IsDisabled = Settings.SmoothCamera; _editor.InitCamera(); }; predictive.Tooltip = "This is the camera that was added in 1.03\nIt moves relative to the future of the track"; }
private void PopulateModes(ControlBase parent) { var background = GwenHelper.CreateHeaderPanel(parent, "Background Color"); GwenHelper.AddCheckbox(background, "Night Mode", Settings.NightMode, (o, e) => { Settings.NightMode = ((Checkbox)o).IsChecked; Settings.Save(); }); var whitebg = GwenHelper.AddCheckbox(background, "Pure White Background", Settings.WhiteBG, (o, e) => { Settings.WhiteBG = ((Checkbox)o).IsChecked; Settings.Save(); }); var coloredbg = GwenHelper.AddCheckbox(background, "Colored Background", Settings.ColoredBG, (o, e) => { Settings.ColoredBG = ((Checkbox)o).IsChecked; Settings.Save(); }); var panelgeneral = GwenHelper.CreateHeaderPanel(parent, "General"); var superzoom = GwenHelper.AddCheckbox(panelgeneral, "Superzoom", Settings.SuperZoom, (o, e) => { Settings.SuperZoom = ((Checkbox)o).IsChecked; Settings.Save(); }); ComboBox scroll = GwenHelper.CreateLabeledCombobox(panelgeneral, "Scroll Sensitivity:"); scroll.Margin = new Margin(0, 0, 0, 0); scroll.Dock = Dock.Bottom; scroll.AddItem("0.25x").Name = "0.25"; scroll.AddItem("0.5x").Name = "0.5"; scroll.AddItem("0.75x").Name = "0.75"; scroll.AddItem("1x").Name = "1"; scroll.AddItem("2x").Name = "2"; scroll.AddItem("3x").Name = "3"; scroll.SelectByName("1");//default if user setting fails. scroll.SelectByName(Settings.ScrollSensitivity.ToString(Program.Culture)); scroll.ItemSelected += (o, e) => { if (e.SelectedItem != null) { Settings.ScrollSensitivity = float.Parse(e.SelectedItem.Name, Program.Culture); Settings.Save(); } }; superzoom.Tooltip = "Allows the user to zoom in\nnearly 10x more than usual."; var colbg = GwenHelper.CreateHeaderPanel(parent, "Colored Background RGB"); var redS = new Spinner(null) { Min = 0, Max = 255, Value = Settings.RedColored, }; redS.ValueChanged += (o, e) => { Settings.RedColored = (int)redS.Value; Constants.Red = (int)redS.Value; Settings.Save(); Constants.ColorColored = new Color4((float)(Constants.Red / 255), (float)(Constants.Green / 255), (float)(Constants.Blue / 255), 255); }; GwenHelper.CreateLabeledControl(colbg, "Red", redS); var greenS = new Spinner(null) { Min = 0, Max = 255, Value = Settings.GreenColored, }; greenS.ValueChanged += (o, e) => { Settings.GreenColored = (int)greenS.Value; Constants.Green = (int)greenS.Value; Settings.Save(); Constants.ColorColored = new Color4((float)(Constants.Red / 255), (float)(Constants.Green / 255), (float)(Constants.Blue / 255), 255); }; GwenHelper.CreateLabeledControl(colbg, "Green", greenS); var blueS = new Spinner(null) { Min = 0, Max = 255, Value = Settings.BlueColored, }; blueS.ValueChanged += (o, e) => { Settings.BlueColored = (int)blueS.Value; Constants.Blue = (int)blueS.Value; Settings.Save(); Constants.ColorColored = new Color4((float)(Constants.Red / 255), (float)(Constants.Green / 255), (float)(Constants.Blue / 255), 255); }; GwenHelper.CreateLabeledControl(colbg, "Blue", blueS); }
private void PopulateLines(ControlBase parent) { var lineoptions = GwenHelper.CreateHeaderPanel(parent, "Line options"); var coloroptions = GwenHelper.CreateHeaderPanel(parent, "Blue Line Color"); var redS = new Spinner(null) { Min = 0, Max = 255, Value = Settings.LineColorRed, }; redS.ValueChanged += (o, e) => { Settings.LineColorRed = (int)redS.Value; Constants.LineRed = (int)redS.Value; Settings.Save(); Constants.ColorDefaultLine = Color.FromArgb(Constants.LineRed, Constants.LineGreen, Constants.LineBlue); }; GwenHelper.CreateLabeledControl(coloroptions, "Red", redS); var greenS = new Spinner(null) { Min = 0, Max = 255, Value = Settings.LineColorGreen, }; greenS.ValueChanged += (o, e) => { Settings.LineColorGreen = (int)greenS.Value; Constants.LineGreen = (int)greenS.Value; Settings.Save(); Constants.ColorDefaultLine = Color.FromArgb(Constants.LineRed, Constants.LineGreen, Constants.LineBlue); }; GwenHelper.CreateLabeledControl(coloroptions, "Green", greenS); var blueS = new Spinner(null) { Min = 0, Max = 255, Value = Settings.LineColorBlue, }; blueS.ValueChanged += (o, e) => { Settings.LineColorBlue = (int)blueS.Value; Constants.LineBlue = (int)blueS.Value; Settings.Save(); Constants.ColorDefaultLine = Color.FromArgb(255, Constants.LineRed, Constants.LineGreen, Constants.LineBlue); }; GwenHelper.CreateLabeledControl(coloroptions, "Blue", blueS); /////////////////////////////////////////////////////////////////////////////////////////////////////////////// var coloroptionsaccel = GwenHelper.CreateHeaderPanel(parent, "Accel Line Color"); //coloroptionsaccel.IsDisabled = true; var redSAccel = new Spinner(null) { Min = 0, Max = 255, Value = Settings.AccelerationLineColorRed, }; redSAccel.ValueChanged += (o, e) => { Settings.AccelerationLineColorRed = (int)redSAccel.Value; Constants.AccelerationLineRed = (int)redSAccel.Value; Settings.Save(); Constants.ColorAccelerationLine = Color.FromArgb(255, Constants.AccelerationLineRed, Constants.AccelerationLineGreen, Constants.AccelerationLineBlue); }; GwenHelper.CreateLabeledControl(coloroptionsaccel, "Red", redSAccel); var greenSAccel = new Spinner(null) { Min = 0, Max = 255, Value = Settings.AccelerationLineColorGreen, }; greenSAccel.ValueChanged += (o, e) => { Settings.AccelerationLineColorGreen = (int)greenSAccel.Value; Constants.AccelerationLineGreen = (int)greenSAccel.Value; Settings.Save(); Constants.ColorAccelerationLine = Color.FromArgb(255, Constants.AccelerationLineRed, Constants.AccelerationLineGreen, Constants.AccelerationLineBlue); }; GwenHelper.CreateLabeledControl(coloroptionsaccel, "Green", greenSAccel); var blueSAccel = new Spinner(null) { Min = 0, Max = 255, Value = Settings.AccelerationLineColorBlue, }; blueSAccel.ValueChanged += (o, e) => { Settings.AccelerationLineColorBlue = (int)blueSAccel.Value; Constants.AccelerationLineBlue = (int)blueSAccel.Value; Settings.Save(); Constants.ColorAccelerationLine = Color.FromArgb(255, Constants.AccelerationLineRed, Constants.AccelerationLineGreen, Constants.AccelerationLineBlue); }; GwenHelper.CreateLabeledControl(coloroptionsaccel, "Blue", blueSAccel); /////////////////////////////////////////////////////////////////////////////////////////////////////////////// var coloroptionsscenery = GwenHelper.CreateHeaderPanel(parent, "Scenery Line Color"); var redSScnery = new Spinner(null) { Min = 0, Max = 255, Value = Settings.SceneryLineColorRed, }; redSScnery.ValueChanged += (o, e) => { Settings.SceneryLineColorRed = (int)redSScnery.Value; Constants.SceneryLineRed = (int)redSScnery.Value; Settings.Save(); Constants.ColorSceneryLine = Color.FromArgb(Constants.SceneryLineRed, Constants.SceneryLineGreen, Constants.SceneryLineBlue); }; GwenHelper.CreateLabeledControl(coloroptionsscenery, "Red", redSScnery); var greenSScenery = new Spinner(null) { Min = 0, Max = 255, Value = Settings.SceneryLineColorGreen, }; greenSScenery.ValueChanged += (o, e) => { Settings.SceneryLineColorGreen = (int)greenSScenery.Value; Constants.SceneryLineGreen = (int)greenSScenery.Value; Settings.Save(); Constants.ColorSceneryLine = Color.FromArgb(Constants.SceneryLineRed, Constants.SceneryLineGreen, Constants.SceneryLineBlue); }; GwenHelper.CreateLabeledControl(coloroptionsscenery, "Green", greenSScenery); var blueSScenery = new Spinner(null) { Min = 0, Max = 255, Value = Settings.SceneryLineColorBlue, }; blueSScenery.ValueChanged += (o, e) => { Settings.SceneryLineColorBlue = (int)blueSScenery.Value; Constants.SceneryLineBlue = (int)blueSScenery.Value; Settings.Save(); Constants.ColorSceneryLine = Color.FromArgb(Constants.SceneryLineRed, Constants.SceneryLineGreen, Constants.SceneryLineBlue); }; GwenHelper.CreateLabeledControl(coloroptionsscenery, "Blue", blueSScenery); GwenHelper.AddCheckbox(lineoptions, "Enable Custom Line Colors", Settings.MainLine, (o, e) => { Settings.MainLine = ((Checkbox)o).IsChecked; Settings.Save(); coloroptions.IsDisabled = !((Checkbox)o).IsChecked; coloroptionsaccel.IsDisabled = !((Checkbox)o).IsChecked; coloroptionsscenery.IsDisabled = !((Checkbox)o).IsChecked; }); coloroptions.IsDisabled = !Settings.MainLine; coloroptionsaccel.IsDisabled = !Settings.MainLine; coloroptionsscenery.IsDisabled = !Settings.MainLine; }
private void PopulateSceneryLine(ControlBase parent) { Constants.SceneryRed = Settings.SceneryColorRed; Constants.SceneryGreen = Settings.SceneryColorGreen; Constants.SceneryBlue = Settings.SceneryColorBlue; var scenery = GwenHelper.CreateHeaderPanel(parent, "Line Options"); var colorscenery = GwenHelper.CreateHeaderPanel(parent, "RGB"); colorscenery.IsDisabled = !Settings.SceneryColorChange; GwenHelper.AddCheckbox(scenery, "Line Customization", Settings.SceneryColorChange, (o, e) => { Settings.SceneryColorChange = ((Checkbox)o).IsChecked; Settings.Save(); colorscenery.IsDisabled = !((Checkbox)o).IsChecked; }); var redS = new Spinner(null) { Min = 0, Max = 255, Value = Settings.SceneryColorRed, }; redS.ValueChanged += (o, e) => { Settings.SceneryColorRed = (int)redS.Value; Constants.SceneryRed = (int)redS.Value; Settings.Save(); Constants.SceneryLineColored = Color.FromArgb(Constants.SceneryRed, Constants.SceneryGreen, Constants.SceneryBlue); _editor.LineColorsChanged(); }; GwenHelper.CreateLabeledControl(colorscenery, "Red", redS); var greenS = new Spinner(null) { Min = 0, Max = 255, Value = Settings.SceneryColorGreen, }; greenS.ValueChanged += (o, e) => { Settings.SceneryColorGreen = (int)greenS.Value; Constants.SceneryGreen = (int)greenS.Value; Settings.Save(); Constants.SceneryLineColored = Color.FromArgb(Constants.SceneryRed, Constants.SceneryGreen, Constants.SceneryBlue); _editor.LineColorsChanged(); }; GwenHelper.CreateLabeledControl(colorscenery, "Green", greenS); var blueS = new Spinner(null) { Min = 0, Max = 255, Value = Settings.SceneryColorBlue, }; blueS.ValueChanged += (o, e) => { Settings.SceneryColorBlue = (int)blueS.Value; Constants.SceneryBlue = (int)blueS.Value; Settings.Save(); Constants.SceneryLineColored = Color.FromArgb(Constants.SceneryRed, Constants.SceneryGreen, Constants.SceneryBlue); _editor.LineColorsChanged(); }; GwenHelper.CreateLabeledControl(colorscenery, "Blue", blueS); }
private void PopulateTools(ControlBase parent) { var select = GwenHelper.CreateHeaderPanel(parent, "Select Tool -- Line Info"); var length = GwenHelper.AddCheckbox(select, "Show Length", Settings.Editor.ShowLineLength, (o, e) => { Settings.Editor.ShowLineLength = ((Checkbox)o).IsChecked; Settings.Save(); }); var angle = GwenHelper.AddCheckbox(select, "Show Angle", Settings.Editor.ShowLineAngle, (o, e) => { Settings.Editor.ShowLineAngle = ((Checkbox)o).IsChecked; Settings.Save(); }); var showid = GwenHelper.AddCheckbox(select, "Show ID", Settings.Editor.ShowLineID, (o, e) => { Settings.Editor.ShowLineID = ((Checkbox)o).IsChecked; Settings.Save(); }); Panel panelSnap = GwenHelper.CreateHeaderPanel(parent, "Snapping"); var linesnap = GwenHelper.AddCheckbox(panelSnap, "Snap New Lines", Settings.Editor.SnapNewLines, (o, e) => { Settings.Editor.SnapNewLines = ((Checkbox)o).IsChecked; Settings.Save(); }); var movelinesnap = GwenHelper.AddCheckbox(panelSnap, "Snap Line Movement", Settings.Editor.SnapMoveLine, (o, e) => { Settings.Editor.SnapMoveLine = ((Checkbox)o).IsChecked; Settings.Save(); }); var forcesnap = GwenHelper.AddCheckbox(panelSnap, "Force X/Y snap", Settings.Editor.ForceXySnap, (o, e) => { Settings.Editor.ForceXySnap = ((Checkbox)o).IsChecked; Settings.Save(); }); var onsk = GwenHelper.CreateHeaderPanel(parent, "Onion Skinning Options"); var osb = new Spinner(null) { Min = 0, Max = 100, Value = Settings.OnionSkinningBack, }; osb.ValueChanged += (o, e) => { Settings.OnionSkinningBack = (int)osb.Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(onsk, "Onionskinning Back", osb); var osf = new Spinner(null) { Min = 0, Max = 100, Value = Settings.OnionSkinningFront, }; osf.ValueChanged += (o, e) => { Settings.OnionSkinningFront = (int)osf.Value; Settings.Save(); }; GwenHelper.CreateLabeledControl(onsk, "Onionskinning Front", osf); forcesnap.Tooltip = "Forces all lines drawn to\nsnap to a 45 degree angle"; movelinesnap.Tooltip = "Snap to lines when using the\nselect tool to move a single line"; }