diff options
author | sr55 <[email protected]> | 2009-07-08 17:38:25 +0000 |
---|---|---|
committer | sr55 <[email protected]> | 2009-07-08 17:38:25 +0000 |
commit | 0094c6a4bf133bd7e066dbdcf87814770a4f369d (patch) | |
tree | e0d45ec9a810e2678c8a45fb9d5f30508f6c4bc2 /win/C#/Functions | |
parent | c5764aa0319f44b7604f916158329c0a20d30e29 (diff) |
WinGui:
- Implemented the new External SRTs feature. Added a sub tab set on the subtitles tab.
- Few UI tweaks to keep things in-line with the MacGui:
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2672 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'win/C#/Functions')
-rw-r--r-- | win/C#/Functions/Main.cs | 199 | ||||
-rw-r--r-- | win/C#/Functions/QueryGenerator.cs | 141 |
2 files changed, 289 insertions, 51 deletions
diff --git a/win/C#/Functions/Main.cs b/win/C#/Functions/Main.cs index d2e136a91..54ef9d45f 100644 --- a/win/C#/Functions/Main.cs +++ b/win/C#/Functions/Main.cs @@ -427,5 +427,204 @@ namespace Handbrake.Functions public bool CompletedSynchronously { get { throw new NotImplementedException(); } }
public bool IsCompleted { get { throw new NotImplementedException(); } }
}
+
+ /// <summary>
+ /// Map languages and their iso639_2 value into a IDictionary
+ /// </summary>
+ /// <returns></returns>
+ public static IDictionary<string, string> mapLanguages()
+ {
+ IDictionary<string, string> languageMap = new Dictionary<string, string>
+ {
+ {"Any", "und"},
+ {"Afar", "aar"},
+ {"Abkhazian", "abk"},
+ {"Afrikaans", "afr"},
+ {"Akan", "aka"},
+ {"Albanian", "sqi"},
+ {"Amharic", "amh"},
+ {"Arabic", "ara"},
+ {"Aragonese", "arg"},
+ {"Armenian", "hye"},
+ {"Assamese", "asm"},
+ {"Avaric", "ava"},
+ {"Avestan", "ave"},
+ {"Aymara", "aym"},
+ {"Azerbaijani", "aze"},
+ {"Bashkir", "bak"},
+ {"Bambara", "bam"},
+ {"Basque", "eus"},
+ {"Belarusian", "bel"},
+ {"Bengali", "ben"},
+ {"Bihari", "bih"},
+ {"Bislama", "bis"},
+ {"Bosnian", "bos"},
+ {"Breton", "bre"},
+ {"Bulgarian", "bul"},
+ {"Burmese", "mya"},
+ {"Catalan", "cat"},
+ {"Chamorro", "cha"},
+ {"Chechen", "che"},
+ {"Chinese", "zho"},
+ {"Church Slavic", "chu"},
+ {"Chuvash", "chv"},
+ {"Cornish", "cor"},
+ {"Corsican", "cos"},
+ {"Cree", "cre"},
+ {"Czech", "ces"},
+ {"Danish", "dan"},
+ {"Divehi", "div"},
+ {"Dutch", "nld"},
+ {"Dzongkha", "dzo"},
+ {"English", "eng"},
+ {"Esperanto", "epo"},
+ {"Estonian", "est"},
+ {"Ewe", "ewe"},
+ {"Faroese", "fao"},
+ {"Fijian", "fij"},
+ {"Finnish", "fin"},
+ {"French", "fra"},
+ {"Western Frisian", "fry"},
+ {"Fulah", "ful"},
+ {"Georgian", "kat"},
+ {"German", "deu"},
+ {"Gaelic (Scots)", "gla"},
+ {"Irish", "gle"},
+ {"Galician", "glg"},
+ {"Manx", "glv"},
+ {"Greek Modern", "ell"},
+ {"Guarani", "grn"},
+ {"Gujarati", "guj"},
+ {"Haitian", "hat"},
+ {"Hausa", "hau"},
+ {"Hebrew", "heb"},
+ {"Herero", "her"},
+ {"Hindi", "hin"},
+ {"Hiri Motu", "hmo"},
+ {"Hungarian", "hun"},
+ {"Igbo", "ibo"},
+ {"Icelandic", "isl"},
+ {"Ido", "ido"},
+ {"Sichuan Yi", "iii"},
+ {"Inuktitut", "iku"},
+ {"Interlingue", "ile"},
+ {"Interlingua", "ina"},
+ {"Indonesian", "ind"},
+ {"Inupiaq", "ipk"},
+ {"Italian", "ita"},
+ {"Javanese", "jav"},
+ {"Japanese", "jpn"},
+ {"Kalaallisut", "kal"},
+ {"Kannada", "kan"},
+ {"Kashmiri", "kas"},
+ {"Kanuri", "kau"},
+ {"Kazakh", "kaz"},
+ {"Central Khmer", "khm"},
+ {"Kikuyu", "kik"},
+ {"Kinyarwanda", "kin"},
+ {"Kirghiz", "kir"},
+ {"Komi", "kom"},
+ {"Kongo", "kon"},
+ {"Korean", "kor"},
+ {"Kuanyama", "kua"},
+ {"Kurdish", "kur"},
+ {"Lao", "lao"},
+ {"Latin", "lat"},
+ {"Latvian", "lav"},
+ {"Limburgan", "lim"},
+ {"Lingala", "lin"},
+ {"Lithuanian", "lit"},
+ {"Luxembourgish", "ltz"},
+ {"Luba-Katanga", "lub"},
+ {"Ganda", "lug"},
+ {"Macedonian", "mkd"},
+ {"Marshallese", "mah"},
+ {"Malayalam", "mal"},
+ {"Maori", "mri"},
+ {"Marathi", "mar"},
+ {"Malay", "msa"},
+ {"Malagasy", "mlg"},
+ {"Maltese", "mlt"},
+ {"Moldavian", "mol"},
+ {"Mongolian", "mon"},
+ {"Nauru", "nau"},
+ {"Navajo", "nav"},
+ {"Ndebele, South", "nbl"},
+ {"Ndebele, North", "nde"},
+ {"Ndonga", "ndo"},
+ {"Nepali", "nep"},
+ {"Norwegian Nynorsk", "nno"},
+ {"Norwegian Bokm�l", "nob"},
+ {"Norwegian", "nor"},
+ {"Chichewa; Nyanja", "nya"},
+ {"Occitan", "oci"},
+ {"Ojibwa", "oji"},
+ {"Oriya", "ori"},
+ {"Oromo", "orm"},
+ {"Ossetian", "oss"},
+ {"Panjabi", "pan"},
+ {"Persian", "fas"},
+ {"Pali", "pli"},
+ {"Polish", "pol"},
+ {"Portuguese", "por"},
+ {"Pushto", "pus"},
+ {"Quechua", "que"},
+ {"Romansh", "roh"},
+ {"Romanian", "ron"},
+ {"Rundi", "run"},
+ {"Russian", "rus"},
+ {"Sango", "sag"},
+ {"Sanskrit", "san"},
+ {"Serbian", "srp"},
+ {"Croatian", "hrv"},
+ {"Sinhala", "sin"},
+ {"Slovak", "slk"},
+ {"Slovenian", "slv"},
+ {"Northern Sami", "sme"},
+ {"Samoan", "smo"},
+ {"Shona", "sna"},
+ {"Sindhi", "snd"},
+ {"Somali", "som"},
+ {"Sotho Southern", "sot"},
+ {"Spanish", "spa"},
+ {"Sardinian", "srd"},
+ {"Swati", "ssw"},
+ {"Sundanese", "sun"},
+ {"Swahili", "swa"},
+ {"Swedish", "swe"},
+ {"Tahitian", "tah"},
+ {"Tamil", "tam"},
+ {"Tatar", "tat"},
+ {"Telugu", "tel"},
+ {"Tajik", "tgk"},
+ {"Tagalog", "tgl"},
+ {"Thai", "tha"},
+ {"Tibetan", "bod"},
+ {"Tigrinya", "tir"},
+ {"Tonga", "ton"},
+ {"Tswana", "tsn"},
+ {"Tsonga", "tso"},
+ {"Turkmen", "tuk"},
+ {"Turkish", "tur"},
+ {"Twi", "twi"},
+ {"Uighur", "uig"},
+ {"Ukrainian", "ukr"},
+ {"Urdu", "urd"},
+ {"Uzbek", "uzb"},
+ {"Venda", "ven"},
+ {"Vietnamese", "vie"},
+ {"Volap�k", "vol"},
+ {"Welsh", "cym"},
+ {"Walloon", "wln"},
+ {"Wolof", "wol"},
+ {"Xhosa", "xho"},
+ {"Yiddish", "yid"},
+ {"Yoruba", "yor"},
+ {"Zhuang", "zha"},
+ {"Zulu", "zul"}
+ };
+ return languageMap;
+ }
+
}
}
diff --git a/win/C#/Functions/QueryGenerator.cs b/win/C#/Functions/QueryGenerator.cs index b5e9cc048..981e2641b 100644 --- a/win/C#/Functions/QueryGenerator.cs +++ b/win/C#/Functions/QueryGenerator.cs @@ -185,7 +185,7 @@ namespace Handbrake.Functions #endregion
#region Filters
- query += mainWindow.Filters.getCLIQuery;
+ query += mainWindow.Filters.getCLIQuery;
#endregion
#region Video Settings Tab
@@ -383,72 +383,111 @@ namespace Handbrake.Functions #endregion
#region Subtitles Tab
-
if (mainWindow.Subtitles.lv_subList.Items.Count != 0) // If we have subtitle tracks
{
- // Find --subtitle <string>
- query += " --subtitle ";
- String subtitleTracks = "";
- String itemToAdd;
- foreach (ListViewItem item in mainWindow.Subtitles.lv_subList.Items)
- {
- if (item.SubItems[1].Text.Contains("Foreign Audio Search"))
- itemToAdd = "scan";
- else
- {
- string[] tempSub = item.SubItems[1].Text.Split(' ');
- itemToAdd = tempSub[0];
- }
+ IDictionary<string, string> langMap = Main.mapLanguages();
- subtitleTracks += subtitleTracks == "" ? itemToAdd : "," + itemToAdd;
- }
- query += subtitleTracks;
+ // BitMap and CC's
+ string subtitleTracks = String.Empty;
+ string subtitleForced = String.Empty;
+ string subtitleBurn = String.Empty;
+ string subtitleDefault = String.Empty;
+ // SRT
+ string srtFile = String.Empty;
+ string srtCodeset = String.Empty;
+ string srtOffset = String.Empty;
+ string srtLang = String.Empty;
- // Find --subtitle-forced
- String forcedTrack = "";
foreach (ListViewItem item in mainWindow.Subtitles.lv_subList.Items)
{
- itemToAdd = "";
- string[] tempSub = item.SubItems[1].Text.Split(' ');
- string trackID = tempSub[0];
-
- if (item.SubItems[2].Text == "Yes")
- itemToAdd = trackID;
-
- if (itemToAdd != "")
- forcedTrack += forcedTrack == "" ? itemToAdd : "," + itemToAdd;
- }
- if (forcedTrack != "")
- query += " --subtitle-forced " + forcedTrack;
-
+ string itemToAdd, trackID;
- // Find --subtitle-burn and --subtitle-default
- String burned = "";
- String defaultTrack = "";
- foreach (ListViewItem item in mainWindow.Subtitles.lv_subList.Items)
- {
- string[] tempSub = item.SubItems[1].Text.Split(' ');
- string trackID = tempSub[0];
+ if (item.SubItems.Count != 5) // We have an SRT file
+ {
+ string[] trackData = item.SubItems[1].Text.Split(',');
+ if (trackData != null)
+ {
+ string charCode = trackData[1].Replace("(", "").Replace(")", "").Trim();
+ string realLangCode = langMap[trackData[0].Trim()];
- if (trackID.Trim() == "Foreign")
- trackID = "scan";
+ srtLang += srtLang == "" ? realLangCode : "," + realLangCode;
+ srtCodeset += srtCodeset == "" ? charCode : "," + charCode;
+ }
- if (item.SubItems[3].Text == "Yes") // Burned
- burned = trackID;
+ itemToAdd = item.SubItems[5].Text;
+ srtFile += srtFile == "" ? itemToAdd : "," + itemToAdd;
- if (item.SubItems[4].Text == "Yes") // Burned
- defaultTrack = trackID;
+ itemToAdd = item.SubItems[6].Text;
+ srtOffset += srtOffset == "" ? itemToAdd : "," + itemToAdd;
+ }
+ else // We have Bitmap or CC
+ {
+ string[] tempSub;
+
+ // Find --subtitle <string>
+ if (item.SubItems[1].Text.Contains("Foreign Audio Search"))
+ itemToAdd = "scan";
+ else
+ {
+ tempSub = item.SubItems[1].Text.Split(' ');
+ itemToAdd = tempSub[0];
+ }
+
+ subtitleTracks += subtitleTracks == "" ? itemToAdd : "," + itemToAdd;
+
+ // Find --subtitle-forced
+ itemToAdd = "";
+ tempSub = item.SubItems[1].Text.Split(' ');
+ trackID = tempSub[0];
+
+ if (item.SubItems[2].Text == "Yes")
+ itemToAdd = trackID;
+
+ if (itemToAdd != "")
+ subtitleForced += subtitleForced == "" ? itemToAdd : "," + itemToAdd;
+
+ // Find --subtitle-burn and --subtitle-default
+ tempSub = item.SubItems[1].Text.Split(' ');
+ trackID = tempSub[0];
+
+ if (trackID.Trim() == "Foreign")
+ trackID = "scan";
+
+ if (item.SubItems[3].Text == "Yes") // burn
+ subtitleBurn = trackID;
+
+ if (item.SubItems[4].Text == "Yes") // default
+ subtitleDefault = trackID;
+ }
+ }
+ // Build The CLI Subtitles Query
+ if (subtitleTracks != "")
+ {
+ query += " --subtitle " + subtitleTracks;
+
+ if (subtitleForced != "")
+ query += " --subtitle-forced " + subtitleForced;
+ if (subtitleBurn != "")
+ query += " --subtitle-burn " + subtitleBurn;
+ if (subtitleDefault != "")
+ query += " --subtitle-default " + subtitleDefault;
}
- if (burned != "")
- query += " --subtitle-burn " + burned;
- if (defaultTrack != "")
- query += " --subtitle-default " + defaultTrack;
+ if (srtFile != "") // SRTs
+ {
+ query += " --srt-file " + srtFile;
+
+ if (srtCodeset != "")
+ query += " --srt-codeset " + srtCodeset;
+ if (srtOffset != "")
+ query += " --srt-offset " + srtOffset;
+ if (srtLang != "")
+ query += " --srt-lang " + srtLang;
+ }
}
-
#endregion
#region Chapter Markers
|