OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / Controls / Subtitles.cs
1 /*  Subtitles.cs $\r
2     This file is part of the HandBrake source code.\r
3     Homepage: <http://handbrake.fr>.\r
4     It may be used under the terms of the GNU General Public License. */\r
5 \r
6 namespace Handbrake.Controls\r
7 {\r
8     using System;\r
9     using System.Collections.Generic;\r
10     using System.IO;\r
11     using System.Linq;\r
12     using System.Windows.Forms;\r
13     using Functions;\r
14     using Model;\r
15 \r
16     public partial class Subtitles : UserControl\r
17     {\r
18         private readonly IDictionary<string, string> langMap = new Dictionary<string, string>();\r
19         private readonly List<SubtitleInfo> subList = new List<SubtitleInfo>();\r
20         private int fileContainer;\r
21 \r
22         public Subtitles()\r
23         {\r
24             InitializeComponent();\r
25 \r
26             langMap = Main.MapLanguages();\r
27             foreach (string key in langMap.Keys)\r
28                 srt_lang.Items.Add(key);\r
29 \r
30             srt_charcode.SelectedIndex = 28;\r
31             srt_lang.SelectedIndex = 40;\r
32         }\r
33 \r
34         // Primary Controls\r
35         private void BtnAddSubTrackClick(object sender, EventArgs e)\r
36         {\r
37             // Logic\r
38             string forcedVal = check_forced.CheckState == CheckState.Checked ? "Yes" : "No";\r
39             string defaultSub = check_default.CheckState == CheckState.Checked ? "Yes" : "No";\r
40             string burnedVal = check_burned.CheckState == CheckState.Checked &&\r
41                                (!drp_subtitleTracks.Text.Contains("Text"))\r
42                                    ? "Yes"\r
43                                    : "No";\r
44             string srtCode = "-", srtLangVal = "-", srtPath = "-", srtFile = "-";\r
45             int srtOffsetMs = 0;\r
46 \r
47             if (drp_subtitleTracks.SelectedItem.ToString().Contains(".srt"))\r
48             {\r
49                 burnedVal = "No";\r
50                 forcedVal = "No";\r
51                 srtPath = openFileDialog.FileName;\r
52                 srtFile = Path.GetFileName(openFileDialog.FileName);\r
53                 srtLangVal = srt_lang.SelectedItem.ToString();\r
54                 srtCode = srt_charcode.SelectedItem.ToString();\r
55                 srtOffsetMs = (int) srt_offset.Value;\r
56                 if (defaultSub == "Yes") SetNoSrtDefault();\r
57             }\r
58             else\r
59             {\r
60                 if (defaultSub == "Yes") SetNoDefault();\r
61                 if (burnedVal == "Yes") SetNoBurned();\r
62 \r
63                 if (fileContainer == 0)\r
64                     burnedVal = "Yes"; // MP4 must have bitmap subs burned in.\r
65             }\r
66 \r
67             if (fileContainer == 0) // MP4 and M4V file extension\r
68             {\r
69                 // Make sure we only have 1 bitmap track.\r
70                 if (drp_subtitleTracks.SelectedItem != null &&\r
71                     drp_subtitleTracks.SelectedItem.ToString().Contains("Bitmap"))\r
72                 {\r
73                     if (lv_subList.Items.Cast<ListViewItem>().Any(item => item.SubItems[0].Text.Contains("Bitmap")))\r
74                     {\r
75                         MessageBox.Show(this, \r
76                                         "More than one vobsub is not supported in mp4... Your first vobsub track will now be used.", \r
77                                         "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
78                         return;\r
79                     }\r
80                 }\r
81             }\r
82 \r
83             string trackName = (drp_subtitleTracks.SelectedItem.ToString().Contains(".srt"))\r
84                                    ? srtLangVal + " (" + srtFile + ")"\r
85                                    : drp_subtitleTracks.SelectedItem.ToString();\r
86 \r
87 \r
88             SubtitleInfo track = new SubtitleInfo\r
89                                      {\r
90                                          Track = trackName, \r
91                                          Forced = forcedVal, \r
92                                          Burned = burnedVal, \r
93                                          Default = defaultSub, \r
94                                          SrtLang = srtLangVal, \r
95                                          SrtCharCode = srtCode, \r
96                                          SrtOffset = srtOffsetMs, \r
97                                          SrtPath = srtPath, \r
98                                          SrtFileName = srtFile\r
99                                      };\r
100 \r
101             lv_subList.Items.Add(track.ListView);\r
102             subList.Add(track);\r
103         }\r
104 \r
105         private void BtnSrtAddClick(object sender, EventArgs e)\r
106         {\r
107             if (openFileDialog.ShowDialog() != DialogResult.OK)\r
108                 return;\r
109             drp_subtitleTracks.Items.Add(Path.GetFileName(openFileDialog.FileName));\r
110             drp_subtitleTracks.SelectedItem = Path.GetFileName(openFileDialog.FileName);\r
111         }\r
112 \r
113         private void BtnRemoveSubTrackClick(object sender, EventArgs e)\r
114         {\r
115             RemoveTrack();\r
116         }\r
117 \r
118         // Secondary Controls\r
119         private void LbSubListSelectedIndexChanged(object sender, EventArgs e)\r
120         {\r
121             // Set the dropdown controls based on the selected item in the List.\r
122             if (lv_subList.Items.Count != 0 && lv_subList.SelectedIndices.Count != 0)\r
123             {\r
124                 SubtitleInfo track = subList[lv_subList.SelectedIndices[0]];\r
125 \r
126                 int c = 0;\r
127                 if (lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[0].Text.ToLower().Contains(".srt"))\r
128                     // We have an SRT\r
129                 {\r
130                     foreach (var item in drp_subtitleTracks.Items)\r
131                     {\r
132                         if (item.ToString() == track.SrtFileName)\r
133                             drp_subtitleTracks.SelectedIndex = c;\r
134                         c++;\r
135                     }\r
136                     srt_lang.SelectedItem = track.SrtLang;\r
137                     srt_offset.Value = track.SrtOffset;\r
138                     srt_charcode.SelectedItem = track.SrtCharCode;\r
139                     check_default.CheckState = track.Default == "Yes" ? CheckState.Checked : CheckState.Unchecked;\r
140                     SubGroupBox.Text = "Selected Track: " + track.Track;\r
141                 }\r
142                 else // We have Bitmap/CC\r
143                 {\r
144                     foreach (var item in drp_subtitleTracks.Items)\r
145                     {\r
146                         if (item.ToString() == track.Track)\r
147                             drp_subtitleTracks.SelectedIndex = c;\r
148                         c++;\r
149                     }\r
150                     check_forced.CheckState = track.Forced == "Yes" ? CheckState.Checked : CheckState.Unchecked;\r
151                     check_burned.CheckState = track.Burned == "Yes" ? CheckState.Checked : CheckState.Unchecked;\r
152                     check_default.CheckState = track.Default == "Yes" ? CheckState.Checked : CheckState.Unchecked;\r
153                     SubGroupBox.Text = "Selected Track: " +\r
154                                        lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[0].Text;\r
155                 }\r
156             }\r
157             else\r
158                 SubGroupBox.Text = "Selected Track: None (Click \"Add\" to add another track to the list)";\r
159         }\r
160 \r
161         // Bitmap / CC / SRT Controls\r
162         private void DrpSubtitleTracksSelectedIndexChanged(object sender, EventArgs e)\r
163         {\r
164             if (drp_subtitleTracks.SelectedItem.ToString().Contains(".srt"))\r
165             {\r
166                 check_forced.Enabled = false;\r
167                 check_burned.Enabled = false;\r
168                 srt_lang.Enabled = true;\r
169                 srt_charcode.Enabled = true;\r
170                 srt_offset.Enabled = true;\r
171             }\r
172             else\r
173             {\r
174                 check_forced.Enabled = true;\r
175                 check_burned.Enabled = true;\r
176                 srt_lang.Enabled = false;\r
177                 srt_charcode.Enabled = false;\r
178                 srt_offset.Enabled = false;\r
179             }\r
180             // Update an item in the  list if required.\r
181             if (lv_subList.Items.Count == 0 || lv_subList.SelectedIndices.Count == 0) return;\r
182 \r
183             if (drp_subtitleTracks.SelectedItem.ToString().Contains(".srt"))\r
184             {\r
185                 lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[0].Text = srt_lang.SelectedItem + "(" +\r
186                                                                                    drp_subtitleTracks.SelectedItem + ")";\r
187                 lv_subList.Select();\r
188             }\r
189             else\r
190             {\r
191                 lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[0].Text =\r
192                     drp_subtitleTracks.SelectedItem.ToString();\r
193                 lv_subList.Select();\r
194             }\r
195 \r
196             subList[lv_subList.SelectedIndices[0]].Track = drp_subtitleTracks.SelectedItem.ToString();\r
197                 // Update SubList List<SubtitleInfo>\r
198         }\r
199 \r
200         private void CheckForcedCheckedChanged(object sender, EventArgs e)\r
201         {\r
202             if (lv_subList.Items.Count == 0 || lv_subList.SelectedIndices.Count == 0) return;\r
203 \r
204             lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[1].Text = check_forced.Checked ? "Yes" : "No";\r
205             lv_subList.Select();\r
206 \r
207             subList[lv_subList.SelectedIndices[0]].Forced = check_forced.Checked ? "Yes" : "No";\r
208                 // Update SubList List<SubtitleInfo> \r
209         }\r
210 \r
211         private void CheckBurnedCheckedChanged(object sender, EventArgs e)\r
212         {\r
213             if (lv_subList.Items.Count == 0 || lv_subList.SelectedIndices.Count == 0) return;\r
214 \r
215             if (check_burned.Checked) // Make sure we only have 1 burned track\r
216                 SetNoBurned();\r
217 \r
218             lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[2].Text = check_burned.Checked ? "Yes" : "No";\r
219             lv_subList.Select();\r
220 \r
221             subList[lv_subList.SelectedIndices[0]].Burned = check_burned.Checked ? "Yes" : "No";\r
222                 // Update SubList List<SubtitleInfo> \r
223         }\r
224 \r
225         private void CheckDefaultCheckedChanged(object sender, EventArgs e)\r
226         {\r
227             if (lv_subList.Items.Count == 0 || lv_subList.SelectedIndices.Count == 0) return;\r
228 \r
229             if (check_default.Checked) // Make sure we only have 1 default track\r
230                 if (lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[0].Text.Contains(".srt"))\r
231                     SetNoSrtDefault();\r
232                 else\r
233                     SetNoDefault();\r
234 \r
235             lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[3].Text = check_default.Checked ? "Yes" : "No";\r
236             lv_subList.Select();\r
237 \r
238             subList[lv_subList.SelectedIndices[0]].Default = check_default.Checked ? "Yes" : "No";\r
239                 // Update SubList List<SubtitleInfo>\r
240         }\r
241 \r
242         private void SrtOffsetValueChanged(object sender, EventArgs e)\r
243         {\r
244             // Update an item in the  list if required.\r
245             if (lv_subList.Items.Count == 0 || lv_subList.SelectedIndices.Count == 0)\r
246                 return;\r
247 \r
248             lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[6].Text = srt_offset.Value.ToString();\r
249             lv_subList.Select();\r
250 \r
251             subList[lv_subList.SelectedIndices[0]].SrtOffset = (int) srt_offset.Value;\r
252                 // Update SubList List<SubtitleInfo>\r
253         }\r
254 \r
255         private void SrtCharcodeSelectedIndexChanged(object sender, EventArgs e)\r
256         {\r
257             if (lv_subList.Items.Count == 0 || lv_subList.SelectedIndices.Count == 0) return;\r
258 \r
259             lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[5].Text = srt_charcode.SelectedItem.ToString();\r
260             lv_subList.Select();\r
261 \r
262             subList[lv_subList.SelectedIndices[0]].SrtCharCode = srt_charcode.SelectedItem.ToString();\r
263                 // Update SubList List<SubtitleInfo>\r
264         }\r
265 \r
266         private void SrtLangSelectedIndexChanged(object sender, EventArgs e)\r
267         {\r
268             if (lv_subList.Items.Count == 0 || lv_subList.SelectedIndices.Count == 0) return;\r
269 \r
270             lv_subList.Items[lv_subList.SelectedIndices[0]].SubItems[4].Text = srt_lang.SelectedItem.ToString();\r
271             lv_subList.Select();\r
272 \r
273             subList[lv_subList.SelectedIndices[0]].SrtLang = srt_lang.SelectedItem.ToString();\r
274                 // Update SubList List<SubtitleInfo>\r
275         }\r
276 \r
277         // Right Click Menu\r
278         private void MnuMoveupClick(object sender, EventArgs e)\r
279         {\r
280             if (lv_subList.SelectedIndices.Count != 0)\r
281             {\r
282                 ListViewItem item = lv_subList.SelectedItems[0];\r
283                 int index = item.Index;\r
284                 index--;\r
285 \r
286                 if (lv_subList.Items.Count > index && index >= 0)\r
287                 {\r
288                     lv_subList.Items.Remove(item);\r
289                     lv_subList.Items.Insert(index, item);\r
290                     item.Selected = true;\r
291                     lv_subList.Focus();\r
292                 }\r
293             }\r
294         }\r
295 \r
296         private void MnuMovedownClick(object sender, EventArgs e)\r
297         {\r
298             if (lv_subList.SelectedIndices.Count != 0)\r
299             {\r
300                 ListViewItem item = lv_subList.SelectedItems[0];\r
301                 int index = item.Index;\r
302                 index++;\r
303 \r
304                 if (index < lv_subList.Items.Count)\r
305                 {\r
306                     lv_subList.Items.Remove(item);\r
307                     lv_subList.Items.Insert(index, item);\r
308                     item.Selected = true;\r
309                     lv_subList.Focus();\r
310                 }\r
311             }\r
312         }\r
313 \r
314         private void MnuRemoveClick(object sender, EventArgs e)\r
315         {\r
316             RemoveTrack();\r
317         }\r
318 \r
319         // Functions\r
320         private void SetNoDefault()\r
321         {\r
322             int c = 0;\r
323             foreach (ListViewItem item in lv_subList.Items)\r
324             {\r
325                 if (subList[c].SrtPath == "-")\r
326                 {\r
327                     if (item.SubItems[3].Text == "Yes")\r
328                     {\r
329                         item.SubItems[3].Text = "No";\r
330                         subList[c].Default = "No";\r
331                     }\r
332                 }\r
333                 c++;\r
334             }\r
335         }\r
336 \r
337         /// <summary>\r
338         /// Set all subtitle tracks so that they have no default.\r
339         /// </summary>\r
340         private void SetNoSrtDefault()\r
341         {\r
342             int c = 0;\r
343             foreach (ListViewItem item in lv_subList.Items)\r
344             {\r
345                 if (!subList[c].IsSrtSubtitle)\r
346                 {\r
347                     if (item.SubItems[3].Text == "Yes")\r
348                     {\r
349                         item.SubItems[3].Text = "No";\r
350                         subList[c].Default = "No";\r
351                     }\r
352                 }\r
353                 c++;\r
354             }\r
355         }\r
356 \r
357         private void SetNoBurned()\r
358         {\r
359             int c = 0;\r
360             foreach (ListViewItem item in lv_subList.Items)\r
361             {\r
362                 if (item.SubItems[2].Text == "Yes")\r
363                 {\r
364                     item.SubItems[2].Text = "No";\r
365                     subList[c].Burned = "No";\r
366                 }\r
367                 c++;\r
368             }\r
369         }\r
370 \r
371         private void RemoveTrack()\r
372         {\r
373             // Remove the Item and reselect the control if the following conditions are met.\r
374             if (lv_subList.SelectedItems.Count != 0)\r
375             {\r
376                 // Record the current selected index.\r
377                 int currentPosition = lv_subList.SelectedIndices[0];\r
378                 int selectedInd = lv_subList.SelectedIndices[0];\r
379 \r
380                 lv_subList.Items.RemoveAt(selectedInd);\r
381                 subList.RemoveAt(selectedInd);\r
382 \r
383                 // Now reslect the correct item and give focus to the list.\r
384                 if (lv_subList.Items.Count != 0)\r
385                 {\r
386                     if (currentPosition <= (lv_subList.Items.Count - 1))\r
387                         lv_subList.Items[currentPosition].Selected = true;\r
388                     else if (currentPosition > (lv_subList.Items.Count - 1))\r
389                         lv_subList.Items[lv_subList.Items.Count - 1].Selected = true;\r
390 \r
391                     lv_subList.Select();\r
392                 }\r
393             }\r
394         }\r
395 \r
396         /// <summary>\r
397         /// Clear the Subtitle List\r
398         /// </summary>\r
399         public void Clear()\r
400         {\r
401             lv_subList.Items.Clear();\r
402             subList.Clear();\r
403         }\r
404 \r
405         /// <summary>\r
406         /// Cleverly Clear the subtitle list. Only remove tracks that are not available for the current source.\r
407         /// </summary>\r
408         public void SmartClear()\r
409         {\r
410             /* Smart clear will only remove subtitle tracks that do not have an equivlent \r
411               for the new source / title which the user has selected. */\r
412             throw new NotImplementedException();\r
413         }\r
414 \r
415         /// <summary>\r
416         /// Checks of the current settings will require the m4v file extension\r
417         /// </summary>\r
418         /// <returns>True if Yes</returns>\r
419         public bool RequiresM4V()\r
420         {\r
421             foreach (ListViewItem item in lv_subList.Items)\r
422             {\r
423                 if (item.SubItems.Count != 5)\r
424                     return true;\r
425 \r
426                 if (item.SubItems[1].Text.Contains("(Text)"))\r
427                     return true;\r
428             }\r
429             return false;\r
430         }\r
431 \r
432         /// <summary>\r
433         /// Automatically setup the subtitle tracks.\r
434         /// This handles the automatic setup of subitles which the user can control from the program options\r
435         /// </summary>\r
436         /// <param name="subs"></param>\r
437         public void SetSubtitleTrackAuto(object[] subs)\r
438         {\r
439             drp_subtitleTracks.Items.Clear();\r
440             drp_subtitleTracks.Items.Add("Foreign Audio Search (Bitmap)");\r
441             drp_subtitleTracks.Items.AddRange(subs);\r
442             drp_subtitleTracks.SelectedIndex = 0;\r
443             Clear();\r
444 \r
445             // Handle Native Language and "Dub Foreign language audio" and "Use Foreign language audio and Subtitles" Options\r
446             if (Properties.Settings.Default.NativeLanguage != "Any")\r
447             {\r
448                 if (!Properties.Settings.Default.DubAudio) // We need to add a subtitle track if this is false.\r
449                 {\r
450                     int i = 0;\r
451                     foreach (object item in drp_subtitleTracks.Items)\r
452                     {\r
453                         if (item.ToString().Contains(Properties.Settings.Default.NativeLanguage))\r
454                             drp_subtitleTracks.SelectedIndex = i;\r
455 \r
456                         i++;\r
457                     }\r
458 \r
459                     BtnAddSubTrackClick(this, new EventArgs());\r
460                 }\r
461             }\r
462         }\r
463 \r
464         /// <summary>\r
465         /// Set the file container which is currently in use.\r
466         /// </summary>\r
467         /// <param name="value"></param>\r
468         public void SetContainer(int value)\r
469         {\r
470             fileContainer = value;\r
471             bool trigger = false;\r
472             if (fileContainer != 1)\r
473                 foreach (ListViewItem item in lv_subList.Items)\r
474                 {\r
475                     if (item.SubItems[1].Text.Contains("Bitmap"))\r
476                     {\r
477                         if (trigger)\r
478                             lv_subList.Items.Remove(item);\r
479                         trigger = true;\r
480                     }\r
481                 }\r
482         }\r
483 \r
484         /// <summary>\r
485         /// Get the list of subtitles.\r
486         /// </summary>\r
487         /// <returns></returns>\r
488         public List<SubtitleInfo> GetSubtitleInfoList()\r
489         {\r
490             return subList;\r
491         }\r
492 \r
493         /// <summary>\r
494         /// Get the CLI Query for this panel\r
495         /// </summary>\r
496         /// <returns></returns>\r
497         public string GetCliQuery\r
498         {\r
499             get\r
500             {\r
501                 string query = string.Empty;\r
502                 if (lv_subList.Items.Count != 0) // If we have subtitle tracks\r
503                 {\r
504                     // BitMap and CC's\r
505                     string subtitleTracks = String.Empty;\r
506                     string subtitleForced = String.Empty;\r
507                     string subtitleBurn = String.Empty;\r
508                     string subtitleDefault = String.Empty;\r
509 \r
510                     // SRT\r
511                     string srtFile = String.Empty;\r
512                     string srtCodeset = String.Empty;\r
513                     string srtOffset = String.Empty;\r
514                     string srtLang = String.Empty;\r
515                     string srtDefault = String.Empty;\r
516                     int srtCount = 0;\r
517 \r
518                     foreach (SubtitleInfo item in subList)\r
519                     {\r
520                         string itemToAdd, trackId;\r
521 \r
522                         if (item.IsSrtSubtitle) // We have an SRT file\r
523                         {\r
524                             srtCount++; // SRT track id.\r
525 \r
526                             srtLang += srtLang == string.Empty ? langMap[item.SrtLang] : "," + langMap[item.SrtLang];\r
527                             srtCodeset += srtCodeset == string.Empty ? item.SrtCharCode : "," + item.SrtCharCode;\r
528 \r
529                             if (item.Default == "Yes")\r
530                                 srtDefault = srtCount.ToString();\r
531 \r
532                             itemToAdd = item.SrtPath;\r
533                             srtFile += srtFile == string.Empty ? itemToAdd : "," + itemToAdd;\r
534 \r
535                             itemToAdd = item.SrtOffset.ToString();\r
536                             srtOffset += srtOffset == string.Empty ? itemToAdd : "," + itemToAdd;\r
537                         }\r
538                         else // We have Bitmap or CC\r
539                         {\r
540                             string[] tempSub;\r
541 \r
542                             // Find --subtitle <string>\r
543                             if (item.Track.Contains("Foreign Audio Search"))\r
544                                 itemToAdd = "scan";\r
545                             else\r
546                             {\r
547                                 tempSub = item.Track.Split(' ');\r
548                                 itemToAdd = tempSub[0];\r
549                             }\r
550 \r
551                             subtitleTracks += subtitleTracks == string.Empty ? itemToAdd : "," + itemToAdd;\r
552 \r
553                             // Find --subtitle-forced\r
554                             itemToAdd = string.Empty;\r
555                             tempSub = item.Track.Split(' ');\r
556                             trackId = tempSub[0];\r
557 \r
558                             if (item.Forced == "Yes")\r
559                                 itemToAdd = "scan";\r
560 \r
561                             if (itemToAdd != string.Empty)\r
562                                 subtitleForced += subtitleForced == string.Empty ? itemToAdd : "," + itemToAdd;\r
563 \r
564                             // Find --subtitle-burn and --subtitle-default\r
565                             trackId = tempSub[0];\r
566 \r
567                             if (trackId.Trim() == "Foreign") // foreign audio search\r
568                                 trackId = "scan";\r
569 \r
570                             if (item.Burned == "Yes") // burn\r
571                                 subtitleBurn = trackId;\r
572 \r
573                             if (item.Default == "Yes") // default\r
574                                 subtitleDefault = trackId;\r
575                         }\r
576                     }\r
577 \r
578                     // Build The CLI Subtitles Query\r
579                     if (subtitleTracks != string.Empty)\r
580                     {\r
581                         query += " --subtitle " + subtitleTracks;\r
582 \r
583                         if (subtitleForced != string.Empty)\r
584                             query += " --subtitle-forced=" + subtitleForced;\r
585                         if (subtitleBurn != string.Empty)\r
586                             query += " --subtitle-burn=" + subtitleBurn;\r
587                         if (subtitleDefault != string.Empty)\r
588                             query += " --subtitle-default=" + subtitleDefault;\r
589                     }\r
590 \r
591                     if (srtFile != string.Empty) // SRTs\r
592                     {\r
593                         query += " --srt-file " + "\"" + srtFile + "\"";\r
594 \r
595                         if (srtCodeset != string.Empty)\r
596                             query += " --srt-codeset " + srtCodeset;\r
597                         if (srtOffset != string.Empty)\r
598                             query += " --srt-offset " + srtOffset;\r
599                         if (srtLang != string.Empty)\r
600                             query += " --srt-lang " + srtLang;\r
601                         if (srtDefault != string.Empty)\r
602                             query += " --srt-default=" + srtDefault;\r
603                     }\r
604                 }\r
605                 return query;\r
606             }\r
607         }\r
608     }\r
609 }