Skip to content

Commit cbc6eb4

Browse files
Let users choose which file types to remember in "Open Recent" (#758)
* remember file types preferences * .midi and .mid are the same thing * change AddRecentFile to private
1 parent 036f013 commit cbc6eb4

File tree

7 files changed

+67
-3
lines changed

7 files changed

+67
-3
lines changed

OpenUtau.Core/Format/MidiWriter.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public static class MidiWriter {
4343
static public UProject LoadProject(string file) {
4444
UProject project = new UProject();
4545
Ustx.AddDefaultExpressions(project);
46+
project.FilePath = file;
4647
// Detects lyric encoding
4748
Encoding lyricEncoding = Encoding.UTF8;
4849
var encodingDetector = new EncodingDetector();

OpenUtau.Core/Util/Preferences.cs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,35 @@ public static void SetSingerSearchPaths(List<string> paths) {
3838
Save();
3939
}
4040

41-
public static void AddRecentFile(string filePath) {
41+
public static void AddRecentFileIfEnabled(string filePath){
42+
//Users can choose adding .ust, .vsqx and .mid files to recent files or not
43+
string ext = Path.GetExtension(filePath);
44+
switch(ext){
45+
case ".ustx":
46+
AddRecentFile(filePath);
47+
break;
48+
case ".mid":
49+
case ".midi":
50+
if(Preferences.Default.RememberMid){
51+
AddRecentFile(filePath);
52+
}
53+
break;
54+
case ".ust":
55+
if(Preferences.Default.RememberUst){
56+
AddRecentFile(filePath);
57+
}
58+
break;
59+
case ".vsqx":
60+
if(Preferences.Default.RememberVsqx){
61+
AddRecentFile(filePath);
62+
}
63+
break;
64+
default:
65+
break;
66+
}
67+
}
68+
69+
private static void AddRecentFile(string filePath) {
4270
if (string.IsNullOrEmpty(filePath) || !File.Exists(filePath)) {
4371
return;
4472
}
@@ -120,6 +148,9 @@ public class SerializablePreferences {
120148
public int OtoEditor = 0;
121149
public string VLabelerPath = string.Empty;
122150
public bool Beta = false;
151+
public bool RememberMid = false;
152+
public bool RememberUst = true;
153+
public bool RememberVsqx = true;
123154
}
124155
}
125156
}

OpenUtau/Strings/Strings.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ Warning: this option removes custom presets.</system:String>
244244
<system:String x:Key="prefs.advanced.beta">Beta</system:String>
245245
<system:String x:Key="prefs.advanced.lyricshelper">Lyrics Helper</system:String>
246246
<system:String x:Key="prefs.advanced.lyricshelper.brackets">Lyrics Helper Adds Brackets</system:String>
247+
<system:String x:Key="prefs.advanced.rememberfiletypes">Remember these file types in &quot;Open Recent&quot;</system:String>
247248
<system:String x:Key="prefs.advanced.resamplerlogging">Resampler Logging</system:String>
248249
<system:String x:Key="prefs.advanced.resamplerlogging.warn">Stores resampler output in log files. This option slows down UI and rendering.</system:String>
249250
<system:String x:Key="prefs.advanced.stable">Stable</system:String>

OpenUtau/Strings/Strings.zh-CN.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@
244244
<system:String x:Key="prefs.advanced.beta">Beta测试版</system:String>
245245
<!--<system:String x:Key="prefs.advanced.lyricshelper">Lyrics Helper</system:String>-->
246246
<!--<system:String x:Key="prefs.advanced.lyricshelper.brackets">Lyrics Helper Adds Brackets</system:String>-->
247+
<system:String x:Key="prefs.advanced.rememberfiletypes">在&quot;最近打开&quot;中记住以下文件格式</system:String>
247248
<system:String x:Key="prefs.advanced.resamplerlogging">重采样器日志</system:String>
248249
<system:String x:Key="prefs.advanced.resamplerlogging.warn">在日志文件中保存重采样器输出。这个选项会使UI和渲染性能下降。</system:String>
249250
<system:String x:Key="prefs.advanced.stable">稳定版</system:String>

OpenUtau/ViewModels/MainWindowViewModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,9 +257,9 @@ public void OnNext(UCommand cmd, bool isUndo) {
257257
ProgressText = progressBarNotification.Info;
258258
});
259259
} else if (cmd is LoadProjectNotification loadProject) {
260-
Core.Util.Preferences.AddRecentFile(loadProject.project.FilePath);
260+
Core.Util.Preferences.AddRecentFileIfEnabled(loadProject.project.FilePath);
261261
} else if (cmd is SaveProjectNotification saveProject) {
262-
Core.Util.Preferences.AddRecentFile(saveProject.Path);
262+
Core.Util.Preferences.AddRecentFileIfEnabled(saveProject.Path);
263263
}
264264
this.RaisePropertyChanged(nameof(Title));
265265
}

OpenUtau/ViewModels/PreferencesViewModel.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ public override string ToString() {
7878
.ToList();
7979
[Reactive] public LyricsHelperOption? LyricsHelper { get; set; }
8080
[Reactive] public int LyricsHelperBrackets { get; set; }
81+
[Reactive] public bool RememberMid{ get; set; }
82+
[Reactive] public bool RememberUst{ get; set; }
83+
[Reactive] public bool RememberVsqx{ get; set; }
8184

8285
private List<AudioOutputDevice>? audioOutputDevices;
8386
private AudioOutputDevice? audioOutputDevice;
@@ -127,6 +130,9 @@ public PreferencesViewModel() {
127130
LyricsHelper = LyricsHelpers.FirstOrDefault(option => option.klass.Equals(ActiveLyricsHelper.Inst.GetPreferred()));
128131
LyricsHelperBrackets = Preferences.Default.LyricsHelperBrackets ? 1 : 0;
129132
OtoEditor = Preferences.Default.OtoEditor;
133+
RememberMid = Preferences.Default.RememberMid;
134+
RememberUst = Preferences.Default.RememberUst;
135+
RememberVsqx = Preferences.Default.RememberVsqx;
130136

131137
this.WhenAnyValue(vm => vm.AudioOutputDevice)
132138
.WhereNotNull()
@@ -234,6 +240,21 @@ public PreferencesViewModel() {
234240
Preferences.Default.OnnxGpu = index.deviceId;
235241
Preferences.Save();
236242
});
243+
this.WhenAnyValue(vm => vm.RememberMid)
244+
.Subscribe(index => {
245+
Preferences.Default.RememberMid = index;
246+
Preferences.Save();
247+
});
248+
this.WhenAnyValue(vm => vm.RememberUst)
249+
.Subscribe(index => {
250+
Preferences.Default.RememberUst = index;
251+
Preferences.Save();
252+
});
253+
this.WhenAnyValue(vm => vm.RememberVsqx)
254+
.Subscribe(index => {
255+
Preferences.Default.RememberVsqx = index;
256+
Preferences.Save();
257+
});
237258
}
238259

239260
public void TestAudioOutputDevice() {

OpenUtau/Views/PreferencesDialog.axaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,15 @@
172172
<ComboBoxItem Content="{DynamicResource prefs.off}"/>
173173
<ComboBoxItem Content="{DynamicResource prefs.on}"/>
174174
</ComboBox>
175+
<TextBlock Text="{DynamicResource prefs.advanced.rememberfiletypes}" />
176+
<Grid ColumnDefinitions="Auto,Auto" RowDefinitions="25,25,25" VerticalAlignment="Center">
177+
<CheckBox IsChecked="{Binding RememberMid}" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center"/>
178+
<TextBlock Text=" .mid" Grid.Column="1" Grid.Row="0" VerticalAlignment="Center"/>
179+
<CheckBox IsChecked="{Binding RememberUst}" Grid.Column="0" Grid.Row="1" VerticalAlignment="Center"/>
180+
<TextBlock Text=" .ust" Grid.Column="1" Grid.Row="1" VerticalAlignment="Center"/>
181+
<CheckBox IsChecked="{Binding RememberVsqx}" Grid.Column="0" Grid.Row="2" VerticalAlignment="Center"/>
182+
<TextBlock Text=" .vsqx" Grid.Column="1" Grid.Row="2" VerticalAlignment="Center"/>
183+
</Grid>
175184
</StackPanel>
176185
</HeaderedContentControl>
177186
</StackPanel>

0 commit comments

Comments
 (0)