OSDN Git Service

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