Compare commits

..

No commits in common. "93706449be68704b3a88f8bf8f934aab7bbc0230" and "14334b08d2728a99cab5477ee6e090a8d226059e" have entirely different histories.

8 changed files with 21 additions and 52 deletions

View file

@ -81,8 +81,6 @@ namespace SourceGit.Models
public class RegistryOptionsWrapper(ThemeName defaultTheme) : IRegistryOptions public class RegistryOptionsWrapper(ThemeName defaultTheme) : IRegistryOptions
{ {
public string LastScope { get; set; } = string.Empty;
public IRawTheme GetTheme(string scopeName) => _backend.GetTheme(scopeName); public IRawTheme GetTheme(string scopeName) => _backend.GetTheme(scopeName);
public IRawTheme GetDefaultTheme() => _backend.GetDefaultTheme(); public IRawTheme GetDefaultTheme() => _backend.GetDefaultTheme();
public IRawTheme LoadTheme(ThemeName name) => _backend.LoadTheme(name); public IRawTheme LoadTheme(ThemeName name) => _backend.LoadTheme(name);
@ -113,15 +111,10 @@ namespace SourceGit.Models
public static void SetGrammarByFileName(TextMate.Installation installation, string filePath) public static void SetGrammarByFileName(TextMate.Installation installation, string filePath)
{ {
if (installation is { RegistryOptions: RegistryOptionsWrapper reg } && !string.IsNullOrEmpty(filePath)) if (installation is { RegistryOptions: RegistryOptionsWrapper reg })
{ {
var scope = reg.GetScope(filePath); installation.SetGrammar(reg.GetScope(filePath));
if (reg.LastScope != scope) GC.Collect();
{
reg.LastScope = scope;
installation.SetGrammar(reg.GetScope(filePath));
GC.Collect();
}
} }
} }
} }

View file

@ -562,8 +562,6 @@
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Include untracked files</x:String> <x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Include untracked files</x:String>
<x:String x:Key="Text.Stash.Message" xml:space="preserve">Message:</x:String> <x:String x:Key="Text.Stash.Message" xml:space="preserve">Message:</x:String>
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Optional. Name of this stash</x:String> <x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Optional. Name of this stash</x:String>
<x:String x:Key="Text.Stash.OnlyStagedChanges" xml:space="preserve">Only staged changes</x:String>
<x:String x:Key="Text.Stash.TipForSelectedFiles" xml:space="preserve">Both staged and unstaged changes of selected file(s) will be stashed!!!</x:String>
<x:String x:Key="Text.Stash.Title" xml:space="preserve">Stash Local Changes</x:String> <x:String x:Key="Text.Stash.Title" xml:space="preserve">Stash Local Changes</x:String>
<x:String x:Key="Text.StashCM.Apply" xml:space="preserve">Apply</x:String> <x:String x:Key="Text.StashCM.Apply" xml:space="preserve">Apply</x:String>
<x:String x:Key="Text.StashCM.Drop" xml:space="preserve">Drop</x:String> <x:String x:Key="Text.StashCM.Drop" xml:space="preserve">Drop</x:String>

View file

@ -560,8 +560,6 @@
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">包含未跟踪的文件</x:String> <x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">包含未跟踪的文件</x:String>
<x:String x:Key="Text.Stash.Message" xml:space="preserve">信息 </x:String> <x:String x:Key="Text.Stash.Message" xml:space="preserve">信息 </x:String>
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">选填,用于命名此贮藏</x:String> <x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">选填,用于命名此贮藏</x:String>
<x:String x:Key="Text.Stash.OnlyStagedChanges" xml:space="preserve">仅贮藏暂存区的变更</x:String>
<x:String x:Key="Text.Stash.TipForSelectedFiles" xml:space="preserve">选中文件的所有变更均会被贮藏!</x:String>
<x:String x:Key="Text.Stash.Title" xml:space="preserve">贮藏本地变更</x:String> <x:String x:Key="Text.Stash.Title" xml:space="preserve">贮藏本地变更</x:String>
<x:String x:Key="Text.StashCM.Apply" xml:space="preserve">应用(apply)</x:String> <x:String x:Key="Text.StashCM.Apply" xml:space="preserve">应用(apply)</x:String>
<x:String x:Key="Text.StashCM.Drop" xml:space="preserve">删除(drop)</x:String> <x:String x:Key="Text.StashCM.Drop" xml:space="preserve">删除(drop)</x:String>

View file

@ -565,8 +565,6 @@
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">包含未追蹤的檔案</x:String> <x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">包含未追蹤的檔案</x:String>
<x:String x:Key="Text.Stash.Message" xml:space="preserve">擱置變更訊息:</x:String> <x:String x:Key="Text.Stash.Message" xml:space="preserve">擱置變更訊息:</x:String>
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">選填,用於命名此擱置變更</x:String> <x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">選填,用於命名此擱置變更</x:String>
<x:String x:Key="Text.Stash.OnlyStagedChanges" xml:space="preserve">僅擱置已暫存的變更</x:String>
<x:String x:Key="Text.Stash.TipForSelectedFiles" xml:space="preserve">選中檔案的所有變更均會被擱置!</x:String>
<x:String x:Key="Text.Stash.Title" xml:space="preserve">擱置本機變更</x:String> <x:String x:Key="Text.Stash.Title" xml:space="preserve">擱置本機變更</x:String>
<x:String x:Key="Text.StashCM.Apply" xml:space="preserve">套用 (apply)</x:String> <x:String x:Key="Text.StashCM.Apply" xml:space="preserve">套用 (apply)</x:String>
<x:String x:Key="Text.StashCM.Drop" xml:space="preserve">刪除 (drop)</x:String> <x:String x:Key="Text.StashCM.Drop" xml:space="preserve">刪除 (drop)</x:String>

View file

@ -27,7 +27,7 @@ namespace SourceGit.ViewModels
_repo = repo; _repo = repo;
Current = current; Current = current;
To = to; To = to;
SelectedMode = Models.ResetMode.Supported[1]; SelectedMode = Models.ResetMode.Supported[0];
View = new Views.Reset() { DataContext = this }; View = new Views.Reset() { DataContext = this };
} }

View file

@ -11,7 +11,7 @@ namespace SourceGit.ViewModels
set; set;
} }
public bool HasSelectedFiles public bool CanIgnoreUntracked
{ {
get; get;
} }
@ -22,28 +22,21 @@ namespace SourceGit.ViewModels
set; set;
} }
public bool OnlyStaged public StashChanges(Repository repo, List<Models.Change> changes, bool onlyStaged, bool canIgnoreUntracked)
{
get;
set;
}
public StashChanges(Repository repo, List<Models.Change> changes, bool hasSelectedFiles)
{ {
_repo = repo; _repo = repo;
_changes = changes; _changes = changes;
_onlyStaged = onlyStaged;
HasSelectedFiles = hasSelectedFiles; CanIgnoreUntracked = canIgnoreUntracked;
IncludeUntracked = true; IncludeUntracked = true;
OnlyStaged = false;
View = new Views.StashChanges() { DataContext = this }; View = new Views.StashChanges() { DataContext = this };
} }
public override Task<bool> Sure() public override Task<bool> Sure()
{ {
var jobs = _changes; var jobs = _changes;
if (!HasSelectedFiles && !IncludeUntracked) if (CanIgnoreUntracked && !IncludeUntracked)
{ {
jobs = new List<Models.Change>(); jobs = new List<Models.Change>();
foreach (var job in _changes) foreach (var job in _changes)
@ -63,7 +56,7 @@ namespace SourceGit.ViewModels
return Task.Run(() => return Task.Run(() =>
{ {
var succ = new Commands.Stash(_repo.FullPath).Push(jobs, Message, !HasSelectedFiles && OnlyStaged); var succ = new Commands.Stash(_repo.FullPath).Push(jobs, Message, _onlyStaged);
CallUIThread(() => CallUIThread(() =>
{ {
_repo.MarkWorkingCopyDirtyManually(); _repo.MarkWorkingCopyDirtyManually();
@ -75,5 +68,6 @@ namespace SourceGit.ViewModels
private readonly Repository _repo = null; private readonly Repository _repo = null;
private readonly List<Models.Change> _changes = null; private readonly List<Models.Change> _changes = null;
private readonly bool _onlyStaged = false;
} }
} }

View file

@ -318,9 +318,9 @@ namespace SourceGit.ViewModels
return; return;
if (autoStart) if (autoStart)
PopupHost.ShowAndStartPopup(new StashChanges(_repo, _cached, false)); PopupHost.ShowAndStartPopup(new StashChanges(_repo, _cached, false, true));
else else
PopupHost.ShowPopup(new StashChanges(_repo, _cached, false)); PopupHost.ShowPopup(new StashChanges(_repo, _cached, false, true));
} }
public void StageSelected(Models.Change next) public void StageSelected(Models.Change next)
@ -523,8 +523,9 @@ namespace SourceGit.ViewModels
stash.Click += (_, e) => stash.Click += (_, e) =>
{ {
if (PopupHost.CanCreatePopup()) if (PopupHost.CanCreatePopup())
PopupHost.ShowPopup(new StashChanges(_repo, _selectedUnstaged, true)); {
PopupHost.ShowPopup(new StashChanges(_repo, _selectedUnstaged, false, false));
}
e.Handled = true; e.Handled = true;
}; };
@ -842,7 +843,7 @@ namespace SourceGit.ViewModels
stash.Click += (_, e) => stash.Click += (_, e) =>
{ {
if (PopupHost.CanCreatePopup()) if (PopupHost.CanCreatePopup())
PopupHost.ShowPopup(new StashChanges(_repo, _selectedUnstaged, true)); PopupHost.ShowPopup(new StashChanges(_repo, _selectedUnstaged, false, false));
e.Handled = true; e.Handled = true;
}; };
@ -927,7 +928,7 @@ namespace SourceGit.ViewModels
stash.Click += (_, e) => stash.Click += (_, e) =>
{ {
if (PopupHost.CanCreatePopup()) if (PopupHost.CanCreatePopup())
PopupHost.ShowPopup(new StashChanges(_repo, _selectedStaged, true)); PopupHost.ShowPopup(new StashChanges(_repo, _selectedStaged, true, false));
e.Handled = true; e.Handled = true;
}; };
@ -1096,7 +1097,7 @@ namespace SourceGit.ViewModels
stash.Click += (_, e) => stash.Click += (_, e) =>
{ {
if (PopupHost.CanCreatePopup()) if (PopupHost.CanCreatePopup())
PopupHost.ShowPopup(new StashChanges(_repo, _selectedStaged, true)); PopupHost.ShowPopup(new StashChanges(_repo, _selectedStaged, true, false));
e.Handled = true; e.Handled = true;
}; };

View file

@ -11,7 +11,7 @@
<TextBlock FontSize="18" <TextBlock FontSize="18"
Classes="bold" Classes="bold"
Text="{DynamicResource Text.Stash.Title}"/> Text="{DynamicResource Text.Stash.Title}"/>
<Grid Margin="8,16,0,0" RowDefinitions="32,Auto,Auto" ColumnDefinitions="120,*"> <Grid Margin="8,16,0,0" RowDefinitions="32,Auto" ColumnDefinitions="120,*">
<TextBlock Grid.Row="0" Grid.Column="0" <TextBlock Grid.Row="0" Grid.Column="0"
HorizontalAlignment="Right" HorizontalAlignment="Right"
Margin="8,0" Margin="8,0"
@ -23,24 +23,11 @@
Watermark="{DynamicResource Text.Stash.Message.Placeholder}" Watermark="{DynamicResource Text.Stash.Message.Placeholder}"
v:AutoFocusBehaviour.IsEnabled="True"/> v:AutoFocusBehaviour.IsEnabled="True"/>
<TextBlock Grid.Row="1" Grid.Column="1"
Margin="0,4,0,0"
Text="{DynamicResource Text.Stash.TipForSelectedFiles}"
TextWrapping="Wrap"
Foreground="{DynamicResource Brush.FG2}"
IsVisible="{Binding HasSelectedFiles}"/>
<CheckBox Grid.Row="1" Grid.Column="1" <CheckBox Grid.Row="1" Grid.Column="1"
Height="32" Height="32"
Content="{DynamicResource Text.Stash.IncludeUntracked}" Content="{DynamicResource Text.Stash.IncludeUntracked}"
IsChecked="{Binding IncludeUntracked, Mode=TwoWay}" IsChecked="{Binding IncludeUntracked, Mode=TwoWay}"
IsVisible="{Binding !HasSelectedFiles}"/> IsVisible="{Binding CanIgnoreUntracked}"/>
<CheckBox Grid.Row="2" Grid.Column="1"
Height="32"
Content="{DynamicResource Text.Stash.OnlyStagedChanges}"
IsChecked="{Binding OnlyStaged, Mode=TwoWay}"
IsVisible="{Binding !HasSelectedFiles}"/>
</Grid> </Grid>
</StackPanel> </StackPanel>
</UserControl> </UserControl>