Skip to content

Commit

Permalink
Merge branch 'next' into czech-transl
Browse files Browse the repository at this point in the history
  • Loading branch information
SonGokussj4 committed May 7, 2019
2 parents c837169 + 6f2d7f3 commit 9752df7
Show file tree
Hide file tree
Showing 22 changed files with 404 additions and 263 deletions.
@@ -0,0 +1,53 @@
using Rubberduck.Inspections.Abstract;
using System.Collections.Generic;
using System.Linq;
using Antlr4.Runtime;
using Rubberduck.Inspections.Inspections.Extensions;
using Rubberduck.Inspections.Results;
using Rubberduck.Parsing;
using Rubberduck.Parsing.Grammar;
using Rubberduck.Parsing.Inspections.Abstract;
using Rubberduck.Parsing.VBA;
using Rubberduck.Resources.Inspections;
using Rubberduck.VBEditor;

namespace Rubberduck.CodeAnalysis.Inspections.Concrete
{
public sealed class ObsoleteWhileWendStatementInspection : ParseTreeInspectionBase
{
public ObsoleteWhileWendStatementInspection(RubberduckParserState state)
: base(state)
{
Listener = new ObsoleteWhileWendStatementListener();
}

public override IInspectionListener Listener { get; }

protected override IEnumerable<IInspectionResult> DoGetInspectionResults()
{
return Listener.Contexts.Where(context =>
!context.IsIgnoringInspectionResultFor(State.DeclarationFinder, AnnotationName))
.Select(context => new QualifiedContextInspectionResult(this, InspectionResults.ObsoleteWhileWendStatementInspection, context));
}

public class ObsoleteWhileWendStatementListener : VBAParserBaseListener, IInspectionListener
{
private readonly List<QualifiedContext<ParserRuleContext>> _contexts =
new List<QualifiedContext<ParserRuleContext>>();

public IReadOnlyList<QualifiedContext<ParserRuleContext>> Contexts => _contexts;

public QualifiedModuleName CurrentModuleName { get; set; }

public void ClearContexts()
{
_contexts.Clear();
}

public override void ExitWhileWendStmt(VBAParser.WhileWendStmtContext context)
{
_contexts.Add(new QualifiedContext<ParserRuleContext>(CurrentModuleName, context));
}
}
}
}
@@ -0,0 +1,30 @@
using Rubberduck.CodeAnalysis.Inspections.Concrete;
using Rubberduck.Inspections.Abstract;
using Rubberduck.Parsing.Grammar;
using Rubberduck.Parsing.Inspections.Abstract;
using Rubberduck.Parsing.Rewriter;

namespace Rubberduck.CodeAnalysis.QuickFixes
{
public sealed class ReplaceWhileWendWithDoWhileLoopQuickFix : QuickFixBase
{
public ReplaceWhileWendWithDoWhileLoopQuickFix()
: base(typeof(ObsoleteWhileWendStatementInspection))
{ }

public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)
{
var rewriter = rewriteSession.CheckOutModuleRewriter(result.QualifiedSelection.QualifiedName);
var context = (VBAParser.WhileWendStmtContext)result.Context;

rewriter.Replace(context.WHILE(), "Do While");
rewriter.Replace(context.WEND(), "Loop");
}

public override string Description(IInspectionResult result) => Resources.Inspections.QuickFixes.ReplaceWhileWendWithDoWhileLoopQuickFix;

public override bool CanFixInProcedure => true;
public override bool CanFixInModule => true;
public override bool CanFixInProject => true;
}
}
6 changes: 4 additions & 2 deletions Rubberduck.Core/UI/CodeExplorer/CodeExplorerControl.xaml
Expand Up @@ -264,7 +264,9 @@
<Separator />

<Menu VerticalContentAlignment="Center" Background="Transparent" >
<MenuItem ItemsSource="{StaticResource AddModuleCommands}" VerticalContentAlignment="Center">
<MenuItem ItemsSource="{StaticResource AddModuleCommands}"
VerticalContentAlignment="Center"
HeaderTemplate="{StaticResource MenuItemHeaderDropdownIndicatorTemplate}">
<MenuItem.Header>
<Image Style="{StaticResource ToolbarIconStyle}" Source="{StaticResource AddModuleImage}" />
</MenuItem.Header>
Expand Down Expand Up @@ -340,7 +342,7 @@
<Separator />

<Menu VerticalContentAlignment="Center" Background="Transparent">
<MenuItem>
<MenuItem HeaderTemplate="{StaticResource MenuItemHeaderDropdownIndicatorTemplate}">
<MenuItem.Header>
<Image Style="{StaticResource ToolbarIconStyle}" Source="{StaticResource FontSizeImage}" />
</MenuItem.Header>
Expand Down
10 changes: 10 additions & 0 deletions Rubberduck.Core/UI/Controls/ToolBar.xaml
Expand Up @@ -5,6 +5,16 @@

<BooleanToVisibilityConverter x:Key="BoolToVisibility"/>

<DataTemplate x:Key="MenuItemHeaderDropdownIndicatorTemplate">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<ContentPresenter Content="{Binding}"/>
<Border Margin="6,0,0,0">
<Path VerticalAlignment="Center" Width="6" Fill="{DynamicResource ToolBarGripper}" Stretch="Uniform" HorizontalAlignment="Right"
Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z" />
</Border>
</StackPanel>
</DataTemplate>

<Style x:Key="IconStyle" TargetType="Image">
<Setter Property="Height" Value="16" />
<Setter Property="Width" Value="16" />
Expand Down
9 changes: 6 additions & 3 deletions Rubberduck.Core/UI/Inspections/InspectionResultsControl.xaml
Expand Up @@ -83,12 +83,15 @@

<Separator />
<Menu Background="Transparent">
<MenuItem VerticalAlignment="Center"
Header="{Resx ResxName=Rubberduck.Resources.RubberduckUI, Key=Fix}"
ItemsSource="{Binding QuickFixes}" Background="Transparent">
<MenuItem VerticalAlignment="Center"
HeaderTemplate="{StaticResource MenuItemHeaderDropdownIndicatorTemplate}"
ItemsSource="{Binding QuickFixes}" Background="Transparent">
<MenuItem.Icon>
<Image Source="{StaticResource FixImage}" />
</MenuItem.Icon>
<MenuItem.Header>
<TextBlock Text="{Resx ResxName=Rubberduck.Resources.RubberduckUI, Key=Fix}" />
</MenuItem.Header>
<MenuItem.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Icon">
Expand Down
26 changes: 24 additions & 2 deletions Rubberduck.Core/UI/ToDoItems/ToDoExplorerViewModel.cs
Expand Up @@ -53,9 +53,31 @@ public sealed class ToDoExplorerViewModel : ViewModelBase, INavigateSelection, I
RefreshCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(),
_ =>
{
_state.OnParseRequested(this);
switch(_state.Status)
{
case ParserState.Ready:
case ParserState.Error:
case ParserState.ResolverError:
case ParserState.UnexpectedError:
case ParserState.Pending:
_state.OnParseRequested(this);
break;
}
},
_ => _state.IsDirty());
_ =>
{
switch (_state.Status)
{
case ParserState.Ready:
case ParserState.Error:
case ParserState.ResolverError:
case ParserState.UnexpectedError:
case ParserState.Pending:
return true;
default:
return false;
}
});
NavigateCommand = new NavigateCommand(selectionService);
RemoveCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), ExecuteRemoveCommand, CanExecuteRemoveCommand);
CollapseAllCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), ExecuteCollapseAll);
Expand Down

0 comments on commit 9752df7

Please sign in to comment.