From 17468731cf51be7d80d4707a8db6cbb560f2db20 Mon Sep 17 00:00:00 2001 From: URUWorks Date: Sun, 10 Mar 2024 09:29:38 -0300 Subject: [PATCH] work on #279 #245 --- TeroSubtitler/src/formTBX.lfm | 4 +- TeroSubtitler/src/formTBX.pas | 3 +- TeroSubtitler/src/formTBXSettings.lfm | 2 +- TeroSubtitler/src/formTBXSettings.pas | 51 +++++++++++++--- TeroSubtitler/src/formTranslationMemory.lfm | 10 ++-- TeroSubtitler/src/formTranslationMemory.pas | 3 + .../src/formTranslationMemorySettings.lfm | 2 +- .../src/formTranslationMemorySettings.pas | 59 ++++++++++++++++--- TeroSubtitler/src/procFiles.pas | 3 + TeroSubtitler/src/procWorkspace.pas | 18 ++++++ .../subtitleapi/UWSubtitleAPI.TBX.pas | 16 +++-- .../subtitleapi/UWSubtitleAPI.TMX.pas | 11 +++- 12 files changed, 148 insertions(+), 34 deletions(-) diff --git a/TeroSubtitler/src/formTBX.lfm b/TeroSubtitler/src/formTBX.lfm index fe7ae08e..b02404e9 100644 --- a/TeroSubtitler/src/formTBX.lfm +++ b/TeroSubtitler/src/formTBX.lfm @@ -12,7 +12,7 @@ object frmTBX: TfrmTBX OnCreate = FormCreate OnShow = FormShow Position = poMainFormCenter - LCLVersion = '2.2.6.0' + LCLVersion = '3.2.0.0' object VST: TLazVirtualStringTree AnchorSideRight.Control = btnClose AnchorSideBottom.Control = btnClose @@ -54,7 +54,7 @@ object frmTBX: TfrmTBX BorderSpacing.Bottom = 8 Cancel = True Caption = 'Close' - OnClick = btnCloseClick TabOrder = 1 + OnClick = btnCloseClick end end diff --git a/TeroSubtitler/src/formTBX.pas b/TeroSubtitler/src/formTBX.pas index f71facfd..840d4fa0 100644 --- a/TeroSubtitler/src/formTBX.pas +++ b/TeroSubtitler/src/formTBX.pas @@ -60,7 +60,7 @@ TfrmTBX = class(TForm) implementation uses - procTypes, procVST, procWorkspace, procColorTheme, procConfig; + procTypes, procVST, procWorkspace, procColorTheme, procConfig, formMain; {$R *.lfm} @@ -91,6 +91,7 @@ procedure TfrmTBX.FormShow(Sender: TObject); begin LoadFormSettings(Self); CheckColorTheme(Self); + CheckForTerminology(VSTFocusedNode(frmMain.VST)); end; // ----------------------------------------------------------------------------- diff --git a/TeroSubtitler/src/formTBXSettings.lfm b/TeroSubtitler/src/formTBXSettings.lfm index 9c467ac8..1030688a 100644 --- a/TeroSubtitler/src/formTBXSettings.lfm +++ b/TeroSubtitler/src/formTBXSettings.lfm @@ -13,7 +13,7 @@ object frmTBXSettings: TfrmTBXSettings OnCreate = FormCreate OnShow = FormShow Position = poMainFormCenter - LCLVersion = '3.0.0.3' + LCLVersion = '3.2.0.0' object edtOpenFile: TEdit AnchorSideRight.Control = btnOpenFile Left = 160 diff --git a/TeroSubtitler/src/formTBXSettings.pas b/TeroSubtitler/src/formTBXSettings.pas index 3831a360..66efcc8f 100644 --- a/TeroSubtitler/src/formTBXSettings.pas +++ b/TeroSubtitler/src/formTBXSettings.pas @@ -58,7 +58,7 @@ TfrmTBXSettings = class(TForm) implementation uses - procWorkspace, UWSystem.Globalization, procTypes; + procWorkspace, UWSystem.Globalization, procTypes, procConfig, procForms; {$R *.lfm} @@ -73,9 +73,17 @@ procedure TfrmTBXSettings.FormCreate(Sender: TObject); FillCultureTStrings(cboSourceLang.Items); cboTransLang.Items.Assign(cboSourceLang.Items); - //TODO: Localize = Maybe nothing to do - cboSourceLang.ItemIndex := 49; // eng - cboTransLang.ItemIndex := 120; // spa + edtOpenFile.Text := TBX.FileName; + + if TBX.Langs^.SrcLang <> '' then + cboSourceLang.ItemIndex := GetCultureIndex(TBX.Langs^.SrcLang) + else + cboSourceLang.ItemIndex := 49; // eng + + if TBX.Langs^.DstLang <> '' then + cboTransLang.ItemIndex := GetCultureIndex(TBX.Langs^.DstLang) + else + cboTransLang.ItemIndex := 120; // spa end; // ----------------------------------------------------------------------------- @@ -110,9 +118,17 @@ procedure TfrmTBXSettings.btnOpenFileClick(Sender: TObject); OD := TOpenDialog.Create(NIL); try OD.Title := lngOpenFile; - OD.Filter := lngAllSupportedFiles + '(*.tbx)|*.tbx'; + OD.Filter := lngAllSupportedFiles + ' (*.tbx)|*.tbx'; OD.Options := [ofCreatePrompt, ofOverwritePrompt]; + if edtOpenFile.Text <> '' then + begin + OD.FileName := ExtractFileName(edtOpenFile.Text); + OD.InitialDir := ExtractFileDir(edtOpenFile.Text); + end + else + OD.InitialDir := TerminologyFolder; + if OD.Execute then begin if not FileExists(OD.FileName) and (ExtractFileExt(OD.FileName) = '') then @@ -128,12 +144,29 @@ procedure TfrmTBXSettings.btnOpenFileClick(Sender: TObject); // ----------------------------------------------------------------------------- procedure TfrmTBXSettings.btnApplyClick(Sender: TObject); +var + s: String; begin TBX.Header^.lang := GetCultureName(cboSourceLang.ItemIndex); - TBX.Langs^.SrcLang := GetCultureShortName(cboSourceLang.ItemIndex); - TBX.Langs^.DstLang := GetCultureShortName(cboTransLang.ItemIndex); - TBX.LoadFromFile(edtOpenFile.Text); - Close; + TBX.Langs^.SrcLang := GetCultureName(cboSourceLang.ItemIndex); + TBX.Langs^.DstLang := GetCultureName(cboTransLang.ItemIndex); + //TBX.Langs^.SrcLang := GetCultureShortName(cboSourceLang.ItemIndex); + //TBX.Langs^.DstLang := GetCultureShortName(cboTransLang.ItemIndex); + + if edtOpenFile.Text <> '' then + begin + s := edtOpenFile.Text; + + if not FileExists(s) and (ExtractFileDir(s) = '') then + s := ConcatPaths([TerminologyFolder, ChangeFileExt(s, '.tbx')]); + + TBX.LoadFromFile(s); + + ShowTBX; + Close; + end + else + edtOpenFile.SetFocus; end; // ----------------------------------------------------------------------------- diff --git a/TeroSubtitler/src/formTranslationMemory.lfm b/TeroSubtitler/src/formTranslationMemory.lfm index 2edb5181..5df04f81 100644 --- a/TeroSubtitler/src/formTranslationMemory.lfm +++ b/TeroSubtitler/src/formTranslationMemory.lfm @@ -12,7 +12,7 @@ object frmTranslationMemory: TfrmTranslationMemory OnCreate = FormCreate OnShow = FormShow Position = poMainFormCenter - LCLVersion = '2.2.6.0' + LCLVersion = '3.2.0.0' object VST: TLazVirtualStringTree AnchorSideRight.Control = btnClose AnchorSideBottom.Control = Owner @@ -50,8 +50,8 @@ object frmTranslationMemory: TfrmTranslationMemory Anchors = [akTop, akRight] Caption = 'Copy' Default = True - OnClick = btnCopyClick TabOrder = 1 + OnClick = btnCopyClick end object btnValidate: TButton AnchorSideTop.Control = btnCopy @@ -63,8 +63,8 @@ object frmTranslationMemory: TfrmTranslationMemory Anchors = [akTop, akRight] BorderSpacing.Top = 5 Caption = 'Validate' - OnClick = btnValidateClick TabOrder = 2 + OnClick = btnValidateClick end object btnClose: TButton AnchorSideRight.Control = Owner @@ -80,8 +80,8 @@ object frmTranslationMemory: TfrmTranslationMemory BorderSpacing.Bottom = 8 Cancel = True Caption = 'Close' - OnClick = btnCloseClick TabOrder = 4 + OnClick = btnCloseClick end object btnUse: TButton AnchorSideTop.Control = btnValidate @@ -93,7 +93,7 @@ object frmTranslationMemory: TfrmTranslationMemory Anchors = [akTop, akRight] BorderSpacing.Top = 5 Caption = 'Use' - OnClick = btnUseClick TabOrder = 3 + OnClick = btnUseClick end end diff --git a/TeroSubtitler/src/formTranslationMemory.pas b/TeroSubtitler/src/formTranslationMemory.pas index 505e34f0..0a4d43e7 100644 --- a/TeroSubtitler/src/formTranslationMemory.pas +++ b/TeroSubtitler/src/formTranslationMemory.pas @@ -204,7 +204,10 @@ procedure TfrmTranslationMemory.btnUseClick(Sender: TObject); begin if Assigned(VST.FocusedNode) then with VST.FocusedNode^ do + begin + Subtitles.ItemPointer[VSTFocusedNode(frmMain.VST)]^.Data := TMX.IndexFromMap(Index)+1; frmMain.mmoTranslation.Text := GetItemAtIndex(Index); + end; end; // ----------------------------------------------------------------------------- diff --git a/TeroSubtitler/src/formTranslationMemorySettings.lfm b/TeroSubtitler/src/formTranslationMemorySettings.lfm index f6c49705..9010cfd5 100644 --- a/TeroSubtitler/src/formTranslationMemorySettings.lfm +++ b/TeroSubtitler/src/formTranslationMemorySettings.lfm @@ -13,7 +13,7 @@ object frmTranslationMemorySettings: TfrmTranslationMemorySettings OnCreate = FormCreate OnShow = FormShow Position = poMainFormCenter - LCLVersion = '3.0.0.3' + LCLVersion = '3.2.0.0' object edtOpenFile: TEdit AnchorSideRight.Control = btnOpenFile Left = 160 diff --git a/TeroSubtitler/src/formTranslationMemorySettings.pas b/TeroSubtitler/src/formTranslationMemorySettings.pas index 294eb0ee..a6724afa 100644 --- a/TeroSubtitler/src/formTranslationMemorySettings.pas +++ b/TeroSubtitler/src/formTranslationMemorySettings.pas @@ -22,7 +22,8 @@ interface uses - Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, LCLTranslator, procLocalize; + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, + LCLTranslator, procLocalize; type @@ -58,7 +59,8 @@ TfrmTranslationMemorySettings = class(TForm) implementation uses - procWorkspace, UWSystem.Globalization, procTypes; + procWorkspace, UWSystem.Globalization, procTypes, procConfig, procForms, + UWSubtitleAPI.TMX, formMain; {$R *.lfm} @@ -73,9 +75,17 @@ procedure TfrmTranslationMemorySettings.FormCreate(Sender: TObject); FillCultureTStrings(cboSourceLang.Items); cboTransLang.Items.Assign(cboSourceLang.Items); - //TODO: Localize = Maybe nothing to do - cboSourceLang.ItemIndex := 49; // eng - cboTransLang.ItemIndex := 120; // spa + edtOpenFile.Text := TMX.FileName; + + if TMX.Langs^.SrcLang <> '' then + cboSourceLang.ItemIndex := GetCultureIndex(TMX.Langs^.SrcLang) + else + cboSourceLang.ItemIndex := 49; // eng + + if TMX.Langs^.DstLang <> '' then + cboTransLang.ItemIndex := GetCultureIndex(TMX.Langs^.DstLang) + else + cboTransLang.ItemIndex := 120; // spa end; // ----------------------------------------------------------------------------- @@ -110,9 +120,17 @@ procedure TfrmTranslationMemorySettings.btnOpenFileClick(Sender: TObject); OD := TOpenDialog.Create(NIL); try OD.Title := lngOpenFile; - OD.Filter := lngAllSupportedFiles + '(*.tmx)|*.tmx'; + OD.Filter := lngAllSupportedFiles + ' (*.tmx)|*.tmx'; OD.Options := [ofCreatePrompt, ofOverwritePrompt]; + if edtOpenFile.Text <> '' then + begin + OD.FileName := ExtractFileName(edtOpenFile.Text); + OD.InitialDir := ExtractFileDir(edtOpenFile.Text); + end + else + OD.InitialDir := TranslationMemoryFolder; + if OD.Execute then begin if not FileExists(OD.FileName) and (ExtractFileExt(OD.FileName) = '') then @@ -128,13 +146,36 @@ procedure TfrmTranslationMemorySettings.btnOpenFileClick(Sender: TObject); // ----------------------------------------------------------------------------- procedure TfrmTranslationMemorySettings.btnApplyClick(Sender: TObject); +var + s : String; + hdr : TUWTMXHeader; begin TMX.Langs^.SrcLang := GetCultureName(cboSourceLang.ItemIndex); TMX.Langs^.DstLang := GetCultureName(cboTransLang.ItemIndex); - TMX.LoadFromFile(edtOpenFile.Text); - //ShowTranslationMemory; - Close; + if edtOpenFile.Text <> '' then + begin + s := edtOpenFile.Text; + + if not FileExists(s) and (ExtractFileDir(s) = '') then + s := ConcatPaths([TranslationMemoryFolder, ChangeFileExt(s, '.tmx')]); + + TMX.LoadFromFile(s); + + hdr := TMX.Header; + hdr.creationtool := ProgramName; + TMX.Header := hdr; + + ShowTranslationMemory; + if not Workspace.TranslatorMode then + frmMain.actTranslatorMode.Execute + else + frmMain.VST.Invalidate; + + Close; + end + else + edtOpenFile.SetFocus; end; // ----------------------------------------------------------------------------- diff --git a/TeroSubtitler/src/procFiles.pas b/TeroSubtitler/src/procFiles.pas index ab5ec0b0..81d4606b 100644 --- a/TeroSubtitler/src/procFiles.pas +++ b/TeroSubtitler/src/procFiles.pas @@ -191,6 +191,9 @@ function CloseSubtitle(const AKeepVideoOpen: Boolean): Boolean; if not AKeepVideoOpen then actCloseVideo.Execute; + CloseTranslationMemory; + CloseTerminology; + SubtitleInfo.Text.FileName := ''; SubtitleInfo.Translation.FileName := ''; SubtitleChangedReset; diff --git a/TeroSubtitler/src/procWorkspace.pas b/TeroSubtitler/src/procWorkspace.pas index 410bbcee..2d9ed10a 100644 --- a/TeroSubtitler/src/procWorkspace.pas +++ b/TeroSubtitler/src/procWorkspace.pas @@ -83,6 +83,8 @@ procedure UpdateVideoLengthString; procedure GetTranslationMemoryAtIndex(const Index: Integer); procedure CheckForTranslationMemory(const AIndex: Integer); procedure CheckForTerminology(const AIndex: Integer); +procedure CloseTranslationMemory; +procedure CloseTerminology; procedure RefreshAppTitle; @@ -1314,6 +1316,22 @@ procedure CheckForTerminology(const AIndex: Integer); // ----------------------------------------------------------------------------- +procedure CloseTranslationMemory; +begin + if (frmTranslationMemory <> NIL) then frmTranslationMemory.Close; + TMX.Close; +end; + +// ----------------------------------------------------------------------------- + +procedure CloseTerminology; +begin + if (frmTBX <> NIL) then frmTBX.Close; + TBX.Close; +end; + +// ----------------------------------------------------------------------------- + procedure RefreshAppTitle; var s: String; diff --git a/TeroSubtitler/subtitleapi/UWSubtitleAPI.TBX.pas b/TeroSubtitler/subtitleapi/UWSubtitleAPI.TBX.pas index 37e11d6b..757b9776 100644 --- a/TeroSubtitler/subtitleapi/UWSubtitleAPI.TBX.pas +++ b/TeroSubtitler/subtitleapi/UWSubtitleAPI.TBX.pas @@ -72,6 +72,7 @@ TUWTBX = class destructor Destroy; override; procedure Clear; procedure Close; + procedure Save; procedure LoadFromFile(const AFileName: String); function SaveToFile(const AFileName: String): Boolean; function AddItem(const Original, Translated, Notes: String; const AllowDuplicate: Boolean = False): Integer; @@ -116,8 +117,9 @@ function ListCompare(const Item1, Item2: PUWTBXItem): Integer; constructor TUWTBX.Create(const AFileName: String; ASrcLang: String = ''; ADstLang: String = ''); begin FillByte(FHeader, SizeOf(TUWTBXHeader), 0); - if ASrcLang.IsEmpty then ASrcLang := 'en'; - if ADstLang.IsEmpty then ADstLang := 'es'; + if ASrcLang.IsEmpty then ASrcLang := 'en-US'; //'en'; + if ADstLang.IsEmpty then ADstLang := 'es-ES'; //'es'; + FLangs.SrcLang := ASrcLang; FLangs.DstLang := ADstLang; @@ -163,11 +165,17 @@ procedure TUWTBX.Clear; // ----------------------------------------------------------------------------- procedure TUWTBX.Close; +begin + Save; + Clear; +end; + +// ----------------------------------------------------------------------------- + +procedure TUWTBX.Save; begin if FChanged then SaveToFile(FFileName); - - Clear; end; // ----------------------------------------------------------------------------- diff --git a/TeroSubtitler/subtitleapi/UWSubtitleAPI.TMX.pas b/TeroSubtitler/subtitleapi/UWSubtitleAPI.TMX.pas index 6dc75870..918dea39 100644 --- a/TeroSubtitler/subtitleapi/UWSubtitleAPI.TMX.pas +++ b/TeroSubtitler/subtitleapi/UWSubtitleAPI.TMX.pas @@ -81,6 +81,7 @@ TUWTMX = class destructor Destroy; override; procedure Clear; procedure Close; + procedure Save; procedure LoadFromFile(const AFileName: String); function SaveToFile(const AFileName: String): Boolean; function AddItem(const Original, Translated, Notes: String; const AllowDuplicate: Boolean = False): Integer; @@ -760,11 +761,17 @@ procedure TUWTMX.Clear; // ----------------------------------------------------------------------------- procedure TUWTMX.Close; +begin + Save; + Clear; +end; + +// ----------------------------------------------------------------------------- + +procedure TUWTMX.Save; begin if FChanged then SaveToFile(FFileName); - - Clear; end; // -----------------------------------------------------------------------------