Tabs Studio v4.8.0 released:
- Replaced the Title grouping regex with path specific Title splitting rules.
Download link: Tabs Studio v4.8.0.
Tabs Studio v4.8.0 released:
Download link: Tabs Studio v4.8.0.
Tabs Studio v4.7.3 released:
Download link: Tabs Studio v4.7.3.
Tabs Studio v4.7.1 released:
Download link: Tabs Studio v4.7.1.
Tabs Studio v4.7.0 released:
Download link: Tabs Studio v4.7.0.
Visual Studio 2019 16.4 Preview 2 adds the vertical tabs layout option to the core product:
Tabs Studio continues to work as usual if you keep the tab layout option set to the default Top value, but I’d like to use this opportunity to improve vertical tabs usage experience. More specifically, when vertical tabs are activated in VS 2019, Tabs Studio reuses this area to show tabs, instead of showing them in a separate tool window:
If you want to try it yourself, install Visual Studio Preview.
Enable vertical tabs in Visual Studio options:
And install Tabs Studio v4.6.2.
You can quickly open a corresponding file from the tab context menu:
But some system and autogenerated files don’t need to be open manually:
You can remove them from the context menu adding the defining pattern without a capturing group to the Title grouping regex option:
In some configurations there are could be just too many corresponding files, making the context menu hard to use:
For this scenario I’ve created the NoMoreOpen add-in that removes corresponding file items from the context menu if there are more than 5 of them:
TrackEd add-in shows a yellow or green bar in the tab title for modified and saved documents:
You can customize these colors first by applying the following Tabs style (copied from TrackEd source):
<Style TargetType="TabsStudio:TabNameModificationMarker" BasedOn="{StaticResource DefaultTabNameModificationMarkerStyle}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TabsStudio:TabNameModificationMarker}"> <TextBlock Name="TabNameModificationMarkerTextBlock" Padding="0" Margin="3,2,0,2" Text=" "/> <ControlTemplate.Triggers> <DataTrigger Binding="{Binding Path=(TabsStudioTrackEd:Properties.DocStatus), RelativeSource={RelativeSource AncestorType=TabsStudio:TabNameGroup}}" Value="Dirty"> <Setter TargetName="TabNameModificationMarkerTextBlock" Property="TextBlock.Background" Value="#E5AC00"/> <Setter Property="Visibility" Value="Visible"/> </DataTrigger> <DataTrigger Binding="{Binding Path=(TabsStudioTrackEd:Properties.DocStatus), RelativeSource={RelativeSource AncestorType=TabsStudio:TabNameGroup}}" Value="Saved"> <Setter TargetName="TabNameModificationMarkerTextBlock" Property="TextBlock.Background" Value="#009900"/> <Setter Property="Visibility" Value="Visible"/> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style TargetType="TabsStudio:TabExtensionModificationMarker" BasedOn="{StaticResource DefaultTabExtensionModificationMarkerStyle}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TabsStudio:TabExtensionModificationMarker}"> <TextBlock Name="TabExtensionModificationMarkerTextBlock" Padding="0" Margin="0,2,0,2" Text=" "/> <ControlTemplate.Triggers> <DataTrigger Binding="{Binding Path=(TabsStudioTrackEd:Properties.DocStatus), RelativeSource={RelativeSource AncestorType=TabsStudio:TabExtensionGroup}}" Value="Dirty"> <Setter TargetName="TabExtensionModificationMarkerTextBlock" Property="TextBlock.Background" Value="#E5AC00"/> <Setter Property="Visibility" Value="Visible"/> </DataTrigger> <DataTrigger Binding="{Binding Path=(TabsStudioTrackEd:Properties.DocStatus), RelativeSource={RelativeSource AncestorType=TabsStudio:TabExtensionGroup}}" Value="Saved"> <Setter TargetName="TabExtensionModificationMarkerTextBlock" Property="TextBlock.Background" Value="#009900"/> <Setter Property="Visibility" Value="Visible"/> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>
And then change colors for the name and extension to your values. For example, after changing default #E5AC00 Dirty color to #D90000 it looks like this:
The Tab coloring rule dialog lets you conveniently define background and foreground colors for a tab matching specific criteria:
The same rule can be also defined as an XAML Tabs style:
<Style TargetType="TabsStudio:Tab" BasedOn="{StaticResource DefaultTabStyle}"> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding Path=Paths, RelativeSource={RelativeSource Self}, Converter={StaticResource RegexMatch},ConverterParameter='WpfApp1'}" Value="True"/> <Condition Binding="{Binding Path=IsTabSelected, RelativeSource={RelativeSource Self}}" Value="True"/> </MultiDataTrigger.Conditions> <Setter Property="Background"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="#e87400" Offset="0"/> <GradientStop Color="#0089E1" Offset="1"/> </LinearGradientBrush> </Setter.Value> </Setter> <Setter Property="Foreground"> <Setter.Value> <SolidColorBrush Color="White"/> </Setter.Value> </Setter> </MultiDataTrigger> </Style.Triggers> </Style>
If you have many similar tab coloring rules, instead of using the Tab coloring rule dialog you may consider generating an XAML style programmatically and then copy it to Tabs Studio.
TStyle.zip is a sample project for Visual Studio 2019 using a T4 Text Template that generates 3 styles for a project tab, selected project tab and previously selected project tab given a project path and a base background color. If you want to define these styles for multiple projects, in the tab.tt file just add a path-color pair to the dictionary, save the file and copy generated tab.txt file contents as Tabs style:
<# var rules = new Dictionary<string, string> { {"WebApplication1", "#800000"}, {"WpfApp1", "#e87400"} }; #>
Tabs Studio v4.6.1 released:
Download link: Tabs Studio v4.6.1.
Tabs Studio v4.6.0 released:
Tabs Studio in SQL Server Management Studio 18.0 RC1
Download link: Tabs Studio v4.6.0.