├── .gitignore
├── AboutFormUnit.dfm
├── AboutFormUnit.pas
├── BgThreadTaskUnit.pas
├── Copying.txt
├── CursorManager.pas
├── DelayFormUnit.dfm
├── DelayFormUnit.pas
├── DetachedVideoFormUnit.dfm
├── DetachedVideoFormUnit.pas
├── Diff.pas
├── DiffSubsFormUnit.dfm
├── DiffSubsFormUnit.pas
├── DirectVobsubInterface.pas
├── DynamicPageProcessorUnit.pas
├── ErrorReportFormUnit.dfm
├── ErrorReportFormUnit.pas
├── FLVFile.pas
├── FileReaderUnit.pas
├── FindFormUnit.dfm
├── FindFormUnit.pas
├── Global.inc
├── GlobalUnit.pas
├── GotoFormUnit.dfm
├── GotoFormUnit.pas
├── HashUnit.pas
├── JavaScriptPluginUnit.pas
├── LavAudioSettingsInterface.pas
├── LavSplitterSettingsInterface.pas
├── LavVideoSettingsInterface.pas
├── LibHunspellUnit.pas
├── LogWindowFormUnit.dfm
├── LogWindowFormUnit.pas
├── LogWriterIntf.pas
├── MP4File.pas
├── MRUListUnit.pas
├── MatroskaHelper.pas
├── MediaInfoDLL.pas
├── MediaInfoLib
├── Project
│ └── Delphi
│ │ ├── Example
│ │ ├── HowToUse_Dll.bdsproj
│ │ ├── HowToUse_Dll.dof
│ │ ├── HowToUse_Dll.dpr
│ │ ├── HowToUse_Dll.exe
│ │ ├── HowToUse_Dll.res
│ │ ├── HowToUse_Dll_.dfm
│ │ ├── HowToUse_Dll_.pas
│ │ └── MediaInfo.dll
│ │ └── MediaInfoLib_Delphi.bdsgroup
└── Source
│ └── MediaInfoDLL
│ └── MediaInfoDLL.pas
├── MiniScrollBarUnit.pas
├── MiscToolsUnit.pas
├── PageProcessorUnit.pas
├── PeakCreationProgressFormUnit.dfm
├── PeakCreationProgressFormUnit.pas
├── PopupTrackbarUnit.pas
├── PreferencesFormUnit.dfm
├── PreferencesFormUnit.pas
├── ProjectUnit.dfm
├── ProjectUnit.pas
├── README.md
├── Readme_Sources.txt
├── Renderer.pas
├── Resources
├── CheckError.bmp
├── Close.bmp
├── Delay.bmp
├── Doc.ico
├── Doc16.png
├── Doc16.psd
├── Doc16_b.png
├── Doc32.png
├── Doc32.psd
├── Doc32_b.png
├── Doc48.png
├── Doc48.psd
├── Doc48_b.png
├── Doc_b.ico
├── EmptyDoc.ico
├── EmptyDoc16.png
├── EmptyDoc32.png
├── EmptyDoc48.png
├── EmptyDocFull.ico
├── ErrorChecking.bmp
├── Exit.bmp
├── Find.bmp
├── FindNext.bmp
├── Goto.bmp
├── Help.bmp
├── IDEA.BMP
├── InsertTextFile.bmp
├── Loop.bmp
├── LoopEnd.bmp
├── LoopStart.bmp
├── Move All Left1.bmp
├── Move All Right1.bmp
├── Move Left.bmp
├── Move Right.bmp
├── New.bmp
├── Next.bmp
├── Open.bmp
├── Pause.bmp
├── Play.bmp
├── PlayEnd.bmp
├── PlayStart.bmp
├── PlayToEnd.bmp
├── Preferences.bmp
├── Previous.bmp
├── ProjectProp.bmp
├── RT-DelPoS.bmp
├── RT-Reset.bmp
├── RT-SetPoS.bmp
├── Redo.bmp
├── Report.bmp
├── Save.bmp
├── SaveAll.bmp
├── SaveAs.bmp
├── SceneChange.psd
├── ShowCursorFrame.bmp
├── ShowStartFrame.bmp
├── ShowStopFrame.bmp
├── ShowVideo.bmp
├── Slack.bmp
├── Stop.bmp
├── Thumbs.db
├── Undo.bmp
├── VSS-Subtitle.ico
├── VSS.ico
├── Web.bmp
├── ZoomAll.bmp
├── ZoomAll2.bmp
├── ZoomIn.bmp
├── ZoomIn2.bmp
├── ZoomOut.bmp
├── ZoomOut2.bmp
├── ZoomSel.bmp
├── ZoomSel2.bmp
├── ZoomVertical.bmp
├── ZoomVertical2.bmp
├── ZoomVertical2_b.bmp
├── _CompileRes.bat
├── bold.bmp
├── bookmark-new.bmp
├── color.bmp
├── dictionary.bmp
├── favicon.ico
├── format-indent-less.bmp
├── format-indent-more.bmp
├── gears_settings_utilities_execute-16.bmp
├── githhub.ico
├── go-first.bmp
├── go-last.bmp
├── help-browser.bmp
├── help
│ ├── Mouse.psd
│ ├── MouseMini.psd
│ ├── SSDetailsPage.psd
│ ├── SSExtractWAV.psd
│ ├── SSHomePage.psd
│ ├── SSMainDialog.psd
│ ├── SSMainDialog2.psd
│ └── SSNewProject.psd
├── ico16.png
├── ico16.psd
├── ico24.psd
├── ico32.psd
├── ico64.png
├── ico64.psd
├── icons.png
├── italic.bmp
├── itasa.bmp
├── mkv.bmp
├── mkv.ico
├── noicon.bmp
├── resources.RES
├── resources.rc
├── size.bmp
├── tab-new.bmp
├── thesaurus.bmp
├── underline.bmp
└── vss.png
├── ResynchToolFormUnit.dfm
├── ResynchToolFormUnit.pas
├── SRTParserUnit.pas
├── SSAParserUnit.pas
├── SceneChangeUnit.pas
├── ServerUnit.pas
├── SilentZoneFormUnit.dfm
├── SilentZoneFormUnit.pas
├── SourceFileOperationCancel.dfm
├── SourceFileOperationCancel.pas
├── SpellCheckFormUnit.dfm
├── SpellCheckFormUnit.pas
├── StyleFormUnit.dfm
├── StyleFormUnit.pas
├── SubStructUnit.pas
├── SubtitleModel.pas
├── SubtitleTimingFormUnit.dfm
├── SubtitleTimingFormUnit.pas
├── SuggestionFormUnit.dfm
├── SuggestionFormUnit.pas
├── ThirdParty
├── DSiWin32.pas
├── DeCAL
│ ├── DeCAL.pas
│ └── mwFixedRecSort.pas
├── DirectX-2012
│ ├── D3DX8.pas
│ ├── D3DX9.pas
│ ├── DX7toDX8.pas
│ ├── DXErr9.pas
│ ├── DXFile.pas
│ ├── DXTypes.pas
│ ├── Direct3D.pas
│ ├── Direct3D8.pas
│ ├── Direct3D9.pas
│ ├── DirectDraw.pas
│ ├── DirectInput.pas
│ ├── DirectMusic.pas
│ ├── DirectPlay8.pas
│ ├── DirectSetup.pas
│ ├── DirectShow9.pas
│ ├── DirectSound.pas
│ ├── DirectX.inc
│ ├── DxDiag.pas
│ ├── Jedi.inc
│ ├── X3DAudio.pas
│ ├── XInput.pas
│ ├── dxerr8.pas
│ └── xact.pas
├── EZCrypt.pas
├── FastMM
│ ├── FastMM4.pas
│ ├── FastMM4Messages.pas
│ ├── FastMM4Options.inc
│ ├── FastMMUsageTracker.dfm
│ └── FastMMUsageTracker.pas
├── FastcodePatch.pas
├── KAZip
│ ├── KAZip.dcr
│ ├── KAZip.pas
│ ├── KAZipListView.pas
│ ├── KAZipListViewRC.RES
│ ├── KAZipListViewRC.rc
│ └── KAZipTreeView.pas
├── MD5.pas
├── RGBHSLColorUnit.pas
├── RegExpr.pas
├── RtlVclOptimize.pas
├── SevenZipVCL.pas
├── Synapse
│ ├── blcksock.pas
│ ├── httpsend.pas
│ ├── sswin32.inc
│ ├── synachar.pas
│ ├── synacode.pas
│ ├── synafpc.pas
│ ├── synaicnv.pas
│ ├── synaip.pas
│ ├── synautil.pas
│ └── synsock.pas
├── TntIniFiles.pas
├── TntIniFilesEx.pas
├── TntNativeHintWindow.pas
├── VCLFixPack.pas
├── VfW.pas
├── WinSock2
│ ├── WinSock2.pas
│ ├── info.txt
│ ├── svcguid.pas
│ ├── ws2atm.inc
│ ├── ws2tcpip.inc
│ ├── wsipx.inc
│ ├── wsnetbs.inc
│ └── wsnwlink.inc
├── jcl
│ ├── ExceptDlg.dfm
│ └── ExceptDlg.pas
├── jsbridge
│ ├── delphi.inc
│ ├── js15decl.pas
│ ├── jsbridge.pas
│ ├── jsbridge_pvt.pas
│ ├── jsconfig.inc
│ ├── jsdebugger_win.dfm
│ ├── jsdebugger_win.pas
│ ├── jsintf.pas
│ ├── jsintf_bridge.pas
│ ├── namedarray.pas
│ ├── ptrarray.pas
│ └── readme.txt
├── makevssportable.sln
├── makevssportable
│ ├── ICSharpCode.SharpZipLib.dll
│ ├── Program.cs
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── Resources
│ │ ├── Thumbs.db
│ │ └── test_vss.png
│ ├── app.config
│ ├── frmAbout.Designer.cs
│ ├── frmAbout.cs
│ ├── frmAbout.resx
│ ├── frmMain.Designer.cs
│ ├── frmMain.cs
│ ├── frmMain.resx
│ ├── icon.ico
│ ├── makevssportable.csproj
│ └── makevssportable.csproj.user
├── richole.pas
├── uLkJSON.pas
└── vsfilter
│ ├── Icon_147.ico
│ ├── License.txt
│ ├── VSS_Custom_VSFilter.diff
│ └── changes.txt
├── TntRichEditCustomUndoUnit.pas
├── TranslateFormUnit.dfm
├── TranslateFormUnit.pas
├── UndoableSubTaskUnit.pas
├── UndoableTaskUnit.pas
├── VSSClipboardUnit.pas
├── VSSProjectGroup.bpg
├── VerticalScalingFormUnit.dfm
├── VerticalScalingFormUnit.pas
├── VistaAltFixD7
├── VistaAltFixD7.dof
├── VistaAltFixD7.dpk
├── VistaAltFixD7.res
└── VistaAltFixUnit.pas
├── VisualSubSync.dof
├── VisualSubSync.dpr
├── VisualSubSync.nsi
├── VisualSubSync.res
├── VisualSubSyncEnh.dof
├── VisualSubSyncEnh.dpr
├── VisualSubSyncEnh.res
├── WAVDisplayerUnit.pas
├── WAVExtractFormUnit.dfm
├── WAVExtractFormUnit.pas
├── WAVFileUnit.pas
├── WavWriter
├── CircBuff.h
├── IWavWriter.h
├── WAVFile.cpp
├── WAVFile.h
├── WavWriter.cpp
├── WavWriter.def
├── WavWriter.dsp
├── WavWriter.dsw
├── WavWriter.h
├── WavWriter.rc
├── WavWriterUIDs.h
└── resource.h
├── clean.bat
├── dcu
└── Delphi compiled unit folder.txt
├── dunit
├── JavaScriptPluginUnitTests.pas
├── MiscToolsUnitTests.pas
├── SubtitleModelTests.pas
├── VisualSubSyncTests.dof
├── VisualSubSyncTests.dpr
├── VisualSubSyncTests.res
└── dunit.ini
├── main.dfm
├── main.pas
├── samples
└── UnicodeSample.srt
├── tom_TLB.pas
└── vss-innosetup
├── VisualSubSyncEnh.iss
├── jsplugin
├── common
│ ├── itasa.js
│ └── tools.js
├── duration.js
├── flashing.js
├── general
│ ├── action_itasa.js
│ ├── action_nixxo.js
│ ├── action_quick_stats.js
│ └── general_plugin.js
├── greek_typo.js
├── itasa_typos_kickaha.js
├── itasa_zplit_kickaha.js
├── overlapping.js
├── readme.txt
├── speed.js
├── too_long_line.js
├── too_many_lines.js
└── un-closed_tags.js
└── vss-innosetup.zip
/.gitignore:
--------------------------------------------------------------------------------
1 | # Uncomment these types if you want even more clean repository. But be careful.
2 | # It can make harm to an existing project source. Read explanations below.
3 | #
4 | # Resource files are binaries containing manifest, project icon and version info.
5 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files.
6 | #*.res
7 | #
8 | # Type library file (binary). In old Delphi versions it should be stored.
9 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored.
10 | #*.tlb
11 | #
12 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7.
13 | # Uncomment this if you are not using diagrams or use newer Delphi version.
14 | #*.ddp
15 | #
16 | # Visual LiveBindings file. Added in Delphi XE2.
17 | # Uncomment this if you are not using LiveBindings Designer.
18 | #*.vlb
19 | #
20 | # Deployment Manager configuration file for your project. Added in Delphi XE2.
21 | # Uncomment this if it is not mobile development and you do not use remote debug feature.
22 | #*.deployproj
23 | #
24 | # C++ object files produced when C/C++ Output file generation is configured.
25 | # Uncomment this if you are not using external objects (zlib library for example).
26 | #*.obj
27 | #
28 |
29 | # Delphi compiler-generated binaries (safe to delete)
30 | #*.exe
31 | #*.dll
32 | *.bpl
33 | *.bpi
34 | *.dcp
35 | *.so
36 | *.apk
37 | *.drc
38 | *.map
39 | *.dres
40 | *.rsm
41 | *.tds
42 | *.dcu
43 | *.lib
44 | *.a
45 | *.o
46 | *.ocx
47 |
48 | # Delphi autogenerated files (duplicated info)
49 | *.cfg
50 | *.hpp
51 | *Resource.rc
52 | *.ddp
53 |
54 | # Delphi local files (user-specific info)
55 | *.local
56 | *.identcache
57 | *.projdata
58 | *.tvsconfig
59 | *.dsk
60 | *.dex
61 |
62 | # Delphi history and backups
63 | __history/
64 | __recovery/
65 | *.~*
66 |
67 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi)
68 | *.stat
--------------------------------------------------------------------------------
/AboutFormUnit.pas:
--------------------------------------------------------------------------------
1 | // -----------------------------------------------------------------------------
2 | // VisualSubSync
3 | // -----------------------------------------------------------------------------
4 | // Copyright (C) 2003-2009 Christophe Paris
5 | // -----------------------------------------------------------------------------
6 | // This Program is free software; you can redistribute it and/or modify
7 | // it under the terms of the GNU General Public License as published by
8 | // the Free Software Foundation; either version 2, or (at your option)
9 | // any later version.
10 | //
11 | // This Program is distributed in the hope that it will be useful,
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | // GNU General Public License for more details.
15 | //
16 | // You should have received a copy of the GNU General Public License
17 | // along with GNU Make; see the file COPYING. If not, write to
18 | // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19 | // http://www.gnu.org/copyleft/gpl.html
20 | // -----------------------------------------------------------------------------
21 |
22 | unit AboutFormUnit;
23 |
24 | interface
25 |
26 | uses
27 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
28 | Dialogs, StdCtrls, TntStdCtrls, ExtCtrls;
29 |
30 | type
31 | TAboutForm = class(TForm)
32 | TntLabel1: TTntLabel;
33 | Bevel1: TBevel;
34 | bttOk: TTntButton;
35 | TntLabel2: TTntLabel;
36 | TntLabel3: TTntLabel;
37 | LabelVersion: TTntLabel;
38 | Bevel2: TBevel;
39 | TntLabel4: TTntLabel;
40 | lblVTV: TTntLabel;
41 | TntLabel6: TTntLabel;
42 | lblJS: TTntLabel;
43 | TntLabel8: TTntLabel;
44 | TntLabel5: TTntLabel;
45 | TntLabel9: TTntLabel;
46 | TntLabel11: TTntLabel;
47 | TntLabel10: TTntLabel;
48 | TntLabel12: TTntLabel;
49 | TntLabel13: TTntLabel;
50 | TntLabel14: TTntLabel;
51 | TntLabel15: TTntLabel;
52 | TntLabel16: TTntLabel;
53 | TntLabel17: TTntLabel;
54 | Label19: TTntLabel;
55 | TntLabel18: TTntLabel;
56 | TntLabel19: TTntLabel;
57 | TntLabel7: TTntLabel;
58 | procedure bttOkClick(Sender: TObject);
59 | procedure FormCreate(Sender: TObject);
60 | procedure TntLabel3Click(Sender: TObject);
61 | procedure TntLabel1Click(Sender: TObject);
62 | procedure panelCrashTestClick(Sender: TObject);
63 | procedure FormKeyDown(Sender: TObject; var Key: Word;
64 | Shift: TShiftState);
65 | private
66 | { Private declarations }
67 | public
68 | { Public declarations }
69 | end;
70 |
71 |
72 | implementation
73 |
74 | uses ShellAPI, MiscToolsUnit, GlobalUnit, js15decl, VirtualTrees;
75 |
76 | {$R *.dfm}
77 |
78 | procedure TAboutForm.bttOkClick(Sender: TObject);
79 | begin
80 | ModalResult := mrOK;
81 | end;
82 |
83 | procedure TAboutForm.FormCreate(Sender: TObject);
84 | begin
85 | LabelVersion.Caption := 'Version : ' + g_ApplicationVersion.VersionString;
86 | lblVTV.Hint := VTVersion;
87 | lblVTV.ShowHint := True;
88 | lblJS.Hint := JS_GetImplementationVersion;
89 | lblJS.ShowHint := True;
90 | end;
91 |
92 | procedure TAboutForm.TntLabel3Click(Sender: TObject);
93 | var s : string;
94 | begin
95 | s := 'mailto:' +
96 | 'christophe.paris' +
97 | '@free.fr?' +
98 | 'subject=' +
99 | ApplicationName +
100 | ' ' +
101 | LabelVersion.Caption;
102 | ShellExecute(Handle, 'open', PAnsiChar(s), '', '', SW_SHOWNORMAL);
103 | end;
104 |
105 | procedure TAboutForm.TntLabel1Click(Sender: TObject);
106 | var s : string;
107 | begin
108 | if Sender = TntLabel1 then
109 | s := 'http://www.visualsubsync.org'
110 | else
111 | s := TTntLabel(Sender).Caption;
112 | ShellExecute(Handle, 'open', PAnsiChar(s), '', '', SW_SHOWNORMAL);
113 | end;
114 |
115 | procedure TAboutForm.panelCrashTestClick(Sender: TObject);
116 | var DummyPointer : PInteger;
117 | begin
118 | // To test the exception hook
119 | DummyPointer := nil;
120 | DummyPointer^ := 0;
121 | end;
122 |
123 | procedure TAboutForm.FormKeyDown(Sender: TObject; var Key: Word;
124 | Shift: TShiftState);
125 | begin
126 | if (Key = VK_ESCAPE) then
127 | begin
128 | Close;
129 | end;
130 | end;
131 |
132 | end.
133 |
--------------------------------------------------------------------------------
/BgThreadTaskUnit.pas:
--------------------------------------------------------------------------------
1 | unit BgThreadTaskUnit;
2 |
3 | interface
4 |
5 | uses Classes;
6 |
7 | type
8 | TBgThreadTask = class(TThread)
9 | private
10 | FOnExecute : TNotifyEvent;
11 | FParam : Integer;
12 | public
13 | constructor Create(CreateSuspended : Boolean; ThreadPriority : TThreadPriority); overload;
14 | procedure Execute; override;
15 | property OnExecute : TNotifyEvent read FOnExecute write FOnExecute;
16 | property Param : Integer read FParam write FParam;
17 | end;
18 |
19 | implementation
20 |
21 | constructor TBgThreadTask.Create(CreateSuspended : Boolean; ThreadPriority : TThreadPriority);
22 | begin
23 | inherited Create(CreateSuspended);
24 | Self.Priority := ThreadPriority;
25 | end;
26 |
27 | procedure TBgThreadTask.Execute;
28 | begin
29 | try
30 | if Assigned(FOnExecute) then
31 | FOnExecute(Self);
32 | finally
33 | end;
34 | end;
35 |
36 |
37 | end.
38 |
--------------------------------------------------------------------------------
/CursorManager.pas:
--------------------------------------------------------------------------------
1 | unit CursorManager;
2 |
3 | interface
4 |
5 | uses Controls;
6 |
7 | type
8 | ICursorManager = interface
9 | ['{333A50A2-A6CE-447E-BC20-83BAE8948054}']
10 | end;
11 |
12 | TCursorManager = class(TInterfacedObject, ICursorManager)
13 | private
14 | FOldCursor : TCursor;
15 | public
16 | constructor Create; overload;
17 | constructor Create(NewCursor : TCursor); overload;
18 | destructor Destroy; override;
19 | end;
20 |
21 | implementation
22 |
23 | uses Forms;
24 |
25 | constructor TCursorManager.Create;
26 | begin
27 | inherited Create;
28 | FOldCursor := Screen.Cursor;
29 | end;
30 |
31 | constructor TCursorManager.Create(NewCursor : TCursor);
32 | begin
33 | inherited Create;
34 | FOldCursor := Screen.Cursor;
35 | Screen.Cursor := NewCursor;
36 | end;
37 |
38 | destructor TCursorManager.Destroy;
39 | begin
40 | Screen.Cursor := FOldCursor;
41 | inherited;
42 | end;
43 |
44 | end.
45 |
--------------------------------------------------------------------------------
/DelayFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object DelayForm: TDelayForm
2 | Left = 378
3 | Top = 223
4 | BorderIcons = [biSystemMenu, biMinimize]
5 | BorderStyle = bsSingle
6 | BorderWidth = 6
7 | Caption = 'Delay'
8 | ClientHeight = 289
9 | ClientWidth = 193
10 | Color = clBtnFace
11 | Font.Charset = DEFAULT_CHARSET
12 | Font.Color = clWindowText
13 | Font.Height = -11
14 | Font.Name = 'Microsoft Sans Serif'
15 | Font.Style = []
16 | KeyPreview = True
17 | OldCreateOrder = False
18 | Position = poOwnerFormCenter
19 | OnKeyUp = FormKeyUp
20 | PixelsPerInch = 96
21 | TextHeight = 13
22 | object meDelay: TMaskEdit
23 | Left = 0
24 | Top = 52
25 | Width = 193
26 | Height = 21
27 | EditMask = '!99:99:99.999;1;0'
28 | MaxLength = 12
29 | TabOrder = 0
30 | Text = ' : : . '
31 | end
32 | object rgApplyTo: TTntRadioGroup
33 | Left = 0
34 | Top = 80
35 | Width = 193
36 | Height = 81
37 | Caption = ' Apply to '
38 | ItemIndex = 0
39 | Items.Strings = (
40 | 'All subtitles'
41 | 'Selected subtitles'
42 | 'All subtitles from cursor to end')
43 | TabOrder = 1
44 | end
45 | object rgType: TTntRadioGroup
46 | Left = 0
47 | Top = 0
48 | Width = 193
49 | Height = 41
50 | Caption = ' Type : '
51 | Columns = 2
52 | ItemIndex = 0
53 | Items.Strings = (
54 | 'Positive (+)'
55 | 'Negative (-)')
56 | TabOrder = 2
57 | end
58 | object bttApply: TTntButton
59 | Left = 8
60 | Top = 264
61 | Width = 81
62 | Height = 25
63 | Caption = 'Apply'
64 | TabOrder = 3
65 | OnClick = bttApplyClick
66 | end
67 | object bttCancel: TTntButton
68 | Left = 104
69 | Top = 264
70 | Width = 83
71 | Height = 25
72 | Caption = 'Cancel'
73 | TabOrder = 4
74 | OnClick = bttCancelClick
75 | end
76 | object rgShift: TTntRadioGroup
77 | Left = 0
78 | Top = 168
79 | Width = 193
80 | Height = 81
81 | Caption = ' Shift '
82 | ItemIndex = 0
83 | Items.Strings = (
84 | 'Start and end time'
85 | 'Start time only'
86 | 'End time only')
87 | TabOrder = 5
88 | end
89 | end
90 |
--------------------------------------------------------------------------------
/DetachedVideoFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object DetachedVideoForm: TDetachedVideoForm
2 | Left = 487
3 | Top = 263
4 | BorderStyle = bsNone
5 | Caption = 'Video'
6 | ClientHeight = 240
7 | ClientWidth = 320
8 | Color = clBlack
9 | Font.Charset = DEFAULT_CHARSET
10 | Font.Color = clWindowText
11 | Font.Height = -11
12 | Font.Name = 'Microsoft Sans Serif'
13 | Font.Style = []
14 | FormStyle = fsStayOnTop
15 | OldCreateOrder = False
16 | PopupMenu = VideoPopupMenu
17 | Position = poDefaultPosOnly
18 | OnDblClick = FormDblClick
19 | PixelsPerInch = 96
20 | TextHeight = 13
21 | object VideoPopupMenu: TTntPopupMenu
22 | OnPopup = VideoPopupMenuPopup
23 | Left = 32
24 | Top = 8
25 | object pmiVideoFullscreen: TTntMenuItem
26 | Caption = 'Fullscreen'
27 | GroupIndex = 1
28 | RadioItem = True
29 | OnClick = pmiVideoFullscreenClick
30 | end
31 | object pmiVideoNormalSize: TTntMenuItem
32 | Caption = 'Normal size'
33 | GroupIndex = 1
34 | RadioItem = True
35 | OnClick = pmiVideoNormalSizeClick
36 | end
37 | end
38 | end
39 |
--------------------------------------------------------------------------------
/Diff.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Diff.pas
--------------------------------------------------------------------------------
/DiffSubsFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object DiffSubsForm: TDiffSubsForm
2 | Left = 190
3 | Top = 219
4 | Width = 944
5 | Height = 557
6 | BorderIcons = [biSystemMenu]
7 | Caption = 'VisualSubSync Diff file'
8 | Color = clBtnFace
9 | Font.Charset = ANSI_CHARSET
10 | Font.Color = clWindowText
11 | Font.Height = -12
12 | Font.Name = 'Arial'
13 | Font.Style = []
14 | Menu = MainMenu
15 | OldCreateOrder = False
16 | Position = poDefault
17 | OnActivate = FormActivate
18 | OnCreate = FormCreate
19 | OnDestroy = FormDestroy
20 | OnResize = FormResize
21 | PixelsPerInch = 96
22 | TextHeight = 15
23 | object Panel1: TPanel
24 | Left = 0
25 | Top = 0
26 | Width = 928
27 | Height = 23
28 | Align = alTop
29 | BevelOuter = bvNone
30 | TabOrder = 0
31 | object lblFile1: TLabel
32 | Left = 0
33 | Top = 5
34 | Width = 33
35 | Height = 15
36 | Caption = ' Text : '
37 | end
38 | object lblFile2: TLabel
39 | Left = 381
40 | Top = 5
41 | Width = 58
42 | Height = 15
43 | Caption = ' VO/Other: '
44 | end
45 | end
46 | object StatusBar1: TStatusBar
47 | Left = 0
48 | Top = 479
49 | Width = 928
50 | Height = 19
51 | Panels = <
52 | item
53 | Width = 100
54 | end
55 | item
56 | Width = 100
57 | end
58 | item
59 | Width = 100
60 | end
61 | item
62 | Width = 100
63 | end>
64 | end
65 | object ResultGrid: TStringGrid
66 | Left = 0
67 | Top = 23
68 | Width = 928
69 | Height = 456
70 | Align = alClient
71 | ColCount = 4
72 | DefaultRowHeight = 17
73 | DefaultDrawing = False
74 | FixedCols = 0
75 | RowCount = 1
76 | FixedRows = 0
77 | Font.Charset = ANSI_CHARSET
78 | Font.Color = clWindowText
79 | Font.Height = -12
80 | Font.Name = 'Courier New'
81 | Font.Style = []
82 | GridLineWidth = 0
83 | Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goDrawFocusSelected, goRowSelect]
84 | ParentFont = False
85 | TabOrder = 2
86 | OnDrawCell = ResultGridDrawCell
87 | end
88 | object MainMenu: TMainMenu
89 | Left = 96
90 | Top = 73
91 | object File1: TMenuItem
92 | Caption = '&File'
93 | object Exit1: TTntMenuItem
94 | Caption = 'E&xit'
95 | OnClick = Exit1Click
96 | end
97 | end
98 | object mnuView: TMenuItem
99 | Caption = '&View'
100 | Enabled = False
101 | object PreviousChanges1: TTntMenuItem
102 | Caption = '&Previous Changes'
103 | ShortCut = 16464
104 | OnClick = PreviousChanges1Click
105 | end
106 | object NextChanges1: TTntMenuItem
107 | Caption = '&Next Changes'
108 | ShortCut = 16462
109 | OnClick = NextChanges1Click
110 | end
111 | end
112 | object Options1: TMenuItem
113 | Caption = '&Options'
114 | object mnuIgnoreCase: TMenuItem
115 | Caption = 'Ignore &Case'
116 | OnClick = mnuIgnoreCaseClick
117 | end
118 | object mnuIgnoreWhiteSpace: TMenuItem
119 | Caption = 'Ignore &White Space'
120 | OnClick = mnuIgnoreWhiteSpaceClick
121 | end
122 | end
123 | end
124 | object OpenDialog: TOpenDialog
125 | Options = [ofHideReadOnly, ofFileMustExist, ofEnableSizing]
126 | Left = 183
127 | Top = 79
128 | end
129 | end
130 |
--------------------------------------------------------------------------------
/ErrorReportFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object ErrorReportForm: TErrorReportForm
2 | Left = 427
3 | Top = 255
4 | Width = 321
5 | Height = 425
6 | BorderStyle = bsSizeToolWin
7 | Caption = 'Error report'
8 | Color = clBtnFace
9 | Constraints.MinHeight = 100
10 | Constraints.MinWidth = 100
11 | Font.Charset = DEFAULT_CHARSET
12 | Font.Color = clWindowText
13 | Font.Height = -11
14 | Font.Name = 'Microsoft Sans Serif'
15 | Font.Style = []
16 | FormStyle = fsStayOnTop
17 | KeyPreview = True
18 | Menu = TntMainMenu1
19 | OldCreateOrder = False
20 | OnCreate = FormCreate
21 | OnDestroy = FormDestroy
22 | OnKeyDown = FormKeyDown
23 | PixelsPerInch = 96
24 | TextHeight = 13
25 | object vtvErrorList: TVirtualDrawTree
26 | Left = 0
27 | Top = 0
28 | Width = 305
29 | Height = 345
30 | Align = alClient
31 | Header.AutoSizeIndex = 0
32 | Header.Font.Charset = DEFAULT_CHARSET
33 | Header.Font.Color = clWindowText
34 | Header.Font.Height = -11
35 | Header.Font.Name = 'Microsoft Sans Serif'
36 | Header.Font.Style = []
37 | Header.MainColumn = -1
38 | Header.Options = [hoColumnResize, hoDrag]
39 | PopupMenu = ErrorListPopupMenu
40 | TabOrder = 0
41 | TreeOptions.SelectionOptions = [toMultiSelect]
42 | OnDrawNode = vtvErrorListDrawNode
43 | OnFocusChanged = vtvErrorListFocusChanged
44 | Columns = <>
45 | end
46 | object TntStatusBar1: TTntStatusBar
47 | Left = 0
48 | Top = 345
49 | Width = 305
50 | Height = 21
51 | Panels = <
52 | item
53 | Width = 50
54 | end>
55 | end
56 | object ErrorListPopupMenu: TTntPopupMenu
57 | OnPopup = ErrorListPopupMenuPopup
58 | Left = 16
59 | Top = 48
60 | object pmiFixError: TTntMenuItem
61 | Action = MainForm.ActionFixSelectedErrors
62 | end
63 | object pmiFixAllXXX: TTntMenuItem
64 | Caption = 'Fix all errors of same type (color)'
65 | OnClick = pmiFixAllXXXClick
66 | end
67 | object pmiFixAllYYY: TTntMenuItem
68 | Caption = 'Fix all errors with same error msg'
69 | OnClick = pmiFixAllYYYClick
70 | end
71 | object N3: TTntMenuItem
72 | Caption = '-'
73 | end
74 | object pmiSelectAllXXX: TTntMenuItem
75 | Caption = 'Select all errors of same type (color)'
76 | OnClick = pmiSelectAllXXXClick
77 | end
78 | object pmiSelectAllYYY: TTntMenuItem
79 | Caption = 'Select all errors with same error msg'
80 | OnClick = pmiSelectAllYYYClick
81 | end
82 | object N5: TTntMenuItem
83 | Caption = '-'
84 | end
85 | object miClearAndSkip: TTntMenuItem
86 | Caption = 'Clear && Forget'
87 | OnClick = miClearAndSkipClick
88 | end
89 | object N4: TTntMenuItem
90 | Caption = '-'
91 | end
92 | object miClear: TTntMenuItem
93 | Caption = 'Clear'
94 | OnClick = miClearClick
95 | end
96 | object pmiClearAllYYY: TTntMenuItem
97 | Caption = 'Clear all errors with different error msg'
98 | OnClick = pmiClearAllYYYClick
99 | end
100 | object pmiClearAllXXX: TTntMenuItem
101 | Caption = 'Clear all errors with same error msg'
102 | OnClick = pmiClearAllXXXClick
103 | end
104 | object pmiClearAll: TTntMenuItem
105 | Caption = 'Clear all'
106 | OnClick = pmiClearAllClick
107 | end
108 | end
109 | object TntMainMenu1: TTntMainMenu
110 | Left = 16
111 | Top = 16
112 | object miFile: TTntMenuItem
113 | Caption = 'File'
114 | SubMenuImages = MainForm.ImageList1
115 | object miRecheck: TTntMenuItem
116 | Action = MainForm.ActionCheckErrors
117 | end
118 | object miClearAll: TTntMenuItem
119 | Caption = 'Clear all'
120 | OnClick = miClearAllClick
121 | end
122 | object miExportToHTML: TTntMenuItem
123 | Caption = 'Export to HTML...'
124 | OnClick = miExportToHTMLClick
125 | end
126 | object N2: TTntMenuItem
127 | Caption = '-'
128 | end
129 | object miPreferences: TTntMenuItem
130 | Action = MainForm.ActionErrorPreferences
131 | end
132 | object N1: TTntMenuItem
133 | Caption = '-'
134 | end
135 | object miClose: TTntMenuItem
136 | Caption = 'Close'
137 | OnClick = miCloseClick
138 | end
139 | end
140 | end
141 | object TntSaveDialog1: TTntSaveDialog
142 | Left = 16
143 | Top = 80
144 | end
145 | end
146 |
--------------------------------------------------------------------------------
/FLVFile.pas:
--------------------------------------------------------------------------------
1 | {FLV_parser
2 |
3 | this is a basic file parser that only extract keyframes.
4 |
5 | written by nixxo
6 | c.nixxo@hush.ai
7 | }
8 |
9 | unit FLVFile;
10 |
11 | interface
12 |
13 | uses Windows, SysUtils, Classes, StrUtils;
14 |
15 | type
16 | FLV = class
17 | private
18 | flv_file : THandle;
19 | flv_fp : Integer;
20 |
21 | flv_header : array[1..9] of byte;
22 | flv_tag : array[1..11] of byte;
23 | type_v:Boolean;
24 | tag_time : Integer;
25 | flv_next : Integer;
26 |
27 | procedure parseTag;
28 | function isKeyframe : Boolean;
29 | public
30 | constructor Create(filename : WideString);
31 | procedure Free;
32 | function isValid : Boolean;
33 | function nextKeyframe : Integer;
34 | end;
35 |
36 | implementation
37 |
38 | constructor FLV.Create(filename : WideString);
39 | begin
40 | flv_file := CreateFileW(PWideChar(filename), GENERIC_READ,
41 | FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
42 | end;
43 |
44 | procedure FLV.Free;
45 | begin
46 | if (flv_file <> INVALID_HANDLE_VALUE) then
47 | CloseHandle(flv_file);
48 | flv_file := INVALID_HANDLE_VALUE;
49 | end;
50 |
51 | function FLV.isValid : Boolean;
52 | var
53 | dwNumberOfBytesRead : DWORD;
54 | begin
55 | Result:=False;
56 | if (flv_file <> INVALID_HANDLE_VALUE) then
57 | begin
58 | SetFilePointer(flv_file, 0, nil, 0);
59 | if not ReadFile(flv_file, flv_header, 9, dwNumberOfBytesRead, nil) then
60 | Exit;
61 | if (dwNumberOfBytesRead = 9) then
62 | begin
63 | if (flv_header[1] = 70) and
64 | (flv_header[2] = 76) and
65 | (flv_header[3] = 86) then
66 | Result:=True;
67 | flv_next := 13;
68 | end;
69 | end;
70 | end;
71 |
72 | procedure FLV.parseTag;
73 | var bodylength : Integer;
74 | dwNumberOfBytesRead : DWORD;
75 | begin
76 | flv_next :=-1;
77 | if (flv_file <> INVALID_HANDLE_VALUE) then
78 | begin
79 | SetFilePointer(flv_file, flv_fp, nil, 0);
80 | if not ReadFile(flv_file, flv_tag, 11, dwNumberOfBytesRead, nil) then
81 | Exit;
82 | if (dwNumberOfBytesRead = 11) then
83 | begin
84 | type_v:=False;
85 | if flv_tag[1] = 9 then
86 | begin
87 | type_v := True;
88 | tag_time := flv_tag[5];
89 | tag_time := tag_time*256 + flv_tag[6];
90 | tag_time := tag_time*256 + flv_tag[7];
91 | end;
92 |
93 | bodylength := flv_tag[2];
94 | bodylength := bodylength*256 + flv_tag[3];
95 | bodylength := bodylength*256 + flv_tag[4];
96 | flv_next := flv_fp+11+bodylength+4;
97 | end;
98 | end;
99 | end;
100 |
101 | function FLV.isKeyframe : Boolean;
102 | var temp : Byte;
103 | dwNumberOfBytesRead : DWORD;
104 | begin
105 | Result := False;
106 | if (flv_file <> INVALID_HANDLE_VALUE) then
107 | begin
108 | SetFilePointer(flv_file, flv_fp+11, nil, 0);
109 | if not ReadFile(flv_file, temp, 1, dwNumberOfBytesRead, nil) then
110 | Exit;
111 | if (dwNumberOfBytesRead = 1) then
112 | begin
113 | temp := (temp and $00FF) shr 4;
114 | if temp = 1 then
115 | Result:= True;
116 | end;
117 | end;
118 | end;
119 |
120 | function FLV.nextKeyframe : Integer;
121 | begin
122 | flv_fp := flv_next;
123 | parseTag;
124 | if type_v then
125 | if isKeyframe then
126 | begin
127 | Result := tag_time;
128 | Exit;
129 | end;
130 | if flv_next > 0 then
131 | Result := nextKeyframe
132 | else
133 | Result := -1;
134 | end;
135 |
136 | end.
137 |
--------------------------------------------------------------------------------
/FileReaderUnit.pas:
--------------------------------------------------------------------------------
1 | unit FileReaderUnit;
2 |
3 | interface
4 |
5 | uses Classes;
6 |
7 | type
8 | TFileReader = class
9 | private
10 | FFileHandle : THandle;
11 | public
12 | constructor Create(const Filename : WideString);
13 | destructor Destroy; override;
14 | function Read(var Buffer; const Count: Longint) : Longint;
15 | function Seek(const Offset: Int64; const Origin: TSeekOrigin): Int64;
16 | function Tell : Int64;
17 | function Size : Int64;
18 | end;
19 |
20 | implementation
21 |
22 | uses Windows, SysUtils;
23 |
24 | // =============================================================================
25 |
26 |
27 | constructor TFileReader.Create(const Filename : WideString);
28 | begin
29 | FFileHandle := CreateFileW(PWideChar(Filename), GENERIC_READ,
30 | FILE_SHARE_READ+FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
31 |
32 | if FFileHandle = INVALID_HANDLE_VALUE then
33 | raise Exception.CreateFmt('Can''t open file %s',[Filename]);
34 | end;
35 |
36 | // -----------------------------------------------------------------------------
37 |
38 | function TFileReader.Read(var Buffer; const Count: Longint) : Longint;
39 | var dwNumberOfBytesRead : DWORD;
40 | begin
41 | Result := 0;
42 | dwNumberOfBytesRead := 0;
43 | if not ReadFile(FFileHandle, Buffer, Count, dwNumberOfBytesRead, nil) then
44 | Exit;
45 | Result := dwNumberOfBytesRead;
46 | end;
47 |
48 | // -----------------------------------------------------------------------------
49 |
50 | function TFileReader.Seek(const Offset: Int64; const Origin: TSeekOrigin): Int64;
51 | var
52 | LIOffset : LARGE_INTEGER;
53 | begin
54 | LIOffset.QuadPart := Offset;
55 | LIOffset.LowPart := SetFilePointer (FFileHandle, LIOffset.LowPart,
56 | @LIOffset.HighPart, Ord(Origin));
57 | if ((LIOffset.LowPart = INVALID_HANDLE_VALUE) and (GetLastError <> NO_ERROR)) then
58 | LIOffset.QuadPart := -1;
59 | Result := LIOffset.QuadPart;
60 | end;
61 |
62 | // -----------------------------------------------------------------------------
63 |
64 | function TFileReader.Tell : Int64;
65 | var
66 | LIOffset : LARGE_INTEGER;
67 | begin
68 | LIOffset.QuadPart := 0;
69 | LIOffset.LowPart := SetFilePointer (FFileHandle, 0, @LIOffset.HighPart, FILE_CURRENT);
70 | if ((LIOffset.LowPart = INVALID_HANDLE_VALUE) and (GetLastError <> NO_ERROR)) then
71 | LIOffset.QuadPart := -1;
72 | Result := LIOffset.QuadPart;
73 | end;
74 |
75 | // -----------------------------------------------------------------------------
76 |
77 | function TFileReader.Size : Int64;
78 | var
79 | FileSize: array[0..1] of Cardinal absolute Result;
80 | begin
81 | Result := -1;
82 | FileSize[0] := GetFileSize(FFileHandle, @FileSize[1]);
83 | if (FileSize[0] = INVALID_HANDLE_VALUE) then
84 | Result := -1;
85 | end;
86 |
87 | // -----------------------------------------------------------------------------
88 |
89 | destructor TFileReader.Destroy;
90 | begin
91 | if (FFileHandle <> INVALID_HANDLE_VALUE) then
92 | CloseHandle(FFileHandle);
93 | FFileHandle := INVALID_HANDLE_VALUE;
94 | end;
95 |
96 | // =============================================================================
97 |
98 |
99 | end.
100 |
--------------------------------------------------------------------------------
/FindFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object FindForm: TFindForm
2 | Left = 253
3 | Top = 448
4 | AutoSize = True
5 | BorderIcons = [biSystemMenu, biMinimize]
6 | BorderStyle = bsSingle
7 | BorderWidth = 4
8 | Caption = 'Find'
9 | ClientHeight = 185
10 | ClientWidth = 339
11 | Color = clBtnFace
12 | Constraints.MinWidth = 350
13 | Font.Charset = DEFAULT_CHARSET
14 | Font.Color = clWindowText
15 | Font.Height = -11
16 | Font.Name = 'Microsoft Sans Serif'
17 | Font.Style = []
18 | FormStyle = fsStayOnTop
19 | KeyPreview = True
20 | OldCreateOrder = False
21 | Position = poDefault
22 | OnActivate = FormActivate
23 | OnClose = FormClose
24 | OnKeyUp = FormKeyUp
25 | OnShow = FormShow
26 | PixelsPerInch = 96
27 | TextHeight = 13
28 | object TntLabel1: TTntLabel
29 | Left = 0
30 | Top = 4
31 | Width = 23
32 | Height = 13
33 | Caption = 'Find:'
34 | Font.Charset = DEFAULT_CHARSET
35 | Font.Color = clWindowText
36 | Font.Height = -11
37 | Font.Name = 'Microsoft Sans Serif'
38 | Font.Style = []
39 | ParentFont = False
40 | end
41 | object TntLabel2: TTntLabel
42 | Left = 0
43 | Top = 28
44 | Width = 65
45 | Height = 13
46 | Caption = 'Replace with:'
47 | end
48 | object cbFind: TTntComboBox
49 | Left = 72
50 | Top = 0
51 | Width = 265
52 | Height = 21
53 | ItemHeight = 13
54 | TabOrder = 0
55 | OnChange = cbFindChange
56 | OnKeyDown = cbFindKeyDown
57 | end
58 | object cbReplaceWith: TTntComboBox
59 | Left = 72
60 | Top = 24
61 | Width = 265
62 | Height = 21
63 | ItemHeight = 13
64 | TabOrder = 1
65 | OnKeyDown = cbFindKeyDown
66 | end
67 | object TntGroupBox1: TTntGroupBox
68 | Left = 0
69 | Top = 56
70 | Width = 153
71 | Height = 129
72 | Caption = 'Options'
73 | TabOrder = 2
74 | object chkMatchCase: TTntCheckBox
75 | Left = 8
76 | Top = 24
77 | Width = 97
78 | Height = 17
79 | Caption = 'Case sensitive'
80 | TabOrder = 0
81 | OnClick = chkMatchCaseClick
82 | end
83 | object chkFromCursor: TCheckBox
84 | Left = 8
85 | Top = 40
86 | Width = 81
87 | Height = 17
88 | Caption = 'From cursor'
89 | TabOrder = 1
90 | end
91 | object chkMatchingOnly: TTntCheckBox
92 | Left = 8
93 | Top = 91
94 | Width = 137
95 | Height = 17
96 | Caption = 'Show matching sub only'
97 | TabOrder = 4
98 | OnClick = chkMatchingOnlyClick
99 | end
100 | object chkRegExp: TTntCheckBox
101 | Left = 8
102 | Top = 72
103 | Width = 121
104 | Height = 17
105 | Caption = 'Regular Expression'
106 | TabOrder = 3
107 | OnClick = chkRegExpClick
108 | end
109 | object chkWholeWord: TCheckBox
110 | Left = 8
111 | Top = 56
112 | Width = 97
113 | Height = 17
114 | Caption = 'Whole Word'
115 | TabOrder = 2
116 | end
117 | object chkDisableVOSearch: TTntCheckBox
118 | Left = 7
119 | Top = 109
120 | Width = 137
121 | Height = 17
122 | Caption = 'Disable VO search'
123 | Checked = True
124 | State = cbChecked
125 | TabOrder = 5
126 | OnClick = chkMatchingOnlyClick
127 | end
128 | end
129 | object Panel1: TPanel
130 | Left = 160
131 | Top = 56
132 | Width = 177
133 | Height = 73
134 | BevelOuter = bvNone
135 | TabOrder = 3
136 | object bttFind: TTntButton
137 | Left = 8
138 | Top = 8
139 | Width = 81
140 | Height = 25
141 | Caption = 'Find'
142 | TabOrder = 0
143 | OnClick = bttFindClick
144 | end
145 | object bttReplaceFind: TTntButton
146 | Left = 96
147 | Top = 8
148 | Width = 81
149 | Height = 25
150 | Caption = 'Replace/Find'
151 | Enabled = False
152 | TabOrder = 1
153 | OnClick = bttReplaceFindClick
154 | end
155 | object bttReplace: TTntButton
156 | Left = 8
157 | Top = 38
158 | Width = 81
159 | Height = 25
160 | Caption = 'Replace'
161 | Enabled = False
162 | TabOrder = 2
163 | OnClick = bttReplaceClick
164 | end
165 | object bttReplaceAll: TTntButton
166 | Left = 96
167 | Top = 38
168 | Width = 81
169 | Height = 25
170 | Caption = 'Replace All'
171 | TabOrder = 3
172 | OnClick = bttReplaceAllClick
173 | end
174 | end
175 | object bttClose: TTntButton
176 | Left = 256
177 | Top = 160
178 | Width = 83
179 | Height = 25
180 | Caption = 'Close'
181 | TabOrder = 4
182 | OnClick = bttCloseClick
183 | end
184 | end
185 |
--------------------------------------------------------------------------------
/Global.inc:
--------------------------------------------------------------------------------
1 | unit Global;
2 |
3 | const
4 | ApplicationName : string = 'VisualSubSync';
5 |
--------------------------------------------------------------------------------
/GotoFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object GotoForm: TGotoForm
2 | Left = 187
3 | Top = 257
4 | BorderIcons = [biSystemMenu, biMinimize]
5 | BorderStyle = bsSingle
6 | BorderWidth = 4
7 | Caption = 'Go to'
8 | ClientHeight = 121
9 | ClientWidth = 217
10 | Color = clBtnFace
11 | Font.Charset = DEFAULT_CHARSET
12 | Font.Color = clWindowText
13 | Font.Height = -11
14 | Font.Name = 'Microsoft Sans Serif'
15 | Font.Style = []
16 | KeyPreview = True
17 | OldCreateOrder = False
18 | Position = poOwnerFormCenter
19 | OnActivate = FormActivate
20 | OnKeyDown = FormKeyDown
21 | PixelsPerInch = 96
22 | TextHeight = 13
23 | object Panel1: TPanel
24 | Left = 0
25 | Top = 0
26 | Width = 217
27 | Height = 89
28 | BevelOuter = bvLowered
29 | TabOrder = 0
30 | object rbGotoLine: TTntRadioButton
31 | Left = 16
32 | Top = 18
33 | Width = 57
34 | Height = 17
35 | Caption = 'Line :'
36 | Checked = True
37 | TabOrder = 0
38 | TabStop = True
39 | end
40 | object rbGotoTime: TTntRadioButton
41 | Left = 16
42 | Top = 50
43 | Width = 57
44 | Height = 17
45 | Caption = 'Time :'
46 | TabOrder = 2
47 | end
48 | object EditLine: TEdit
49 | Left = 80
50 | Top = 16
51 | Width = 121
52 | Height = 21
53 | TabOrder = 1
54 | Text = '1'
55 | OnChange = EditLineChange
56 | end
57 | object MaskEditTime: TMaskEdit
58 | Left = 80
59 | Top = 48
60 | Width = 120
61 | Height = 21
62 | EditMask = '!99:99:99.999;1;0'
63 | MaxLength = 12
64 | TabOrder = 3
65 | Text = ' : : . '
66 | OnChange = MaskEditTimeChange
67 | end
68 | end
69 | object bttGo: TTntButton
70 | Left = 16
71 | Top = 96
72 | Width = 89
73 | Height = 25
74 | Caption = 'Go'
75 | TabOrder = 1
76 | OnClick = bttGoClick
77 | end
78 | object bttCancel: TTntButton
79 | Left = 120
80 | Top = 96
81 | Width = 83
82 | Height = 25
83 | Caption = 'Cancel'
84 | TabOrder = 2
85 | OnClick = bttCancelClick
86 | end
87 | end
88 |
--------------------------------------------------------------------------------
/GotoFormUnit.pas:
--------------------------------------------------------------------------------
1 | // -----------------------------------------------------------------------------
2 | // VisualSubSync
3 | // -----------------------------------------------------------------------------
4 | // Copyright (C) 2003 Christophe Paris
5 | // -----------------------------------------------------------------------------
6 | // This Program is free software; you can redistribute it and/or modify
7 | // it under the terms of the GNU General Public License as published by
8 | // the Free Software Foundation; either version 2, or (at your option)
9 | // any later version.
10 | //
11 | // This Program is distributed in the hope that it will be useful,
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | // GNU General Public License for more details.
15 | //
16 | // You should have received a copy of the GNU General Public License
17 | // along with GNU Make; see the file COPYING. If not, write to
18 | // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19 | // http://www.gnu.org/copyleft/gpl.html
20 | // -----------------------------------------------------------------------------
21 |
22 | unit GotoFormUnit;
23 |
24 | interface
25 |
26 | uses
27 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
28 | Dialogs, Mask, StdCtrls, TntStdCtrls, ExtCtrls;
29 |
30 | type
31 | TGotoForm = class(TForm)
32 | Panel1: TPanel;
33 | bttGo: TTntButton;
34 | bttCancel: TTntButton;
35 | rbGotoLine: TTntRadioButton;
36 | rbGotoTime: TTntRadioButton;
37 | EditLine: TEdit;
38 | MaskEditTime: TMaskEdit;
39 | procedure bttGoClick(Sender: TObject);
40 | procedure bttCancelClick(Sender: TObject);
41 | procedure FormActivate(Sender: TObject);
42 | procedure FormKeyDown(Sender: TObject; var Key: Word;
43 | Shift: TShiftState);
44 | procedure MaskEditTimeChange(Sender: TObject);
45 | procedure EditLineChange(Sender: TObject);
46 | private
47 | { Private declarations }
48 | public
49 | { Public declarations }
50 | end;
51 |
52 | var
53 | GotoForm: TGotoForm;
54 |
55 | implementation
56 |
57 | {$R *.dfm}
58 |
59 | procedure TGotoForm.bttGoClick(Sender: TObject);
60 | begin
61 | ModalResult := mrOk;
62 | end;
63 |
64 | procedure TGotoForm.bttCancelClick(Sender: TObject);
65 | begin
66 | ModalResult := mrCancel;
67 | end;
68 |
69 | procedure TGotoForm.FormActivate(Sender: TObject);
70 | begin
71 | EditLine.SetFocus;
72 | end;
73 |
74 | procedure TGotoForm.FormKeyDown(Sender: TObject; var Key: Word;
75 | Shift: TShiftState);
76 | begin
77 | if (Key = VK_RETURN) then
78 | ModalResult := mrOk
79 | else if (Key = VK_ESCAPE) then
80 | Close
81 | end;
82 |
83 | procedure TGotoForm.MaskEditTimeChange(Sender: TObject);
84 | begin
85 | rbGotoTime.Checked := True;
86 | end;
87 |
88 | procedure TGotoForm.EditLineChange(Sender: TObject);
89 | begin
90 | rbGotoLine.Checked := True;
91 | end;
92 |
93 | end.
94 |
--------------------------------------------------------------------------------
/HashUnit.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/HashUnit.pas
--------------------------------------------------------------------------------
/LibHunspellUnit.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/LibHunspellUnit.pas
--------------------------------------------------------------------------------
/LogWindowFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object LogForm: TLogForm
2 | Left = 204
3 | Top = 103
4 | Width = 505
5 | Height = 167
6 | BorderStyle = bsSizeToolWin
7 | Caption = 'Log window'
8 | Color = clBtnFace
9 | Font.Charset = DEFAULT_CHARSET
10 | Font.Color = clWindowText
11 | Font.Height = -11
12 | Font.Name = 'Microsoft Sans Serif'
13 | Font.Style = []
14 | FormStyle = fsStayOnTop
15 | Menu = MainMenu1
16 | OldCreateOrder = False
17 | PixelsPerInch = 96
18 | TextHeight = 13
19 | object MemoLog: TTntMemo
20 | Left = 0
21 | Top = 0
22 | Width = 489
23 | Height = 108
24 | Align = alClient
25 | Font.Charset = DEFAULT_CHARSET
26 | Font.Color = clWindowText
27 | Font.Height = -11
28 | Font.Name = 'Courier New'
29 | Font.Style = []
30 | ParentFont = False
31 | ScrollBars = ssVertical
32 | TabOrder = 0
33 | end
34 | object MainMenu1: TMainMenu
35 | Left = 8
36 | Top = 8
37 | object Window1: TMenuItem
38 | Caption = 'Window'
39 | object miClear: TMenuItem
40 | Caption = 'Clear'
41 | OnClick = miClearClick
42 | end
43 | object miStayHidden: TMenuItem
44 | AutoCheck = True
45 | Caption = 'Stay hidden'
46 | OnClick = miStayHiddenClick
47 | end
48 | object miClose: TMenuItem
49 | Caption = 'Close'
50 | OnClick = miCloseClick
51 | end
52 | end
53 | object Debug: TMenuItem
54 | Caption = 'Debug'
55 | object ListDirectShowfilters1: TMenuItem
56 | Caption = 'List used DirectShow filters'
57 | OnClick = ListDirectShowfilters1Click
58 | end
59 | end
60 | end
61 | end
62 |
--------------------------------------------------------------------------------
/LogWindowFormUnit.pas:
--------------------------------------------------------------------------------
1 | unit LogWindowFormUnit;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, StdCtrls, Menus, TntStdCtrls;
8 |
9 | type
10 | TLogForm = class(TForm)
11 | MainMenu1: TMainMenu;
12 | Window1: TMenuItem;
13 | miStayHidden: TMenuItem;
14 | miClose: TMenuItem;
15 | miClear: TMenuItem;
16 | MemoLog: TTntMemo;
17 | Debug: TMenuItem;
18 | ListDirectShowfilters1: TMenuItem;
19 | procedure miCloseClick(Sender: TObject);
20 | procedure miStayHiddenClick(Sender: TObject);
21 | procedure miClearClick(Sender: TObject);
22 | procedure ListDirectShowfilters1Click(Sender: TObject);
23 | private
24 | { Private declarations }
25 | public
26 | { Public declarations }
27 | procedure LogMsg(const Msg : WideString);
28 | procedure SilentLogMsg(const Msg : WideString);
29 | procedure Clear;
30 | end;
31 |
32 | var
33 | LogForm: TLogForm;
34 |
35 | implementation
36 |
37 | uses Main;
38 |
39 | {$R *.dfm}
40 |
41 | procedure TLogForm.miCloseClick(Sender: TObject);
42 | begin
43 | Visible := False;
44 | end;
45 |
46 | procedure TLogForm.LogMsg(const Msg : WideString);
47 | begin
48 | MemoLog.Lines.Add(Msg);
49 | if (not miStayHidden.Checked) and (Visible = False) then
50 | Visible := True;
51 | end;
52 |
53 | procedure TLogForm.SilentLogMsg(const Msg : WideString);
54 | begin
55 | MemoLog.Lines.Add(Msg);
56 | end;
57 |
58 | procedure TLogForm.miStayHiddenClick(Sender: TObject);
59 | begin
60 | Visible := False;
61 | end;
62 |
63 | procedure TLogForm.miClearClick(Sender: TObject);
64 | begin
65 | Clear;
66 | end;
67 |
68 | procedure TLogForm.Clear;
69 | begin
70 | MemoLog.Clear;
71 | end;
72 |
73 | procedure TLogForm.ListDirectShowfilters1Click(Sender: TObject);
74 | var slist : TStringList;
75 | begin
76 | MemoLog.Lines.Add('--- Start of filters list --->');
77 | slist := TStringList.Create;
78 | MainForm.GetVideoRendererFiltersList(slist);
79 | MemoLog.Lines.AddStrings(slist);
80 | slist.Free;
81 | MemoLog.Lines.Add('<--- End of filters list ---');
82 | end;
83 |
84 | end.
85 |
--------------------------------------------------------------------------------
/LogWriterIntf.pas:
--------------------------------------------------------------------------------
1 | unit LogWriterIntf;
2 |
3 | interface
4 |
5 | type
6 | TLogWriterIntf = class
7 | public
8 | procedure AddTextLine(AText : string); virtual; abstract;
9 | procedure AddPair(AKey,AValue : string); virtual; abstract;
10 | end;
11 |
12 | TLogWriterNull = class(TLogWriterIntf)
13 | public
14 | procedure AddTextLine(AText : string); override;
15 | procedure AddPair(AKey,AValue : string); override;
16 | end;
17 |
18 | implementation
19 |
20 | procedure TLogWriterNull.AddTextLine(AText : string);
21 | begin
22 | // Do nothing
23 | end;
24 |
25 | procedure TLogWriterNull.AddPair(AKey,AValue : string);
26 | begin
27 | // Do nothing
28 | end;
29 |
30 | end.
31 |
--------------------------------------------------------------------------------
/MediaInfoLib/Project/Delphi/Example/HowToUse_Dll.dof:
--------------------------------------------------------------------------------
1 | [FileVersion]
2 | Version=7.0
3 | [Compiler]
4 | A=8
5 | B=0
6 | C=1
7 | D=1
8 | E=0
9 | F=0
10 | G=1
11 | H=1
12 | I=1
13 | J=0
14 | K=0
15 | L=1
16 | M=0
17 | N=1
18 | O=1
19 | P=1
20 | Q=0
21 | R=0
22 | S=0
23 | T=0
24 | U=0
25 | V=1
26 | W=0
27 | X=1
28 | Y=1
29 | Z=1
30 | ShowHints=1
31 | ShowWarnings=1
32 | UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
33 | NamespacePrefix=
34 | SymbolDeprecated=1
35 | SymbolLibrary=1
36 | SymbolPlatform=1
37 | UnitLibrary=1
38 | UnitPlatform=1
39 | UnitDeprecated=1
40 | HResultCompat=1
41 | HidingMember=1
42 | HiddenVirtual=1
43 | Garbage=1
44 | BoundsError=1
45 | ZeroNilCompat=1
46 | StringConstTruncated=1
47 | ForLoopVarVarPar=1
48 | TypedConstVarPar=1
49 | AsgToTypedConst=1
50 | CaseLabelRange=1
51 | ForVariable=1
52 | ConstructingAbstract=1
53 | ComparisonFalse=1
54 | ComparisonTrue=1
55 | ComparingSignedUnsigned=1
56 | CombiningSignedUnsigned=1
57 | UnsupportedConstruct=1
58 | FileOpen=1
59 | FileOpenUnitSrc=1
60 | BadGlobalSymbol=1
61 | DuplicateConstructorDestructor=1
62 | InvalidDirective=1
63 | PackageNoLink=1
64 | PackageThreadVar=1
65 | ImplicitImport=1
66 | HPPEMITIgnored=1
67 | NoRetVal=1
68 | UseBeforeDef=1
69 | ForLoopVarUndef=1
70 | UnitNameMismatch=1
71 | NoCFGFileFound=1
72 | MessageDirective=1
73 | ImplicitVariants=1
74 | UnicodeToLocale=1
75 | LocaleToUnicode=1
76 | ImagebaseMultiple=1
77 | SuspiciousTypecast=1
78 | PrivatePropAccessor=1
79 | UnsafeType=0
80 | UnsafeCode=0
81 | UnsafeCast=0
82 | [Linker]
83 | MapFile=0
84 | OutputObjs=0
85 | ConsoleApp=1
86 | DebugInfo=0
87 | RemoteSymbols=0
88 | MinStackSize=16384
89 | MaxStackSize=1048576
90 | ImageBase=4194304
91 | ExeDescription=
92 | [Directories]
93 | OutputDir=
94 | UnitOutputDir=
95 | PackageDLLOutputDir=
96 | PackageDCPOutputDir=
97 | SearchPath=
98 | Packages=
99 | Conditionals=
100 | DebugSourceDirs=
101 | UsePackages=0
102 | [Parameters]
103 | RunParams=
104 | HostApplication=
105 | Launcher=
106 | UseLauncher=0
107 | DebugCWD=
108 | [Language]
109 | ActiveLang=
110 | ProjectLang=
111 | RootDir=
112 | [Version Info]
113 | IncludeVerInfo=0
114 | AutoIncBuild=0
115 | MajorVer=1
116 | MinorVer=0
117 | Release=0
118 | Build=0
119 | Debug=0
120 | PreRelease=0
121 | Special=0
122 | Private=0
123 | DLL=0
124 | Locale=1040
125 | CodePage=1252
126 | [Version Info Keys]
127 | CompanyName=
128 | FileDescription=
129 | FileVersion=1.0.0.0
130 | InternalName=
131 | LegalCopyright=
132 | LegalTrademarks=
133 | OriginalFilename=
134 | ProductName=
135 | ProductVersion=1.0.0.0
136 | Comments=
137 |
--------------------------------------------------------------------------------
/MediaInfoLib/Project/Delphi/Example/HowToUse_Dll.dpr:
--------------------------------------------------------------------------------
1 | program HowToUse_Dll;
2 |
3 | uses
4 | Forms,
5 | MediaInfoDLL in '..\..\..\Source\MediaInfoDLL\MediaInfoDLL.pas',
6 | HowToUse_Dll_ in 'HowToUse_Dll_.pas' {Form1};
7 |
8 | {$R HowToUse_Dll.res}
9 |
10 | begin
11 | Application.Initialize;
12 | Application.CreateForm(TForm1, Form1);
13 | Application.Run;
14 | end.
15 |
--------------------------------------------------------------------------------
/MediaInfoLib/Project/Delphi/Example/HowToUse_Dll.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/MediaInfoLib/Project/Delphi/Example/HowToUse_Dll.exe
--------------------------------------------------------------------------------
/MediaInfoLib/Project/Delphi/Example/HowToUse_Dll.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/MediaInfoLib/Project/Delphi/Example/HowToUse_Dll.res
--------------------------------------------------------------------------------
/MediaInfoLib/Project/Delphi/Example/HowToUse_Dll_.dfm:
--------------------------------------------------------------------------------
1 | object Form1: TForm1
2 | Left = 282
3 | Top = 214
4 | Width = 795
5 | Height = 562
6 | BorderIcons = [biSystemMenu, biMinimize]
7 | Caption = 'MediaInfo.Dll Example'
8 | Color = clBtnFace
9 | Font.Charset = DEFAULT_CHARSET
10 | Font.Color = clWindowText
11 | Font.Height = -11
12 | Font.Name = 'MS Sans Serif'
13 | Font.Style = []
14 | OldCreateOrder = False
15 | OnCreate = FormCreate
16 | PixelsPerInch = 96
17 | TextHeight = 13
18 | object Memo1: TMemo
19 | Left = 0
20 | Top = 0
21 | Width = 761
22 | Height = 513
23 | Font.Charset = DEFAULT_CHARSET
24 | Font.Color = clWindowText
25 | Font.Height = -11
26 | Font.Name = 'System'
27 | Font.Style = []
28 | ParentFont = False
29 | ScrollBars = ssVertical
30 | TabOrder = 0
31 | end
32 | end
33 |
--------------------------------------------------------------------------------
/MediaInfoLib/Project/Delphi/Example/HowToUse_Dll_.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/MediaInfoLib/Project/Delphi/Example/HowToUse_Dll_.pas
--------------------------------------------------------------------------------
/MediaInfoLib/Project/Delphi/Example/MediaInfo.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/MediaInfoLib/Project/Delphi/Example/MediaInfo.dll
--------------------------------------------------------------------------------
/MediaInfoLib/Project/Delphi/MediaInfoLib_Delphi.bdsgroup:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Example\HowToUse_Dll.bdsproj
15 | HowToUse_Dll.exe
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/PeakCreationProgressFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object PeakCreationProgressForm: TPeakCreationProgressForm
2 | Left = 334
3 | Top = 168
4 | AutoSize = True
5 | BorderIcons = [biSystemMenu, biMinimize]
6 | BorderStyle = bsSingle
7 | BorderWidth = 4
8 | Caption = 'Creating peak file...'
9 | ClientHeight = 25
10 | ClientWidth = 261
11 | Color = clBtnFace
12 | Font.Charset = DEFAULT_CHARSET
13 | Font.Color = clWindowText
14 | Font.Height = -11
15 | Font.Name = 'Microsoft Sans Serif'
16 | Font.Style = []
17 | FormStyle = fsStayOnTop
18 | OldCreateOrder = False
19 | Position = poMainFormCenter
20 | OnCloseQuery = FormCloseQuery
21 | PixelsPerInch = 96
22 | TextHeight = 13
23 | object ProgressBar1: TProgressBar
24 | Left = 0
25 | Top = 0
26 | Width = 261
27 | Height = 25
28 | TabOrder = 0
29 | end
30 | end
31 |
--------------------------------------------------------------------------------
/PeakCreationProgressFormUnit.pas:
--------------------------------------------------------------------------------
1 | // -----------------------------------------------------------------------------
2 | // VisualSubSync
3 | // -----------------------------------------------------------------------------
4 | // Copyright (C) 2003 Christophe Paris
5 | // -----------------------------------------------------------------------------
6 | // This Program is free software; you can redistribute it and/or modify
7 | // it under the terms of the GNU General Public License as published by
8 | // the Free Software Foundation; either version 2, or (at your option)
9 | // any later version.
10 | //
11 | // This Program is distributed in the hope that it will be useful,
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | // GNU General Public License for more details.
15 | //
16 | // You should have received a copy of the GNU General Public License
17 | // along with GNU Make; see the file COPYING. If not, write to
18 | // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19 | // http://www.gnu.org/copyleft/gpl.html
20 | // -----------------------------------------------------------------------------
21 |
22 | unit PeakCreationProgressFormUnit;
23 |
24 | interface
25 |
26 | uses
27 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
28 | Dialogs, ComCtrls;
29 |
30 | type
31 | TPeakCreationProgressForm = class(TForm)
32 | ProgressBar1: TProgressBar;
33 | procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
34 | protected
35 | procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
36 | private
37 | { Private declarations }
38 | public
39 | { Public declarations }
40 | procedure SetProgress(Value : Integer);
41 | end;
42 |
43 | implementation
44 |
45 | {$R *.dfm}
46 |
47 | // -----------------------------------------------------------------------------
48 |
49 | procedure TPeakCreationProgressForm.SetProgress(Value : Integer);
50 | begin
51 | ProgressBar1.Position := Value;
52 | end;
53 |
54 | // -----------------------------------------------------------------------------
55 |
56 | procedure TPeakCreationProgressForm.FormCloseQuery(Sender: TObject;
57 | var CanClose: Boolean);
58 | begin
59 | CanClose := False;
60 | end;
61 |
62 | // -----------------------------------------------------------------------------
63 |
64 | procedure TPeakCreationProgressForm.WMSysCommand(var Msg: TWMSysCommand);
65 | begin
66 | if Msg.CmdType = sc_minimize then
67 | begin
68 | Application.Minimize;
69 | end;
70 | inherited;
71 | end;
72 |
73 | // -----------------------------------------------------------------------------
74 | end.
75 | // -----------------------------------------------------------------------------
76 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # VisualSubSync-Enhanced
2 | The Visualsubsync enhanced version
3 |
4 | The natural enhanced extension of the awesome ToffParis project at https://sourceforge.net/projects/visualsubsync/
5 |
6 | It includes new functions like a complete internal filter graph support via mpc-home cinema and lav codecs, online dictionary
7 | automatic search (Italian language), new tools for resync, a new tool for progressive desync issues, new updated vsfilter for
8 | improved subtitles quality and much more...
9 |
10 | Starting from release 1.0.2.3 the english, french and german dictionaries are included into setup and
11 | now it support Thesaurus (MyThes format).
12 |
13 | Visualsubsync Enhanced is fully compatible with Windows Xp, Windows Vista, Windows 7, Windows 8/8.1 and now for Windows 10 and Windows 10 S
14 |
15 | Download here https://github.com/Red5goahead/VisualSubSync-Enhanced/releases the installation/setup.
16 |
17 | The Wikipage is here https://github.com/Red5goahead/VisualSubSync-Enhanced/wiki
18 |
19 | The Issues & Support page is here https://github.com/Red5goahead/VisualSubSync-Enhanced/issues
20 |
21 | It is also on **Windows Universal Platform** as Desktop Bridge application.
22 |
23 | Visit Microsoft Store here https://www.microsoft.com/store/apps/9nblggh4401s
24 |
25 | Please, read the privacy policy [here](http://myapppolicy.com/app/visualsubsync_enhanced)
26 |
--------------------------------------------------------------------------------
/Readme_Sources.txt:
--------------------------------------------------------------------------------
1 | VisualSubSync sources for Delphi 7.0
2 |
3 | Needed third party components :
4 |
5 | Virtual Treeview by Mike Lischke
6 | http://www.soft-gems.net/
7 |
8 | TNT Unicode by Troy Wolbrink
9 | http://www.tntware.com/delphicontrols/unicode/
10 |
11 |
--------------------------------------------------------------------------------
/Resources/CheckError.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/CheckError.bmp
--------------------------------------------------------------------------------
/Resources/Close.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Close.bmp
--------------------------------------------------------------------------------
/Resources/Delay.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Delay.bmp
--------------------------------------------------------------------------------
/Resources/Doc.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Doc.ico
--------------------------------------------------------------------------------
/Resources/Doc16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Doc16.png
--------------------------------------------------------------------------------
/Resources/Doc16.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Doc16.psd
--------------------------------------------------------------------------------
/Resources/Doc16_b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Doc16_b.png
--------------------------------------------------------------------------------
/Resources/Doc32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Doc32.png
--------------------------------------------------------------------------------
/Resources/Doc32.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Doc32.psd
--------------------------------------------------------------------------------
/Resources/Doc32_b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Doc32_b.png
--------------------------------------------------------------------------------
/Resources/Doc48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Doc48.png
--------------------------------------------------------------------------------
/Resources/Doc48.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Doc48.psd
--------------------------------------------------------------------------------
/Resources/Doc48_b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Doc48_b.png
--------------------------------------------------------------------------------
/Resources/Doc_b.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Doc_b.ico
--------------------------------------------------------------------------------
/Resources/EmptyDoc.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/EmptyDoc.ico
--------------------------------------------------------------------------------
/Resources/EmptyDoc16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/EmptyDoc16.png
--------------------------------------------------------------------------------
/Resources/EmptyDoc32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/EmptyDoc32.png
--------------------------------------------------------------------------------
/Resources/EmptyDoc48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/EmptyDoc48.png
--------------------------------------------------------------------------------
/Resources/EmptyDocFull.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/EmptyDocFull.ico
--------------------------------------------------------------------------------
/Resources/ErrorChecking.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ErrorChecking.bmp
--------------------------------------------------------------------------------
/Resources/Exit.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Exit.bmp
--------------------------------------------------------------------------------
/Resources/Find.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Find.bmp
--------------------------------------------------------------------------------
/Resources/FindNext.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/FindNext.bmp
--------------------------------------------------------------------------------
/Resources/Goto.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Goto.bmp
--------------------------------------------------------------------------------
/Resources/Help.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Help.bmp
--------------------------------------------------------------------------------
/Resources/IDEA.BMP:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/IDEA.BMP
--------------------------------------------------------------------------------
/Resources/InsertTextFile.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/InsertTextFile.bmp
--------------------------------------------------------------------------------
/Resources/Loop.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Loop.bmp
--------------------------------------------------------------------------------
/Resources/LoopEnd.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/LoopEnd.bmp
--------------------------------------------------------------------------------
/Resources/LoopStart.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/LoopStart.bmp
--------------------------------------------------------------------------------
/Resources/Move All Left1.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Move All Left1.bmp
--------------------------------------------------------------------------------
/Resources/Move All Right1.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Move All Right1.bmp
--------------------------------------------------------------------------------
/Resources/Move Left.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Move Left.bmp
--------------------------------------------------------------------------------
/Resources/Move Right.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Move Right.bmp
--------------------------------------------------------------------------------
/Resources/New.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/New.bmp
--------------------------------------------------------------------------------
/Resources/Next.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Next.bmp
--------------------------------------------------------------------------------
/Resources/Open.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Open.bmp
--------------------------------------------------------------------------------
/Resources/Pause.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Pause.bmp
--------------------------------------------------------------------------------
/Resources/Play.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Play.bmp
--------------------------------------------------------------------------------
/Resources/PlayEnd.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/PlayEnd.bmp
--------------------------------------------------------------------------------
/Resources/PlayStart.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/PlayStart.bmp
--------------------------------------------------------------------------------
/Resources/PlayToEnd.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/PlayToEnd.bmp
--------------------------------------------------------------------------------
/Resources/Preferences.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Preferences.bmp
--------------------------------------------------------------------------------
/Resources/Previous.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Previous.bmp
--------------------------------------------------------------------------------
/Resources/ProjectProp.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ProjectProp.bmp
--------------------------------------------------------------------------------
/Resources/RT-DelPoS.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/RT-DelPoS.bmp
--------------------------------------------------------------------------------
/Resources/RT-Reset.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/RT-Reset.bmp
--------------------------------------------------------------------------------
/Resources/RT-SetPoS.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/RT-SetPoS.bmp
--------------------------------------------------------------------------------
/Resources/Redo.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Redo.bmp
--------------------------------------------------------------------------------
/Resources/Report.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Report.bmp
--------------------------------------------------------------------------------
/Resources/Save.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Save.bmp
--------------------------------------------------------------------------------
/Resources/SaveAll.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/SaveAll.bmp
--------------------------------------------------------------------------------
/Resources/SaveAs.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/SaveAs.bmp
--------------------------------------------------------------------------------
/Resources/SceneChange.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/SceneChange.psd
--------------------------------------------------------------------------------
/Resources/ShowCursorFrame.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ShowCursorFrame.bmp
--------------------------------------------------------------------------------
/Resources/ShowStartFrame.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ShowStartFrame.bmp
--------------------------------------------------------------------------------
/Resources/ShowStopFrame.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ShowStopFrame.bmp
--------------------------------------------------------------------------------
/Resources/ShowVideo.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ShowVideo.bmp
--------------------------------------------------------------------------------
/Resources/Slack.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Slack.bmp
--------------------------------------------------------------------------------
/Resources/Stop.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Stop.bmp
--------------------------------------------------------------------------------
/Resources/Thumbs.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Thumbs.db
--------------------------------------------------------------------------------
/Resources/Undo.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Undo.bmp
--------------------------------------------------------------------------------
/Resources/VSS-Subtitle.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/VSS-Subtitle.ico
--------------------------------------------------------------------------------
/Resources/VSS.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/VSS.ico
--------------------------------------------------------------------------------
/Resources/Web.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/Web.bmp
--------------------------------------------------------------------------------
/Resources/ZoomAll.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ZoomAll.bmp
--------------------------------------------------------------------------------
/Resources/ZoomAll2.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ZoomAll2.bmp
--------------------------------------------------------------------------------
/Resources/ZoomIn.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ZoomIn.bmp
--------------------------------------------------------------------------------
/Resources/ZoomIn2.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ZoomIn2.bmp
--------------------------------------------------------------------------------
/Resources/ZoomOut.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ZoomOut.bmp
--------------------------------------------------------------------------------
/Resources/ZoomOut2.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ZoomOut2.bmp
--------------------------------------------------------------------------------
/Resources/ZoomSel.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ZoomSel.bmp
--------------------------------------------------------------------------------
/Resources/ZoomSel2.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ZoomSel2.bmp
--------------------------------------------------------------------------------
/Resources/ZoomVertical.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ZoomVertical.bmp
--------------------------------------------------------------------------------
/Resources/ZoomVertical2.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ZoomVertical2.bmp
--------------------------------------------------------------------------------
/Resources/ZoomVertical2_b.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ZoomVertical2_b.bmp
--------------------------------------------------------------------------------
/Resources/_CompileRes.bat:
--------------------------------------------------------------------------------
1 | brcc32.exe resources.rc
2 | pause
--------------------------------------------------------------------------------
/Resources/bold.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/bold.bmp
--------------------------------------------------------------------------------
/Resources/bookmark-new.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/bookmark-new.bmp
--------------------------------------------------------------------------------
/Resources/color.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/color.bmp
--------------------------------------------------------------------------------
/Resources/dictionary.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/dictionary.bmp
--------------------------------------------------------------------------------
/Resources/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/favicon.ico
--------------------------------------------------------------------------------
/Resources/format-indent-less.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/format-indent-less.bmp
--------------------------------------------------------------------------------
/Resources/format-indent-more.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/format-indent-more.bmp
--------------------------------------------------------------------------------
/Resources/gears_settings_utilities_execute-16.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/gears_settings_utilities_execute-16.bmp
--------------------------------------------------------------------------------
/Resources/githhub.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/githhub.ico
--------------------------------------------------------------------------------
/Resources/go-first.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/go-first.bmp
--------------------------------------------------------------------------------
/Resources/go-last.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/go-last.bmp
--------------------------------------------------------------------------------
/Resources/help-browser.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/help-browser.bmp
--------------------------------------------------------------------------------
/Resources/help/Mouse.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/help/Mouse.psd
--------------------------------------------------------------------------------
/Resources/help/MouseMini.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/help/MouseMini.psd
--------------------------------------------------------------------------------
/Resources/help/SSDetailsPage.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/help/SSDetailsPage.psd
--------------------------------------------------------------------------------
/Resources/help/SSExtractWAV.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/help/SSExtractWAV.psd
--------------------------------------------------------------------------------
/Resources/help/SSHomePage.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/help/SSHomePage.psd
--------------------------------------------------------------------------------
/Resources/help/SSMainDialog.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/help/SSMainDialog.psd
--------------------------------------------------------------------------------
/Resources/help/SSMainDialog2.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/help/SSMainDialog2.psd
--------------------------------------------------------------------------------
/Resources/help/SSNewProject.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/help/SSNewProject.psd
--------------------------------------------------------------------------------
/Resources/ico16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ico16.png
--------------------------------------------------------------------------------
/Resources/ico16.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ico16.psd
--------------------------------------------------------------------------------
/Resources/ico24.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ico24.psd
--------------------------------------------------------------------------------
/Resources/ico32.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ico32.psd
--------------------------------------------------------------------------------
/Resources/ico64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ico64.png
--------------------------------------------------------------------------------
/Resources/ico64.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/ico64.psd
--------------------------------------------------------------------------------
/Resources/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/icons.png
--------------------------------------------------------------------------------
/Resources/italic.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/italic.bmp
--------------------------------------------------------------------------------
/Resources/itasa.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/itasa.bmp
--------------------------------------------------------------------------------
/Resources/mkv.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/mkv.bmp
--------------------------------------------------------------------------------
/Resources/mkv.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/mkv.ico
--------------------------------------------------------------------------------
/Resources/noicon.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/noicon.bmp
--------------------------------------------------------------------------------
/Resources/resources.RES:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/resources.RES
--------------------------------------------------------------------------------
/Resources/resources.rc:
--------------------------------------------------------------------------------
1 | MAINICON2 ICON DISCARDABLE "Doc.ico"
2 | MAINICON3 ICON DISCARDABLE "Doc_b.ico"
--------------------------------------------------------------------------------
/Resources/size.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/size.bmp
--------------------------------------------------------------------------------
/Resources/tab-new.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/tab-new.bmp
--------------------------------------------------------------------------------
/Resources/thesaurus.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/thesaurus.bmp
--------------------------------------------------------------------------------
/Resources/underline.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/underline.bmp
--------------------------------------------------------------------------------
/Resources/vss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/Resources/vss.png
--------------------------------------------------------------------------------
/ResynchToolFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object ResynchToolForm: TResynchToolForm
2 | Left = 516
3 | Top = 332
4 | BorderStyle = bsToolWindow
5 | Caption = 'Desynch Tool'
6 | ClientHeight = 381
7 | ClientWidth = 345
8 | Color = clBtnFace
9 | Constraints.MinHeight = 150
10 | Constraints.MinWidth = 240
11 | Font.Charset = DEFAULT_CHARSET
12 | Font.Color = clWindowText
13 | Font.Height = -11
14 | Font.Name = 'Microsoft Sans Serif'
15 | Font.Style = []
16 | FormStyle = fsStayOnTop
17 | KeyPreview = True
18 | OldCreateOrder = False
19 | OnCreate = FormCreate
20 | OnDestroy = FormDestroy
21 | OnDeactivate = FormDeactivate
22 | PixelsPerInch = 96
23 | TextHeight = 13
24 | object vtvPoSList: TVirtualDrawTree
25 | Left = 0
26 | Top = 0
27 | Width = 345
28 | Height = 335
29 | Align = alClient
30 | Constraints.MinHeight = 50
31 | Header.AutoSizeIndex = 0
32 | Header.Font.Charset = DEFAULT_CHARSET
33 | Header.Font.Color = clWindowText
34 | Header.Font.Height = -11
35 | Header.Font.Name = 'Microsoft Sans Serif'
36 | Header.Font.Style = []
37 | Header.MainColumn = -1
38 | Header.Options = [hoColumnResize, hoDrag]
39 | PopupMenu = RTPopupMenu
40 | ScrollBarOptions.AlwaysVisible = True
41 | ScrollBarOptions.ScrollBars = ssVertical
42 | TabOrder = 0
43 | OnCompareNodes = vtvPoSListCompareNodes
44 | OnDblClick = vtvPoSListDblClick
45 | OnDrawNode = vtvPoSListDrawNode
46 | OnFocusChanged = vtvPoSListFocusChanged
47 | Columns = <>
48 | end
49 | object TntStatusBar1: TTntStatusBar
50 | Left = 0
51 | Top = 360
52 | Width = 345
53 | Height = 21
54 | Panels = <
55 | item
56 | Width = 50
57 | end>
58 | end
59 | object Panel1: TPanel
60 | Left = 0
61 | Top = 335
62 | Width = 345
63 | Height = 25
64 | Align = alBottom
65 | TabOrder = 2
66 | object GotoSelectedNodeButton: TButton
67 | Left = 3
68 | Top = 0
69 | Width = 160
70 | Height = 25
71 | Caption = 'Go to the selected sub'
72 | TabOrder = 0
73 | OnClick = GotoSelectedNodeButtonClick
74 | end
75 | object GotoSuggestedNodeButton: TButton
76 | Left = 165
77 | Top = 0
78 | Width = 160
79 | Height = 25
80 | Caption = 'Go to the suggested sub'
81 | Enabled = False
82 | TabOrder = 1
83 | OnClick = GotoSuggestedNodeButtonClick
84 | end
85 | end
86 | object RTPopupMenu: TTntPopupMenu
87 | Left = 16
88 | Top = 192
89 | object DeleteselectedPoS1: TTntMenuItem
90 | Caption = 'Delete selected PoS'
91 | OnClick = DeleteselectedPoS1Click
92 | end
93 | end
94 | end
95 |
--------------------------------------------------------------------------------
/SRTParserUnit.pas:
--------------------------------------------------------------------------------
1 | unit SRTParserUnit;
2 |
3 | interface
4 |
5 | uses Classes, Contnrs, TntClasses;
6 |
7 | type
8 | TSRTSubtitle = class
9 | Start, Stop : Integer;
10 | Text : WideString;
11 | end;
12 |
13 | TSRTParser = class
14 | private
15 | FIsUTF8 : Boolean;
16 | FAutoCorrectedFile : Boolean;
17 | FSubList : TObjectList;
18 | public
19 | constructor Create;
20 | destructor Destroy; override;
21 |
22 | function Load(Stream : TStream) : Integer; overload;
23 | function Load(Source : TTntStrings) : Integer; overload;
24 | function Load(Filename : WideString) : Integer; overload;
25 |
26 | function GetCount : Integer;
27 | function GetAt(Index : Integer) : TSRTSubtitle;
28 | published
29 | property IsUTF8 : Boolean read FIsUTF8;
30 | property AutoCorrectedFile : Boolean read FAutoCorrectedFile;
31 | end;
32 |
33 | implementation
34 |
35 | uses MiscToolsUnit, SysUtils, TntSysUtils;
36 |
37 | constructor TSRTParser.Create;
38 | begin
39 | FSubList := TObjectList.Create(True);
40 | FIsUTF8 := False;
41 | FAutoCorrectedFile := False;
42 | end;
43 |
44 | destructor TSRTParser.Destroy;
45 | begin
46 | inherited;
47 | FreeAndNil(FSubList);
48 | end;
49 |
50 | function TSRTParser.GetCount : Integer;
51 | begin
52 | Result := FSubList.Count;
53 | end;
54 |
55 | function TSRTParser.GetAt(Index : Integer) : TSRTSubtitle;
56 | begin
57 | Result := TSRTSubtitle(FSubList[Index]);
58 | end;
59 |
60 | function TSRTParser.Load(Stream : TStream) : Integer;
61 | var Source : TTntStringList;
62 | begin
63 | Source := MyTTntStringList.Create;
64 | Source.LoadFromStream(Stream);
65 | Result := Load(Source);
66 | Source.Free;
67 | end;
68 |
69 | function TSRTParser.Load(Source : TTntStrings) : Integer;
70 | var i, lineIndex : integer;
71 | Start, Stop, NextStart, NextStop : Integer;
72 | S, SubText : WideString;
73 | Sub : TSRTSubtitle;
74 | begin
75 | FIsUTF8 := (Source.LastFileCharSet <> csAnsi);
76 | FAutoCorrectedFile := False;
77 | lineIndex := 0;
78 |
79 | // Add a blank line because TTntStringList is eating the last line
80 | // if it's blank. This is safe because we will trim the text later anyway.
81 | Source.Add('');
82 |
83 | // Skip lines until a timestamps line
84 | while (lineIndex < Source.Count) do
85 | begin
86 | S := Source[lineIndex];
87 | Inc(lineIndex);
88 | if IsTimeStampsLine(S, Start, Stop) then
89 | Break;
90 | end;
91 |
92 | while (lineIndex < Source.Count) do
93 | begin
94 | // Copy text until a timestamps line
95 | SubText := '';
96 | while (lineIndex < Source.Count) do
97 | begin
98 | S := Source[lineIndex];
99 | Inc(lineIndex);
100 | if IsTimeStampsLine(S, NextStart, NextStop) then
101 | Break;
102 | SubText := SubText + Trim(S) + CRLF;
103 | end;
104 | SubText := TrimRight(SubText);
105 | if (Start <> -1) and (Stop <> -1) then
106 | begin
107 | // Auto fix timestamp if this subtitle stop time is equal
108 | // to next subtitle start time
109 | if (Stop = NextStart) then
110 | begin
111 | FAutoCorrectedFile := True;
112 | Dec(Stop);
113 | end;
114 | // Remove the index line if any
115 | i := RPos(CRLF, SubText);
116 | if ((i > 0) and (StrToIntDef(Copy(SubText, i+2, MaxInt), -1) <> -1) and (lineIndex < Source.Count)) then
117 | begin
118 | Delete(SubText, i, MaxInt);
119 | end;
120 | Sub := TSRTSubtitle.Create;
121 | Sub.Start := Start;
122 | Sub.Stop := Stop;
123 | Sub.Text := Trim(SubText);
124 |
125 | FSubList.Add(Sub);
126 | end;
127 | Start := NextStart;
128 | Stop := NextStop;
129 | end;
130 |
131 | Result := FSubList.Count;
132 | end;
133 |
134 | function TSRTParser.Load(Filename : WideString) : Integer;
135 | var Source : TTntStringList;
136 | begin
137 | Source := MyTTntStringList.Create;
138 | Source.LoadFromFile(Filename);
139 | Result := Load(Source);
140 | Source.Free;
141 | end;
142 |
143 | end.
144 |
--------------------------------------------------------------------------------
/SilentZoneFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object SilentZoneForm: TSilentZoneForm
2 | Left = 246
3 | Top = 77
4 | Width = 314
5 | Height = 331
6 | BorderStyle = bsSizeToolWin
7 | BorderWidth = 4
8 | Caption = 'Silent zones'
9 | Color = clBtnFace
10 | Font.Charset = DEFAULT_CHARSET
11 | Font.Color = clWindowText
12 | Font.Height = -11
13 | Font.Name = 'Microsoft Sans Serif'
14 | Font.Style = []
15 | FormStyle = fsStayOnTop
16 | KeyPreview = True
17 | OldCreateOrder = False
18 | OnClose = FormClose
19 | OnDestroy = FormDestroy
20 | OnKeyDown = FormKeyDown
21 | PixelsPerInch = 96
22 | TextHeight = 13
23 | object TntBevel1: TTntBevel
24 | Left = 0
25 | Top = 49
26 | Width = 290
27 | Height = 4
28 | Align = alTop
29 | Shape = bsSpacer
30 | end
31 | object lbSilentZones: TTntListBox
32 | Left = 0
33 | Top = 53
34 | Width = 290
35 | Height = 231
36 | Align = alClient
37 | ItemHeight = 13
38 | TabOrder = 0
39 | OnDblClick = lbSilentZonesDblClick
40 | end
41 | object TntGroupBox1: TTntGroupBox
42 | Left = 0
43 | Top = 0
44 | Width = 290
45 | Height = 49
46 | Align = alTop
47 | Caption = ' Settings '
48 | TabOrder = 1
49 | DesignSize = (
50 | 290
51 | 49)
52 | object TntLabel1: TTntLabel
53 | Left = 8
54 | Top = 20
55 | Width = 50
56 | Height = 13
57 | Caption = 'Threshold:'
58 | end
59 | object TntLabel2: TTntLabel
60 | Left = 128
61 | Top = 20
62 | Width = 43
63 | Height = 13
64 | Caption = 'Duration:'
65 | end
66 | object edThreshold: TTntEdit
67 | Left = 64
68 | Top = 16
69 | Width = 41
70 | Height = 21
71 | Hint = 'Threshold between 0 and 32767'
72 | ParentShowHint = False
73 | ShowHint = True
74 | TabOrder = 0
75 | Text = '100'
76 | end
77 | object edDuration: TTntEdit
78 | Left = 176
79 | Top = 16
80 | Width = 41
81 | Height = 21
82 | Hint = 'Minimum duration of the silent zone in ms (100..9999)'
83 | ParentShowHint = False
84 | ShowHint = True
85 | TabOrder = 1
86 | Text = '500'
87 | end
88 | object udDuration: TTntUpDown
89 | Left = 217
90 | Top = 16
91 | Width = 15
92 | Height = 21
93 | Associate = edDuration
94 | Min = 100
95 | Max = 9999
96 | Increment = 100
97 | Position = 500
98 | TabOrder = 2
99 | end
100 | object udThreshold: TTntUpDown
101 | Left = 105
102 | Top = 16
103 | Width = 15
104 | Height = 21
105 | Associate = edThreshold
106 | Max = 32767
107 | Increment = 10
108 | Position = 100
109 | TabOrder = 3
110 | end
111 | object bttUpdate: TTntButton
112 | Left = 240
113 | Top = 16
114 | Width = 47
115 | Height = 25
116 | Anchors = [akTop, akRight]
117 | Caption = 'Update'
118 | TabOrder = 4
119 | OnClick = bttUpdateClick
120 | end
121 | end
122 | end
123 |
--------------------------------------------------------------------------------
/SilentZoneFormUnit.pas:
--------------------------------------------------------------------------------
1 | unit SilentZoneFormUnit;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, StdCtrls, TntStdCtrls, ExtCtrls, TntExtCtrls, Contnrs, WAVDisplayerUnit,
8 | ComCtrls, TntComCtrls;
9 |
10 | type
11 | TSilentZoneForm = class(TForm)
12 | lbSilentZones: TTntListBox;
13 | TntGroupBox1: TTntGroupBox;
14 | edThreshold: TTntEdit;
15 | TntLabel1: TTntLabel;
16 | TntBevel1: TTntBevel;
17 | TntLabel2: TTntLabel;
18 | edDuration: TTntEdit;
19 | udDuration: TTntUpDown;
20 | udThreshold: TTntUpDown;
21 | bttUpdate: TTntButton;
22 | procedure lbSilentZonesDblClick(Sender: TObject);
23 | procedure bttUpdateClick(Sender: TObject);
24 | procedure FormDestroy(Sender: TObject);
25 | procedure FormKeyDown(Sender: TObject; var Key: Word;
26 | Shift: TShiftState);
27 | procedure FormClose(Sender: TObject; var Action: TCloseAction);
28 | private
29 | { Private declarations }
30 | FWAVDisplayer : TWAVDisplayer;
31 | FZoneList : TObjectList;
32 |
33 | procedure FillZone(ZoneList : TList);
34 | public
35 | { Public declarations }
36 | constructor Create(AOwner: TComponent; WAVDisplayer : TWAVDisplayer); reintroduce;
37 |
38 | procedure Clear;
39 | function GetThreshold : Integer;
40 | function GetDuration : Integer;
41 | procedure UpdateData;
42 |
43 | end;
44 |
45 | var
46 | SilentZoneForm: TSilentZoneForm;
47 |
48 | implementation
49 |
50 | uses MiscToolsUnit, main;
51 |
52 | {$R *.dfm}
53 |
54 | constructor TSilentZoneForm.Create(AOwner: TComponent;
55 | WAVDisplayer : TWAVDisplayer);
56 | begin
57 | inherited Create(AOwner);
58 | FWAVDisplayer := WAVDisplayer;
59 | FZoneList := TObjectList.Create(True);
60 | end;
61 |
62 | procedure TSilentZoneForm.FormDestroy(Sender: TObject);
63 | begin
64 | FreeAndNil(FZoneList);
65 | end;
66 |
67 | procedure TSilentZoneForm.Clear;
68 | begin
69 | lbSilentZones.Clear;
70 | FZoneList.Clear;
71 | end;
72 |
73 | procedure TSilentZoneForm.FillZone(ZoneList : TList);
74 | var i : Integer;
75 | SilentRange : TSilentRangeInfo;
76 | Str : WideString;
77 | SilentDuration, MinDuration : Integer;
78 | begin
79 | MinDuration := GetDuration;
80 | lbSilentZones.Items.BeginUpdate;
81 | for i:=0 to ZoneList.Count-1 do
82 | begin
83 | SilentRange := TSilentRangeInfo(ZoneList[i]);
84 | SilentDuration := SilentRange.Stop - SilentRange.Start;
85 | if (SilentDuration >= MinDuration) then
86 | begin
87 | Str := Format('%s -> %s (%.1f)', [TimeMsToString(SilentRange.Start),
88 | TimeMsToString(SilentRange.Stop),
89 | (SilentRange.RmsSum / SilentRange.RmsCount)]);
90 | lbSilentZones.Items.AddObject(Str, SilentRange);
91 | end;
92 | end;
93 | lbSilentZones.Items.EndUpdate;
94 | end;
95 |
96 | procedure TSilentZoneForm.lbSilentZonesDblClick(Sender: TObject);
97 | var SilentRange : TSilentRangeInfo;
98 | begin
99 | if (lbSilentZones.ItemIndex <> -1) then
100 | begin
101 | SilentRange := TSilentRangeInfo(lbSilentZones.Items.Objects[lbSilentZones.ItemIndex]);
102 | MainForm.SetSelection(SilentRange.Start, SilentRange.Stop);
103 | end;
104 | end;
105 |
106 | function TSilentZoneForm.GetThreshold : Integer;
107 | begin
108 | Result := udThreshold.Position;
109 | end;
110 |
111 | function TSilentZoneForm.GetDuration : Integer;
112 | begin
113 | Result := udDuration.Position;
114 | end;
115 |
116 | procedure TSilentZoneForm.bttUpdateClick(Sender: TObject);
117 | begin
118 | UpdateData;
119 | end;
120 |
121 | procedure TSilentZoneForm.UpdateData;
122 | begin
123 | Clear;
124 | FWAVDisplayer.DetectSilentZone(FZoneList, GetThreshold, 100);
125 | SilentZoneForm.FillZone(FZoneList);
126 | end;
127 |
128 | procedure TSilentZoneForm.FormKeyDown(Sender: TObject; var Key: Word;
129 | Shift: TShiftState);
130 | begin
131 | if (Key = VK_ESCAPE) then
132 | begin
133 | Close;
134 | end;
135 | end;
136 |
137 | procedure TSilentZoneForm.FormClose(Sender: TObject;
138 | var Action: TCloseAction);
139 | begin
140 | MainForm.ConfigObject.SilentZoneDuration := SilentZoneForm.udDuration.Position;
141 | MainForm.ConfigObject.SilentZoneThreshold := SilentZoneForm.udThreshold.Position;
142 | end;
143 |
144 | end.
145 |
--------------------------------------------------------------------------------
/SourceFileOperationCancel.dfm:
--------------------------------------------------------------------------------
1 | object SourceFileOperationCancel: TSourceFileOperationCancel
2 | Left = 471
3 | Top = 345
4 | BorderIcons = []
5 | BorderStyle = bsSingle
6 | BorderWidth = 4
7 | Caption = 'Operation on video source file'
8 | ClientHeight = 84
9 | ClientWidth = 518
10 | Color = clBtnFace
11 | Font.Charset = DEFAULT_CHARSET
12 | Font.Color = clWindowText
13 | Font.Height = -11
14 | Font.Name = 'MS Sans Serif'
15 | Font.Style = []
16 | OldCreateOrder = False
17 | Position = poMainFormCenter
18 | OnClose = FormClose
19 | PixelsPerInch = 96
20 | TextHeight = 13
21 | object FFMpegOutputMessage: TLabel
22 | Left = 4
23 | Top = 34
24 | Width = 509
25 | Height = 13
26 | AutoSize = False
27 | Font.Charset = DEFAULT_CHARSET
28 | Font.Color = clBlack
29 | Font.Height = -11
30 | Font.Name = 'MS Sans Serif'
31 | Font.Style = []
32 | ParentFont = False
33 | end
34 | object VideoSourceOperationExecuteCancel: TTntButton
35 | Left = 0
36 | Top = 56
37 | Width = 513
38 | Height = 24
39 | Caption = 'Cancel'
40 | TabOrder = 0
41 | OnClick = VideoSourceOperationExecuteCancelClick
42 | end
43 | object FFMpegOutputProgressBar: TTntProgressBar
44 | Left = 3
45 | Top = 2
46 | Width = 510
47 | Height = 27
48 | Smooth = True
49 | Step = 5
50 | TabOrder = 1
51 | end
52 | object FakeWavDisplayerPanel: TPanel
53 | Left = 472
54 | Top = 37
55 | Width = 33
56 | Height = 15
57 | Color = clSkyBlue
58 | TabOrder = 2
59 | Visible = False
60 | end
61 | object StartTimer: TTimer
62 | Interval = 500
63 | OnTimer = StartTimerTimer
64 | Left = 424
65 | Top = 24
66 | end
67 | end
68 |
--------------------------------------------------------------------------------
/SubtitleTimingFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object SubtitleTimingForm: TSubtitleTimingForm
2 | Left = 433
3 | Top = 338
4 | ActiveControl = edTime
5 | BorderIcons = [biSystemMenu]
6 | BorderStyle = bsSingle
7 | Caption = 'Change subtitle timing...'
8 | ClientHeight = 85
9 | ClientWidth = 301
10 | Color = clBtnFace
11 | Font.Charset = DEFAULT_CHARSET
12 | Font.Color = clWindowText
13 | Font.Height = -11
14 | Font.Name = 'Microsoft Sans Serif'
15 | Font.Style = []
16 | FormStyle = fsStayOnTop
17 | OldCreateOrder = False
18 | OnClose = FormClose
19 | PixelsPerInch = 96
20 | TextHeight = 13
21 | object bttClose: TTntButton
22 | Left = 158
23 | Top = 48
24 | Width = 83
25 | Height = 25
26 | Caption = 'Close'
27 | ModalResult = 2
28 | TabOrder = 2
29 | OnClick = bttCloseClick
30 | end
31 | object brrOk: TTntButton
32 | Left = 62
33 | Top = 48
34 | Width = 83
35 | Height = 25
36 | Caption = 'Ok'
37 | ModalResult = 1
38 | TabOrder = 1
39 | end
40 | object edTime: TMaskEdit
41 | Left = 103
42 | Top = 9
43 | Width = 91
44 | Height = 24
45 | EditMask = '!99:99:99.999;1;0'
46 | Font.Charset = DEFAULT_CHARSET
47 | Font.Color = clWindowText
48 | Font.Height = -13
49 | Font.Name = 'Microsoft Sans Serif'
50 | Font.Style = [fsBold]
51 | MaxLength = 12
52 | ParentFont = False
53 | TabOrder = 0
54 | Text = ' : : . '
55 | end
56 | end
57 |
--------------------------------------------------------------------------------
/SubtitleTimingFormUnit.pas:
--------------------------------------------------------------------------------
1 | unit SubtitleTimingFormUnit;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, ComCtrls, StdCtrls, Mask, TntStdCtrls;
8 |
9 | type
10 | TSubtitleTimingForm = class(TForm)
11 | bttClose: TTntButton;
12 | brrOk: TTntButton;
13 | edTime: TMaskEdit;
14 | procedure FormClose(Sender: TObject; var Action: TCloseAction);
15 | procedure bttCloseClick(Sender: TObject);
16 | private
17 | { Private declarations }
18 | public
19 | { Public declarations }
20 | end;
21 |
22 | var
23 | SubtitleTimingForm: TSubtitleTimingForm;
24 |
25 | implementation
26 |
27 | {$R *.dfm}
28 |
29 | procedure TSubtitleTimingForm.FormClose(Sender: TObject;
30 | var Action: TCloseAction);
31 | begin
32 | Action := caFree;
33 | end;
34 |
35 | procedure TSubtitleTimingForm.bttCloseClick(Sender: TObject);
36 | begin
37 | Close;
38 | end;
39 |
40 | end.
41 |
--------------------------------------------------------------------------------
/SuggestionFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object SuggestionForm: TSuggestionForm
2 | Left = 209
3 | Top = 115
4 | Width = 273
5 | Height = 436
6 | BorderIcons = [biSystemMenu, biMinimize]
7 | BorderStyle = bsSizeToolWin
8 | BorderWidth = 4
9 | Caption = 'Suggestions'
10 | Color = clBtnFace
11 | Constraints.MinHeight = 200
12 | Constraints.MinWidth = 100
13 | Font.Charset = DEFAULT_CHARSET
14 | Font.Color = clWindowText
15 | Font.Height = -11
16 | Font.Name = 'Microsoft Sans Serif'
17 | Font.Style = []
18 | FormStyle = fsStayOnTop
19 | KeyPreview = True
20 | OldCreateOrder = False
21 | OnCreate = FormCreate
22 | OnDestroy = FormDestroy
23 | OnKeyDown = FormKeyDown
24 | DesignSize = (
25 | 249
26 | 389)
27 | PixelsPerInch = 96
28 | TextHeight = 13
29 | object vtvSuggestionsLst: TVirtualDrawTree
30 | Left = 0
31 | Top = 0
32 | Width = 257
33 | Height = 321
34 | Anchors = [akLeft, akTop, akRight, akBottom]
35 | Font.Charset = ANSI_CHARSET
36 | Font.Color = clWindowText
37 | Font.Height = -11
38 | Font.Name = 'Arial'
39 | Font.Style = []
40 | Header.AutoSizeIndex = 0
41 | Header.Font.Charset = ANSI_CHARSET
42 | Header.Font.Color = clWindowText
43 | Header.Font.Height = -11
44 | Header.Font.Name = '@Arial Unicode MS'
45 | Header.Font.Style = []
46 | Header.MainColumn = -1
47 | Header.Options = [hoColumnResize, hoDrag]
48 | ParentFont = False
49 | PopupMenu = TntPopupMenu1
50 | TabOrder = 0
51 | TreeOptions.SelectionOptions = [toMultiSelect]
52 | OnDblClick = vtvSuggestionsLstDblClick
53 | OnDrawNode = vtvSuggestionsLstDrawNode
54 | OnFocusChanged = vtvSuggestionsLstFocusChanged
55 | Columns = <>
56 | end
57 | object MemoSuggPreview: TTntMemo
58 | Left = 0
59 | Top = 328
60 | Width = 257
61 | Height = 73
62 | Anchors = [akLeft, akRight, akBottom]
63 | Font.Charset = ANSI_CHARSET
64 | Font.Color = clWindowText
65 | Font.Height = -11
66 | Font.Name = 'Arial'
67 | Font.Style = [fsBold]
68 | ParentFont = False
69 | ReadOnly = True
70 | TabOrder = 1
71 | end
72 | object TntPopupMenu1: TTntPopupMenu
73 | Left = 8
74 | Top = 8
75 | object pmiClearSelected: TTntMenuItem
76 | Caption = 'Clear selected'
77 | OnClick = pmiClearSelectedClick
78 | end
79 | object pmiClearAll: TTntMenuItem
80 | Caption = 'Clear all'
81 | OnClick = pmiClearAllClick
82 | end
83 | end
84 | end
85 |
--------------------------------------------------------------------------------
/ThirdParty/DirectX-2012/D3DX8.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/DirectX-2012/D3DX8.pas
--------------------------------------------------------------------------------
/ThirdParty/DirectX-2012/DX7toDX8.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/DirectX-2012/DX7toDX8.pas
--------------------------------------------------------------------------------
/ThirdParty/DirectX-2012/DirectShow9.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/DirectX-2012/DirectShow9.pas
--------------------------------------------------------------------------------
/ThirdParty/DirectX-2012/DirectX.inc:
--------------------------------------------------------------------------------
1 | {******************************************************************************}
2 | { }
3 | { The contents of this file are subject to the Mozilla Public License Version }
4 | { 1.1 (the "License"); you may not use this file except in compliance with the }
5 | { License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ }
6 | { }
7 | { Software distributed under the License is distributed on an "AS IS" basis, }
8 | { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
9 | { the specific language governing rights and limitations under the License. }
10 | { }
11 | { The Original Code is DirectX.inc. }
12 | { }
13 | {******************************************************************************}
14 | {$IFNDEF __TMT__}
15 | {$IFNDEF FPC}
16 |
17 | // *** Borland compilers support ***
18 | {$INCLUDE Jedi.inc}
19 |
20 | {$DEFINE BORLAND}
21 | {$DEFINE TYPE_IDENTITY}
22 | {$DEFINE SUPPORTS_EXCEPTIONS}
23 | {$IFDEF COMPILER6_UP}
24 | {$DEFINE SUPPORTS_EXPL_ENUMS} // Enumerated types with explicitly assigned ordinality
25 | {$IFNDEF BCB6_UP}
26 | // C++Builder6 hack: Delphi 6-7 compilers have bugged .HPP generation for
27 | // enums in some cases (and D6 compiler is included with BCB6)
28 | {$DEFINE SUPPORTS_EXPL_ENUMS_except_BCB6}
29 | {$ENDIF}
30 | {$ENDIF}
31 |
32 | // Additional settings
33 | {$BOOLEVAL OFF}
34 | {$MINENUMSIZE 4}
35 | {$ALIGN ON}
36 |
37 | {$IFDEF COMPILER7_UP}
38 | {$WARN UNSAFE_CODE OFF}
39 | {$WARN UNSAFE_TYPE OFF}
40 | {$WARN UNSAFE_CAST OFF}
41 | {$ENDIF}
42 |
43 | {$IFDEF COMPILER9_UP}
44 | {$IFDEF DEBUG}
45 | {$INLINE OFF}
46 | {$ELSE}
47 | {$INLINE ON}
48 | {$ENDIF}
49 | {$ENDIF}
50 | {$ELSE}
51 |
52 | // *** FreePascal compiler support ***
53 | {$INCLUDE Jedi.inc}
54 |
55 | {$APPTYPE GUI}
56 |
57 | // Additional settings
58 | {$H+} // Long Strings
59 | {$BOOLEVAL OFF}
60 | {$MINENUMSIZE 4}
61 | {$ALIGN ON}
62 | {$PACKRECORDS 8}
63 | {$INLINE ON}
64 |
65 | {$UNDEF TYPE_IDENTITY}
66 | {$DEFINE SUPPORTS_EXCEPTIONS}
67 | {$DEFINE SUPPORTS_INLINE}
68 | {$DEFINE COMPILER5_UP} // Specially for DirectDraw.pas
69 |
70 | {$ENDIF}
71 | {$ELSE}
72 | // *** TMT Pascal compiler support ***
73 | {.$I TMT.inc}
74 |
75 | // TMT compiler support
76 | {$IFNDEF __TMT__}
77 | TMT pascal compiler required here
78 | {$ENDIF}
79 |
80 | // ADD IFOPT for TMT
81 |
82 | {$DEFINE TMT}
83 |
84 | {$IFDEF __WIN32__}
85 | {$DEFINE WIN32}
86 | {$ENDIF}
87 |
88 | {$IFDEF __VER5__}
89 | {$DEFINE TMT5}
90 | {$DEFINE TMT5_UP}
91 | {$DEFINE TMT4_UP}
92 | {$DEFINE TMT3_UP}
93 | {$ENDIF}
94 |
95 | {$IFDEF __VER4__}
96 | {$DEFINE TMT4}
97 | {$DEFINE TMT4_UP}
98 | {$DEFINE TMT3_UP}
99 | {$ENDIF}
100 |
101 | {$IFDEF __VER3__}
102 | {$DEFINE TMT3}
103 | {$DEFINE TMT3_UP}
104 | {$ENDIF}
105 |
106 | {$IFDEF TMT4_UP}
107 | {$DEFINE SUPPORTS_INTERFACE}
108 | {$ENDIF}
109 |
110 | // Additional settings
111 | {$A+} // Word alignment data
112 | {$OA+} // Objects and structures align
113 | {$Z4} // Set minimum size of enumerated type to 4
114 | {$ENDIF}
115 |
116 |
117 | // By default use most recent DirectX sub-version
118 |
119 | {$IFNDEF DX81}
120 | {$IFNDEF DX80}
121 | {$DEFINE DX81}
122 | {$ENDIF}
123 | {$ENDIF}
124 |
125 |
126 | {$IFNDEF DX92}
127 | {$IFNDEF DX91}
128 | {$IFNDEF DX90}
129 | {$DEFINE DX92}
130 | {$ENDIF}
131 | {$ENDIF}
132 | {$ENDIF}
133 |
134 |
--------------------------------------------------------------------------------
/ThirdParty/EZCrypt.pas:
--------------------------------------------------------------------------------
1 | unit EZCrypt;
2 |
3 | {modeled by Ben Hochstrasser(bhoc@surfeu.ch) after some code snippet from borland}
4 |
5 | interface
6 |
7 | uses Windows, Classes;
8 |
9 | type
10 | TWordTriple = Array[0..2] of Word;
11 |
12 | function FileEncrypt(InFile, OutFile: String; Key: TWordTriple): boolean;
13 | function FileDecrypt(InFile, OutFile: String; Key: TWordTriple): boolean;
14 | function TextEncrypt(const s: string; Key: TWordTriple): string;
15 | function TextDecrypt(const s: string; Key: TWordTriple): string;
16 | function MemoryEncrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean;
17 | function MemoryDecrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean;
18 |
19 | implementation
20 |
21 | function MemoryEncrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean;
22 | var
23 | pIn, pOut: ^byte;
24 | i : Cardinal;
25 | begin
26 | if SrcSize = TargetSize then
27 | begin
28 | pIn := Src;
29 | pOut := Target;
30 | for i := 1 to SrcSize do
31 | begin
32 | pOut^ := pIn^ xor (Key[2] shr 8);
33 | Key[2] := Byte(pIn^ + Key[2]) * Key[0] + Key[1];
34 | inc(pIn);
35 | inc(pOut);
36 | end;
37 | Result := True;
38 | end else
39 | Result := False;
40 | end;
41 |
42 | function MemoryDecrypt(Src: Pointer; SrcSize: Cardinal; Target: Pointer; TargetSize: Cardinal; Key: TWordTriple): boolean;
43 | var
44 | pIn, pOut: ^byte;
45 | i : Cardinal;
46 | begin
47 | if SrcSize = TargetSize then
48 | begin
49 | pIn := Src;
50 | pOut := Target;
51 | for i := 1 to SrcSize do
52 | begin
53 | pOut^ := pIn^ xor (Key[2] shr 8);
54 | Key[2] := byte(pOut^ + Key[2]) * Key[0] + Key[1];
55 | inc(pIn);
56 | inc(pOut);
57 | end;
58 | Result := True;
59 | end else
60 | Result := False;
61 | end;
62 |
63 | function TextCrypt(const s: string; Key: TWordTriple; Encrypt: Boolean): string;
64 | var
65 | bOK: Boolean;
66 | begin
67 | SetLength(Result, Length(s));
68 | if Encrypt then
69 | bOK := MemoryEncrypt(PChar(s), Length(s), PChar(Result), Length(Result), Key)
70 | else
71 | bOK := MemoryDecrypt(PChar(s), Length(s), PChar(Result), Length(Result), Key);
72 | if not bOK then Result := '';
73 | end;
74 |
75 | function FileCrypt(InFile, OutFile: String; Key: TWordTriple; Encrypt: Boolean): boolean;
76 | var
77 | MIn, MOut: TMemoryStream;
78 | begin
79 | MIn := TMemoryStream.Create;
80 | MOut := TMemoryStream.Create;
81 | Try
82 | MIn.LoadFromFile(InFile);
83 | MOut.SetSize(MIn.Size);
84 | if Encrypt then
85 | Result := MemoryEncrypt(MIn.Memory, MIn.Size, MOut.Memory, MOut.Size, Key)
86 | else
87 | Result := MemoryDecrypt(MIn.Memory, MIn.Size, MOut.Memory, MOut.Size, Key);
88 | MOut.SaveToFile(OutFile);
89 | finally
90 | MOut.Free;
91 | MIn.Free;
92 | end;
93 | end;
94 |
95 | function TextEncrypt(const s: string; Key: TWordTriple): string;
96 | begin
97 | Result := TextCrypt(s, Key, True);
98 | end;
99 |
100 | function TextDecrypt(const s: string; Key: TWordTriple): string;
101 | begin
102 | Result := TextCrypt(s, Key, False);
103 | end;
104 |
105 | function FileEncrypt(InFile, OutFile: String; Key: TWordTriple): boolean;
106 | begin
107 | Result := FileCrypt(InFile, OutFile, Key, True);
108 | end;
109 |
110 | function FileDecrypt(InFile, OutFile: String; Key: TWordTriple): boolean;
111 | begin
112 | Result := FileCrypt(InFile, OutFile, Key, False);
113 | end;
114 |
115 | end.
--------------------------------------------------------------------------------
/ThirdParty/FastMM/FastMM4.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/FastMM/FastMM4.pas
--------------------------------------------------------------------------------
/ThirdParty/FastMM/FastMM4Messages.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/FastMM/FastMM4Messages.pas
--------------------------------------------------------------------------------
/ThirdParty/FastcodePatch.pas:
--------------------------------------------------------------------------------
1 | unit FastcodePatch;
2 |
3 | (* ***** BEGIN LICENSE BLOCK *****
4 | * Version: MPL 1.1
5 | *
6 | * The contents of this file are subject to the Mozilla Public License Version
7 | * 1.1 (the "License"); you may not use this file except in compliance with
8 | * the License. You may obtain a copy of the License at
9 | * http://www.mozilla.org/MPL/
10 | *
11 | * Software distributed under the License is distributed on an "AS IS" basis,
12 | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 | * for the specific language governing rights and limitations under the
14 | * License.
15 | *
16 | * The Original Code is Fastcode
17 | *
18 | * The Initial Developer of the Original Code is Fastcode
19 | *
20 | * Portions created by the Initial Developer are Copyright (C) 2002-2005
21 | * the Initial Developer. All Rights Reserved.
22 | *
23 | * Contributor(s):
24 | * Charalabos Michael
25 | *
26 | * ***** END LICENSE BLOCK ***** *)
27 |
28 | interface
29 |
30 | function FastcodeGetAddress(AStub: Pointer): Pointer;
31 | procedure FastcodeAddressPatch(const ASource, ADestination: Pointer);
32 |
33 | implementation
34 |
35 | uses
36 | Windows;
37 |
38 | type
39 | PJump = ^TJump;
40 | TJump = packed record
41 | OpCode: Byte;
42 | Distance: Pointer;
43 | end;
44 |
45 | function FastcodeGetAddress(AStub: Pointer): Pointer;
46 | begin
47 | if PBYTE(AStub)^ = $E8 then
48 | begin
49 | Inc(Integer(AStub));
50 | Result := Pointer(Integer(AStub) + SizeOf(Pointer) + PInteger(AStub)^);
51 | end
52 | else
53 | Result := nil;
54 | end;
55 |
56 | procedure FastcodeAddressPatch(const ASource, ADestination: Pointer);
57 | const
58 | Size = SizeOf(TJump);
59 | var
60 | NewJump: PJump;
61 | OldProtect: Cardinal;
62 | begin
63 | if VirtualProtect(ASource, Size, PAGE_EXECUTE_READWRITE, OldProtect) then
64 | begin
65 | NewJump := PJump(ASource);
66 | NewJump.OpCode := $E9;
67 | NewJump.Distance := Pointer(Integer(ADestination) - Integer(ASource) - 5);
68 |
69 | FlushInstructionCache(GetCurrentProcess, ASource, SizeOf(TJump));
70 | VirtualProtect(ASource, Size, OldProtect, @OldProtect);
71 | end;
72 | end;
73 |
74 | end.
75 |
--------------------------------------------------------------------------------
/ThirdParty/KAZip/KAZip.dcr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/KAZip/KAZip.dcr
--------------------------------------------------------------------------------
/ThirdParty/KAZip/KAZipListViewRC.RES:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/KAZip/KAZipListViewRC.RES
--------------------------------------------------------------------------------
/ThirdParty/KAZip/KAZipListViewRC.rc:
--------------------------------------------------------------------------------
1 | LVUP BITMAP DISCARDABLE "lvup.bmp"
2 | LVDOWN BITMAP DISCARDABLE "lvdown.bmp"
3 | FOLDER_SMALL BITMAP DISCARDABLE "FOLDER_SMALL.bmp"
4 | FOLDER_BIG BITMAP DISCARDABLE "FOLDER_BIG.bmp"
5 |
--------------------------------------------------------------------------------
/ThirdParty/RegExpr.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/RegExpr.pas
--------------------------------------------------------------------------------
/ThirdParty/Synapse/synautil.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/Synapse/synautil.pas
--------------------------------------------------------------------------------
/ThirdParty/Synapse/synsock.pas:
--------------------------------------------------------------------------------
1 | {==============================================================================|
2 | | Project : Ararat Synapse | 005.002.003 |
3 | |==============================================================================|
4 | | Content: Socket Independent Platform Layer |
5 | |==============================================================================|
6 | | Copyright (c)1999-2013, Lukas Gebauer |
7 | | All rights reserved. |
8 | | |
9 | | Redistribution and use in source and binary forms, with or without |
10 | | modification, are permitted provided that the following conditions are met: |
11 | | |
12 | | Redistributions of source code must retain the above copyright notice, this |
13 | | list of conditions and the following disclaimer. |
14 | | |
15 | | Redistributions in binary form must reproduce the above copyright notice, |
16 | | this list of conditions and the following disclaimer in the documentation |
17 | | and/or other materials provided with the distribution. |
18 | | |
19 | | Neither the name of Lukas Gebauer nor the names of its contributors may |
20 | | be used to endorse or promote products derived from this software without |
21 | | specific prior written permission. |
22 | | |
23 | | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
24 | | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
25 | | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
26 | | ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR |
27 | | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
28 | | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
29 | | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
30 | | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
31 | | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
32 | | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH |
33 | | DAMAGE. |
34 | |==============================================================================|
35 | | The Initial Developer of the Original Code is Lukas Gebauer (Czech Republic).|
36 | | Portions created by Lukas Gebauer are Copyright (c)2001-2013. |
37 | | All Rights Reserved. |
38 | |==============================================================================|
39 | | Contributor(s): |
40 | | Tomas Hajny (OS2 support) |
41 | |==============================================================================|
42 | | History: see HISTORY.HTM from distribution package |
43 | | (Found at URL: http://www.ararat.cz/synapse/) |
44 | |==============================================================================}
45 |
46 | {:@exclude}
47 |
48 | unit synsock;
49 |
50 | {$MINENUMSIZE 4}
51 |
52 | //old Delphi does not have MSWINDOWS define.
53 | {$IFDEF WIN32}
54 | {$IFNDEF MSWINDOWS}
55 | {$DEFINE MSWINDOWS}
56 | {$ENDIF}
57 | {$ENDIF}
58 |
59 | {$IFDEF CIL}
60 | {$I ssdotnet.inc}
61 | {$ELSE}
62 | {$IFDEF MSWINDOWS}
63 | {$I sswin32.inc}
64 | {$ELSE}
65 | {$IFDEF WINCE}
66 | {$I sswin32.inc} //not complete yet!
67 | {$ELSE}
68 | {$IFDEF FPC}
69 | {$IFDEF OS2}
70 | {$I ssos2ws1.inc}
71 | {$ELSE OS2}
72 | {$I ssfpc.inc}
73 | {$ENDIF OS2}
74 | {$ELSE}
75 | {$I sslinux.inc}
76 | {$ENDIF}
77 | {$ENDIF}
78 | {$ENDIF}
79 | {$ENDIF}
80 | {$IFDEF POSIX}
81 | //Posix.SysSocket
82 | {$I ssposix.inc} //experimental!
83 | {$ENDIF}
84 |
85 | end.
86 |
87 |
--------------------------------------------------------------------------------
/ThirdParty/VCLFixPack.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/VCLFixPack.pas
--------------------------------------------------------------------------------
/ThirdParty/WinSock2/info.txt:
--------------------------------------------------------------------------------
1 | [API]
2 | Name=WinSock2
3 | Version=2.2.x (corresponds to specification in MSDN Jan 2000)
4 | Date=05 Jan 2000
5 | Originated=Windows Sockets Version 2
6 | URL=mdsn.microsoft.com
7 | Description=Version 2 of Winsock API
8 |
9 | [CONVERSION]
10 | FileName=winsock2.pas
11 | FileDate=Feb 1998
12 | Status=READY-FOR-TESTING
13 | Version=2
14 | LastModify=03 Apr 2000
15 | OriginalFile=winsock2.h
16 |
17 | [CONVERSION]
18 | FileName=ws2tcpip.inc
19 | FileDate=Feb 2000
20 | Status=READY-FOR-TESTING
21 | Version=1
22 | LastModify=04 Mar 2000
23 | OriginalFile=ws2tcpip.h
24 |
25 | [CONVERSION]
26 | FileName=wsipx.inc
27 | FileDate=Feb 2000
28 | Status=READY-FOR-TESTING
29 | Version=1
30 | LastModify=02 Mar 2000
31 | OriginalFile=wsipx.h
32 |
33 | [CONVERSION]
34 | FileName=wsnwlink.inc
35 | FileDate=Feb 2000
36 | Status=READY-FOR-TESTING
37 | Version=1
38 | LastModify=05 Mar 2000
39 | OriginalFile=wsnwlink.h
40 |
41 | [CONVERSION]
42 | FileName=wsnetbs.inc
43 | FileDate=Feb 2000
44 | Status=READY-FOR-TESTING
45 | Version=1
46 | LastModify=09 Mar 2000
47 | OriginalFile=wsnetbs.h
48 |
49 | [CONVERSION]
50 | FileName=svcguid.pas
51 | FileDate=Feb 2000
52 | Status=READY-FOR-TESTING
53 | Version=1
54 | LastModify=04 Mar 2000
55 | OriginalFile=svcguid.h
56 |
57 | [Platform]
58 | Win31=NO
59 | Win95=YES
60 | Win98=YES
61 | Win2000=YES
62 | WinNT3=YES
63 | WinNT4=YES
64 |
65 | [Requirements]
66 | Req1=Windows95: Requires Windows Sockets 2 SDK for Windows 95
67 |
68 | [Captain]
69 | Name=Alex Konshin
70 | Email=alexk@mtgroup.ru
71 |
72 | [Converters]
73 | Converter1=Alex Konshin;alexk@mtgroup.ru;http://www.mtgroup.ru/~alexk/
74 |
75 | [Testers]
76 |
77 |
--------------------------------------------------------------------------------
/ThirdParty/WinSock2/ws2atm.inc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/WinSock2/ws2atm.inc
--------------------------------------------------------------------------------
/ThirdParty/WinSock2/wsipx.inc:
--------------------------------------------------------------------------------
1 | {
2 | wsipx.h
3 |
4 | Microsoft Windows
5 | Copyright (C) Microsoft Corporation, 1992-1999.
6 |
7 | Windows Sockets include file for IPX/SPX. This file contains all
8 | standardized IPX/SPX information. Include this header file after
9 | winsock.h.
10 |
11 | To open an IPX socket, call socket() with an address family of
12 | AF_IPX, a socket type of SOCK_DGRAM, and protocol NSPROTO_IPX.
13 | Note that the protocol value must be specified, it cannot be 0.
14 | All IPX packets are sent with the packet type field of the IPX
15 | header set to 0.
16 |
17 | To open an SPX or SPXII socket, call socket() with an address
18 | family of AF_IPX, socket type of SOCK_SEQPACKET or SOCK_STREAM,
19 | and protocol of NSPROTO_SPX or NSPROTO_SPXII. If SOCK_SEQPACKET
20 | is specified, then the end of message bit is respected, and
21 | recv() calls are not completed until a packet is received with
22 | the end of message bit set. If SOCK_STREAM is specified, then
23 | the end of message bit is not respected, and recv() completes
24 | as soon as any data is received, regardless of the setting of the
25 | end of message bit. Send coalescing is never performed, and sends
26 | smaller than a single packet are always sent with the end of
27 | message bit set. Sends larger than a single packet are packetized
28 | with the end of message bit set on only the last packet of the
29 | send.
30 | }
31 |
32 |
33 | // This is the structure of the SOCKADDR structure for IPX and SPX.
34 |
35 | type
36 |
37 | SOCKADDR_IPX = packed record
38 | sa_family : u_short;
39 | sa_netnum : Array [0..3] of Char;
40 | sa_nodenum : Array [0..5] of Char;
41 | sa_socket : u_short;
42 | end;
43 | TSOCKADDR_IPX = SOCKADDR_IPX;
44 | TSockAddrIPX = SOCKADDR_IPX;
45 | PSOCKADDR_IPX = ^SOCKADDR_IPX;
46 | PSockAddrIPX = ^SOCKADDR_IPX;
47 | LPSOCKADDR_IPX = ^SOCKADDR_IPX;
48 |
49 | // Protocol families used in the "protocol" parameter of the socket() API.
50 |
51 | const
52 | NSPROTO_IPX = 1000;
53 | NSPROTO_SPX = 1256;
54 | NSPROTO_SPXII = 1257;
55 |
56 |
--------------------------------------------------------------------------------
/ThirdParty/WinSock2/wsnetbs.inc:
--------------------------------------------------------------------------------
1 | // wsnetbs.h
2 | // Copyright (c) 1994-1999, Microsoft Corp. All rights reserved.
3 | //
4 | // Windows Sockets include file for NETBIOS. This file contains all
5 | // standardized NETBIOS information. Include this header file after
6 | // winsock.h.
7 |
8 | // To open a NetBIOS socket, call the socket() function as follows:
9 | //
10 | // s = socket( AF_NETBIOS, {SOCK_SEQPACKET|SOCK_DGRAM}, -Lana );
11 | //
12 | // where Lana is the NetBIOS Lana number of interest. For example, to
13 | // open a socket for Lana 2, specify -2 as the "protocol" parameter
14 | // to the socket() function.
15 |
16 |
17 | // This is the structure of the SOCKADDR structure for NETBIOS.
18 |
19 | const
20 | NETBIOS_NAME_LENGTH = 16;
21 |
22 | type
23 | SOCKADDR_NB = packed record
24 | snb_family : Smallint;
25 | snb_type : u_short;
26 | snb_name : array[0..NETBIOS_NAME_LENGTH-1] of Char;
27 | end;
28 | TSockAddrNB = SOCKADDR_NB;
29 | PSockAddrNB = ^SOCKADDR_NB;
30 | LPSOCKADDR_NB = ^SOCKADDR_NB;
31 |
32 | // Bit values for the snb_type field of SOCKADDR_NB.
33 | const
34 | NETBIOS_UNIQUE_NAME = $0000;
35 | NETBIOS_GROUP_NAME = $0001;
36 | NETBIOS_TYPE_QUICK_UNIQUE = $0002;
37 | NETBIOS_TYPE_QUICK_GROUP = $0003;
38 |
39 | // A macro convenient for setting up NETBIOS SOCKADDRs.
40 | procedure SET_NETBIOS_SOCKADDR( snb : PSockAddrNB; const SnbType : Word; const Name : PChar; const Port : Char );
41 |
42 |
--------------------------------------------------------------------------------
/ThirdParty/jcl/ExceptDlg.dfm:
--------------------------------------------------------------------------------
1 | object ExceptionDialog: TExceptionDialog
2 | Left = 310
3 | Top = 255
4 | AutoScroll = False
5 | BorderIcons = [biSystemMenu]
6 | Caption = 'ExceptionDialog'
7 | ClientHeight = 315
8 | ClientWidth = 483
9 | Color = clBtnFace
10 | Constraints.MinWidth = 200
11 | Font.Charset = DEFAULT_CHARSET
12 | Font.Color = clWindowText
13 | Font.Height = -11
14 | Font.Name = 'MS Sans Serif'
15 | Font.Style = []
16 | KeyPreview = True
17 | OldCreateOrder = False
18 | Position = poScreenCenter
19 | ShowHint = True
20 | OnCreate = FormCreate
21 | OnDestroy = FormDestroy
22 | OnKeyDown = FormKeyDown
23 | OnPaint = FormPaint
24 | OnResize = FormResize
25 | OnShow = FormShow
26 | DesignSize = (
27 | 483
28 | 315)
29 | PixelsPerInch = 96
30 | TextHeight = 13
31 | object BevelDetails: TBevel
32 | Left = 3
33 | Top = 131
34 | Width = 473
35 | Height = 9
36 | Anchors = [akLeft, akTop, akRight]
37 | Shape = bsTopLine
38 | end
39 | object SendBtn: TButton
40 | Left = 403
41 | Top = 69
42 | Width = 75
43 | Height = 25
44 | Hint = 'Create an email using default mail client'
45 | Anchors = [akTop, akRight]
46 | Caption = '&Create email'
47 | TabOrder = 0
48 | OnClick = SendBtnClick
49 | end
50 | object TextMemo: TMemo
51 | Left = 56
52 | Top = 8
53 | Width = 332
54 | Height = 115
55 | Hint = 'Use Ctrl+C to copy the report to the clipboard'
56 | Anchors = [akLeft, akTop, akRight]
57 | BorderStyle = bsNone
58 | Ctl3D = True
59 | ParentColor = True
60 | ParentCtl3D = False
61 | ReadOnly = True
62 | TabOrder = 1
63 | WantReturns = False
64 | end
65 | object OkBtn: TButton
66 | Left = 403
67 | Top = 4
68 | Width = 75
69 | Height = 25
70 | Anchors = [akTop, akRight]
71 | Caption = '&OK'
72 | Default = True
73 | ModalResult = 1
74 | TabOrder = 2
75 | end
76 | object DetailsBtn: TButton
77 | Left = 403
78 | Top = 100
79 | Width = 75
80 | Height = 25
81 | Hint = 'Show or hide additional information|'
82 | Anchors = [akTop, akRight]
83 | Caption = '&Details'
84 | Enabled = False
85 | TabOrder = 3
86 | OnClick = DetailsBtnClick
87 | end
88 | object DetailsMemo: TMemo
89 | Left = 4
90 | Top = 141
91 | Width = 472
92 | Height = 167
93 | Anchors = [akLeft, akTop, akRight, akBottom]
94 | Font.Charset = DEFAULT_CHARSET
95 | Font.Color = clWindowText
96 | Font.Height = -11
97 | Font.Name = 'Courier New'
98 | Font.Style = []
99 | ParentColor = True
100 | ParentFont = False
101 | ReadOnly = True
102 | ScrollBars = ssBoth
103 | TabOrder = 4
104 | WantReturns = False
105 | WordWrap = False
106 | end
107 | end
108 |
--------------------------------------------------------------------------------
/ThirdParty/jsbridge/delphi.inc:
--------------------------------------------------------------------------------
1 | {$IFDEF VER140} // For Delphi 6
2 | {$DEFINE D6OR7}
3 | {$ENDIF}
4 | {$IFDEF VER150} // For Delphi 7
5 | {$DEFINE D6OR7}
6 | {$ENDIF}
7 |
--------------------------------------------------------------------------------
/ThirdParty/jsbridge/jsconfig.inc:
--------------------------------------------------------------------------------
1 | (*
2 | * Some conditional defines:
3 | *
4 | * JSUnicode
5 | * Enables Unicode support throughout the bridge classes.
6 | *
7 | * JSDebug
8 | * Enables more detailed debugging within the SpiderMonkey DLL. Since the
9 | * debug DLL is not distributed (for size reasons), please contact Sterling
10 | * at whoelse@sterlingbates.com for a copy.
11 | *)
12 |
13 | {$DEFINE JSUnicode}
14 | {.$DEFINE JSDebug}
15 | {.$DEFINE JSDEBUGGER}
16 |
--------------------------------------------------------------------------------
/ThirdParty/jsbridge/namedarray.pas:
--------------------------------------------------------------------------------
1 | (* ***** BEGIN LICENSE BLOCK *****
2 | * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3 | *
4 | * The contents of this file are subject to the Mozilla Public License Version
5 | * 1.1 (the "License"); you may not use this file except in compliance with
6 | * the License. You may obtain a copy of the License at
7 | * http://www.mozilla.org/MPL/
8 | *
9 | * Software distributed under the License is distributed on an "AS IS" basis,
10 | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 | * for the specific language governing rights and limitations under the
12 | * License.
13 | *
14 | * The Original Code is JavaScript Bridge.
15 | *
16 | * The Initial Developer of the Original Code is
17 | * Sterling Bates.
18 | * Portions created by the Initial Developer are Copyright (C) 2003
19 | * the Initial Developer. All Rights Reserved.
20 | *
21 | * Contributor(s):
22 | *
23 | * Alternatively, the contents of this file may be used under the terms of
24 | * either the GNU General Public License Version 2 or later (the "GPL"), or
25 | * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26 | * in which case the provisions of the GPL or the LGPL are applicable instead
27 | * of those above. If you wish to allow use of your version of this file only
28 | * under the terms of either the GPL or the LGPL, and not to allow others to
29 | * use your version of this file under the terms of the MPL, indicate your
30 | * decision by deleting the provisions above and replace them with the notice
31 | * and other provisions required by the GPL or the LGPL. If you do not delete
32 | * the provisions above, a recipient may use your version of this file under
33 | * the terms of any one of the MPL, the GPL or the LGPL.
34 | *
35 | * ***** END LICENSE BLOCK ***** *)
36 |
37 | unit namedarray;
38 |
39 | interface
40 |
41 | type
42 | TNamedArray = class
43 | private
44 | FCount: Integer;
45 | FKeys: array of string;
46 | FOwnsValues: Boolean;
47 | FSize: Integer;
48 | FValues: array of Pointer;
49 |
50 | function GetItem(const Key: string): Pointer;
51 | procedure Grow;
52 | function IndexOf(const Key: string): Integer;
53 | procedure SetItem(const Key: string; const Value: Pointer);
54 | function GetIndex(Idx: Integer): Pointer;
55 | public
56 | property Count: Integer read FCount;
57 | property Item[const Key: string]: Pointer read GetItem write SetItem; default;
58 | property ItemByIndex[Idx: Integer]: Pointer read GetIndex;
59 | property OwnsValues: Boolean read FOwnsValues write FOwnsValues;
60 |
61 | constructor Create;
62 | destructor Destroy; override;
63 |
64 | procedure Add(const Key: string; const Value: Pointer);
65 | end;
66 |
67 | implementation
68 |
69 | { TNamedArray }
70 |
71 | procedure TNamedArray.Add(const Key: string; const Value: Pointer);
72 | begin
73 | Inc(FCount);
74 | if (FCount >= FSize) then
75 | Grow;
76 | FKeys[FCount - 1] := Key;
77 | UniqueString(FKeys[FCount - 1]);
78 | FValues[FCount - 1] := Value;
79 | end;
80 |
81 | constructor TNamedArray.Create;
82 | begin
83 | FSize := 0;
84 | FCount := 0;
85 | SetLength(FKeys, 0);
86 | SetLength(FValues, 0);
87 | end;
88 |
89 | destructor TNamedArray.Destroy;
90 | var
91 | i: Integer;
92 | begin
93 | if (FOwnsValues) then
94 | begin
95 | for i := 0 to FCount - 1 do
96 | if (FValues[i] <> nil) then
97 | Dispose(FValues[i]);
98 | end;
99 |
100 | SetLength(FKeys, 0);
101 | SetLength(FValues, 0);
102 |
103 | inherited;
104 | end;
105 |
106 | function TNamedArray.GetIndex(Idx: Integer): Pointer;
107 | begin
108 | Result := FValues[Idx];
109 | end;
110 |
111 | function TNamedArray.GetItem(const Key: string): Pointer;
112 | var
113 | idx: Integer;
114 | begin
115 | idx := IndexOf(Key);
116 | if (idx <> -1) then
117 | Result := FValues[idx]
118 | else
119 | Result := nil;
120 | end;
121 |
122 | procedure TNamedArray.Grow;
123 | begin
124 | Inc(FSize, 16);
125 | SetLength(FKeys, FSize);
126 | SetLength(FValues, FSize);
127 | end;
128 |
129 | function TNamedArray.IndexOf(const Key: string): Integer;
130 | var
131 | i: Integer;
132 | begin
133 | for i := 0 to Length(FKeys) - 1 do
134 | if (FKeys[i] = Key) then
135 | begin
136 | Result := i;
137 | exit;
138 | end;
139 | Result := -1;
140 | end;
141 |
142 | procedure TNamedArray.SetItem(const Key: string; const Value: Pointer);
143 | var
144 | idx: Integer;
145 | begin
146 | idx := IndexOf(Key);
147 | if (idx <> -1) then
148 | FValues[idx] := Value
149 | else
150 | Add(Key, Value);
151 | end;
152 |
153 | end.
154 |
155 |
--------------------------------------------------------------------------------
/ThirdParty/jsbridge/ptrarray.pas:
--------------------------------------------------------------------------------
1 | (* ***** BEGIN LICENSE BLOCK *****
2 | * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3 | *
4 | * The contents of this file are subject to the Mozilla Public License Version
5 | * 1.1 (the "License"); you may not use this file except in compliance with
6 | * the License. You may obtain a copy of the License at
7 | * http://www.mozilla.org/MPL/
8 | *
9 | * Software distributed under the License is distributed on an "AS IS" basis,
10 | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 | * for the specific language governing rights and limitations under the
12 | * License.
13 | *
14 | * The Original Code is JavaScript Bridge.
15 | *
16 | * The Initial Developer of the Original Code is
17 | * Sterling Bates.
18 | * Portions created by the Initial Developer are Copyright (C) 2003
19 | * the Initial Developer. All Rights Reserved.
20 | *
21 | * Contributor(s):
22 | *
23 | * Alternatively, the contents of this file may be used under the terms of
24 | * either the GNU General Public License Version 2 or later (the "GPL"), or
25 | * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26 | * in which case the provisions of the GPL or the LGPL are applicable instead
27 | * of those above. If you wish to allow use of your version of this file only
28 | * under the terms of either the GPL or the LGPL, and not to allow others to
29 | * use your version of this file under the terms of the MPL, indicate your
30 | * decision by deleting the provisions above and replace them with the notice
31 | * and other provisions required by the GPL or the LGPL. If you do not delete
32 | * the provisions above, a recipient may use your version of this file under
33 | * the terms of any one of the MPL, the GPL or the LGPL.
34 | *
35 | * ***** END LICENSE BLOCK ***** *)
36 |
37 | unit ptrarray;
38 |
39 | interface
40 |
41 | type
42 | TPtrArray = class
43 | private
44 | FCount: Integer;
45 | FKeys: Array of Pointer;
46 | FOwnsValues: Boolean;
47 | FSize: Integer;
48 | FValues: Array of TObject;
49 |
50 | function GetItem(Ptr: Pointer): TObject;
51 | procedure Grow;
52 | function IndexOf(Ptr: Pointer): Integer;
53 | procedure SetItem(Ptr: Pointer; Value: TObject);
54 | public
55 | property Item[Ptr: Pointer]: TObject read GetItem write SetItem; default;
56 | property OwnsValues: Boolean read FOwnsValues write FOwnsValues;
57 |
58 | constructor Create;
59 | destructor Destroy; override;
60 |
61 | procedure Add(Key: Pointer; Value: TObject);
62 | end;
63 |
64 | implementation
65 |
66 | { TPtrArray }
67 |
68 | procedure TPtrArray.Add(Key: Pointer; Value: TObject);
69 | begin
70 | Inc(FCount);
71 | if (FCount >= FSize) then
72 | Grow;
73 | FKeys[FCount-1] := Key;
74 | FValues[FCount-1] := Value;
75 | end;
76 |
77 | constructor TPtrArray.Create;
78 | begin
79 | FSize := 0;
80 | FCount := 0;
81 | end;
82 |
83 | destructor TPtrArray.Destroy;
84 | var
85 | i: Integer;
86 | begin
87 | inherited;
88 |
89 | if (FOwnsValues) then
90 | begin
91 | for i := 0 to FCount-1 do
92 | FValues[i].Free;
93 | end;
94 |
95 | SetLength(FKeys, 0);
96 | SetLength(FValues, 0);
97 | end;
98 |
99 | function TPtrArray.GetItem(Ptr: Pointer): TObject;
100 | var
101 | idx: Integer;
102 | begin
103 | idx := IndexOf(Ptr);
104 | if (idx <> -1) then
105 | Result := FValues[idx]
106 | else
107 | Result := nil;
108 | end;
109 |
110 | procedure TPtrArray.Grow;
111 | begin
112 | Inc(FSize, 16);
113 | SetLength(FKeys, FSize);
114 | SetLength(FValues, FSize);
115 | end;
116 |
117 | function TPtrArray.IndexOf(Ptr: Pointer): Integer;
118 | var
119 | i: Integer;
120 | begin
121 | for i := 0 to Length(FKeys)-1 do
122 | if (FKeys[i] = Ptr) then
123 | begin
124 | Result := i;
125 | exit;
126 | end;
127 | Result := -1;
128 | end;
129 |
130 | procedure TPtrArray.SetItem(Ptr: Pointer; Value: TObject);
131 | var
132 | idx: Integer;
133 | begin
134 | idx := IndexOf(Ptr);
135 | if (idx <> -1) then
136 | FValues[idx] := Value
137 | else
138 | Add(Ptr, Value);
139 | end;
140 |
141 | end.
142 |
143 |
--------------------------------------------------------------------------------
/ThirdParty/makevssportable.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "makevssportable", "makevssportable\makevssportable.csproj", "{F2F20862-9317-4051-AF9E-39ECEE8A2884}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|x86 = Debug|x86
9 | Release|x86 = Release|x86
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {F2F20862-9317-4051-AF9E-39ECEE8A2884}.Debug|x86.ActiveCfg = Debug|x86
13 | {F2F20862-9317-4051-AF9E-39ECEE8A2884}.Debug|x86.Build.0 = Debug|x86
14 | {F2F20862-9317-4051-AF9E-39ECEE8A2884}.Release|x86.ActiveCfg = Release|x86
15 | {F2F20862-9317-4051-AF9E-39ECEE8A2884}.Release|x86.Build.0 = Release|x86
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/ICSharpCode.SharpZipLib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/makevssportable/ICSharpCode.SharpZipLib.dll
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Windows.Forms;
4 |
5 | namespace makevssportable
6 | {
7 | static class Program
8 | {
9 | ///
10 | /// Punto di ingresso principale dell'applicazione.
11 | ///
12 | [STAThread]
13 | static void Main()
14 | {
15 | Application.EnableVisualStyles();
16 | Application.SetCompatibleTextRenderingDefault(false);
17 | Application.Run(new frmMain());
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // Le informazioni generali relative a un assembly sono controllate dal seguente
6 | // set di attributi. Per modificare le informazioni associate a un assembly
7 | // occorre quindi modificare i valori di questi attributi.
8 | [assembly: AssemblyTitle("Portable VisualSubSync Tool")]
9 | [assembly: AssemblyDescription("A simple tool to create a portable installation of VisualSubSync ItaSA.")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Italiansubs.net")]
12 | [assembly: AssemblyProduct("Portable VisualSubSync Tool")]
13 | [assembly: AssemblyCopyright("Copyright © 2012 Italiansubs.net and rock3r. Licensed under the Apache License 2.0.")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Se si imposta ComVisible su false, i tipi in questo assembly non saranno visibili
18 | // ai componenti COM. Se è necessario accedere a un tipo in questo assembly da
19 | // COM, impostare su true l'attributo ComVisible per tale tipo.
20 | [assembly: ComVisible(false)]
21 |
22 | // Se il progetto viene esposto a COM, il GUID che segue verrà utilizzato per creare l'ID della libreria dei tipi
23 | [assembly: Guid("e957ffae-eadd-4b98-a8f4-b73df50a3cf0")]
24 |
25 | // Le informazioni sulla versione di un assembly sono costituite dai seguenti quattro valori:
26 | //
27 | // Numero di versione principale
28 | // Numero di versione secondario
29 | // Numero build
30 | // Revisione
31 | //
32 | // È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build
33 | // utilizzando l'asterisco (*) come descritto di seguito:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Il codice è stato generato da uno strumento.
4 | // Versione runtime:4.0.30319.530
5 | //
6 | // Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se
7 | // il codice viene rigenerato.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace makevssportable.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// Classe di risorse fortemente tipizzata per la ricerca di stringhe localizzate e così via.
17 | ///
18 | // Questa classe è stata generata automaticamente dalla classe StronglyTypedResourceBuilder.
19 | // tramite uno strumento quale ResGen o Visual Studio.
20 | // Per aggiungere o rimuovere un membro, modificare il file con estensione ResX ed eseguire nuovamente ResGen
21 | // con l'opzione /str oppure ricompilare il progetto VS.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Restituisce l'istanza di ResourceManager nella cache utilizzata da questa classe.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("makevssportable.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Esegue l'override della proprietà CurrentUICulture del thread corrente per tutte le
51 | /// ricerche di risorse eseguite utilizzando questa classe di risorse fortemente tipizzata.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | internal static System.Drawing.Bitmap test_vss {
64 | get {
65 | object obj = ResourceManager.GetObject("test_vss", resourceCulture);
66 | return ((System.Drawing.Bitmap)(obj));
67 | }
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Il codice è stato generato da uno strumento.
4 | // Versione runtime:4.0.30319.530
5 | //
6 | // Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se
7 | // il codice viene rigenerato.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace makevssportable.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 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
29 | public bool UseDefaults {
30 | get {
31 | return ((bool)(this["UseDefaults"]));
32 | }
33 | set {
34 | this["UseDefaults"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("")]
41 | public string lastOutDir {
42 | get {
43 | return ((string)(this["lastOutDir"]));
44 | }
45 | set {
46 | this["lastOutDir"] = value;
47 | }
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | False
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/Resources/Thumbs.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/makevssportable/Resources/Thumbs.db
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/Resources/test_vss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/makevssportable/Resources/test_vss.png
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | False
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | False
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/frmAbout.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | namespace makevssportable
10 | {
11 | public partial class frmAbout : Form
12 | {
13 | public frmAbout()
14 | {
15 | InitializeComponent();
16 | }
17 |
18 | private void frmAbout_Load(object sender, EventArgs e)
19 | {
20 | Text = string.Format("About {0}", Application.ProductName);
21 | lblAppName.Text = Application.ProductName;
22 | lblVersion.Text = string.Format("Version {0}", Application.ProductVersion);
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/makevssportable/icon.ico
--------------------------------------------------------------------------------
/ThirdParty/makevssportable/makevssportable.csproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | publish\
5 |
6 | http://sourceforge.net/projects/vss-itasa/
7 |
8 |
9 |
10 | it-IT
11 | false
12 |
13 |
--------------------------------------------------------------------------------
/ThirdParty/vsfilter/Icon_147.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/ThirdParty/vsfilter/Icon_147.ico
--------------------------------------------------------------------------------
/ThirdParty/vsfilter/changes.txt:
--------------------------------------------------------------------------------
1 | A quick modification of VSFilter to allow VSS to load a defined subtitles file and to update the subtitles.
--------------------------------------------------------------------------------
/TranslateFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object TranslateForm: TTranslateForm
2 | Left = 306
3 | Top = 321
4 | Width = 608
5 | Height = 289
6 | Caption = 'Translate'
7 | Color = clBtnFace
8 | Constraints.MinHeight = 280
9 | Constraints.MinWidth = 300
10 | Font.Charset = DEFAULT_CHARSET
11 | Font.Color = clWindowText
12 | Font.Height = -11
13 | Font.Name = 'Microsoft Sans Serif'
14 | Font.Style = []
15 | KeyPreview = True
16 | OldCreateOrder = False
17 | Position = poOwnerFormCenter
18 | OnCreate = FormCreate
19 | OnKeyUp = FormKeyUp
20 | PixelsPerInch = 96
21 | TextHeight = 13
22 | object PanelBottom: TPanel
23 | Left = 0
24 | Top = 215
25 | Width = 592
26 | Height = 35
27 | Align = alBottom
28 | BevelOuter = bvNone
29 | TabOrder = 0
30 | DesignSize = (
31 | 592
32 | 35)
33 | object bttOK: TTntButton
34 | Left = 440
35 | Top = 8
36 | Width = 75
37 | Height = 25
38 | Anchors = [akTop, akRight]
39 | Caption = 'OK'
40 | TabOrder = 0
41 | OnClick = bttOKClick
42 | end
43 | object bttCancel: TTntButton
44 | Left = 520
45 | Top = 8
46 | Width = 75
47 | Height = 25
48 | Anchors = [akTop, akRight]
49 | Caption = 'Cancel'
50 | TabOrder = 1
51 | OnClick = bttCancelClick
52 | end
53 | end
54 | object PanelClient: TPanel
55 | Left = 0
56 | Top = 0
57 | Width = 592
58 | Height = 215
59 | Align = alClient
60 | BevelOuter = bvNone
61 | TabOrder = 1
62 | DesignSize = (
63 | 592
64 | 215)
65 | object rgSelectionType: TTntRadioGroup
66 | Left = 8
67 | Top = 8
68 | Width = 585
69 | Height = 81
70 | Anchors = [akLeft, akTop, akRight]
71 | Caption = ' Subtitles to translate '
72 | Items.Strings = (
73 | 'All (create a new file)'
74 | 'Missing only (enrich current file)')
75 | TabOrder = 0
76 | OnClick = rgSelectionTypeClick
77 | end
78 | object rgTextType: TTntRadioGroup
79 | Left = 8
80 | Top = 96
81 | Width = 585
82 | Height = 113
83 | Anchors = [akLeft, akTop, akRight]
84 | Caption = ' New subtitle text '
85 | Items.Strings = (
86 | 'Empty'
87 | 'Copy original text'
88 | 'Copy tags only'
89 | 'Custom text')
90 | TabOrder = 1
91 | OnClick = rgTextTypeClick
92 | end
93 | object edCustomText: TTntEdit
94 | Left = 152
95 | Top = 179
96 | Width = 433
97 | Height = 21
98 | Anchors = [akLeft, akTop, akRight]
99 | TabOrder = 2
100 | Text = '** untranslated **'
101 | end
102 | object edTargetFile: TTntEdit
103 | Left = 144
104 | Top = 26
105 | Width = 409
106 | Height = 21
107 | Anchors = [akLeft, akTop, akRight]
108 | TabOrder = 3
109 | end
110 | object bttBrowseTargetFile: TTntButton
111 | Left = 552
112 | Top = 24
113 | Width = 35
114 | Height = 25
115 | Anchors = [akTop, akRight]
116 | Caption = '...'
117 | TabOrder = 4
118 | OnClick = bttBrowseTargetFileClick
119 | end
120 | end
121 | object TntSaveDialog1: TTntSaveDialog
122 | Options = [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofEnableSizing]
123 | Left = 736
124 | Top = 152
125 | end
126 | end
127 |
--------------------------------------------------------------------------------
/UndoableTaskUnit.pas:
--------------------------------------------------------------------------------
1 | // -----------------------------------------------------------------------------
2 | // VisualSubSync
3 | // -----------------------------------------------------------------------------
4 | // Copyright (C) 2007 Christophe Paris
5 | // -----------------------------------------------------------------------------
6 | // This Program is free software; you can redistribute it and/or modify
7 | // it under the terms of the GNU General Public License as published by
8 | // the Free Software Foundation; either version 2, or (at your option)
9 | // any later version.
10 | //
11 | // This Program is distributed in the hope that it will be useful,
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | // GNU General Public License for more details.
15 | //
16 | // You should have received a copy of the GNU General Public License
17 | // along with GNU Make; see the file COPYING. If not, write to
18 | // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19 | // http://www.gnu.org/copyleft/gpl.html
20 | // -----------------------------------------------------------------------------
21 | unit UndoableTaskUnit;
22 |
23 | interface
24 |
25 | type
26 | TUndoableTask = class(TObject)
27 | public
28 | procedure DoTask; virtual; abstract;
29 | function GetName : WideString; virtual; abstract;
30 | function Merge(UndoableTask : TUndoableTask) : Boolean; virtual;
31 | procedure UndoTask; virtual; abstract;
32 | end;
33 |
34 | implementation
35 |
36 | function TUndoableTask.Merge(UndoableTask : TUndoableTask) : Boolean;
37 | begin
38 | // Nothing to merge by default
39 | Result := False;
40 | end;
41 |
42 | end.
43 |
--------------------------------------------------------------------------------
/VSSProjectGroup.bpg:
--------------------------------------------------------------------------------
1 | #------------------------------------------------------------------------------
2 | VERSION = BWS.01
3 | #------------------------------------------------------------------------------
4 | !ifndef ROOT
5 | ROOT = $(MAKEDIR)\..
6 | !endif
7 | #------------------------------------------------------------------------------
8 | MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
9 | DCC = $(ROOT)\bin\dcc32.exe $**
10 | BRCC = $(ROOT)\bin\brcc32.exe $**
11 | #------------------------------------------------------------------------------
12 | PROJECTS = VisualSubSync.exe VisualSubSyncTests.exe
13 | #------------------------------------------------------------------------------
14 | default: $(PROJECTS)
15 | #------------------------------------------------------------------------------
16 |
17 |
18 | VisualSubSync.exe: VisualSubSync.dpr
19 | $(DCC)
20 |
21 | VisualSubSyncTests.exe: dunit\VisualSubSyncTests.dpr
22 | $(DCC)
23 |
24 |
25 |
--------------------------------------------------------------------------------
/VerticalScalingFormUnit.pas:
--------------------------------------------------------------------------------
1 | unit VerticalScalingFormUnit;
2 |
3 | interface
4 |
5 | uses
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 | Dialogs, StdCtrls, ComCtrls, ExtCtrls, WAVDisplayerUnit;
8 |
9 | type
10 | TVerticalScalingForm = class(TForm)
11 | GroupBox1: TGroupBox;
12 | ScalingTrackBar: TTrackBar;
13 | Label2: TLabel;
14 | Label3: TLabel;
15 | Label5: TLabel;
16 | Label6: TLabel;
17 | Label4: TLabel;
18 | bttReset: TButton;
19 | Label1: TLabel;
20 | Label7: TLabel;
21 | Label8: TLabel;
22 | Label9: TLabel;
23 | procedure bttResetClick(Sender: TObject);
24 | procedure ScalingTrackBarChange(Sender: TObject);
25 | procedure FormShow(Sender: TObject);
26 | procedure FormKeyDown(Sender: TObject; var Key: Word;
27 | Shift: TShiftState);
28 | private
29 | { Private declarations }
30 | FWAVDisplayer : TWAVDisplayer;
31 | public
32 | { Public declarations }
33 | constructor Create(AOwner: TComponent; WAVDisplayer : TWAVDisplayer); reintroduce;
34 | end;
35 |
36 | var
37 | VerticalScalingForm: TVerticalScalingForm;
38 |
39 | implementation
40 |
41 | uses main;
42 |
43 | {$R *.dfm}
44 |
45 | constructor TVerticalScalingForm.Create(AOwner: TComponent;
46 | WAVDisplayer : TWAVDisplayer);
47 | begin
48 | inherited Create(AOwner);
49 | FWAVDisplayer := WAVDisplayer;
50 | end;
51 |
52 | procedure TVerticalScalingForm.bttResetClick(Sender: TObject);
53 | begin
54 | ScalingTrackBar.Position := 100;
55 | end;
56 |
57 | procedure TVerticalScalingForm.ScalingTrackBarChange(Sender: TObject);
58 | begin
59 | FWAVDisplayer.VerticalScaling := ScalingTrackBar.Position;
60 | GroupBox1.Caption := Format(' Scaling : %d%% ',[ScalingTrackBar.Position]);
61 | MainForm.CurrentProject.IsDirty := True;
62 | end;
63 |
64 | procedure TVerticalScalingForm.FormShow(Sender: TObject);
65 | begin
66 | ScalingTrackBar.Position := FWAVDisplayer.VerticalScaling;
67 | end;
68 |
69 | procedure TVerticalScalingForm.FormKeyDown(Sender: TObject; var Key: Word;
70 | Shift: TShiftState);
71 | begin
72 | if (Key = VK_ESCAPE) then
73 | begin
74 | Close;
75 | end;
76 | end;
77 |
78 | end.
79 |
--------------------------------------------------------------------------------
/VistaAltFixD7/VistaAltFixD7.dof:
--------------------------------------------------------------------------------
1 | [FileVersion]
2 | Version=7.0
3 | [Compiler]
4 | A=8
5 | B=0
6 | C=1
7 | D=1
8 | E=0
9 | F=0
10 | G=1
11 | H=1
12 | I=1
13 | J=0
14 | K=0
15 | L=1
16 | M=0
17 | N=1
18 | O=1
19 | P=1
20 | Q=0
21 | R=0
22 | S=0
23 | T=0
24 | U=0
25 | V=1
26 | W=0
27 | X=1
28 | Y=1
29 | Z=1
30 | ShowHints=1
31 | ShowWarnings=1
32 | UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
33 | NamespacePrefix=
34 | SymbolDeprecated=1
35 | SymbolLibrary=1
36 | SymbolPlatform=1
37 | UnitLibrary=1
38 | UnitPlatform=1
39 | UnitDeprecated=1
40 | HResultCompat=1
41 | HidingMember=1
42 | HiddenVirtual=1
43 | Garbage=1
44 | BoundsError=1
45 | ZeroNilCompat=1
46 | StringConstTruncated=1
47 | ForLoopVarVarPar=1
48 | TypedConstVarPar=1
49 | AsgToTypedConst=1
50 | CaseLabelRange=1
51 | ForVariable=1
52 | ConstructingAbstract=1
53 | ComparisonFalse=1
54 | ComparisonTrue=1
55 | ComparingSignedUnsigned=1
56 | CombiningSignedUnsigned=1
57 | UnsupportedConstruct=1
58 | FileOpen=1
59 | FileOpenUnitSrc=1
60 | BadGlobalSymbol=1
61 | DuplicateConstructorDestructor=1
62 | InvalidDirective=1
63 | PackageNoLink=1
64 | PackageThreadVar=1
65 | ImplicitImport=1
66 | HPPEMITIgnored=1
67 | NoRetVal=1
68 | UseBeforeDef=1
69 | ForLoopVarUndef=1
70 | UnitNameMismatch=1
71 | NoCFGFileFound=1
72 | MessageDirective=1
73 | ImplicitVariants=1
74 | UnicodeToLocale=1
75 | LocaleToUnicode=1
76 | ImagebaseMultiple=1
77 | SuspiciousTypecast=1
78 | PrivatePropAccessor=1
79 | UnsafeType=0
80 | UnsafeCode=0
81 | UnsafeCast=0
82 | [Linker]
83 | MapFile=0
84 | OutputObjs=0
85 | ConsoleApp=1
86 | DebugInfo=0
87 | RemoteSymbols=0
88 | MinStackSize=16384
89 | MaxStackSize=1048576
90 | ImageBase=4194304
91 | ExeDescription=
92 | [Directories]
93 | OutputDir=
94 | UnitOutputDir=
95 | PackageDLLOutputDir=
96 | PackageDCPOutputDir=
97 | SearchPath=
98 | Packages=
99 | Conditionals=
100 | DebugSourceDirs=
101 | UsePackages=0
102 | [Parameters]
103 | RunParams=
104 | HostApplication=
105 | Launcher=
106 | UseLauncher=0
107 | DebugCWD=
108 | [Language]
109 | ActiveLang=
110 | ProjectLang=
111 | RootDir=
112 | [Version Info]
113 | IncludeVerInfo=1
114 | AutoIncBuild=0
115 | MajorVer=1
116 | MinorVer=0
117 | Release=0
118 | Build=0
119 | Debug=0
120 | PreRelease=0
121 | Special=0
122 | Private=0
123 | DLL=0
124 | Locale=1040
125 | CodePage=1252
126 | [Version Info Keys]
127 | CompanyName=
128 | FileDescription=
129 | FileVersion=1.0.0.0
130 | InternalName=
131 | LegalCopyright=
132 | LegalTrademarks=
133 | OriginalFilename=
134 | ProductName=
135 | ProductVersion=1.0.0.0
136 | Comments=
137 |
--------------------------------------------------------------------------------
/VistaAltFixD7/VistaAltFixD7.dpk:
--------------------------------------------------------------------------------
1 | package VistaAltFixD7;
2 |
3 | {$R *.res}
4 | {$ALIGN 8}
5 | {$ASSERTIONS ON}
6 | {$BOOLEVAL OFF}
7 | {$DEBUGINFO ON}
8 | {$EXTENDEDSYNTAX ON}
9 | {$IMPORTEDDATA ON}
10 | {$IOCHECKS ON}
11 | {$LOCALSYMBOLS ON}
12 | {$LONGSTRINGS ON}
13 | {$OPENSTRINGS ON}
14 | {$OPTIMIZATION ON}
15 | {$OVERFLOWCHECKS OFF}
16 | {$RANGECHECKS OFF}
17 | {$REFERENCEINFO ON}
18 | {$SAFEDIVIDE OFF}
19 | {$STACKFRAMES OFF}
20 | {$TYPEDADDRESS OFF}
21 | {$VARSTRINGCHECKS ON}
22 | {$WRITEABLECONST OFF}
23 | {$MINENUMSIZE 1}
24 | {$IMAGEBASE $400000}
25 | {$IMPLICITBUILD OFF}
26 |
27 | requires
28 | rtl,
29 | vcl;
30 |
31 | contains
32 | VistaAltFixUnit in 'VistaAltFixUnit.pas';
33 |
34 | end.
35 |
--------------------------------------------------------------------------------
/VistaAltFixD7/VistaAltFixD7.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/VistaAltFixD7/VistaAltFixD7.res
--------------------------------------------------------------------------------
/VistaAltFixD7/VistaAltFixUnit.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/VistaAltFixD7/VistaAltFixUnit.pas
--------------------------------------------------------------------------------
/VisualSubSync.dof:
--------------------------------------------------------------------------------
1 | [FileVersion]
2 | Version=7.0
3 | [Compiler]
4 | A=8
5 | B=0
6 | C=0
7 | D=1
8 | E=0
9 | F=0
10 | G=1
11 | H=1
12 | I=1
13 | J=0
14 | K=0
15 | L=1
16 | M=0
17 | N=1
18 | O=1
19 | P=1
20 | Q=0
21 | R=0
22 | S=0
23 | T=0
24 | U=0
25 | V=1
26 | W=0
27 | X=1
28 | Y=1
29 | Z=1
30 | ShowHints=0
31 | ShowWarnings=0
32 | UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
33 | NamespacePrefix=
34 | SymbolDeprecated=1
35 | SymbolLibrary=1
36 | SymbolPlatform=0
37 | UnitLibrary=1
38 | UnitPlatform=0
39 | UnitDeprecated=1
40 | HResultCompat=1
41 | HidingMember=1
42 | HiddenVirtual=1
43 | Garbage=1
44 | BoundsError=1
45 | ZeroNilCompat=1
46 | StringConstTruncated=1
47 | ForLoopVarVarPar=1
48 | TypedConstVarPar=1
49 | AsgToTypedConst=1
50 | CaseLabelRange=1
51 | ForVariable=1
52 | ConstructingAbstract=1
53 | ComparisonFalse=1
54 | ComparisonTrue=1
55 | ComparingSignedUnsigned=1
56 | CombiningSignedUnsigned=1
57 | UnsupportedConstruct=1
58 | FileOpen=1
59 | FileOpenUnitSrc=1
60 | BadGlobalSymbol=1
61 | DuplicateConstructorDestructor=1
62 | InvalidDirective=1
63 | PackageNoLink=1
64 | PackageThreadVar=1
65 | ImplicitImport=1
66 | HPPEMITIgnored=1
67 | NoRetVal=1
68 | UseBeforeDef=1
69 | ForLoopVarUndef=1
70 | UnitNameMismatch=1
71 | NoCFGFileFound=1
72 | MessageDirective=1
73 | ImplicitVariants=1
74 | UnicodeToLocale=1
75 | LocaleToUnicode=1
76 | ImagebaseMultiple=1
77 | SuspiciousTypecast=1
78 | PrivatePropAccessor=1
79 | UnsafeType=0
80 | UnsafeCode=0
81 | UnsafeCast=0
82 | [Linker]
83 | MapFile=0
84 | OutputObjs=0
85 | ConsoleApp=1
86 | DebugInfo=0
87 | RemoteSymbols=0
88 | MinStackSize=16384
89 | MaxStackSize=1048576
90 | ImageBase=4194304
91 | ExeDescription=
92 | [Directories]
93 | OutputDir=C:\Program Files (x86)\VisualSubSyncForItaliansubs
94 | UnitOutputDir=dcu
95 | PackageDLLOutputDir=
96 | PackageDCPOutputDir=
97 | SearchPath=.\ThirdParty;.\ThirdParty\DirectX;.\ThirdParty\jsbridge;.\ThirdParty\WinSock2;.\ThirdParty\FastMM
98 | Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;MiscCompo;FlatStyle_D6;CCCompo;RegComponents6;CoolTrayIcon_D6;SxMagD5
99 | Conditionals=
100 | DebugSourceDirs=.\ThirdParty;.\ThirdParty\DirectX;.\ThirdParty\jsbridge;.\ThirdParty\WinSock2;.\ThirdParty\FastMM;.\ThirdParty\DirectX
101 | UsePackages=0
102 | [Parameters]
103 | RunParams=
104 | HostApplication=
105 | Launcher=
106 | UseLauncher=0
107 | DebugCWD=
108 | RemoteHost=192.168.1.68
109 | RemotePath=C:\shared\vss\VisualSubSync.exe
110 | [Language]
111 | ActiveLang=
112 | ProjectLang=
113 | RootDir=F:\Borland\Delphi7\Bin\
114 | [Version Info]
115 | IncludeVerInfo=1
116 | AutoIncBuild=0
117 | MajorVer=1
118 | MinorVer=0
119 | Release=2
120 | Build=13
121 | Debug=0
122 | PreRelease=0
123 | Special=0
124 | Private=0
125 | DLL=0
126 | Locale=1040
127 | CodePage=1252
128 | [Version Info Keys]
129 | CompanyName=Italiansubs.net
130 | FileDescription=VisualSubSync
131 | FileVersion=1.0.2.13
132 | InternalName=
133 | LegalCopyright=
134 | LegalTrademarks=
135 | OriginalFilename=
136 | ProductName=VisualSubSync
137 | ProductVersion=1.0.0.0
138 | Comments=https://sourceforge.net/projects/vss-itasa/
139 | [HistoryLists\hlDebugSourcePath]
140 | Count=1
141 | Item0=.\ThirdParty;.\ThirdParty\DirectX;.\ThirdParty\jsbridge;.\ThirdParty\WinSock2;.\ThirdParty\FastMM;.\ThirdParty\DirectX
142 | [HistoryLists\hlUnitAliases]
143 | Count=1
144 | Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
145 | [HistoryLists\hlSearchPath]
146 | Count=1
147 | Item0=.\ThirdParty;.\ThirdParty\DirectX;.\ThirdParty\jsbridge;.\ThirdParty\WinSock2;.\ThirdParty\FastMM
148 | [HistoryLists\hlUnitOutputDirectory]
149 | Count=1
150 | Item0=dcu
151 | [HistoryLists\hlOutputDirectorry]
152 | Count=3
153 | Item0=C:\Program Files (x86)\VisualSubSyncForItaliansubs
154 | Item1=C:\Program Files (x86)\(x86)\VisualSubSyncForItaliansubs
155 | Item2=C:\Program Files (x86)\VisualSubSync ItaSA
156 |
--------------------------------------------------------------------------------
/VisualSubSync.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/VisualSubSync.res
--------------------------------------------------------------------------------
/VisualSubSyncEnh.dpr:
--------------------------------------------------------------------------------
1 | program VisualSubSyncEnh;
2 |
3 | uses
4 | VCLFixPack,
5 | Windows,
6 | Forms,
7 | TntSystem,
8 | main in 'main.pas' {MainForm},
9 | WAVDisplayerUnit in 'WAVDisplayerUnit.pas',
10 | WAVFileUnit in 'WAVFileUnit.pas',
11 | Renderer in 'Renderer.pas',
12 | MiniScrollBarUnit in 'MiniScrollBarUnit.pas',
13 | MiscToolsUnit in 'MiscToolsUnit.pas',
14 | ProjectUnit in 'ProjectUnit.pas' {ProjectForm},
15 | WAVExtractFormUnit in 'WAVExtractFormUnit.pas' {ExtractWAVForm},
16 | FindFormUnit in 'FindFormUnit.pas' {FindForm},
17 | PeakCreationProgressFormUnit in 'PeakCreationProgressFormUnit.pas' {PeakCreationProgressForm},
18 | AboutFormUnit in 'AboutFormUnit.pas' {AboutForm},
19 | ServerUnit in 'ServerUnit.pas',
20 | DynamicPageProcessorUnit in 'DynamicPageProcessorUnit.pas',
21 | ErrorReportFormUnit in 'ErrorReportFormUnit.pas' {ErrorReportForm},
22 | DelayFormUnit in 'DelayFormUnit.pas' {DelayForm},
23 | PageProcessorUnit in 'PageProcessorUnit.pas',
24 | SubStructUnit in 'SubStructUnit.pas',
25 | SuggestionFormUnit in 'SuggestionFormUnit.pas' {SuggestionForm},
26 | GotoFormUnit in 'GotoFormUnit.pas' {GotoForm},
27 | PreferencesFormUnit in 'PreferencesFormUnit.pas' {PreferencesForm},
28 | MRUListUnit in 'MRUListUnit.pas',
29 | VerticalScalingFormUnit in 'VerticalScalingFormUnit.pas' {VerticalScalingForm},
30 | DetachedVideoFormUnit in 'DetachedVideoFormUnit.pas' {DetachedVideoForm},
31 | JavaScriptPluginUnit in 'JavaScriptPluginUnit.pas',
32 | LogWindowFormUnit in 'LogWindowFormUnit.pas' {LogForm},
33 | CursorManager in 'CursorManager.pas',
34 | tom_TLB in 'tom_TLB.pas',
35 | StyleFormUnit in 'StyleFormUnit.pas' {StyleForm},
36 | SSAParserUnit in 'SSAParserUnit.pas',
37 | DirectVobsubInterface in 'DirectVobsubInterface.pas',
38 | TntRichEditCustomUndoUnit in 'TntRichEditCustomUndoUnit.pas',
39 | UndoableTaskUnit in 'UndoableTaskUnit.pas',
40 | UndoableSubTaskUnit in 'UndoableSubTaskUnit.pas',
41 | FileReaderUnit in 'FileReaderUnit.pas',
42 | MatroskaHelper in 'MatroskaHelper.pas',
43 | MP4File in 'MP4File.pas',
44 | FLVFile in 'FLVFile.pas',
45 | SceneChangeUnit in 'SceneChangeUnit.pas',
46 | GlobalUnit in 'GlobalUnit.pas',
47 | SRTParserUnit in 'SRTParserUnit.pas',
48 | SilentZoneFormUnit in 'SilentZoneFormUnit.pas' {SilentZoneForm},
49 | LibHunspellUnit in 'LibHunspellUnit.pas',
50 | BgThreadTaskUnit in 'BgThreadTaskUnit.pas',
51 | SpellCheckFormUnit in 'SpellCheckFormUnit.pas' {SpellCheckForm},
52 | VSSClipboardUnit in 'VSSClipboardUnit.pas',
53 | TranslateFormUnit in 'TranslateFormUnit.pas' {TranslateForm},
54 | MediaInfoDll in 'MediaInfoDLL.pas',
55 | ResynchToolFormUnit in 'ResynchToolFormUnit.pas' {ResynchToolForm},
56 | DSiWin32 in 'ThirdParty\DSiWin32.pas',
57 | LavVideoSettingsInterface in 'LavVideoSettingsInterface.pas',
58 | LavAudioSettingsInterface in 'LavAudioSettingsInterface.pas',
59 | LavSplitterSettingsInterface in 'LavSplitterSettingsInterface.pas',
60 | Diff in 'Diff.pas',
61 | DiffSubsFormUnit in 'DiffSubsFormUnit.pas' {DiffSubsForm},
62 | HashUnit in 'HashUnit.pas',
63 | blcksock in 'ThirdParty\Synapse\blcksock.pas',
64 | httpsend in 'ThirdParty\Synapse\httpsend.pas',
65 | SubtitleTimingFormUnit in 'SubtitleTimingFormUnit.pas',
66 | Md5 in 'ThirdParty\MD5.pas',
67 | MidasLib,
68 | SourceFileOperationCancel in 'SourceFileOperationCancel.pas' {SourceFileOperationCancel};
69 |
70 | {$R *.res}
71 | {$R Resources\resources.RES}
72 |
73 | begin
74 | Application.Initialize;
75 |
76 | // Fix ANSI handling (using the thread code page doesn't work correctly on some system)
77 | // e.g.: Tnt is broken when loading an ANSI file through TTntStringList.LoadFromFile is doesn't use the righ code page
78 | // TntSystem.InstallTntSystemUpdates([tsFixImplicitCodePage]);
79 | // EDIT : this is breaking UTF-8 support, we do the conversion using GetACP (see WC2MB and MC2WC in MiscUnit)
80 |
81 | Application.Title := 'VisualSubSync';
82 | Application.CreateForm(TMainForm, MainForm);
83 | Application.CreateForm(TProjectForm, ProjectForm);
84 | Application.CreateForm(TFindForm, FindForm);
85 | Application.CreateForm(TErrorReportForm, ErrorReportForm);
86 | Application.CreateForm(TSuggestionForm, SuggestionForm);
87 | Application.CreateForm(TDetachedVideoForm, DetachedVideoForm);
88 | Application.CreateForm(TResynchToolForm, ResynchToolForm);
89 | Application.CreateForm(TDiffSubsForm, DiffSubsForm);
90 | MainForm.InitGeneralJSPlugin;
91 | MainForm.LoadSettings;
92 | MainForm.FinishLoadSettings;
93 | Application.ProcessMessages;
94 | MainForm.ProcessParams;
95 | MainForm.LoadAfterParamsSettings;
96 | Application.Run;
97 | end.
98 |
--------------------------------------------------------------------------------
/VisualSubSyncEnh.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/VisualSubSyncEnh.res
--------------------------------------------------------------------------------
/WAVExtractFormUnit.dfm:
--------------------------------------------------------------------------------
1 | object ExtractWAVForm: TExtractWAVForm
2 | Left = 332
3 | Top = 220
4 | BorderIcons = [biSystemMenu, biMinimize]
5 | BorderStyle = bsSingle
6 | BorderWidth = 4
7 | Caption = 'Extract WAV'
8 | ClientHeight = 504
9 | ClientWidth = 483
10 | Color = clBtnFace
11 | Font.Charset = DEFAULT_CHARSET
12 | Font.Color = clWindowText
13 | Font.Height = -11
14 | Font.Name = 'Microsoft Sans Serif'
15 | Font.Style = []
16 | KeyPreview = True
17 | OldCreateOrder = False
18 | Position = poOwnerFormCenter
19 | OnActivate = FormActivate
20 | OnClose = FormClose
21 | OnCreate = FormCreate
22 | OnKeyDown = FormKeyDown
23 | PixelsPerInch = 96
24 | TextHeight = 13
25 | object TntLabel3: TTntLabel
26 | Left = 0
27 | Top = 437
28 | Width = 47
29 | Height = 13
30 | Caption = 'Progress :'
31 | end
32 | object TntGroupBox1: TTntGroupBox
33 | Left = 0
34 | Top = 0
35 | Width = 481
36 | Height = 291
37 | Caption = ' Video/Audio info : '
38 | TabOrder = 0
39 | object MemoVideoInfo: TTntMemo
40 | Left = 8
41 | Top = 15
42 | Width = 464
43 | Height = 267
44 | ReadOnly = True
45 | ScrollBars = ssVertical
46 | TabOrder = 0
47 | end
48 | end
49 | object bttExtract: TTntButton
50 | Left = 27
51 | Top = 471
52 | Width = 75
53 | Height = 25
54 | Caption = 'Extract'
55 | TabOrder = 1
56 | OnClick = bttExtractClick
57 | end
58 | object bttClose: TTntButton
59 | Left = 379
60 | Top = 471
61 | Width = 75
62 | Height = 25
63 | Caption = 'Cancel'
64 | TabOrder = 2
65 | OnClick = bttCloseClick
66 | end
67 | object ProgressBar1: TProgressBar
68 | Left = 56
69 | Top = 431
70 | Width = 423
71 | Height = 25
72 | Max = 1000
73 | Smooth = True
74 | TabOrder = 3
75 | end
76 | object gbSettings: TTntGroupBox
77 | Left = 0
78 | Top = 306
79 | Width = 481
80 | Height = 116
81 | Caption = ' Settings : '
82 | TabOrder = 4
83 | object TntLabelStreamToExtract: TTntLabel
84 | Left = 8
85 | Top = 24
86 | Width = 86
87 | Height = 13
88 | Caption = 'Stream to extract :'
89 | Visible = False
90 | end
91 | object cbStreamIndex: TComboBox
92 | Left = 104
93 | Top = 20
94 | Width = 369
95 | Height = 21
96 | Style = csDropDownList
97 | ItemHeight = 13
98 | TabOrder = 0
99 | Visible = False
100 | end
101 | object rbFastConversion: TRadioButton
102 | Tag = 2
103 | Left = 8
104 | Top = 88
105 | Width = 401
106 | Height = 17
107 | Caption = 'Convert to reduce file size (Mono + Sample rate divided by 2)'
108 | ParentShowHint = False
109 | ShowHint = False
110 | TabOrder = 1
111 | OnClick = rbOnlyPeakClick
112 | end
113 | object rbNoConversion: TRadioButton
114 | Tag = 1
115 | Left = 8
116 | Top = 68
117 | Width = 113
118 | Height = 17
119 | Caption = 'Simple extraction'
120 | TabOrder = 2
121 | OnClick = rbOnlyPeakClick
122 | end
123 | object rbOnlyPeak: TRadioButton
124 | Left = 8
125 | Top = 48
126 | Width = 137
127 | Height = 17
128 | Caption = 'Only create peak file'
129 | Checked = True
130 | TabOrder = 3
131 | TabStop = True
132 | OnClick = rbOnlyPeakClick
133 | end
134 | end
135 | object bttStop: TTntButton
136 | Left = 107
137 | Top = 471
138 | Width = 75
139 | Height = 25
140 | Caption = 'Stop'
141 | TabOrder = 5
142 | OnClick = bttStopClick
143 | end
144 | object bttDebug: TTntButton
145 | Left = 235
146 | Top = 471
147 | Width = 75
148 | Height = 25
149 | Caption = 'Debug'
150 | TabOrder = 6
151 | OnClick = bttDebugClick
152 | end
153 | object Timer1: TTimer
154 | Enabled = False
155 | Interval = 500
156 | OnTimer = Timer1Timer
157 | Left = 368
158 | Top = 24
159 | end
160 | end
161 |
--------------------------------------------------------------------------------
/WavWriter/IWavWriter.h:
--------------------------------------------------------------------------------
1 | // -----------------------------------------------------------------------------
2 | // VisualSubSync
3 | // -----------------------------------------------------------------------------
4 | // Copyright (C) 2003 Christophe Paris
5 | // -----------------------------------------------------------------------------
6 | // This Program is free software; you can redistribute it and/or modify
7 | // it under the terms of the GNU General Public License as published by
8 | // the Free Software Foundation; either version 2, or (at your option)
9 | // any later version.
10 | //
11 | // This Program is distributed in the hope that it will be useful,
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | // GNU General Public License for more details.
15 | //
16 | // You should have received a copy of the GNU General Public License
17 | // along with GNU Make; see the file COPYING. If not, write to
18 | // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19 | // http://www.gnu.org/copyleft/gpl.html
20 | // -----------------------------------------------------------------------------
21 |
22 | #ifndef _IWAVWRITER_H_
23 | #define _IWAVWRITER_H_
24 |
25 | #ifdef __cplusplus
26 | extern "C" {
27 | #endif
28 |
29 | // {3B7A03CE-3D3B-4fef-8CDE-3D6C2709AFF1}
30 | DEFINE_GUID(IID_IWavWriter,
31 | 0x3b7a03ce, 0x3d3b, 0x4fef, 0x8c, 0xde, 0x3d, 0x6c, 0x27, 0x9, 0xaf, 0xf1);
32 |
33 | //
34 | // IWavWriter
35 | //
36 | DECLARE_INTERFACE_(IWavWriter, IUnknown) {
37 | STDMETHOD(SetFastConversionMode)(DWORD FastConvertMode) = 0;
38 | STDMETHOD(GetFastConversionMode)(DWORD *FastConvertMode) = 0;
39 | STDMETHOD(SetSamplesPerPeakRatio)(DWORD SamplePerPeakRatio) = 0;
40 | STDMETHOD(SetWritePeakFile)(DWORD WritePeakFile) = 0;
41 | STDMETHOD(SetPeakFileName)(LPCOLESTR pszFileName) = 0;
42 | STDMETHOD(SetWriteWavFile)(DWORD WriteWavFile) = 0;
43 | };
44 |
45 | #ifdef __cplusplus
46 | }
47 | #endif
48 |
49 | // -----------------------------------------------------------------------------
50 | #endif // _IWAVWRITER_H_
51 | // -----------------------------------------------------------------------------
--------------------------------------------------------------------------------
/WavWriter/WAVFile.h:
--------------------------------------------------------------------------------
1 | // -----------------------------------------------------------------------------
2 | // VisualSubSync
3 | // -----------------------------------------------------------------------------
4 | // Copyright (C) 2003 Christophe Paris
5 | // -----------------------------------------------------------------------------
6 | // This Program is free software; you can redistribute it and/or modify
7 | // it under the terms of the GNU General Public License as published by
8 | // the Free Software Foundation; either version 2, or (at your option)
9 | // any later version.
10 | //
11 | // This Program is distributed in the hope that it will be useful,
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | // GNU General Public License for more details.
15 | //
16 | // You should have received a copy of the GNU General Public License
17 | // along with GNU Make; see the file COPYING. If not, write to
18 | // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19 | // http://www.gnu.org/copyleft/gpl.html
20 | // -----------------------------------------------------------------------------
21 |
22 | // ----------------------------------------------------------------------------
23 | // Very basic WAV file class handling
24 | // ----------------------------------------------------------------------------
25 |
26 | typedef enum {
27 | CWin32File_READ_MODE,
28 | CWin32File_WRITE_MODE
29 | } CWin32FileOpenMode;
30 |
31 | class CWin32File
32 | {
33 | public:
34 | CWin32File() : m_hFile(INVALID_HANDLE_VALUE), m_i64FileSize(0) { }
35 | ~CWin32File() { Close(); }
36 | int Open(TCHAR* Filename, CWin32FileOpenMode OpenMode);
37 | int Open2(LPOLESTR Filename, CWin32FileOpenMode OpenMode);
38 | unsigned int Read(void *Buffer, unsigned int Size);
39 | unsigned int Write(void *Buffer, unsigned int Size);
40 | bool CanSeek() { return true; }
41 | __int64 Seek(__int64 Offset, int Origin);
42 | __int64 Position();
43 | __int64 Size() { return m_i64FileSize; }
44 | void Close();
45 |
46 | private:
47 | HANDLE m_hFile;
48 | __int64 m_i64FileSize;
49 | };
50 |
51 | // ----------------------------------------------------------------------------
52 |
53 | class CWAVFileWriter
54 | {
55 | public:
56 | CWAVFileWriter() : m_File(NULL) { }
57 |
58 | virtual ~CWAVFileWriter()
59 | {
60 | Close();
61 | }
62 |
63 | bool Init(LPOLESTR Filename, WAVEFORMATEX* wf)
64 | {
65 | m_File = new CWin32File();
66 | if(!m_File->Open2(Filename,CWin32File_WRITE_MODE))
67 | {
68 | return false;
69 | }
70 |
71 | m_DataHdrOffset = 0;
72 | m_PCMDataSize = 0;
73 |
74 | return WriteRIFFHeader(0) && // Dummy value
75 | WriteFORMATHeader(wf) &&
76 | WriteDATAHeader(0); // Dummy value
77 | }
78 |
79 | bool WritePCMData(void* Data, unsigned int Size)
80 | {
81 | unsigned int DataWritten = m_File->Write(Data,Size);
82 | m_PCMDataSize += DataWritten;
83 | return (DataWritten == Size);
84 | }
85 |
86 | private:
87 | bool WriteRIFFHeader(unsigned int Size)
88 | {
89 | return (m_File->Write("RIFF", 4) == 4) &&
90 | (m_File->Write(&Size, 4) == 4) && // This is file size - 8.
91 | (m_File->Write("WAVE", 4) == 4);
92 | }
93 |
94 | bool WriteFORMATHeader(WAVEFORMATEX* wf)
95 | {
96 | unsigned int Size = sizeof(WAVEFORMATEX);
97 | return (m_File->Write("fmt ", 4) == 4) &&
98 | (m_File->Write(&Size, 4) == 4) &&
99 | (m_File->Write(wf, Size) == Size);
100 | }
101 |
102 | HRESULT WriteDATAHeader(unsigned int Size)
103 | {
104 | m_DataHdrOffset = (unsigned int)m_File->Position();
105 | return (m_File->Write("data", 4) == 4) &&
106 | (m_File->Write(&Size, 4) == 4); // PCM data size
107 | }
108 |
109 | void PatchHeaders()
110 | {
111 | // Get file size (we are already at the end :))
112 | unsigned int Filesize = (unsigned int)m_File->Position();
113 | m_File->Seek(0,FILE_BEGIN);
114 |
115 | // Rewrite RIFF header
116 | WriteRIFFHeader(Filesize-8);
117 |
118 | // Write data size now
119 | m_File->Seek(m_DataHdrOffset,FILE_BEGIN);
120 | WriteDATAHeader(m_PCMDataSize);
121 | }
122 |
123 | void Close()
124 | {
125 | if (m_File) {
126 | PatchHeaders();
127 | delete m_File;
128 | m_File = NULL;
129 | }
130 | }
131 |
132 | CWin32File* m_File;
133 | unsigned int m_DataHdrOffset;
134 | unsigned int m_PCMDataSize;
135 | };
136 |
137 | // ----------------------------------------------------------------------------
--------------------------------------------------------------------------------
/WavWriter/WavWriter.def:
--------------------------------------------------------------------------------
1 | LIBRARY WavWriter.dll
2 |
3 | EXPORTS
4 | DllMain PRIVATE
5 | DllGetClassObject PRIVATE
6 | DllCanUnloadNow PRIVATE
7 | DllRegisterServer PRIVATE
8 | DllUnregisterServer PRIVATE
9 |
--------------------------------------------------------------------------------
/WavWriter/WavWriter.dsw:
--------------------------------------------------------------------------------
1 | Microsoft Developer Studio Workspace File, Format Version 6.00
2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
3 |
4 | ###############################################################################
5 |
6 | Project: "BaseClasses"="..\..\..\..\..\DXSDK\Samples\C++\DirectShow\BaseClasses\baseclasses.dsp" - Package Owner=<4>
7 |
8 | Package=<5>
9 | {{{
10 | }}}
11 |
12 | Package=<4>
13 | {{{
14 | }}}
15 |
16 | ###############################################################################
17 |
18 | Project: "WavWriter"=.\WavWriter.dsp - Package Owner=<4>
19 |
20 | Package=<5>
21 | {{{
22 | }}}
23 |
24 | Package=<4>
25 | {{{
26 | Begin Project Dependency
27 | Project_Dep_Name BaseClasses
28 | End Project Dependency
29 | }}}
30 |
31 | ###############################################################################
32 |
33 | Global:
34 |
35 | Package=<5>
36 | {{{
37 | }}}
38 |
39 | Package=<3>
40 | {{{
41 | }}}
42 |
43 | ###############################################################################
44 |
45 |
--------------------------------------------------------------------------------
/WavWriter/WavWriter.rc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/WavWriter/WavWriter.rc
--------------------------------------------------------------------------------
/WavWriter/WavWriterUIDs.h:
--------------------------------------------------------------------------------
1 | // -----------------------------------------------------------------------------
2 | // VisualSubSync
3 | // -----------------------------------------------------------------------------
4 | // Copyright (C) 2003 Christophe Paris
5 | // -----------------------------------------------------------------------------
6 | // This Program is free software; you can redistribute it and/or modify
7 | // it under the terms of the GNU General Public License as published by
8 | // the Free Software Foundation; either version 2, or (at your option)
9 | // any later version.
10 | //
11 | // This Program is distributed in the hope that it will be useful,
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | // GNU General Public License for more details.
15 | //
16 | // You should have received a copy of the GNU General Public License
17 | // along with GNU Make; see the file COPYING. If not, write to
18 | // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19 | // http://www.gnu.org/copyleft/gpl.html
20 | // -----------------------------------------------------------------------------
21 |
22 | // {F3AFF1C3-ABBB-41f9-9521-988881D9D640}
23 | DEFINE_GUID(CLSID_WavWriter,
24 | 0xf3aff1c3, 0xabbb, 0x41f9, 0x95, 0x21, 0x98, 0x88, 0x81, 0xd9, 0xd6, 0x40);
25 |
26 | // -----------------------------------------------------------------------------
--------------------------------------------------------------------------------
/WavWriter/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Developer Studio generated include file.
3 | // Used by WavWriter.rc
4 | //
5 |
6 | // Next default values for new objects
7 | //
8 | #ifdef APSTUDIO_INVOKED
9 | #ifndef APSTUDIO_READONLY_SYMBOLS
10 | #define _APS_NEXT_RESOURCE_VALUE 101
11 | #define _APS_NEXT_COMMAND_VALUE 40001
12 | #define _APS_NEXT_CONTROL_VALUE 1000
13 | #define _APS_NEXT_SYMED_VALUE 101
14 | #endif
15 | #endif
16 |
--------------------------------------------------------------------------------
/clean.bat:
--------------------------------------------------------------------------------
1 | del /s *.dcu *.~* *.ddp *.obj *.dsm *.bak *.dsk
2 | del .\dcu\*.dcu
3 | del .\jsbridge\*.dcu
4 | del .\dunit\dcu\*.dcu
5 | del .\dunit\*.dsm
6 | del .\dunit\*.~*
7 | del .\dunit\*.dsk
--------------------------------------------------------------------------------
/dcu/Delphi compiled unit folder.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/dcu/Delphi compiled unit folder.txt
--------------------------------------------------------------------------------
/dunit/MiscToolsUnitTests.pas:
--------------------------------------------------------------------------------
1 | unit MiscToolsUnitTests;
2 |
3 | interface
4 |
5 | uses
6 | MiscToolsUnit,
7 | TestFrameWork;
8 |
9 | type
10 | TMiscToolsTests = class(TTestCase)
11 | private
12 |
13 | protected
14 |
15 | published
16 |
17 | // Test methods
18 | procedure TestWideStringFind;
19 |
20 | procedure TestConvertSSAToSRT;
21 | procedure TestConvertSRTToSSA;
22 |
23 | procedure TestSaveLoadToStream;
24 | end;
25 |
26 | implementation
27 |
28 | uses Classes;
29 |
30 | procedure TMiscToolsTests.TestWideStringFind;
31 | begin
32 | CheckEquals(0, WideStringFind(1, '',''), 'Empty pattern in empty string');
33 | CheckEquals(0, WideStringFind(1, '','a'), 'Not empty pattern in empty string');
34 | CheckEquals(1, WideStringFind(1, 'a',''), 'Empty pattern in not empty string');
35 | CheckEquals(1, WideStringFind(1, 'aBcD eFgh iJk','aBc'), 'Start of string');
36 | CheckEquals(12, WideStringFind(1, 'aBcD eFgh iJk','Jk'), 'End of string');
37 | CheckEquals(0, WideStringFind(1, 'aBcD eFgh iJk','Jkl'), 'End of string2');
38 | CheckEquals(7, WideStringFind(1, 'aBcD eFgh iJk','Fg'), 'Middle of string');
39 | CheckEquals(0, WideStringFind(1, 'aBcD eFgh iJk','FG', False), 'Case insensitive');
40 | CheckEquals(0, WideStringFind(1, 'aBcD eFgh iJk','aBc', False, True), 'Whole word start of string');
41 | CheckEquals(1, WideStringFind(1, 'aBcD eFgh iJk','aBcD', False, True), 'Whole word start of string2');
42 | CheckEquals(11, WideStringFind(1, 'aBcD eFgh iJk','iJk', False, True), 'Whole word end of string');
43 | CheckEquals(6, WideStringFind(1, 'aBcD eFgh iJk','eFgh', False, True), 'Whole word middle of string');
44 | CheckEquals(11, WideStringFind(2, 'aBcD eFgh aBcD','aBcD', False, True), 'Offset > 1');
45 | end;
46 |
47 | procedure TMiscToolsTests.TestConvertSSAToSRT;
48 | begin
49 | CheckEquals('italic', ConvertSSAToSRT('{\i1}italic{\i0}'), 'italic');
50 | CheckEquals('bold', ConvertSSAToSRT('{\b1}bold{\b0}'), 'bold');
51 | CheckEquals('underlined', ConvertSSAToSRT('{\u1}underlined{\u0}'), 'underlined');
52 | end;
53 |
54 | procedure TMiscToolsTests.TestConvertSRTToSSA;
55 | begin
56 | CheckEquals('{\i1}italic{\i0}', ConvertSRTToSSA('italic'), 'italic');
57 | CheckEquals('{\b1}bold{\b0}', ConvertSRTToSSA('bold'), 'bold');
58 | CheckEquals('{\u1}underlined{\u0}', ConvertSRTToSSA('underlined'), 'underlined');
59 | end;
60 |
61 | procedure TMiscToolsTests.TestSaveLoadToStream;
62 | var MemStream : TMemoryStream;
63 | ValueWS, ResultValueWS : WideString;
64 | EmptyWS, ResultEmptyWS : WideString;
65 | ValueInt, ResultValueInt : Integer;
66 | begin
67 | MemStream := TMemoryStream.Create;
68 | ValueWS := 'toto';
69 | EmptyWS := '';
70 | ValueInt := 123;
71 | SaveToStreamWS(MemStream, ValueWS);
72 | SaveToStreamWS(MemStream, EmptyWS);
73 | SaveToStreamInt(MemStream, ValueInt);
74 | MemStream.Position := 0;
75 | LoadFromStreamWS(MemStream, ResultValueWS);
76 | LoadFromStreamWS(MemStream, ResultEmptyWS);
77 | LoadFromStreamInt(MemStream, ResultValueInt);
78 | CheckEquals(ValueWS, ResultValueWS, 'SaveLoadWS');
79 | CheckEquals(EmptyWS, ResultEmptyWS, 'SaveLoadEmptyWS');
80 | CheckEquals(ValueInt, ResultValueInt, 'SaveLoadInt');
81 | MemStream.Free;
82 | end;
83 |
84 | initialization
85 | TestFramework.RegisterTest('MiscToolsUnitTests Suite',
86 | TMiscToolsTests.Suite);
87 |
88 | end.
89 |
--------------------------------------------------------------------------------
/dunit/VisualSubSyncTests.dof:
--------------------------------------------------------------------------------
1 | [FileVersion]
2 | Version=7.0
3 | [Compiler]
4 | A=8
5 | B=0
6 | C=1
7 | D=1
8 | E=0
9 | F=0
10 | G=1
11 | H=1
12 | I=1
13 | J=0
14 | K=0
15 | L=1
16 | M=0
17 | N=1
18 | O=1
19 | P=1
20 | Q=0
21 | R=0
22 | S=0
23 | T=0
24 | U=0
25 | V=1
26 | W=0
27 | X=1
28 | Y=1
29 | Z=1
30 | ShowHints=1
31 | ShowWarnings=1
32 | UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
33 | NamespacePrefix=
34 | SymbolDeprecated=1
35 | SymbolLibrary=1
36 | SymbolPlatform=1
37 | UnitLibrary=1
38 | UnitPlatform=1
39 | UnitDeprecated=1
40 | HResultCompat=1
41 | HidingMember=1
42 | HiddenVirtual=1
43 | Garbage=1
44 | BoundsError=1
45 | ZeroNilCompat=1
46 | StringConstTruncated=1
47 | ForLoopVarVarPar=1
48 | TypedConstVarPar=1
49 | AsgToTypedConst=1
50 | CaseLabelRange=1
51 | ForVariable=1
52 | ConstructingAbstract=1
53 | ComparisonFalse=1
54 | ComparisonTrue=1
55 | ComparingSignedUnsigned=1
56 | CombiningSignedUnsigned=1
57 | UnsupportedConstruct=1
58 | FileOpen=1
59 | FileOpenUnitSrc=1
60 | BadGlobalSymbol=1
61 | DuplicateConstructorDestructor=1
62 | InvalidDirective=1
63 | PackageNoLink=1
64 | PackageThreadVar=1
65 | ImplicitImport=1
66 | HPPEMITIgnored=1
67 | NoRetVal=1
68 | UseBeforeDef=1
69 | ForLoopVarUndef=1
70 | UnitNameMismatch=1
71 | NoCFGFileFound=1
72 | MessageDirective=1
73 | ImplicitVariants=1
74 | UnicodeToLocale=1
75 | LocaleToUnicode=1
76 | ImagebaseMultiple=1
77 | SuspiciousTypecast=1
78 | PrivatePropAccessor=1
79 | UnsafeType=0
80 | UnsafeCode=0
81 | UnsafeCast=0
82 | [Linker]
83 | MapFile=0
84 | OutputObjs=0
85 | ConsoleApp=1
86 | DebugInfo=0
87 | RemoteSymbols=0
88 | MinStackSize=16384
89 | MaxStackSize=1048576
90 | ImageBase=4194304
91 | ExeDescription=
92 | [Directories]
93 | OutputDir=
94 | UnitOutputDir=dcu
95 | PackageDLLOutputDir=
96 | PackageDCPOutputDir=
97 | SearchPath=..;..\ThirdParty;..\ThirdParty\jsbridge;..\ThirdParty\DirectX
98 | Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;MiscCompo;FlatStyle_D6;CCCompo;RegComponents6;CoolTrayIcon_D6;SxMagD5
99 | Conditionals=
100 | DebugSourceDirs=
101 | UsePackages=0
102 | [Parameters]
103 | RunParams=
104 | HostApplication=
105 | Launcher=
106 | UseLauncher=0
107 | DebugCWD=
108 | [Language]
109 | ActiveLang=
110 | ProjectLang=
111 | RootDir=F:\Borland\Delphi7\Bin\
112 | [Version Info]
113 | IncludeVerInfo=0
114 | AutoIncBuild=0
115 | MajorVer=1
116 | MinorVer=0
117 | Release=0
118 | Build=0
119 | Debug=0
120 | PreRelease=0
121 | Special=0
122 | Private=0
123 | DLL=0
124 | Locale=1036
125 | CodePage=1252
126 | [Version Info Keys]
127 | CompanyName=
128 | FileDescription=
129 | FileVersion=1.0.0.0
130 | InternalName=
131 | LegalCopyright=
132 | LegalTrademarks=
133 | OriginalFilename=
134 | ProductName=
135 | ProductVersion=1.0.0.0
136 | Comments=
137 | [HistoryLists\hlUnitAliases]
138 | Count=1
139 | Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
140 | [HistoryLists\hlSearchPath]
141 | Count=8
142 | Item0=..;..\ThirdParty;..\ThirdParty\jsbridge;..\ThirdParty\DirectX
143 | Item1=..;..\ThirdParty;..\ThirdParty\jsbridge;F:\Borland\Compo\DirectX
144 | Item2=..;..\ThirdParty\jsbridge;F:\Borland\Compo\DirectX
145 | Item3=F:\Borland\Compo\DirectX;.\ThirdParty;.\ThirdParty\jsbridge;.\ThirdParty\WinSock2;.\TraceTool
146 | Item4=..;..\jsbridge;F:\Borland\Compo\DirectX
147 | Item5=..;..\jsbridge
148 | Item6=F:\Borland\Compo\DirectX;.\WinSock2;.\jsbridge
149 | Item7=C:\Borland\Delphi7\Source\ToolsAPI
150 | [HistoryLists\hlUnitOutputDirectory]
151 | Count=1
152 | Item0=dcu
153 | [HistoryLists\hlOutputDirectorry]
154 | Count=1
155 | Item0=.\Release
156 |
--------------------------------------------------------------------------------
/dunit/VisualSubSyncTests.dpr:
--------------------------------------------------------------------------------
1 | // Uncomment the following directive to create a console application
2 | // or leave commented to create a GUI application...
3 | // {$APPTYPE CONSOLE}
4 |
5 | program VisualSubSyncTests;
6 |
7 | uses
8 | TestFramework {$IFDEF LINUX},
9 | QForms,
10 | QGUITestRunner {$ELSE},
11 | Forms,
12 | GUITestRunner {$ENDIF},
13 | TextTestRunner,
14 | JavaScriptPluginUnitTests in 'JavaScriptPluginUnitTests.pas',
15 | JavaScriptPluginUnit in '..\JavaScriptPluginUnit.pas',
16 | MiscToolsUnitTests in 'MiscToolsUnitTests.pas',
17 | MiscToolsUnit in '..\MiscToolsUnit.pas',
18 | SubtitleModelTests in 'SubtitleModelTests.pas',
19 | SubtitleModel in '..\SubtitleModel.pas';
20 |
21 | {$R *.RES}
22 |
23 | begin
24 | Application.Initialize;
25 |
26 | {$IFDEF LINUX}
27 | QGUITestRunner.RunRegisteredTests;
28 | {$ELSE}
29 | if System.IsConsole then
30 | TextTestRunner.RunRegisteredTests
31 | else
32 | GUITestRunner.RunRegisteredTests;
33 | {$ENDIF}
34 |
35 | end.
36 |
37 |
--------------------------------------------------------------------------------
/dunit/VisualSubSyncTests.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/dunit/VisualSubSyncTests.res
--------------------------------------------------------------------------------
/dunit/dunit.ini:
--------------------------------------------------------------------------------
1 | [GUITestRunner Config]
2 | AutoSave=1
3 | Left=44
4 | Top=44
5 | Width=861
6 | Height=500
7 | Maximized=0
8 | UseRegistry=0
9 | ResultsPanel.Height=174
10 | ErrorMessage.Height=75
11 | ErrorMessage.Visible=1
12 | FailureList.ColumnWidth[0]=120
13 | FailureList.ColumnWidth[1]=100
14 | FailureList.ColumnWidth[2]=346
15 | FailureList.ColumnWidth[3]=275
16 | HideTestNodesOnOpen=0
17 | BreakOnFailures=0
18 | FailOnNoChecksExecuted=0
19 | FailOnMemoryLeaked=0
20 | IgnoreSetUpTearDownLeaks=0
21 | ReportMemoryLeakTypes=0
22 | SelectTestedNode=1
23 | WarnOnFailTestOverride=0
24 | PopupX=350
25 | PopupY=30
26 |
27 |
--------------------------------------------------------------------------------
/main.pas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/main.pas
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/common/itasa.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/vss-innosetup/jsplugin/common/itasa.js
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/common/tools.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/vss-innosetup/jsplugin/common/tools.js
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/flashing.js:
--------------------------------------------------------------------------------
1 | // Flashing plugin for VisualSubSync
2 | // nixxo github.com/nixxo
3 |
4 | VSSPlugin = {
5 | // Plugin constants
6 | Name: "Flashing",
7 | Description: "Detects if the sub start or stop is near a scenechange" +
8 | "and prevent the sub from flashing or bleeding into another scene.",
9 | Color: 0x000ff0,
10 | Message: "Flash",
11 |
12 | // Plugin parameters available from VSS GUI (name must start with "Param")
13 | ParamStrictMargin: {
14 | Value: 100,
15 | Unit: "ms",
16 | Description: "Margin of time to detect a correction (default: 100 ms)."
17 | },
18 |
19 | HasError: function(CurrentSub, PreviousSub, NextSub) {
20 | var msg = "";
21 | var mb = VSSCore.MinimumBlank;
22 | var mrg = this.ParamStrictMargin.Value - mb;
23 | var stt = CurrentSub.Start;
24 | var sc1 = SceneChange.GetNext(stt);
25 | var sc2 = SceneChange.GetPrevious(stt);
26 |
27 | if ((sc1 > 0) && ((sc1 - stt) < mrg) && (sc1 != stt)) {
28 | msg += "fix start >>>";
29 | } else if ((sc1 > 0) && ((stt - sc2) < mrg) && (sc2 != stt)) {
30 | msg += "fix start <<<";
31 | }
32 |
33 | var stt = CurrentSub.Stop;
34 | var sc1 = SceneChange.GetNext(stt);
35 | var sc2 = SceneChange.GetPrevious(stt);
36 | if ((sc1 > 0) && ((sc1 - stt) < mrg) && (sc1 - mb != stt) && (sc1 != stt)) {
37 | if (msg != "") msg += " + ";
38 | msg += "fix stop >>>";
39 | } else if ((sc2 > 0) && ((stt - sc2) < mrg) && (sc2 - mb != stt)) {
40 | if (msg != "") msg += " + ";
41 | msg += "fix stop <<<";
42 | }
43 |
44 | return msg;
45 | },
46 |
47 | FixError: function(CurrentSub, PreviousSub, NextSub) {
48 | var mb = VSSCore.MinimumBlank;
49 | var mrg = this.ParamStrictMargin.Value - mb;
50 | var stt = CurrentSub.Start;
51 | var sc1 = SceneChange.GetNext(stt);
52 | var sc2 = SceneChange.GetPrevious(stt);
53 | if (((sc1 - stt) < mrg) && (sc1 != stt)) {
54 | CurrentSub.Start = sc1;
55 | } else if (((stt - sc2) < mrg) && (sc2 != stt)) {
56 | CurrentSub.Start = sc2;
57 | }
58 |
59 | var stt = CurrentSub.Stop;
60 | var sc1 = SceneChange.GetNext(stt);
61 | var sc2 = SceneChange.GetPrevious(stt);
62 | if (((sc1 - stt) < mrg) && (sc1 != stt)) {
63 | CurrentSub.Stop = sc1 - mb;
64 | } else if ((stt - sc2) < mrg) {
65 | CurrentSub.Stop = sc2 - mb;
66 | }
67 | }
68 | };
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/general/action_itasa.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/vss-innosetup/jsplugin/general/action_itasa.js
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/general/action_nixxo.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/vss-innosetup/jsplugin/general/action_nixxo.js
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/general/action_quick_stats.js:
--------------------------------------------------------------------------------
1 | // ---------------------------------------------------------------------------
2 |
3 | JSAction_QuickStats = {
4 | onExecute : function() {
5 | var subCount = VSSCore.GetSubCount();
6 | ScriptLog('--- Quick stats ----------');
7 | ScriptLog('Subtitle count : ' + subCount);
8 |
9 | if(subCount > 0) {
10 |
11 | // Table to store results
12 | var rsArray = new Array(RSDef.length);
13 | for (var i = 0; i < rsArray.length; i++) {
14 | rsArray[i] = 0;
15 | }
16 |
17 | // Iterate over all subtitles to collect stats
18 | var sub = VSSCore.GetFirst();
19 | while (sub != null) {
20 | var rs = getReadingSpeed(sub);
21 | var rsIdx = getReadingSpeedIndex(rs);
22 | rsArray[rsIdx]++;
23 | sub = VSSCore.GetNext(sub);
24 | }
25 |
26 | // Display results
27 | for (var i = 0; i < rsArray.length; i++) {
28 | var rsCount = rsArray[i];
29 | var rsCountPercent = (rsCount * 100) / subCount;
30 | ScriptLog(RSDef[i].text + ' = ' + decimal1Round(rsCountPercent)
31 | + '% (' + rsCount + ')');
32 | }
33 |
34 | }
35 |
36 | ScriptLog('---');
37 | }
38 | };
39 |
40 | VSSCore.RegisterJavascriptAction('JSAction_QuickStats', 'Quick stats', 'Ctrl+M');
41 |
42 | // ---------------------------------------------------------------------------
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/itasa_typos_kickaha.js:
--------------------------------------------------------------------------------
1 | // Italian Subs Addicted typos v2.5
2 | // by kickaha
3 | // based on Nathbot's
4 | // Translated by rock3r
5 |
6 | LoadScript("common/itasa.js");
7 |
8 | VSSPlugin = {
9 |
10 | // ----- Plugin constant -----
11 | Name : 'ITASA - Common errors',
12 | Description : 'Checks the presence of common errors (developed by kickaha for italiansubs.net)',
13 | Color : 0x25737D,
14 | Message : 'Error in sub:',
15 | ParamDisableCheckAccentedLetter : { Value : 1, Unit : '[0=False 1=True]' },
16 |
17 | // ----- HasError method called for each subtitle during the error checking -----
18 | // If there is an error on CurrentSub return a string containing the error description.
19 | // Otherwise return an empty string.
20 | // Don't forget that PreviousSub and NextSub can be null
21 | HasError : function(CurrentSub, PreviousSub, NextSub)
22 | {
23 | if (CurrentSub.Text == "") return 'No empty lines allowed';
24 | var acc = (this.ParamDisableCheckAccentedLetter.Value == 0) ? true : false;
25 | var res = CheckItasaRules(CurrentSub, PreviousSub, NextSub, false, acc);
26 | if (res == null)
27 | return '';
28 | return res.msg;
29 | },
30 |
31 | FixError : function(CurrentSub, PreviousSub, NextSub)
32 | {
33 | if (CurrentSub.Text == "") VSSCore.DeleteSubtitle(CurrentSub.index);
34 | else
35 | {
36 | var acc = (this.ParamDisableCheckAccentedLetter.Value == 0) ? true : false;
37 | var res = CheckItasaRules(CurrentSub, PreviousSub, NextSub, true, acc);
38 | if (res == null)
39 | return;
40 | if (res.fix != null)
41 | CurrentSub.Text = res.fix;
42 | }
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/itasa_zplit_kickaha.js:
--------------------------------------------------------------------------------
1 | // Redux 1.0 by rock3r
2 | // -----------------------------------------------
3 | // Based upon Italian Subs Addicted split sub v2.5
4 | // by kickaha
5 | // -----------------------------------------------
6 | // Version 1.0 (Jul 12nd, 2012)
7 | // * Code translation
8 | // * Minor refactorings
9 |
10 | LoadScript("common/itasa.js");
11 |
12 | VSSPlugin = {
13 |
14 | // VSS Constants
15 | Name : 'ITASA - Row splitter',
16 | Description : 'Splits or joins rows with the provided parameters (developed by kickaha and rock3r for italiansubs.net)',
17 | Color : 0x00C0C0,
18 | Message : 'Row splitter :',
19 |
20 | // Parameters
21 | // ParamMaxRighe : { Value : 2, Unit : 'Characters' }, // Max lines - fixed at 2, leaving it parametric is a mess - do we really need it?
22 | ParamMaxPerRiga : { Value : 45, Unit : 'Characters' }, // Maximum number of characters per row
23 | ParamMinPerRiga : { Value : 40, Unit : 'Characters' }, // Doesn't split a row with less than this number of characters
24 | ParamMaxSbilancia : { Value : 15, Unit : 'Characters' }, // Maximum row length unbalancement allowed when splitting
25 |
26 | // Check rows
27 | HasError : function(CurrentSub, PreviousSub, NextSub) {
28 | var current_sub = CurrentSub.Text;
29 |
30 | var credits_regex = /(?:Traduzione:|Revisione:|Resynch:|Traduzione e synch:|Synch\s?fix:)\s.+((?:Resynch:|Synch\s?fix:)?\s?.+)?/i;
31 |
32 | // Check that this isn't a credits row (ItaSA-style)
33 | if (credits_regex.test(current_sub)) {
34 | // We won't resplit credits.
35 | return '';
36 | }
37 |
38 | var fixed_sub = SplitRows(current_sub, this.ParamMaxPerRiga, this.ParamMaxSbilancia, this.ParamMinPerRiga);
39 | if (fixed_sub == null) return '';
40 | if (current_sub == fixed_sub.sub && fixed_sub.res == '') return '';
41 | return (current_sub == fixed_sub.sub ? 'no edits' : 'reformatted subtitle') +
42 | (fixed_sub.res == '' ? '' : ' - ' + fixed_sub.res);
43 | },
44 |
45 | // Resplit rows
46 | FixError : function(CurrentSub, PreviousSub, NextSub) {
47 | var current_sub = CurrentSub.Text;
48 |
49 | var credits_regex = /(?:Traduzione:|Revisione:|Resynch:|Traduzione e synch:|Synch\s?fix:)\s.+(\r\n(?:Resynch:|Synch\s?fix:)?\s?.+)?/i;
50 |
51 | // Check that this isn't a credits row (ItaSA-style)
52 | if (credits_regex.test(current_sub)) {
53 | // We won't resplit credits.
54 | return;
55 | }
56 |
57 | var fixed_sub = SplitRows(current_sub, this.ParamMaxPerRiga, this.ParamMaxSbilancia, this.ParamMinPerRiga);
58 | if (fixed_sub == null) return;
59 | CurrentSub.Text = fixed_sub.sub;
60 | return;
61 | }
62 |
63 | }
64 |
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/overlapping.js:
--------------------------------------------------------------------------------
1 | // Overlapping & minimum blank
2 | // (christophe.paris free.fr)
3 | // ParamMode by Nathbot
4 |
5 | VSSPlugin = {
6 | // ----- Plugin constant -----
7 | Name : 'Overlapping & minimum blank',
8 | Description : 'An error is detected when the subtitle overlap on next subtitle, or when the minimum blank (see global subtitle preferences) is not respected.',
9 | Color : 0xFF3737,
10 | Message : 'Subtitle overlap on next subtitle :',
11 |
12 | // ----- Plugin parameters available from VSS GUI (name must start with "Param") -----
13 | ParamFixableOverlap : { Value : 100, Unit : 'ms', Description : 'The overlap must be inferior to this to be fixed automatically.'},
14 | ParamMode : { Value : 2, Unit : '(1/2/3)', Description : 'Mode 1: Split the overlap zone in two.\nMode 2: Change the current subtitle stop time.\nMode 3: Change the next subtitle start time.'},
15 |
16 | // ----- HasError method called for each subtitle during the error checking -----
17 | // If there is an error on CurrentSub return a string containing the error description.
18 | // Otherwise return an empty string.
19 | // Don't forget that PreviousSub and NextSub can be null
20 | HasError : function(CurrentSub, PreviousSub, NextSub) {
21 | if (NextSub === null) {
22 | return '';
23 | }
24 | var OverlapInMs = NextSub.Start - CurrentSub.Stop;
25 | if ((OverlapInMs > 0) && (OverlapInMs >= VSSCore.MinimumBlank)) {
26 | return '';
27 | }
28 | if (OverlapInMs < 0) {
29 | return (-OverlapInMs) + 'ms overlap';
30 | }
31 | return 'blank is only ' + OverlapInMs + 'ms';
32 | },
33 |
34 | FixError : function(CurrentSub, PreviousSub, NextSub) {
35 | if (NextSub === null) {
36 | return '';
37 | }
38 |
39 | var OverlapInMs = NextSub.Start - CurrentSub.Stop;
40 |
41 | if (((OverlapInMs > 0) && (OverlapInMs > VSSCore.MinimumBlank)) ||
42 | (-OverlapInMs > this.ParamFixableOverlap.Value)) {
43 | return '';
44 | }
45 |
46 | switch(this.ParamMode.Value){
47 | case 1:
48 | // Fix the overlap by dividing it by 2
49 | var MiddlePoint = (CurrentSub.Stop + (OverlapInMs / 2));
50 | var HalfOffset = (VSSCore.MinimumBlank / 2);
51 | CurrentSub.Stop = MiddlePoint - HalfOffset;
52 | NextSub.Start = CurrentSub.Stop + VSSCore.MinimumBlank;
53 | break;
54 |
55 | case 2:
56 | // Fix the overlap by changing the stop time of the current subtitle
57 | var Required = VSSCore.MinimumBlank - OverlapInMs;
58 | CurrentSub.Stop -= Required;
59 | break;
60 |
61 | case 3:
62 | // Fix the overlap by changing the start time of the next subtitle
63 | var Required = VSSCore.MinimumBlank - OverlapInMs;
64 | NextSub.Start += Required;
65 | break;
66 |
67 | default:
68 | ScriptLog('ParamMode = ' + this.ParamMode.Value + ' is not supported');
69 | break;
70 | }
71 |
72 | // Special case when OverlapInMs == 0
73 | if (NextSub.Start == CurrentSub.Stop) {
74 | NextSub.Start += 1;
75 | }
76 | }
77 | };
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/readme.txt:
--------------------------------------------------------------------------------
1 | This directory contains JavaScript plugins for VisualSubSync.
2 |
3 | For more information about JavaScript check this links:
4 | http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide
5 | http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference
6 | http://developer.mozilla.org/en/docs/A_re-introduction_to_JavaScript
7 |
8 |
9 | VSS specific functions and properties:
10 |
11 | ScriptLog(Message) : Display a message in the log window
12 | SetStatusBarText(Message) : Display a message in the status bar
13 | LoadScript(Filename) : Load an external javascript file
14 |
15 |
16 | VSSCore.INDEX_COL_IDX : Index of the subtitle index column
17 | VSSCore.START_COL_IDX : Index of the start time column
18 | VSSCore.STOP_COL_IDX : Index of the stop time colum
19 | VSSCore.STYLE_COL_IDX : Index of the style column (SSA/ASS only)
20 | VSSCore.TEXT_COL_IDX : Index of the text column
21 | VSSCore.LAST_CORE_COL_IDX : Index of the last column of VSS core
22 |
23 | VSSCore.CpsTarget : Characters per second target (value set in the preferences dialog)
24 | VSSCore.MinimumDuration : Minimum subtitle duration (value set in the preferences dialog)
25 | VSSCore.MaximumDuration : Maximum subtitle duration (value set in the preferences dialog)
26 | VSSCore.MinimumBlank : Minimum blank between subtitles (value set in the preferences dialog)
27 |
28 | VSSCore.VideoWidth : The video width in pixel (0 if no video)
29 | VSSCore.VideoHeight : The video height in pixel (0 if no video)
30 |
31 | VSSCore.RegisterJavascriptAction(Name, Description, DefaultShortcut) : Register a javascript action
32 | VSSCore.GetSubCount() : Return the total number of subtitles
33 | VSSCore.GetSubAt(Index) : Return the subtitle at the specified index
34 | VSSCore.GetFirst() : Return the first subtitle
35 | VSSCore.GetNext(Subtitle) : Return the subtitle next to the specified one
36 | VSSCore.GetPrevious(Subtitle) : Return the subtitle previous to the specified one
37 | VSSCore.GetFirstSelected() : Return the first selected subtitle
38 | VSSCore.GetNextSelected(Subtitle) : Return the next selected subtitle after the specified one
39 | VSSCore.MeasureStringWidth(FontName, FontSize, IsBold, Text) : Return the width of the text in pixels.
40 |
41 | Subtitle.Index : Index of the subtitle
42 | Subtitle.Start : Start time in ms of the subtitle
43 | Subtitle.Stop : Stop time in ms of the subtitle
44 | Subtitle.Text : Subtitle's text
45 | Subtitle.StrippedText : Subtitle's text without any tags
46 |
47 |
48 | SceneChange.StartOffset : The offset in ms to keep before a scene change (value set in the preferences dialog)
49 | SceneChange.StopOffset : The offset in ms to keep after a scene change (value set in the preferences dialog)
50 | SceneChange.FilterOffset : The offset in ms from subtitle start and stop where scene change are filtered (value set in the preferences dialog)
51 | SceneChange.Visible : True if scene change are currenlty visible in VSS (value set in the preferences dialog)
52 | SceneChange.GetCount() : Get the total number of scene change
53 | SceneChange.GetAt(Index) : Get the time of the scene change at the specified index in ms. Index is between 0 and GetCount()-1
54 | SceneChange.GetNext(TimeMs) : Get the time in ms of the next scene change superior or equal to TimeMs
55 | SceneChange.GetPrevious(TimeMs) : Get the time in ms of the next scene change inferior or equal to TimeMs
56 | SceneChange.Contains(Start,Stop) : Check if there is a scene change between [Start,Stop]
57 |
58 |
59 |
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/too_many_lines.js:
--------------------------------------------------------------------------------
1 | // Too many lines
2 | // (christophe.paris free.fr)
3 | //
4 |
5 | VSSPlugin = {
6 | // ----- Plugin constant -----
7 | Name : 'Too many lines',
8 | Description : 'An error is detected when the number of lines is '+
9 | 'strictly superior to the specified value.',
10 | Color : 0x9C00FF,
11 | Message : 'Subtitle has too many lines :',
12 |
13 | // ----- Plugin parameters available from VSS GUI (name must start with "Param") -----
14 | ParamMaxLines : { Value : 2, Unit : 'Lines' },
15 |
16 | // ----- HasError method called for each subtitle during the error checking -----
17 | // If there is an error on CurrentSub return a string containing the error description.
18 | // Otherwise return an empty string.
19 | // Don't forget that PreviousSub and NextSub can be null
20 | HasError : function(CurrentSub, PreviousSub, NextSub) {
21 | var SubText = CurrentSub.StrippedText;
22 | var LineArray = SubText.split('\r\n');
23 | var LineArrayLen = LineArray.length;
24 |
25 | if(LineArrayLen > this.ParamMaxLines.Value)
26 | {
27 | return '' + LineArrayLen + ' lines';
28 | } else {
29 | return '';
30 | }
31 | }
32 | };
--------------------------------------------------------------------------------
/vss-innosetup/jsplugin/un-closed_tags.js:
--------------------------------------------------------------------------------
1 | // Trop de lignes
2 | // Dapitch666 - Lords of kobol
3 |
4 | VSSPlugin = {
5 | // ----- Plugin constant -----
6 | Name : 'Un-closed tags',
7 | Description : 'Detects and fixes un-closed tags.',
8 | Color : 0xff99cc,
9 | Message : 'Un-closed tag :',
10 |
11 | // ----- Plugin parameters available from VSS GUI (name must start with "Param") -----
12 |
13 | HasError : function(CurrentSub, PreviousSub, NextSub) {
14 | var SubText = CurrentSub.Text;
15 | var regOuvert = /<(.)>/
16 | regOuvert.exec(SubText);
17 | var Tag = regOuvert.exec(SubText);
18 | var regFerme = new RegExp('<\\/' + RegExp.$1 + '>');
19 | if (SubText.match(regOuvert) && !SubText.match(regFerme))
20 | {
21 | return ('<' + RegExp.$1 + '>');
22 | } else {
23 | return '';
24 | }
25 | },
26 |
27 | FixError : function(CurrentSub, PreviousSub, NextSub) {
28 | var SubText = CurrentSub.Text;
29 | var regOuvert = /<(.)>/
30 | regOuvert.exec(SubText);
31 | CurrentSub.Text += '' + RegExp.$1 + '>';
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/vss-innosetup/vss-innosetup.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Red5goahead/VisualSubSync-Enhanced/d8ef50651462b6752cd74b3ce4028781435d7348/vss-innosetup/vss-innosetup.zip
--------------------------------------------------------------------------------