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();
        }
Example #2
0
        ////////////////

        /// <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();
        }
Example #4
0
        ////////////////

        /// <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();
        }