Ejemplo n.º 1
0
        public void Switch(IHelpProvider sender, HelpInfo newInfo)
        {
            if (sender == null)
            {
                throw new ArgumentNullException("sender");
            }
            if (newInfo == null)
            {
                throw new ArgumentNullException("newInfo");
            }
            HelpInfo lastActiveHelp = this.ActiveHelp;

            for (int i = stack.Count - 1; i >= 0; i--)
            {
                if (stack[i].Key == sender)
                {
                    stack[i] = new KeyValuePair <IHelpProvider, HelpInfo>(sender, newInfo);
                    break;
                }
            }

            if (lastActiveHelp != this.ActiveHelp)
            {
                this.OnActiveHelpChanged(lastActiveHelp, this.ActiveHelp);
            }
        }
Ejemplo n.º 2
0
 public GenDocCommandHandler(IFileManager fileManager, IPublicCommandResolver commandResolver, IHelpProvider helpProvider, MarkdownHelpFormatter helpFormatter)
 {
     _fileManager   = fileManager;
     _helpProvider  = helpProvider;
     _helpFormatter = helpFormatter;
     _commands      = commandResolver.Resolve().OrderBy(command => command.Name());
 }
Ejemplo n.º 3
0
        // end-snippet

        public AppConfig(AppSettings appSettings, IConsole console,
                         IEnvironment environment,
                         IDependencyResolver?dependencyResolver, IHelpProvider helpProvider,
                         NameTransformation?nameTransformation, Action <OnRunCompletedEventArgs>?onRunCompleted,
                         TokenizationEvents tokenizationEvents, BuildEvents buildEvents, IServices services,
                         Dictionary <Type, Func <CommandContext, object> > parameterResolversByType,
                         ExecutionMiddleware[] middlewarePipeline, TokenTransformation[] tokenTransformations)
        {
            AppSettings              = appSettings;
            Console                  = console;
            Environment              = environment;
            DependencyResolver       = dependencyResolver;
            HelpProvider             = helpProvider;
            NameTransformation       = nameTransformation ?? ((_, memberName, overrideName, _) => overrideName ?? memberName);
            OnRunCompleted           = onRunCompleted;
            TokenizationEvents       = tokenizationEvents;
            BuildEvents              = buildEvents;
            Services                 = services;
            ParameterResolversByType = parameterResolversByType;
            MiddlewarePipeline       = middlewarePipeline;
            TokenTransformations     = tokenTransformations;

            ResolverService = services.GetOrAdd(() => new ResolverService());
            ResolverService.BackingResolver = dependencyResolver;
            OnRunCompleted += args => ResolverService.OnRunCompleted(args.CommandContext);
        }
Ejemplo n.º 4
0
		public void Initialize(IInfrastructureFactory infrastructureFactory, IDatabaseModel databaseModel)
		{
			_helpProvider = infrastructureFactory.CreateHelpProvider();
			_codeCompletionProvider = infrastructureFactory.CreateCodeCompletionProvider();
			_navigationService = infrastructureFactory.CreateNavigationService();
			_colorizingTransformer.SetParser(infrastructureFactory.CreateParser());
			DocumentRepository = new SqlDocumentRepository(infrastructureFactory.CreateParser(), infrastructureFactory.CreateStatementValidator(), databaseModel);
		}
Ejemplo n.º 5
0
 public void RegisterHelpProvider(IHelpProvider provider)
 {
     if (this.providers.Contains(provider))
     {
         return;
     }
     this.providers.Add(provider);
 }
Ejemplo n.º 6
0
        public MemoryStorageModule(IHelpProvider helpProvider, IGetRequestProcessor getRequestProcessor, IPostRequestProcessor postRequestProcessor, IDeleteRequestProcessor deleteRequestProcessor)
        {
            Get("/", args => helpProvider.GetHelp(() => Context));

            Get(getRequestProcessor.ProvideGetRoute(), getRequestProcessor.ProvideGetItemAction());
            Post(postRequestProcessor.ProvidePostRoute(), postRequestProcessor.ProvidePostItemAction());
            Delete(deleteRequestProcessor.ProvideDeleteRoute(), deleteRequestProcessor.ProvideDeleteItemAction());
        }
Ejemplo n.º 7
0
 public void Initialize(IInfrastructureFactory infrastructureFactory, IDatabaseModel databaseModel)
 {
     _helpProvider           = infrastructureFactory.CreateHelpProvider();
     _codeCompletionProvider = infrastructureFactory.CreateCodeCompletionProvider();
     _navigationService      = infrastructureFactory.CreateNavigationService();
     _colorizingTransformer.SetParser(infrastructureFactory.CreateParser());
     DocumentRepository = new SqlDocumentRepository(infrastructureFactory.CreateParser(), infrastructureFactory.CreateStatementValidator(), databaseModel);
 }
Ejemplo n.º 8
0
        public void ProvideHelp(object context)
        {
            IHelpProvider helpProvider = this.DetermineHelpProvider(context);

            if (helpProvider == null)
            {
                return;
            }
            helpProvider.ProvideHelp(context);
        }
        // Show full help
        public void ShowHelp()
        {
            for (var cmd = this; cmd != null; cmd = cmd.Parent)
            {
                cmd.IsShowingInformation = true;
            }
            IHelpProvider helpTextProvider = HelpTextProviderFactory.Create(_appSettings);

            Out.WriteLine(helpTextProvider.GetHelpText(this));
        }
Ejemplo n.º 10
0
 public void UpdateFromProvider(IHelpProvider oldProvider, IHelpProvider newProvider, HelpInfo info)
 {
     if (oldProvider != null)
     {
         this.Pop(oldProvider);
     }
     if (info != null)
     {
         this.Push(newProvider, info);
     }
 }
Ejemplo n.º 11
0
 public Engine(
     IProcessorFactory processorFactory,
     IJournalsMetaDataService journalsMetaService,
     IHelpProvider helpProvider,
     ILogger logger)
 {
     this.processorFactory    = processorFactory ?? throw new ArgumentNullException(nameof(processorFactory));
     this.journalsMetaService = journalsMetaService ?? throw new ArgumentNullException(nameof(journalsMetaService));
     this.helpProvider        = helpProvider ?? throw new ArgumentNullException(nameof(helpProvider));
     this.logger = logger;
 }
Ejemplo n.º 12
0
        public void xml_help_provider_returns_crane_help_collection(IHelpProvider xmlProvider, ICommandHelpCollection helpCollection)
        {
            "Given I have an instance of the xml help provider"
            ._(() => xmlProvider = ServiceLocator.Resolve <XmlHelpProvider>());

            "It should return a help collection"
            ._(() =>
            {
                helpCollection = xmlProvider.HelpCollection;
                helpCollection.Should().NotBeNull();
            });

            "It should contain help for the crane commands"
            ._(() => helpCollection.Get("init").Should().NotBeNull());
        }
Ejemplo n.º 13
0
        public Engine(ICommandRunner commandRunner, ISandbox sandbox, IHelpProvider helpProvider)
        {
            if (commandRunner == null)
            {
                throw new ArgumentNullException(nameof(commandRunner));
            }

            if (sandbox == null)
            {
                throw new ArgumentNullException(nameof(sandbox));
            }

            this.commandRunner = commandRunner;
            this.sandbox       = sandbox;
            this.helpProvider  = helpProvider;
        }
Ejemplo n.º 14
0
 public void UpdateFromProvider(IHelpProvider provider, HelpInfo info)
 {
     if (this.ActiveHelpProvider == provider)
     {
         if (info != null)
         {
             this.Switch(provider, info);
         }
         else
         {
             this.Pop(provider);
         }
     }
     else if (info != null)
     {
         this.Push(provider, info);
     }
 }
Ejemplo n.º 15
0
        public void Push(IHelpProvider sender, HelpInfo info)
        {
            if (sender == null)
            {
                throw new ArgumentNullException("sender");
            }
            if (info == null)
            {
                throw new ArgumentNullException("info");
            }
            HelpInfo lastActiveHelp = this.ActiveHelp;

            stack.Add(new KeyValuePair <IHelpProvider, HelpInfo>(sender, info));

            if (lastActiveHelp != this.ActiveHelp)
            {
                this.OnActiveHelpChanged(lastActiveHelp, this.ActiveHelp);
            }
        }
Ejemplo n.º 16
0
        public void Pop(IHelpProvider sender)
        {
            if (sender == null)
            {
                throw new ArgumentNullException("sender");
            }
            HelpInfo lastActiveHelp = this.ActiveHelp;

            for (int i = stack.Count - 1; i >= 0; i--)
            {
                if (stack[i].Key == sender)
                {
                    stack.RemoveAt(i);
                    break;
                }
            }

            if (lastActiveHelp != this.ActiveHelp)
            {
                this.OnActiveHelpChanged(lastActiveHelp, this.ActiveHelp);
            }
        }
Ejemplo n.º 17
0
        public AppConfig(AppSettings appSettings, IConsole console,
                         IDependencyResolver dependencyResolver, IHelpProvider helpProvider,
                         NameTransformation nameTransformation, Action <OnRunCompletedEventArgs> onRunCompleted,
                         TokenizationEvents tokenizationEvents, BuildEvents buildEvents, IServices services,
                         CancellationToken cancellationToken,
                         Dictionary <Type, Func <CommandContext, object> > parameterResolversByType)
        {
            AppSettings              = appSettings;
            Console                  = console;
            DependencyResolver       = dependencyResolver;
            HelpProvider             = helpProvider;
            NameTransformation       = nameTransformation ?? ((attributes, memberName, overrideName, commandNodeType) => overrideName ?? memberName);
            OnRunCompleted           = onRunCompleted;
            TokenizationEvents       = tokenizationEvents;
            BuildEvents              = buildEvents;
            Services                 = services;
            CancellationToken        = cancellationToken;
            ParameterResolversByType = parameterResolversByType;

            ResolverService = services.GetOrAdd(() => new ResolverService());
            ResolverService.BackingResolver = dependencyResolver;
            OnRunCompleted += args => ResolverService.OnRunCompleted(args.CommandContext);
        }
Ejemplo n.º 18
0
        public HelpCommand(IHelpProvider helpProvider)
        {
            if (helpProvider == null)
            {
                throw new ArgumentNullException("helpProvider");
            }

            this.helpProvider = helpProvider;

            this.Attributes = new CommandAttributes
                {
                    CommandName = CommandName,
                    AlternativeCommandNames = this.AlternativeCommandNames,
                    RequiredArguments = new[] { ArgumentNameCommandName },
                    PositionalArguments = new[] { ArgumentNameCommandName },
                    Description = Resources.HelpCommand.CommandDescriptionText,
                    Usage = string.Format("{0} <{1}>", CommandName, ArgumentNameCommandName),
                    Examples = new Dictionary<string, string>
                    {
                        {
                            string.Format("{0}", CommandName),
                            Resources.HelpCommand.CommandExampleDescription1
                        },
                        {
                            string.Format("{0} {1}", CommandName, "package"),
                            Resources.HelpCommand.CommandExampleDescription2
                        }
                    },
                    ArgumentDescriptions = new Dictionary<string, string>
                    {
                        { ArgumentNameCommandName, Resources.HelpCommand.ArgumentDescriptionCommandName }
                    }
                };

            this.Arguments = new Dictionary<string, string>();
        }
Ejemplo n.º 19
0
		public void UpdateFromProvider(IHelpProvider provider, HelpInfo info)
		{
			if (this.ActiveHelpProvider == provider)
			{
				if (info != null)
					this.Switch(provider, info);
				else
					this.Pop(provider);
			}
			else if (info != null)
				this.Push(provider, info);
		}
Ejemplo n.º 20
0
		public void UpdateFromProvider(IHelpProvider oldProvider, IHelpProvider newProvider, HelpInfo info)
		{
			if (oldProvider != null) this.Pop(oldProvider);
			if (info != null) this.Push(newProvider, info);
		}
Ejemplo n.º 21
0
		public void Switch(IHelpProvider sender, HelpInfo newInfo)
		{
			if (sender == null) throw new ArgumentNullException("sender");
			if (newInfo == null) throw new ArgumentNullException("newInfo");
			HelpInfo lastActiveHelp = this.ActiveHelp;

			for (int i = stack.Count - 1; i >= 0; i--)
			{
				if (stack[i].Key == sender)
				{
					stack[i] = new KeyValuePair<IHelpProvider,HelpInfo>(sender, newInfo);
					break;
				}
			}

			if (lastActiveHelp != this.ActiveHelp)
				this.OnActiveHelpChanged(lastActiveHelp, this.ActiveHelp);
		}
Ejemplo n.º 22
0
		public void Pop(IHelpProvider sender)
		{
			if (sender == null) throw new ArgumentNullException("sender");
			HelpInfo lastActiveHelp = this.ActiveHelp;

			for (int i = stack.Count - 1; i >= 0; i--)
			{
				if (stack[i].Key == sender)
				{
					stack.RemoveAt(i);
					break;
				}
			}

			if (lastActiveHelp != this.ActiveHelp)
				this.OnActiveHelpChanged(lastActiveHelp, this.ActiveHelp);
		}
Ejemplo n.º 23
0
		public void Push(IHelpProvider sender, HelpInfo info)
		{
			if (sender == null) throw new ArgumentNullException("sender");
			if (info == null) throw new ArgumentNullException("info");
			HelpInfo lastActiveHelp = this.ActiveHelp;

			stack.Add(new KeyValuePair<IHelpProvider,HelpInfo>(sender, info));
			
			if (lastActiveHelp != this.ActiveHelp)
				this.OnActiveHelpChanged(lastActiveHelp, this.ActiveHelp);
		}
Ejemplo n.º 24
0
        private static void UpdateHelpStack()
        {
            needStackUpdate = false;

            // Retrieving all windows in a z-sorted way is a "time consuming" (~ 0.05ms) and API-heavy
            // query, and we don't need to be that accurate. Don't do it every time. Once a second is enough.
            bool updateGlobalWindows =
                globalWindows == null ||
                (DateTime.Now - lastGlobalWindowUpdate).TotalMilliseconds > 1000 ||
                globalWindows.Any(f => f.IsDisposed);
            if (updateGlobalWindows)
            {
                lastGlobalWindowUpdate = DateTime.Now;
                globalWindows = EditorHelper.GetZSortedAppWindows();
            }

            // Iterate through our list of windows to find the one we're hovering
            foreach (Form form in globalWindows)
            {
                if (!form.Visible) continue;
                if (!new Rectangle(form.Location, form.Size).Contains(Cursor.Position)) continue;

                Point localPos = form.PointToClient(Cursor.Position);
                hoveredControl = form.GetChildAtPointDeep(localPos, GetChildAtPointSkip.Invisible | GetChildAtPointSkip.Transparent);
                break;
            }

            Control c;
            HelpInfo help;

            // Get rid of disposed Controls
            c = hoveredHelpProvider as Control;
            if (c == null || c.IsDisposed)
            {
                hoveredHelpProvider = null;
                hoveredHelpCaptured = false;
            }

            // An IHelpProvider has captured the mouse: Ask what to do with it.
            if (hoveredHelpCaptured)
            {
                help = hoveredHelpProvider.ProvideHoverHelp(c.PointToClient(Cursor.Position), ref hoveredHelpCaptured);

                // Update provider's help info
                stack.UpdateFromProvider(hoveredHelpProvider, help);

                // If still in charge: Return early.
                if (hoveredHelpCaptured) return;
            }

            // No IHelpProvider in charge: Find one that provides help
            help = null;
            IHelpProvider lastHelpProvider = hoveredHelpProvider;
            foreach (IHelpProvider hp in hoveredControl.GetControlAncestors<IHelpProvider>())
            {
                c = hp as Control;
                help = hp.ProvideHoverHelp(c.PointToClient(Cursor.Position), ref hoveredHelpCaptured);
                hoveredHelpProvider = hp;
                if (help != null || hoveredHelpCaptured) break;
            }

            // Update help system based on the result.
            if (lastHelpProvider != hoveredHelpProvider)
                stack.UpdateFromProvider(lastHelpProvider, hoveredHelpProvider, help);
            else if (hoveredHelpProvider != null)
                stack.UpdateFromProvider(hoveredHelpProvider, help);
        }
Ejemplo n.º 25
0
 public static void SetInstance(IHelpProvider provider)
 {
     _helpProvider = provider;
 }
Ejemplo n.º 26
0
        private static void UpdateHelpStack()
        {
            needStackUpdate = false;

            // Retrieving all windows in a z-sorted way is a "time consuming" (~ 0.05ms) and API-heavy
            // query, and we don't need to be that accurate. Don't do it every time. Once a second is enough.
            bool updateGlobalWindows =
                globalWindows == null ||
                (DateTime.Now - lastGlobalWindowUpdate).TotalMilliseconds > 1000 ||
                globalWindows.Any(f => f.IsDisposed);

            if (updateGlobalWindows)
            {
                lastGlobalWindowUpdate = DateTime.Now;
                globalWindows          = EditorHelper.GetZSortedAppWindows();
            }

            // Iterate through our list of windows to find the one we're hovering
            foreach (Form form in globalWindows)
            {
                if (!form.Visible)
                {
                    continue;
                }
                if (!new Rectangle(form.Location, form.Size).Contains(Cursor.Position))
                {
                    continue;
                }

                Point localPos = form.PointToClient(Cursor.Position);
                hoveredControl = form.GetChildAtPointDeep(localPos, GetChildAtPointSkip.Invisible | GetChildAtPointSkip.Transparent);
                break;
            }

            Control  c;
            HelpInfo help;

            // Get rid of disposed Controls
            c = hoveredHelpProvider as Control;
            if (c == null || c.IsDisposed)
            {
                hoveredHelpProvider = null;
                hoveredHelpCaptured = false;
            }

            // An IHelpProvider has captured the mouse: Ask what to do with it.
            if (hoveredHelpCaptured)
            {
                help = hoveredHelpProvider.ProvideHoverHelp(c.PointToClient(Cursor.Position), ref hoveredHelpCaptured);

                // Update provider's help info
                stack.UpdateFromProvider(hoveredHelpProvider, help);

                // If still in charge: Return early.
                if (hoveredHelpCaptured)
                {
                    return;
                }
            }

            // No IHelpProvider in charge: Find one that provides help
            help = null;
            IHelpProvider lastHelpProvider = hoveredHelpProvider;

            foreach (IHelpProvider hp in hoveredControl.GetControlAncestors <IHelpProvider>())
            {
                c    = hp as Control;
                help = hp.ProvideHoverHelp(c.PointToClient(Cursor.Position), ref hoveredHelpCaptured);
                hoveredHelpProvider = hp;
                if (help != null || hoveredHelpCaptured)
                {
                    break;
                }
            }

            // Update help system based on the result.
            if (lastHelpProvider != hoveredHelpProvider)
            {
                stack.UpdateFromProvider(lastHelpProvider, hoveredHelpProvider, help);
            }
            else if (hoveredHelpProvider != null)
            {
                stack.UpdateFromProvider(hoveredHelpProvider, help);
            }
        }
Ejemplo n.º 27
0
        private static void UpdateHelpStack()
        {
            needStackUpdate = false;

            foreach (Form f in EditorHelper.GetZSortedAppWindows())
            {
                if (!f.Visible)
                {
                    continue;
                }
                if (!new Rectangle(f.Location, f.Size).Contains(Cursor.Position))
                {
                    continue;
                }

                Point localPos = f.PointToClient(Cursor.Position);
                hoveredControl = f.GetChildAtPointDeep(localPos, GetChildAtPointSkip.Invisible | GetChildAtPointSkip.Transparent);
                break;
            }

            Control  c;
            HelpInfo help;

            // Get rid of disposed Controls
            c = hoveredHelpProvider as Control;
            if (c == null || c.IsDisposed)
            {
                hoveredHelpProvider = null;
                hoveredHelpCaptured = false;
            }

            // An IHelpProvider has captured the mouse: Ask what to do with it.
            if (hoveredHelpCaptured)
            {
                help = hoveredHelpProvider.ProvideHoverHelp(c.PointToClient(Cursor.Position), ref hoveredHelpCaptured);

                // Update provider's help info
                stack.UpdateFromProvider(hoveredHelpProvider, help);

                // If still in charge: Return early.
                if (hoveredHelpCaptured)
                {
                    return;
                }
            }

            // No IHelpProvider in charge: Find one that provides help
            help = null;
            IHelpProvider lastHelpProvider = hoveredHelpProvider;

            foreach (IHelpProvider hp in hoveredControl.GetControlAncestors <IHelpProvider>())
            {
                c    = hp as Control;
                help = hp.ProvideHoverHelp(c.PointToClient(Cursor.Position), ref hoveredHelpCaptured);
                hoveredHelpProvider = hp;
                if (help != null || hoveredHelpCaptured)
                {
                    break;
                }
            }

            // Update help system based on the result.
            if (lastHelpProvider != hoveredHelpProvider)
            {
                stack.UpdateFromProvider(lastHelpProvider, hoveredHelpProvider, help);
            }
            else if (hoveredHelpProvider != null)
            {
                stack.UpdateFromProvider(hoveredHelpProvider, help);
            }
        }
Ejemplo n.º 28
0
 public AppRunner <T> WithCustomHelpProvider(IHelpProvider customHelpProvider)
 {
     _settings.CustomHelpProvider = customHelpProvider;
     return(this);
 }
        // Helper method that adds a version option

        // Show full help
        public void ShowHelp()
        {
            IHelpProvider helpTextProvider = HelpTextProviderFactory.Create(_appSettings);

            _appSettings.Out.WriteLine(helpTextProvider.GetHelpText(this));
        }
Ejemplo n.º 30
0
        HelpInfo IHelpProvider.ProvideHoverHelp(Point localPos, ref bool captured)
        {
            // A dropdown is opened. Provide dropdown help.
            IPopupControlHost dropdownEdit = this.FocusEditor as IPopupControlHost;

            if (dropdownEdit != null && dropdownEdit.IsDropDownOpened)
            {
                EnumPropertyEditor           enumEdit           = dropdownEdit as EnumPropertyEditor;
                FlaggedEnumPropertyEditor    enumFlagEdit       = dropdownEdit as FlaggedEnumPropertyEditor;
                ObjectSelectorPropertyEditor objectSelectorEdit = dropdownEdit as ObjectSelectorPropertyEditor;

                // Its able to provide help. Redirect.
                if (dropdownEdit is IHelpProvider)
                {
                    captured = true;
                    Point dropdownEditorPos = this.GetEditorLocation(dropdownEdit as PropertyEditor, true);
                    return((dropdownEdit as IHelpProvider).ProvideHoverHelp(new Point(localPos.X - dropdownEditorPos.X, localPos.Y - dropdownEditorPos.Y), ref captured));
                }
                // Special case: Its a known basic dropdown.
                else if (enumEdit != null)
                {
                    captured = true;
                    if (enumEdit.DropDownHoveredName != null)
                    {
                        return(HelpInfo.FromMember(enumEdit.EditedType.GetField(enumEdit.DropDownHoveredName, ReflectionHelper.BindAll)));
                    }
                    else
                    {
                        FieldInfo field = enumEdit.EditedType.GetField(enumEdit.DisplayedValue.ToString(), ReflectionHelper.BindAll);
                        if (field != null)
                        {
                            return(HelpInfo.FromMember(field));
                        }
                    }
                }
                else if (enumFlagEdit != null)
                {
                    captured = true;
                    if (enumFlagEdit.DropDownHoveredItem != null)
                    {
                        return(HelpInfo.FromMember(enumFlagEdit.EditedType.GetField(enumFlagEdit.DropDownHoveredItem.Caption, ReflectionHelper.BindAll)));
                    }
                    else
                    {
                        FieldInfo field = enumFlagEdit.EditedType.GetField(enumFlagEdit.DisplayedValue.ToString(), ReflectionHelper.BindAll);
                        if (field != null)
                        {
                            return(HelpInfo.FromMember(field));
                        }
                    }
                }
                else if (objectSelectorEdit != null)
                {
                    captured = true;
                    if (objectSelectorEdit.DropDownHoveredObject != null)
                    {
                        return(HelpInfo.FromObject(objectSelectorEdit.DropDownHoveredObject.Value));
                    }
                    else
                    {
                        return(HelpInfo.FromObject(objectSelectorEdit.DisplayedValue));
                    }
                }

                // No help available.
                return(null);
            }
            captured = false;

            // Pick an editor and see if it has access to an actual IHelpProvider
            PropertyEditor pickedEditor = this.PickEditorAt(localPos.X, localPos.Y, true);
            PropertyEditor helpEditor   = pickedEditor;

            while (helpEditor != null)
            {
                Point helpEditorPos = this.GetEditorLocation(helpEditor, true);
                if (helpEditor is IHelpProvider)
                {
                    IHelpProvider localProvider = helpEditor as IHelpProvider;
                    HelpInfo      localHelp     = localProvider.ProvideHoverHelp(new Point(localPos.X - helpEditorPos.X, localPos.Y - helpEditorPos.Y), ref captured);
                    if (localHelp != null)
                    {
                        return(localHelp);
                    }
                }
                helpEditor = helpEditor.ParentEditor;
            }

            // If not, default to member or type information
            if (pickedEditor != null)
            {
                if (!string.IsNullOrEmpty(pickedEditor.PropertyDesc))
                {
                    return(HelpInfo.FromText(pickedEditor.PropertyName, pickedEditor.PropertyDesc));
                }
                else if (pickedEditor.EditedMember != null)
                {
                    return(HelpInfo.FromMember(pickedEditor.EditedMember));
                }
                else if (pickedEditor.EditedType != null)
                {
                    return(HelpInfo.FromMember(pickedEditor.EditedType));
                }
            }

            return(null);
        }
Ejemplo n.º 31
0
 public static void ClearInstance()
 {
     Debug.Assert(_helpProvider != null, "No help provider instance exists");
     _helpProvider = null;
 }
Ejemplo n.º 32
0
        private static void UpdateHelpStack()
        {
            needStackUpdate = false;

            foreach (Form f in EditorHelper.GetZSortedAppWindows())
            {
                if (!f.Visible) continue;
                if (!new Rectangle(f.Location, f.Size).Contains(Cursor.Position)) continue;

                Point localPos = f.PointToClient(Cursor.Position);
                hoveredControl = f.GetChildAtPointDeep(localPos, GetChildAtPointSkip.Invisible | GetChildAtPointSkip.Transparent);
                break;
            }

            Control c;
            HelpInfo help;

            // Get rid of disposed Controls
            c = hoveredHelpProvider as Control;
            if (c == null || c.IsDisposed)
            {
                hoveredHelpProvider = null;
                hoveredHelpCaptured = false;
            }

            // An IHelpProvider has captured the mouse: Ask what to do with it.
            if (hoveredHelpCaptured)
            {
                help = hoveredHelpProvider.ProvideHoverHelp(c.PointToClient(Cursor.Position), ref hoveredHelpCaptured);

                // Update provider's help info
                stack.UpdateFromProvider(hoveredHelpProvider, help);

                // If still in charge: Return early.
                if (hoveredHelpCaptured) return;
            }

            // No IHelpProvider in charge: Find one that provides help
            help = null;
            IHelpProvider lastHelpProvider = hoveredHelpProvider;
            foreach (IHelpProvider hp in hoveredControl.GetControlAncestors<IHelpProvider>())
            {
                c = hp as Control;
                help = hp.ProvideHoverHelp(c.PointToClient(Cursor.Position), ref hoveredHelpCaptured);
                hoveredHelpProvider = hp;
                if (help != null || hoveredHelpCaptured) break;
            }

            // Update help system based on the result.
            if (lastHelpProvider != hoveredHelpProvider)
                stack.UpdateFromProvider(lastHelpProvider, hoveredHelpProvider, help);
            else if (hoveredHelpProvider != null)
                stack.UpdateFromProvider(hoveredHelpProvider, help);
        }
Ejemplo n.º 33
0
        public MainViewModel(
            ILogger logger,
            ISettingsProvider settingsProvider,
            INewsProvider newsProvider,
            IHelpProvider helpProvider,
            IServerListProvider serverListProvider,
            IStatisticsProvider statisticsProvider,
            IServerStatusProvider serverStatusProvider,
            INotificationService notificationService,
            ISelfUpdateService selfUpdateService,
            IGameBackupService gameBackupService,
            IServerHostProvider serverHostProvider,
            ITroubleshootProvider troubleshootProvider,
            IProtocolGameLauncherService protocolGameLauncherService)
        {
            _logger               = logger;
            _settingsProvider     = settingsProvider;
            _newsProvider         = newsProvider;
            _helpProvider         = helpProvider;
            _serverListProvider   = serverListProvider;
            _statisticsProvider   = statisticsProvider;
            _serverStatusProvider = serverStatusProvider;
            _selfUpdateService    = selfUpdateService;
            _serverHostProvider   = serverHostProvider;
            _troubleshootProvider = troubleshootProvider;
            NotificationService   = notificationService;

            LoadTheme(_settingsProvider.GetCurrentSettings().DarkTheme);

            AboutCommand = new RelayCommand(AboutButtonClicked);
            LaunchButtonClickedCommand     = new RelayCommand(LaunchButtonClicked);
            BrowseGameFileCommand          = new RelayCommand(BrowseGameFileClicked);
            BrowseServerFileCommand        = new RelayCommand(BrowseServerFileClicked);
            ApplySettingsCommand           = new RelayCommand(ApplySettingsClicked);
            BrowseResourceDirectoryCommand = new RelayCommand(BrowseResourceDirectoryClicked);
            OpenServerSettingsXmlCommand   = new RelayCommand(EditServerSettingsXmlClicked);
            StartServerCommand             = new RelayCommand(StartServerClicked);
            StopServerCommand            = new RelayCommand(StopServerClicked);
            RestartServerCommand         = new RelayCommand(RestartServerClicked);
            RemoveNotificationCommand    = new RelayCommand <Notification>(RemoveNotificationClicked);
            ServerListTabGotFocusCommand = new RelayCommand <ServerBrowserViewModel>(ServerListTabGotFocus);

            ServerListViewModel = SimpleIoc.Default.GetInstanceWithoutCaching <ServerBrowserViewModel>();

            VerifiedServerListViewModel = SimpleIoc.Default.GetInstanceWithoutCaching <ServerBrowserViewModel>();
            VerifiedServerListViewModel.ServerFilter = s => s.IsVerified;

            FavoriteServerListViewModel = SimpleIoc.Default.GetInstanceWithoutCaching <ServerBrowserViewModel>();
            FavoriteServerListViewModel.ServerFilter = s => s.IsFavorited;

            LocalServerListViewModel = SimpleIoc.Default.GetInstanceWithoutCaching <ServerBrowserViewModel>();
            LocalServerListViewModel.ServerFilter = s => s.LAN;

            RecentServerListViewModel = SimpleIoc.Default.GetInstanceWithoutCaching <ServerBrowserViewModel>();
            RecentServerListViewModel.ServerFilter = s => s.IsRecent;

            _serverListProvider.FavoritedServersUpdated += ServerListProviderOnFavoritedServersUpdated;
            _settingsProvider.SettingsSaved             += SettingsSaved;

            CheckForUpdate();
            GetNews();
            GetTroubleshooting();
            GetHelpItems();
            GetStatistics();
            GetServerStatus();

            if (_settingsProvider.GetCurrentSettings().AskToBackUpGame)
            {
                gameBackupService.CheckBackupStatus();
            }

            protocolGameLauncherService.CheckIfLaunchArgumentExists();
            protocolGameLauncherService.TryVerifyProtocolRegistration();

            EnsureEula();
        }
Ejemplo n.º 34
0
 public HelpCommandHandler(IOutput output, IHelpProvider helpProvider, IHelpFormatter helpFormatter)
 {
     _output        = output;
     _helpProvider  = helpProvider;
     _helpFormatter = helpFormatter;
 }