Skip to content

Commit 977d932

Browse files
committed
Copy rename command & Discard items file action.
1 parent 534b4ca commit 977d932

2 files changed

Lines changed: 100 additions & 49 deletions

File tree

SubRenamer/MainForm.cs

Lines changed: 98 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -113,57 +113,13 @@ private void FileListAdd(FileInfo file)
113113
VsList.Add(vsItem);
114114
}
115115

116-
// 删除选定的项目
117-
private void RemoveListSelectedItems()
118-
{
119-
if (FileListUi.SelectedItems.Count <= 0) return;
120-
121-
if (AppSettings.ListItemRemovePrompt)
122-
{
123-
var result = MessageBox.Show("你要删除选定的项目吗?", "删除所选项", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
124-
if (result == DialogResult.No) return;
125-
}
126-
127-
foreach (ListViewItem item in FileListUi.SelectedItems)
128-
{
129-
if (item.Tag == null)
130-
{
131-
item.Remove();
132-
continue;
133-
}
134-
135-
var vsItem = (VsItem)item.Tag;
136-
VsList.Remove(vsItem);
137-
item.Remove();
138-
}
139-
MatchVideoSub();
140-
}
141-
142116
// 全选操作
143117
private void SelectListAll()
144118
{
145119
foreach (ListViewItem item in FileListUi.Items)
146120
item.Selected = true;
147121
}
148122

149-
// 清空列表
150-
private void ClearListAll()
151-
{
152-
if (VsList.Count() == 0 && FileListUi.Items.Count == 0)
153-
return;
154-
155-
if (AppSettings.ListItemRemovePrompt)
156-
{
157-
var result = MessageBox.Show("你要清空列表吗?", "清空列表", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
158-
if (result == DialogResult.No) return;
159-
}
160-
161-
FileListUi.Items.Clear();
162-
VsList.Clear();
163-
164-
RefreshFileListUi();
165-
}
166-
167123
// 重新匹配
168124
private void ReMatch()
169125
{
@@ -209,9 +165,7 @@ private void FileListUi_DragDrop(object sender, DragEventArgs e)
209165
foreach (var fileName in files) FileListAdd(new FileInfo(fileName));
210166
MatchVideoSub();
211167
}
212-
#endregion
213168

214-
#region 各种操作
215169
private void FileListUi_MouseClick(object sender, MouseEventArgs e)
216170
{
217171
if (e.Button == MouseButtons.Right)
@@ -225,8 +179,12 @@ private void FileListUi_MouseClick(object sender, MouseEventArgs e)
225179
items.Add(new MenuItem("编辑", (e1, s1) => EditListSelectedItems(), Shortcut.F3));
226180
items.Add("-");
227181
items.Add(new MenuItem("删除", (e1, s1) => RemoveListSelectedItems(), Shortcut.Del));
228-
items.Add(new MenuItem("丢弃视频", (e1, s1) => { return;Console.WriteLine("TODO"); }));
229-
items.Add(new MenuItem("丢弃字幕", (e1, s1) => { return; Console.WriteLine("TODO"); }));
182+
var discardVideo = new MenuItem("丢弃视频", (e1, s1) => DiscardListSelectedItemsFile(AppFileType.Video));
183+
var discardSub = new MenuItem("丢弃字幕", (e1, s1) => DiscardListSelectedItemsFile(AppFileType.Sub));
184+
if (string.IsNullOrWhiteSpace(selectedItem.Video)) discardVideo.Enabled = false;
185+
if (string.IsNullOrWhiteSpace(selectedItem.Sub)) discardSub.Enabled = false;
186+
items.Add(discardVideo);
187+
items.Add(discardSub);
230188
items.Add("-");
231189
items.Add(new MenuItem("全选", (e1, s1) => SelectListAll(), Shortcut.CtrlA));
232190
items.Add("-");
@@ -236,6 +194,8 @@ private void FileListUi_MouseClick(object sender, MouseEventArgs e)
236194
if (string.IsNullOrWhiteSpace(selectedItem.Sub)) openSubFolder.Enabled = false;
237195
items.Add(openVideoFolder);
238196
items.Add(openSubFolder);
197+
items.Add("-");
198+
items.Add(new MenuItem("复制改名命令至剪切板", (e1, s1) => CopyRenameCommand()));
239199
m.Show(FileListUi, new Point(e.X, e.Y));
240200
}
241201
}
@@ -274,6 +234,96 @@ private void SwitchPreview(bool value, bool force = false)
274234
RefreshFileListUi();
275235

276236
}
237+
238+
// 清空列表
239+
private void ClearListAll()
240+
{
241+
if (VsList.Count() == 0 && FileListUi.Items.Count == 0)
242+
return;
243+
244+
if (AppSettings.ListItemRemovePrompt)
245+
{
246+
var result = MessageBox.Show("你要清空列表吗?", "清空列表", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
247+
if (result == DialogResult.No) return;
248+
}
249+
250+
FileListUi.Items.Clear();
251+
VsList.Clear();
252+
253+
RefreshFileListUi();
254+
}
255+
256+
private void DiscardListSelectedItemsFile(AppFileType FileType)
257+
{
258+
if (FileListUi.SelectedItems.Count <= 0) return;
259+
260+
string label = "";
261+
if (FileType.Equals(AppFileType.Video)) label = "视频";
262+
else if (FileType.Equals(AppFileType.Sub)) label = "字幕";
263+
264+
if (AppSettings.ListItemRemovePrompt)
265+
{
266+
var result = MessageBox.Show($"你要丢弃选定项目的{label}吗?源文件不会被删除", $"丢弃所选项的{label}", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
267+
if (result == DialogResult.No) return;
268+
}
269+
270+
foreach (ListViewItem item in FileListUi.SelectedItems)
271+
{
272+
if (item.Tag == null)
273+
{
274+
item.Remove();
275+
continue;
276+
}
277+
278+
var vsItem = (VsItem)item.Tag;
279+
if (FileType.Equals(AppFileType.Video)) vsItem.Video = null;
280+
if (FileType.Equals(AppFileType.Sub)) vsItem.Sub = null;
281+
}
282+
283+
RefreshFileListUi();
284+
}
285+
286+
// 删除选定的项目
287+
private void RemoveListSelectedItems()
288+
{
289+
if (FileListUi.SelectedItems.Count <= 0) return;
290+
291+
if (AppSettings.ListItemRemovePrompt)
292+
{
293+
var result = MessageBox.Show("你要删除选定的项目吗?", "删除所选项", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
294+
if (result == DialogResult.No) return;
295+
}
296+
297+
foreach (ListViewItem item in FileListUi.SelectedItems)
298+
{
299+
if (item.Tag == null)
300+
{
301+
item.Remove();
302+
continue;
303+
}
304+
305+
var vsItem = (VsItem)item.Tag;
306+
VsList.Remove(vsItem);
307+
item.Remove();
308+
}
309+
310+
RefreshFileListUi();
311+
}
312+
313+
private void CopyRenameCommand()
314+
{
315+
var cmd = "";
316+
var renameDict = GetSubRenameDict();
317+
if (renameDict.Count < 0) return;
318+
var selectedList = new List<ListViewItem>(FileListUi.SelectedItems.OfType<ListViewItem>());
319+
foreach (var rename in renameDict)
320+
{
321+
if (FileListUi.SelectedItems.Count > 0
322+
&& !selectedList.Exists(o => o.Tag != null && ((VsItem)o.Tag).Sub == rename.Key)) continue;
323+
cmd += $"mv \"{rename.Key}\" \"{rename.Value}\"{Environment.NewLine}";
324+
}
325+
Clipboard.SetDataObject(cmd.Trim());
326+
}
277327
#endregion
278328

279329
#region 点击事件

SubRenamer/SubRenamer.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,14 @@
4444
</PropertyGroup>
4545
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
4646
<PlatformTarget>AnyCPU</PlatformTarget>
47-
<DebugType>pdbonly</DebugType>
47+
<DebugType>embedded</DebugType>
4848
<Optimize>true</Optimize>
4949
<OutputPath>bin\Release\</OutputPath>
5050
<DefineConstants>TRACE</DefineConstants>
5151
<ErrorReport>prompt</ErrorReport>
5252
<WarningLevel>4</WarningLevel>
5353
<Prefer32Bit>false</Prefer32Bit>
54+
<DebugSymbols>true</DebugSymbols>
5455
</PropertyGroup>
5556
<PropertyGroup />
5657
<PropertyGroup>

0 commit comments

Comments
 (0)