• R/O
  • SSH
  • HTTPS

id3v2editorplus: コミット


コミットメタ情報

リビジョン43 (tree)
日時2019-12-06 06:12:19
作者derekwildstar

ログメッセージ

Novos arquivos de recuros adicionados
Arquivos de recuros obsoletos removidos
TSYLT atualizado com um atributo que referencia o botão de exportação de texto de SYLT
Novos métodos em TSYLT
Removido uso errado de ExibirLetra em TUSLT.ImportarTexto (Trocado por CarregarHTML(USLT.Texto)). Neste método, quando optamos por não incluir uma nova letra (um novo frame USLT), ele precisa apenas substituir o texto que é exibido no Browser. ExibirLetra troca tanto o texto exibido no Browser como os outros textos da tela, gerando overhead desnecessário
Removido uso errado de ExibirLetra em TSYLT.ImportarTexto (Trocado por ExibirVerso(0)). Neste método, quando optamos por não incluir uma nova letra (um novo frame SYLT), ele precisa apenas substituir o texto da letra em si. ExibirLetra troca tanto este texto como os outros textos da tela, gerando overhead desnecessário
Ajustados os métodos EditarSYLT, ExportarTextoSYLT, ImportarTextoSYLT e criada a chamada para abertura do navegador quando o logo do ID3v2 é clicado
Tela de edição de SYLT concluída
Tela de "Sobre" concluída

変更サマリ

差分

--- trunk/V2/src/UClassesETipos.pas (revision 42)
+++ trunk/V2/src/UClassesETipos.pas (revision 43)
@@ -34,7 +34,7 @@
3434 FSalvarUSLT: TAction;
3535 FRemoverUSLT: TAction;
3636 FSubstituirUSLT: TAction;
37- FExportarUSLT: TAction;
37+ FExportarTextoUSLT: TAction;
3838 FContador: TLabel;
3939 FContadorSombra: TLabel;
4040
@@ -46,7 +46,7 @@
4646 function GetItem(AIndex: Integer): TUSLTItem;
4747 procedure SetItem(AIndex: Integer; const AValue: TUSLTItem);
4848 public
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);
49+ constructor Create(AWebBrowser: TWebBrowser; ADescricao: TLabeledEdit; AIdioma: TComboBox; AProximaUSLT: TAction; AUSLTAnterior: TAction; ASalvarUSLT: TAction; ARemoverUSLT: TAction; ASubstituirUSLT: TAction; AExportarTextoUSLT: TAction; AContador: TLabel; AContadorSombra: TLabel);
5050
5151 procedure Limpar;
5252 procedure Proxima(AUltima: Boolean = False);
@@ -123,6 +123,7 @@
123123 FSalvarSYLT: TAction;
124124 FRemoverSYLT: TAction;
125125 FSubstituirSYLT: TAction;
126+ FExportarTextoSYLT: TAction;
126127 FEditarSYLT: TAction;
127128 FContador: TLabel;
128129 FContadorSombra: TLabel;
@@ -134,7 +135,7 @@
134135 procedure SetItem(AIndex: Integer; const AValue: TSYLTItem);
135136 function GetSYLTAtual: TSYLTItem;
136137 public
137- constructor Create(ASaidaAnterior: TLabel; ASaidaCentral: TLabel; ASaidaPosterior: TLabel; AIdioma: TComboBox; AFormatoDoRotuloDeTempo: TComboBox; ATipoDeConteudo: TComboBox; ADescricao: TLabeledEdit; AProximaSYLT: TAction; SYLTTAnterior: TAction; ASalvarSYLT: TAction; ARemoverSYLT: TAction; ASubstituirSYLT: TAction; AEditarSYLT: TAction; AContador: TLabel; AContadorSombra: TLabel);
138+ constructor Create(ASaidaAnterior: TLabel; ASaidaCentral: TLabel; ASaidaPosterior: TLabel; AIdioma: TComboBox; AFormatoDoRotuloDeTempo: TComboBox; ATipoDeConteudo: TComboBox; ADescricao: TLabeledEdit; AProximaSYLT: TAction; SYLTTAnterior: TAction; ASalvarSYLT: TAction; ARemoverSYLT: TAction; ASubstituirSYLT: TAction; AExportarTextoSYLT: TAction; AEditarSYLT: TAction; AContador: TLabel; AContadorSombra: TLabel);
138139
139140 destructor Destroy; override;
140141
@@ -141,18 +142,9 @@
141142 procedure Limpar;
142143 procedure Proxima(AUltima: Boolean = False);
143144 function ExcluirAtual: Boolean;
144- // As funções de exportação e importação de texto foram criadas e testadas
145- // com sucesso, no entanto elas não estão sendo usadas pelo programa porque
146- // ele exporta e importa usando a tela de edição de SYLT, a qual meramente
147- // salva ou carrega o conteúdo do TValueListEditor. A tela de edição de SYLT
148- // permite que se altere o texto SYLT sem salvá-lo, dando esta opção ao
149- // usuário. Se eu usasse as funções de importação e exportação aqui
150- // definidas a exportação não refletiria o que está escrito no
151- // TValueListEditor e a importação não carregaria este componente mas
152- // modificaria diretamente o ID3v2, o que não é adequado para o modo de
153- // funcionamento que eu planejei
154145 function ExportarTexto(AArquivo: TFileName): Boolean;
155- function ImportarTexto(AArquivo: TFileName; ANovoSYLT: Boolean): Boolean;
146+ function ImportarTexto(ATexto: String): Boolean; overload;
147+ function ImportarTexto(AArquivo: TFileName; ANovoSYLT: Boolean): Boolean; overload;
156148 procedure Salvar(AArquivo: TFileName);
157149 // Adiciona um TSYLTItem completo a partir de um arquivo de letra
158150 // sincronizada (.sylt). Quando ANovoSYLT = true haverá a inclusão de uma
@@ -272,7 +264,7 @@
272264 // end;
273265 //end;
274266
275-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);
267+constructor TUSLT.Create(AWebBrowser: TWebBrowser; ADescricao: TLabeledEdit; AIdioma: TComboBox; AProximaUSLT: TAction; AUSLTAnterior: TAction; ASalvarUSLT: TAction; ARemoverUSLT: TAction; ASubstituirUSLT: TAction; AExportarTextoUSLT: TAction; AContador: TLabel; AContadorSombra: TLabel);
276268 begin
277269 inherited Create(TUSLTItem);
278270 FIndice := -1;
@@ -285,7 +277,7 @@
285277 FSalvarUSLT := ASalvarUSLT;
286278 FRemoverUSLT := ARemoverUSLT;
287279 FSubstituirUSLT := ASubstituirUSLT;
288- FExportarUSLT := AExportarUSLT;
280+ FExportarTextoUSLT := AExportarTextoUSLT;
289281 FContador := AContador;
290282 FContadorSombra := AContadorSombra;
291283 end;
@@ -451,7 +443,7 @@
451443 FSalvarUSLT.Enabled := Count > 0;
452444 FRemoverUSLT.Enabled := FSalvarUSLT.Enabled;
453445 FSubstituirUSLT.Enabled := FSalvarUSLT.Enabled;
454- FExportarUSLT.Enabled := FSalvarUSLT.Enabled;
446+ FExportarTextoUSLT.Enabled := FSalvarUSLT.Enabled;
455447 FContador.Caption := Succ(FIndice).ToString + ' / ' + Count.ToString;
456448 FContadorSombra.Caption := FContador.Caption;
457449 FDescricao.Enabled := FSalvarUSLT.Enabled;
@@ -465,8 +457,6 @@
465457
466458 with Items[AIndiceDaLetra] do
467459 begin
468- CarregarHTML(Texto);
469-
470460 var OnChangeOriginal: TNotifyEvent;
471461
472462 OnChangeOriginal := Self.FDescricao.OnChange;
@@ -476,6 +466,8 @@
476466
477467 Self.FDescricao.Text := Descricao;
478468 Self.FIdioma.ItemIndex := Self.FIdioma.Items.IndexOf(LanguageIDtoString(Idioma));
469+
470+ CarregarHTML(Texto);
479471 finally
480472 Self.FDescricao.OnChange := OnChangeOriginal;
481473 Self.FIdioma.OnChange := OnChangeOriginal
@@ -555,7 +547,7 @@
555547 if ANovoUSLT then
556548 Proxima(True)
557549 else
558- ExibirLetra(FIndice);
550+ CarregarHTML(USLT.Texto);
559551
560552 Result := True;
561553 finally
@@ -714,6 +706,7 @@
714706 FSalvarSYLT.Enabled := Count > 0;
715707 FRemoverSYLT.Enabled := FSalvarSYLT.Enabled;
716708 FSubstituirSYLT.Enabled := FSalvarSYLT.Enabled;
709+ FExportarTextoSYLT.Enabled := FSalvarSYLT.Enabled;
717710 FEditarSYLT.Enabled := FSalvarSYLT.Enabled;
718711 FContador.Caption := Succ(FIndice).ToString + ' / ' + Count.ToString;
719712 FContadorSombra.Caption := FContador.Caption;
@@ -796,7 +789,7 @@
796789 end;
797790 end;
798791
799-constructor TSYLT.Create(ASaidaAnterior: TLabel; ASaidaCentral: TLabel; ASaidaPosterior: TLabel; AIdioma: TComboBox; AFormatoDoRotuloDeTempo: TComboBox; ATipoDeConteudo: TComboBox; ADescricao: TLabeledEdit; AProximaSYLT: TAction; SYLTTAnterior: TAction; ASalvarSYLT: TAction; ARemoverSYLT: TAction; ASubstituirSYLT: TAction; AEditarSYLT: TAction; AContador: TLabel; AContadorSombra: TLabel);
792+constructor TSYLT.Create(ASaidaAnterior: TLabel; ASaidaCentral: TLabel; ASaidaPosterior: TLabel; AIdioma: TComboBox; AFormatoDoRotuloDeTempo: TComboBox; ATipoDeConteudo: TComboBox; ADescricao: TLabeledEdit; AProximaSYLT: TAction; SYLTTAnterior: TAction; ASalvarSYLT: TAction; ARemoverSYLT: TAction; ASubstituirSYLT: TAction; AExportarTextoSYLT: TAction; AEditarSYLT: TAction; AContador: TLabel; AContadorSombra: TLabel);
800793 begin
801794 inherited Create(TSYLTItem);
802795 FIndice := -1;
@@ -813,6 +806,7 @@
813806 FSalvarSYLT := ASalvarSYLT;
814807 FRemoverSYLT := ARemoverSYLT;
815808 FSubstituirSYLT := ASubstituirSYLT;
809+ FExportarTextoSYLT := AExportarTextoSYLT;
816810 FEditarSYLT := AEditarSYLT;
817811 FContador := AContador;
818812 FContadorSombra := AContadorSombra;
@@ -844,6 +838,7 @@
844838 Self.FIdioma.ItemIndex := Self.FIdioma.Items.IndexOf(LanguageIDtoString(Idioma));
845839 Self.FFormatoDoRotuloDeTempo.ItemIndex := Pred(FormatoDoRotuloDeTempo);
846840 Self.FTipoDeConteudo.ItemIndex := TipoDeConteudo;
841+
847842 ExibirVerso(0);
848843 finally
849844 Self.FDescricao.OnChange := OnChangeOriginal;
@@ -921,6 +916,31 @@
921916 Result := Items[FIndice];
922917 end;
923918
919+function TSYLT.ImportarTexto(ATexto: String): Boolean;
920+begin
921+ GetSYLTAtual.Versos.Clear;
922+
923+ with TStringList.Create do
924+ try
925+ Text := ATexto;
926+
927+ var Verso: TSYLTVerso;
928+
929+ for var i: Word := 0 to Pred(Count) do
930+ begin
931+ Verso.Tempo := Names[i].ToInteger;
932+ Verso.Texto := ValueFromIndex[i];
933+ GetSYLTAtual.Versos.Add(Verso);
934+ end;
935+ finally
936+ Free;
937+ end;
938+
939+ ExibirVerso(0);
940+
941+ Result := True;
942+end;
943+
924944 function TSYLT.ImportarTexto(AArquivo: TFileName; ANovoSYLT: Boolean): Boolean;
925945 var
926946 SYLT: TSYLTItem;
@@ -931,7 +951,7 @@
931951 SYLT := Add
932952 else
933953 begin
934- SYLT := Items[FIndice];
954+ SYLT := GetSYLTAtual;
935955 SYLT.Versos.Clear;
936956 end;
937957
@@ -954,7 +974,7 @@
954974 if ANovoSYLT then
955975 Proxima(True)
956976 else
957- ExibirLetra(FIndice);
977+ ExibirVerso(0);
958978
959979 Result := True;
960980 finally
--- trunk/V2/src/UDAMOPrincipal.pas (revision 42)
+++ trunk/V2/src/UDAMOPrincipal.pas (revision 43)
@@ -180,7 +180,7 @@
180180
181181 uses
182182 Vcl.Forms, System.Math, WinAPI.Windows, Graphics, UClassesAjudantes,
183- UFORMPrincipal, UBassUtils, UFORMSobre, UFORMEditarSYLT;
183+ UFORMPrincipal, UBassUtils, UFORMSobre, UFORMEditarSYLT, ShellApi;
184184
185185 {$R *.dfm}
186186
@@ -383,11 +383,8 @@
383383
384384 procedure TDAMOPrincipal.EditarSYLT;
385385 begin
386- if TFORMEditarSYLT.ShowMe(Owner,FSYLT.SYLTAtual) = mrOk then
387- begin
388- FSYLT.ExibirVerso(0);
386+ if TFORMEditarSYLT.ShowMe(Self,FSYLT) = mrOk then
389387 DefinirStatusDeModificado(cId3v2);
390- end;
391388 end;
392389
393390 procedure TDAMOPrincipal.SubstituirAPIC;
@@ -641,6 +638,7 @@
641638 ,ACTNSalvarSYLT
642639 ,ACTNRemoverSYLT
643640 ,ACTNSubstituirSYLT
641+ ,ACTNExportarTextoSYLT
644642 ,ACTNEditarSYLT
645643 ,TFORMPrincipal(Owner).LABEContadorSYLT
646644 ,TFORMPrincipal(Owner).LABEContadorSYLTSombra);
@@ -705,10 +703,8 @@
705703
706704 procedure TDAMOPrincipal.ExportarTextoSYLT;
707705 begin
708-// Não utilize o código comentado, ele exporta diretamente de FSYLT, o que
709-// tornaria a tela de edição inútil
710-// if SADITXT.Execute and FSYLT.ExportarTexto(SADITXT.FileName) then
711-// Application.MessageBox('Texto da letra atual exportado com sucesso!','Exportação concluída',MB_ICONINFORMATION);
706+ if SADITXT.Execute and FSYLT.ExportarTexto(SADITXT.FileName) then
707+ Application.MessageBox('Texto da letra atual exportado com sucesso!','Exportação concluída',MB_ICONINFORMATION);
712708 end;
713709
714710 procedure TDAMOPrincipal.ExportarTextoUSLT;
@@ -728,15 +724,11 @@
728724
729725 procedure TDAMOPrincipal.ImportarTextoSYLT;
730726 begin
731- coloque os botoes de importação e exportação de sylt na tela principal e habilite o uso das funções normalmente
732- na tela de edição, crie os botoes carregar e salvar, este sim, carregando e salvando, para e do TValueListEditor
733-// Não utilize o código comentado, ele importa diretamente para FSYLT, o que
734-// tornaria a tela de edição inútil
735-// if OPDITXT.Execute and FSYLT.ImportarTexto(OPDITXT.FileName,(FSYLT.Count = 0) or (Application.MessageBox('Deseja adicionar uma nova letra? Se você responder "não", apenas o texto da letra atual será substituído','Nova letra?',MB_ICONQUESTION or MB_YESNO) = IDYES)) then
736-// begin
737-// Application.MessageBox('Texto da letra importado com sucesso!','Importação concluída',MB_ICONINFORMATION);
738-// DefinirStatusDeModificado(cId3v2);
739-// end;
727+ if OPDITXT.Execute and FSYLT.ImportarTexto(OPDITXT.FileName,(FSYLT.Count = 0) or (Application.MessageBox('Deseja adicionar uma nova letra? Se você responder "não", apenas o texto da letra atual será substituído','Nova letra?',MB_ICONQUESTION or MB_YESNO) = IDYES)) then
728+ begin
729+ Application.MessageBox('Texto da letra importado com sucesso!','Importação concluída',MB_ICONINFORMATION);
730+ DefinirStatusDeModificado(cId3v2);
731+ end;
740732 end;
741733
742734 procedure TDAMOPrincipal.ImportarTextoUSLT;
@@ -818,7 +810,7 @@
818810
819811 procedure TDAMOPrincipal.AbrirUrlID3v2;
820812 begin
821-
813+ ShellExecute(0, 'open', 'http://id3.org/Home', nil, nil, SW_SHOWNORMAL);
822814 end;
823815
824816 procedure TDAMOPrincipal.ACTNAbrirMP3Execute(Sender: TObject);
--- trunk/V2/src/UFORMEditarSYLT.pas (revision 42)
+++ trunk/V2/src/UFORMEditarSYLT.pas (revision 43)
@@ -14,8 +14,8 @@
1414 PNSBCancelar: TPngSpeedButton;
1515 PNSBReproduzir: TPngSpeedButton;
1616 PNSBPararReproducao: TPngSpeedButton;
17- PNSBImportarTextoSYLT: TPngSpeedButton;
18- PNSBExportarTextoSYLT: TPngSpeedButton;
17+ PNSBCarregarTextoSYLT: TPngSpeedButton;
18+ PNSBSalvarTextoSYLT: TPngSpeedButton;
1919 procedure FormClose(Sender: TObject; var Action: TCloseAction);
2020 procedure FormCreate(Sender: TObject);
2121 procedure HabilitarBotaoDeSalvar(Sender: TObject);
@@ -22,14 +22,15 @@
2222 procedure PNSBSalvarClick(Sender: TObject);
2323 procedure FormShow(Sender: TObject);
2424 procedure PNSBCancelarClick(Sender: TObject);
25- procedure VLEDVersosSelectCell(Sender: TObject; ACol, ARow: Integer;
26- var CanSelect: Boolean);
25+ procedure VLEDVersosSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
26+ procedure PNSBCarregarTextoSYLTClick(Sender: TObject);
27+ procedure PNSBSalvarTextoSYLTClick(Sender: TObject);
2728 private
2829 { Private declarations }
29- FSYLTItem: TSYLTItem;
30+ FSYLT: TSYLT;
3031 public
3132 { Public declarations }
32- class function ShowMe(AOwner: TComponent; ASYLTItem: TSYLTItem): TModalResult;
33+ class function ShowMe(AOwner: TComponent; ASYLT: TSYLT): TModalResult;
3334 end;
3435
3536 implementation
@@ -56,7 +57,7 @@
5657 try
5758 VLEDVersos.Strings.Clear;
5859
59- for var Verso: TSYLTVerso in FSYLTItem.Versos do
60+ for var Verso: TSYLTVerso in FSYLT.SYLTAtual.Versos do
6061 VLEDVersos.Values[Verso.Tempo.ToString] := Verso.Texto;
6162 finally
6263 VLEDVersos.OnStringsChange := HabilitarBotaoDeSalvar;
@@ -63,11 +64,11 @@
6364 end;
6465 end;
6566
66-class function TFORMEditarSYLT.ShowMe(AOwner: TComponent; ASYLTItem: TSYLTItem): TModalResult;
67+class function TFORMEditarSYLT.ShowMe(AOwner: TComponent; ASYLT: TSYLT): TModalResult;
6768 begin
6869 with TFORMEditarSYLT.Create(AOwner) do
6970 begin
70- FSYLTItem := ASYLTItem;
71+ FSYLT := ASYLT;
7172 Result := ShowModal;
7273 end;
7374 end;
@@ -88,22 +89,24 @@
8889 ModalResult := mrCancel;
8990 end;
9091
92+procedure TFORMEditarSYLT.PNSBCarregarTextoSYLTClick(Sender: TObject);
93+begin
94+ if TDAMOPrincipal(Owner).OPDITXT.Execute then
95+ VLEDVersos.Strings.LoadFromFile(TDAMOPrincipal(Owner).OPDITXT.FileName);
96+end;
97+
9198 procedure TFORMEditarSYLT.PNSBSalvarClick(Sender: TObject);
92-var
93- SYLTVerso: TSYLTVerso;
9499 begin
95100 PNSBPararReproducao.Click;
96101
97- FSYLTItem.Versos.Clear;
102+ if FSYLT.ImportarTexto(Trim(VLEDVersos.Strings.Text)) then
103+ ModalResult := mrOk;
104+end;
98105
99- for var i: Word := 1 to Pred(VLEDVersos.RowCount) do
100- begin
101- SYLTVerso.Tempo := VLEDVersos.Keys[i].ToInteger;
102- SYLTVerso.Texto := VLEDVersos.Values[VLEDVersos.Keys[i]];
103- FSYLTItem.Versos.Add(SYLTVerso);
104- end;
105-
106- ModalResult := mrOk;
106+procedure TFORMEditarSYLT.PNSBSalvarTextoSYLTClick(Sender: TObject);
107+begin
108+ if TDAMOPrincipal(Owner).SADITXT.Execute then
109+ VLEDVersos.Strings.SaveToFile(TDAMOPrincipal(Owner).OPDITXT.FileName);
107110 end;
108111
109112 end.
--- trunk/V2/src/UFORMPrincipal.pas (revision 42)
+++ trunk/V2/src/UFORMPrincipal.pas (revision 43)
@@ -118,12 +118,14 @@
118118 LABESYLTB: TLabel;
119119 LABESYLTC: TLabel;
120120 Shape1: TShape;
121- PNSBImportarUSLT: TPngSpeedButton;
122- PNSBExportarUSLT: TPngSpeedButton;
121+ PNSBImportarTextoUSLT: TPngSpeedButton;
122+ PNSBExportarTextoUSLT: TPngSpeedButton;
123123 LAEDTipoMimeAPIC: TLabeledEdit;
124124 PngSpeedButton1: TPngSpeedButton;
125125 PngSpeedButton2: TPngSpeedButton;
126126 PNSBEditarSYLT: TPngSpeedButton;
127+ PNSBImportarTextoSYLT: TPngSpeedButton;
128+ PNSBExportarTextoSYLT: TPngSpeedButton;
127129 procedure PABOLetreiroPaint(Sender: TObject);
128130 procedure IMAGID3v2Click(Sender: TObject);
129131 procedure ID3v1Modificado(Sender: TObject);
--- trunk/V2/src/UFORMSobre.pas (revision 42)
+++ trunk/V2/src/UFORMSobre.pas (revision 43)
@@ -4,11 +4,19 @@
44
55 uses
66 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
7- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
7+ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.pngimage,
8+ Vcl.ExtCtrls, Vcl.Imaging.GIFImg;
89
910 type
1011 TFORMSobre = class(TForm)
1112 BUTNFechar: TButton;
13+ IMAGID3v2: TImage;
14+ IMAGBass: TImage;
15+ IMAGDelphi: TImage;
16+ LABETexto: TLabel;
17+ BEVELinha: TBevel;
18+ LABEPoweredBy: TLabel;
19+ BEVELinha2: TBevel;
1220 procedure FormClose(Sender: TObject; var Action: TCloseAction);
1321 private
1422 { Private declarations }
旧リポジトリブラウザで表示