• R/O
  • SSH
  • HTTPS

id3v2editorplus: Commit


Commit MetaInfo

Revision34 (tree)
Zeit2019-09-30 06:12:49
Autorderekwildstar

Log Message

UClassesETipos.pas

Corrigidas e padronizadas as formas de carregamento e salvamento de arquivos .sylt e .uslt
Removidos métodos dependentes de caixas de diálogo de carregamento e salvamento

UDAMOPrincipal.pas

Incluídas ações para importar e exportar o texto USLT
Criados métodos facilitadores para ações em USLT e SYLT

UFORMPrincipal.pas

Botões para importação e exportação de texto da USLT

Ändern Zusammenfassung

Diff

--- trunk/V2/src/UClassesETipos.pas (revision 33)
+++ trunk/V2/src/UClassesETipos.pas (revision 34)
@@ -4,7 +4,7 @@
44
55 uses
66 System.Classes, System.SysUtils, Generics.Collections, SHDocVw, ExtCtrls,
7- ActnList, StdCtrls, ID3v2Library, Dialogs;
7+ ActnList, StdCtrls, ID3v2Library;
88
99 type
1010 TContexto = (cId3v1,cId3v2);
@@ -34,6 +34,7 @@
3434 FSalvarUSLT: TAction;
3535 FRemoverUSLT: TAction;
3636 FSubstituirUSLT: TAction;
37+ FExportarUSLT: TAction;
3738 FContador: TLabel;
3839 FContadorSombra: TLabel;
3940
@@ -45,14 +46,17 @@
4546 function GetItem(AIndex: Integer): TUSLTItem;
4647 procedure SetItem(AIndex: Integer; const AValue: TUSLTItem);
4748 public
48- constructor Create(AWebBrowser: TWebBrowser; ADescricao: TLabeledEdit; AIdioma: TComboBox; AProximaUSLT: TAction; AUSLTAnterior: TAction; ASalvarUSLT: TAction; ARemoverUSLT: TAction; ASubstituirUSLT: TAction; AContador: TLabel; AContadorSombra: TLabel);
49+ constructor Create(AWebBrowser: TWebBrowser; ADescricao: TLabeledEdit; AIdioma: TComboBox; AProximaUSLT: TAction; AUSLTAnterior: TAction; ASalvarUSLT: TAction; ARemoverUSLT: TAction; ASubstituirUSLT: TAction; AExportarUSLT: TAction; AContador: TLabel; AContadorSombra: TLabel);
4950
5051 procedure Limpar;
5152 procedure ProximaUSLT(AUltima: Boolean = False);
5253 function ExcluirAtual: Boolean;
53- function AdicionarUSLT(ACaixaDeDialogoParaAbrirLetra: TOpenDialog): Boolean;
54- function SubstituirUSLT(ACaixaDeDialogoParaAbrirUSLT: TOpenDialog): Boolean;
55- procedure SalvarLetraComo(ACaixaDeDialogoParaSalvarLetra: TSaveDialog);
54+ procedure SalvarLetraAtualNoArquivo(AArquivo: TFileName);
55+ // Adiciona um TUSLTItem completo a partir de um arquivo de letra
56+ // não sincronizada (.uslt). Quando ANovoUSLT = true haverá a inclusão de
57+ // uma nova letra. Quando false, a letra atual será substituída pelo
58+ // conteúdo da letra contida no arquivo
59+ procedure CarregarLetraDoArquivo(AArquivo: TFileName; ANovoUSLT: Boolean);
5660 function Add: TUSLTItem; overload;
5761 procedure Add(AIdioma: TLanguageID; ADescricao: String; ATexto: String); overload;
5862 procedure USLTAnterior(APrimeira: Boolean = False);
@@ -87,10 +91,7 @@
8791
8892 // Adiciona a FConteudo uma letra a partir do MP3. Usado quando se carrega
8993 // um ID3v2 a partir do MP3, quando o arquivo está sendo carregado
90- procedure AdicionarConteudo(ABytes: TBytes; AIndiceInicial: Word); overload;
91- // Adiciona a FConteudo uma letra a partir de um arquivo de letra (.sylt).
92- // Usando quando se adiciona uma nova letra ao ID3v2 do MP3 carregado
93- procedure AdicionarConteudo(AArquivo: TFileName); overload;
94+ procedure AdicionarConteudo(ABytes: TBytes; AIndiceInicial: Word);
9495
9596 property CodificacaoDoTexto: Byte read FCodificacaoDoTexto write FCodificacaoDoTexto;
9697 property Idioma: TLanguageID read FIdioma write FIdioma;
@@ -143,8 +144,13 @@
143144 procedure Limpar;
144145 procedure ProximaSYLT(AUltima: Boolean = False);
145146 function ExcluirAtual: Boolean;
146- function AdicionarSYLT(ACaixaDeDialogoParaAbrirLetra: TOpenDialog): Boolean;
147- procedure SalvarLetraComo(ACaixaDeDialogoParaSalvarLetra: TSaveDialog);
147+ procedure SalvarLetraAtualNoArquivo(AArquivo: TFileName);
148+ // Adiciona um TSYLTItem completo a partir de um arquivo de letra
149+ // sincronizada (.sylt). Quando ANovoSYLT = true haverá a inclusão de uma
150+ // nova letra. Quando false, a letra atual será substituída pelo conteúdo do
151+ // letra contida no arquivo
152+ procedure CarregarLetraDoArquivo(AArquivo: TFileName; ANovoSYLT: Boolean);
153+
148154 function Add: TSYLTItem; overload;
149155 procedure ConfirmarInformacoesDaLetra;
150156 procedure SYLTAnterior(APrimeira: Boolean = False);
@@ -174,21 +180,6 @@
174180 Result := TUSLTItem(inherited Add);
175181 end;
176182
177-function TUSLT.SubstituirUSLT(ACaixaDeDialogoParaAbrirUSLT: TOpenDialog): Boolean;
178-begin
179- Result := ACaixaDeDialogoParaAbrirUSLT.Execute;
180-
181- if Result then
182- with TStringList.Create do
183- try
184- LoadFromFile(ACaixaDeDialogoParaAbrirUSLT.FileName);
185- Items[FIndice].Texto := Text;
186- ExibirLetra(FIndice);
187- finally
188- Free;
189- end;
190-end;
191-
192183 procedure TUSLT.ProximaUSLT(AUltima: Boolean = False);
193184 begin
194185 if (Count = 0) or (Succ(FIndice) = Count) then
@@ -215,7 +206,7 @@
215206 end;
216207 end;
217208
218-constructor TUSLT.Create(AWebBrowser: TWebBrowser; ADescricao: TLabeledEdit; AIdioma: TComboBox; AProximaUSLT: TAction; AUSLTAnterior: TAction; ASalvarUSLT: TAction; ARemoverUSLT: TAction; ASubstituirUSLT: TAction; AContador: TLabel; AContadorSombra: TLabel);
209+constructor TUSLT.Create(AWebBrowser: TWebBrowser; ADescricao: TLabeledEdit; AIdioma: TComboBox; AProximaUSLT: TAction; AUSLTAnterior: TAction; ASalvarUSLT: TAction; ARemoverUSLT: TAction; ASubstituirUSLT: TAction; AExportarUSLT: TAction; AContador: TLabel; AContadorSombra: TLabel);
219210 begin
220211 inherited Create(TUSLTItem);
221212 FIndice := -1;
@@ -228,6 +219,7 @@
228219 FSalvarUSLT := ASalvarUSLT;
229220 FRemoverUSLT := ARemoverUSLT;
230221 FSubstituirUSLT := ASubstituirUSLT;
222+ FExportarUSLT := AExportarUSLT;
231223 FContador := AContador;
232224 FContadorSombra := AContadorSombra;
233225 end;
@@ -237,6 +229,26 @@
237229 Result := TUSLTItem(inherited GetItem(AIndex));
238230 end;
239231
232+procedure TUSLT.SalvarLetraAtualNoArquivo(AArquivo: TFileName);
233+begin
234+ with TFileStream.Create(AArquivo,fmCreate or fmShareDenyWrite) do
235+ try
236+ // Cabeçalho do arquivo
237+ Write(PAnsiChar('Iv2EP!USLT')^,10);
238+
239+ // Descrição
240+ Write(PWideChar(Items[FIndice].Descricao)^, (Length(Items[FIndice].FDescricao) + 1) * 2);
241+
242+ // Idioma
243+ Write(Items[FIndice].Idioma, 3);
244+
245+ // Texto da letra
246+ Write(PWideChar(Trim(Items[FIndice].Texto))^, (Length(Trim(Items[FIndice].Texto)) + 1) * 2);
247+ finally
248+ Free;
249+ end;
250+end;
251+
240252 procedure TUSLT.SetItem(AIndex: Integer; const AValue: TUSLTItem);
241253 begin
242254 inherited SetItem(AIndex, AValue);
@@ -258,20 +270,6 @@
258270 ExibirLetra(FIndice);
259271 end;
260272
261-function TUSLT.AdicionarUSLT(ACaixaDeDialogoParaAbrirLetra: TOpenDialog): Boolean;
262-begin
263- Result := ACaixaDeDialogoParaAbrirLetra.Execute;
264- if Result then
265- with TStringList.Create do
266- try
267- LoadFromFile(ACaixaDeDialogoParaAbrirLetra.FileName);
268- Self.Add.Texto := Text;
269- ProximaUSLT(True);
270- finally
271- Free;
272- end;
273-end;
274-
275273 procedure TUSLT.Limpar;
276274 begin
277275 Clear;
@@ -303,6 +301,48 @@
303301 Doc.Close;
304302 end;
305303
304+procedure TUSLT.CarregarLetraDoArquivo(AArquivo: TFileName; ANovoUSLT: Boolean);
305+var
306+ ArquivoUSLT: TFileStream;
307+ Header: PAnsiChar;
308+ USLT: TUSLTItem;
309+begin
310+ ArquivoUSLT := TFileStream.Create(AArquivo,fmOpenRead or fmShareDenyWrite);
311+ Header := AllocMem(10);
312+
313+ try
314+ if ANovoUSLT or (FIndice = -1) then
315+ USLT := Add
316+ else
317+ begin
318+ USLT := Items[FIndice];
319+ USLT.Texto := '';
320+ end;
321+
322+ var Idioma: TLanguageID;
323+
324+ ArquivoUSLT.Read(Header^,10);
325+
326+ if Header <> 'Iv2EP!USLT' then
327+ raise Exception.Create('Arquivo USLT inválido');
328+
329+ USLT.Descricao := ArquivoUSLT.TextoUnicode;
330+
331+ ArquivoUSLT.Read(Idioma,3);
332+ USLT.Idioma := Idioma;
333+
334+ USLT.Texto := ArquivoUSLT.TextoUnicode;
335+
336+ if ANovoUSLT then
337+ ProximaUSLT(True)
338+ else
339+ ExibirLetra(FIndice);
340+ finally
341+ FreeMem(Header);
342+ ArquivoUSLT.Free;
343+ end;
344+end;
345+
306346 function TUSLT.ExcluirAtual: Boolean;
307347 begin
308348 Result := False;
@@ -338,18 +378,6 @@
338378 end;
339379 end;
340380
341-procedure TUSLT.SalvarLetraComo(ACaixaDeDialogoParaSalvarLetra: TSaveDialog);
342-begin
343- if ACaixaDeDialogoParaSalvarLetra.Execute then
344- with TStringList.Create do
345- try
346- Text := Items[FIndice].Texto;
347- SaveToFile(ACaixaDeDialogoParaSalvarLetra.FileName);
348- finally
349- Free;
350- end;
351-end;
352-
353381 procedure TUSLT.AtualizarEstadoDosComponentesDeSaida;
354382 begin
355383 FProximaUSLT.Enabled := (Count > 0) and (FIndice < Pred(Count));
@@ -357,6 +385,7 @@
357385 FSalvarUSLT.Enabled := Count > 0;
358386 FRemoverUSLT.Enabled := FSalvarUSLT.Enabled;
359387 FSubstituirUSLT.Enabled := FSalvarUSLT.Enabled;
388+ FExportarUSLT.Enabled := FSalvarUSLT.Enabled;
360389 FContador.Caption := Succ(FIndice).ToString + ' / ' + Count.ToString;
361390 FContadorSombra.Caption := FContador.Caption;
362391 FDescricao.Enabled := FSalvarUSLT.Enabled;
@@ -577,32 +606,6 @@
577606 end;
578607 end;
579608
580-procedure TSYLTItem.AdicionarConteudo(AArquivo: TFileName);
581-var
582- Header: PAnsiChar;
583- Verso: TSYLTVerso;
584-begin
585- with TFileStream.Create(AArquivo,fmOpenRead or fmShareDenyWrite) do
586- try
587- Position := 0;
588-
589- Read(Header^,10);
590-
591- if Header <> 'Iv2EP!SYLT' then
592- raise Exception.Create('Arquivo SYLT inválido');
593-
594- while Position < Size do
595- begin
596- Read(Verso.Tempo,SizeOf(Cardinal));
597- Verso.Texto := TextoUnicode;
598- carregue todos os elementos do sylt incluindo sua descricao
599- FConteudo.Add(Verso);
600- end;
601- finally
602- Free;
603- end;
604-end;
605-
606609 constructor TSYLTItem.Create(ACollection: TCollection);
607610 begin
608611 inherited;
@@ -632,16 +635,6 @@
632635 Result := TSYLTItem(inherited Add);
633636 end;
634637
635-function TSYLT.AdicionarSYLT(ACaixaDeDialogoParaAbrirLetra: TOpenDialog): Boolean;
636-begin
637- Result := ACaixaDeDialogoParaAbrirLetra.Execute;
638- if Result then
639- begin
640- Self.Add.AdicionarConteudo(ACaixaDeDialogoParaAbrirLetra.FileName);
641- ProximaSYLT(True);
642- end;
643-end;
644-
645638 procedure TSYLT.AtualizarEstadoDosComponentesDeSaida;
646639 begin
647640 FProximaSYLT.Enabled := (Count > 0) and (FIndice < Pred(Count));
@@ -658,6 +651,61 @@
658651 FTipoDeConteudo.Enabled := FSalvarSYLT.Enabled;
659652 end;
660653
654+procedure TSYLT.CarregarLetraDoArquivo(AArquivo: TFileName; ANovoSYLT: Boolean);
655+var
656+ ArquivoSYLT: TFileStream;
657+ Header: PAnsiChar;
658+ SYLT: TSYLTItem;
659+begin
660+ ArquivoSYLT := TFileStream.Create(AArquivo,fmOpenRead or fmShareDenyWrite);
661+ Header := AllocMem(10);
662+
663+ try
664+ if ANovoSYLT or (FIndice = -1) then
665+ SYLT := Add
666+ else
667+ begin
668+ SYLT := Items[FIndice];
669+ SYLT.Conteudo.Clear;
670+ end;
671+
672+ var Verso: TSYLTVerso;
673+ var Idioma: TLanguageID;
674+ var Aux: Byte;
675+
676+ ArquivoSYLT.Read(Header^,10);
677+
678+ if Header <> 'Iv2EP!SYLT' then
679+ raise Exception.Create('Arquivo SYLT inválido');
680+
681+ SYLT.Descricao := ArquivoSYLT.TextoUnicode;
682+
683+ ArquivoSYLT.Read(Idioma,3);
684+ SYLT.Idioma := Idioma;
685+
686+ ArquivoSYLT.Read(Aux,1);
687+ SYLT.FormatoDoRotuloDeTempo := Aux;
688+
689+ ArquivoSYLT.Read(Aux,1);
690+ SYLT.TipoDeConteudo := Aux;
691+
692+ while ArquivoSYLT.Position < ArquivoSYLT.Size do
693+ begin
694+ ArquivoSYLT.Read(Verso.Tempo,SizeOf(Cardinal));
695+ Verso.Texto := ArquivoSYLT.TextoUnicode;
696+ SYLT.Conteudo.Add(Verso);
697+ end;
698+
699+ if ANovoSYLT then
700+ ProximaSYLT(True)
701+ else
702+ ExibirLetra(FIndice);
703+ finally
704+ FreeMem(Header);
705+ ArquivoSYLT.Free;
706+ end;
707+end;
708+
661709 procedure TSYLT.ConfirmarInformacoesDaLetra;
662710 var
663711 IdDoIdioma: TLanguageID;
@@ -848,34 +896,33 @@
848896 ExibirLetra(FIndice);
849897 end;
850898
851-procedure TSYLT.SalvarLetraComo(ACaixaDeDialogoParaSalvarLetra: TSaveDialog);
899+procedure TSYLT.SalvarLetraAtualNoArquivo(AArquivo: TFileName);
852900 begin
853- if ACaixaDeDialogoParaSalvarLetra.Execute then
854- with TFileStream.Create(ACaixaDeDialogoParaSalvarLetra.FileName,fmCreate or fmShareDenyWrite) do
855- try
856- // Cabeçalho do arquivo
857- Write(PAnsiChar('Iv2EP!SYLT')^,10);
901+ with TFileStream.Create(AArquivo,fmCreate or fmShareDenyWrite) do
902+ try
903+ // Cabeçalho do arquivo
904+ Write(PAnsiChar('Iv2EP!SYLT')^,10);
858905
859- // Descrição
860- Write(PWideChar(Items[FIndice].Descricao)^, (Length(Items[FIndice].FDescricao) + 1) * 2);
906+ // Descrição
907+ Write(PWideChar(Items[FIndice].Descricao)^, (Length(Items[FIndice].FDescricao) + 1) * 2);
861908
862- // Idioma
863- Write(Items[FIndice].Idioma, 3);
909+ // Idioma
910+ Write(Items[FIndice].Idioma, 3);
864911
865- // Formato do rótulo de tempo
866- Write(Items[FIndice].FormatoDoRotuloDeTempo, 1);
912+ // Formato do rótulo de tempo
913+ Write(Items[FIndice].FormatoDoRotuloDeTempo, 1);
867914
868- // Tipo de conteúdo
869- Write(Items[FIndice].TipoDeConteudo, 1);
915+ // Tipo de conteúdo
916+ Write(Items[FIndice].TipoDeConteudo, 1);
870917
871- for var Verso: TSYLTVerso in Items[FIndice].Conteudo do
872- begin
873- Write(Verso.Tempo,SizeOf(Cardinal));
874- Write(PWideChar(Verso.Texto)^, (Length(Verso.Texto) + 1) * 2);
875- end;
876- finally
877- Free;
918+ for var Verso: TSYLTVerso in Items[FIndice].Conteudo do
919+ begin
920+ Write(Verso.Tempo,SizeOf(Cardinal));
921+ Write(PWideChar(Verso.Texto)^, (Length(Verso.Texto) + 1) * 2);
878922 end;
923+ finally
924+ Free;
925+ end;
879926 end;
880927
881928 procedure TSYLT.SetItem(AIndex: Integer; const AValue: TSYLTItem);
--- trunk/V2/src/UDAMOPrincipal.pas (revision 33)
+++ trunk/V2/src/UDAMOPrincipal.pas (revision 34)
@@ -57,6 +57,8 @@
5757 ACTNProximaSYLT: TAction;
5858 SADISYLT: TSaveDialog;
5959 OPDISYLT: TOpenDialog;
60+ ACTNImportarTextoUSLT: TAction;
61+ ACTNExportarTextoUSLT: TAction;
6062 procedure TIMELetreiroTimer(Sender: TObject);
6163 procedure DataModuleCreate(Sender: TObject);
6264 procedure DataModuleDestroy(Sender: TObject);
@@ -94,6 +96,8 @@
9496 procedure ACTNAdicionarSYLTExecute(Sender: TObject);
9597 procedure ACTNSYLTAnteriorExecute(Sender: TObject);
9698 procedure ACTNProximaSYLTExecute(Sender: TObject);
99+ procedure ACTNImportarTextoUSLTExecute(Sender: TObject);
100+ procedure ACTNExportarTextoUSLTExecute(Sender: TObject);
97101 private
98102 { Private declarations }
99103 FID3v1Tag: TID3v1Tag;
@@ -125,16 +129,23 @@
125129 procedure CopiarDadosDoID3v1;
126130 procedure CarregarGenerosID3;
127131 procedure AtualizarBotoesDoReprodutor;
132+ procedure ReiniciarStatusDeModificacao(AContexto: TContexto);
133+
134+ procedure AdicionarImagem;
128135 procedure RemoverImagem;
136+ procedure SubstituirImagem;
137+
138+ procedure AdicionarUSLT;
129139 procedure RemoverUSLT;
130- procedure AdicionarImagem;
131- procedure AdicionarUSLT;
132- procedure SubstituirImagem;
140+ procedure SalvarUSLT;
133141 procedure SubstituirUSLT;
134- procedure ReiniciarStatusDeModificacao(AContexto: TContexto);
142+ procedure ImportarUSLT;
143+ procedure ExportarUSLT;
144+
145+ procedure AdicionarSYLT;
135146 procedure RemoverSYLT;
147+ procedure SalvarSYLT;
136148 procedure SubstituirSYLT;
137- procedure AdicionarSYLT;
138149 public
139150 { Public declarations }
140151 procedure DefinirStatusDeModificado(AContexto: TContexto);
@@ -332,6 +343,18 @@
332343 end;
333344 end;
334345
346+procedure TDAMOPrincipal.SalvarSYLT;
347+begin
348+ if SADISYLT.Execute then
349+ FSYLT.SalvarLetraAtualNoArquivo(SADISYLT.FileName);
350+end;
351+
352+procedure TDAMOPrincipal.SalvarUSLT;
353+begin
354+ if SADIUSLT.Execute then
355+ FUSLT.SalvarLetraAtualNoArquivo(SADIUSLT.FileName);
356+end;
357+
335358 procedure TDAMOPrincipal.SubstituirImagem;
336359 begin
337360 if PNICAPIC.SubstituirImagem(OPDIAPIC) then
@@ -340,14 +363,20 @@
340363
341364 procedure TDAMOPrincipal.SubstituirUSLT;
342365 begin
343- if FUSLT.SubstituirUSLT(OPDIUSLT) then
366+ if OPDIUSLT.Execute then
367+ begin
368+ FUSLT.CarregarLetraDoArquivo(OPDIUSLT.FileName,False);
344369 DefinirStatusDeModificado(cId3v2);
370+ end;
345371 end;
346372
347373 procedure TDAMOPrincipal.SubstituirSYLT;
348374 begin
349-// if FSYLT.SubstituirSYLT(OPDISYLT) then
350-// DefinirStatusDeModificado(cId3v2);
375+ if OPDISYLT.Execute then
376+ begin
377+ FSYLT.CarregarLetraDoArquivo(OPDISYLT.FileName,False);
378+ DefinirStatusDeModificado(cId3v2);
379+ end;
351380 end;
352381
353382 procedure TDAMOPrincipal.PararReproducao;
@@ -556,6 +585,7 @@
556585 ,ACTNSalvarUSLT
557586 ,ACTNRemoverUSLT
558587 ,ACTNSubstituirUSLT
588+ ,ACTNExportarTextoUSLT
559589 ,TFORMPrincipal(Owner).LABEUSLT
560590 ,TFORMPrincipal(Owner).LABEUSLTSombra);
561591
@@ -612,6 +642,16 @@
612642 Result := (Pos('*',TFORMPrincipal(Owner).TASHID3v1.Caption) > 0) or (Pos('*',TFORMPrincipal(Owner).TASHID3v2.Caption) > 0);
613643 end;
614644
645+procedure TDAMOPrincipal.ExportarUSLT;
646+begin
647+
648+end;
649+
650+procedure TDAMOPrincipal.ImportarUSLT;
651+begin
652+ ShowMessage('Perguntar se quer importar para a letra atual ou se quer criar uma nova letra apenas se houver uma letra carregada');
653+end;
654+
615655 procedure TDAMOPrincipal.LimparCamposDaAplicacao(ACamposALimpar: TContexto);
616656 begin
617657 with TFORMPrincipal(Owner) do
@@ -710,11 +750,21 @@
710750 CopiarDadosDoID3v1;
711751 end;
712752
753+procedure TDAMOPrincipal.ACTNExportarTextoUSLTExecute(Sender: TObject);
754+begin
755+ ExportarUSLT;
756+end;
757+
713758 procedure TDAMOPrincipal.ACTNImagemAnteriorExecute(Sender: TObject);
714759 begin
715760 PNICAPIC.ImagemAnterior;
716761 end;
717762
763+procedure TDAMOPrincipal.ACTNImportarTextoUSLTExecute(Sender: TObject);
764+begin
765+ ImportarUSLT;
766+end;
767+
718768 procedure TDAMOPrincipal.ACTNMusicaAnteriorExecute(Sender: TObject);
719769 begin
720770 MusicaAnterior;
@@ -809,12 +859,12 @@
809859
810860 procedure TDAMOPrincipal.ACTNSalvarSYLTExecute(Sender: TObject);
811861 begin
812- FSYLT.SalvarLetraComo(SADISYLT);
862+ SalvarSYLT;
813863 end;
814864
815865 procedure TDAMOPrincipal.ACTNSalvarUSLTExecute(Sender: TObject);
816866 begin
817- FUSLT.SalvarLetraComo(SADIUSLT);
867+ SalvarUSLT;
818868 end;
819869
820870 procedure TDAMOPrincipal.ACTNSobreExecute(Sender: TObject);
@@ -860,14 +910,20 @@
860910
861911 procedure TDAMOPrincipal.AdicionarUSLT;
862912 begin
863- if FUSLT.AdicionarUSLT(OPDIUSLT) then
913+ if OPDIUSLT.Execute then
914+ begin
915+ FUSLT.CarregarLetraDoArquivo(OPDIUSLT.FileName,True);
864916 DefinirStatusDeModificado(cId3v2);
917+ end;
865918 end;
866919
867920 procedure TDAMOPrincipal.AdicionarSYLT;
868921 begin
869- if FSYLT.AdicionarSYLT(OPDISYLT) then
922+ if OPDISYLT.Execute then
923+ begin
924+ FSYLT.CarregarLetraDoArquivo(OPDISYLT.FileName,True);
870925 DefinirStatusDeModificado(cId3v2);
926+ end;
871927 end;
872928
873929 procedure TDAMOPrincipal.AtualizarBotoesDoReprodutor;
--- trunk/V2/src/UFORMPrincipal.pas (revision 33)
+++ trunk/V2/src/UFORMPrincipal.pas (revision 34)
@@ -118,6 +118,8 @@
118118 LABESYLTB: TLabel;
119119 LABESYLTC: TLabel;
120120 Shape1: TShape;
121+ PNSBImportarUSLT: TPngSpeedButton;
122+ PNSBExportarUSLT: TPngSpeedButton;
121123 procedure PABOLetreiroPaint(Sender: TObject);
122124 procedure IMAGID3v2Click(Sender: TObject);
123125 procedure ID3v1Modificado(Sender: TObject);
Show on old repository browser