From a86710122af4294a4ca975dabc8936878b0846c9 Mon Sep 17 00:00:00 2001 From: niksedk Date: Wed, 17 Jul 2013 20:28:33 +0000 Subject: [PATCH] Open video file now also has an 'Audio files' filter (as well as 'All files') git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@1940 99eadd0c-20b8-1223-b5c4-2a2b2df33de2 --- src/Forms/ChangeFrameRate.cs | 2 +- src/Forms/ChooseResolution.cs | 2 +- src/Forms/Main.cs | 7 +++--- src/Forms/SetSyncPoint.cs | 2 +- src/Forms/SplitSubtitle.cs | 2 +- src/Forms/SubStationAlphaProperties.cs | 2 +- src/Forms/VisualSync.cs | 2 +- src/Logic/Language.cs | 1 + src/Logic/LanguageStructure.cs | 1 + src/Logic/Utilities.cs | 4 +++- src/Resources/OpenOfficeDictionaries.xml | 24 +++++++++++++++++++ src/Resources/OpenOfficeDictionaries.xml.zip | Bin 3738 -> 3946 bytes 12 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/Forms/ChangeFrameRate.cs b/src/Forms/ChangeFrameRate.cs index c1bfe9570..d21bd96f2 100644 --- a/src/Forms/ChangeFrameRate.cs +++ b/src/Forms/ChangeFrameRate.cs @@ -57,7 +57,7 @@ namespace Nikse.SubtitleEdit.Forms { openFileDialog1.Title = Configuration.Settings.Language.General.OpenVideoFileTitle; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetVideoFileFilter(); + openFileDialog1.Filter = Utilities.GetVideoFileFilter(false); openFileDialog1.FileName = string.Empty; if (openFileDialog1.ShowDialog() == DialogResult.OK) { diff --git a/src/Forms/ChooseResolution.cs b/src/Forms/ChooseResolution.cs index e5389bcf6..6cc2f1903 100644 --- a/src/Forms/ChooseResolution.cs +++ b/src/Forms/ChooseResolution.cs @@ -22,7 +22,7 @@ namespace Nikse.SubtitleEdit.Forms { openFileDialog1.Title = Configuration.Settings.Language.General.OpenVideoFileTitle; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetVideoFileFilter(); + openFileDialog1.Filter = Utilities.GetVideoFileFilter(false); openFileDialog1.FileName = string.Empty; if (openFileDialog1.ShowDialog() == DialogResult.OK) { diff --git a/src/Forms/Main.cs b/src/Forms/Main.cs index 1c37c120c..2a09dba37 100644 --- a/src/Forms/Main.cs +++ b/src/Forms/Main.cs @@ -3633,7 +3633,7 @@ namespace Nikse.SubtitleEdit.Forms { openFileDialog1.Title = _language.OpenVideoFile; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetVideoFileFilter(); + openFileDialog1.Filter = Utilities.GetVideoFileFilter(false); if (openFileDialog1.ShowDialog(this) == DialogResult.OK) { _videoFileName = openFileDialog1.FileName; @@ -12002,7 +12002,8 @@ namespace Nikse.SubtitleEdit.Forms openFileDialog1.InitialDirectory = Path.GetDirectoryName(_fileName); openFileDialog1.Title = Configuration.Settings.Language.General.OpenVideoFileTitle; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetVideoFileFilter(); + openFileDialog1.Filter = Utilities.GetVideoFileFilter(true); + openFileDialog1.FileName = string.Empty; if (openFileDialog1.ShowDialog() == DialogResult.OK) { @@ -13192,7 +13193,7 @@ namespace Nikse.SubtitleEdit.Forms { string fileName = files[0]; string ext = Path.GetExtension(fileName).ToLower(); - if (Utilities.GetVideoFileFilter().Contains(ext)) + if (Utilities.GetVideoFileFilter(true).Contains(ext)) { OpenVideo(fileName); } diff --git a/src/Forms/SetSyncPoint.cs b/src/Forms/SetSyncPoint.cs index a0dee3d7a..c17aaea3c 100644 --- a/src/Forms/SetSyncPoint.cs +++ b/src/Forms/SetSyncPoint.cs @@ -102,7 +102,7 @@ namespace Nikse.SubtitleEdit.Forms { openFileDialog1.Title = Configuration.Settings.Language.General.OpenVideoFileTitle; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetVideoFileFilter(); + openFileDialog1.Filter = Utilities.GetVideoFileFilter(false); openFileDialog1.FileName = string.Empty; if (openFileDialog1.ShowDialog() == DialogResult.OK) { diff --git a/src/Forms/SplitSubtitle.cs b/src/Forms/SplitSubtitle.cs index 9ea20e46d..1e1a8e94c 100644 --- a/src/Forms/SplitSubtitle.cs +++ b/src/Forms/SplitSubtitle.cs @@ -149,7 +149,7 @@ namespace Nikse.SubtitleEdit.Forms openFileDialog1.Title = Configuration.Settings.Language.General.OpenVideoFileTitle; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetVideoFileFilter(); + openFileDialog1.Filter = Utilities.GetVideoFileFilter(true); openFileDialog1.FileName = string.Empty; if (openFileDialog1.ShowDialog() == DialogResult.OK) { diff --git a/src/Forms/SubStationAlphaProperties.cs b/src/Forms/SubStationAlphaProperties.cs index 47ffb8fda..3e17e1764 100644 --- a/src/Forms/SubStationAlphaProperties.cs +++ b/src/Forms/SubStationAlphaProperties.cs @@ -250,7 +250,7 @@ namespace Nikse.SubtitleEdit.Forms { openFileDialog1.Title = Configuration.Settings.Language.General.OpenVideoFileTitle; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetVideoFileFilter(); + openFileDialog1.Filter = Utilities.GetVideoFileFilter(false); openFileDialog1.FileName = string.Empty; if (string.IsNullOrEmpty(openFileDialog1.InitialDirectory) && !string.IsNullOrEmpty(_videoFileName)) { diff --git a/src/Forms/VisualSync.cs b/src/Forms/VisualSync.cs index 882ebfbdd..3ce75adf2 100644 --- a/src/Forms/VisualSync.cs +++ b/src/Forms/VisualSync.cs @@ -483,7 +483,7 @@ namespace Nikse.SubtitleEdit.Forms openFileDialog1.InitialDirectory = Path.GetDirectoryName(_subtitleFileName); openFileDialog1.Title = _languageGeneral.OpenVideoFileTitle; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetVideoFileFilter(); + openFileDialog1.Filter = Utilities.GetVideoFileFilter(true); openFileDialog1.FileName = string.Empty; if (openFileDialog1.ShowDialog() == DialogResult.OK) { diff --git a/src/Logic/Language.cs b/src/Logic/Language.cs index 18752f955..b6df583ff 100644 --- a/src/Logic/Language.cs +++ b/src/Logic/Language.cs @@ -113,6 +113,7 @@ namespace Nikse.SubtitleEdit.Logic SubtitleFiles = "Subtitle files", AllFiles = "All files", VideoFiles = "Video files", + AudioFiles = "Audio files", OpenSubtitle = "Open subtitle...", OpenVideoFile = "Open video file...", OpenVideoFileTitle = "Open video file...", diff --git a/src/Logic/LanguageStructure.cs b/src/Logic/LanguageStructure.cs index c3be691bf..bd2b188a9 100644 --- a/src/Logic/LanguageStructure.cs +++ b/src/Logic/LanguageStructure.cs @@ -19,6 +19,7 @@ public string SubtitleFiles { get; set; } public string AllFiles { get; set; } public string VideoFiles { get; set; } + public string AudioFiles { get; set; } public string OpenSubtitle { get; set; } public string OpenVideoFile { get; set; } public string OpenVideoFileTitle { get; set; } diff --git a/src/Logic/Utilities.cs b/src/Logic/Utilities.cs index 9b3fa878a..8a7b3de44 100644 --- a/src/Logic/Utilities.cs +++ b/src/Logic/Utilities.cs @@ -160,7 +160,7 @@ namespace Nikse.SubtitleEdit.Logic return new List { ".avi", ".mkv", ".wmv", ".mpg", ".mpeg", ".divx", ".mp4", ".asf", ".flv", ".mov", ".m4v", ".vob", ".ogv", ".webm", ".ts", ".m2ts" }; } - public static string GetVideoFileFilter() + public static string GetVideoFileFilter(bool includeAudioFiles) { var sb = new StringBuilder(); sb.Append(Configuration.Settings.Language.General.VideoFiles + "|"); @@ -172,6 +172,8 @@ namespace Nikse.SubtitleEdit.Logic sb.Append("*" + extension); i++; } + if (includeAudioFiles && !string.IsNullOrEmpty(Configuration.Settings.Language.General.AudioFiles)) + sb.Append("|" + Configuration.Settings.Language.General.AudioFiles + "|*.mp3;*.wav;*.wma;*.ogg;*.mpa;*.ape;*.aiff;*.flac;*.aac"); sb.Append("|" + Configuration.Settings.Language.General.AllFiles + "|*.*"); return sb.ToString(); } diff --git a/src/Resources/OpenOfficeDictionaries.xml b/src/Resources/OpenOfficeDictionaries.xml index de6943d1a..5e4e29fca 100644 --- a/src/Resources/OpenOfficeDictionaries.xml +++ b/src/Resources/OpenOfficeDictionaries.xml @@ -83,6 +83,12 @@ http://numbertext.org/tmp/dict-en.oxt All English dictionaries (AU, CA, GB, US, ZA) + + Farsi (Persian) + Persian/Farsi + http://downloads.sourceforge.net/project/aoo-extensions/2359/1/dict-fa.oxt?r=http%3A%2F%2Fextensions.openoffice.org%2Fen%2Fproject%2Fpersian-spellchecker-dictionary&ts=1374091518&use_mirror=garr + Farsi + French Français @@ -203,6 +209,18 @@ http://extensions.libreoffice.org/extension-center/lower-sorbian-dictionary/releases/1.4.6/lower_sorbian_spelling_dictionary-1.4.6.oxt Lower Sorbian dictionary 1.4.6 + + Malay + Malay + http://ftp.sunet.se/pub/Office/OpenOffice.org/contrib/dictionaries/ms_MY.zip + Malay Spellchecker v0.1 - 07/10/04 + + + Macedonian + Macedonian + http://ftp.sunet.se/pub/Office/OpenOffice.org/contrib/dictionaries/mk_MK.zip + Macedonian dictionary was created by Taras Bendik + Norwegian Norsk @@ -221,6 +239,12 @@ http://extensions.libreoffice.org/extension-center/vero-verificador-ortografico-e-hifenizador-em-portugues-do-brasil/pscreleasefolder.2012-01-04.1563120832/2.1/vero_pt_br_v210aoc.oxt VERO - VERificador Ortográfico e hifenizador em Português do Brasil 2.1 + + Portuguese (Portugal) + Português + http://ftp.sunet.se/pub/Office/OpenOffice.org/contrib/dictionaries/pt_PT.zip + Versão 20.5.2002 + Romanian română diff --git a/src/Resources/OpenOfficeDictionaries.xml.zip b/src/Resources/OpenOfficeDictionaries.xml.zip index 58c6015489974e2fe51e97b48794106c3a2741ce..9ca9c16f1023804bb5cd17e1dc4ff4b2fa056cab 100644 GIT binary patch delta 3932 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 delta 3723 zcmV;64s`MA9-18oABzYGUybFF2O)otBQ+GhBk>=60d-5`TC#^#J=1JrX+#4;AQU+j zCn-`XhjLYVIk8Dd2!uEQ7Y^(@5{nSSF44nv6mD>9u1Nd`o?Uyon{st3(r7ZBq{?MK zf8Trdd-ii~*_lyyXE?Mix@}v&&0ONyl;3v!bqL*(Tse^6;mRHE$g%nO0WyE3w`~nQ zdqRlIZ_zWC`*{lEP3Y_2$rB zt}*C3lU>)K0a3_>KT#9#iNt?$V?LvfgRL>OCe*u;OlLRy{8qExu6NCLr)$b90jIsG z?Rm_*bwXYL7Cqauq_>n?o;?$&rm!GcJ&LM_2h&0!4|+<35-}d>+g1@Pe}4bxSATx| z*GsCTWDs=hzDHB!(p%Vqo>NaJQi42ext4XSQ#KZ6z=u&?{OIDeO3c=H> z!*!AHrvq99*Bt?$K(|!UDzC!zPF=6*`@ueSdyO7rtX`EK%Q|sib~DR~?T+vufhMok z9i!D=R_mch>Ch{t>M_yYO(?`QVk~YDr43fV9Ce5naGSVA>@8kfe7pE@@#P=S{PFxB z&n|v|Pp_iIPm5m`UoU^YTpOp2mTBr{GaQ%t6dPKz^}nPRbJ5})%mp+)n2o7R#Engak>wE1!F*Fms-WMaJ}aai zN*#`wOGm0Smm26?Jn&dxAKD|_7ve;;oEY;A%`_uD@UZxzIO<8cXgjJOh22HFqW;R} zii?3WBA${3{qYi5&^N+{qy=48#j~{8v>Oe*qYpCf2=0$owVSw~I9KltwdS?~e=eHh zllarwO0Hc@lkNf-f9>><D|HLXA&%$7p{`}CV_#A)$=p%Htw<*~9t|ahk8|pA zF|}3zmdA*%F#g}|&56$^wkk-aM}5<1*7RC9M~=M}hkGmPRn{va?f_@p5nPm`~&3Z#9YPO1z_mEoSBHpgNOn-mJx7{^HE=Ic(2j3RQ zHO*L+JkhT#b2DO1#C&?GA!bK_Z6dyiNqMV_xx?me@_l=9u*_$xd)`1s0-WVi2m-^` zm6t(;qfd}*`sj;E1!LAWacy2mCY0h6RU*syvD_zfe>!2V?=fdU!EA&$Sq}6Ww<2eD zD2jMm%`i=DbaCC#j9SMq>)pE9(Q8`h=0Xji35s5B*m;zC&L@m!P^rtZ9r(qD^8kfj zIv~gzm#rGjmfq4`2TRE2U^>RCj_yG84ab4l@}PHiyx(n}SjGZ(QNc(gm?&=W1asRJ zPVC~de}a{$^5q88KJ|P6R~m&sorS7P6@ADpSl5Uo$tft>*m~pwy0mox-F5K-dSv$k zdVH&bnfgwTy2WaHr$^kQkBF_TwPl8hsFyCWJqVtL(3Ax&rBQA}M7a*bpyp6OS^<<3 zdJ)*%x1SE=Q+VFMssZqJwna3II|oY&JIPW4e?`B2c0U7ab?I+Eu8#9v)SC)#Yb)SB z#7mn+h;P%t=U@UGM{jTd$)mP4-dqRzBPkdjP)vLQ{?yI|vu6y^@G_cOyJa@o^>(e% z)Zr=&G%d|+MJRD ze~g|O&?iwuAzdo^5KRB#I#AjV+_fwqC7igTHPmv@VdmZ2N@1;Ej&e-YtGbTJ!LBx?^@|0wSib&XE*yvuEOQwM@| zSn}SG;BICdA+QL!Cvquqb?=TOs3xSpn}U+>{U4oaDYP-Bo7p{@Y`7C@Y6qK5Rj$jJ z+E@yJ$JsrpEJNwom&zfPLOhaQQZpjxtpt5%rviL!cVHL6d;I?Q$M64o{Qh&tfA4>I z{J}G-0G2kETD{fQ%?KBJMI#xDp5=Bh&I}m35b&LE>qx?v+s3FgNVq$2)pj)QC!+)6 zt&JG71{=EFh?rniV&YCMFN-XZQZwr3BqeSjJ5D_a4XjScJr)&He{n{_(HGnSKqksd zRi#Fozzv5Pn~R|z+p$zhtek~5e?mSt1l2W|<4rSHlei31zj8Q}V1f84i@lP%%%XVO zXay{|1K0#r*(;Aru7w6Wtb9q6Cu9oqaB>g#4{#qQPu~tQ9nSWs+(oGEjObc07474A$10z7le#%)t$&~H)7FGfTWe_zf1_d4>y1Xk zgy6oZ51HjKXb+FV?%;-|H~~wLl5Mqo9?ykT=P#VOUXGxt3b=x;6crl?i?OxP71k~J zaG-WK8G+P84OrD~n`XUc)}oQAuGJ$az!t9_RNj-7_rf8nj_ayJR4AV0;XYAAGF0W` zu%z882B&L>m4XN%HJfZce;fRZ!7m4L+FI5IPS=0g%<5R*JDyVSe~?ZJtJ6D+6WHH#O57xv8RL%pD>cR$u!yE=n+J_#Qz@|(; z{N5+Q0M^;2Y!HB$e_5mNg3&wko-+q4@8Xs+++lxE)F#TbdF8XdxNzm!s8tlTilDJ7 z#(?{5e;g231$LYI!QB4+o3+3miIE#n|IZ$B!A@OIXTI$7j*sD{A`6KGs+;S`tis2* zkL|&TzRSG60tW-;xD1ln`@g?)<;8W4NkSmZL7=>kmj%3`f3?DLy{KF-9xZwqr%;qr zwSfeMr8pGos6x#jVBQ`bDIg35)ze1!+|~GmITU&x>`OTJXdkZ1iEcoBVmn-$jc2!e zbml^3x2C0~g9Q%j_*RiP=mqWs-fgqv!dt4%@Fnn}5_r!5>oWYn4!~=uftz%GY3u#0 zz%tbOO4r%fe}jJ+wRT0tIGeoV;69s7Mb7^Sy9e_A8S%XV^K3_JnUGZ6HX8MoE)us) zL(fqHuTqro3Cc->HiS4wA2^7OP$bVLk}XxR@bVxWCkRH6Q~(>d7d>)li4f+;+KvG`sUfihYPgJpWYXn9jk6X(e207LOT=1n*pGQx!Uus_R! z+1W{guod2_8QprP*=;q!r>tq=&PdM-;3aD?a1D1A82|~Fe431e=%SDifny^jL~Mw* zb{| zn7HPREm${pVH7FOxs3HN^UPX2xGDfv996ed^+!qfFiQFdSwnDw>Kiyg#W*@ZyA&2w z;FJ+uLA$nd^iCg~w+e!qgpB*?KDd7+f0(%c=o9h8waUYEzdR3cY|UaG9H$O(W~pCH z5Oon7KZ#=s;yIoUbjxhldiJf9~p< zB5_CD>G8Rm21XsqEtHy-?D1VYP$i3FX;8-xT!-%G)}iC#N$GL`rYms$I4;|jja0ML z{P36*TJQ1Yw~sG>eSG;7@%Q@|jxWD?eED5fU`y|ALq=vZJ`d@SSKQt9$3!(Dv(fCX zvcU~Nt}!d~k%>oam9?G4dy5|+e`fyjk2e=TL-hRe;s^B~Xena@K_pNbC@-BAPOT$r z4J|Fo=np2nfM651uwoj2g21Us1khl{QbaoyoR