Exemplo n.º 1
0
        public bool Upgrade(IIndentGuide service, RegistryKey root, string subkeyName)
        {
            int version;
            using (var reg = root.OpenSubKey(subkeyName, false)) {
                version = (reg == null) ? 0 : (int)reg.GetValue("Version", IndentGuidePackage.DEFAULT_VERSION);
            }

            if (version == 0 || version == IndentGuidePackage.Version) {
                return false;
            }

            using (var reg = root.CreateSubKey(subkeyName)) {
                if (version >= 0x000C0903) {
                    // Nothing to upgrade
                } else if (version == 0x000C0902) {
                    UpgradeFrom_12_9_2(reg);
                } else if (version >= 0x000C0000) {
                    // Nothing to upgrade
                } else if (version >= 0x000B0901) {
                    UpgradeFrom_11_9_0(reg);
                } else if (version >= 0x000A0901) {
                    UpgradeFrom_10_9_1(reg);
                } else {
                    UpgradeFrom_Earlier(reg);
                }

                // Upgrading will make guides visible regardless of the
                // previous setting.
                reg.SetValue("Visible", 1);
            }

            return true;
        }
Exemplo n.º 2
0
        /// <summary>
        ///     Instantiates a IndentGuide manager when a textView is created.
        /// </summary>
        /// <param name="textView">The <see cref="IWpfTextView" /> upon which the adornment should be placed</param>
        public void TextViewCreated(IWpfTextView textView)
        {
            IIndentGuide service = ServiceProvider.GlobalProvider.GetService(typeof(SIndentGuide)) as IIndentGuide;

            Debug.Assert(textView != null, "No IWpfTextView instance provided");
            Debug.Assert(service != null, "IndentGuide service is not running");
            if (textView != null && service != null)
            {
                new IndentGuideView(textView, service);
            }
        }
Exemplo n.º 3
0
 private bool ValidateService(IIndentGuide service)
 {
     if (service == null)
     {
         Errors.Log(string.Format("service is null{0}{1}",
                                  Environment.NewLine,
                                  new StackTrace(1, true)
                                  ));
         return(false);
     }
     return(true);
 }
Exemplo n.º 4
0
        public bool Upgrade(IIndentGuide service, RegistryKey root, string subkeyName)
        {
            int version;

            using (RegistryKey reg = root.OpenSubKey(subkeyName, false))
            {
                version = reg == null ? 0 : (int)reg.GetValue("Version", IndentGuidePackage.DEFAULT_VERSION);
            }

            if (version == 0 || version == IndentGuidePackage.Version)
            {
                return(false);
            }

            using (RegistryKey reg = root.CreateSubKey(subkeyName))
            {
                if (version >= 0x000C0903)
                {
                    // Nothing to upgrade
                }
                else if (version == 0x000C0902)
                {
                    UpgradeFrom_12_9_2(reg);
                }
                else if (version >= 0x000C0000)
                {
                    // Nothing to upgrade
                }
                else if (version >= 0x000B0901)
                {
                    UpgradeFrom_11_9_0(reg);
                }
                else if (version >= 0x000A0901)
                {
                    UpgradeFrom_10_9_1(reg);
                }
                else
                {
                    UpgradeFrom_Earlier(reg);
                }

                // Upgrading will make guides visible regardless of the
                // previous setting.
                reg.SetValue("Visible", 1);
            }

            return(true);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Instantiates a new indent guide manager for a view.
        /// </summary>
        /// <param name="view">The text view to provide guides for.</param>
        /// <param name="service">The Indent Guide service.</param>
        public IndentGuideView(IWpfTextView view, IIndentGuide service)
        {
            View = view;

            if (!service.Themes.TryGetValue(View.TextDataModel.ContentType.DisplayName, out Theme))
            {
                Theme = service.DefaultTheme;
            }
            if (Theme != null && Theme.Behavior != null && Theme.Behavior.Disabled)
            {
                return;
            }

            GuideBrushCache = new Dictionary <System.Drawing.Color, Brush>();
            GlowEffectCache = new Dictionary <System.Drawing.Color, Effect>();

            View.Caret.PositionChanged += Caret_PositionChanged;
            View.LayoutChanged         += View_LayoutChanged;
            View.Options.OptionChanged += View_OptionChanged;

            Layer  = view.GetAdornmentLayer("IndentGuide");
            Canvas = new Canvas();
            Canvas.HorizontalAlignment = HorizontalAlignment.Stretch;
            Canvas.VerticalAlignment   = VerticalAlignment.Stretch;
            Layer.AddAdornment(AdornmentPositioningBehavior.OwnerControlled, null, null, Canvas, CanvasRemoved);

            Debug.Assert(Theme != null, "No themes loaded");
            if (Theme == null)
            {
                Theme = new IndentTheme();
            }
            service.ThemesChanged += new EventHandler(Service_ThemesChanged);

            Analysis = new DocumentAnalyzer(
                View.TextSnapshot,
                Theme.Behavior,
                View.Options.GetOptionValue(DefaultOptions.IndentSizeOptionId),
                View.Options.GetOptionValue(DefaultOptions.TabSizeOptionId)
                );

            GlobalVisible           = service.Visible;
            service.VisibleChanged += new EventHandler(Service_VisibleChanged);

            var t = AnalyzeAndUpdateAdornments();
        }
Exemplo n.º 6
0
		/// <summary>
		/// Instantiates a new indent guide manager for a view.
		/// </summary>
		/// <param name="view">The text view to provide guides for.</param>
		/// <param name="service">The Indent Guide service.</param>
		public IndentGuideView(IWpfTextView view, IIndentGuide service)
		{
			View = view;

			if (!service.Themes.TryGetValue(View.TextDataModel.ContentType.DisplayName, out Theme))
			{
				Theme = service.DefaultTheme;
			}
			if (Theme != null && Theme.Behavior != null && Theme.Behavior.Disabled)
				return;

			GuideBrushCache = new Dictionary<System.Drawing.Color, Brush>();
			GlowEffectCache = new Dictionary<System.Drawing.Color, Effect>();

			View.Caret.PositionChanged += Caret_PositionChanged;
			View.LayoutChanged += View_LayoutChanged;
			View.Options.OptionChanged += View_OptionChanged;

			Layer = view.GetAdornmentLayer("IndentGuide");
			Canvas = new Canvas();
			Canvas.HorizontalAlignment = HorizontalAlignment.Stretch;
			Canvas.VerticalAlignment = VerticalAlignment.Stretch;
			Layer.AddAdornment(AdornmentPositioningBehavior.OwnerControlled, null, null, Canvas, CanvasRemoved);

			Debug.Assert(Theme != null, "No themes loaded");
			if (Theme == null)
			{
				Theme = new IndentTheme();
			}
			service.ThemesChanged += new EventHandler(Service_ThemesChanged);

			Analysis = new DocumentAnalyzer(
				View.TextSnapshot,
				Theme.Behavior,
				View.Options.GetOptionValue(DefaultOptions.IndentSizeOptionId),
				View.Options.GetOptionValue(DefaultOptions.TabSizeOptionId)
			);

			GlobalVisible = service.Visible;
			service.VisibleChanged += new EventHandler(Service_VisibleChanged);

			var t = AnalyzeAndUpdateAdornments();
		}
Exemplo n.º 7
0
        /// <summary>
        ///     Raised when the theme is updated.
        /// </summary>
        private async void Service_ThemesChanged(object sender, EventArgs e)
        {
            IIndentGuide service = (IIndentGuide)sender;

            if (!service.Themes.TryGetValue(View.TextDataModel.ContentType.DisplayName, out Theme))
            {
                Theme = service.DefaultTheme;
            }

            Analysis = new DocumentAnalyzer(
                View.TextSnapshot,
                Theme.Behavior,
                View.Options.GetOptionValue(DefaultOptions.IndentSizeOptionId),
                View.Options.GetOptionValue(DefaultOptions.TabSizeOptionId)
                );
            GuideBrushCache.Clear();
            GlowEffectCache.Clear();

            await AnalyzeAndUpdateAdornments();
        }
Exemplo n.º 8
0
 private bool ValidateService(IIndentGuide service)
 {
     if (service == null) {
         Errors.Log(string.Format("service is null{0}{1}",
             Environment.NewLine,
             new StackTrace(1, true)
         ));
         return false;
     }
     return true;
 }