public void Save() { settings.UseMemoryLayout = useMemoryLayout; settings.DiscardUnusedSections = discardUnusedSections; settings.NotUseStandardStartupFiles = notUseStandardStartup; settings.LinkedLibraries = linkedLibraries.ToList(); settings.LinkerScripts = LinkerScripts.ToList(); settings.SystemLibraries = SystemLibraries.ToList(); settings.InRom1Start = Convert.ToUInt32(inRom1Start, 16); settings.InRom1Size = Convert.ToUInt32(inRom1Size, 16); settings.InRom2Start = Convert.ToUInt32(inRom2Start, 16); settings.InRom2Size = Convert.ToUInt32(inRom2Size, 16); settings.InRam1Start = Convert.ToUInt32(inRam1Start, 16); settings.InRam1Size = Convert.ToUInt32(inRam1Size, 16); settings.InRam2Start = Convert.ToUInt32(inRam2Start, 16); settings.InRam2Size = Convert.ToUInt32(inRam2Size, 16); settings.ScatterFile = scatterFile; settings.MiscLinkerArguments = miscOptions; settings.Library = (LibraryType)librarySelectedIndex; var currentSettings = Model.GetToolchainSettings <GccToolchainSettings>(); currentSettings.LinkSettings = settings; Model.SetToolchainSettings(currentSettings); Model.Save(); }
//////////////// /// <param name="theme">Appearance style.</param> /// <param name="label">Display text.</param> /// <param name="url">URL.</param> /// <param name="hoverUrl">Indicates if the current element handles its own mouse hover URL display behavior.</param> /// <param name="scale">Size multiplier of display text.</param> /// <param name="large">'Large' state of display text.</param> public UIWebUrl(UITheme theme, string label, string url, bool hoverUrl = true, float scale = 0.85f, bool large = false) : base(theme, true) { this.IsVisited = false; this.Url = url; this.WillDrawOwnHoverUrl = hoverUrl; this.Scale = scale; this.Large = large; this.TextElem = new UIText(label, scale, large); this.TextElem.TextColor = theme.UrlColor; this.Append(this.TextElem); this.LineElem = UIWebUrl.GetLineElement(label, scale, large); this.LineElem.TextColor = theme.UrlColor; this.Append(this.LineElem); CalculatedStyle labelSize = this.TextElem.GetDimensions(); this.Width.Set(labelSize.Width, 0f); this.Height.Set(labelSize.Height, 0f); UIText textElem = this.TextElem; UIText lineElem = this.LineElem; this.OnMouseOver += delegate(UIMouseEvent evt, UIElement fromElem) { if (textElem.TextColor != theme.UrlVisitColor) { textElem.TextColor = theme.UrlLitColor; textElem.TextColor = theme.UrlLitColor; } }; this.OnMouseOut += delegate(UIMouseEvent evt, UIElement fromElem) { if (textElem.TextColor != theme.UrlVisitColor) { textElem.TextColor = theme.UrlColor; textElem.TextColor = theme.UrlColor; } }; this.OnClick += delegate(UIMouseEvent evt, UIElement fromElem) { try { SystemLibraries.OpenUrl(this.Url); //System.Diagnostics.Process.Start( this.Url ); this.IsVisited = true; textElem.TextColor = theme.UrlVisitColor; lineElem.TextColor = theme.UrlVisitColor; } catch (Exception e) { Main.NewText(e.Message); } }; this.RefreshTheme(); }
public LinkerSettingsFormViewModel(IProject project) : base("Linker", project) { settings = project.GetToolchainSettings <GccToolchainSettings>().LinkSettings; if (settings == null) { settings = new LinkSettings(); } useMemoryLayout = settings.UseMemoryLayout; discardUnusedSections = settings.DiscardUnusedSections; notUseStandardStartup = settings.NotUseStandardStartupFiles; linkedLibraries = new ObservableCollection <string>(settings.LinkedLibraries); linkerScripts = new ObservableCollection <string>(settings.LinkerScripts); systemLibraries = new ObservableCollection <string>(settings.SystemLibraries); inRom1Start = string.Format("0x{0:X8}", settings.InRom1Start); inRom1Size = string.Format("0x{0:X8}", settings.InRom1Size); inRom2Start = string.Format("0x{0:X8}", settings.InRom2Start); inRom2Size = string.Format("0x{0:X8}", settings.InRom2Size); inRam1Start = string.Format("0x{0:X8}", settings.InRam1Start); inRam1Size = string.Format("0x{0:X8}", settings.InRam1Size); inRam2Start = string.Format("0x{0:X8}", settings.InRam2Start); inRam2Size = string.Format("0x{0:X8}", settings.InRam2Size); scatterFile = settings.ScatterFile; miscOptions = settings.MiscLinkerArguments; librarySelectedIndex = (int)settings.Library; AddLinkedLibraryCommand = ReactiveCommand.Create(); AddLinkedLibraryCommand.Subscribe(AddLinkedLibrary); AddLinkerScriptCommand = ReactiveCommand.Create(); AddLinkerScriptCommand.Subscribe(AddLinkerScript); RemoveLinkerScriptCommand = ReactiveCommand.Create(); RemoveLinkerScriptCommand.Subscribe(RemoveLinkerScript); RemoveLinkedLibraryCommand = ReactiveCommand.Create(); RemoveLinkedLibraryCommand.Subscribe(RemoveLinkedLibrary); AddSystemLibraryCommand = ReactiveCommand.Create(this.WhenAnyValue(x => x.SystemLibraryText, lib => !string.IsNullOrEmpty(lib) && !SystemLibraries.Contains(lib) && lib.All(s => !char.IsWhiteSpace(s)))); AddSystemLibraryCommand.Subscribe(_ => { SystemLibraries.Add(SystemLibraryText); SystemLibraryText = string.Empty; UpdateLinkerString(); }); RemoveSystemLibraryCommand = ReactiveCommand.Create(this.WhenAnyValue(x => x.SelectedSystemLibrary, selected => !string.IsNullOrEmpty(selected))); RemoveSystemLibraryCommand.Subscribe(_ => { SystemLibraries.Remove(SelectedSystemLibrary); UpdateLinkerString(); }); UpdateLinkerString(); }
//////////////// /// <param name="theme">Appearance style.</param> /// <param name="image">Display image.</param> /// <param name="url">URL.</param> /// <param name="hoverUrl">Indicates if the current element handles its own mouse hover URL display behavior.</param> public UIImageUrl(UITheme theme, Texture2D image, string url, bool hoverUrl = true) : base(theme, true) { this.IsVisited = false; this.Url = url; this.WillDrawOwnHoverUrl = hoverUrl; this.ImageElement = new UIImageButton(image); this.ImageElement.SetVisibility(1f, 0.75f); this.Append(this.ImageElement); this.Width.Pixels = this.ImageElement.Width.Pixels; this.Width.Percent = this.ImageElement.Width.Percent; this.Height.Pixels = this.ImageElement.Height.Pixels; this.Height.Percent = this.ImageElement.Height.Percent; this.OnMouseOver += (evt, __) => { if (!this.ImageElement.IsMouseHovering) { this.ImageElement.MouseOver(evt); } }; this.OnMouseOut += (evt, __) => { if (this.ImageElement.IsMouseHovering) { this.ImageElement.MouseOut(evt); } }; this.OnClick += (_, __) => { try { SystemLibraries.OpenUrl(this.Url); //System.Diagnostics.Process.Start( this.Url ); this.IsVisited = true; } catch (Exception e) { Main.NewText(e.Message); } }; this.RefreshTheme(); }