Skip to content

Commit

Permalink
Let users choose which file types to remember in "Open Recent" (#758)
Browse files Browse the repository at this point in the history
* remember file types preferences

* .midi and .mid are the same thing

* change AddRecentFile to private
  • Loading branch information
oxygen-dioxide committed Jun 28, 2023
1 parent 036f013 commit cbc6eb4
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 3 deletions.
1 change: 1 addition & 0 deletions OpenUtau.Core/Format/MidiWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public static class MidiWriter {
static public UProject LoadProject(string file) {
UProject project = new UProject();
Ustx.AddDefaultExpressions(project);
project.FilePath = file;
// Detects lyric encoding
Encoding lyricEncoding = Encoding.UTF8;
var encodingDetector = new EncodingDetector();
Expand Down
33 changes: 32 additions & 1 deletion OpenUtau.Core/Util/Preferences.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,35 @@ public static void SetSingerSearchPaths(List<string> paths) {
Save();
}

public static void AddRecentFile(string filePath) {
public static void AddRecentFileIfEnabled(string filePath){
//Users can choose adding .ust, .vsqx and .mid files to recent files or not
string ext = Path.GetExtension(filePath);
switch(ext){
case ".ustx":
AddRecentFile(filePath);
break;
case ".mid":
case ".midi":
if(Preferences.Default.RememberMid){
AddRecentFile(filePath);
}
break;
case ".ust":
if(Preferences.Default.RememberUst){
AddRecentFile(filePath);
}
break;
case ".vsqx":
if(Preferences.Default.RememberVsqx){
AddRecentFile(filePath);
}
break;
default:
break;
}
}

private static void AddRecentFile(string filePath) {
if (string.IsNullOrEmpty(filePath) || !File.Exists(filePath)) {
return;
}
Expand Down Expand Up @@ -120,6 +148,9 @@ public class SerializablePreferences {
public int OtoEditor = 0;
public string VLabelerPath = string.Empty;
public bool Beta = false;
public bool RememberMid = false;
public bool RememberUst = true;
public bool RememberVsqx = true;
}
}
}
1 change: 1 addition & 0 deletions OpenUtau/Strings/Strings.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ Warning: this option removes custom presets.</system:String>
<system:String x:Key="prefs.advanced.beta">Beta</system:String>
<system:String x:Key="prefs.advanced.lyricshelper">Lyrics Helper</system:String>
<system:String x:Key="prefs.advanced.lyricshelper.brackets">Lyrics Helper Adds Brackets</system:String>
<system:String x:Key="prefs.advanced.rememberfiletypes">Remember these file types in &quot;Open Recent&quot;</system:String>
<system:String x:Key="prefs.advanced.resamplerlogging">Resampler Logging</system:String>
<system:String x:Key="prefs.advanced.resamplerlogging.warn">Stores resampler output in log files. This option slows down UI and rendering.</system:String>
<system:String x:Key="prefs.advanced.stable">Stable</system:String>
Expand Down
1 change: 1 addition & 0 deletions OpenUtau/Strings/Strings.zh-CN.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@
<system:String x:Key="prefs.advanced.beta">Beta测试版</system:String>
<!--<system:String x:Key="prefs.advanced.lyricshelper">Lyrics Helper</system:String>-->
<!--<system:String x:Key="prefs.advanced.lyricshelper.brackets">Lyrics Helper Adds Brackets</system:String>-->
<system:String x:Key="prefs.advanced.rememberfiletypes">在&quot;最近打开&quot;中记住以下文件格式</system:String>
<system:String x:Key="prefs.advanced.resamplerlogging">重采样器日志</system:String>
<system:String x:Key="prefs.advanced.resamplerlogging.warn">在日志文件中保存重采样器输出。这个选项会使UI和渲染性能下降。</system:String>
<system:String x:Key="prefs.advanced.stable">稳定版</system:String>
Expand Down
4 changes: 2 additions & 2 deletions OpenUtau/ViewModels/MainWindowViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -257,9 +257,9 @@ public void OnNext(UCommand cmd, bool isUndo) {
ProgressText = progressBarNotification.Info;
});
} else if (cmd is LoadProjectNotification loadProject) {
Core.Util.Preferences.AddRecentFile(loadProject.project.FilePath);
Core.Util.Preferences.AddRecentFileIfEnabled(loadProject.project.FilePath);
} else if (cmd is SaveProjectNotification saveProject) {
Core.Util.Preferences.AddRecentFile(saveProject.Path);
Core.Util.Preferences.AddRecentFileIfEnabled(saveProject.Path);
}
this.RaisePropertyChanged(nameof(Title));
}
Expand Down
21 changes: 21 additions & 0 deletions OpenUtau/ViewModels/PreferencesViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ public override string ToString() {
.ToList();
[Reactive] public LyricsHelperOption? LyricsHelper { get; set; }
[Reactive] public int LyricsHelperBrackets { get; set; }
[Reactive] public bool RememberMid{ get; set; }
[Reactive] public bool RememberUst{ get; set; }
[Reactive] public bool RememberVsqx{ get; set; }

private List<AudioOutputDevice>? audioOutputDevices;
private AudioOutputDevice? audioOutputDevice;
Expand Down Expand Up @@ -127,6 +130,9 @@ public PreferencesViewModel() {
LyricsHelper = LyricsHelpers.FirstOrDefault(option => option.klass.Equals(ActiveLyricsHelper.Inst.GetPreferred()));
LyricsHelperBrackets = Preferences.Default.LyricsHelperBrackets ? 1 : 0;
OtoEditor = Preferences.Default.OtoEditor;
RememberMid = Preferences.Default.RememberMid;
RememberUst = Preferences.Default.RememberUst;
RememberVsqx = Preferences.Default.RememberVsqx;

this.WhenAnyValue(vm => vm.AudioOutputDevice)
.WhereNotNull()
Expand Down Expand Up @@ -234,6 +240,21 @@ public PreferencesViewModel() {
Preferences.Default.OnnxGpu = index.deviceId;
Preferences.Save();
});
this.WhenAnyValue(vm => vm.RememberMid)
.Subscribe(index => {
Preferences.Default.RememberMid = index;
Preferences.Save();
});
this.WhenAnyValue(vm => vm.RememberUst)
.Subscribe(index => {
Preferences.Default.RememberUst = index;
Preferences.Save();
});
this.WhenAnyValue(vm => vm.RememberVsqx)
.Subscribe(index => {
Preferences.Default.RememberVsqx = index;
Preferences.Save();
});
}

public void TestAudioOutputDevice() {
Expand Down
9 changes: 9 additions & 0 deletions OpenUtau/Views/PreferencesDialog.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,15 @@
<ComboBoxItem Content="{DynamicResource prefs.off}"/>
<ComboBoxItem Content="{DynamicResource prefs.on}"/>
</ComboBox>
<TextBlock Text="{DynamicResource prefs.advanced.rememberfiletypes}" />
<Grid ColumnDefinitions="Auto,Auto" RowDefinitions="25,25,25" VerticalAlignment="Center">
<CheckBox IsChecked="{Binding RememberMid}" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center"/>
<TextBlock Text=" .mid" Grid.Column="1" Grid.Row="0" VerticalAlignment="Center"/>
<CheckBox IsChecked="{Binding RememberUst}" Grid.Column="0" Grid.Row="1" VerticalAlignment="Center"/>
<TextBlock Text=" .ust" Grid.Column="1" Grid.Row="1" VerticalAlignment="Center"/>
<CheckBox IsChecked="{Binding RememberVsqx}" Grid.Column="0" Grid.Row="2" VerticalAlignment="Center"/>
<TextBlock Text=" .vsqx" Grid.Column="1" Grid.Row="2" VerticalAlignment="Center"/>
</Grid>
</StackPanel>
</HeaderedContentControl>
</StackPanel>
Expand Down

0 comments on commit cbc6eb4

Please sign in to comment.