├── .gitattributes ├── .github └── issue_template.md ├── .gitignore ├── 3rdparty └── EncodingTools │ ├── EncodingTools.cs │ ├── EncodingTools.csproj │ ├── Multilang │ ├── CMLangConvertCharset.cs │ ├── CMLangConvertCharsetClass.cs │ ├── CMLangString.cs │ ├── CMLangStringClass.cs │ ├── CMultiLanguage.cs │ ├── CMultiLanguageClass.cs │ ├── IEnumCodePage.cs │ ├── IEnumRfc1766.cs │ ├── IEnumScript.cs │ ├── IMLangCodePages.cs │ ├── IMLangConvertCharset.cs │ ├── IMLangFontLink.cs │ ├── IMLangFontLink2.cs │ ├── IMLangLineBreakConsole.cs │ ├── IMLangString.cs │ ├── IMLangStringAStr.cs │ ├── IMLangStringBufA.cs │ ├── IMLangStringBufW.cs │ ├── IMLangStringWStr.cs │ ├── IMultiLanguage.cs │ ├── IMultiLanguage2.cs │ ├── IMultiLanguage3.cs │ ├── ISequentialStream.cs │ ├── IStream.cs │ ├── _FILETIME.cs │ ├── _LARGE_INTEGER.cs │ ├── _RemotableHandle.cs │ ├── _ULARGE_INTEGER.cs │ ├── __MIDL_IWinTypes_0009.cs │ ├── tagDetectEncodingInfo.cs │ ├── tagMIMECONTF.cs │ ├── tagMIMECPINFO.cs │ ├── tagMIMECSETINFO.cs │ ├── tagMLCPF.cs │ ├── tagMLDETECTCP.cs │ ├── tagMLSTR_FLAGS.cs │ ├── tagRFC1766INFO.cs │ ├── tagSCRIPFONTINFO.cs │ ├── tagSCRIPTINFO.cs │ ├── tagSTATSTG.cs │ └── tagUNICODERANGE.cs │ ├── Properties │ └── AssemblyInfo.cs │ └── Readme.md ├── LICENSE.md ├── README.md ├── Setup ├── FileAssociation.nsh ├── Setup.nsi └── st.png ├── SubtitleTools.Common ├── Behaviors │ ├── AutoScrollListView.cs │ ├── FolderBrowserDialogBehavior.cs │ ├── LoadedBehavior.cs │ ├── MediaElementBehavior.cs │ ├── OpenFileDialogBoxBehavior.cs │ ├── ScrollToIndexBehavior.cs │ ├── SetCaretIndexBehavior.cs │ ├── SliderBehavior.cs │ └── WebHyperlink.cs ├── CodePlexRss │ ├── Deserializer.cs │ ├── DownloadHistory.cs │ ├── Model │ │ ├── VersionInfo.cs │ │ └── VersionsInfo.cs │ └── rss.cs ├── Collections │ └── MTObservableCollection.cs ├── Compression │ └── Compression.cs ├── Config │ └── ConfigSetGet.cs ├── Controls │ ├── BetterPopup.cs │ ├── BusyIndicator.cs │ └── VisualStates.BusyIndicator.cs ├── Converters │ ├── ColorConverter.cs │ ├── FileNameConverter.cs │ ├── ImageConverter.cs │ ├── Iso639Converter.cs │ ├── NumberToTimeSpanConverter.cs │ ├── PlayBtnImageConverter.cs │ ├── TimeSpanConverter.cs │ ├── VisibilityConverter.cs │ └── WaterMarkConverter.cs ├── EncodingHelper │ ├── DetectEncoding.cs │ └── Model │ │ ├── EncodingInf.cs │ │ └── EncodingsInf.cs ├── Files │ ├── FileAssociation.cs │ ├── Filters.cs │ ├── Info.cs │ ├── Path.cs │ └── Xml.cs ├── ISO639 │ ├── Language.cs │ └── LanguagesCodes.cs ├── Logger │ └── ExceptionLogger.cs ├── MVVM │ ├── App.cs │ ├── DelegateCommand.cs │ ├── Designer.cs │ ├── Messenger.cs │ └── ViewModelBase.cs ├── Net │ ├── Downloader.cs │ └── PostXML.cs ├── Properties │ └── AssemblyInfo.cs ├── Regex │ └── RegexHelper.cs ├── ResourceFiles │ └── ResourceUtils.cs ├── SubtitleTools.Common.csproj ├── Themes │ ├── ExpressionDark.xaml │ ├── Generic.xaml │ └── Images │ │ ├── error-info.png │ │ ├── error.png │ │ └── warning.png ├── Threading │ └── DispatcherHelper.cs ├── Toolkit │ ├── Imdb.cs │ ├── Memory.cs │ └── SafeClipboard.cs ├── Translators │ └── TranslatorContainer.cs └── packages.config ├── SubtitleTools.Infrastructure ├── Core │ ├── CalculateReadingTime.cs │ ├── CalculateWordsCount.cs │ ├── ChangeEncoding.cs │ ├── DeleteRow.cs │ ├── FixRle.cs │ ├── JoinFiles.cs │ ├── LogWindow.cs │ ├── Merge.cs │ ├── MixFiles.cs │ ├── OpenSubtitlesOrg │ │ ├── API │ │ │ ├── CheckHashInfo.cs │ │ │ ├── DownloadSubtitlesResult.cs │ │ │ ├── IOpenSubtitlesDb.cs │ │ │ ├── LoginInfo.cs │ │ │ ├── SearchInfo.cs │ │ │ ├── SubCheckHashResult.cs │ │ │ ├── SubtitleDataInfo.cs │ │ │ ├── SubtitleInfo.cs │ │ │ ├── SubtitlesData.cs │ │ │ ├── TryUploadInfo.cs │ │ │ ├── TryUploadResult.cs │ │ │ ├── UA.cs │ │ │ ├── UploadBaseinfo.cs │ │ │ ├── UploadCDsInfo.cs │ │ │ └── UploadResult.cs │ │ ├── Helper │ │ │ ├── MovieFileInfo.cs │ │ │ └── UploadData.cs │ │ └── OpenSubtitlesXmlRpc.cs │ ├── ParseSrt.cs │ ├── Sre.cs │ ├── Sync.cs │ ├── Translate.cs │ └── UnicodeRle.cs ├── Models │ ├── AudioFormat.cs │ ├── AudioFormats.cs │ ├── DownloadOpenSubtitlesGui.cs │ ├── JoinTwoFilesGui.cs │ ├── Log.cs │ ├── Logs.cs │ ├── MainWindowGui.cs │ ├── OsdbItem.cs │ ├── OsdbItems.cs │ ├── PreviewModel.cs │ ├── SilenceTimeout.cs │ ├── SpeechRecognitionEngine.cs │ ├── SpeechRecognitionEngines.cs │ ├── SpeechRecognitionModel.cs │ ├── SubtitleItem.cs │ ├── SubtitleItems.cs │ ├── SyncModel.cs │ ├── TranslatorModel.cs │ └── UploadItem.cs ├── Properties │ └── AssemblyInfo.cs ├── SubtitleTools.Infrastructure.csproj ├── ViewModels │ ├── AboutViewModel.cs │ ├── DetectEncodingViewModel.cs │ ├── DownloadOpenSubtitlesViewModel.cs │ ├── JoinTwoFilesViewModel.cs │ ├── LogsViewModel.cs │ ├── MainWindowViewModel.cs │ ├── PreviewViewModel.cs │ ├── SpeechRecognitionViewModel.cs │ ├── SyncViewModel.cs │ ├── TranslatorViewModel.cs │ └── UploadOpenSubtitlesViewModel.cs └── packages.config ├── SubtitleTools.Shell ├── About.xaml ├── About.xaml.cs ├── DetectEncodingView.xaml ├── DetectEncodingView.xaml.cs ├── DownloadOpenSubtitles.xaml ├── DownloadOpenSubtitles.xaml.cs ├── Flags │ ├── ad.png │ ├── ae.png │ ├── af.png │ ├── ag.png │ ├── ai.png │ ├── al.png │ ├── am.png │ ├── an.png │ ├── ao.png │ ├── ar.png │ ├── as.png │ ├── at.png │ ├── au.png │ ├── aw.png │ ├── ax.png │ ├── az.png │ ├── ba.png │ ├── bb.png │ ├── bd.png │ ├── be.png │ ├── bf.png │ ├── bg.png │ ├── bh.png │ ├── bi.png │ ├── bj.png │ ├── bm.png │ ├── bn.png │ ├── bo.png │ ├── br.png │ ├── bs.png │ ├── bt.png │ ├── bv.png │ ├── bw.png │ ├── by.png │ ├── bz.png │ ├── ca.png │ ├── catalonia.png │ ├── cc.png │ ├── cd.png │ ├── cf.png │ ├── cg.png │ ├── ch.png │ ├── ci.png │ ├── ck.png │ ├── cl.png │ ├── cm.png │ ├── cn.png │ ├── co.png │ ├── cr.png │ ├── cs.png │ ├── cu.png │ ├── cv.png │ ├── cx.png │ ├── cy.png │ ├── cz.png │ ├── de.png │ ├── dj.png │ ├── dk.png │ ├── dm.png │ ├── do.png │ ├── dz.png │ ├── ec.png │ ├── ee.png │ ├── eg.png │ ├── eh.png │ ├── england.png │ ├── er.png │ ├── es.png │ ├── et.png │ ├── europeanunion.png │ ├── fam.png │ ├── fi.png │ ├── fj.png │ ├── fk.png │ ├── fm.png │ ├── fo.png │ ├── fr.png │ ├── ga.png │ ├── gb.png │ ├── gd.png │ ├── ge.png │ ├── gf.png │ ├── gh.png │ ├── gi.png │ ├── gl.png │ ├── gm.png │ ├── gn.png │ ├── gp.png │ ├── gq.png │ ├── gr.png │ ├── gs.png │ ├── gt.png │ ├── gu.png │ ├── gw.png │ ├── gy.png │ ├── hk.png │ ├── hm.png │ ├── hn.png │ ├── hr.png │ ├── ht.png │ ├── hu.png │ ├── id.png │ ├── ie.png │ ├── il.png │ ├── in.png │ ├── io.png │ ├── iq.png │ ├── ir.png │ ├── is.png │ ├── it.png │ ├── jm.png │ ├── jo.png │ ├── jp.png │ ├── ke.png │ ├── kg.png │ ├── kh.png │ ├── ki.png │ ├── km.png │ ├── kn.png │ ├── kp.png │ ├── kr.png │ ├── kw.png │ ├── ky.png │ ├── kz.png │ ├── la.png │ ├── lb.png │ ├── lc.png │ ├── li.png │ ├── lk.png │ ├── lr.png │ ├── ls.png │ ├── lt.png │ ├── lu.png │ ├── lv.png │ ├── ly.png │ ├── ma.png │ ├── mc.png │ ├── md.png │ ├── me.png │ ├── mg.png │ ├── mh.png │ ├── mk.png │ ├── ml.png │ ├── mm.png │ ├── mn.png │ ├── mo.png │ ├── mp.png │ ├── mq.png │ ├── mr.png │ ├── ms.png │ ├── mt.png │ ├── mu.png │ ├── mv.png │ ├── mw.png │ ├── mx.png │ ├── my.png │ ├── mz.png │ ├── na.png │ ├── nc.png │ ├── ne.png │ ├── nf.png │ ├── ng.png │ ├── ni.png │ ├── nl.png │ ├── no.png │ ├── np.png │ ├── nr.png │ ├── nu.png │ ├── null.png │ ├── nz.png │ ├── om.png │ ├── pa.png │ ├── pe.png │ ├── pf.png │ ├── pg.png │ ├── ph.png │ ├── pk.png │ ├── pl.png │ ├── pm.png │ ├── pn.png │ ├── pr.png │ ├── ps.png │ ├── pt.png │ ├── pw.png │ ├── py.png │ ├── qa.png │ ├── re.png │ ├── ro.png │ ├── rs.png │ ├── ru.png │ ├── rw.png │ ├── sa.png │ ├── sb.png │ ├── sc.png │ ├── scotland.png │ ├── sd.png │ ├── se.png │ ├── sg.png │ ├── sh.png │ ├── si.png │ ├── sj.png │ ├── sk.png │ ├── sl.png │ ├── sm.png │ ├── sn.png │ ├── so.png │ ├── sr.png │ ├── st.png │ ├── sv.png │ ├── sy.png │ ├── sz.png │ ├── tc.png │ ├── td.png │ ├── tf.png │ ├── tg.png │ ├── th.png │ ├── tj.png │ ├── tk.png │ ├── tl.png │ ├── tm.png │ ├── tn.png │ ├── to.png │ ├── tr.png │ ├── tt.png │ ├── tv.png │ ├── tw.png │ ├── tz.png │ ├── ua.png │ ├── ug.png │ ├── um.png │ ├── us.png │ ├── uy.png │ ├── uz.png │ ├── va.png │ ├── vc.png │ ├── ve.png │ ├── vg.png │ ├── vi.png │ ├── vn.png │ ├── vu.png │ ├── wales.png │ ├── wf.png │ ├── ws.png │ ├── ye.png │ ├── yt.png │ ├── za.png │ ├── zm.png │ └── zw.png ├── Images │ ├── CopyHS.png │ ├── alert.png │ ├── books.png │ ├── box_download_48.png │ ├── calculator.png │ ├── clipping_sound.png │ ├── close.png │ ├── configure.png │ ├── copy.png │ ├── debug-pause-icon.png │ ├── debug-run-icon.png │ ├── debug-step-into-icon.png │ ├── debug-stop-icon.png │ ├── delete.png │ ├── delete16.png │ ├── download.png │ ├── error.png │ ├── event16.png │ ├── film_link.png │ ├── format.png │ ├── format_text_direction_rtl.png │ ├── info.png │ ├── join.png │ ├── merge.png │ ├── movies.png │ ├── note_add.png │ ├── open.png │ ├── osdb.png │ ├── refresh.png │ ├── save.png │ ├── search.png │ ├── speech_recognition.png │ ├── sync.png │ ├── toolbar_find.png │ ├── translate.png │ ├── upload.png │ └── voice_chat.png ├── JoinTwoFiles.xaml ├── JoinTwoFiles.xaml.cs ├── Logs.xaml ├── Logs.xaml.cs ├── MainShell.xaml ├── MainShell.xaml.cs ├── Preview.xaml ├── Preview.xaml.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── SpeechRecognition.xaml ├── SpeechRecognition.xaml.cs ├── SubtitleTools.Shell.csproj ├── SubtitleView.xaml ├── SubtitleView.xaml.cs ├── SyncView.xaml ├── SyncView.xaml.cs ├── Toolbar.xaml ├── Toolbar.xaml.cs ├── TranslatorView.xaml ├── TranslatorView.xaml.cs ├── UploadOpenSubtitles.xaml ├── UploadOpenSubtitles.xaml.cs └── packages.config ├── SubtitleTools.Tests ├── Properties │ └── AssemblyInfo.cs ├── Samples │ └── rss.cs ├── SubtitleTools.Tests.csproj ├── TestParseSrt.cs ├── TestPrj.nunit ├── TestRegexHelper.cs └── packages.config ├── SubtitleTools.sln └── SubtitleTools ├── App.xaml ├── App.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs ├── Resources.resx ├── Settings.Designer.cs └── Settings.settings ├── SubtitleTools.csproj ├── app.config ├── movies.ico └── packages.config /.github/issue_template.md: -------------------------------------------------------------------------------- 1 | # Summary of the issue 2 | 3 | 4 | 5 | ## Environment 6 | 7 | ``` 8 | The in-use version: 9 | Operating system: 10 | IDE: (e.g. Visual Studio 2015) 11 | ``` 12 | 13 | ## Example code/Steps to reproduce: 14 | 15 | ``` 16 | paste your core code 17 | ``` 18 | 19 | ## Output: 20 | 21 | ``` 22 | Exception message: 23 | Full Stack trace: 24 | ``` 25 | 26 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/CMLangConvertCharset.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [ComImport, Guid("D66D6F98-CDAA-11D0-B822-00C04FC9B31F"), CoClass(typeof(CMLangConvertCharsetClass))] 6 | public interface CMLangConvertCharset : IMLangConvertCharset 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/CMLangConvertCharsetClass.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | [ComImport, ClassInterface((short) 0), TypeLibType((short) 2), Guid("D66D6F99-CDAA-11D0-B822-00C04FC9B31F")] 7 | public class CMLangConvertCharsetClass : IMLangConvertCharset, CMLangConvertCharset 8 | { 9 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 10 | public virtual extern void DoConversion([In] ref byte pSrcStr, [In, Out] ref uint pcSrcSize, [In] ref byte pDstStr, [In, Out] ref uint pcDstSize); 11 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 12 | public virtual extern void DoConversionFromUnicode([In] ref ushort pSrcStr, [In, Out] ref uint pcSrcSize, [In] ref sbyte pDstStr, [In, Out] ref uint pcDstSize); 13 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 14 | public virtual extern void DoConversionToUnicode([In] ref sbyte pSrcStr, [In, Out] ref uint pcSrcSize, [In] ref ushort pDstStr, [In, Out] ref uint pcDstSize); 15 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 16 | public virtual extern void GetDestinationCodePage(out uint puiDstCodePage); 17 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 18 | public virtual extern void GetProperty(out uint pdwProperty); 19 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 20 | public virtual extern void GetSourceCodePage(out uint puiSrcCodePage); 21 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 22 | public virtual extern void Initialize([In] uint uiSrcCodePage, [In] uint uiDstCodePage, [In] uint dwProperty); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/CMLangString.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [ComImport, CoClass(typeof(CMLangStringClass)), Guid("C04D65CE-B70D-11D0-B188-00AA0038C969")] 6 | public interface CMLangString : IMLangString 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/CMultiLanguage.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [ComImport, Guid("275C23E1-3747-11D0-9FEA-00AA003F8646"), CoClass(typeof(CMultiLanguageClass))] 6 | public interface CMultiLanguage : IMultiLanguage 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/IEnumCodePage.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | [ComImport, Guid("275C23E3-3747-11D0-9FEA-00AA003F8646"), InterfaceType((short) 1)] 7 | public interface IEnumCodePage 8 | { 9 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 10 | void Clone([MarshalAs(UnmanagedType.Interface)] out IEnumCodePage ppEnum); 11 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 12 | void Next([In] uint celt, out tagMIMECPINFO rgelt, out uint pceltFetched); 13 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 14 | void Reset(); 15 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 16 | void Skip([In] uint celt); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/IEnumRfc1766.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | [ComImport, Guid("3DC39D1D-C030-11D0-B81B-00C04FC9B31F"), InterfaceType((short) 1)] 7 | public interface IEnumRfc1766 8 | { 9 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 10 | void Clone([MarshalAs(UnmanagedType.Interface)] out IEnumRfc1766 ppEnum); 11 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 12 | void Next([In] uint celt, out tagRFC1766INFO rgelt, out uint pceltFetched); 13 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 14 | void Reset(); 15 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 16 | void Skip([In] uint celt); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/IEnumScript.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | [ComImport, Guid("AE5F1430-388B-11D2-8380-00C04F8F5DA1"), InterfaceType((short) 1)] 7 | public interface IEnumScript 8 | { 9 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 10 | void Clone([MarshalAs(UnmanagedType.Interface)] out IEnumScript ppEnum); 11 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 12 | void Next([In] uint celt, out tagSCRIPTINFO rgelt, out uint pceltFetched); 13 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 14 | void Reset(); 15 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 16 | void Skip([In] uint celt); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/IMLangCodePages.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | [ComImport, Guid("359F3443-BD4A-11D0-B188-00AA0038C969"), InterfaceType((short) 1)] 7 | public interface IMLangCodePages 8 | { 9 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 10 | void GetCharCodePages([In] ushort chSrc, out uint pdwCodePages); 11 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 12 | void GetStrCodePages([In] ref ushort pszSrc, [In] int cchSrc, [In] uint dwPriorityCodePages, out uint pdwCodePages, out int pcchCodePages); 13 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 14 | void CodePageToCodePages([In] uint uCodePage, out uint pdwCodePages); 15 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 16 | void CodePagesToCodePage([In] uint dwCodePages, [In] uint uDefaultCodePage, out uint puCodePage); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/IMLangConvertCharset.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | [ComImport, Guid("D66D6F98-CDAA-11D0-B822-00C04FC9B31F"), InterfaceType((short) 1)] 7 | public interface IMLangConvertCharset 8 | { 9 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 10 | void Initialize([In] uint uiSrcCodePage, [In] uint uiDstCodePage, [In] uint dwProperty); 11 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 12 | void GetSourceCodePage(out uint puiSrcCodePage); 13 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 14 | void GetDestinationCodePage(out uint puiDstCodePage); 15 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 16 | void GetProperty(out uint pdwProperty); 17 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 18 | void DoConversion([In] ref byte pSrcStr, [In, Out] ref uint pcSrcSize, [In] ref byte pDstStr, [In, Out] ref uint pcDstSize); 19 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 20 | void DoConversionToUnicode([In] ref sbyte pSrcStr, [In, Out] ref uint pcSrcSize, [In] ref ushort pDstStr, [In, Out] ref uint pcDstSize); 21 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 22 | void DoConversionFromUnicode([In] ref ushort pSrcStr, [In, Out] ref uint pcSrcSize, [In] ref sbyte pDstStr, [In, Out] ref uint pcDstSize); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/IMLangFontLink.cs: -------------------------------------------------------------------------------- 1 | #pragma warning disable 0108 2 | 3 | namespace MultiLanguage 4 | { 5 | using System; 6 | using System.Runtime.CompilerServices; 7 | using System.Runtime.InteropServices; 8 | 9 | [ComImport, InterfaceType((short) 1), ComConversionLoss, Guid("359F3441-BD4A-11D0-B188-00AA0038C969")] 10 | public interface IMLangFontLink : IMLangCodePages 11 | { 12 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 13 | void GetCharCodePages([In] ushort chSrc, out uint pdwCodePages); 14 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 15 | void GetStrCodePages([In] ref ushort pszSrc, [In] int cchSrc, [In] uint dwPriorityCodePages, out uint pdwCodePages, out int pcchCodePages); 16 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 17 | void CodePageToCodePages([In] uint uCodePage, out uint pdwCodePages); 18 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 19 | void CodePagesToCodePage([In] uint dwCodePages, [In] uint uDefaultCodePage, out uint puCodePage); 20 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 21 | void GetFontCodePages([In, ComAliasName("MultiLanguage.wireHDC")] ref _RemotableHandle hDC, [In, ComAliasName("MultiLanguage.wireHFONT")] ref _RemotableHandle hFont, out uint pdwCodePages); 22 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 23 | void MapFont([In, ComAliasName("MultiLanguage.wireHDC")] ref _RemotableHandle hDC, [In] uint dwCodePages, [In, ComAliasName("MultiLanguage.wireHFONT")] ref _RemotableHandle hSrcFont, [Out, ComAliasName("MultiLanguage.wireHFONT")] IntPtr phDestFont); 24 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 25 | void ReleaseFont([In, ComAliasName("MultiLanguage.wireHFONT")] ref _RemotableHandle hFont); 26 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 27 | void ResetFontMapping(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/IMLangLineBreakConsole.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | [ComImport, InterfaceType((short) 1), Guid("F5BE2EE1-BFD7-11D0-B188-00AA0038C969")] 7 | public interface IMLangLineBreakConsole 8 | { 9 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 10 | void BreakLineML([In, MarshalAs(UnmanagedType.Interface)] CMLangString pSrcMLStr, [In] int lSrcPos, [In] int lSrcLen, [In] int cMinColumns, [In] int cMaxColumns, out int plLineLen, out int plSkipLen); 11 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 12 | void BreakLineW([In] uint locale, [In] ref ushort pszSrc, [In] int cchSrc, [In] int cMaxColumns, out int pcchLine, out int pcchSkip); 13 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 14 | void BreakLineA([In] uint locale, [In] uint uCodePage, [In] ref sbyte pszSrc, [In] int cchSrc, [In] int cMaxColumns, out int pcchLine, out int pcchSkip); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/IMLangString.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System; 4 | using System.Runtime.CompilerServices; 5 | using System.Runtime.InteropServices; 6 | 7 | [ComImport, Guid("C04D65CE-B70D-11D0-B188-00AA0038C969"), InterfaceType((short) 1)] 8 | public interface IMLangString 9 | { 10 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 11 | void Sync([In] int fNoAccess); 12 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 13 | int GetLength(); 14 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 15 | void SetMLStr([In] int lDestPos, [In] int lDestLen, [In, MarshalAs(UnmanagedType.IUnknown)] object pSrcMLStr, [In] int lSrcPos, [In] int lSrcLen); 16 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 17 | void GetMLStr([In] int lSrcPos, [In] int lSrcLen, [In, MarshalAs(UnmanagedType.IUnknown)] object pUnkOuter, [In] uint dwClsContext, [In] ref Guid piid, [MarshalAs(UnmanagedType.IUnknown)] out object ppDestMLStr, out int plDestPos, out int plDestLen); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/IMLangStringBufA.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System; 4 | using System.Runtime.CompilerServices; 5 | using System.Runtime.InteropServices; 6 | 7 | [ComImport, Guid("D24ACD23-BA72-11D0-B188-00AA0038C969"), InterfaceType((short) 1), ComConversionLoss] 8 | public interface IMLangStringBufA 9 | { 10 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 11 | void GetStatus(out int plFlags, out int pcchBuf); 12 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 13 | void LockBuf([In] int cchOffset, [In] int cchMaxLock, [Out] IntPtr ppszBuf, out int pcchBuf); 14 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 15 | void UnlockBuf([In] ref sbyte pszBuf, [In] int cchOffset, [In] int cchWrite); 16 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 17 | void Insert([In] int cchOffset, [In] int cchMaxInsert, out int pcchActual); 18 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 19 | void Delete([In] int cchOffset, [In] int cchDelete); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/IMLangStringBufW.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System; 4 | using System.Runtime.CompilerServices; 5 | using System.Runtime.InteropServices; 6 | 7 | [ComImport, InterfaceType((short) 1), Guid("D24ACD21-BA72-11D0-B188-00AA0038C969"), ComConversionLoss] 8 | public interface IMLangStringBufW 9 | { 10 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 11 | void GetStatus(out int plFlags, out int pcchBuf); 12 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 13 | void LockBuf([In] int cchOffset, [In] int cchMaxLock, [Out] IntPtr ppszBuf, out int pcchBuf); 14 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 15 | void UnlockBuf([In] ref ushort pszBuf, [In] int cchOffset, [In] int cchWrite); 16 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 17 | void Insert([In] int cchOffset, [In] int cchMaxInsert, out int pcchActual); 18 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 19 | void Delete([In] int cchOffset, [In] int cchDelete); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/ISequentialStream.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System; 4 | using System.Runtime.CompilerServices; 5 | using System.Runtime.InteropServices; 6 | 7 | [ComImport, Guid("0C733A30-2A1C-11CE-ADE5-00AA0044773D"), InterfaceType((short) 1)] 8 | public interface ISequentialStream 9 | { 10 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 11 | void RemoteRead(IntPtr pv, uint cb, ref uint pcbRead); 12 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 13 | void RemoteWrite([In] ref byte pv, [In] uint cb, ref uint pcbWritten); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/IStream.cs: -------------------------------------------------------------------------------- 1 | #pragma warning disable 0108 2 | 3 | namespace MultiLanguage 4 | { 5 | using System; 6 | using System.Runtime.CompilerServices; 7 | using System.Runtime.InteropServices; 8 | 9 | [ComImport, Guid("0000000C-0000-0000-C000-000000000046"), InterfaceType((short) 1)] 10 | public interface IStream : ISequentialStream 11 | { 12 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 13 | void RemoteRead(IntPtr pv, uint cb, ref uint pcbRead); 14 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 15 | void RemoteWrite([In] ref byte pv, [In] uint cb, ref uint pcbWritten); 16 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 17 | void RemoteSeek([In] _LARGE_INTEGER dlibMove, [In] uint dwOrigin, IntPtr plibNewPosition); 18 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 19 | void SetSize([In] _ULARGE_INTEGER libNewSize); 20 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 21 | void RemoteCopyTo([In, MarshalAs(UnmanagedType.Interface)] IStream pstm, [In] _ULARGE_INTEGER cb, out _ULARGE_INTEGER pcbRead, out _ULARGE_INTEGER pcbWritten); 22 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 23 | void Commit([In] uint grfCommitFlags); 24 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 25 | void Revert(); 26 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 27 | void LockRegion([In] _ULARGE_INTEGER libOffset, [In] _ULARGE_INTEGER cb, [In] uint dwLockType); 28 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 29 | void UnlockRegion([In] _ULARGE_INTEGER libOffset, [In] _ULARGE_INTEGER cb, [In] uint dwLockType); 30 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 31 | void Stat(out tagSTATSTG pstatstg, [In] uint grfStatFlag); 32 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] 33 | void Clone([MarshalAs(UnmanagedType.Interface)] out IStream ppstm); 34 | } 35 | } 36 | 37 | #pragma warning restore 0108 -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/_FILETIME.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [StructLayout(LayoutKind.Sequential, Pack=4)] 6 | public struct _FILETIME 7 | { 8 | public uint dwLowDateTime; 9 | public uint dwHighDateTime; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/_LARGE_INTEGER.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [StructLayout(LayoutKind.Sequential, Pack=8)] 6 | public struct _LARGE_INTEGER 7 | { 8 | public long QuadPart; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/_RemotableHandle.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [StructLayout(LayoutKind.Sequential, Pack=4)] 6 | public struct _RemotableHandle 7 | { 8 | public int fContext; 9 | public __MIDL_IWinTypes_0009 u; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/_ULARGE_INTEGER.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [StructLayout(LayoutKind.Sequential, Pack=8)] 6 | public struct _ULARGE_INTEGER 7 | { 8 | public ulong QuadPart; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/__MIDL_IWinTypes_0009.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [StructLayout(LayoutKind.Explicit, Pack=4)] 6 | public struct __MIDL_IWinTypes_0009 7 | { 8 | [FieldOffset(0)] 9 | public int hInproc; 10 | [FieldOffset(0)] 11 | public int hRemote; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagDetectEncodingInfo.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | /// Thanks to jannewe for finding the fix! 6 | /// http://www.codeproject.com/KB/recipes/DetectEncoding.aspx?msg=3247475#xx3247475xx 7 | [StructLayout(LayoutKind.Sequential)] 8 | public struct DetectEncodingInfo 9 | { 10 | public uint nLangID; 11 | public uint nCodePage; 12 | public int nDocPercent; 13 | public int nConfidence; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagMIMECONTF.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | public enum tagMIMECONTF 4 | { 5 | MIMECONTF_BROWSER = 2, 6 | MIMECONTF_EXPORT = 0x400, 7 | MIMECONTF_IMPORT = 8, 8 | MIMECONTF_MAILNEWS = 1, 9 | MIMECONTF_MIME_IE4 = 0x10000000, 10 | MIMECONTF_MIME_LATEST = 0x20000000, 11 | MIMECONTF_MIME_REGISTRY = 0x40000000, 12 | MIMECONTF_MINIMAL = 4, 13 | MIMECONTF_PRIVCONVERTER = 0x10000, 14 | MIMECONTF_SAVABLE_BROWSER = 0x200, 15 | MIMECONTF_SAVABLE_MAILNEWS = 0x100, 16 | MIMECONTF_VALID = 0x20000, 17 | MIMECONTF_VALID_NLS = 0x40000 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagMIMECPINFO.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [StructLayout(LayoutKind.Sequential, Pack=4)] 6 | public struct tagMIMECPINFO 7 | { 8 | public uint dwFlags; 9 | public uint uiCodePage; 10 | public uint uiFamilyCodePage; 11 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=0x40)] 12 | public ushort[] wszDescription; 13 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=50)] 14 | public ushort[] wszWebCharset; 15 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=50)] 16 | public ushort[] wszHeaderCharset; 17 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=50)] 18 | public ushort[] wszBodyCharset; 19 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=0x20)] 20 | public ushort[] wszFixedWidthFont; 21 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=0x20)] 22 | public ushort[] wszProportionalFont; 23 | public byte bGDICharset; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagMIMECSETINFO.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [StructLayout(LayoutKind.Sequential, Pack=4)] 6 | public struct tagMIMECSETINFO 7 | { 8 | public uint uiCodePage; 9 | public uint uiInternetEncoding; 10 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=50)] 11 | public ushort[] wszCharset; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagMLCPF.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MultiLanguage 4 | { 5 | [Flags] 6 | public enum MLCPF 7 | { 8 | // Not currently supported. 9 | MLDETECTF_MAILNEWS = 0x0001, 10 | 11 | // Not currently supported. 12 | MLDETECTF_BROWSER = 0x0002, 13 | 14 | // Detection result must be valid for conversion and text rendering. 15 | MLDETECTF_VALID = 0x0004, 16 | 17 | // Detection result must be valid for conversion. 18 | MLDETECTF_VALID_NLS = 0x0008, 19 | 20 | //Preserve preferred code page order. 21 | //This is meaningful only if you have set the puiPreferredCodePages parameter in IMultiLanguage3::DetectOutboundCodePage or IMultiLanguage3::DetectOutboundCodePageInIStream. 22 | MLDETECTF_PRESERVE_ORDER = 0x0010, 23 | 24 | // Only return one of the preferred code pages as the detection result. 25 | // This is meaningful only if you have set the puiPreferredCodePages parameter in IMultiLanguage3::DetectOutboundCodePage or IMultiLanguage3::DetectOutboundCodePageInIStream. 26 | MLDETECTF_PREFERRED_ONLY = 0x0020, 27 | 28 | // Filter out graphical symbols and punctuation. 29 | MLDETECTF_FILTER_SPECIALCHAR = 0x0040, 30 | 31 | // Return only Unicode codepages if the euro character is detected. 32 | MLDETECTF_EURO_UTF8 = 0x0080 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagMLDETECTCP.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | public enum MLDETECTCP { 4 | // Default setting will be used. 5 | MLDETECTCP_NONE = 0, 6 | 7 | // Input stream consists of 7-bit data. 8 | MLDETECTCP_7BIT = 1, 9 | 10 | // Input stream consists of 8-bit data. 11 | MLDETECTCP_8BIT = 2, 12 | 13 | // Input stream consists of double-byte data. 14 | MLDETECTCP_DBCS = 4, 15 | 16 | // Input stream is an HTML page. 17 | MLDETECTCP_HTML = 8, 18 | 19 | //Not currently supported. 20 | MLDETECTCP_NUMBER = 16 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagMLSTR_FLAGS.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | public enum tagMLSTR_FLAGS 4 | { 5 | MLSTR_READ = 1, 6 | MLSTR_WRITE = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagRFC1766INFO.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [StructLayout(LayoutKind.Sequential, Pack=4)] 6 | public struct tagRFC1766INFO 7 | { 8 | public uint lcid; 9 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=6)] 10 | public ushort[] wszRfc1766; 11 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=0x20)] 12 | public ushort[] wszLocaleName; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagSCRIPFONTINFO.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [StructLayout(LayoutKind.Sequential, Pack=8)] 6 | public struct tagSCRIPFONTINFO 7 | { 8 | public long scripts; 9 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=0x20)] 10 | public ushort[] wszFont; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagSCRIPTINFO.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [StructLayout(LayoutKind.Sequential, Pack=4)] 6 | public struct tagSCRIPTINFO 7 | { 8 | public byte ScriptId; 9 | public uint uiCodePage; 10 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=0x30)] 11 | public ushort[] wszDescription; 12 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=0x20)] 13 | public ushort[] wszFixedWidthFont; 14 | [MarshalAs(UnmanagedType.ByValArray, SizeConst=0x20)] 15 | public ushort[] wszProportionalFont; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagSTATSTG.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System; 4 | using System.Runtime.InteropServices; 5 | 6 | [StructLayout(LayoutKind.Sequential, Pack=8)] 7 | public struct tagSTATSTG 8 | { 9 | [MarshalAs(UnmanagedType.LPWStr)] 10 | public string pwcsName; 11 | public uint type; 12 | public _ULARGE_INTEGER cbSize; 13 | public _FILETIME mtime; 14 | public _FILETIME ctime; 15 | public _FILETIME atime; 16 | public uint grfMode; 17 | public uint grfLocksSupported; 18 | public Guid clsid; 19 | public uint grfStateBits; 20 | public uint reserved; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Multilang/tagUNICODERANGE.cs: -------------------------------------------------------------------------------- 1 | namespace MultiLanguage 2 | { 3 | using System.Runtime.InteropServices; 4 | 5 | [StructLayout(LayoutKind.Sequential, Pack=2)] 6 | public struct tagUNICODERANGE 7 | { 8 | public ushort wcFrom; 9 | public ushort wcTo; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("EncodingTools")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("EncodingTools")] 12 | [assembly: AssemblyCopyright("Copyright © 2007")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("dbbebcd2-0c4b-4486-8c50-50668fdc04f8")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the values or you can default the Revision and Build Numbers 32 | // by using the '*' as shown below: 33 | [assembly: AssemblyVersion("1.0.0.0")] 34 | [assembly: AssemblyFileVersion("1.0.0.0")] 35 | -------------------------------------------------------------------------------- /3rdparty/EncodingTools/Readme.md: -------------------------------------------------------------------------------- 1 | From [Detect Encoding for In- and Outgoing Text](https://www.codeproject.com/Articles/17201/Detect-Encoding-for-In-and-Outgoing-Text) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [SubtitleTools](https://github.com/VahidN/SubtitleTools/releases) is a small utility that helps modifying existing subtitles or downloading new ones based on the digital signatures of your movie files from opensubtitles.org site. 4 | 5 | ![SubtitleTools](/Setup/st.png) 6 | 7 | 8 | Features 9 | --- 10 | - Integrated with speech recognition engine of windows 7+ to produce subtitles automatically. 11 | 12 | - Integrated with Bing's translator. 13 | 14 | - Converting encoding of the opened .srt file to UTF-8. 15 | 16 | - Synchronizing a subtitle and shifting its timespans. 17 | 18 | - Adjusting timespans of the opened .srt file based on the other fully synchronized .srt file. 19 | 20 | - Merging two .srt files. 21 | 22 | - Editing or deleting rows of the opened .srt file. 23 | 24 | - Downloading or uploading .srt files by using XML-RPC API of the opensubtitles.org. 25 | 26 | 27 | 28 | Supported Operating Systems 29 | --- 30 | Windows XP Service Pack 3+ 31 | 32 | Download 33 | --- 34 | - [Releases](https://github.com/VahidN/SubtitleTools/releases) 35 | 36 | 37 | Prerequisites 38 | --- 39 | - [Microsoft .NET Framework 4](https://www.microsoft.com/en-us/download/details.aspx?id=17718) 40 | 41 | -------------------------------------------------------------------------------- /Setup/st.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/Setup/st.png -------------------------------------------------------------------------------- /SubtitleTools.Common/Behaviors/FolderBrowserDialogBehavior.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Forms; 3 | using System.Windows.Interactivity; 4 | 5 | namespace SubtitleTools.Common.Behaviors 6 | { 7 | public class FolderBrowserDialogBehavior : TargetedTriggerAction 8 | { 9 | #region Fields 10 | 11 | public static readonly DependencyProperty FolderBrowserDescriptionProperty = 12 | DependencyProperty.Register("FolderBrowserDescription", typeof(string), 13 | typeof(FolderBrowserDialogBehavior), null); 14 | 15 | public static readonly DependencyProperty FolderBrowserDialogResultCommandProperty = 16 | DependencyProperty.Register("FolderBrowserDialogResultCommand", 17 | typeof(object), typeof(FolderBrowserDialogBehavior), null); 18 | 19 | #endregion Fields 20 | 21 | #region Properties 22 | 23 | public string FolderBrowserDescription 24 | { 25 | get { return (string)GetValue(FolderBrowserDescriptionProperty); } 26 | set { SetValue(FolderBrowserDescriptionProperty, value); } 27 | } 28 | 29 | public object FolderBrowserDialogResultCommand 30 | { 31 | get { return GetValue(FolderBrowserDialogResultCommandProperty); } 32 | set { SetValue(FolderBrowserDialogResultCommandProperty, value); } 33 | } 34 | 35 | #endregion Properties 36 | 37 | #region Methods (1) 38 | 39 | // Protected Methods (1) 40 | 41 | protected override void Invoke(object parameter) 42 | { 43 | using (var folderBrowserDialog = new FolderBrowserDialog { ShowNewFolderButton = true }) 44 | { 45 | if (!string.IsNullOrEmpty(FolderBrowserDescription)) 46 | { 47 | folderBrowserDialog.Description = FolderBrowserDescription; 48 | } 49 | 50 | var result = folderBrowserDialog.ShowDialog(); 51 | if (result == DialogResult.OK) 52 | FolderBrowserDialogResultCommand = folderBrowserDialog.SelectedPath; 53 | } 54 | } 55 | 56 | #endregion Methods 57 | } 58 | } -------------------------------------------------------------------------------- /SubtitleTools.Common/Behaviors/LoadedBehavior.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Controls; 4 | 5 | namespace SubtitleTools.Common.Behaviors 6 | { 7 | public class LoadedBehavior : DependencyObject 8 | { 9 | #region Fields (1) 10 | 11 | public static readonly DependencyProperty ControlLoadedProperty = 12 | DependencyProperty.RegisterAttached( 13 | "ControlLoaded", 14 | typeof(bool), typeof(LoadedBehavior), 15 | new PropertyMetadata(false, onControlLoadedChanged)); 16 | 17 | #endregion Fields 18 | 19 | #region Methods (4) 20 | 21 | // Public Methods (2)  22 | 23 | public static bool GetControlLoaded(DependencyObject d) 24 | { 25 | return (bool)d.GetValue(ControlLoadedProperty); 26 | } 27 | 28 | public static void SetControlLoaded(DependencyObject d, bool value) 29 | { 30 | d.SetValue(ControlLoadedProperty, value); 31 | } 32 | // Private Methods (2)  33 | 34 | private static void controlLoaded(object sender, RoutedEventArgs e) 35 | { 36 | var control = sender as Control; 37 | if (control == null) 38 | throw new InvalidOperationException("This behavior can only be attached to a Control."); 39 | 40 | control.Loaded -= controlLoaded; 41 | SetControlLoaded(control, true); 42 | } 43 | 44 | private static void onControlLoadedChanged(DependencyObject dependencyObject, 45 | DependencyPropertyChangedEventArgs eventArgs) 46 | { 47 | var control = dependencyObject as Control; 48 | if (control == null) 49 | throw new InvalidOperationException("This behavior can only be attached to a Control."); 50 | 51 | control.Loaded += controlLoaded; 52 | } 53 | 54 | #endregion Methods 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Behaviors/ScrollToIndexBehavior.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Controls; 4 | 5 | namespace SubtitleTools.Common.Behaviors 6 | { 7 | public class ScrollToIndexBehavior : DependencyObject 8 | { 9 | #region Fields (1) 10 | 11 | public static readonly DependencyProperty ScrollToIndexProperty = 12 | DependencyProperty.RegisterAttached( 13 | "ScrollToIndex", 14 | typeof(int), typeof(ScrollToIndexBehavior), 15 | new PropertyMetadata(0, onScrollToIndexChanged)); 16 | 17 | #endregion Fields 18 | 19 | #region Methods (3) 20 | 21 | // Public Methods (2)  22 | 23 | public static int GetScrollToIndex(DependencyObject d) 24 | { 25 | return (int)d.GetValue(ScrollToIndexProperty); 26 | } 27 | 28 | public static void SetScrollToIndex(DependencyObject d, int value) 29 | { 30 | d.SetValue(ScrollToIndexProperty, value); 31 | } 32 | // Private Methods (1)  33 | 34 | private static void onScrollToIndexChanged(DependencyObject dependencyObject, 35 | DependencyPropertyChangedEventArgs eventArgs) 36 | { 37 | var listView = dependencyObject as ListView; 38 | if (listView == null) 39 | throw new InvalidOperationException("This behavior can only be attached to a ListView."); 40 | 41 | if (listView.Items == null) return; 42 | 43 | var idx = (int)eventArgs.NewValue; 44 | if (idx > listView.Items.Count - 1 || idx < 0) return; 45 | 46 | listView.SelectedItem = listView.Items.GetItemAt(idx); 47 | listView.ScrollIntoView(listView.SelectedItem); 48 | } 49 | 50 | #endregion Methods 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Behaviors/SliderBehavior.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Controls; 4 | using System.Windows.Controls.Primitives; 5 | 6 | namespace SubtitleTools.Common.Behaviors 7 | { 8 | public class SliderBehavior : DependencyObject 9 | { 10 | #region Fields (1) 11 | 12 | public static readonly DependencyProperty DragCompletedProperty = 13 | DependencyProperty.RegisterAttached( 14 | "DragCompleted", 15 | typeof(bool), typeof(SliderBehavior), 16 | new PropertyMetadata(false, onDragCompletedChanged)); 17 | 18 | #endregion Fields 19 | 20 | #region Methods (4) 21 | 22 | // Public Methods (2)  23 | 24 | public static bool GetDragCompleted(DependencyObject d) 25 | { 26 | return (bool)d.GetValue(DragCompletedProperty); 27 | } 28 | 29 | public static void SetDragCompleted(DependencyObject d, bool value) 30 | { 31 | d.SetValue(DragCompletedProperty, value); 32 | } 33 | // Private Methods (2)  34 | 35 | static void dragCompletedEventHandler(object sender, DragCompletedEventArgs args) 36 | { 37 | SetDragCompleted((DependencyObject)sender, true); 38 | } 39 | 40 | private static void onDragCompletedChanged(DependencyObject dependencyObject, 41 | DependencyPropertyChangedEventArgs eventArgs) 42 | { 43 | var slider = dependencyObject as Slider; 44 | if (slider == null) 45 | throw new InvalidOperationException("This behavior can only be attached to a MediaElement."); 46 | 47 | slider.AddHandler(Thumb.DragCompletedEvent, new DragCompletedEventHandler(dragCompletedEventHandler)); 48 | } 49 | 50 | #endregion Methods 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /SubtitleTools.Common/CodePlexRss/Deserializer.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Xml.Serialization; 3 | 4 | namespace SubtitleTools.Common.CodePlexRss 5 | { 6 | public class Deserializer 7 | { 8 | public static rss MapToRss(string xml) 9 | { 10 | if (string.IsNullOrEmpty(xml)) return null; 11 | var deserializer = new XmlSerializer(typeof(rss)); 12 | return (rss)deserializer.Deserialize(new StringReader(xml)); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /SubtitleTools.Common/CodePlexRss/Model/VersionInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SubtitleTools.Common.MVVM; 3 | 4 | namespace SubtitleTools.Common.CodePlexRss.Model 5 | { 6 | public class VersionInfo : ViewModelBase 7 | { 8 | #region Fields (5) 9 | 10 | string _author; 11 | string _description; 12 | string _link; 13 | DateTime _pubDate; 14 | string _title; 15 | 16 | #endregion Fields 17 | 18 | #region Properties (5) 19 | 20 | public string Author 21 | { 22 | set 23 | { 24 | if (_author == value) return; 25 | _author = value; 26 | RaisePropertyChanged("Author"); 27 | } 28 | get { return _author; } 29 | } 30 | 31 | public string Description 32 | { 33 | set 34 | { 35 | if (_description == value) return; 36 | _description = value; 37 | RaisePropertyChanged("Description"); 38 | } 39 | get { return _description; } 40 | } 41 | 42 | public string Link 43 | { 44 | set 45 | { 46 | if (_link == value) return; 47 | _link = value; 48 | RaisePropertyChanged("Link"); 49 | } 50 | get { return _link; } 51 | } 52 | 53 | public DateTime PubDate 54 | { 55 | set 56 | { 57 | if (_pubDate == value) return; 58 | _pubDate = value; 59 | RaisePropertyChanged("PubDate"); 60 | } 61 | get { return _pubDate; } 62 | } 63 | 64 | public string Title 65 | { 66 | set 67 | { 68 | if (_title == value) return; 69 | _title = value; 70 | RaisePropertyChanged("Title"); 71 | } 72 | get { return _title; } 73 | } 74 | 75 | #endregion Properties 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /SubtitleTools.Common/CodePlexRss/Model/VersionsInfo.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Common.Collections; 2 | 3 | namespace SubtitleTools.Common.CodePlexRss.Model 4 | { 5 | public class VersionsInfo : MtObservableCollection 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Collections/MTObservableCollection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.ObjectModel; 3 | using System.Collections.Specialized; 4 | using System.Linq; 5 | using System.Windows.Threading; 6 | 7 | namespace SubtitleTools.Common.Collections 8 | { 9 | public class MtObservableCollection : ObservableCollection 10 | { 11 | public override event NotifyCollectionChangedEventHandler CollectionChanged; 12 | 13 | protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e) 14 | { 15 | using (BlockReentrancy()) 16 | { 17 | var eh = CollectionChanged; 18 | if (eh == null) return; 19 | 20 | var dispatcher = (from NotifyCollectionChangedEventHandler nh in eh.GetInvocationList() 21 | let dpo = nh.Target as DispatcherObject 22 | where dpo != null 23 | select dpo.Dispatcher).FirstOrDefault(); 24 | 25 | if (dispatcher != null && dispatcher.CheckAccess() == false) 26 | { 27 | dispatcher.Invoke(DispatcherPriority.DataBind, (Action)(() => OnCollectionChanged(e))); 28 | } 29 | else 30 | { 31 | foreach (var nh in eh.GetInvocationList().Cast()) 32 | { 33 | nh.Invoke(this, e); 34 | } 35 | } 36 | } 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /SubtitleTools.Common/Config/ConfigSetGet.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Configuration; 3 | using SubtitleTools.Common.MVVM; 4 | 5 | namespace SubtitleTools.Common.Config 6 | { 7 | public class ConfigSetGet 8 | { 9 | #region Methods (2) 10 | 11 | // Public Methods (2)  12 | 13 | /// 14 | /// read settings from app.config file 15 | /// 16 | /// 17 | /// 18 | public static string GetConfigData(string key) 19 | { 20 | //don't load on design time 21 | if (Designer.IsInDesignModeStatic) 22 | return "0"; 23 | 24 | var configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 25 | var appSettings = configuration.AppSettings; 26 | var res = appSettings.Settings[key].Value; 27 | if (res == null) throw new Exception(string.Format("Undefined: {0}", key)); 28 | return res; 29 | } 30 | 31 | public static void SetConfigData(string key, string data) 32 | { 33 | var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 34 | config.AppSettings.Settings[key].Value = data; 35 | config.Save(ConfigurationSaveMode.Modified); 36 | ConfigurationManager.RefreshSection("appSettings"); 37 | } 38 | 39 | #endregion Methods 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Controls/VisualStates.BusyIndicator.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.Windows.Controls 2 | { 3 | public static partial class VisualStates 4 | { 5 | /// 6 | /// Busyness group name. 7 | /// 8 | public const string GroupBusyStatus = "BusyStatusStates"; 9 | 10 | /// 11 | /// Busy state for BusyIndicator. 12 | /// 13 | public const string StateBusy = "Busy"; 14 | 15 | /// 16 | /// Idle state for BusyIndicator. 17 | /// 18 | public const string StateIdle = "Idle"; 19 | 20 | /// 21 | /// BusyDisplay group. 22 | /// 23 | public const string GroupVisibility = "VisibilityStates"; 24 | 25 | /// 26 | /// Visible state name for BusyIndicator. 27 | /// 28 | public const string StateVisible = "Visible"; 29 | 30 | /// 31 | /// Hidden state name for BusyIndicator. 32 | /// 33 | public const string StateHidden = "Hidden"; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Converters/ColorConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | using System.Windows.Media; 5 | 6 | namespace SubtitleTools.Common.Converters 7 | { 8 | public class ColorConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | if (value == null) return value; 13 | switch (value.ToString().ToLower()) 14 | { 15 | case "announcement": 16 | return new SolidColorBrush(Color.FromRgb(165, 239, 161)); 17 | case "alert": 18 | return new SolidColorBrush(Color.FromRgb(239, 137, 5)); 19 | case "info": 20 | return new SolidColorBrush(Color.FromRgb(247, 241, 241)); 21 | case "error": 22 | return new SolidColorBrush(Color.FromRgb(237, 67, 67)); 23 | default: 24 | return new SolidColorBrush(Color.FromRgb(247, 241, 241)); 25 | } 26 | } 27 | 28 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 29 | { 30 | throw new NotImplementedException(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Converters/FileNameConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.IO; 4 | using System.Windows.Data; 5 | 6 | namespace SubtitleTools.Common.Converters 7 | { 8 | public class FileNameConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | if (value == null) return null; 13 | var path = value.ToString(); 14 | if (value is Uri) 15 | path = ((Uri)value).LocalPath; 16 | return !File.Exists(path) ? value : Path.GetFileName(path); 17 | } 18 | 19 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 20 | { 21 | throw new NotImplementedException(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Converters/ImageConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | using SubtitleTools.Common.ResourceFiles; 5 | 6 | namespace SubtitleTools.Common.Converters 7 | { 8 | //Must create DependencySource on same Thread as the DependencyObject 9 | public class ImageConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 12 | { 13 | if (value == null) return value; 14 | switch (value.ToString().ToLower()) 15 | { 16 | case "announcement": 17 | return ResourceUtils.GetImgFromResource("SubtitleTools.Shell", "Images/event16.png"); 18 | case "alert": 19 | return ResourceUtils.GetImgFromResource("SubtitleTools.Shell", "Images/alert.png"); 20 | case "info": 21 | return ResourceUtils.GetImgFromResource("SubtitleTools.Shell", "Images/info.png"); 22 | case "error": 23 | return ResourceUtils.GetImgFromResource("SubtitleTools.Shell", "Images/close.png"); 24 | default: 25 | return ResourceUtils.GetImgFromResource("SubtitleTools.Shell", "Images/info.png"); 26 | } 27 | } 28 | 29 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 30 | { 31 | throw new NotImplementedException(); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Converters/Iso639Converter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | using SubtitleTools.Common.ResourceFiles; 5 | 6 | namespace SubtitleTools.Common.Converters 7 | { 8 | public class Iso639Converter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | if (value==null || string.IsNullOrWhiteSpace(value.ToString())) 13 | { 14 | return ResourceUtils.GetImgFromResource("SubtitleTools.Shell", "Flags/null.png"); 15 | } 16 | 17 | var image = ResourceUtils.GetImgFromResource("SubtitleTools.Shell", string.Format("Flags/{0}.png", value.ToString().ToLower())); 18 | if (image == null) 19 | { 20 | image = ResourceUtils.GetImgFromResource("SubtitleTools.Shell", "Flags/null.png"); 21 | } 22 | return image; 23 | } 24 | 25 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 26 | { 27 | throw new NotImplementedException(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Converters/NumberToTimeSpanConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | 5 | namespace SubtitleTools.Common.Converters 6 | { 7 | public class NumberToTimeSpanConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 10 | { 11 | if (value == null) return null; 12 | var number = (double)value; 13 | return TimeSpan.FromSeconds(number); 14 | } 15 | 16 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 17 | { 18 | throw new NotImplementedException(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Converters/PlayBtnImageConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | using SubtitleTools.Common.ResourceFiles; 5 | 6 | namespace SubtitleTools.Common.Converters 7 | { 8 | public class PlayBtnImageConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | if (value == null) return null; 13 | switch (value.ToString().ToLower()) 14 | { 15 | case "play": 16 | return ResourceUtils.GetImgFromResource("SubtitleTools.Shell", "Images/debug-run-icon.png"); 17 | case "pause": 18 | return ResourceUtils.GetImgFromResource("SubtitleTools.Shell", "Images/debug-pause-icon.png"); 19 | default: 20 | return ResourceUtils.GetImgFromResource("SubtitleTools.Shell", "Images/debug-run-icon.png"); 21 | } 22 | } 23 | 24 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 25 | { 26 | throw new NotImplementedException(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Converters/TimeSpanConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | using SubtitleTools.Common.Regex; 5 | 6 | namespace SubtitleTools.Common.Converters 7 | { 8 | public class TimeSpanConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | if (value == null) return null; 13 | var timeSpan = (TimeSpan)value; 14 | return string.Format("{0}:{1}:{2},{3}", 15 | timeSpan.Hours.ToString("D2"), 16 | timeSpan.Minutes.ToString("D2"), 17 | timeSpan.Seconds.ToString("D2"), 18 | timeSpan.Milliseconds.ToString("D3")); 19 | } 20 | 21 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 22 | { 23 | if (value == null) return null; 24 | 25 | var m = RegexHelper.RgGroups.Match(value.ToString()); 26 | var hh = int.Parse(m.Groups[1].ToString()); 27 | var mm = int.Parse(m.Groups[2].ToString()); 28 | var ss = int.Parse(m.Groups[3].ToString()); 29 | var ff = int.Parse(m.Groups[4].ToString()); 30 | 31 | return new TimeSpan(0, hh, mm, ss, ff); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Converters/VisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | namespace SubtitleTools.Common.Converters 7 | { 8 | public class VisibilityConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | if (value == null || string.IsNullOrWhiteSpace(value.ToString())) 13 | return Visibility.Collapsed; 14 | return Visibility.Visible; 15 | } 16 | 17 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 18 | { 19 | throw new NotImplementedException(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Converters/WaterMarkConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | namespace SubtitleTools.Common.Converters 7 | { 8 | //from : http://www.c-sharpcorner.com/UploadFile/rahul4_saxena/832/Default.aspx 9 | public class WaterMarkConverter : IMultiValueConverter 10 | { 11 | public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 12 | { 13 | if (values[0] is bool && values[1] is bool) 14 | { 15 | var hasText = !(bool)values[0]; 16 | var hasFocus = (bool)values[1]; 17 | 18 | if (hasFocus || hasText) 19 | return Visibility.Collapsed; 20 | } 21 | 22 | return Visibility.Visible; 23 | } 24 | 25 | public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 26 | { 27 | throw new NotImplementedException(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /SubtitleTools.Common/EncodingHelper/Model/EncodingInf.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Common.MVVM; 2 | 3 | namespace SubtitleTools.Common.EncodingHelper.Model 4 | { 5 | public class EncodingInf : ViewModelBase 6 | { 7 | #region Fields (2) 8 | 9 | string _bodyName; 10 | string _name; 11 | 12 | #endregion Fields 13 | 14 | #region Properties (2) 15 | 16 | public string BodyName 17 | { 18 | set 19 | { 20 | if (_bodyName == value) return; 21 | _bodyName = value; 22 | RaisePropertyChanged("BodyName"); 23 | } 24 | get { return _bodyName; } 25 | } 26 | 27 | public string Name 28 | { 29 | set 30 | { 31 | if (_name == value) return; 32 | _name = value; 33 | RaisePropertyChanged("Name"); 34 | } 35 | get { return _name; } 36 | } 37 | 38 | #endregion Properties 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /SubtitleTools.Common/EncodingHelper/Model/EncodingsInf.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Common.Collections; 2 | 3 | namespace SubtitleTools.Common.EncodingHelper.Model 4 | { 5 | public class EncodingsInf : MtObservableCollection 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Files/Filters.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Common.Files 3 | { 4 | public class Filters 5 | { 6 | public static string MovieFilter 7 | = "Movie files|*.3g2;*.3gp;*.3gp2;*.3gpp;*.60d;*.ajp;*.asf;*.asx;*.avchd;*.avi;*.bik;*.bix;*.box;*.cam;*.dat;*.divx;*.dmf;*.dv;*.dvr-ms;*.evo;*.flc;*.fli;*.flic;*.flv;*.flx;*.gvi;*.gvp;*.h264;*.m1v;*.m2p;*.m2ts;*.m2v;*.m4e;*.m4v;*.mjp;*.mjpeg;*.mjpg;*.mkv;*.moov;*.mov;*.movhd;*.movie;*.movx;*.mp4;*.mpe;*.mpeg;*.mpg;*.mpv;*.mpv2;*.mxf;*.nsv;*.nut;*.ogg;*.ogm;*.omf;*.ps;*.qt;*.ram;*.rm;*.rmvb;*.swf;*.ts;*.vfw;*.vid;*.video;*.viv;*.vivo;*.vob;*.vro;*.wm;*.wmv;*.wmx;*.wrap;*.wvx;*.wx;*.x264;*.xvid|All files (*.*)|*.*"; 8 | 9 | public static string SrtFilter 10 | = "Subtitle files (*.srt, *.txt)|*.srt;*.txt|All files (*.*)|*.*"; 11 | 12 | public static string ImageFilter 13 | = "JPEG Files (*.jpg;*.jpeg)|*.jpg;*.jpeg|PNG Files (*.png)|*.png|All Files (*.*)|*.*"; 14 | 15 | public static string WavFilter 16 | = "Voice files (*.wav)|*.wav|All files (*.*)|*.*"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Files/Info.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace SubtitleTools.Common.Files 4 | { 5 | public class Info 6 | { 7 | public static string FormatSize(double dblFileSize) 8 | { 9 | if (dblFileSize < 1024) 10 | return String.Format("{0:N0} B", dblFileSize); 11 | if (dblFileSize < 1024 * 1024) 12 | return String.Format("{0:N2} KB", dblFileSize / 1024); 13 | if (dblFileSize < 1024 * 1024 * 1024) 14 | return String.Format("{0:N2} MB", dblFileSize / (1024 * 1024)); 15 | if (dblFileSize >= 1024 * 1024 * 1024) 16 | return String.Format("{0:N2} GB", dblFileSize / (1024 * 1024 * 1024)); 17 | 18 | return dblFileSize.ToString(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Files/Path.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace SubtitleTools.Common.Files 4 | { 5 | public class Path 6 | { 7 | public static string AppPath 8 | { 9 | get 10 | { 11 | return System.IO.Path.GetDirectoryName(Application.ExecutablePath); 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Files/Xml.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Common.Files 3 | { 4 | public static class Xml 5 | { 6 | public static string EscapeXml(this string s) 7 | { 8 | var xml = s; 9 | if (!string.IsNullOrEmpty(xml)) 10 | { 11 | // replace literal values with entities 12 | xml = xml.Replace("&", "&"); 13 | xml = xml.Replace("<", "<"); 14 | xml = xml.Replace(">", ">"); 15 | xml = xml.Replace("\"", """); 16 | xml = xml.Replace("'", "'"); 17 | } 18 | return xml; 19 | } 20 | 21 | 22 | public static string UnescapeXml(this string s) 23 | { 24 | var unxml = s; 25 | if (!string.IsNullOrEmpty(unxml)) 26 | { 27 | // replace entities with literal values 28 | unxml = unxml.Replace("'", "'"); 29 | unxml = unxml.Replace(""", "\""); 30 | unxml = unxml.Replace(">", ">"); 31 | unxml = unxml.Replace("<", "<"); 32 | unxml = unxml.Replace("&", "&"); 33 | } 34 | return unxml; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /SubtitleTools.Common/ISO639/Language.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | namespace SubtitleTools.Common.ISO639 3 | { 4 | [DebuggerDisplay("{LanguageName}|{ISO639}")] 5 | public class Language 6 | { 7 | public string IdSubLanguage { set; get; } 8 | public string ISO639 { set; get; } 9 | public string LanguageName { set; get; } 10 | public string ISO6393166_1 { set; get; } 11 | } 12 | } -------------------------------------------------------------------------------- /SubtitleTools.Common/MVVM/App.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | 3 | namespace SubtitleTools.Common.MVVM 4 | { 5 | public class App 6 | { 7 | readonly static Messenger _messenger = new Messenger(); 8 | 9 | public static Messenger Messenger 10 | { 11 | get { return _messenger; } 12 | } 13 | 14 | public static string Path 15 | { 16 | get { return System.Windows.Forms.Application.StartupPath; } 17 | } 18 | 19 | public static string StartupFileName 20 | { 21 | get 22 | { 23 | var startupFileName = System.Windows.Application.Current.Properties["StartupFileName"]; 24 | if (startupFileName == null) return string.Empty; 25 | if (string.IsNullOrEmpty(startupFileName.ToString())) return string.Empty; 26 | if (!File.Exists(startupFileName.ToString())) return string.Empty; 27 | return startupFileName.ToString(); 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /SubtitleTools.Common/MVVM/DelegateCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace SubtitleTools.Common.MVVM 5 | { 6 | // From http://johnpapa.net/silverlight/5-simple-steps-to-commanding-in-silverlight/ 7 | public class DelegateCommand : ICommand 8 | { 9 | readonly Func _canExecute; 10 | readonly Action _executeAction; 11 | 12 | public DelegateCommand(Action executeAction, Func canExecute = null) 13 | { 14 | if (executeAction == null) 15 | throw new ArgumentNullException("executeAction"); 16 | 17 | _executeAction = executeAction; 18 | _canExecute = canExecute; 19 | } 20 | 21 | public event EventHandler CanExecuteChanged 22 | { 23 | add { if (_canExecute != null) CommandManager.RequerySuggested += value; } 24 | remove { if (_canExecute != null) CommandManager.RequerySuggested -= value; } 25 | } 26 | 27 | public bool CanExecute(object parameter) 28 | { 29 | return _canExecute == null || _canExecute((T)parameter); 30 | } 31 | 32 | public void Execute(object parameter) 33 | { 34 | _executeAction((T)parameter); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /SubtitleTools.Common/MVVM/Designer.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Diagnostics.CodeAnalysis; 3 | using System.Windows; 4 | 5 | namespace SubtitleTools.Common.MVVM 6 | { 7 | //from http://geekswithblogs.net/lbugnion/archive/2009/09/05/detecting-design-time-mode-in-wpf-and-silverlight.aspx 8 | public class Designer 9 | { 10 | private static bool? _isInDesignMode; 11 | 12 | /// 13 | /// Gets a value indicating whether the control is in design mode (running in Blend 14 | /// or Visual Studio). 15 | /// 16 | public static bool IsInDesignModeStatic 17 | { 18 | get 19 | { 20 | if (!_isInDesignMode.HasValue) 21 | { 22 | #if SILVERLIGHT 23 | _isInDesignMode = DesignerProperties.IsInDesignTool; 24 | #else 25 | var prop = DesignerProperties.IsInDesignModeProperty; 26 | _isInDesignMode = (bool)DependencyPropertyDescriptor 27 | .FromProperty(prop, typeof(FrameworkElement)) 28 | .Metadata.DefaultValue; 29 | #endif 30 | } 31 | return _isInDesignMode.Value; 32 | } 33 | } 34 | 35 | /// 36 | /// Gets a value indicating whether the control is in design mode (running under Blend 37 | /// or Visual Studio). 38 | /// 39 | [SuppressMessage( 40 | "Microsoft.Performance", 41 | "CA1822:MarkMembersAsStatic", 42 | Justification = "Non static member needed for data binding")] 43 | public bool IsInDesignMode 44 | { 45 | get 46 | { 47 | return IsInDesignModeStatic; 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /SubtitleTools.Common/MVVM/ViewModelBase.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | 3 | namespace SubtitleTools.Common.MVVM 4 | { 5 | public class ViewModelBase : INotifyPropertyChanged 6 | { 7 | public event PropertyChangedEventHandler PropertyChanged; 8 | protected void RaisePropertyChanged(string propertyName) 9 | { 10 | var handler = PropertyChanged; 11 | if (handler == null) return; 12 | handler(this, new PropertyChangedEventArgs(propertyName)); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Net/Downloader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Net; 4 | 5 | namespace SubtitleTools.Common.Net 6 | { 7 | public class Downloader 8 | { 9 | public static string FetchWebPage(string url) 10 | { 11 | var uri = new Uri(url); 12 | var request = WebRequest.Create(uri) as HttpWebRequest; 13 | if (request == null) return string.Empty; 14 | request.Method = WebRequestMethods.Http.Get; 15 | request.AllowAutoRedirect = true; 16 | request.Timeout = 1000 * 300; 17 | request.KeepAlive = false; 18 | request.ReadWriteTimeout = 1000 * 300; 19 | request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 20 | using (var response = request.GetResponse() as HttpWebResponse) 21 | { 22 | if (response != null) 23 | { 24 | using (var reader = new StreamReader(response.GetResponseStream())) 25 | { 26 | return reader.ReadToEnd(); 27 | } 28 | } 29 | } 30 | return string.Empty; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Net/PostXML.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Net; 3 | using System.Text; 4 | 5 | namespace SubtitleTools.Common.Net 6 | { 7 | public class PostXml 8 | { 9 | public static string PostData(string uri, string data, string contentType = "text/xml") 10 | { 11 | var webRequest = (HttpWebRequest)WebRequest.Create(uri); 12 | webRequest.ContentType = contentType; 13 | webRequest.Method = "POST"; 14 | webRequest.ServicePoint.Expect100Continue = false; 15 | 16 | var dataBytes = Encoding.UTF8.GetBytes(data); 17 | webRequest.ContentLength = dataBytes.Length; 18 | 19 | //Send it 20 | using (var requestStream = webRequest.GetRequestStream()) 21 | { 22 | requestStream.Write(dataBytes, 0, dataBytes.Length); 23 | } 24 | 25 | // get the response 26 | var webResponse = (HttpWebResponse)webRequest.GetResponse(); 27 | using (var sr = new StreamReader(webResponse.GetResponseStream())) 28 | { 29 | return sr.ReadToEnd().Trim(); 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using System.Windows; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SubtitleTools.Common")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SubtitleTools.Common")] 13 | [assembly: AssemblyCopyright("Copyright © 2010")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("aa58365e-608a-451c-9ef7-ea4ecfe7246b")] 24 | 25 | [assembly: ThemeInfo( 26 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 27 | //(used if a resource is not found in the page, 28 | // or application resource dictionaries) 29 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 30 | //(used if a resource is not found in the page, 31 | // app, or any theme specific resource dictionaries) 32 | )] 33 | 34 | 35 | // Version information for an assembly consists of the following four values: 36 | // 37 | // Major Version 38 | // Minor Version 39 | // Build Number 40 | // Revision 41 | // 42 | // You can specify all the values or you can default the Build and Revision Numbers 43 | // by using the '*' as shown below: 44 | // [assembly: AssemblyVersion("1.0.*")] 45 | [assembly: AssemblyVersion("2.6.0.0")] 46 | [assembly: AssemblyFileVersion("2.6.0.0")] 47 | -------------------------------------------------------------------------------- /SubtitleTools.Common/ResourceFiles/ResourceUtils.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Media.Imaging; 3 | using SubtitleTools.Common.Logger; 4 | 5 | namespace SubtitleTools.Common.ResourceFiles 6 | { 7 | public class ResourceUtils 8 | { 9 | public static BitmapImage GetImgFromResource(string app, string name) 10 | { 11 | try 12 | { 13 | var logo = new BitmapImage(); 14 | logo.BeginInit(); 15 | logo.UriSource = new Uri(string.Format("pack://application:,,,/{1};component/{0}", name, app)); 16 | logo.EndInit(); 17 | return logo; 18 | } 19 | catch (Exception ex) 20 | { 21 | ExceptionLogger.LogExceptionToFile(ex); 22 | return null; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Themes/Images/error-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Common/Themes/Images/error-info.png -------------------------------------------------------------------------------- /SubtitleTools.Common/Themes/Images/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Common/Themes/Images/error.png -------------------------------------------------------------------------------- /SubtitleTools.Common/Themes/Images/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Common/Themes/Images/warning.png -------------------------------------------------------------------------------- /SubtitleTools.Common/Threading/DispatcherHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Threading; 4 | 5 | namespace SubtitleTools.Common.Threading 6 | { 7 | public class DispatcherHelper 8 | { 9 | public static void DispatchAction(Action func) 10 | { 11 | Dispatcher dispatcher; 12 | if (Application.Current != null) 13 | { 14 | dispatcher = Application.Current.Dispatcher; 15 | } 16 | else 17 | { 18 | //this is useful for unit tests where there is no application running 19 | dispatcher = Dispatcher.CurrentDispatcher; 20 | } 21 | 22 | if (func == null || dispatcher == null) 23 | return; 24 | 25 | dispatcher.Invoke(DispatcherPriority.ApplicationIdle, func); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Toolkit/Imdb.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SubtitleTools.Common.Net; 3 | 4 | namespace SubtitleTools.Common.Toolkit 5 | { 6 | public class Imdb 7 | { 8 | public static long GetImdbId(string movieName) 9 | { 10 | string url = "http://www.google.com/search?q=site:imdb.com%20" + Uri.EscapeUriString(movieName); 11 | string html = Downloader.FetchWebPage(url); 12 | 13 | var match = new System.Text.RegularExpressions.Regex(@".*?").Match(html); 14 | if (match.Success) 15 | { 16 | var link = match.Groups[1].Value; 17 | match = new System.Text.RegularExpressions.Regex(@"http://www.imdb.com/title/(tt\d{7})/").Match(link); 18 | if (match.Success) 19 | { 20 | return long.Parse(match.Groups[1].Value.Replace("tt", string.Empty)); 21 | } 22 | } 23 | 24 | return 0; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Toolkit/Memory.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | 4 | namespace SubtitleTools.Common.Toolkit 5 | { 6 | public static class Memory 7 | { 8 | public static void ReEvaluatedWorkingSet() 9 | { 10 | try 11 | { 12 | Process loProcess = Process.GetCurrentProcess(); 13 | //it doesn't matter what you set maxWorkingSet to 14 | //setting it to any value apparently causes the working set to be re-evaluated and excess discarded 15 | loProcess.MaxWorkingSet = (IntPtr)((int)loProcess.MaxWorkingSet + 1); 16 | } 17 | catch 18 | { 19 | //The above code requires Admin privileges. 20 | //So it's important to trap exceptions in case you're running without admin rights. 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /SubtitleTools.Common/Toolkit/SafeClipboard.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.InteropServices; 2 | using System.Threading; 3 | using System.Windows; 4 | 5 | namespace SubtitleTools.Common.Toolkit 6 | { 7 | public static class SafeClipboard 8 | { 9 | public static void ClipboardSetText(this string text) 10 | { 11 | for (var i = 0; i < 15; i++) 12 | { 13 | try 14 | { 15 | Clipboard.SetText(text); 16 | break; 17 | } 18 | catch (COMException) 19 | { 20 | Thread.Sleep(10); 21 | } 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /SubtitleTools.Common/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/CalculateReadingTime.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SubtitleTools.Infrastructure.Models; 3 | 4 | namespace SubtitleTools.Infrastructure.Core 5 | { 6 | public static class CalculateReadingTime 7 | { 8 | public static TimeSpan MinReadTime(this string text, int wordsPerSecond = 3) 9 | { 10 | var wordsCount = text.WordsCount(); 11 | var seconds = wordsCount / wordsPerSecond; 12 | return TimeSpan.FromSeconds(seconds); 13 | } 14 | 15 | public static void FixMinReadTime(this SubtitleItem subtitleItem) 16 | { 17 | var totalSeconds = (subtitleItem.EndTs - subtitleItem.StartTs).TotalSeconds; 18 | var readTime = subtitleItem.Dialog.MinReadTime(); 19 | var minReadTime = readTime.TotalSeconds; 20 | 21 | if(totalSeconds< minReadTime) 22 | { 23 | subtitleItem.EndTs = subtitleItem.StartTs.Add(readTime); 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/CalculateWordsCount.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text.RegularExpressions; 3 | 4 | namespace SubtitleTools.Infrastructure.Core 5 | { 6 | public static class CalculateWordsCount 7 | { 8 | private static readonly Regex _matchAllTags = 9 | new Regex(@"<(.|\n)*?>", RegexOptions.IgnoreCase | RegexOptions.Compiled); 10 | 11 | public static int WordsCount(this string text) 12 | { 13 | if (string.IsNullOrWhiteSpace(text)) 14 | { 15 | return 0; 16 | } 17 | 18 | text = text.cleanTags().Trim(); 19 | text = text.Replace("\t", " "); 20 | text = text.Replace("\n", " "); 21 | text = text.Replace("\r", " "); 22 | 23 | var words = text.Split( 24 | new[] { ' ', ',', ';', '.', '!', '"', '(', ')', '?', ':', '\'', '«', '»', '+', '-' }, 25 | StringSplitOptions.RemoveEmptyEntries); 26 | return words.Length; 27 | } 28 | 29 | private static string cleanTags(this string data) 30 | { 31 | return data.Replace("\n", "\n ").removeHtmlTags(); 32 | } 33 | 34 | private static string removeHtmlTags(this string text) 35 | { 36 | return string.IsNullOrEmpty(text) ? 37 | string.Empty : 38 | _matchAllTags.Replace(text, " ").Replace(" ", " "); 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/DeleteRow.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using SubtitleTools.Infrastructure.Models; 3 | using System.Text; 4 | using DNTPersianUtils.Core; 5 | 6 | namespace SubtitleTools.Infrastructure.Core 7 | { 8 | public class DeleteRow 9 | { 10 | #region Methods (1) 11 | 12 | // Public Methods (1)  13 | 14 | public static void DeleteWholeRow(SubtitleItems data, SubtitleItem toDelete, string fileNameToSave) 15 | { 16 | if (data == null || toDelete == null || string.IsNullOrWhiteSpace(fileNameToSave)) 17 | { 18 | LogWindow.AddMessage(LogType.Alert, "Please select a line to delete it."); 19 | return; 20 | } 21 | 22 | var number = toDelete.Number; 23 | if (data.Remove(toDelete)) 24 | { 25 | //fix numbers 26 | for (var i = 0; i < data.Count; i++) 27 | { 28 | data[i].Number = i + 1; 29 | } 30 | 31 | //backup original file 32 | var backupFile = string.Format("{0}.original.bak", fileNameToSave); 33 | File.Copy(fileNameToSave, backupFile, overwrite: true); 34 | 35 | //write data 36 | File.WriteAllText(fileNameToSave, ParseSrt.SubitemsToString(data).ApplyCorrectYeKe(), Encoding.UTF8); 37 | 38 | LogWindow.AddMessage(LogType.Info, string.Format("Line {0} has been deleted.", number)); 39 | LogWindow.AddMessage(LogType.Info, string.Format("Backup file: {0}", backupFile)); 40 | } 41 | else 42 | { 43 | LogWindow.AddMessage(LogType.Alert, string.Format("Couldn't delete line {0}", number)); 44 | } 45 | } 46 | 47 | #endregion Methods 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/FixRle.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using DNTPersianUtils.Core; 4 | 5 | namespace SubtitleTools.Infrastructure.Core 6 | { 7 | /// 8 | /// RLE or U+202B is the RIGHT-TO-LEFT EMBEDDING character 9 | /// http://www.w3.org/International/questions/qa-bidi-controls 10 | /// 11 | public static class FixRle 12 | { 13 | /// 14 | /// Makes the text inside right-to-left by surrounding it with RLE 15 | /// 16 | /// Text to process 17 | /// Processed Text 18 | public static string ApplyRle(this string text) 19 | { 20 | var newContent = new StringBuilder(); 21 | const char RLEChar = (char)0x202B; 22 | 23 | var lines = text.Trim().Split('\n'); 24 | foreach (var line in lines) 25 | { 26 | if (line.ContainsFarsi()) 27 | { 28 | var farsiLine = line.Trim(); 29 | farsiLine = removeRLE(RLEChar, farsiLine); 30 | farsiLine = moveWrongPositionedSubtitleChars(farsiLine); 31 | newContent.AppendFormat("{0}{1}{2}", RLEChar, farsiLine.Trim(), Environment.NewLine); 32 | } 33 | else 34 | newContent.AppendFormat("{0}{1}", line.Trim(), Environment.NewLine); 35 | } 36 | 37 | return newContent.ToString().Trim(); 38 | } 39 | 40 | private static string removeRLE(char RLEChar, string farsiLine) 41 | { 42 | if (farsiLine[0] == RLEChar) 43 | farsiLine = farsiLine.Remove(0, 1); 44 | return farsiLine; 45 | } 46 | 47 | private static string moveWrongPositionedSubtitleChars(string farsiLine) 48 | { 49 | var badStartingChars = new[] { "!", "...", "....", ".", "-", "?", "?!", "،", "؛", "؟", "؟!" }; 50 | 51 | foreach (var badStartingChar in badStartingChars) 52 | { 53 | if (farsiLine.StartsWith(badStartingChar)) 54 | return string.Format("{0}{1}", farsiLine.Substring(badStartingChar.Length), badStartingChar); 55 | } 56 | 57 | return farsiLine; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/LogWindow.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SubtitleTools.Common.MVVM; 3 | using SubtitleTools.Infrastructure.Models; 4 | 5 | namespace SubtitleTools.Infrastructure.Core 6 | { 7 | public enum LogType 8 | { 9 | Alert, 10 | Error, 11 | Info, 12 | Announcement 13 | } 14 | 15 | public class LogWindow 16 | { 17 | public static void AddMessage(LogType type, string msg) 18 | { 19 | App.Messenger.NotifyColleagues("AddLog", 20 | new Log 21 | { 22 | Message = msg, 23 | Type = type.ToString(), 24 | Time = DateTime.Now 25 | } 26 | ); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/MixFiles.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Linq; 4 | using SubtitleTools.Infrastructure.Models; 5 | using System.Text; 6 | using DNTPersianUtils.Core; 7 | 8 | namespace SubtitleTools.Infrastructure.Core 9 | { 10 | public class MixFiles 11 | { 12 | public static void MixLists(SubtitleItems mainList, SubtitleItems secondList) 13 | { 14 | var mainListCount = mainList.Count; 15 | for (var i = 0; i < secondList.Count; i++) 16 | { 17 | if (i < mainListCount) 18 | { 19 | var secondItem = secondList.Where(s => s.Time == mainList[i].Time).FirstOrDefault(); 20 | if (secondItem != null) 21 | { 22 | mainList[i].Dialog = mainList[i].Dialog + Environment.NewLine + secondItem.Dialog; 23 | } 24 | } 25 | else 26 | break; 27 | } 28 | } 29 | 30 | public static void WriteMixedList(string mainFilePath, string fromFilepath) 31 | { 32 | LogWindow.AddMessage(LogType.Info, "WriteMixedList Start."); 33 | //backup original file 34 | var backupFile = string.Format("{0}.original.bak", mainFilePath); 35 | File.Copy(mainFilePath, backupFile, overwrite: true); 36 | LogWindow.AddMessage(LogType.Info, string.Format("Backup file: {0}", backupFile)); 37 | 38 | //read files 39 | var mainItems = new ParseSrt().ToObservableCollectionFromFile(mainFilePath); 40 | var fromItems = new ParseSrt().ToObservableCollectionFromFile(fromFilepath); 41 | 42 | //merge 43 | MixLists(mainItems, fromItems); 44 | //toString 45 | var content = ParseSrt.SubitemsToString(mainItems); 46 | //write to file 47 | File.WriteAllText(mainFilePath, content.ApplyCorrectYeKe(), Encoding.UTF8); 48 | LogWindow.AddMessage(LogType.Info, "WriteMixedList End."); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/CheckHashInfo.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | 3 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 4 | { 5 | [XmlRpcMissingMapping(MappingAction.Ignore)] 6 | public class MovieCheckHashResult 7 | { 8 | [XmlRpcMissingMapping(MappingAction.Ignore)] 9 | public double seconds { set; get; } 10 | 11 | [XmlRpcMissingMapping(MappingAction.Ignore)] 12 | public object data { set; get; } 13 | 14 | [XmlRpcMissingMapping(MappingAction.Ignore)] 15 | public string status { set; get; } 16 | } 17 | } -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/DownloadSubtitlesResult.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | 3 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 4 | { 5 | [XmlRpcMissingMapping(MappingAction.Ignore)] 6 | public class DownloadSubtitlesResult 7 | { 8 | [XmlRpcMissingMapping(MappingAction.Ignore)] 9 | public string status { get; set; } 10 | 11 | [XmlRpcMissingMapping(MappingAction.Ignore)] 12 | public SubtitlesData[] data { get; set; } 13 | 14 | [XmlRpcMissingMapping(MappingAction.Ignore)] 15 | public double seconds { get; set; } 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/IOpenSubtitlesDb.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | 3 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 4 | { 5 | public interface IOpenSubtitlesDb : IXmlRpcProxy 6 | { 7 | [XmlRpcMethod] 8 | LoginResult LogIn(string username, string password, string language, string useragent); 9 | 10 | [XmlRpcMethod] 11 | SubtitlesSearchResult SearchSubtitles(string token, SearchInfo[] parameters); 12 | 13 | [XmlRpcMethod] 14 | MovieCheckHashResult CheckMovieHash2(string token, string[] moviehash); 15 | 16 | [XmlRpcMethod] 17 | SubCheckHashResult CheckSubHash(string token, string[] subhash); 18 | 19 | [XmlRpcMethod] 20 | TryUploadResult TryUploadSubtitles(string token, TryUploadInfo[] parameters); 21 | 22 | [XmlRpcMethod] 23 | DownloadSubtitlesResult DownloadSubtitles(string token, string[] idSubtitleFile); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/LoginInfo.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | 3 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 4 | { 5 | [XmlRpcMissingMapping(MappingAction.Ignore)] 6 | public class LoginResult 7 | { 8 | [XmlRpcMissingMapping(MappingAction.Ignore)] 9 | public double seconds { set; get; } 10 | 11 | [XmlRpcMissingMapping(MappingAction.Ignore)] 12 | public string token { set; get; } 13 | 14 | [XmlRpcMissingMapping(MappingAction.Ignore)] 15 | public string status { set; get; } 16 | } 17 | } -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/SearchInfo.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 3 | { 4 | [XmlRpcMissingMapping(MappingAction.Ignore)] 5 | public class SearchInfo 6 | { 7 | [XmlRpcMissingMapping(MappingAction.Ignore)] 8 | public string sublanguageid { set; get; } 9 | 10 | [XmlRpcMissingMapping(MappingAction.Ignore)] 11 | public string moviehash { set; get; } 12 | 13 | [XmlRpcMissingMapping(MappingAction.Ignore)] 14 | public double moviebytesize { set; get; } 15 | } 16 | } -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/SubCheckHashResult.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | 3 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 4 | { 5 | [XmlRpcMissingMapping(MappingAction.Ignore)] 6 | public class SubCheckHashResult 7 | { 8 | [XmlRpcMissingMapping(MappingAction.Ignore)] 9 | public double seconds { set; get; } 10 | 11 | [XmlRpcMissingMapping(MappingAction.Ignore)] 12 | public XmlRpcStruct data { set; get; } 13 | 14 | [XmlRpcMissingMapping(MappingAction.Ignore)] 15 | public string status { set; get; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/SubtitleInfo.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | 3 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 4 | { 5 | [XmlRpcMissingMapping(MappingAction.Ignore)] 6 | public class SubtitlesSearchResult 7 | { 8 | [XmlRpcMissingMapping(MappingAction.Ignore)] 9 | public double seconds { set; get; } 10 | 11 | [XmlRpcMissingMapping(MappingAction.Ignore)] 12 | public SubtitleDataInfo[] data { set; get; } 13 | 14 | [XmlRpcMissingMapping(MappingAction.Ignore)] 15 | public string status { set; get; } 16 | } 17 | } -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/SubtitlesData.cs: -------------------------------------------------------------------------------- 1 |  2 | using CookComputing.XmlRpc; 3 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 4 | { 5 | [XmlRpcMissingMapping(MappingAction.Ignore)] 6 | public class SubtitlesData 7 | { 8 | [XmlRpcMissingMapping(MappingAction.Ignore)] 9 | public string idsubtitlefile { set; get; } 10 | 11 | [XmlRpcMissingMapping(MappingAction.Ignore)] 12 | public string data { set; get; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/TryUploadInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 3 | { 4 | public class TryUploadInfo 5 | { 6 | public string subhash { get; set; } 7 | public string subfilename { get; set; } 8 | public string moviehash { get; set; } 9 | public double moviebytesize { get; set; } 10 | public string moviefilename { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/TryUploadResult.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | 3 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 4 | { 5 | [XmlRpcMissingMapping(MappingAction.Ignore)] 6 | public class TryUploadResult 7 | { 8 | [XmlRpcMissingMapping(MappingAction.Ignore)] 9 | public string status { get; set; } 10 | 11 | [XmlRpcMissingMapping(MappingAction.Ignore)] 12 | public int alreadyindb { get; set; } 13 | 14 | [XmlRpcMissingMapping(MappingAction.Ignore)] 15 | public XmlRpcStruct[] data { get; set; } 16 | 17 | [XmlRpcMissingMapping(MappingAction.Ignore)] 18 | public double seconds { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/UA.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 3 | { 4 | public class UA 5 | { 6 | public static readonly string TestUA = "OS Test User Agent"; 7 | //This is my registered UA, more info: http://trac.opensubtitles.org/projects/opensubtitles/wiki/DevReadFirst 8 | public static readonly string MyUA = "SubtitleTools v2.0"; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/UploadBaseinfo.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 3 | { 4 | public class UploadBaseinfo 5 | { 6 | public string idmovieimdb { set; get; } 7 | public string sublanguageid { set; get; } 8 | public string moviereleasename { set; get; } 9 | public string movieaka { set; get; } 10 | public string subauthorcomment { set; get; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/UploadCDsInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 3 | { 4 | public class UploadCDsInfo 5 | { 6 | public string subhash { set; get; } 7 | public string subfilename { set; get; } 8 | public string moviehash { set; get; } 9 | public string moviebytesize { set; get; } 10 | public string moviefps { set; get; } 11 | public string movietimems { set; get; } 12 | public string movieframes { set; get; } 13 | public string moviefilename { set; get; } 14 | public string subcontent { set; get; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/OpenSubtitlesOrg/API/UploadResult.cs: -------------------------------------------------------------------------------- 1 | using CookComputing.XmlRpc; 2 | 3 | namespace SubtitleTools.Infrastructure.Core.OpenSubtitlesOrg.API 4 | { 5 | [XmlRpcMissingMapping(MappingAction.Ignore)] 6 | public class UploadResult 7 | { 8 | [XmlRpcMissingMapping(MappingAction.Ignore)] 9 | public double seconds { set; get; } 10 | 11 | [XmlRpcMissingMapping(MappingAction.Ignore)] 12 | public string data { set; get; } 13 | 14 | [XmlRpcMissingMapping(MappingAction.Ignore)] 15 | public string status { set; get; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Core/UnicodeRle.cs: -------------------------------------------------------------------------------- 1 | using DNTPersianUtils.Core; 2 | using DNTPersianUtils.Core.Normalizer; 3 | 4 | namespace SubtitleTools.Infrastructure.Core 5 | { 6 | public static class UnicodeRle 7 | { 8 | public static string InsertRle(this string text) 9 | { 10 | if (string.IsNullOrEmpty(text)) 11 | return string.Empty; 12 | 13 | if (!text.ContainsFarsi()) 14 | return text; 15 | 16 | return text.ApplyRle() 17 | .ApplyCorrectYeKe() 18 | .ApplyHalfSpaceRule() 19 | .NormalizeZwnj() 20 | .NormalizeDashes() 21 | .NormalizeDotsToEllipsis() 22 | .NormalizeEnglishQuotes() 23 | .NormalizeExtraMarks() 24 | .NormalizeAllKashida() 25 | .NormalizeSpacingAndLineBreaks() 26 | .NormalizeOutsideInsideSpacing(); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Models/AudioFormat.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Common.MVVM; 2 | 3 | namespace SubtitleTools.Infrastructure.Models 4 | { 5 | public class AudioFormat : ViewModelBase 6 | { 7 | #region Fields (5) 8 | 9 | int _bitsPerSample; 10 | int _blockAlign; 11 | int _channelCount; 12 | string _encodingformat; 13 | int _samplesPerSecond; 14 | 15 | #endregion Fields 16 | 17 | #region Properties (5) 18 | 19 | public int BitsPerSample 20 | { 21 | get { return _bitsPerSample; } 22 | set 23 | { 24 | _bitsPerSample = value; 25 | RaisePropertyChanged("BitsPerSample"); 26 | } 27 | } 28 | 29 | public int BlockAlign 30 | { 31 | get { return _blockAlign; } 32 | set 33 | { 34 | _blockAlign = value; 35 | RaisePropertyChanged("BlockAlign"); 36 | } 37 | } 38 | 39 | public int ChannelCount 40 | { 41 | get { return _channelCount; } 42 | set 43 | { 44 | _channelCount = value; 45 | RaisePropertyChanged("ChannelCount"); 46 | } 47 | } 48 | 49 | public string Encodingformat 50 | { 51 | get { return _encodingformat; } 52 | set 53 | { 54 | _encodingformat = value; 55 | RaisePropertyChanged("Encodingformat"); 56 | } 57 | } 58 | 59 | public int SamplesPerSecond 60 | { 61 | get { return _samplesPerSecond; } 62 | set 63 | { 64 | _samplesPerSecond = value; 65 | RaisePropertyChanged("SamplesPerSecond"); 66 | } 67 | } 68 | 69 | #endregion Properties 70 | } 71 | } -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Models/AudioFormats.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Common.Collections; 2 | 3 | namespace SubtitleTools.Infrastructure.Models 4 | { 5 | public class AudioFormats : MtObservableCollection 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Models/JoinTwoFilesGui.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Common.MVVM; 2 | 3 | namespace SubtitleTools.Infrastructure.Models 4 | { 5 | public class JoinTwoFilesGui : ViewModelBase 6 | { 7 | #region Fields (5) 8 | 9 | int _hour; 10 | int _milliseconds; 11 | int _minutes; 12 | int _seconds; 13 | string _subtitlePath; 14 | 15 | #endregion Fields 16 | 17 | #region Properties (5) 18 | 19 | public int Hour 20 | { 21 | set 22 | { 23 | if (_hour == value) return; 24 | _hour = value; 25 | RaisePropertyChanged("Hour"); 26 | } 27 | get 28 | { 29 | return _hour; 30 | } 31 | } 32 | 33 | public int Milliseconds 34 | { 35 | set 36 | { 37 | if (_milliseconds == value) return; 38 | _milliseconds = value; 39 | RaisePropertyChanged("Milliseconds"); 40 | } 41 | get 42 | { 43 | return _milliseconds; 44 | } 45 | } 46 | 47 | public int Minutes 48 | { 49 | set 50 | { 51 | if (_minutes == value) return; 52 | _minutes = value; 53 | RaisePropertyChanged("Minutes"); 54 | } 55 | get 56 | { 57 | return _minutes; 58 | } 59 | } 60 | 61 | public int Seconds 62 | { 63 | set 64 | { 65 | if (_seconds == value) return; 66 | _seconds = value; 67 | RaisePropertyChanged("Seconds"); 68 | } 69 | get 70 | { 71 | return _seconds; 72 | } 73 | } 74 | 75 | public string SubtitlePath 76 | { 77 | get { return _subtitlePath; } 78 | set 79 | { 80 | if (_subtitlePath == value) return; 81 | _subtitlePath = value; 82 | RaisePropertyChanged("SubtitlePath"); 83 | } 84 | } 85 | 86 | #endregion Properties 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Models/Log.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace SubtitleTools.Infrastructure.Models 4 | { 5 | public class Log 6 | { 7 | public string Type { set; get; } 8 | public DateTime Time { set; get; } 9 | public string Message { set; get; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Models/Logs.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Common.Collections; 2 | 3 | namespace SubtitleTools.Infrastructure.Models 4 | { 5 | public class Logs: MtObservableCollection 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Models/OsdbItems.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Common.Collections; 2 | 3 | namespace SubtitleTools.Infrastructure.Models 4 | { 5 | public class OsdbItems : MtObservableCollection 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Models/SpeechRecognitionEngine.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Common.MVVM; 2 | 3 | namespace SubtitleTools.Infrastructure.Models 4 | { 5 | public class SpeechRecognitionEngine : ViewModelBase 6 | { 7 | string _name; 8 | public string Name 9 | { 10 | get { return _name; } 11 | set 12 | { 13 | _name = value; 14 | RaisePropertyChanged("Name"); 15 | } 16 | } 17 | 18 | string _id; 19 | public string Id 20 | { 21 | get { return _id; } 22 | set 23 | { 24 | _id = value; 25 | RaisePropertyChanged("Id"); 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Models/SpeechRecognitionEngines.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Common.Collections; 2 | 3 | namespace SubtitleTools.Infrastructure.Models 4 | { 5 | public class SpeechRecognitionEngines : MtObservableCollection 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Models/SubtitleItems.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Common.Collections; 2 | 3 | namespace SubtitleTools.Infrastructure.Models 4 | { 5 | public class SubtitleItems : MtObservableCollection 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Models/TranslatorModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using SubtitleTools.Common.ISO639; 4 | using SubtitleTools.Common.MVVM; 5 | 6 | namespace SubtitleTools.Infrastructure.Models 7 | { 8 | public class TranslatorModel : ViewModelBase 9 | { 10 | private Language _fromLanguage; 11 | private Language _toLanguage; 12 | 13 | public Language FromLanguage 14 | { 15 | get { return _fromLanguage; } 16 | set 17 | { 18 | if (_fromLanguage == value) return; 19 | _fromLanguage = value; 20 | RaisePropertyChanged("FromLanguage"); 21 | } 22 | } 23 | 24 | public Language ToLanguage 25 | { 26 | get { return _toLanguage; } 27 | set 28 | { 29 | if (_toLanguage == value) return; 30 | _toLanguage = value; 31 | RaisePropertyChanged("ToLanguage"); 32 | } 33 | } 34 | 35 | public IList SubLanguages 36 | { 37 | get 38 | { 39 | var lc = new LanguagesCodes(); 40 | return lc.OrderBy(o => o.LanguageName).Skip(1).ToList(); 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("SubtitleTools.Infrastructure")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("SubtitleTools.Infrastructure")] 12 | [assembly: AssemblyCopyright("Copyright © 2010")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("46da44f4-05b1-4158-9693-ae07a3b8eeed")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the values or you can default the Build and Revision Numbers 32 | // by using the '*' as shown below: 33 | // [assembly: AssemblyVersion("1.0.*")] 34 | [assembly: AssemblyVersion("2.6.0.0")] 35 | [assembly: AssemblyFileVersion("2.6.0.0")] 36 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/ViewModels/SyncViewModel.cs: -------------------------------------------------------------------------------- 1 | using SubtitleTools.Infrastructure.Core; 2 | using SubtitleTools.Common.MVVM; 3 | using SubtitleTools.Infrastructure.Models; 4 | 5 | namespace SubtitleTools.Infrastructure.ViewModels 6 | { 7 | public class SyncViewModel 8 | { 9 | #region Constructors (1) 10 | 11 | public SyncViewModel() 12 | { 13 | SyncModelData = new SyncModel(); 14 | setupCommands(); 15 | } 16 | 17 | #endregion Constructors 18 | 19 | #region Properties (3) 20 | 21 | public DelegateCommand DoCloseSyncView { set; get; } 22 | 23 | public DelegateCommand DoSync { set; get; } 24 | 25 | public SyncModel SyncModelData { set; get; } 26 | 27 | #endregion Properties 28 | 29 | #region Methods (5) 30 | 31 | // Private Methods (5)  32 | 33 | bool canDoCloseSyncView(string data) 34 | { 35 | return true; 36 | } 37 | 38 | static bool canDoSync(string filePatha) 39 | { 40 | return true; 41 | } 42 | 43 | void doCloseSyncView(string data) 44 | { 45 | App.Messenger.NotifyColleagues("doCloseSyncView"); 46 | } 47 | 48 | void doSync(string filePath) 49 | { 50 | if (string.IsNullOrEmpty(filePath)) return; 51 | 52 | if (SyncModelData.AddIndex == -1) 53 | { 54 | LogWindow.AddMessage(LogType.Alert, "Please select the appropriate shift direction."); 55 | return; 56 | } 57 | 58 | Sync.ShiftFileTimeLines( 59 | filePath, 60 | SyncModelData.Hour, 61 | SyncModelData.Minutes, 62 | SyncModelData.Seconds, 63 | SyncModelData.Milliseconds, 64 | SyncModelData.AddIndex == 0 ? true : false); 65 | 66 | App.Messenger.NotifyColleagues("reBind"); 67 | } 68 | 69 | private void setupCommands() 70 | { 71 | DoSync = new DelegateCommand(doSync, canDoSync); 72 | DoCloseSyncView = new DelegateCommand(doCloseSyncView, canDoCloseSyncView); 73 | } 74 | 75 | #endregion Methods 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /SubtitleTools.Infrastructure/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/About.xaml.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Shell 3 | { 4 | public partial class About 5 | { 6 | public About() 7 | { 8 | InitializeComponent(); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/DetectEncodingView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using SubtitleTools.Infrastructure.ViewModels; 3 | 4 | namespace SubtitleTools.Shell 5 | { 6 | public partial class DetectEncodingView 7 | { 8 | DetectEncodingViewModel _vm; 9 | public DetectEncodingView() 10 | { 11 | InitializeComponent(); 12 | _vm = new DetectEncodingViewModel(); 13 | LayoutRoot.DataContext = _vm; 14 | } 15 | 16 | public static readonly DependencyProperty FilePathProperty = 17 | DependencyProperty.Register( 18 | "FilePath", typeof(string), 19 | typeof(DetectEncodingView), 20 | new PropertyMetadata(string.Empty, onFilePathPropertyChanged)); 21 | 22 | public string FilePath 23 | { 24 | get { return (string)GetValue(FilePathProperty); } 25 | set { SetValue(FilePathProperty, value); } 26 | } 27 | 28 | private static void onFilePathPropertyChanged(DependencyObject d, 29 | DependencyPropertyChangedEventArgs e) 30 | { 31 | if (e.NewValue != null) 32 | { 33 | var detectEncodingView = d as DetectEncodingView; 34 | if (detectEncodingView != null) 35 | detectEncodingView.listeningToDependencyPropertyChanges(e.NewValue.ToString()); 36 | } 37 | } 38 | 39 | void listeningToDependencyPropertyChanges(string path) 40 | { 41 | _vm.FilePath = path; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/DownloadOpenSubtitles.xaml.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Shell 3 | { 4 | public partial class DownloadOpenSubtitles 5 | { 6 | public DownloadOpenSubtitles() 7 | { 8 | InitializeComponent(); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ad.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ae.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/af.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/af.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ag.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ai.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/al.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/al.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/am.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/am.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/an.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/an.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ao.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ar.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/as.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/at.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/at.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/au.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/au.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/aw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/aw.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ax.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/az.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/az.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ba.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bb.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bd.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/be.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/be.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bf.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bg.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bh.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bi.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bj.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bn.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bo.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/br.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bs.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bt.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bv.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bw.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/by.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/by.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/bz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/bz.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ca.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/catalonia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/catalonia.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cc.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cd.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cf.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cg.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ch.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ci.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ci.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ck.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cl.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cn.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/co.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/co.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cr.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cs.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cu.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cv.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cx.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cy.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/cz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/cz.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/de.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/dj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/dj.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/dk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/dk.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/dm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/dm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/do.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/do.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/dz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/dz.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ec.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ee.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/eg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/eg.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/eh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/eh.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/england.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/england.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/er.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/er.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/es.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/et.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/et.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/europeanunion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/europeanunion.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/fam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/fam.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/fi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/fi.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/fj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/fj.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/fk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/fk.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/fm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/fm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/fo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/fo.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/fr.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ga.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gb.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gd.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ge.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gf.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gh.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gi.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gl.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gn.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gp.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gq.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gr.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gs.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gt.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gu.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gw.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/gy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/gy.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/hk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/hk.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/hm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/hm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/hn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/hn.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/hr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/hr.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ht.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/hu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/hu.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/id.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ie.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/il.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/il.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/in.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/io.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/io.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/iq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/iq.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ir.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/is.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/is.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/it.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/jm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/jm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/jo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/jo.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/jp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/jp.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ke.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/kg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/kg.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/kh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/kh.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ki.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/km.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/km.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/kn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/kn.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/kp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/kp.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/kr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/kr.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/kw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/kw.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ky.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/kz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/kz.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/la.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/la.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/lb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/lb.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/lc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/lc.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/li.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/li.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/lk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/lk.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/lr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/lr.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ls.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/lt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/lt.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/lu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/lu.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/lv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/lv.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ly.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ma.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mc.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/md.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/md.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/me.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/me.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mg.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mh.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mk.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ml.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mn.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mo.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mp.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mq.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mr.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ms.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mt.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mu.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mv.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mw.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mx.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/my.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/mz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/mz.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/na.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/na.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/nc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/nc.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ne.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/nf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/nf.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ng.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ni.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/nl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/nl.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/no.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/np.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/np.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/nr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/nr.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/nu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/nu.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/null.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/null.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/nz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/nz.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/om.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/om.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/pa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/pa.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/pe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/pe.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/pf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/pf.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/pg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/pg.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ph.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/pk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/pk.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/pl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/pl.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/pm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/pm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/pn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/pn.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/pr.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ps.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/pt.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/pw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/pw.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/py.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/py.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/qa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/qa.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/re.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/re.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ro.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/rs.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ru.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/rw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/rw.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sa.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sb.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sc.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/scotland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/scotland.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sd.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/se.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sg.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sh.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/si.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/si.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sj.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sk.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sl.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sn.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/so.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/so.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sr.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/st.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/st.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sv.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sy.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/sz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/sz.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tc.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/td.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/td.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tf.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tg.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/th.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/th.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tj.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tk.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tl.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tn.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/to.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tr.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tt.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tv.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tw.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/tz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/tz.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ua.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ug.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/um.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/um.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/us.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/uy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/uy.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/uz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/uz.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/va.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/va.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/vc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/vc.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ve.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/vg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/vg.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/vi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/vi.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/vn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/vn.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/vu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/vu.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/wales.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/wales.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/wf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/wf.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ws.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/ye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/ye.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/yt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/yt.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/za.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/za.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/zm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/zm.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Flags/zw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Flags/zw.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/CopyHS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/CopyHS.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/alert.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/books.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/books.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/box_download_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/box_download_48.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/calculator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/calculator.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/clipping_sound.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/clipping_sound.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/close.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/configure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/configure.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/copy.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/debug-pause-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/debug-pause-icon.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/debug-run-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/debug-run-icon.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/debug-step-into-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/debug-step-into-icon.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/debug-stop-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/debug-stop-icon.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/delete.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/delete16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/delete16.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/download.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/error.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/event16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/event16.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/film_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/film_link.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/format.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/format.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/format_text_direction_rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/format_text_direction_rtl.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/info.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/join.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/join.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/merge.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/movies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/movies.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/note_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/note_add.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/open.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/osdb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/osdb.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/refresh.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/save.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/search.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/speech_recognition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/speech_recognition.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/sync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/sync.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/toolbar_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/toolbar_find.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/translate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/translate.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/upload.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/Images/voice_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools.Shell/Images/voice_chat.png -------------------------------------------------------------------------------- /SubtitleTools.Shell/JoinTwoFiles.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace SubtitleTools.Shell 4 | { 5 | public partial class JoinTwoFiles 6 | { 7 | public JoinTwoFiles() 8 | { 9 | InitializeComponent(); 10 | } 11 | 12 | public static readonly DependencyProperty FirstFilePathProperty = 13 | DependencyProperty.Register( 14 | "FirstFilePath", typeof(string), 15 | typeof(JoinTwoFiles), 16 | new PropertyMetadata(string.Empty)); 17 | 18 | public string FirstFilePath 19 | { 20 | get { return (string)GetValue(FirstFilePathProperty); } 21 | set { SetValue(FirstFilePathProperty, value); } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/Logs.xaml.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Shell 3 | { 4 | public partial class Logs 5 | { 6 | public Logs() 7 | { 8 | InitializeComponent(); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/MainShell.xaml.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Shell 3 | { 4 | public partial class MainShell 5 | { 6 | public MainShell() 7 | { 8 | InitializeComponent(); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/Preview.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | 4 | namespace SubtitleTools.Shell 5 | { 6 | public partial class Preview 7 | { 8 | public Preview() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | public static readonly DependencyProperty FilePathProperty = 14 | DependencyProperty.Register( 15 | "FilePath", typeof(Uri), 16 | typeof(Preview), 17 | new PropertyMetadata(null)); 18 | 19 | public Uri FilePath 20 | { 21 | get { return (Uri)GetValue(FilePathProperty); } 22 | set { SetValue(FilePathProperty, value); } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.1 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SubtitleTools.Shell.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/SpeechRecognition.xaml.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Shell 3 | { 4 | public partial class SpeechRecognition 5 | { 6 | public SpeechRecognition() 7 | { 8 | InitializeComponent(); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /SubtitleTools.Shell/SubtitleView.xaml.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Shell 3 | { 4 | public partial class SubtitleView 5 | { 6 | public SubtitleView() 7 | { 8 | InitializeComponent(); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/SyncView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace SubtitleTools.Shell 4 | { 5 | public partial class SyncView 6 | { 7 | public SyncView() 8 | { 9 | InitializeComponent(); 10 | } 11 | 12 | public static readonly DependencyProperty FilePathProperty = 13 | DependencyProperty.Register( 14 | "FilePath", typeof(string), 15 | typeof(SyncView), 16 | new PropertyMetadata(string.Empty)); 17 | 18 | public string FilePath 19 | { 20 | get { return (string)GetValue(FilePathProperty); } 21 | set { SetValue(FilePathProperty, value); } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/Toolbar.xaml.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Shell 3 | { 4 | public partial class Toolbar 5 | { 6 | public Toolbar() 7 | { 8 | InitializeComponent(); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/TranslatorView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace SubtitleTools.Shell 4 | { 5 | public partial class TranslatorView 6 | { 7 | public TranslatorView() 8 | { 9 | InitializeComponent(); 10 | } 11 | 12 | public static readonly DependencyProperty FilePathProperty = 13 | DependencyProperty.Register( 14 | "FilePath", typeof(string), 15 | typeof(TranslatorView), 16 | new PropertyMetadata(string.Empty)); 17 | 18 | public string FilePath 19 | { 20 | get { return (string)GetValue(FilePathProperty); } 21 | set { SetValue(FilePathProperty, value); } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /SubtitleTools.Shell/UploadOpenSubtitles.xaml.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools.Shell 3 | { 4 | public partial class UploadOpenSubtitles 5 | { 6 | public UploadOpenSubtitles() 7 | { 8 | InitializeComponent(); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /SubtitleTools.Shell/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /SubtitleTools.Tests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("SubtitleTools.Tests")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("SubtitleTools.Tests")] 12 | [assembly: AssemblyCopyright("Copyright © 2010")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("c3840b15-5ef2-45f5-b3c3-dbd78813b9c7")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the values or you can default the Build and Revision Numbers 32 | // by using the '*' as shown below: 33 | // [assembly: AssemblyVersion("1.0.*")] 34 | [assembly: AssemblyVersion("2.6.0.0")] 35 | [assembly: AssemblyFileVersion("2.6.0.0")] 36 | -------------------------------------------------------------------------------- /SubtitleTools.Tests/TestPrj.nunit: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /SubtitleTools.Tests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /SubtitleTools/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SubtitleTools/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /SubtitleTools/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace SubtitleTools 3 | { 4 | public partial class MainWindow 5 | { 6 | public MainWindow() 7 | { 8 | InitializeComponent(); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /SubtitleTools/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.1 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SubtitleTools.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SubtitleTools/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /SubtitleTools/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /SubtitleTools/movies.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VahidN/SubtitleTools/b35b5affd926124db8d9ed1cfe9c1a56332c3fd6/SubtitleTools/movies.ico -------------------------------------------------------------------------------- /SubtitleTools/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | --------------------------------------------------------------------------------