You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
(20) |
May
(48) |
Jun
(8) |
Jul
(23) |
Aug
(41) |
Sep
(42) |
Oct
(22) |
Nov
(17) |
Dec
(36) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(43) |
Feb
(42) |
Mar
(17) |
Apr
(39) |
May
(16) |
Jun
(35) |
Jul
(37) |
Aug
(47) |
Sep
(49) |
Oct
(9) |
Nov
(52) |
Dec
(37) |
2008 |
Jan
(48) |
Feb
(21) |
Mar
(7) |
Apr
(2) |
May
(5) |
Jun
(17) |
Jul
(17) |
Aug
(40) |
Sep
(58) |
Oct
(38) |
Nov
(19) |
Dec
(32) |
2009 |
Jan
(67) |
Feb
(46) |
Mar
(54) |
Apr
(34) |
May
(37) |
Jun
(52) |
Jul
(67) |
Aug
(72) |
Sep
(48) |
Oct
(35) |
Nov
(27) |
Dec
(12) |
2010 |
Jan
(56) |
Feb
(46) |
Mar
(19) |
Apr
(14) |
May
(21) |
Jun
(3) |
Jul
(13) |
Aug
(48) |
Sep
(34) |
Oct
(51) |
Nov
(16) |
Dec
(32) |
2011 |
Jan
(36) |
Feb
(14) |
Mar
(12) |
Apr
(3) |
May
(5) |
Jun
(24) |
Jul
(15) |
Aug
(30) |
Sep
(21) |
Oct
(4) |
Nov
(25) |
Dec
(23) |
2012 |
Jan
(45) |
Feb
(42) |
Mar
(19) |
Apr
(14) |
May
(13) |
Jun
(7) |
Jul
(3) |
Aug
(46) |
Sep
(21) |
Oct
(10) |
Nov
(2) |
Dec
|
2013 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <usc...@us...> - 2009-05-18 22:49:14
|
Revision: 2767 http://jcl.svn.sourceforge.net/jcl/?rev=2767&view=rev Author: uschuster Date: 2009-05-18 22:49:11 +0000 (Mon, 18 May 2009) Log Message: ----------- Hello World example for showing custom stack traces Added Paths: ----------- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/HelloWorldFrame.dfm branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/HelloWorldFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/StackTraceViewerHelloWorldExample.dpk branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/StackTraceViewerHelloWorldExampleReg.pas Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld ___________________________________________________________________ Added: tsvn:projectlanguage + 1033 Added: bugtraq:url + http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% Added: bugtraq:message + (Mantis #%BUGID%) Added: bugtraq:logregex + [Mm]antis #?(\d+)(,? ?#?(\d+))+ (\d+) Added: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/HelloWorldFrame.dfm =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/HelloWorldFrame.dfm (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/HelloWorldFrame.dfm 2009-05-18 22:49:11 UTC (rev 2767) @@ -0,0 +1,14 @@ +object frmHelloWorld: TfrmHelloWorld + Left = 0 + Top = 0 + Width = 320 + Height = 240 + TabOrder = 0 + object Label1: TLabel + Left = 16 + Top = 16 + Width = 54 + Height = 13 + Caption = 'Hello World' + end +end Added: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/HelloWorldFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/HelloWorldFrame.pas (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/HelloWorldFrame.pas 2009-05-18 22:49:11 UTC (rev 2767) @@ -0,0 +1,21 @@ +unit HelloWorldFrame; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; + +type + TfrmHelloWorld = class(TFrame) + Label1: TLabel; + private + { Private-Deklarationen } + public + { Public-Deklarationen } + end; + +implementation + +{$R *.dfm} + +end. Added: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/StackTraceViewerHelloWorldExample.dpk =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/StackTraceViewerHelloWorldExample.dpk (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/StackTraceViewerHelloWorldExample.dpk 2009-05-18 22:49:11 UTC (rev 2767) @@ -0,0 +1,42 @@ +package StackTraceViewerHelloWorldExample; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD ON} + +requires + rtl, + vcl, + JclStackTraceViewerExpert, + vclx, + vclactnband, + xmlrtl, + JclBaseExpert, + Jcl, + designide; + +contains + StackTraceViewerHelloWorldExampleReg in 'StackTraceViewerHelloWorldExampleReg.pas', + HelloWorldFrame in 'HelloWorldFrame.pas' {frmHelloWorld: TFrame}; + +end. Added: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/StackTraceViewerHelloWorldExampleReg.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/StackTraceViewerHelloWorldExampleReg.pas (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/APIExamples/HelloWorld/StackTraceViewerHelloWorldExampleReg.pas 2009-05-18 22:49:11 UTC (rev 2767) @@ -0,0 +1,355 @@ +unit StackTraceViewerHelloWorldExampleReg; + +interface + +procedure Register; + +implementation + +uses + Classes, Contnrs, Forms, JclStackTraceViewerAPI, HelloWorldFrame; + +type + TTestLocationInfo = class(TInterfacedObject, IJclLocationInfo, IJclPreparedLocationInfo) + private + FSourceName: string; + public + destructor Destroy; override; + function GetAddress: Pointer; + function GetBinaryFileName: string; + function GetLineNumber: Integer; + function GetLineNumberOffsetFromProcedureStart: Integer; + function GetModuleName: string; + function GetOffsetFromLineNumber: Integer; + function GetOffsetFromProcName: Integer; + function GetProcedureName: string; + function GetSourceName: string; + function GetSourceUnitName: string; + function GetUnitVersionDateTime: TDateTime; + function GetUnitVersionExtra: string; + function GetUnitVersionLogPath: string; + function GetUnitVersionRCSfile: string; + function GetUnitVersionRevision: string; + function GetVAddress: Pointer; + function GetValues: Integer; + + function GetFileName: string; + function GetFoundFile: Boolean; + function GetProjectName: string; + function GetRevision: string; + function GetTranslatedLineNumber: Integer; + procedure SetFileName(AValue: string); + procedure SetFoundFile(AValue: Boolean); + procedure SetProjectName(AValue: string); + procedure SetRevision(AValue: string); + procedure SetTranslatedLineNumber(AValue: Integer); + end; + + TTestLocationInfoList = class(TInterfacedObject, IJclLocationInfoList) + private + FItems: TObjectList; + FInterfaceList: TInterfaceList; + public + constructor Create; + destructor Destroy; override; + function Add: TTestLocationInfo; + + function GetCount: Integer; + function GetLocationItems(AIndex: Integer): IJclLocationInfo; + function GetPrepared: Boolean; + procedure SetPrepared(AValue: Boolean); + end; + + TTestTreeViewLink = class(TInterfacedObject, IJclStackTraceViewerTreeViewLink) + private + FFrameClass: TCustomFrameClass; + FItems: TInterfaceList; + FText: string; + FStack: TTestLocationInfoList; + public + constructor Create(const AText: string; AFrameClass: TCustomFrameClass); + destructor Destroy; override; + function Add(const AText: string; AFrameClass: TCustomFrameClass): TTestTreeViewLink; + procedure DoShow(AFrame: TCustomFrame); virtual; + function GetCount: Integer; + function GetFrameClass: TCustomFrameClass; + function GetItems(AIndex: Integer): IJclStackTraceViewerTreeViewLink; + function GetText: string; + end; + +{ TTestTreeViewLink } + +constructor TTestTreeViewLink.Create(const AText: string; AFrameClass: TCustomFrameClass); +begin + inherited Create; + FFrameClass := AFrameClass; + FItems := TInterfaceList.Create; + FStack := TTestLocationInfoList.Create; + FStack._AddRef; + FStack.Add.FSourceName := 'SysUtils.pas'; + FStack.Add.FSourceName := 'Classes.pas'; + FText := AText; +end; + +destructor TTestTreeViewLink.Destroy; +begin + FStack._Release; + //FStack.Free; + FItems.Free; + inherited Destroy; +end; + +function TTestTreeViewLink.Add(const AText: string; AFrameClass: TCustomFrameClass): TTestTreeViewLink; +begin + Result := TTestTreeViewLink.Create(AText, AFrameClass); + FItems.Add(Result); +end; + +procedure TTestTreeViewLink.DoShow(AFrame: TCustomFrame); +var + StackTraceViewerStackFrame: IJclStackTraceViewerStackFrame; +begin + if (FText = 'Stack') and (AFrame.GetInterface(IJclStackTraceViewerStackFrame, StackTraceViewerStackFrame)) then + begin + //StackTraceViewerStackProcessorServices.PrepareLocationInfoList(FStack, False); + StackTraceViewerStackFrame.SetStackList(FStack); + end; +end; + +function TTestTreeViewLink.GetCount: Integer; +begin + Result := FItems.Count; +end; + +function TTestTreeViewLink.GetFrameClass: TCustomFrameClass; +begin + Result := FFrameClass; +end; + +function TTestTreeViewLink.GetItems(AIndex: Integer): IJclStackTraceViewerTreeViewLink; +begin + if FItems[AIndex].QueryInterface(IJclStackTraceViewerTreeViewLink, Result) <> S_OK then + Result := nil; +end; + +function TTestTreeViewLink.GetText: string; +begin + Result := FText; +end; + +procedure Register; +var + RootLink, Link: TTestTreeViewLink; + StackFrameClass: TCustomFrameClass; +begin + if Assigned(StackTraceViewerStackServices) then + begin + RootLink := TTestTreeViewLink.Create('', nil); + Link := RootLink.Add('Hello', nil); + Link.Add('World', TfrmHelloWorld); + StackFrameClass := StackTraceViewerStackServices.GetDefaultFrameClass(dfStack); + if Assigned(StackFrameClass) then + Link.Add('Stack', StackFrameClass); + StackTraceViewerStackServices.ShowTree(RootLink); + end; +end; + +{ TTestLocationInfoList } + +function TTestLocationInfoList.Add: TTestLocationInfo; +var + I: IUnknown; +begin + FItems.Add(TTestLocationInfo.Create); + FItems.Last.GetInterface(IUnknown, I); + FInterfaceList.Add(I); + Result := TTestLocationInfo(FItems.Last); +end; + +constructor TTestLocationInfoList.Create; +begin + inherited Create; + FItems := TObjectList.Create(False); + FInterfaceList := TInterfaceList.Create; +end; + +destructor TTestLocationInfoList.Destroy; +begin + FInterfaceList.Free; + FItems.Free; + inherited Destroy; +end; + +function TTestLocationInfoList.GetCount: Integer; +begin + Result := FItems.Count; +end; + +function TTestLocationInfoList.GetLocationItems(AIndex: Integer): IJclLocationInfo; +begin + if not FItems[AIndex].GetInterface(IJclLocationInfo, Result) then + Result := nil; +end; + +function TTestLocationInfoList.GetPrepared: Boolean; +begin + Result := False; +end; + +procedure TTestLocationInfoList.SetPrepared(AValue: Boolean); +begin +// +end; + +{ TTestLocationInfo } + +destructor TTestLocationInfo.Destroy; +begin + inherited Destroy; +end; + +function TTestLocationInfo.GetAddress: Pointer; +begin + Result := nil; +end; + +function TTestLocationInfo.GetBinaryFileName: string; +begin + Result := ''; +end; + +function TTestLocationInfo.GetLineNumber: Integer; +begin + Result := 0; +end; + +function TTestLocationInfo.GetLineNumberOffsetFromProcedureStart: Integer; +begin + Result := 0; +end; + +function TTestLocationInfo.GetModuleName: string; +begin + Result := ''; +end; + +function TTestLocationInfo.GetOffsetFromLineNumber: Integer; +begin + Result := 0; +end; + +function TTestLocationInfo.GetOffsetFromProcName: Integer; +begin + Result := 0; +end; + +function TTestLocationInfo.GetProcedureName: string; +begin + Result := ''; +end; + +function TTestLocationInfo.GetSourceName: string; +begin + Result := FSourceName; +end; + +function TTestLocationInfo.GetSourceUnitName: string; +begin + Result := ''; +end; + +function TTestLocationInfo.GetUnitVersionDateTime: TDateTime; +begin + Result := 0; +end; + +function TTestLocationInfo.GetUnitVersionExtra: string; +begin + Result := ''; +end; + +function TTestLocationInfo.GetUnitVersionLogPath: string; +begin + Result := ''; +end; + +function TTestLocationInfo.GetUnitVersionRCSfile: string; +begin + Result := ''; +end; + +function TTestLocationInfo.GetUnitVersionRevision: string; +begin + Result := ''; +end; + +function TTestLocationInfo.GetVAddress: Pointer; +begin + Result := nil; +end; + +function TTestLocationInfo.GetValues: Integer; +begin + Result := 0; +end; + +function TTestLocationInfo.GetFileName: string; +begin + Result := ''; +end; + +function TTestLocationInfo.GetFoundFile: Boolean; +begin + Result := False; +end; + +function TTestLocationInfo.GetProjectName: string; +begin + Result := ''; +end; + +function TTestLocationInfo.GetRevision: string; +begin + Result := ''; +end; + +function TTestLocationInfo.GetTranslatedLineNumber: Integer; +begin + Result := 0; +end; + +procedure TTestLocationInfo.SetFileName(AValue: string); +begin +// +end; + +procedure TTestLocationInfo.SetFoundFile(AValue: Boolean); +begin +// +end; + +procedure TTestLocationInfo.SetProjectName(AValue: string); +begin +// +end; + +procedure TTestLocationInfo.SetRevision(AValue: string); +begin +// +end; + +procedure TTestLocationInfo.SetTranslatedLineNumber(AValue: Integer); +begin +// +end; + +initialization + +finalization + if Assigned(StackTraceViewerStackServices) then + begin + StackTraceViewerStackServices.UnregisterFrameClass(TfrmHelloWorld); + StackTraceViewerStackServices.ShowTree(nil); + end; + +end. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-05-18 22:46:12
|
Revision: 2766 http://jcl.svn.sourceforge.net/jcl/?rev=2766&view=rev Author: uschuster Date: 2009-05-18 22:46:02 +0000 (Mon, 18 May 2009) Log Message: ----------- fixed a reload bug Modified Paths: -------------- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas 2009-05-18 20:19:31 UTC (rev 2765) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas 2009-05-18 22:46:02 UTC (rev 2766) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} @@ -165,6 +165,7 @@ function GetModuleInfo(AIndex: Integer): IJclModuleInfo; function Add: TJclStackTraceViewerModuleModuleInfo; + procedure Clear; end; TJclStackTraceViewerExceptionInfo = class(TObject) @@ -345,6 +346,7 @@ FThreadInfoList.Clear; for I := 0 to AExceptionInfo.ThreadInfoList.Count - 1 do FThreadInfoList.Add.Assign(AExceptionInfo.ThreadInfoList[I]); + FModules.Clear; for I := 0 to AExceptionInfo.Modules.Count - 1 do FModules.Add.Assign(AExceptionInfo.Modules[I]); AddModuleListToStacks; @@ -550,6 +552,11 @@ Result := TJclStackTraceViewerModuleModuleInfo(FItems.Last); end; +procedure TJclStackTraceViewerModuleInfoList.Clear; +begin + FItems.Clear; +end; + constructor TJclStackTraceViewerModuleInfoList.Create; begin inherited Create; Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas 2009-05-18 20:19:31 UTC (rev 2765) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas 2009-05-18 22:46:02 UTC (rev 2766) @@ -20,9 +20,9 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } { } {**************************************************************************************************} @@ -388,6 +388,8 @@ begin FRootLink := ARootLink; FStackFrame.StackList := nil; + FThreadFrame.CreationStackList := nil; + FThreadFrame.StackList := nil; tv.Selected := nil; tv.Items.Clear; if Assigned(FLastControl) then @@ -563,6 +565,8 @@ if OpenDialog1.Execute then begin FStackFrame.StackList := nil; + FThreadFrame.CreationStackList := nil; + FThreadFrame.StackList := nil; FRootLink := nil; tv.Selected := nil; tv.Items.Clear; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-05-18 20:19:38
|
Revision: 2765 http://jcl.svn.sourceforge.net/jcl/?rev=2765&view=rev Author: uschuster Date: 2009-05-18 20:19:31 +0000 (Mon, 18 May 2009) Log Message: ----------- properties Modified Paths: -------------- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLDeserializer.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLSerializer.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPIImpl.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerConfigFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerImpl.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormBDS.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormDelphi.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerOptions.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas branches/jcl-stack-trace/jcl/install/prototypes.sh Property Changed: ---------------- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLDeserializer.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLSerializer.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPI.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPIImpl.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerConfigFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerImpl.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormBDS.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormDelphi.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerOptions.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas branches/jcl-stack-trace/jcl/install/prototypes.sh branches/jcl-stack-trace/jcl/source/common/JclNotify.pas branches/jcl-stack-trace/qa/automated/dunit/units/TestJclNotify.pas Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -180,9 +180,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugSerialization.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLDeserializer.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLDeserializer.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLDeserializer.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -48,9 +48,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLDeserializer.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLSerializer.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLSerializer.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLSerializer.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -48,9 +48,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclDebugXMLSerializer.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPI.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPIImpl.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPIImpl.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPIImpl.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -85,9 +85,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerAPIImpl.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -185,9 +185,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerClasses.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerConfigFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerConfigFrame.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerConfigFrame.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -56,9 +56,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerConfigFrame.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -58,9 +58,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExceptInfoFrame.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerImpl.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerImpl.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerImpl.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -83,9 +83,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerImpl.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormBDS.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormBDS.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormBDS.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -74,9 +74,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormBDS.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormDelphi.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormDelphi.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormDelphi.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -69,9 +69,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFormDelphi.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -100,9 +100,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -57,9 +57,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerModuleFrame.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerOptions.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerOptions.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerOptions.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -55,9 +55,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerOptions.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -52,9 +52,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackFrame.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackFrame.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -67,9 +67,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackFrame.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -72,9 +72,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas 2009-05-18 20:19:31 UTC (rev 2765) @@ -81,9 +81,9 @@ {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( - RCSfile: '$URL: $'; - Revision: '$Revision: $'; - Date: '$Date: $'; + RCSfile: '$URL$'; + Revision: '$Revision$'; + Date: '$Date$'; LogPath: '' ); {$ENDIF UNITVERSIONING} Property changes on: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerThreadFrame.pas ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Modified: branches/jcl-stack-trace/jcl/install/prototypes.sh =================================================================== --- branches/jcl-stack-trace/jcl/install/prototypes.sh 2009-05-18 19:53:20 UTC (rev 2764) +++ branches/jcl-stack-trace/jcl/install/prototypes.sh 2009-05-18 20:19:31 UTC (rev 2765) @@ -5,7 +5,7 @@ # # Robert Rossmair, 2004-02-16 # -# $Id: prototypes.sh 1837 2006-12-16 23:54:06Z outchy $ +# $Id$ JPP=../devtools/jpp CLXOPTIONS="-c -dVisualCLX -dHAS_UNIT_TYPES -uDevelop -uVCL -xClxGui/Q" Property changes on: branches/jcl-stack-trace/jcl/install/prototypes.sh ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Property changes on: branches/jcl-stack-trace/jcl/source/common/JclNotify.pas ___________________________________________________________________ Modified: svn:keywords - Id LastChangedDate LastChangedBy LastChangedRevision URL + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Property changes on: branches/jcl-stack-trace/qa/automated/dunit/units/TestJclNotify.pas ___________________________________________________________________ Modified: svn:keywords - Id LastChangedDate LastChangedBy LastChangedRevision URL + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-05-18 19:53:29
|
Revision: 2764 http://jcl.svn.sourceforge.net/jcl/?rev=2764&view=rev Author: uschuster Date: 2009-05-18 19:53:20 +0000 (Mon, 18 May 2009) Log Message: ----------- some cleanup Modified Paths: -------------- branches/jcl-stack-trace/jcl/TODO.txt branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackFrame.pas branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml Added Paths: ----------- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.res branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.res branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.res branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.res Removed Paths: ------------- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExpert.rc branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExpert.res branches/jcl-stack-trace/jcl/experts/stacktraceviewer/StackCodeUtils.pas branches/jcl-stack-trace/jcl/experts/stackviewer/ Modified: branches/jcl-stack-trace/jcl/TODO.txt =================================================================== --- branches/jcl-stack-trace/jcl/TODO.txt 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/TODO.txt 2009-05-18 19:53:20 UTC (rev 2764) @@ -21,9 +21,6 @@ * clean up/minor things - use updated TJclFileEnumerator instead of TFileSearcher - - (almost done) rename some files - - (almost done) add MPL headers - - (almost done) add UNITVERSIONING * integrate it into the installation - commit packages for D5-D7, D9, D10 \ No newline at end of file Deleted: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExpert.dpk =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerExpert.dpk 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExpert.dpk 2009-05-18 19:53:20 UTC (rev 2764) @@ -1,44 +0,0 @@ -package JclStackTraceViewerExpert; -{$R *.res} -{$ALIGN 8} -{$ASSERTIONS ON} -{$BOOLEVAL OFF} -{$DEBUGINFO OFF} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS OFF} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION ON} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO OFF} -{$SAFEDIVIDE OFF} -{$STACKFRAMES OFF} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST ON} -{$MINENUMSIZE 1} -{$IMAGEBASE $58060000} -{$DESCRIPTION 'JCL Stack Trace Viewer'} -{$LIBSUFFIX '120'} -{$DESIGNONLY} -{$IMPLICITBUILD OFF} - -requires - rtl, - vcl, - designide, - Jcl, - JclBaseExpert, - xmlrtl, - vclactnband, - vclx; - -contains - JclStackTraceViewerImpl in 'JclStackTraceViewerImpl.pas', - JclStackTraceViewerConfigFrame in 'JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, - StackViewForm in 'StackViewForm.pas' {frmStackView}; - -end. Deleted: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExpert.rc =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerExpert.rc 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExpert.rc 2009-05-18 19:53:20 UTC (rev 2764) @@ -1,32 +0,0 @@ -VS_VERSION_INFO VERSIONINFO -FILEVERSION 1,105,0,3249 -PRODUCTVERSION 1,105,0,3249 - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - BEGIN - VALUE "CompanyName", "Project JEDI\0" - VALUE "FileDescription", "JCL Project Analyzer\0" - VALUE "FileVersion", "1.105.0.3249\0" - VALUE "InternalName", "JclProjectAnalysisExpert\0" - VALUE "LegalCopyright", "Copyright (C) 1999, 2008 Project JEDI\0" - VALUE "OriginalFilename", "JclProjectAnalysisExpert120.bpl\0" - VALUE "ProductName", "JEDI Code Library\0" - VALUE "ProductVersion", "1.105 Build 3249\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 1252 - END -END Deleted: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerExpert.res =================================================================== (Binary files differ) Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerMainFrame.pas 2009-05-18 19:53:20 UTC (rev 2764) @@ -40,7 +40,7 @@ JclUnitVersioning, {$ENDIF UNITVERSIONING} JclDebug, JclDebugSerialization, Contnrs, JclStackTraceViewerStackFrame, JclStackTraceViewerModuleFrame, - JclStackTraceViewerClasses, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, + JclStackTraceViewerClasses, JclStackTraceViewerStackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, JclStackTraceViewerOptions, JclStackTraceViewerAPIImpl, JclOtaUtils , JclStrings, JclDebugXMLDeserializer, JclStackTraceViewerStackUtils, JclStackTraceViewerAPI Copied: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas (from rev 2763, branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas) =================================================================== --- branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackCodeUtils.pas 2009-05-18 19:53:20 UTC (rev 2764) @@ -0,0 +1,269 @@ +{**************************************************************************************************} +{ } +{ Project JEDI Code Library (JCL) } +{ } +{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); } +{ you may not use this file except in compliance with the License. You may obtain a copy of the } +{ License at http://www.mozilla.org/MPL/ } +{ } +{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } +{ ANY KIND, either express or implied. See the License for the specific language governing rights } +{ and limitations under the License. } +{ } +{ The Original Code is JclStackTraceViewerStackCodeUtils.pas. } +{ } +{ The Initial Developer of the Original Code is Uwe Schuster. } +{ Portions created by Uwe Schuster are Copyright (C) 2009 Uwe Schuster. All rights reserved. } +{ } +{ Contributor(s): } +{ Uwe Schuster (uschuster) } +{ } +{**************************************************************************************************} +{ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } +{ } +{**************************************************************************************************} + +unit JclStackTraceViewerStackCodeUtils; + +{$I jcl.inc} + +interface + +uses + SysUtils, + {$IFNDEF BDS} + Classes, + {$ENDIF ~BDS} + ActiveX, ToolsAPI, + {$IFDEF UNITVERSIONING} + JclUnitVersioning, + {$ENDIF UNITVERSIONING} + JclOtaUtils, + JclStackTraceViewerAPI; + +function FindModule(const AFileName: string): string; +function FindModuleAndProject(const AFileName: string; var AProjectName: string): string; +function GetFileEditorContent(const AFileName: string): IStream; +procedure JumpToCode(AStackViewItem: IJclLocationInfo); + +{$IFDEF UNITVERSIONING} +const + UnitVersioning: TUnitVersionInfo = ( + RCSfile: '$URL: $'; + Revision: '$Revision: $'; + Date: '$Date: $'; + LogPath: '' + ); +{$ENDIF UNITVERSIONING} + +implementation + +function FindModuleInfoInProject(AProject: IOTAProject; const AFileName: string): IOTAModuleInfo; +var + I, P: Integer; + ModuleInfo: IOTAModuleInfo; + S, S2: string; +begin + Result := nil; + if AProject.GetModuleCount > 0 then + begin + S := UpperCase(AFileName); + for I := 0 to Pred(AProject.GetModuleCount) do + begin + ModuleInfo := AProject.GetModule(I); + if Assigned(ModuleInfo) then + begin + S2 := UpperCase(ModuleInfo.FileName); + P := Pos(S, S2); + if (P > 0) and (P = Length(S2) - Length(S) + 1) then + begin + Result := ModuleInfo; + Break; + end; + end; + end; + end; +end; + +function FindModule(const AFileName: string): string; +var + Dummy: string; +begin + Result := FindModuleAndProject(AFilename, Dummy); +end; + +function FindModuleInfoAndProject(const AFileName: string; var AProjectName: string): IOTAModuleInfo; +var + I: Integer; + ProjectGroup: IOTAProjectGroup; +begin + Result := nil; + AProjectName := ''; + {$IFDEF BDS} + ProjectGroup := (BorlandIDEServices as IOTAModuleServices).MainProjectGroup; + {$ELSE ~BDS} + ProjectGroup := TJclOTAExpertBase.GetProjectGroup; + {$ENDIF ~BDS} + if Assigned(ProjectGroup) then + for I := 0 to ProjectGroup.ProjectCount - 1 do + begin + Result := FindModuleInfoInProject(ProjectGroup.Projects[I], AFileName); + if Assigned(Result) then + begin + AProjectName := ProjectGroup.Projects[I].FileName; + Break; + end; + end; +end; + +function FindModuleAndProject(const AFileName: string; var AProjectName: string): string; +var + ModuleInfo: IOTAModuleInfo; +begin + ModuleInfo := FindModuleInfoAndProject(AFileName, AProjectName); + if Assigned(ModuleInfo) then + Result := ModuleInfo.FileName + else + Result := ''; +end; + +function GetFileEditorContent(const AFileName: string): IStream; +var + I: Integer; + Module: IOTAModule; + {$IFDEF BDS} + EditorContent: IOTAEditorContent; + {$ELSE ~BDS} + ContentPos, ReadCount, BufferSize: Integer; + Buffer: Pointer; + ModuleSourceEditor: IOTASourceEditor; + ModuleReader: IOTAEditReader; + S: TStream; + SA: TStreamAdapter; + {$ENDIF ~BDS} +begin + Result := nil; + Module := (BorlandIDEServices as IOTAModuleServices).FindModule(AFileName); + if Assigned(Module) then + begin + {$IFDEF BDS} + for I := 0 to Module.ModuleFileCount - 1 do + if Supports(Module.ModuleFileEditors[I], IOTAEditorContent, EditorContent) then + begin + Result := EditorContent.Content; + Break; + end; + {$ELSE ~BDS} + for I := 0 to Module.GetModuleFileCount - 1 do + if Supports(Module.GetModuleFileEditor(I), IOTASourceEditor, ModuleSourceEditor) then + begin + ModuleReader := ModuleSourceEditor.CreateReader; + if Assigned(ModuleReader) then + begin + ContentPos := 0; + BufferSize := 4096; + SA := TStreamAdapter.Create(TMemoryStream.Create, soOwned); + S := SA.Stream; + Result := SA; + GetMem(Buffer, BufferSize); + try + ReadCount := BufferSize; + while ReadCount = BufferSize do + begin + ReadCount := ModuleReader.GetText(ContentPos, Buffer, ReadCount); + if ReadCount > 0 then + begin + Inc(ContentPos, BufferSize); + S.Write(Buffer^, ReadCount); + end; + end; + finally + FreeMem(Buffer); + end; + end; + Break; + end; + {$ENDIF ~BDS} + end; +end; + +procedure JumpToCode(AStackViewItem: IJclLocationInfo); +var + S, FileName, ProjectName: string; + Module: IOTAModule; + ModuleInfo: IOTAModuleInfo; + + SourceEditor: IOTASourceEditor; + I, LineNumber: Integer; + EditPos: TOTAEditPos; + PreparedLocationInfo: IJclPreparedLocationInfo; +begin + if Assigned(AStackViewItem) then + begin + if AStackViewItem.QueryInterface(IJclPreparedLocationInfo, PreparedLocationInfo) <> S_OK then + PreparedLocationInfo := nil; + FileName := AStackViewItem.SourceName; + ModuleInfo := FindModuleInfoAndProject(FileName, ProjectName); + if Assigned(ModuleInfo) then + begin + S := ModuleInfo.FileName; + if (S <> '') and Assigned(BorlandIDEServices) then + begin + {$IFDEF BDS} + Module := (BorlandIDEServices as IOTAModuleServices).OpenModule(S); + {$ELSE ~BDS} + Module := ModuleInfo.OpenModule; + {$ENDIF ~BDS} + end; + end + else + if Assigned(PreparedLocationInfo) and PreparedLocationInfo.FoundFile then + begin + {$IFDEF BDS} + Module := (BorlandIDEServices as IOTAModuleServices).OpenModule(PreparedLocationInfo.FileName); + {$ELSE ~BDS} + (BorlandIDEServices as IOTAActionServices).OpenFile(PreparedLocationInfo.FileName); + Module := (BorlandIDEServices as IOTAModuleServices).FindModule(PreparedLocationInfo.FileName); + {$ENDIF ~BDS} + end; + if Assigned(Module) then + begin + {$IFDEF BDS} + Module.Show; + {$ENDIF BDS} + for I := 0 to Module.GetModuleFileCount - 1 do + if Supports(Module.GetModuleFileEditor(I), IOTASourceEditor, SourceEditor) then + begin + SourceEditor.Show; + if SourceEditor.EditViewCount > 0 then + begin + if Assigned(PreparedLocationInfo) and (PreparedLocationInfo.TranslatedLineNumber > 0) then + LineNumber := PreparedLocationInfo.TranslatedLineNumber + else + LineNumber := AStackViewItem.LineNumber; + if LineNumber > 0 then + begin + SourceEditor.EditViews[0].Center(LineNumber, 1); + EditPos.Line := LineNumber; + EditPos.Col := 1; + SourceEditor.EditViews[0].CursorPos := EditPos; + end; + end; + Break; + end; + end; + end; +end; + +{$IFDEF UNITVERSIONING} +initialization + RegisterUnitVersion(HInstance, UnitVersioning); + +finalization + UnregisterUnitVersion(HInstance); +{$ENDIF UNITVERSIONING} + +end. Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackFrame.pas 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackFrame.pas 2009-05-18 19:53:20 UTC (rev 2764) @@ -38,7 +38,7 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - JclDebug, JclStackTraceViewerAPI, StackCodeUtils; + JclDebug, JclStackTraceViewerAPI, JclStackTraceViewerStackCodeUtils; type TfrmStack = class(TFrame, IJclStackTraceViewerStackFrame, IJclStackTraceViewerPreparableStackFrame, Modified: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackUtils.pas 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/JclStackTraceViewerStackUtils.pas 2009-05-18 19:53:20 UTC (rev 2764) @@ -39,8 +39,8 @@ JclUnitVersioning, {$ENDIF UNITVERSIONING} JclStrings, JclFileUtils, - JclDebugSerialization, JclStackTraceViewerClasses, StackCodeUtils, JclStackTraceViewerOptions, - JclStackTraceViewerAPIImpl, JclStackTraceViewerAPI; + JclDebugSerialization, JclStackTraceViewerClasses, JclStackTraceViewerStackCodeUtils, + JclStackTraceViewerOptions, JclStackTraceViewerAPIImpl, JclStackTraceViewerAPI; type TLocationInfoProcessorProgressStatus = (lippsUnknown, lippsStart, lippsFinished); Deleted: branches/jcl-stack-trace/jcl/experts/stacktraceviewer/StackCodeUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/experts/stacktraceviewer/StackCodeUtils.pas 2009-05-18 19:53:20 UTC (rev 2764) @@ -1,220 +0,0 @@ -unit StackCodeUtils; - -{$I jcl.inc} - -interface - -uses - SysUtils, - {$IFNDEF BDS} - Classes, - {$ENDIF !BDS} - ActiveX, ToolsAPI, - JclOtaUtils, - JclStackTraceViewerAPI; - -function FindModule(const AFileName: string): string; -function FindModuleAndProject(const AFileName: string; var AProjectName: string): string; -function GetFileEditorContent(const AFileName: string): IStream; -procedure JumpToCode(AStackViewItem: IJclLocationInfo); - -implementation - -function FindModuleInfoInProject(AProject: IOTAProject; const AFileName: string): IOTAModuleInfo; -var - I, P: Integer; - ModuleInfo: IOTAModuleInfo; - S, S2: string; -begin - Result := nil; - if AProject.GetModuleCount > 0 then - begin - S := UpperCase(AFileName); - for I := 0 to Pred(AProject.GetModuleCount) do - begin - ModuleInfo := AProject.GetModule(I); - if Assigned(ModuleInfo) then - begin - S2 := UpperCase(ModuleInfo.FileName); - P := Pos(S, S2); - if (P > 0) and (P = Length(S2) - Length(S) + 1) then - begin - Result := ModuleInfo; - Break; - end; - end; - end; - end; -end; - -function FindModule(const AFileName: string): string; -var - Dummy: string; -begin - Result := FindModuleAndProject(AFilename, Dummy); -end; - -function FindModuleInfoAndProject(const AFileName: string; var AProjectName: string): IOTAModuleInfo; -var - I: Integer; - ProjectGroup: IOTAProjectGroup; -begin - Result := nil; - AProjectName := ''; - {$IFDEF BDS} - ProjectGroup := (BorlandIDEServices as IOTAModuleServices).MainProjectGroup; - {$ELSE !BDS} - ProjectGroup := TJclOTAExpertBase.GetProjectGroup; - {$ENDIF !BDS} - if Assigned(ProjectGroup) then - for I := 0 to ProjectGroup.ProjectCount - 1 do - begin - Result := FindModuleInfoInProject(ProjectGroup.Projects[I], AFileName); - if Assigned(Result) then - begin - AProjectName := ProjectGroup.Projects[I].FileName; - Break; - end; - end; -end; - -function FindModuleAndProject(const AFileName: string; var AProjectName: string): string; -var - ModuleInfo: IOTAModuleInfo; -begin - ModuleInfo := FindModuleInfoAndProject(AFileName, AProjectName); - if Assigned(ModuleInfo) then - Result := ModuleInfo.FileName - else - Result := ''; -end; - -function GetFileEditorContent(const AFileName: string): IStream; -var - I: Integer; - Module: IOTAModule; - {$IFDEF BDS} - EditorContent: IOTAEditorContent; - {$ELSE !BDS} - ContentPos, ReadCount, BufferSize: Integer; - Buffer: Pointer; - ModuleSourceEditor: IOTASourceEditor; - ModuleReader: IOTAEditReader; - S: TStream; - SA: TStreamAdapter; - {$ENDIF !BDS} -begin - Result := nil; - Module := (BorlandIDEServices as IOTAModuleServices).FindModule(AFileName); - if Assigned(Module) then - begin - {$IFDEF BDS} - for I := 0 to Module.ModuleFileCount - 1 do - if Supports(Module.ModuleFileEditors[I], IOTAEditorContent, EditorContent) then - begin - Result := EditorContent.Content; - Break; - end; - {$ELSE !BDS} - for I := 0 to Module.GetModuleFileCount - 1 do - if Supports(Module.GetModuleFileEditor(I), IOTASourceEditor, ModuleSourceEditor) then - begin - ModuleReader := ModuleSourceEditor.CreateReader; - if Assigned(ModuleReader) then - begin - ContentPos := 0; - BufferSize := 4096; - SA := TStreamAdapter.Create(TMemoryStream.Create, soOwned); - S := SA.Stream; - Result := SA; - GetMem(Buffer, BufferSize); - try - ReadCount := BufferSize; - while ReadCount = BufferSize do - begin - ReadCount := ModuleReader.GetText(ContentPos, Buffer, ReadCount); - if ReadCount > 0 then - begin - Inc(ContentPos, BufferSize); - S.Write(Buffer^, ReadCount); - end; - end; - finally - FreeMem(Buffer); - end; - end; - Break; - end; - {$ENDIF !BDS} - end; -end; - -procedure JumpToCode(AStackViewItem: IJclLocationInfo); -var - S, FileName, ProjectName: string; - Module: IOTAModule; - ModuleInfo: IOTAModuleInfo; - - SourceEditor: IOTASourceEditor; - I, LineNumber: Integer; - EditPos: TOTAEditPos; - PreparedLocationInfo: IJclPreparedLocationInfo; -begin - if Assigned(AStackViewItem) then - begin - if AStackViewItem.QueryInterface(IJclPreparedLocationInfo, PreparedLocationInfo) <> S_OK then - PreparedLocationInfo := nil; - FileName := AStackViewItem.SourceName; - ModuleInfo := FindModuleInfoAndProject(FileName, ProjectName); - if Assigned(ModuleInfo) then - begin - S := ModuleInfo.FileName; - if (S <> '') and Assigned(BorlandIDEServices) then - begin - {$IFDEF BDS} - Module := (BorlandIDEServices as IOTAModuleServices).OpenModule(S); - {$ELSE !BDS} - Module := ModuleInfo.OpenModule; - {$ENDIF !BDS} - end; - end - else - if Assigned(PreparedLocationInfo) and PreparedLocationInfo.FoundFile then - begin - {$IFDEF BDS} - Module := (BorlandIDEServices as IOTAModuleServices).OpenModule(PreparedLocationInfo.FileName); - {$ELSE !BDS} - (BorlandIDEServices as IOTAActionServices).OpenFile(PreparedLocationInfo.FileName); - Module := (BorlandIDEServices as IOTAModuleServices).FindModule(PreparedLocationInfo.FileName); - {$ENDIF !BDS} - end; - if Assigned(Module) then - begin - {$IFDEF BDS} - Module.Show; - {$ENDIF BDS} - for I := 0 to Module.GetModuleFileCount - 1 do - if Supports(Module.GetModuleFileEditor(I), IOTASourceEditor, SourceEditor) then - begin - SourceEditor.Show; - if SourceEditor.EditViewCount > 0 then - begin - if Assigned(PreparedLocationInfo) and (PreparedLocationInfo.TranslatedLineNumber > 0) then - LineNumber := PreparedLocationInfo.TranslatedLineNumber - else - LineNumber := AStackViewItem.LineNumber; - if LineNumber > 0 then - begin - SourceEditor.EditViews[0].Center(LineNumber, 1); - EditPos.Line := LineNumber; - EditPos.Col := 1; - SourceEditor.EditViews[0].CursorPos := EditPos; - end; - end; - Break; - end; - end; - end; -end; - -end. Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk 2009-05-18 19:53:20 UTC (rev 2764) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpert-D.xml) - Last generated: 02-05-2009 13:25:15 UTC + Last generated: 18-05-2009 18:51:06 UTC ----------------------------------------------------------------------------- } @@ -47,22 +47,22 @@ ; contains - JclStackTraceViewerImpl in '..\..\experts\stackviewer\JclStackTraceViewerImpl.pas' , - JclStackTraceViewerExceptInfoFrame in '..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, - JclStackTraceViewerStackFrame in '..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, - JclStackTraceViewerThreadFrame in '..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, - JclStackTraceViewerModuleFrame in '..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, - JclStackTraceViewerMainFormBDS in '..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas' {frmStackView}, - JclStackTraceViewerMainFrame in '..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, - JclStackTraceViewerConfigFrame in '..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, - JclStackTraceViewerClasses in '..\..\experts\stackviewer\JclStackTraceViewerClasses.pas' , - StackCodeUtils in '..\..\experts\stackviewer\StackCodeUtils.pas' , - JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , - JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , - JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , - JclStackTraceViewerStackUtils in '..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas' , - JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , - JclDebugXMLDeserializer in '..\..\experts\stackviewer\JclDebugXMLDeserializer.pas' + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, + JclStackTraceViewerMainFormBDS in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormBDS.pas' {frmStackView}, + JclStackTraceViewerMainFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, + JclStackTraceViewerConfigFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, + JclStackTraceViewerClasses in '..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas' , + JclStackTraceViewerStackCodeUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas' , + JclStackTraceViewerOptions in '..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas' , + JclStackTraceViewerAPI in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas' , + JclDebugSerialization in '..\..\experts\stacktraceviewer\JclDebugSerialization.pas' , + JclDebugXMLDeserializer in '..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas' ; end. Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj 2009-05-18 19:53:20 UTC (rev 2764) @@ -90,21 +90,21 @@ <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> <DCCReference Include="JclBaseExpert.dcp" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerImpl.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerClasses.pas" /> - <DCCReference Include="..\..\experts\stackviewer\StackCodeUtils.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormBDS.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclDebugSerialization.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas" /> </ItemGroup> </Project> Added: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.res =================================================================== (Binary files differ) Property changes on: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.res ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr 2009-05-18 19:53:20 UTC (rev 2764) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpertDLL-L.xml) - Last generated: 02-05-2009 13:25:15 UTC + Last generated: 18-05-2009 18:51:06 UTC ----------------------------------------------------------------------------- } @@ -39,22 +39,22 @@ uses ToolsAPI, - JclStackTraceViewerImpl in '..\..\experts\stackviewer\JclStackTraceViewerImpl.pas' , - JclStackTraceViewerExceptInfoFrame in '..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, - JclStackTraceViewerStackFrame in '..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, - JclStackTraceViewerThreadFrame in '..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, - JclStackTraceViewerModuleFrame in '..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, - JclStackTraceViewerMainFormBDS in '..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas' {frmStackView}, - JclStackTraceViewerMainFrame in '..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, - JclStackTraceViewerConfigFrame in '..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, - JclStackTraceViewerClasses in '..\..\experts\stackviewer\JclStackTraceViewerClasses.pas' , - StackCodeUtils in '..\..\experts\stackviewer\StackCodeUtils.pas' , - JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , - JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , - JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , - JclStackTraceViewerStackUtils in '..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas' , - JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , - JclDebugXMLDeserializer in '..\..\experts\stackviewer\JclDebugXMLDeserializer.pas' + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, + JclStackTraceViewerMainFormBDS in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormBDS.pas' {frmStackView}, + JclStackTraceViewerMainFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, + JclStackTraceViewerConfigFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, + JclStackTraceViewerClasses in '..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas' , + JclStackTraceViewerStackCodeUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas' , + JclStackTraceViewerOptions in '..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas' , + JclStackTraceViewerAPI in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas' , + JclDebugSerialization in '..\..\experts\stacktraceviewer\JclDebugSerialization.pas' , + JclDebugXMLDeserializer in '..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas' ; exports Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj 2009-05-18 19:53:20 UTC (rev 2764) @@ -90,21 +90,21 @@ <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> <DCCReference Include="JclBaseExpert.dcp" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerImpl.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerClasses.pas" /> - <DCCReference Include="..\..\experts\stackviewer\StackCodeUtils.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormBDS.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclDebugSerialization.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas" /> </ItemGroup> </Project> Added: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.res =================================================================== (Binary files differ) Property changes on: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.res ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk 2009-05-18 19:53:20 UTC (rev 2764) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpert-D.xml) - Last generated: 02-05-2009 13:25:15 UTC + Last generated: 18-05-2009 18:51:07 UTC ----------------------------------------------------------------------------- } @@ -47,22 +47,22 @@ ; contains - JclStackTraceViewerImpl in '..\..\experts\stackviewer\JclStackTraceViewerImpl.pas' , - JclStackTraceViewerExceptInfoFrame in '..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, - JclStackTraceViewerStackFrame in '..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, - JclStackTraceViewerThreadFrame in '..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, - JclStackTraceViewerModuleFrame in '..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, - JclStackTraceViewerMainFormBDS in '..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas' {frmStackView}, - JclStackTraceViewerMainFrame in '..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, - JclStackTraceViewerConfigFrame in '..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, - JclStackTraceViewerClasses in '..\..\experts\stackviewer\JclStackTraceViewerClasses.pas' , - StackCodeUtils in '..\..\experts\stackviewer\StackCodeUtils.pas' , - JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , - JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , - JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , - JclStackTraceViewerStackUtils in '..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas' , - JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , - JclDebugXMLDeserializer in '..\..\experts\stackviewer\JclDebugXMLDeserializer.pas' + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, + JclStackTraceViewerMainFormBDS in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormBDS.pas' {frmStackView}, + JclStackTraceViewerMainFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, + JclStackTraceViewerConfigFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, + JclStackTraceViewerClasses in '..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas' , + JclStackTraceViewerStackCodeUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas' , + JclStackTraceViewerOptions in '..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas' , + JclStackTraceViewerAPI in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas' , + JclDebugSerialization in '..\..\experts\stacktraceviewer\JclDebugSerialization.pas' , + JclDebugXMLDeserializer in '..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas' ; end. Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj 2009-05-18 19:53:20 UTC (rev 2764) @@ -66,22 +66,22 @@ <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> <DCCReference Include="JclBaseExpert.dcp" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerImpl.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerClasses.pas" /> - <DCCReference Include="..\..\experts\stackviewer\StackCodeUtils.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormBDS.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclDebugSerialization.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas" /> <BuildConfiguration Include="Base"> <Key>Base</Key> </BuildConfiguration> Added: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.res =================================================================== (Binary files differ) Property changes on: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.res ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr 2009-05-18 19:53:20 UTC (rev 2764) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpertDLL-L.xml) - Last generated: 02-05-2009 13:25:15 UTC + Last generated: 18-05-2009 18:51:07 UTC ----------------------------------------------------------------------------- } @@ -39,22 +39,22 @@ uses ToolsAPI, - JclStackTraceViewerImpl in '..\..\experts\stackviewer\JclStackTraceViewerImpl.pas' , - JclStackTraceViewerExceptInfoFrame in '..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, - JclStackTraceViewerStackFrame in '..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, - JclStackTraceViewerThreadFrame in '..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, - JclStackTraceViewerModuleFrame in '..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, - JclStackTraceViewerMainFormBDS in '..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas' {frmStackView}, - JclStackTraceViewerMainFrame in '..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, - JclStackTraceViewerConfigFrame in '..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, - JclStackTraceViewerClasses in '..\..\experts\stackviewer\JclStackTraceViewerClasses.pas' , - StackCodeUtils in '..\..\experts\stackviewer\StackCodeUtils.pas' , - JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , - JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , - JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , - JclStackTraceViewerStackUtils in '..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas' , - JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , - JclDebugXMLDeserializer in '..\..\experts\stackviewer\JclDebugXMLDeserializer.pas' + JclStackTraceViewerImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas' , + JclStackTraceViewerExceptInfoFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, + JclStackTraceViewerStackFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, + JclStackTraceViewerThreadFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, + JclStackTraceViewerModuleFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, + JclStackTraceViewerMainFormBDS in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormBDS.pas' {frmStackView}, + JclStackTraceViewerMainFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, + JclStackTraceViewerConfigFrame in '..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, + JclStackTraceViewerClasses in '..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas' , + JclStackTraceViewerStackCodeUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas' , + JclStackTraceViewerOptions in '..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas' , + JclStackTraceViewerAPI in '..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas' , + JclDebugSerialization in '..\..\experts\stacktraceviewer\JclDebugSerialization.pas' , + JclDebugXMLDeserializer in '..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas' ; exports Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj 2009-05-18 19:53:20 UTC (rev 2764) @@ -66,22 +66,22 @@ <DCCReference Include="designide.dcp" /> <DCCReference Include="Jcl.dcp" /> <DCCReference Include="JclBaseExpert.dcp" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerImpl.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerClasses.pas" /> - <DCCReference Include="..\..\experts\stackviewer\StackCodeUtils.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> - <DCCReference Include="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerImpl.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerExceptInfoFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerThreadFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerModuleFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerMainFormBDS.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerMainFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerConfigFrame.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerClasses.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackCodeUtils.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerOptions.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerAPIImpl.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerAPI.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclStackTraceViewerStackUtils.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclDebugSerialization.pas" /> + <DCCReference Include="..\..\experts\stacktraceviewer\JclDebugXMLDeserializer.pas" /> <BuildConfiguration Include="Base"> <Key>Base</Key> </BuildConfiguration> Added: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.res =================================================================== (Binary files differ) Property changes on: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.res ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml =================================================================== --- branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml 2009-05-18 09:59:32 UTC (rev 2763) +++ branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml 2009-05-18 19:53:20 UTC (rev 2764) @@ -18,22 +18,22 @@ <Package Name="JclBaseExpert-D" Targets="Windows" Condition=""/> </Requires> <Contains> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerImpl.pas" Targets="Delphi" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas" Targets="Delphi" Formname="frmException: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas" Targets="Delphi" Formname="frmStack: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas" Targets="Delphi" Formname="frmThread: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas" Targets="Delphi" Formname="frmModule: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormDelphi.pas" Targets="d5,d6,d7" Formname="frmStackView" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" Targets="d9,d10,d11,d12" Formname="frmStackView" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas" Targets="Delphi" Formname="frmMain: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas" Targets="Delphi" Formname="JclStackTraceViewerConfigFrame: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerClasses.pas" Targets="Delphi" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\StackCodeUtils.pas" Targets="Delphi" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" Targets="Delphi" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" Targets="Delphi" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" Targets="Delphi" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas" Targets="Delphi" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclDebugSerialization.pas" Targets="Delphi" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclDebugXM... [truncated message content] |
From: <ou...@us...> - 2009-05-18 09:59:39
|
Revision: 2763 http://jcl.svn.sourceforge.net/jcl/?rev=2763&view=rev Author: outchy Date: 2009-05-18 09:59:32 +0000 (Mon, 18 May 2009) Log Message: ----------- always save the log file. Modified Paths: -------------- trunk/thirdparty/makedist/JclFiles.xml trunk/thirdparty/makedist/JclTesting.xml trunk/thirdparty/makedist/MakeDistMain.pas Modified: trunk/thirdparty/makedist/JclFiles.xml =================================================================== --- trunk/thirdparty/makedist/JclFiles.xml 2009-05-18 09:27:20 UTC (rev 2762) +++ trunk/thirdparty/makedist/JclFiles.xml 2009-05-18 09:59:32 UTC (rev 2763) @@ -2,6 +2,10 @@ <makedist> <task name="Jcl-win.zip" selected="-1"> <action classname="TLogCleaner"/> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-win.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -32,6 +36,10 @@ <configuration index="1" caption="Constant name" value="JclVersionBuild"/> <configuration index="2" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\devtools\"/> @@ -48,13 +56,13 @@ <configuration index="0" caption="Directory" value="sandbox"/> <configuration index="1" caption="Move to recycle bin" value="no"/> </action> + </task> + <task name="Jcl-linux.zip" selected="-1"> + <action classname="TLogCleaner"/> <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%.log"/> + <configuration index="0" caption="File name" value="jcl-linux.log"/> <configuration index="1" caption="Append" value="no"/> </action> - </task> - <task name="Jcl-linux.zip" selected="-1"> - <action classname="TLogCleaner"/> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -85,6 +93,10 @@ <configuration index="1" caption="Constant name" value="JclVersionBuild"/> <configuration index="2" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-linux.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\devtools\"/> @@ -111,13 +123,13 @@ <configuration index="1" caption="Filter" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-linux.tar"/> <configuration index="2" caption="Move to recycle bin" value="no"/> </action> + </task> + <task name="Jcl-turbo.zip" selected="-1"> + <action classname="TLogCleaner"/> <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-linux.log"/> + <configuration index="0" caption="File name" value="jcl-turbo.log"/> <configuration index="1" caption="Append" value="no"/> </action> - </task> - <task name="Jcl-turbo.zip" selected="-1"> - <action classname="TLogCleaner"/> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -148,6 +160,10 @@ <configuration index="1" caption="Constant name" value="JclVersionBuild"/> <configuration index="2" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-turbo.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\devtools\"/> @@ -196,13 +212,13 @@ <configuration index="0" caption="Directory" value="sandbox"/> <configuration index="1" caption="Move to recycle bin" value="no"/> </action> + </task> + <task name="jcl-html.zip" selected="-1"> + <action classname="TLogCleaner"/> <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-turbo.log"/> + <configuration index="0" caption="File name" value="jcl-html.log"/> <configuration index="1" caption="Append" value="no"/> </action> - </task> - <task name="jcl-html.zip" selected="-1"> - <action classname="TLogCleaner"/> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -233,6 +249,10 @@ <configuration index="1" caption="Constant name" value="JclVersionBuild"/> <configuration index="2" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-htmlhelp.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\jcl\devtools\"/> @@ -279,13 +299,13 @@ <configuration index="1" caption="Filter" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-htmlhelp-linux.tar"/> <configuration index="2" caption="Move to recycle bin" value="no"/> </action> + </task> + <task name="jcl-chm.zip" selected="-1"> + <action classname="TLogCleaner"/> <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-htmlhelp.log"/> + <configuration index="0" caption="File name" value="jcl-chm.log"/> <configuration index="1" caption="Append" value="no"/> </action> - </task> - <task name="jcl-chm.zip" selected="-1"> - <action classname="TLogCleaner"/> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -316,6 +336,10 @@ <configuration index="1" caption="Constant name" value="JclVersionBuild"/> <configuration index="2" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-chmhelp.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\jcl\devtools\"/> @@ -347,13 +371,13 @@ <configuration index="0" caption="Directory" value="sandbox"/> <configuration index="1" caption="Move to recycle bin" value="no"/> </action> + </task> + <task name="jcl-h2.zip" selected="-1"> + <action classname="TLogCleaner"/> <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-chmhelp.log"/> + <configuration index="0" caption="File name" value="jcl-h2.log"/> <configuration index="1" caption="Append" value="no"/> </action> - </task> - <task name="jcl-h2.zip" selected="-1"> - <action classname="TLogCleaner"/> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -384,6 +408,10 @@ <configuration index="1" caption="Constant name" value="JclVersionBuild"/> <configuration index="2" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-htmlhelp2.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\jcl\devtools\"/> @@ -415,13 +443,13 @@ <configuration index="0" caption="Directory" value="sandbox"/> <configuration index="1" caption="Move to recycle bin" value="no"/> </action> + </task> + <task name="jcl-hlp.zip" selected="-1"> + <action classname="TLogCleaner"/> <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-htmlhelp2.log"/> + <configuration index="0" caption="File name" value="jcl-hlp.log"/> <configuration index="1" caption="Append" value="no"/> </action> - </task> - <task name="jcl-hlp.zip" selected="-1"> - <action classname="TLogCleaner"/> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -452,6 +480,10 @@ <configuration index="1" caption="Constant name" value="JclVersionBuild"/> <configuration index="2" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-winhelp.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\jcl\devtools\"/> @@ -478,13 +510,13 @@ <configuration index="0" caption="Directory" value="sandbox"/> <configuration index="1" caption="Move to recycle bin" value="no"/> </action> + </task> + <task name="jcl-xml.zip" selected="-1"> + <action classname="TLogCleaner"/> <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-winhelp.log"/> + <configuration index="0" caption="File name" value="jcl-xml.log"/> <configuration index="1" caption="Append" value="no"/> </action> - </task> - <task name="jcl-xml.zip" selected="-1"> - <action classname="TLogCleaner"/> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -515,6 +547,10 @@ <configuration index="1" caption="Constant name" value="JclVersionBuild"/> <configuration index="2" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-xml.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\jcl\devtools\"/> @@ -541,13 +577,13 @@ <configuration index="0" caption="Directory" value="sandbox"/> <configuration index="1" caption="Move to recycle bin" value="no"/> </action> + </task> + <task name="jcl-pdf.zip" selected="-1"> + <action classname="TLogCleaner"/> <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-xml.log"/> + <configuration index="0" caption="File name" value="jcl-pdf.log"/> <configuration index="1" caption="Append" value="no"/> </action> - </task> - <task name="jcl-pdf.zip" selected="-1"> - <action classname="TLogCleaner"/> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -578,6 +614,10 @@ <configuration index="1" caption="Constant name" value="JclVersionBuild"/> <configuration index="2" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-pdf.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\jcl\devtools\"/> @@ -604,9 +644,5 @@ <configuration index="0" caption="Directory" value="sandbox"/> <configuration index="1" caption="Move to recycle bin" value="no"/> </action> - <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-pdf.log"/> - <configuration index="1" caption="Append" value="no"/> - </action> </task> </makedist> Modified: trunk/thirdparty/makedist/JclTesting.xml =================================================================== --- trunk/thirdparty/makedist/JclTesting.xml 2009-05-18 09:27:20 UTC (rev 2762) +++ trunk/thirdparty/makedist/JclTesting.xml 2009-05-18 09:59:32 UTC (rev 2763) @@ -2,6 +2,10 @@ <makedist> <task name="jcl-daily-source" selected="0"> <action classname="TLogCleaner"/> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-daily-source.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%SVN%"/> <configuration index="1" caption="Working directory" value="..\..\"/> @@ -57,6 +61,10 @@ <configuration index="2" caption="Day" value="01"/> <configuration index="3" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TVariableWriter"> <configuration index="0" caption="Destination file" value="sandbox\jcl-build.txt"/> <configuration index="1" caption="Expression" value="%VersionBuild%"/> @@ -129,13 +137,13 @@ <configuration index="3" caption="Valid exit codes" value=""/> <configuration index="4" caption="Result file" value=""/> </action> + </task> + <task name="jcl-weekly-hlp" selected="0"> + <action classname="TLogCleaner"/> <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%.log"/> + <configuration index="0" caption="File name" value="jcl-weekly-hlp.log"/> <configuration index="1" caption="Append" value="no"/> </action> - </task> - <task name="jcl-weekly-hlp" selected="0"> - <action classname="TLogCleaner"/> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%SVN%"/> <configuration index="1" caption="Working directory" value="..\..\"/> @@ -186,6 +194,10 @@ <configuration index="2" caption="Day" value="01"/> <configuration index="3" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-winhelp.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\jcl\devtools\"/> @@ -249,13 +261,13 @@ <configuration index="3" caption="Valid exit codes" value=""/> <configuration index="4" caption="Result file" value=""/> </action> + </task> + <task name="jcl-weekly-h2" selected="0"> + <action classname="TLogCleaner"/> <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-winhelp.log"/> + <configuration index="0" caption="File name" value="jcl-weekly-h2.log"/> <configuration index="1" caption="Append" value="no"/> </action> - </task> - <task name="jcl-weekly-h2" selected="0"> - <action classname="TLogCleaner"/> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%SVN%"/> <configuration index="1" caption="Working directory" value="..\..\"/> @@ -306,6 +318,10 @@ <configuration index="2" caption="Day" value="01"/> <configuration index="3" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-htmlhelp2.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\jcl\devtools\"/> @@ -374,13 +390,13 @@ <configuration index="3" caption="Valid exit codes" value=""/> <configuration index="4" caption="Result file" value=""/> </action> + </task> + <task name="jcl-weekly-chm" selected="0"> + <action classname="TLogCleaner"/> <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-htmlhelp2.log"/> + <configuration index="0" caption="File name" value="jcl-weekly-chm.log"/> <configuration index="1" caption="Append" value="no"/> </action> - </task> - <task name="jcl-weekly-chm" selected="0"> - <action classname="TLogCleaner"/> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%SVN%"/> <configuration index="1" caption="Working directory" value="..\..\"/> @@ -431,6 +447,10 @@ <configuration index="2" caption="Day" value="01"/> <configuration index="3" caption="Environment variable" value="VersionBuild"/> </action> + <action classname="TLogSaver"> + <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-chmhelp.log"/> + <configuration index="1" caption="Append" value="no"/> + </action> <action classname="TCommandLineCaller"> <configuration index="0" caption="Application" value="%ComSpec%"/> <configuration index="1" caption="Working directory" value="sandbox\jcl\devtools\"/> @@ -499,9 +519,5 @@ <configuration index="3" caption="Valid exit codes" value=""/> <configuration index="4" caption="Result file" value=""/> </action> - <action classname="TLogSaver"> - <configuration index="0" caption="File name" value="jcl-%VersionMajor%.%VersionMinor%.%VersionRelease%.%VersionBuild%-chmhelp.log"/> - <configuration index="1" caption="Append" value="no"/> - </action> </task> </makedist> Modified: trunk/thirdparty/makedist/MakeDistMain.pas =================================================================== --- trunk/thirdparty/makedist/MakeDistMain.pas 2009-05-18 09:27:20 UTC (rev 2762) +++ trunk/thirdparty/makedist/MakeDistMain.pas 2009-05-18 09:59:32 UTC (rev 2763) @@ -79,6 +79,8 @@ TDistribution = class private + FLogFileName: TFileName; + FLogAppend: Boolean; FOnMessage: TTextHandler; FOnProgress: TProgressionEvent; FTasks: TObjectList; @@ -88,6 +90,7 @@ function GetTaskCount: Integer; function GetTask(Index: Integer): TDistTask; procedure OutputMessage(const Text: string); + procedure SaveLog; public constructor Create; destructor Destroy; override; @@ -407,6 +410,10 @@ Result := True; CurrentTask := Tasks[Index]; + FLogFileName := ''; + FLogAppend := False; + FLog.Clear; + OutputMessage('starting task: ' + CurrentTask.Name); if Assigned(FOnProgress) then @@ -438,6 +445,8 @@ if Assigned(FOnProgress) then FOnProgress(Index, ActionIndex, True, Result); + SaveLog; + if not Result then Break; end; @@ -496,9 +505,6 @@ end; procedure TDistribution.OutputMessage(const Text: string); -var - AStream: TFileStream; - FileName: string; begin if Assigned(FOnMessage) then FOnMessage(Text); @@ -510,27 +516,21 @@ if Copy(Text, 1, Length(LogSaveCommand)) = LogSaveCommand then begin - FileName := Copy(Text, Length(LogSaveCommand) + 1, Length(Text) - Length(LogSaveCommand)); - FLog.SaveToFile(FileName); + FLogFileName := Copy(Text, Length(LogSaveCommand) + 1, Length(Text) - Length(LogSaveCommand)); + FLogAppend := False; end else if Copy(Text, 1, Length(LogAppendCommand)) = LogAppendCommand then begin - FileName := Copy(Text, Length(LogAppendCommand) + 1, Length(Text) - Length(LogAppendCommand)); - if FileExists(FileName) then - AStream := TFileStream.Create(FileName, fmOpenWrite or fmShareDenyNone) - else - AStream := TFileStream.Create(FileName, fmCreate or fmShareDenyNone); - try - AStream.Seek(0, soEnd); - FLog.SaveToStream(AStream); - finally - AStream.Free; - end; + FLogFileName := Copy(Text, Length(LogAppendCommand) + 1, Length(Text) - Length(LogAppendCommand)); + FLogAppend := True; end else if Text = LogClearCommand then + begin + SaveLog; FLog.Clear; + end; end; function TDistribution.SaveConfiguration(const AFileName: string): Boolean; @@ -569,6 +569,30 @@ end; end; +procedure TDistribution.SaveLog; +var + AStream: TFileStream; +begin + if FLogFileName <> '' then + begin + if FLogAppend then + begin + if FileExists(FLogFileName) then + AStream := TFileStream.Create(FLogFileName, fmOpenWrite or fmShareDenyNone) + else + AStream := TFileStream.Create(FLogFileName, fmCreate or fmShareDenyNone); + try + AStream.Seek(0, soEnd); + FLog.SaveToStream(AStream); + finally + AStream.Free; + end; + end + else + FLog.SaveToFile(FLogFileName); + end; +end; + initialization finalization This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-05-18 09:27:28
|
Revision: 2762 http://jcl.svn.sourceforge.net/jcl/?rev=2762&view=rev Author: outchy Date: 2009-05-18 09:27:20 +0000 (Mon, 18 May 2009) Log Message: ----------- Always remove the sandbox before starting an action. Modified Paths: -------------- trunk/thirdparty/makedist/JclTesting.xml trunk/thirdparty/makedist/MakeDistActions.pas Modified: trunk/thirdparty/makedist/JclTesting.xml =================================================================== --- trunk/thirdparty/makedist/JclTesting.xml 2009-05-17 21:07:10 UTC (rev 2761) +++ trunk/thirdparty/makedist/JclTesting.xml 2009-05-18 09:27:20 UTC (rev 2762) @@ -17,6 +17,10 @@ <configuration index="4" caption="Key" value="info\entry\\revision"/> <configuration index="5" caption="Environment variable" value="VersionRevision"/> </action> + <action classname="TDirectoryRemover"> + <configuration index="0" caption="Directory" value="sandbox"/> + <configuration index="1" caption="Move to recycle bin" value="no"/> + </action> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -147,6 +151,10 @@ <configuration index="4" caption="Key" value="info\entry\\revision"/> <configuration index="5" caption="Environment variable" value="VersionRevision"/> </action> + <action classname="TDirectoryRemover"> + <configuration index="0" caption="Directory" value="sandbox"/> + <configuration index="1" caption="Move to recycle bin" value="no"/> + </action> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -263,6 +271,10 @@ <configuration index="4" caption="Key" value="info\entry\\revision"/> <configuration index="5" caption="Environment variable" value="VersionRevision"/> </action> + <action classname="TDirectoryRemover"> + <configuration index="0" caption="Directory" value="sandbox"/> + <configuration index="1" caption="Move to recycle bin" value="no"/> + </action> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> @@ -384,6 +396,10 @@ <configuration index="4" caption="Key" value="info\entry\\revision"/> <configuration index="5" caption="Environment variable" value="VersionRevision"/> </action> + <action classname="TDirectoryRemover"> + <configuration index="0" caption="Directory" value="sandbox"/> + <configuration index="1" caption="Move to recycle bin" value="no"/> + </action> <action classname="TDirectoryCreator"> <configuration index="0" caption="Directory" value="sandbox"/> </action> Modified: trunk/thirdparty/makedist/MakeDistActions.pas =================================================================== --- trunk/thirdparty/makedist/MakeDistActions.pas 2009-05-17 21:07:10 UTC (rev 2761) +++ trunk/thirdparty/makedist/MakeDistActions.pas 2009-05-18 09:27:20 UTC (rev 2762) @@ -999,7 +999,7 @@ ExpandEnvironmentVar(MoveToRecycleBin); MoveToRecBin := AnsiSameText(MoveToRecycleBin, 'yes'); - Result := DeleteDirectory(Directory, MoveToRecBin); + Result := (not DirectoryExists(Directory)) or DeleteDirectory(Directory, MoveToRecBin); if Result then AMessageHandler('Removed directory ' + Directory) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-05-17 21:07:18
|
Revision: 2761 http://jcl.svn.sourceforge.net/jcl/?rev=2761&view=rev Author: uschuster Date: 2009-05-17 21:07:10 +0000 (Sun, 17 May 2009) Log Message: ----------- changed form caption to 'Stack Traces', because it could now also show stacks for memory leaks (FastMM) and not only from exceptions Modified Paths: -------------- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.dfm branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.dfm Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.dfm =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.dfm 2009-05-17 19:16:32 UTC (rev 2760) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.dfm 2009-05-17 21:07:10 UTC (rev 2761) @@ -1,5 +1,5 @@ inherited frmStackView: TfrmStackView - Caption = 'Exception Stack View' + Caption = 'Stack Traces' ClientHeight = 331 ClientWidth = 356 KeyPreview = True Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.dfm =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.dfm 2009-05-17 19:16:32 UTC (rev 2760) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.dfm 2009-05-17 21:07:10 UTC (rev 2761) @@ -1,7 +1,7 @@ inherited frmStackView: TfrmStackView Width = 364 Height = 358 - Caption = 'Exception Stack View' + Caption = 'Stack Traces' KeyPreview = True PopupMenu = nil ShowHint = False This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-05-17 19:16:35
|
Revision: 2760 http://jcl.svn.sourceforge.net/jcl/?rev=2760&view=rev Author: uschuster Date: 2009-05-17 19:16:32 +0000 (Sun, 17 May 2009) Log Message: ----------- - extended API and reworked the expert to a more interface based solution to allow 3rd party plugins that provide data - added state handling for "Jump to code line" and "Update Local Info" - moved progressbar to the right side - processed hints Modified Paths: -------------- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerAPI.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerClasses.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackFrame.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackUtils.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerThreadFrame.pas branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerAPI.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerAPI.pas 2009-05-12 21:09:24 UTC (rev 2759) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerAPI.pas 2009-05-17 19:16:32 UTC (rev 2760) @@ -31,8 +31,15 @@ interface uses - Classes, ActiveX; + Classes, ActiveX, Forms; +const + livLocationInfo = 1; + livProcedureStartLocationInfo = 2; + livUnitVersionInfo = 4; + + dfStack = 1; + type IJclLineNumberTranslator = interface ['{01E06940-49AE-464B-AC47-D65DFBC41396}'] @@ -55,11 +62,163 @@ property IDString: string read GetIDString; end; + IJclLocationInfo = interface + ['{888244F1-FC29-4330-B2DE-FAB4ED15DC3E}'] + function GetAddress: Pointer; + function GetBinaryFileName: string; + function GetLineNumber: Integer; + function GetLineNumberOffsetFromProcedureStart: Integer; + function GetModuleName: string; + function GetOffsetFromLineNumber: Integer; + function GetOffsetFromProcName: Integer; + function GetProcedureName: string; + function GetSourceName: string; + function GetSourceUnitName: string; + function GetUnitVersionDateTime: TDateTime; + function GetUnitVersionExtra: string; + function GetUnitVersionLogPath: string; + function GetUnitVersionRCSfile: string; + function GetUnitVersionRevision: string; + function GetVAddress: Pointer; + function GetValues: Integer; + + property Address: Pointer read GetAddress; + property BinaryFileName: string read GetBinaryFileName; + property LineNumber: Integer read GetLineNumber; + property LineNumberOffsetFromProcedureStart: Integer read GetLineNumberOffsetFromProcedureStart; + property ModuleName: string read GetModuleName; + property OffsetFromLineNumber: Integer read GetOffsetFromLineNumber; + property OffsetFromProcName: Integer read GetOffsetFromProcName; + property ProcedureName: string read GetProcedureName; + property SourceName: string read GetSourceName; + property SourceUnitName: string read GetSourceUnitName; + property UnitVersionDateTime: TDateTime read GetUnitVersionDateTime; + property UnitVersionExtra: string read GetUnitVersionExtra; + property UnitVersionLogPath: string read GetUnitVersionLogPath; + property UnitVersionRCSfile: string read GetUnitVersionRCSfile; + property UnitVersionRevision: string read GetUnitVersionRevision; + property VAddress: Pointer read GetVAddress; + property Values: Integer read GetValues; + end; + + IJclPreparedLocationInfo = interface(IJclLocationInfo) + ['{B03E4506-221A-46B6-9668-E32FFAF17736}'] + function GetFileName: string; + function GetFoundFile: Boolean; + function GetProjectName: string; + function GetRevision: string; + function GetTranslatedLineNumber: Integer; + procedure SetFileName(AValue: string); + procedure SetFoundFile(AValue: Boolean); + procedure SetProjectName(AValue: string); + procedure SetRevision(AValue: string); + procedure SetTranslatedLineNumber(AValue: Integer); + + property FileName: string read GetFileName write SetFileName; + property FoundFile: Boolean read GetFoundFile write SetFoundFile; + property ProjectName: string read GetProjectName write SetProjectName; + property Revision: string read GetRevision write SetRevision; + property TranslatedLineNumber: Integer read GetTranslatedLineNumber write SetTranslatedLineNumber; + end; + + IJclLocationInfoList = interface + ['{0A24DD15-0A3E-4584-88FE-B3E56E5DFA41}'] + function GetCount: Integer; + function GetLocationItems(AIndex: Integer): IJclLocationInfo; + + property Count: Integer read GetCount; + property Items[AIndex: Integer]: IJclLocationInfo read GetLocationItems; default; + end; + + IJclModuleInfoList = interface; + + IJclPreparedLocationInfoList = interface(IJclLocationInfoList) + ['{CC153034-5275-414C-B454-06BE66A9E3E0}'] + function GetModuleInfoList: IJclModuleInfoList; + function GetPrepared: Boolean; + procedure SetPrepared(AValue: Boolean); + + property ModuleInfoList: IJclModuleInfoList read GetModuleInfoList; + property Prepared: Boolean read GetPrepared write SetPrepared; + end; + + IJclModuleInfo = interface + ['{5103F01E-6B33-434B-B0A9-DAEA30C01E2C}'] + function GetBinFileVersion: string; + function GetModuleName: string; + + property BinFileVersion: string read GetBinFileVersion; + property ModuleName: string read GetModuleName; + end; + + IJclModuleInfoList = interface + ['{1351C9C7-67A1-4A65-83B5-DC6814C300FF}'] + function GetModuleCount: Integer; + function GetModuleInfo(AIndex: Integer): IJclModuleInfo; + + property Count: Integer read GetModuleCount; + property Items[AIndex: Integer]: IJclModuleInfo read GetModuleInfo; default; + end; + + IJclStackTraceViewerStackProcessorServices = interface + ['{B4E7053D-AC74-4ED9-8B6D-6EA93EE3FB96}'] + function GetModuleInfoList: IJclModuleInfoList; + procedure PrepareLocationInfoList(AStack: IJclPreparedLocationInfoList; AForce: Boolean = False); + procedure SetModuleInfoList(AValue: IJclModuleInfoList); + + property ModuleList: IJclModuleInfoList read GetModuleInfoList write SetModuleInfoList; + end; + + IJclStackTraceViewerTreeViewLink = interface + ['{A87C6CD8-7253-4D2A-8C82-441C49CA591F}'] + procedure DoShow(AFrame: TCustomFrame); + function GetCount: Integer; + function GetFrameClass: TCustomFrameClass; + function GetItems(AIndex: Integer): IJclStackTraceViewerTreeViewLink; + function GetText: string; + + property Count: Integer read GetCount; + property FrameClass: TCustomFrameClass read GetFrameClass; + property Items[AIndex: Integer]: IJclStackTraceViewerTreeViewLink read GetItems; default; + property Text: string read GetText; + end; + + IJclStackTraceViewerStackFrame = interface + ['{5868BC94-D24A-42EB-8A4A-9AB411702407}'] + function GetStackList: IJclLocationInfoList; + procedure SetStackList(const AValue: IJclLocationInfoList); + end; + + IJclStackTraceViewerPreparableStackFrame = interface + ['{E1E3D9FF-AE1C-43AD-8273-1A440B5C46C1}'] + function GetPreparableLocationInfoListCount: Integer; + function GetPreparableLocationInfoList(AIndex: Integer): IJclPreparedLocationInfoList; + + property PreparableLocationInfoListCount: Integer read GetPreparableLocationInfoListCount; + property PreparableLocationInfoList[AIndex: Integer]: IJclPreparedLocationInfoList read GetPreparableLocationInfoList; + end; + + IJclStackTraceViewerStackSelection = interface + ['{1FA53A21-9724-414D-BB56-17FB635794A0}'] + function GetSelected: IJclLocationInfo; + + property Selected: IJclLocationInfo read GetSelected; + end; + + IJclStackTraceViewerStackServices = interface + ['{1A59CDD1-6A8F-4D29-8678-314718CF995B}'] + function GetDefaultFrameClass(const AFrameClassID: Integer): TCustomFrameClass; + procedure ShowTree(ARootLink: IJclStackTraceViewerTreeViewLink); + procedure UnregisterFrameClass(AFrameClass: TCustomFrameClass); + end; + var RegisterLineNumberTranslatorProc: function(const ATranslator: IJclLineNumberTranslator): Integer = nil; UnregisterLineNumberTranslatorProc: procedure(AIndex: Integer) = nil; RegisterRevisionProviderProc: function(const ATranslator: IJclRevisionProvider): Integer = nil; UnregisterRevisionProviderProc: procedure(AIndex: Integer) = nil; + StackTraceViewerStackServices: IJclStackTraceViewerStackServices = nil; + StackTraceViewerStackProcessorServices: IJclStackTraceViewerStackProcessorServices = nil; function RegisterLineNumberTranslator(const ATranslator: IJclLineNumberTranslator): Integer; procedure UnregisterLineNumberTranslator(AIndex: Integer); Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerClasses.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerClasses.pas 2009-05-12 21:09:24 UTC (rev 2759) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerClasses.pas 2009-05-17 19:16:32 UTC (rev 2760) @@ -37,10 +37,10 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - JclDebug, JclDebugSerialization; + JclDebug, JclDebugSerialization, JclStackTraceViewerAPI; type - TJclStackTraceViewerLocationInfo = class(TJclLocationInfoEx) + TJclStackTraceViewerLocationInfo = class(TJclLocationInfoEx, IJclLocationInfo, IJclPreparedLocationInfo) private FFoundFile: Boolean; FFileName: string; @@ -48,6 +48,40 @@ FRevision: string; FTranslatedLineNumber: Integer; public + { IInterface } + function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + { IJclLocationInfo } + function GetAddress: Pointer; + function GetBinaryFileName: string; + function GetLineNumber: Integer; + function GetLineNumberOffsetFromProcedureStart: Integer; + function GetModuleName: string; + function GetOffsetFromLineNumber: Integer; + function GetOffsetFromProcName: Integer; + function GetProcedureName: string; + function GetSourceName: string; + function GetSourceUnitName: string; + function GetUnitVersionDateTime: TDateTime; + function GetUnitVersionExtra: string; + function GetUnitVersionLogPath: string; + function GetUnitVersionRCSfile: string; + function GetUnitVersionRevision: string; + function GetVAddress: Pointer; + function GetValues: Integer; + { IJclPreparedLocationInfo } + function GetFileName: string; + function GetFoundFile: Boolean; + function GetProjectName: string; + function GetRevision: string; + function GetTranslatedLineNumber: Integer; + procedure SetFileName(AValue: string); + procedure SetFoundFile(AValue: Boolean); + procedure SetProjectName(AValue: string); + procedure SetRevision(AValue: string); + procedure SetTranslatedLineNumber(AValue: Integer); + property FileName: string read FFileName write FFileName; property FoundFile: Boolean read FFoundFile write FFoundFile; property ProjectName: string read FProjectName write FProjectName; @@ -55,14 +89,30 @@ property TranslatedLineNumber: Integer read FTranslatedLineNumber write FTranslatedLineNumber; end; - TJclStackTraceViewerLocationInfoList = class(TJclCustomLocationInfoList) + TJclStackTraceViewerLocationInfoList = class(TJclCustomLocationInfoList, IJclLocationInfoList, + IJclPreparedLocationInfoList) private FPrepared: Boolean; + FModuleInfoList: IJclModuleInfoList; function GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; public constructor Create; override; + + { IInterface } + function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + { IJclLocationInfoList } + function GetCount: Integer; + function GetLocationItems(AIndex: Integer): IJclLocationInfo; + function GetPrepared: Boolean; + procedure SetPrepared(AValue: Boolean); + { IJclPreparedLocationInfoList } + function GetModuleInfoList: IJclModuleInfoList; + function Add(Addr: Pointer): TJclStackTraceViewerLocationInfo; property Items[AIndex: Integer]: TJclStackTraceViewerLocationInfo read GetItems; default; + property ModuleInfoList: IJclModuleInfoList read FModuleInfoList write FModuleInfoList; property Prepared: Boolean read FPrepared write FPrepared; end; @@ -90,18 +140,46 @@ property Items[AIndex: Integer]: TJclStackTraceViewerThreadInfo read GetItems; default; end; + TJclStackTraceViewerModuleModuleInfo = class(TModule, IJclModuleInfo) + { IInterface } + function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + { IJclModuleInfo } + function GetBinFileVersion: string; + function GetModuleName: string; + end; + + TJclStackTraceViewerModuleInfoList = class(TObject, IJclModuleInfoList) + private + FItems: TObjectList; + public + constructor Create; + destructor Destroy; override; + { IInterface } + function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + { IJclModuleInfoList } + function GetModuleCount: Integer; + function GetModuleInfo(AIndex: Integer): IJclModuleInfo; + + function Add: TJclStackTraceViewerModuleModuleInfo; + end; + TJclStackTraceViewerExceptionInfo = class(TObject) private FException: TException; FThreadInfoList: TJclStackTraceViewerThreadInfoList; - FModules: TModuleList; + FModules: TJclStackTraceViewerModuleInfoList; + procedure AddModuleListToStacks; public constructor Create; destructor Destroy; override; procedure AssignExceptionInfo(AExceptionInfo: TExceptionInfo); property ThreadInfoList: TJclStackTraceViewerThreadInfoList read FThreadInfoList; property Exception: TException read FException; - property Modules: TModuleList read FModules; + property Modules: TJclStackTraceViewerModuleInfoList read FModules; end; {$IFDEF UNITVERSIONING} @@ -131,11 +209,54 @@ FPrepared := False; end; +function TJclStackTraceViewerLocationInfoList.GetCount: Integer; +begin + Result := FItems.Count; +end; + function TJclStackTraceViewerLocationInfoList.GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; begin Result := TJclStackTraceViewerLocationInfo(FItems[AIndex]); end; +function TJclStackTraceViewerLocationInfoList.GetLocationItems(AIndex: Integer): IJclLocationInfo; +begin + FItems[AIndex].GetInterface(IJclLocationInfo, Result); +end; + +function TJclStackTraceViewerLocationInfoList.GetModuleInfoList: IJclModuleInfoList; +begin + Result := FModuleInfoList; +end; + +function TJclStackTraceViewerLocationInfoList.GetPrepared: Boolean; +begin + Result := FPrepared; +end; + +function TJclStackTraceViewerLocationInfoList.QueryInterface(const IID: TGUID; out Obj): HRESULT; +begin + if GetInterface(IID, Obj) then + Result := S_OK + else + Result := E_NOINTERFACE; +end; + +procedure TJclStackTraceViewerLocationInfoList.SetPrepared(AValue: Boolean); +begin + FPrepared := AValue; +end; + +function TJclStackTraceViewerLocationInfoList._AddRef: Integer; +begin + Result := -1; +end; + +function TJclStackTraceViewerLocationInfoList._Release: Integer; +begin + Result := -1; +end; + //=== { TJclStackTraceViewerThreadInfo } ===================================== function TJclStackTraceViewerThreadInfo.GetStack(const AIndex: Integer): TJclStackTraceViewerLocationInfoList; @@ -195,7 +316,7 @@ inherited Create; FException := TException.Create; FThreadInfoList := TJclStackTraceViewerThreadInfoList.Create; - FModules := TModuleList.Create; + FModules := TJclStackTraceViewerModuleInfoList.Create; end; destructor TJclStackTraceViewerExceptionInfo.Destroy; @@ -206,6 +327,16 @@ inherited Destroy; end; +procedure TJclStackTraceViewerExceptionInfo.AddModuleListToStacks; +var + I: Integer; +begin + for I := 0 to FThreadInfoList.Count - 1 do + FThreadInfoList[I].CreationStack.ModuleInfoList := FModules; + for I := 0 to FThreadInfoList.Count - 1 do + FThreadInfoList[I].Stack.ModuleInfoList := FModules; +end; + procedure TJclStackTraceViewerExceptionInfo.AssignExceptionInfo(AExceptionInfo: TExceptionInfo); var I: Integer; @@ -214,9 +345,251 @@ FThreadInfoList.Clear; for I := 0 to AExceptionInfo.ThreadInfoList.Count - 1 do FThreadInfoList.Add.Assign(AExceptionInfo.ThreadInfoList[I]); - FModules.Assign(AExceptionInfo.Modules); + for I := 0 to AExceptionInfo.Modules.Count - 1 do + FModules.Add.Assign(AExceptionInfo.Modules[I]); + AddModuleListToStacks; end; +{ TJclStackTraceViewerLocationInfo } + +function TJclStackTraceViewerLocationInfo.QueryInterface(const IID: TGUID; out Obj): HRESULT; +begin + if GetInterface(IID, Obj) then + Result := S_OK + else + Result := E_NOINTERFACE; +end; + +function TJclStackTraceViewerLocationInfo._AddRef: Integer; +begin + Result := -1; +end; + +function TJclStackTraceViewerLocationInfo._Release: Integer; +begin + Result := -1; +end; + +function TJclStackTraceViewerLocationInfo.GetAddress: Pointer; +begin + Result := Address; +end; + +function TJclStackTraceViewerLocationInfo.GetBinaryFileName: string; +begin + Result := BinaryFileName; +end; + +function TJclStackTraceViewerLocationInfo.GetFileName: string; +begin + Result := FFileName; +end; + +function TJclStackTraceViewerLocationInfo.GetFoundFile: Boolean; +begin + Result := FFoundFile; +end; + +function TJclStackTraceViewerLocationInfo.GetLineNumber: Integer; +begin + Result := LineNumber; +end; + +function TJclStackTraceViewerLocationInfo.GetLineNumberOffsetFromProcedureStart: Integer; +begin + Result := LineNumberOffsetFromProcedureStart; +end; + +function TJclStackTraceViewerLocationInfo.GetModuleName: string; +begin + Result := ModuleName; +end; + +function TJclStackTraceViewerLocationInfo.GetOffsetFromLineNumber: Integer; +begin + Result := OffsetFromLineNumber; +end; + +function TJclStackTraceViewerLocationInfo.GetOffsetFromProcName: Integer; +begin + Result := OffsetFromProcName; +end; + +function TJclStackTraceViewerLocationInfo.GetProcedureName: string; +begin + Result := ProcedureName; +end; + +function TJclStackTraceViewerLocationInfo.GetProjectName: string; +begin + Result := FProjectName; +end; + +function TJclStackTraceViewerLocationInfo.GetRevision: string; +begin + Result := FRevision; +end; + +function TJclStackTraceViewerLocationInfo.GetSourceName: string; +begin + Result := SourceName; +end; + +function TJclStackTraceViewerLocationInfo.GetSourceUnitName: string; +begin + Result := SourceUnitName; +end; + +function TJclStackTraceViewerLocationInfo.GetTranslatedLineNumber: Integer; +begin + Result := FTranslatedLineNumber; +end; + +function TJclStackTraceViewerLocationInfo.GetUnitVersionDateTime: TDateTime; +begin + Result := UnitVersionDateTime; +end; + +function TJclStackTraceViewerLocationInfo.GetUnitVersionExtra: string; +begin + Result := UnitVersionExtra; +end; + +function TJclStackTraceViewerLocationInfo.GetUnitVersionLogPath: string; +begin + Result := UnitVersionLogPath; +end; + +function TJclStackTraceViewerLocationInfo.GetUnitVersionRCSfile: string; +begin + Result := UnitVersionRCSfile; +end; + +function TJclStackTraceViewerLocationInfo.GetUnitVersionRevision: string; +begin + Result := UnitVersionRevision; +end; + +function TJclStackTraceViewerLocationInfo.GetVAddress: Pointer; +begin + Result := VAddress; +end; + +function TJclStackTraceViewerLocationInfo.GetValues: Integer; +begin + Result := 0; + if lievLocationInfo in Values then + Inc(Result, livLocationInfo); + if lievProcedureStartLocationInfo in Values then + Inc(Result, livProcedureStartLocationInfo); + if lievUnitVersionInfo in Values then + Inc(Result, livUnitVersionInfo); +end; + +procedure TJclStackTraceViewerLocationInfo.SetFileName(AValue: string); +begin + FFileName := AValue; +end; + +procedure TJclStackTraceViewerLocationInfo.SetFoundFile(AValue: Boolean); +begin + FFoundFile := AValue; +end; + +procedure TJclStackTraceViewerLocationInfo.SetProjectName(AValue: string); +begin + FProjectName := AValue; +end; + +procedure TJclStackTraceViewerLocationInfo.SetRevision(AValue: string); +begin + FRevision := AValue; +end; + +procedure TJclStackTraceViewerLocationInfo.SetTranslatedLineNumber(AValue: Integer); +begin + FTranslatedLineNumber := AValue; +end; + + +{ TJclStackTraceViewerModuleModuleInfo } + +function TJclStackTraceViewerModuleModuleInfo.GetBinFileVersion: string; +begin + Result := BinFileVersion; +end; + +function TJclStackTraceViewerModuleModuleInfo.GetModuleName: string; +begin + Result := ModuleName; +end; + +function TJclStackTraceViewerModuleModuleInfo.QueryInterface(const IID: TGUID; out Obj): HRESULT; +begin + if GetInterface(IID, Obj) then + Result := S_OK + else + Result := E_NOINTERFACE; +end; + +function TJclStackTraceViewerModuleModuleInfo._AddRef: Integer; +begin + Result := -1; +end; + +function TJclStackTraceViewerModuleModuleInfo._Release: Integer; +begin + Result := -1; +end; + +{ TJclStackTraceViewerModuleInfoList } + +function TJclStackTraceViewerModuleInfoList.Add: TJclStackTraceViewerModuleModuleInfo; +begin + FItems.Add(TJclStackTraceViewerModuleModuleInfo.Create); + Result := TJclStackTraceViewerModuleModuleInfo(FItems.Last); +end; + +constructor TJclStackTraceViewerModuleInfoList.Create; +begin + inherited Create; + FItems := TObjectList.Create; +end; + +destructor TJclStackTraceViewerModuleInfoList.Destroy; +begin + FItems.Free; + inherited Destroy; +end; + +function TJclStackTraceViewerModuleInfoList.GetModuleCount: Integer; +begin + Result := FItems.Count; +end; + +function TJclStackTraceViewerModuleInfoList.GetModuleInfo(AIndex: Integer): IJclModuleInfo; +begin + FItems[AIndex].GetInterface(IJclModuleInfo, Result); +end; + +function TJclStackTraceViewerModuleInfoList.QueryInterface(const IID: TGUID; out Obj): HRESULT; +begin + if GetInterface(IID, Obj) then + Result := S_OK + else + Result := E_NOINTERFACE; +end; + +function TJclStackTraceViewerModuleInfoList._AddRef: Integer; +begin + Result := -1; +end; + +function TJclStackTraceViewerModuleInfoList._Release: Integer; +begin + Result := -1; +end; + {$IFDEF UNITVERSIONING} initialization RegisterUnitVersion(HInstance, UnitVersioning); Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm 2009-05-12 21:09:24 UTC (rev 2759) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm 2009-05-17 19:16:32 UTC (rev 2760) @@ -4,6 +4,7 @@ Width = 372 Height = 320 TabOrder = 0 + OnResize = FrameResize object Splitter2: TSplitter Left = 145 Top = 0 @@ -49,6 +50,7 @@ Caption = 'Jump to code line' Hint = 'Jump to the code line of the selected stack line' OnExecute = acJumpToCodeLineExecute + OnUpdate = acJumpToCodeLineUpdate end object acLoadStack: TAction Caption = 'Load Stack' @@ -62,6 +64,7 @@ object acUpdateLocalInfo: TAction Caption = 'Update Local Info' OnExecute = acUpdateLocalInfoExecute + OnUpdate = acUpdateLocalInfoUpdate end end object OpenDialog1: TOpenDialog Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-05-12 21:09:24 UTC (rev 2759) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-05-17 19:16:32 UTC (rev 2760) @@ -43,11 +43,11 @@ JclStackTraceViewerClasses, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, JclStackTraceViewerOptions, JclStackTraceViewerAPIImpl, JclOtaUtils - , JclStrings, JclDebugXMLDeserializer, JclStackTraceViewerStackUtils + , JclStrings, JclDebugXMLDeserializer, JclStackTraceViewerStackUtils, JclStackTraceViewerAPI ; type - TfrmMain = class(TFrame) + TfrmMain = class(TFrame, IJclStackTraceViewerStackServices) ActionList1: TActionList; acJumpToCodeLine: TAction; acLoadStack: TAction; @@ -63,20 +63,26 @@ procedure tvChange(Sender: TObject; Node: TTreeNode); procedure acOptionsExecute(Sender: TObject); procedure acUpdateLocalInfoExecute(Sender: TObject); + procedure acJumpToCodeLineUpdate(Sender: TObject); + procedure acUpdateLocalInfoUpdate(Sender: TObject); + procedure FrameResize(Sender: TObject); private { Private declarations } FTreeViewLinkList: TObjectList; + FRootLink: IJclStackTraceViewerTreeViewLink; FThreadInfoList: TJclStackTraceViewerThreadInfoList; FExceptionInfo: TJclStackTraceViewerExceptionInfo; FStackFrame: TfrmStack; FModuleFrame: TfrmModule; FExceptionFrame: TfrmException; FThreadFrame: TfrmThread; + FFrameList: TList; FLastControl: TControl; + FLocationInfoProcessor: TJclLocationInfoProcessor; FOptions: TExceptionViewerOption; FRootDir: string; - procedure DoProgress(APos, AMax: Integer; const AText: string); - procedure PrepareStack(AStack: TJclStackTraceViewerLocationInfoList; AForce: Boolean = False); + procedure AddItemsToTree(ANode: TTreeNode; ALink: IJclStackTraceViewerTreeViewLink); + procedure DoProgress(AStatus: TLocationInfoProcessorProgressStatus; APos, AMax: Integer; const AText: string); procedure SetOptions(const Value: TExceptionViewerOption); public { Public declarations } @@ -84,6 +90,9 @@ destructor Destroy; override; procedure LoadWindowState(ADesktop: TCustomIniFile); procedure SaveWindowState(ADesktop: TCustomIniFile; AIsProject: Boolean); + function GetDefaultFrameClass(const AFrameClassID: Integer): TCustomFrameClass; + procedure ShowTree(ARootLink: IJclStackTraceViewerTreeViewLink); + procedure UnregisterFrameClass(AFrameClass: TCustomFrameClass); property Options: TExceptionViewerOption read FOptions write SetOptions; property RootDir: string read FRootDir write FRootDir; end; @@ -107,17 +116,237 @@ {$R *.dfm} type - TTreeViewLinkKind = (tvlkException, tvlkModuleList, tvlkThread, tvlkThreadStack, tvlkThreadCreationStack); - - TTreeViewLink = class(TObject) + TCustomTreeViewLink = class(TObject, IJclStackTraceViewerTreeViewLink) private + function GetCount: Integer; + function GetInternalItems(AIndex: Integer): TCustomTreeViewLink; + protected FData: TObject; - FKind: TTreeViewLinkKind; + FItems: TObjectList; + FOwnsData: Boolean; + FParent: TCustomTreeViewLink; + procedure DoShow(AFrame: TCustomFrame); virtual; + function GetFrameClass: TCustomFrameClass; virtual; + function GetItems(AIndex: Integer): IJclStackTraceViewerTreeViewLink; + function GetText: string; virtual; public + constructor Create(AParent: TCustomTreeViewLink); + destructor Destroy; override; + { IInterface } + function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + + procedure Show(AFrame: TCustomFrame); + property Count: Integer read GetCount; property Data: TObject read FData write FData; - property Kind: TTreeViewLinkKind read FKind write FKind; + property FrameClass: TCustomFrameClass read GetFrameClass; + property Items[AIndex: Integer]: TCustomTreeViewLink read GetInternalItems; default; + property OwnsData: Boolean read FOwnsData write FOwnsData; + property Parent: TCustomTreeViewLink read FParent; + property Text: string read GetText; end; + TThreadData = class(TObject) + private + FException: TException; + FModuleList: TJclStackTraceViewerModuleInfoList; + FThreadInfo: TJclStackTraceViewerThreadInfo; + public + property Exception: TException read FException write FException; + property ModuleList: TJclStackTraceViewerModuleInfoList read FModuleList write FModuleList; + property ThreadInfo: TJclStackTraceViewerThreadInfo read FThreadInfo write FThreadInfo; + end; + + TStackData = class(TObject) + private + FModuleList: TJclStackTraceViewerModuleInfoList; + FStack: TJclStackTraceViewerLocationInfoList; + public + property ModuleList: TJclStackTraceViewerModuleInfoList read FModuleList write FModuleList; + property Stack: TJclStackTraceViewerLocationInfoList read FStack write FStack; + end; + + TTreeViewLinkKind = (tvlkException, tvlkModuleList, tvlkThread, tvlkThreadStack, tvlkThreadCreationStack, tvlkRoot); + + TDefaultTreeViewLink = class(TCustomTreeViewLink) + private + FKind: TTreeViewLinkKind; + protected + procedure DoShow(AFrame: TCustomFrame); override; + function GetFrameClass: TCustomFrameClass; override; + function GetText: string; override; + public + constructor Create(AParent: TCustomTreeViewLink; AKind: TTreeViewLinkKind); + function Add(AKind: TTreeViewLinkKind): TDefaultTreeViewLink; + property Kind: TTreeViewLinkKind read FKind; + end; + + TRootTreeViewLink = class(TDefaultTreeViewLink) + constructor Create; + end; + +constructor TCustomTreeViewLink.Create(AParent: TCustomTreeViewLink); +begin + inherited Create; + FData := nil; + FItems := TObjectList.Create; + FOwnsData := False; + FParent := AParent; +end; + +destructor TCustomTreeViewLink.Destroy; +begin + if FOwnsData then + FData.Free; + FItems.Free; + inherited Destroy; +end; + +procedure TCustomTreeViewLink.DoShow(AFrame: TCustomFrame); +begin +// +end; + +function TCustomTreeViewLink.GetCount: Integer; +begin + Result := FItems.Count; +end; + +function TCustomTreeViewLink.GetFrameClass: TCustomFrameClass; +begin + Result := nil; +end; + +function TCustomTreeViewLink.GetInternalItems(AIndex: Integer): TCustomTreeViewLink; +begin + Result := TCustomTreeViewLink(FItems[AIndex]); +end; + +function TCustomTreeViewLink.GetItems(AIndex: Integer): IJclStackTraceViewerTreeViewLink; +begin + Result := Items[AIndex]; +end; + +function TCustomTreeViewLink.GetText: string; +begin + Result := ''; +end; + +function TCustomTreeViewLink.QueryInterface(const IID: TGUID; out Obj): HRESULT; +begin + if GetInterface(IID, Obj) then + Result := S_OK + else + Result := E_NOINTERFACE; +end; + +procedure TCustomTreeViewLink.Show(AFrame: TCustomFrame); +begin + DoShow(AFrame); +end; + +function TCustomTreeViewLink._AddRef: Integer; +begin + Result := -1; +end; + +function TCustomTreeViewLink._Release: Integer; +begin + Result := -1; +end; + +constructor TDefaultTreeViewLink.Create(AParent: TCustomTreeViewLink; AKind: TTreeViewLinkKind); +begin + inherited Create(AParent); + FKind := AKind; +end; + +function TDefaultTreeViewLink.Add(AKind: TTreeViewLinkKind): TDefaultTreeViewLink; +begin + FItems.Add(TDefaultTreeViewLink.Create(Self, AKind)); + Result := TDefaultTreeViewLink(FItems.Last); +end; + +procedure TDefaultTreeViewLink.DoShow(AFrame: TCustomFrame); +var + StackData: TStackData; + ThreadFrame: TfrmThread; + ThreadInfo: TJclStackTraceViewerThreadInfo; + ThreadData: TThreadData; +begin + case FKind of + tvlkModuleList: if AFrame is TfrmModule then + TfrmModule(AFrame).ModuleList := TModuleList(Data); + tvlkThread: if AFrame is TfrmThread then + begin + ThreadData := TThreadData(Data); + ThreadFrame := TfrmThread(AFrame); + ThreadInfo := ThreadData.ThreadInfo; + StackTraceViewerStackProcessorServices.ModuleList := ThreadData.ModuleList; + StackTraceViewerStackProcessorServices.PrepareLocationInfoList(ThreadInfo.CreationStack, False); + if tioCreationStack in ThreadInfo.Values then + ThreadFrame.CreationStackList := ThreadInfo.CreationStack + else + ThreadFrame.CreationStackList := nil; + ThreadFrame.Exception := ThreadData.Exception; + StackTraceViewerStackProcessorServices.PrepareLocationInfoList(ThreadInfo.Stack, False); + if tioStack in ThreadInfo.Values then + ThreadFrame.StackList := ThreadInfo.Stack + else + ThreadFrame.StackList := nil; + end; + tvlkException: if AFrame is TfrmException then + TfrmException(AFrame).Exception := TException(Data); + tvlkThreadStack, tvlkThreadCreationStack: if AFrame is TfrmStack then + begin + StackData := TStackData(Data); + StackTraceViewerStackProcessorServices.ModuleList := StackData.ModuleList; + StackTraceViewerStackProcessorServices.PrepareLocationInfoList(StackData.Stack, False); + TfrmStack(AFrame).StackList := StackData.Stack; + end; + end; +end; + +function TDefaultTreeViewLink.GetFrameClass: TCustomFrameClass; +begin + case FKind of + tvlkModuleList: Result := TfrmModule; + tvlkThread: Result := TfrmThread; + tvlkException: Result := TfrmException; + tvlkThreadStack, tvlkThreadCreationStack: Result := TfrmStack; + else + Result := nil; + end; +end; + +function TDefaultTreeViewLink.GetText: string; +begin + Result := ''; + case FKind of + tvlkModuleList: if Data is TJclStackTraceViewerModuleInfoList then + Result := Format('Module List [%d]', [TJclStackTraceViewerModuleInfoList(Data).GetModuleCount]); + tvlkThread: if Data is TThreadData then + begin + if tioIsMainThread in TThreadData(Data).ThreadInfo.Values then + Result := '[MainThread]' + else + Result := ''; + Result := Format('ID: %d %s', [TThreadData(Data).ThreadInfo.ThreadID, Result]); + end; + tvlkException: Result := 'Exception'; + tvlkThreadStack: if Data is TStackData then + Result := Format('Stack [%d]', [TStackData(Data).Stack.Count]); + tvlkThreadCreationStack: if Data is TStackData then + Result := Format('CreationStack [%d]', [TStackData(Data).Stack.Count]); + end; +end; + +constructor TRootTreeViewLink.Create; +begin + inherited Create(nil, tvlkRoot); +end; + procedure TfrmMain.LoadWindowState(ADesktop: TCustomIniFile); begin if Assigned(ADesktop) then @@ -128,29 +357,6 @@ end; end; -procedure TfrmMain.PrepareStack(AStack: TJclStackTraceViewerLocationInfoList; AForce: Boolean = False); -var - LocationInfoProcessor: TJclLocationInfoProcessor; -begin - LocationInfoProcessor := TJclLocationInfoProcessor.Create; - try - LocationInfoProcessor.ModuleList := FExceptionInfo.Modules; - LocationInfoProcessor.OnProgress := DoProgress; - LocationInfoProcessor.Options := FOptions; - LocationInfoProcessor.RootDir := RootDir; - PB.Max := 100; - PB.Position := 0; - PB.Visible := True; - try - LocationInfoProcessor.PrepareLocationInfoList(AStack, AForce); - finally - PB.Visible := False; - end; - finally - LocationInfoProcessor.Free; - end; -end; - procedure TfrmMain.SaveWindowState(ADesktop: TCustomIniFile; AIsProject: Boolean); begin if Assigned(ADesktop) then @@ -178,58 +384,53 @@ end; end; +procedure TfrmMain.ShowTree(ARootLink: IJclStackTraceViewerTreeViewLink); +begin + FRootLink := ARootLink; + FStackFrame.StackList := nil; + tv.Selected := nil; + tv.Items.Clear; + if Assigned(FLastControl) then + begin + FLastControl.Hide; + FLastControl := nil; + end; + if Assigned(ARootLink) then + AddItemsToTree(nil, ARootLink); +end; + procedure TfrmMain.tvChange(Sender: TObject; Node: TTreeNode); var - TreeViewLink: TTreeViewLink; + TreeViewLink: IJclStackTraceViewerTreeViewLink; NewControl: TControl; - ThreadInfo: TJclStackTraceViewerThreadInfo; - ForceStackUpdate: Boolean; + I: Integer; + Frame: TCustomFrame; begin inherited; NewControl := nil; if Assigned(tv.Selected) and Assigned(tv.Selected.Data) and - (TObject(tv.Selected.Data) is TTreeViewLink) then + (IUnknown(tv.Selected.Data).QueryInterface(IJclStackTraceViewerTreeViewLink, TreeViewLink) = S_OK) then begin - ForceStackUpdate := Sender = acUpdateLocalInfo; - TreeViewLink := TTreeViewLink(tv.Selected.Data); - if (TreeViewLink.Kind = tvlkModuleList) and (TreeViewLink.Data is TModuleList) then + if Assigned(TreeViewLink.FrameClass) then begin - NewControl := FModuleFrame; - FModuleFrame.ModuleList := TModuleList(TreeViewLink.Data); - end - else - if (TreeViewLink.Kind = tvlkThread) and (TreeViewLink.Data is TJclStackTraceViewerThreadInfo) then - begin - ThreadInfo := TJclStackTraceViewerThreadInfo(TreeViewLink.Data); - NewControl := FThreadFrame; - PrepareStack(ThreadInfo.CreationStack, ForceStackUpdate); - if tioCreationStack in ThreadInfo.Values then - FThreadFrame.CreationStackList := ThreadInfo.CreationStack - else - FThreadFrame.CreationStackList := nil; - if TreeViewLink.Data = FThreadInfoList[0] then - FThreadFrame.Exception := FExceptionInfo.Exception - else - FThreadFrame.Exception := nil; - PrepareStack(ThreadInfo.Stack, ForceStackUpdate); - if tioStack in ThreadInfo.Values then - FThreadFrame.StackList := ThreadInfo.Stack - else - FThreadFrame.StackList := nil; - end - else - if (TreeViewLink.Kind = tvlkException) and (TreeViewLink.Data is TException) then - begin - NewControl := FExceptionFrame; - FExceptionFrame.Exception := TException(TreeViewLink.Data); - end - else - if (TreeViewLink.Kind in [tvlkThreadStack, tvlkThreadCreationStack]) and (TreeViewLink.Data is TJclStackTraceViewerLocationInfoList) then - begin - PrepareStack(TJclStackTraceViewerLocationInfoList(TreeViewLink.Data), ForceStackUpdate); - FStackFrame.StackList := TJclStackTraceViewerLocationInfoList(TreeViewLink.Data); - NewControl := FStackFrame; + for I := 0 to FFrameList.Count - 1 do + if TObject(FFrameList[I]).ClassType = TreeViewLink.FrameClass then + begin + NewControl := TControl(FFrameList[I]); + Break; + end; + if not Assigned(NewControl) then + begin + FFrameList.Add(TreeViewLink.FrameClass.Create(Self)); + Frame := TCustomFrame(FFrameList.Last); + Frame.Parent := Self; + Frame.Align := alClient; + Frame.Visible := False; + NewControl := Frame; + end; end; + if Assigned(NewControl) and (NewControl is TCustomFrame) then + TreeViewLink.DoShow(TCustomFrame(NewControl)); end; if Assigned(NewControl) then NewControl.Show; @@ -239,13 +440,33 @@ FLastControl := NewControl; end; +procedure TfrmMain.UnregisterFrameClass(AFrameClass: TCustomFrameClass); +var + I, Idx: Integer; + Frame: TCustomFrame; +begin + Idx := -1; + for I := 0 to FFrameList.Count - 1 do + if TObject(FFrameList[I]).ClassType = AFrameClass then + begin + Idx := I; + Break; + end; + if Idx <> -1 then + begin + Frame := TCustomFrame(FFrameList[Idx]); + Frame.Free; + FFrameList.Delete(Idx); + end; +end; + procedure TfrmMain.acJumpToCodeLineExecute(Sender: TObject); +var + StackTraceViewerStackSelection: IJclStackTraceViewerStackSelection; begin - if Assigned(FThreadFrame) and FThreadFrame.Visible and Assigned(FThreadFrame.Selected) then - JumpToCode(FThreadFrame.Selected) - else - if Assigned(FStackFrame) and FStackFrame.Visible and Assigned(FStackFrame.Selected) then - JumpToCode(FStackFrame.Selected); + if Assigned(FLastControl) and + (FLastControl.GetInterface(IJclStackTraceViewerStackSelection, StackTraceViewerStackSelection)) then + JumpToCode(StackTraceViewerStackSelection.Selected); end; constructor TfrmMain.Create(AOwner: TComponent); @@ -254,30 +475,36 @@ FExceptionInfo := TJclStackTraceViewerExceptionInfo.Create; FThreadInfoList := FExceptionInfo.ThreadInfoList; FTreeViewLinkList := TObjectList.Create; + FRootLink := nil; + FFrameList := TList.Create; FStackFrame := TfrmStack.Create(Self); + FFrameList.Add(FStackFrame); FStackFrame.Name := 'StackFrameSingle'; FStackFrame.Parent := Self; FStackFrame.Align := alClient; FStackFrame.Visible := False; FModuleFrame := TfrmModule.Create(Self); + FFrameList.Add(FModuleFrame); FModuleFrame.Parent := Self; FModuleFrame.Align := alClient; FModuleFrame.Visible := False; FExceptionFrame := TfrmException.Create(Self); + FFrameList.Add(FExceptionFrame); FExceptionFrame.Name := 'ExceptionFrameSingle'; FExceptionFrame.Parent := Self; FExceptionFrame.Align := alClient; FExceptionFrame.Visible := False; FThreadFrame := TfrmThread.Create(Self); + FFrameList.Add(FThreadFrame); FThreadFrame.Parent := Self; FThreadFrame.Align := alClient; FThreadFrame.Visible := False; PB.Parent := StatusBar; - PB.SetBounds(2, 3, 96, 14); + PB.SetBounds(StatusBar.Panels[0].Width + 2, 3, 96, 14); FOptions := TExceptionViewerOption.Create; if Assigned(StackTraceViewerExpert) then @@ -286,17 +513,38 @@ RootDir := StackTraceViewerExpert.RootDir; end; + FLocationInfoProcessor := TJclLocationInfoProcessor.Create; + FLocationInfoProcessor.OnProgress := DoProgress; + FLocationInfoProcessor.Options := Options; + FLocationInfoProcessor.RootDir := RootDir; + StackTraceViewerStackProcessorServices := FLocationInfoProcessor; + StackTraceViewerStackServices := Self; + FLastControl := nil; end; destructor TfrmMain.Destroy; begin + StackTraceViewerStackProcessorServices := nil; + FStackFrame.StackList := nil; + FLocationInfoProcessor.Free; FOptions.Free; FTreeViewLinkList.Free; + FRootLink := nil; + FFrameList.Free; FExceptionInfo.Free; inherited Destroy; end; +procedure TfrmMain.acJumpToCodeLineUpdate(Sender: TObject); +var + StackTraceViewerStackSelection: IJclStackTraceViewerStackSelection; +begin + acJumpToCodeLine.Enabled := Assigned(FLastControl) and + (FLastControl.GetInterface(IJclStackTraceViewerStackSelection, StackTraceViewerStackSelection)) and + Assigned(StackTraceViewerStackSelection.Selected); +end; + procedure TfrmMain.acLoadStackExecute(Sender: TObject); var SS: TStringStream; @@ -304,16 +552,18 @@ FS: TFileStream; {$ENDIF ~COMPILER12_UP} I: Integer; - S: string; - tn, tns: TTreeNode; - TreeViewLink: TTreeViewLink; + ThreadTreeViewLink, TreeViewLink: TDefaultTreeViewLink; XMLDeserializer: TJclXMLDeserializer; SerializeExceptionInfo: TExceptionInfo; + RootTreeViewLink: TRootTreeViewLink; + ThreadData: TThreadData; + StackData: TStackData; begin inherited; if OpenDialog1.Execute then begin FStackFrame.StackList := nil; + FRootLink := nil; tv.Selected := nil; tv.Items.Clear; FTreeViewLinkList.Clear; @@ -343,63 +593,53 @@ SerializeExceptionInfo.Free; end; - FTreeViewLinkList.Add(TTreeViewLink.Create); - TreeViewLink := TTreeViewLink(FTreeViewLinkList.Last); - TreeViewLink.Kind := tvlkModuleList; + RootTreeViewLink := TRootTreeViewLink.Create; + + TreeViewLink := RootTreeViewLink.Add(tvlkModuleList); TreeViewLink.Data := FExceptionInfo.Modules; - tn := tv.Items.Add(nil, Format('Module List [%d]', [FExceptionInfo.Modules.Count])); - tn.Data := TreeViewLink; if FThreadInfoList.Count > 0 then begin for I := 0 to FThreadInfoList.Count - 1 do begin - if tioIsMainThread in FThreadInfoList[I].Values then - S := '[MainThread]' - else - S := ''; - S := Format('ID: %d %s', [FThreadInfoList[I].ThreadID, S]); + //FTreeViewLinkList.Add(TDefaultTreeViewLink.Create(tvlkThread));//TODO + ThreadTreeViewLink := RootTreeViewLink.Add(tvlkThread); + ThreadTreeViewLink.OwnsData := True; + ThreadTreeViewLink.Data := TThreadData.Create; + ThreadData := TThreadData(ThreadTreeViewLink.Data); + ThreadData.Exception := FExceptionInfo.Exception; + ThreadData.ModuleList := FExceptionInfo.Modules; + ThreadData.ThreadInfo := FThreadInfoList[I]; - FTreeViewLinkList.Add(TTreeViewLink.Create); - TreeViewLink := TTreeViewLink(FTreeViewLinkList.Last); - TreeViewLink.Kind := tvlkThread; - TreeViewLink.Data := FThreadInfoList[I]; - tn := tv.Items.Add(nil, S); - tn.Data := TreeViewLink; - if I = 0 then begin - FTreeViewLinkList.Add(TTreeViewLink.Create); - TreeViewLink := TTreeViewLink(FTreeViewLinkList.Last); - TreeViewLink.Kind := tvlkException; + TreeViewLink := ThreadTreeViewLink.Add(tvlkException); TreeViewLink.Data := FExceptionInfo.Exception; - tns := tv.Items.AddChild(tn, 'Exception'); - tns.Data := TreeViewLink; end; if tioStack in FThreadInfoList[I].Values then begin - FTreeViewLinkList.Add(TTreeViewLink.Create); - TreeViewLink := TTreeViewLink(FTreeViewLinkList.Last); - TreeViewLink.Kind := tvlkThreadStack; - TreeViewLink.Data := FThreadInfoList[I].Stack; - tns := tv.Items.AddChild(tn, Format('Stack [%d]', [FThreadInfoList[I].Stack.Count])); - tns.Data := TreeViewLink; + TreeViewLink := ThreadTreeViewLink.Add(tvlkThreadStack); + TreeViewLink.OwnsData := True; + TreeViewLink.Data := TStackData.Create; + StackData := TStackData(TreeViewLink.Data); + StackData.ModuleList := FExceptionInfo.Modules; + StackData.Stack := FThreadInfoList[I].Stack; end; if tioCreationStack in FThreadInfoList[I].Values then begin - FTreeViewLinkList.Add(TTreeViewLink.Create); - TreeViewLink := TTreeViewLink(FTreeViewLinkList.Last); - TreeViewLink.Kind := tvlkThreadCreationStack; - TreeViewLink.Data := FThreadInfoList[I].CreationStack; - tns := tv.Items.AddChild(tn, Format('CreationStack [%d]', [FThreadInfoList[I].CreationStack.Count])); - tns.Data := TreeViewLink; + TreeViewLink := ThreadTreeViewLink.Add(tvlkThreadCreationStack); + TreeViewLink.OwnsData := True; + TreeViewLink.Data := TStackData.Create; + StackData := TStackData(TreeViewLink.Data); + StackData.ModuleList := FExceptionInfo.Modules; + StackData.Stack := FThreadInfoList[I].CreationStack; end; - if FOptions.ExpandTreeView then - tn.Expanded := True; end; end; + FRootLink := RootTreeViewLink; + AddItemsToTree(nil, RootTreeViewLink); finally SS.Free; end; @@ -413,19 +653,83 @@ end; procedure TfrmMain.acUpdateLocalInfoExecute(Sender: TObject); +var + I: Integer; + PreparableStackFrame: IJclStackTraceViewerPreparableStackFrame; + PreparedLocationInfoList: IJclPreparedLocationInfoList; begin inherited; - tvChange(Sender, nil); + if Assigned(StackTraceViewerStackProcessorServices) and Assigned(FLastControl) and + (FLastControl.GetInterface(IJclStackTraceViewerPreparableStackFrame, PreparableStackFrame)) then + begin + for I := 0 to PreparableStackFrame.PreparableLocationInfoListCount - 1 do + begin + PreparedLocationInfoList := PreparableStackFrame.PreparableLocationInfoList[I]; + if Assigned(PreparedLocationInfoList) then + begin + StackTraceViewerStackProcessorServices.ModuleList := PreparedLocationInfoList.ModuleInfoList; + StackTraceViewerStackProcessorServices.PrepareLocationInfoList(PreparedLocationInfoList, True); + end; + end; + end; end; -procedure TfrmMain.DoProgress(APos, AMax: Integer; const AText: string); +procedure TfrmMain.acUpdateLocalInfoUpdate(Sender: TObject); +var + PreparableStackFrame: IJclStackTraceViewerPreparableStackFrame; begin + acUpdateLocalInfo.Enabled := Assigned(StackTraceViewerStackProcessorServices) and Assigned(FLastControl) and + (FLastControl.GetInterface(IJclStackTraceViewerPreparableStackFrame, PreparableStackFrame)) and + (PreparableStackFrame.PreparableLocationInfoListCount > 0); +end; + +procedure TfrmMain.AddItemsToTree(ANode: TTreeNode; ALink: IJclStackTraceViewerTreeViewLink); +var + I: Integer; + ChildNode: TTreeNode; +begin + for I := 0 to ALink.Count - 1 do + begin + if ANode = nil then + ChildNode := tv.Items.Add(nil, ALink[I].Text) + else + ChildNode := tv.Items.AddChild(ANode, ALink[I].Text); + ChildNode.Data := Pointer(ALink[I]); + if ALink[I].Count > 0 then + AddItemsToTree(ChildNode, ALink[I]); + end; + if FOptions.ExpandTreeView and Assigned(ANode) then + ANode.Expanded := True; +end; + +procedure TfrmMain.DoProgress(AStatus: TLocationInfoProcessorProgressStatus; APos, AMax: Integer; const AText: string); +begin + if AStatus = lippsStart then + PB.Visible := True + else + if AStatus = lippsFinished then + PB.Visible := False; PB.Max := AMax; PB.Position := APos; - StatusBar.Panels[1].Text := AText; + StatusBar.Panels[0].Text := AText; StatusBar.Update; end; +procedure TfrmMain.FrameResize(Sender: TObject); +begin + StatusBar.Panels[0].Width := Width - 100; + PB.SetBounds(StatusBar.Panels[0].Width + 2, 3, 96, 14); +end; + +function TfrmMain.GetDefaultFrameClass(const AFrameClassID: Integer): TCustomFrameClass; +begin + case AFrameClassID of + dfStack: Result := TfrmStack; + else + Result := nil; + end; +end; + {$IFDEF UNITVERSIONING} initialization RegisterUnitVersion(HInstance, UnitVersioning); Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackFrame.pas 2009-05-12 21:09:24 UTC (rev 2759) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackFrame.pas 2009-05-17 19:16:32 UTC (rev 2760) @@ -38,26 +38,29 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - JclDebug, JclStackTraceViewerClasses, StackCodeUtils; + JclDebug, JclStackTraceViewerAPI, StackCodeUtils; type - TfrmStack = class(TFrame) + TfrmStack = class(TFrame, IJclStackTraceViewerStackFrame, IJclStackTraceViewerPreparableStackFrame, + IJclStackTraceViewerStackSelection) lv: TListView; procedure lvDblClick(Sender: TObject); procedure lvChange(Sender: TObject; Item: TListItem; Change: TItemChange); private { Private declarations } - FStackList: TJclStackTraceViewerLocationInfoList; + FStackList: IJclLocationInfoList; FOnSelectStackLine: TNotifyEvent; procedure DoSelectStackLine; - procedure SetStackList(const Value: TJclStackTraceViewerLocationInfoList); - function GetSelected: TJclStackTraceViewerLocationInfo; + function GetStackList: IJclLocationInfoList; + procedure SetStackList(const Value: IJclLocationInfoList); + function GetPreparableLocationInfoListCount: Integer; + function GetPreparableLocationInfoList(AIndex: Integer): IJclPreparedLocationInfoList; + function GetSelected: IJclLocationInfo; public { Public declarations } procedure LoadState(AIni: TCustomIniFile; const ASection, APrefix: string); procedure SaveState(AIni: TCustomIniFile; const ASection, APrefix: string); - property StackList: TJclStackTraceViewerLocationInfoList read FStackList write SetStackList; - property Selected: TJclStackTraceViewerLocationInfo read GetSelected; + property StackList: IJclLocationInfoList read FStackList write SetStackList; property OnSelectStackLine: TNotifyEvent read FOnSelectStackLine write FOnSelectStackLine; end; @@ -83,14 +86,39 @@ FOnSelectStackLine(Self); end; -function TfrmStack.GetSelected: TJclStackTraceViewerLocationInfo; +function TfrmStack.GetPreparableLocationInfoList(AIndex: Integer): IJclPreparedLocationInfoList; begin - if Assigned(lv.Selected) and Assigned(lv.Selected.Data) and (TObject(lv.Selected.Data) is TJclStackTraceViewerLocationInfo) then - Result := TJclStackTraceViewerLocationInfo(lv.Selected.Data) + if AIndex = 0 then + begin + if FStackList.QueryInterface(IJclPreparedLocationInfoList, Result) <> S_OK then + Result := nil; + end else Result := nil; end; +function TfrmStack.GetPreparableLocationInfoListCount: Integer; +var + Dummy: IJclPreparedLocationInfoList; +begin + if Assigned(FStackList) and (FStackList.QueryInterface(IJclPreparedLocationInfoList, Dummy) = S_OK) then + Result := 1 + else + Result := 0; +end; + +function TfrmStack.GetSelected: IJclLocationInfo; +begin + if not (Assigned(lv.Selected) and Assigned(lv.Selected.Data) and + (IUnknown(lv.Selected.Data).QueryInterface(IJclLocationInfo, Result) = S_OK)) then + Result := nil; +end; + +function TfrmStack.GetStackList: IJclLocationInfoList; +begin + Result := FStackList; +end; + procedure TfrmStack.LoadState(AIni: TCustomIniFile; const ASection, APrefix: string); var I: Integer; @@ -107,7 +135,7 @@ procedure TfrmStack.lvDblClick(Sender: TObject); begin - JumpToCode(Selected); + JumpToCode(GetSelected); end; procedure TfrmStack.SaveState(AIni: TCustomIniFile; const ASection, APrefix: string); @@ -118,11 +146,12 @@ AIni.WriteInteger(ASection, Format(APrefix + 'ColumnWidth%d', [I]), lv.Columns.Items[I].Width); end; -procedure TfrmStack.SetStackList(const Value: TJclStackTraceViewerLocationInfoList); +procedure TfrmStack.SetStackList(const Value: IJclLocationInfoList); var I: Integer; ListItem: TListItem; S: string; + PreparedLocationInfo: IJclPreparedLocationInfo; begin FStackList := Value; @@ -142,23 +171,32 @@ else S := ''; ListItem.SubItems.Add(S); - if lievProcedureStartLocationInfo in FStackList[I].Values then + if FStackList[I].Values and livProcedureStartLocationInfo <> 0 then S := IntToStr(FStackList[I].LineNumberOffsetFromProcedureStart) else S := ''; ListItem.SubItems.Add(S); - ListItem.SubItems.Add(FStackList[I].Revision); - if FStackList[I].ProjectName <> '' then - S := ExtractFileName(FStackList[I].ProjectName) + if FStackList[I].QueryInterface(IJclPreparedLocationInfo, PreparedLocationInfo) = S_OK then + begin + ListItem.SubItems.Add(PreparedLocationInfo.Revision); + if PreparedLocationInfo.ProjectName <> '' then + S := ExtractFileName(PreparedLocationInfo.ProjectName) + else + S := ExtractFileName(PreparedLocationInfo.FileName); + ListItem.SubItems.Add(S); + if PreparedLocationInfo.TranslatedLineNumber > 0 then + S := IntToStr(PreparedLocationInfo.TranslatedLineNumber) + else + S := ''; + ListItem.SubItems.Add(S); + end else - S := ExtractFileName(FStackList[I].FileName); - ListItem.SubItems.Add(S); - if FStackList[I].TranslatedLineNumber > 0 then - S := IntToStr(FStackList[I].TranslatedLineNumber) - else - S := ''; - ListItem.SubItems.Add(S); - ListItem.Data := FStackList[I]; + begin + ListItem.SubItems.Add(''); + ListItem.SubItems.Add(''); + ListItem.SubItems.Add(''); + end; + ListItem.Data := Pointer(FStackList[I]); end; finally lv.Items.EndUpdate; Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackUtils.pas 2009-05-12 21:09:24 UTC (rev 2759) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackUtils.pas 2009-05-17 19:16:32 UTC (rev 2760) @@ -40,21 +40,30 @@ {$ENDIF UNITVERSIONING} JclStrings, JclFileUtils, JclDebugSerialization, JclStackTraceViewerClasses, StackCodeUtils, JclStackTraceViewerOptions, - JclStackTraceViewerAPIImpl; + JclStackTraceViewerAPIImpl, JclStackTraceViewerAPI; type - TJclLocationInfoProgressEvent = procedure(APos, AMax: Integer; const AText: string) of object; + TLocationInfoProcessorProgressStatus = (lippsUnknown, lippsStart, lippsFinished); - TJclLocationInfoProcessor = class(TObject) + TJclLocationInfoProgressEvent = procedure(AStatus: TLocationInfoProcessorProgressStatus; + APos, AMax: Integer; const AText: string) of object; + + TJclLocationInfoProcessor = class(TObject, IJclStackTraceViewerStackProcessorServices) private - FModuleList: TModuleList; + FModuleList: IJclModuleInfoList; FOnProgress: TJclLocationInfoProgressEvent; FOptions: TExceptionViewerOption; FRootDir: string; - procedure DoProgress(APos, AMax: Integer; const AText: string); + procedure DoProgress(AStatus: TLocationInfoProcessorProgressStatus; APos, AMax: Integer; const AText: string); public - procedure PrepareLocationInfoList(AStack: TJclStackTraceViewerLocationInfoList; AForce: Boolean = False); - property ModuleList: TModuleList read FModuleList write FModuleList; + { IInterface } + function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + { IJclStackTraceViewerStackProcessorServices } + function GetModuleInfoList: IJclModuleInfoList; + procedure PrepareLocationInfoList(AStack: IJclPreparedLocationInfoList; AForce: Boolean = False); + procedure SetModuleInfoList(AValue: IJclModuleInfoList); property OnProgress: TJclLocationInfoProgressEvent read FOnProgress write FOnProgress; property Options: TExceptionViewerOption read FOptions write FOptions; property RootDir: string read FRootDir write FRootDir; @@ -222,24 +231,24 @@ type TFindMapping = class(TObject) private - FItems: TList; + FItems: TInterfaceList; function GetCount: Integer; - function GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; + function GetItems(AIndex: Integer): IJclPreparedLocationInfo; public FoundFile: Boolean; FileName: string; ProjectName: string; constructor Create; destructor Destroy; override; - procedure Add(AStackViewItem: TJclStackTraceViewerLocationInfo); + procedure Add(AStackViewItem: IJclPreparedLocationInfo); property Count: Integer read GetCount; - property Items[AIndex: Integer]: TJclStackTraceViewerLocationInfo read GetItems; default; + property Items[AIndex: Integer]: IJclPreparedLocationInfo read GetItems; default; end; constructor TFindMapping.Create; begin inherited Create; - FItems := TList.Create; + FItems := TInterfaceList.Create; end; destructor TFindMapping.Destroy; @@ -248,7 +257,7 @@ inherited Destroy; end; -procedure TFindMapping.Add(AStackViewItem: TJclStackTraceViewerLocationInfo); +procedure TFindMapping.Add(AStackViewItem: IJclPreparedLocationInfo); begin FItems.Add(AStackViewItem); end; @@ -258,22 +267,27 @@ Result := FItems.Count; end; -function TFindMapping.GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; +function TFindMapping.GetItems(AIndex: Integer): IJclPreparedLocationInfo; begin -... [truncated message content] |
From: <usc...@us...> - 2009-05-12 21:09:33
|
Revision: 2759 http://jcl.svn.sourceforge.net/jcl/?rev=2759&view=rev Author: uschuster Date: 2009-05-12 21:09:24 +0000 (Tue, 12 May 2009) Log Message: ----------- fixed bug with thread hooks (RegisteredThreadList wasn't assigned) Modified Paths: -------------- branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas Modified: branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas =================================================================== --- branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas 2009-05-11 14:41:24 UTC (rev 2758) +++ branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas 2009-05-12 21:09:24 UTC (rev 2759) @@ -5442,12 +5442,12 @@ begin Result := Kernel32_CreateThread(SecurityAttributes, StackSize, ThreadFunc, Parameter, CreationFlags, ThreadId); if Result <> 0 then - RegisteredThreadList.RegisterThreadID(ThreadId); + JclDebugThreadList.RegisterThreadID(ThreadId); end; procedure HookedExitThread(ExitCode: Integer); stdcall; begin - RegisteredThreadList.UnregisterThreadID(GetCurrentThreadID); + JclDebugThreadList.UnregisterThreadID(GetCurrentThreadID); Kernel32_ExitThread(ExitCode); end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2009-05-11 14:41:28
|
Revision: 2758 http://jcl.svn.sourceforge.net/jcl/?rev=2758&view=rev Author: obones Date: 2009-05-11 14:41:24 +0000 (Mon, 11 May 2009) Log Message: ----------- Overflow prevention Modified Paths: -------------- trunk/jcl/source/common/JclAnsiStrings.pas Modified: trunk/jcl/source/common/JclAnsiStrings.pas =================================================================== --- trunk/jcl/source/common/JclAnsiStrings.pas 2009-05-09 10:34:22 UTC (rev 2757) +++ trunk/jcl/source/common/JclAnsiStrings.pas 2009-05-11 14:41:24 UTC (rev 2758) @@ -1034,7 +1034,7 @@ while Index <= Len do begin Start := Index; - while not (Value[Index] in [#10, #13]) do + while (Index <= Len) and not (Value[Index] in [#10, #13]) do Inc(Index); S := Copy(Value, Start, Index - Start); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2009-05-09 10:34:31
|
Revision: 2757 http://jcl.svn.sourceforge.net/jcl/?rev=2757&view=rev Author: ahuser Date: 2009-05-09 10:34:22 +0000 (Sat, 09 May 2009) Log Message: ----------- Fixed compile error Modified Paths: -------------- trunk/jcl/experts/common/JclOtaWizardForm.pas Modified: trunk/jcl/experts/common/JclOtaWizardForm.pas =================================================================== --- trunk/jcl/experts/common/JclOtaWizardForm.pas 2009-05-09 10:05:13 UTC (rev 2756) +++ trunk/jcl/experts/common/JclOtaWizardForm.pas 2009-05-09 10:34:22 UTC (rev 2757) @@ -175,7 +175,7 @@ procedure TJclWizardForm.FormCreate(Sender: TObject); begin {$IFDEF COMPILER7_UP} - PanelTitle.ParentBackground = False; + PanelTitle.ParentBackground := False; {$ENDIF COMPILER7_UP} ActionPrevious.Caption := RsPrevious; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2009-05-09 10:05:28
|
Revision: 2756 http://jcl.svn.sourceforge.net/jcl/?rev=2756&view=rev Author: ahuser Date: 2009-05-09 10:05:13 +0000 (Sat, 09 May 2009) Log Message: ----------- Fixed IDE Experts TabOrder Modified Paths: -------------- trunk/jcl/experts/common/JclOtaWizardForm.dfm trunk/jcl/experts/common/JclOtaWizardForm.pas trunk/jcl/experts/debug/simdview/JclSIMDCpuInfo.dfm trunk/jcl/experts/debug/simdview/JclSIMDModifyForm.dfm trunk/jcl/experts/repository/JclOtaExcDlgFileFrame.dfm trunk/jcl/experts/repository/JclOtaExcDlgFormFrame.dfm trunk/jcl/experts/repository/JclOtaExcDlgSystemFrame.dfm trunk/jcl/experts/repository/JclOtaExcDlgTraceFrame.dfm trunk/jcl/experts/versioncontrol/JclVersionCtrlCommonOptions.dfm Modified: trunk/jcl/experts/common/JclOtaWizardForm.dfm =================================================================== --- trunk/jcl/experts/common/JclOtaWizardForm.dfm 2009-05-02 13:32:35 UTC (rev 2755) +++ trunk/jcl/experts/common/JclOtaWizardForm.dfm 2009-05-09 10:05:13 UTC (rev 2756) @@ -37,7 +37,7 @@ Cancel = True Caption = 'RsCancel' ModalResult = 2 - TabOrder = 0 + TabOrder = 2 end object ButtonFinish: TButton Left = 459 @@ -54,7 +54,7 @@ Width = 75 Height = 25 Action = ActionNext - TabOrder = 2 + TabOrder = 0 end object ButtonPrevious: TButton Left = 297 @@ -62,7 +62,7 @@ Width = 75 Height = 25 Action = ActionPrevious - TabOrder = 3 + TabOrder = 5 end object PanelTitle: TPanel Left = 0 @@ -72,7 +72,7 @@ Align = alTop BevelOuter = bvNone Color = clBlack - TabOrder = 4 + TabOrder = 3 object ImageJcl: TImage Left = 8 Top = 8 @@ -99,7 +99,7 @@ Width = 623 Height = 298 BevelOuter = bvNone - TabOrder = 5 + TabOrder = 4 end object ActionListButtons: TActionList Left = 240 @@ -120,4 +120,4 @@ OnUpdate = ActionNextUpdate end end -end +end \ No newline at end of file Modified: trunk/jcl/experts/common/JclOtaWizardForm.pas =================================================================== --- trunk/jcl/experts/common/JclOtaWizardForm.pas 2009-05-02 13:32:35 UTC (rev 2755) +++ trunk/jcl/experts/common/JclOtaWizardForm.pas 2009-05-09 10:05:13 UTC (rev 2756) @@ -174,6 +174,10 @@ procedure TJclWizardForm.FormCreate(Sender: TObject); begin + {$IFDEF COMPILER7_UP} + PanelTitle.ParentBackground = False; + {$ENDIF COMPILER7_UP} + ActionPrevious.Caption := RsPrevious; ActionNext.Caption := RsNext; ActionFinish.Caption := RsFinish; Modified: trunk/jcl/experts/debug/simdview/JclSIMDCpuInfo.dfm =================================================================== --- trunk/jcl/experts/debug/simdview/JclSIMDCpuInfo.dfm 2009-05-02 13:32:35 UTC (rev 2755) +++ trunk/jcl/experts/debug/simdview/JclSIMDCpuInfo.dfm 2009-05-09 10:05:13 UTC (rev 2756) @@ -153,7 +153,7 @@ Height = 25 Caption = 'Close' ModalResult = 2 - TabOrder = 11 + TabOrder = 15 end object CheckBoxSSSE3: TCheckBox Left = 161 @@ -163,7 +163,7 @@ Alignment = taLeftJustify Caption = 'Suppl. SSE Version 3' Enabled = False - TabOrder = 12 + TabOrder = 11 end object CheckBoxSSE4A: TCheckBox Left = 161 @@ -173,7 +173,7 @@ Alignment = taLeftJustify Caption = 'SSE Version 4 A' Enabled = False - TabOrder = 13 + TabOrder = 12 end object CheckBoxSSE5: TCheckBox Left = 161 @@ -193,6 +193,6 @@ Alignment = taLeftJustify Caption = 'SSE Version 4 B' Enabled = False - TabOrder = 15 + TabOrder = 13 end end Modified: trunk/jcl/experts/debug/simdview/JclSIMDModifyForm.dfm =================================================================== --- trunk/jcl/experts/debug/simdview/JclSIMDModifyForm.dfm 2009-05-02 13:32:35 UTC (rev 2755) +++ trunk/jcl/experts/debug/simdview/JclSIMDModifyForm.dfm 2009-05-09 10:05:13 UTC (rev 2756) @@ -40,7 +40,7 @@ end object ComboBoxDisplay: TComboBox Left = 56 - Top = 16 + Top = 13 Width = 137 Height = 21 Style = csDropDownList @@ -57,7 +57,7 @@ end object ComboBoxFormat: TComboBox Left = 288 - Top = 16 + Top = 13 Width = 145 Height = 21 Style = csDropDownList Modified: trunk/jcl/experts/repository/JclOtaExcDlgFileFrame.dfm =================================================================== --- trunk/jcl/experts/repository/JclOtaExcDlgFileFrame.dfm 2009-05-02 13:32:35 UTC (rev 2755) +++ trunk/jcl/experts/repository/JclOtaExcDlgFileFrame.dfm 2009-05-09 10:05:13 UTC (rev 2756) @@ -2,7 +2,7 @@ object LabelLanguage: TLabel Left = 23 Top = 27 - Width = 59 + Width = 61 Height = 13 Caption = 'RsLanguage' FocusControl = ComboBoxLanguage @@ -10,7 +10,7 @@ object LabelFormName: TLabel Left = 23 Top = 182 - Width = 63 + Width = 64 Height = 13 Caption = 'RsFormName' FocusControl = EditFormName @@ -18,7 +18,7 @@ object LabelFileName: TLabel Left = 23 Top = 75 - Width = 55 + Width = 57 Height = 13 Caption = 'RsFileName' FocusControl = EditFileName @@ -26,7 +26,7 @@ object LabelFormAncestor: TLabel Left = 23 Top = 222 - Width = 79 + Width = 78 Height = 13 Caption = 'RsFormAncestor' FocusControl = EditFormAncestor @@ -46,14 +46,14 @@ Top = 179 Width = 249 Height = 21 - TabOrder = 1 + TabOrder = 3 end object EditFileName: TEdit Left = 136 Top = 72 Width = 249 Height = 21 - TabOrder = 2 + TabOrder = 1 end object ButtonFileBrowse: TButton Left = 391 @@ -61,7 +61,7 @@ Width = 25 Height = 21 Caption = '...' - TabOrder = 3 + TabOrder = 2 OnClick = ButtonFileBrowseClick end object EditFormAncestor: TEdit Modified: trunk/jcl/experts/repository/JclOtaExcDlgFormFrame.dfm =================================================================== --- trunk/jcl/experts/repository/JclOtaExcDlgFormFrame.dfm 2009-05-02 13:32:35 UTC (rev 2755) +++ trunk/jcl/experts/repository/JclOtaExcDlgFormFrame.dfm 2009-05-09 10:05:13 UTC (rev 2756) @@ -2,7 +2,7 @@ object LabelEMailAddress: TLabel Left = 97 Top = 186 - Width = 36 + Width = 38 Height = 13 Caption = 'RsEmail' FocusControl = EditEMail @@ -10,7 +10,7 @@ object LabelSubject: TLabel Left = 97 Top = 226 - Width = 48 + Width = 49 Height = 13 Caption = 'RsSubject' FocusControl = EditSubject @@ -21,7 +21,7 @@ Width = 233 Height = 17 Caption = 'RsDialogWithMailButton' - TabOrder = 0 + TabOrder = 3 OnClick = CheckBoxMailClick end object EditEMail: TEdit @@ -29,7 +29,7 @@ Top = 183 Width = 193 Height = 21 - TabOrder = 1 + TabOrder = 4 end object CheckBoxModalDialog: TCheckBox Left = 72 @@ -37,7 +37,7 @@ Width = 233 Height = 17 Caption = 'RsModalDialog' - TabOrder = 2 + TabOrder = 0 end object CheckBoxSizeable: TCheckBox Left = 72 @@ -45,14 +45,14 @@ Width = 233 Height = 17 Caption = 'RsSizeable' - TabOrder = 3 + TabOrder = 1 end object EditSubject: TEdit Left = 160 Top = 223 Width = 193 Height = 21 - TabOrder = 4 + TabOrder = 5 end object CheckBoxAutoScrollBars: TCheckBox Left = 72 @@ -60,6 +60,6 @@ Width = 233 Height = 17 Caption = 'RsAutoScrollBars' - TabOrder = 5 + TabOrder = 2 end end Modified: trunk/jcl/experts/repository/JclOtaExcDlgSystemFrame.dfm =================================================================== --- trunk/jcl/experts/repository/JclOtaExcDlgSystemFrame.dfm 2009-05-02 13:32:35 UTC (rev 2755) +++ trunk/jcl/experts/repository/JclOtaExcDlgSystemFrame.dfm 2009-05-09 10:05:13 UTC (rev 2756) @@ -2,7 +2,7 @@ object LabelLogFileName: TLabel Left = 170 Top = 139 - Width = 55 + Width = 57 Height = 13 Caption = 'RsFileName' end @@ -28,7 +28,7 @@ Width = 265 Height = 17 Caption = 'RsLogFile' - TabOrder = 2 + TabOrder = 3 OnClick = CheckBoxLogFileClick end object EditLogFileName: TEdit @@ -36,7 +36,7 @@ Top = 136 Width = 145 Height = 21 - TabOrder = 3 + TabOrder = 4 end object CheckBoxModuleList: TCheckBox Left = 120 @@ -44,7 +44,7 @@ Width = 265 Height = 17 Caption = 'RsModuleList' - TabOrder = 4 + TabOrder = 5 OnClick = CheckBoxModuleListClick end object CheckBoxOSInfo: TCheckBox @@ -53,7 +53,7 @@ Width = 265 Height = 17 Caption = 'RsOSInfo' - TabOrder = 5 + TabOrder = 7 end object CheckBoxActiveControls: TCheckBox Left = 120 @@ -61,7 +61,7 @@ Width = 265 Height = 17 Caption = 'RsActiveControls' - TabOrder = 6 + TabOrder = 8 end object CheckBoxMainThreadOnly: TCheckBox Left = 120 @@ -69,7 +69,7 @@ Width = 265 Height = 17 Caption = 'RsMainThreadOnly' - TabOrder = 7 + TabOrder = 2 end object CheckBoxUnitVersioning: TCheckBox Left = 152 @@ -77,6 +77,6 @@ Width = 233 Height = 17 Caption = 'RsUnitVersioning' - TabOrder = 8 + TabOrder = 6 end end Modified: trunk/jcl/experts/repository/JclOtaExcDlgTraceFrame.dfm =================================================================== --- trunk/jcl/experts/repository/JclOtaExcDlgTraceFrame.dfm 2009-05-02 13:32:35 UTC (rev 2755) +++ trunk/jcl/experts/repository/JclOtaExcDlgTraceFrame.dfm 2009-05-09 10:05:13 UTC (rev 2756) @@ -12,7 +12,7 @@ Width = 233 Height = 17 Caption = 'RsRawData' - TabOrder = 0 + TabOrder = 1 OnClick = CheckBoxClick end object CheckBoxModuleName: TCheckBox @@ -21,7 +21,7 @@ Width = 233 Height = 17 Caption = 'RsModuleName' - TabOrder = 1 + TabOrder = 2 OnClick = CheckBoxClick end object CheckBoxCodeDetails: TCheckBox @@ -30,7 +30,7 @@ Width = 233 Height = 17 Caption = 'RsCodeDetails' - TabOrder = 2 + TabOrder = 4 OnClick = CheckBoxClick end object CheckBoxVirtualAddress: TCheckBox @@ -39,7 +39,7 @@ Width = 233 Height = 17 Caption = 'RsVirtualAddress' - TabOrder = 3 + TabOrder = 5 OnClick = CheckBoxClick end object CheckBoxModuleOffset: TCheckBox @@ -48,7 +48,7 @@ Width = 233 Height = 17 Caption = 'RsModuleOffset' - TabOrder = 4 + TabOrder = 3 OnClick = CheckBoxClick end object MemoStack: TMemo @@ -59,7 +59,7 @@ ParentColor = True ReadOnly = True ScrollBars = ssBoth - TabOrder = 6 + TabOrder = 7 WordWrap = False end object CheckBoxStackList: TCheckBox @@ -68,7 +68,7 @@ Width = 257 Height = 17 Caption = 'RsStackList' - TabOrder = 5 + TabOrder = 0 OnClick = CheckBoxStackListClick end object CheckBoxAllThreads: TCheckBox @@ -77,7 +77,7 @@ Width = 233 Height = 17 Caption = 'RsAllThreads' - TabOrder = 7 + TabOrder = 6 OnClick = CheckBoxClick end end Modified: trunk/jcl/experts/versioncontrol/JclVersionCtrlCommonOptions.dfm =================================================================== --- trunk/jcl/experts/versioncontrol/JclVersionCtrlCommonOptions.dfm 2009-05-02 13:32:35 UTC (rev 2755) +++ trunk/jcl/experts/versioncontrol/JclVersionCtrlCommonOptions.dfm 2009-05-09 10:05:13 UTC (rev 2756) @@ -28,7 +28,7 @@ Width = 185 Height = 17 Caption = 'RsHideUnsupportedActions' - TabOrder = 0 + TabOrder = 1 end object ComboBoxIcons: TComboBox Left = 72 @@ -37,7 +37,7 @@ Height = 21 Style = csDropDownList ItemHeight = 13 - TabOrder = 1 + TabOrder = 4 Items.Strings = ( 'RsNoIcon' 'RsJCLIcons') @@ -53,7 +53,7 @@ RightClickSelect = True RowSelect = True ShowRoot = False - TabOrder = 2 + TabOrder = 5 OnEdited = TreeViewMenuEdited OnEditing = TreeViewMenuEditing end @@ -63,7 +63,7 @@ Width = 201 Height = 17 Caption = 'RsDisableActions' - TabOrder = 3 + TabOrder = 0 end object ButtonNewSeparator: TButton Left = 282 @@ -72,7 +72,7 @@ Height = 25 Action = ActionNewSeparator Anchors = [akTop, akRight] - TabOrder = 4 + TabOrder = 7 end object ButtonDelete: TButton Left = 282 @@ -81,7 +81,7 @@ Height = 25 Action = ActionDeleteItem Anchors = [akTop, akRight] - TabOrder = 5 + TabOrder = 9 end object ButtonRename: TButton Left = 282 @@ -90,7 +90,7 @@ Height = 25 Action = ActionRenameItem Anchors = [akTop, akRight] - TabOrder = 6 + TabOrder = 10 end object ButtonMoveUp: TButton Left = 282 @@ -99,7 +99,7 @@ Height = 25 Action = ActionMoveItemUp Anchors = [akTop, akRight] - TabOrder = 7 + TabOrder = 11 end object ButtonMoveDown: TButton Left = 282 @@ -108,7 +108,7 @@ Height = 25 Action = ActionMoveItemDown Anchors = [akTop, akRight] - TabOrder = 8 + TabOrder = 12 end object CheckBoxSaveConfirmation: TCheckBox Left = 16 @@ -116,7 +116,7 @@ Width = 201 Height = 17 Caption = 'RsSaveConfirmation' - TabOrder = 9 + TabOrder = 2 end object ButtonNewAction: TButton Left = 282 @@ -125,7 +125,7 @@ Height = 25 Action = ActionNewAction Anchors = [akTop, akRight] - TabOrder = 10 + TabOrder = 8 end object ButtonNewSubMenu: TButton Left = 282 @@ -134,7 +134,7 @@ Height = 25 Action = ActionNewSubMenu Anchors = [akTop, akRight] - TabOrder = 11 + TabOrder = 6 end object CheckBoxActOnTopSandbox: TCheckBox Left = 16 @@ -142,7 +142,7 @@ Width = 201 Height = 17 Caption = 'RsActOnTopSandbox' - TabOrder = 12 + TabOrder = 3 end object ActionListVersionCtrl: TActionList Left = 256 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-05-02 13:54:54
|
Revision: 2755 http://jcl.svn.sourceforge.net/jcl/?rev=2755&view=rev Author: uschuster Date: 2009-05-02 13:32:35 +0000 (Sat, 02 May 2009) Log Message: ----------- - moved stack preparation code from JclStackTraceViewerMainFrame.pas into new unit JclStackTraceViewerStackUtils.pas - moved FileSearcherUnit.pas into JclStackTraceViewerStackUtils.pas Modified Paths: -------------- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml Added Paths: ----------- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackUtils.pas Removed Paths: ------------- branches/jcl-stack-trace/jcl/experts/stackviewer/FileSearcherUnit.pas Deleted: branches/jcl-stack-trace/jcl/experts/stackviewer/FileSearcherUnit.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/FileSearcherUnit.pas 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/FileSearcherUnit.pas 2009-05-02 13:32:35 UTC (rev 2755) @@ -1,154 +0,0 @@ -unit FileSearcherUnit; - -interface - -uses - SysUtils, Classes, Contnrs, JclFileUtils; - -type - TFileSearchItem = class(TObject) - private - FName: string; - FResults: TStringList; - public - constructor Create(const AName: string); - destructor Destroy; override; - property Name: string read FName; - property Results: TStringList read FResults; - end; - - TFileSearcher = class(TObject) - private - FFiles: TObjectList; - FSearchPaths: TStringList; - function GetCount: Integer; - function GetItems(AIndex: Integer): TFileSearchItem; - public - constructor Create; - destructor Destroy; override; - function Add(const AName: string): TFileSearchItem; - procedure Clear; - procedure Delete(AIndex: Integer); - function IndexOf(const AName: string): Integer; - procedure Search; - property Count: Integer read GetCount; - property Items[AIndex: Integer]: TFileSearchItem read GetItems; default; - property SearchPaths: TStringList read FSearchPaths; - end; - -implementation - -{ TFileSearcher } - -constructor TFileSearcher.Create; -begin - inherited Create; - FFiles := TObjectList.Create; - FSearchPaths := TStringList.Create; -end; - -destructor TFileSearcher.Destroy; -begin - FSearchPaths.Free; - FFiles.Free; - inherited Destroy; -end; - -function TFileSearcher.Add(const AName: string): TFileSearchItem; -begin - FFiles.Add(TFileSearchItem.Create(AName)); - Result := TFileSearchItem(FFiles.Last); -end; - -procedure TFileSearcher.Clear; -begin - FFiles.Clear; -end; - -procedure TFileSearcher.Delete(AIndex: Integer); -begin - FFiles.Delete(AIndex); -end; - -function TFileSearcher.GetCount: Integer; -begin - Result := FFiles.Count; -end; - -function TFileSearcher.GetItems(AIndex: Integer): TFileSearchItem; -begin - Result := TFileSearchItem(FFiles[AIndex]); -end; - -function TFileSearcher.IndexOf(const AName: string): Integer; -var - I: Integer; -begin - Result := -1; - for I := 0 to Count - 1 do - if Items[I].Name = AName then - begin - Result := I; - Break; - end; -end; - -procedure TFileSearcher.Search; -var - I, Idx: Integer; - FastIndexList: TStringList; - FS: TFileSearchItem; - Path: string; - sr: TSearchRec; - re: Integer; -begin - if (Count > 0) then - begin - for I := 0 to Count - 1 do - Items[I].Results.Clear; - if FSearchPaths.Count > 0 then - begin - FastIndexList := TStringList.Create; - try - FastIndexList.Sorted := True; - for I := 0 to Count - 1 do - FastIndexList.AddObject(Items[I].Name, Items[I]); - for I := 0 to FSearchPaths.Count - 1 do - begin - Path := PathAddSeparator(FSearchPaths[I]); - re := FindFirst(Path + '*.*', faAnyFile - faDirectory, sr); - while re = 0 do - begin - Idx := FastIndexList.IndexOf(sr.Name); - if Idx <> -1 then - begin - FS := TFileSearchItem(FastIndexList.Objects[Idx]); - FS.Results.Add(Path + sr.Name); - end; - re := FindNext(sr); - end; - FindClose(sr); - end; - finally - FastIndexList.Free; - end; - end; - end; -end; - -{ TFileSearchItem } - -constructor TFileSearchItem.Create(const AName: string); -begin - inherited Create; - FResults := TStringList.Create; - FName := AName; -end; - -destructor TFileSearchItem.Destroy; -begin - FResults.Free; - inherited Destroy; -end; - -end. Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-05-02 13:32:35 UTC (rev 2755) @@ -43,8 +43,7 @@ JclStackTraceViewerClasses, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, JclStackTraceViewerOptions, JclStackTraceViewerAPIImpl, JclOtaUtils - , ActiveX - , FileSearcherUnit, JclStrings, JclDebugXMLDeserializer + , JclStrings, JclDebugXMLDeserializer, JclStackTraceViewerStackUtils ; type @@ -129,312 +128,26 @@ end; end; -type - TFindMapping = class(TObject) - private - FItems: TList; - function GetCount: Integer; - function GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; - public - FoundFile: Boolean; - FileName: string; - ProjectName: string; - constructor Create; - destructor Destroy; override; - procedure Add(AStackViewItem: TJclStackTraceViewerLocationInfo); - property Count: Integer read GetCount; - property Items[AIndex: Integer]: TJclStackTraceViewerLocationInfo read GetItems; default; - end; - -constructor TFindMapping.Create; -begin - inherited Create; - FItems := TList.Create; -end; - -destructor TFindMapping.Destroy; -begin - FItems.Free; - inherited Destroy; -end; - -procedure TFindMapping.Add(AStackViewItem: TJclStackTraceViewerLocationInfo); -begin - FItems.Add(AStackViewItem); -end; - -function TFindMapping.GetCount: Integer; -begin - Result := FItems.Count; -end; - -function TFindMapping.GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; -begin - Result := FItems[AIndex]; -end; - procedure TfrmMain.PrepareStack(AStack: TJclStackTraceViewerLocationInfoList; AForce: Boolean = False); var - I, J, K, Idx: Integer; - StackViewItem: TJclStackTraceViewerLocationInfo; - FindFileList: TStringList; - FindMapping: TFindMapping; - FileName, ProjectName: string; - RevisionMS: TMemoryStream; - RevisionStream, Stream: IStream; - MS: TMemoryStream; - SA: TStreamAdapter; - - S: string; - EV: IOTAEnvironmentOptions; - FileSearcher: TFileSearcher; - BrowsingPaths: TStringList; - - Found: Boolean; - RevisionLineNumbers, CurrentLineNumbers: TList; + LocationInfoProcessor: TJclLocationInfoProcessor; begin - if AForce or not AStack.Prepared then - begin - DoProgress(0, 100, ''); + LocationInfoProcessor := TJclLocationInfoProcessor.Create; + try + LocationInfoProcessor.ModuleList := FExceptionInfo.Modules; + LocationInfoProcessor.OnProgress := DoProgress; + LocationInfoProcessor.Options := FOptions; + LocationInfoProcessor.RootDir := RootDir; + PB.Max := 100; + PB.Position := 0; PB.Visible := True; try - if AStack.Count > 0 then - begin - FindFileList := TStringList.Create; - try - FindFileList.Sorted := True; - //check if the files can be found in a project in the current project group - DoProgress(0, AStack.Count, rsSTVFindFilesInProjectGroup); - for I := 0 to AStack.Count - 1 do - begin - StackViewItem := AStack[I]; - StackViewItem.Revision := AStack[I].UnitVersionRevision; - Idx := FindFileList.IndexOf(AStack[I].SourceName); - if Idx <> -1 then - begin - FindMapping := TFindMapping(FindFileList.Objects[Idx]); - FindMapping.Add(StackViewItem); - StackViewItem.FoundFile := FindMapping.FoundFile; - StackViewItem.FileName := FindMapping.FileName; - StackViewItem.ProjectName := FindMapping.ProjectName; - end - else - begin - if AStack[I].SourceName <> '' then - begin - DoProgress(I + 1, AStack.Count, Format(rsSTVFindFileInProjectGroup, [AStack[I].SourceName])); - FileName := FindModuleAndProject(AStack[I].SourceName, ProjectName); - end - else - begin - FileName := ''; - ProjectName := ''; - end; - FindMapping := TFindMapping.Create; - FindMapping.Add(StackViewItem); - FindFileList.AddObject(AStack[I].SourceName, FindMapping); - FindMapping.FoundFile := FileName <> ''; - FindMapping.FileName := FileName; - FindMapping.ProjectName := ProjectName; - - StackViewItem.FoundFile := FileName <> ''; - StackViewItem.FileName := FileName; - StackViewItem.ProjectName := ProjectName; - end; - DoProgress(I + 1, AStack.Count, rsSTVFindFilesInProjectGroup); - end; - - //use the build number from the version number as revision number if the revision number is empty - if FOptions.ModuleVersionAsRevision then - begin - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindMapping.Count > 0) and (FindMapping[0].Revision = '') and (FindMapping[0].ModuleName <> '') then - begin - Idx := -1; - { TODO -oUSc : Compare full filename when the filename in the stack contains also the path - - Why full filenames? - - It is possible to load - <Path 1>\TestDLL.DLL - <Path 2>\TestDLL.DLL} - for J := 0 to FExceptionInfo.Modules.Count - 1 do - if CompareText(ExtractFileName(FExceptionInfo.Modules[J].ModuleName), ExtractFileName(FindMapping[0].ModuleName)) = 0 then - begin - Idx := J; - Break; - end; - if Idx <> -1 then - begin - S := FExceptionInfo.Modules[Idx].BinFileVersion; - K := Pos('.', S); - if K > 0 then - Delete(S, 1, K); - K := Pos('.', S); - if K > 0 then - Delete(S, 1, K); - K := Pos('.', S); - if K > 0 then - begin - Delete(S, 1, K); - for J := 0 to FindMapping.Count - 1 do - FindMapping[J].Revision := S; - end; - end; - end; - end; - end; - - //check if the other files can be found in BrowsingPath - Found := False; - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindFileList[I] <> '') and (not FindMapping.FoundFile) then - begin - Found := True; - Break; - end; - end; - if Found then - begin - FileSearcher := TFileSearcher.Create; - try - BrowsingPaths := TStringList.Create; - try - EV := (BorlandIDEServices as IOTAServices).GetEnvironmentOptions; - StrTokenToStrings(EV.Values['BrowsingPath'], ';', BrowsingPaths); - for I := 0 to BrowsingPaths.Count - 1 do - begin - S := BrowsingPaths[I]; - if Pos('$(BDS)', S) > 0 then - S := StringReplace(S, '$(BDS)', RootDir, []); - FileSearcher.SearchPaths.Add(S); - end; - finally - BrowsingPaths.Free; - end; - if FileSearcher.SearchPaths.Count > 0 then - begin - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindFileList[I] <> '') and (not FindMapping.FoundFile) and (FileSearcher.IndexOf(FindFileList[I]) = -1) then - FileSearcher.Add(FindFileList[I]); - end; - if FileSearcher.Count > 0 then - begin - DoProgress(0, 100, rsSTVFindFilesInBrowsingPath); - FileSearcher.Search; - DoProgress(75, 100, rsSTVFindFilesInBrowsingPath); - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if not FindMapping.FoundFile then - begin - Idx := FileSearcher.IndexOf(FindFileList[I]); - if (Idx <> -1) and (FileSearcher[Idx].Results.Count > 0) then - begin - FindMapping.FoundFile := True; - FindMapping.FileName := FileSearcher[Idx].Results[0]; - FindMapping.ProjectName := ''; - for J := 0 to FindMapping.Count - 1 do - begin - FindMapping[J].FoundFile := FindMapping.FoundFile; - FindMapping[J].FileName := FindMapping.FileName; - FindMapping[J].ProjectName := FindMapping.ProjectName; - end; - end; - end; - DoProgress(FindFileList.Count * 3 + I + 1, FindFileList.Count * 4, rsSTVFindFilesInBrowsingPath); - end; - end; - end; - finally - FileSearcher.Free; - end; - end; - DoProgress(0, FindFileList.Count, ''); - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindMapping.FoundFile) and (FindMapping.Count > 0) and (FindMapping[0].Revision <> '') then - begin - Found := False; - for J := 0 to FindMapping.Count - 1 do - if FindMapping[J].LineNumber > 0 then - begin - Found := True; - Break; - end; - if Found then - begin - Stream := GetFileEditorContent(FindMapping.FileName); - if not Assigned(Stream) then - begin - if FileExists(FindMapping.FileName) then - begin - SA := TStreamAdapter.Create(TMemoryStream.Create, soOwned); - Stream := SA; - MS := TMemoryStream(SA.Stream); - MS.LoadFromFile(FindMapping.FileName); - end; - end; - if Assigned(Stream) then - begin - RevisionLineNumbers := TList.Create; - CurrentLineNumbers := TList.Create; - try - for J := 0 to FindMapping.Count - 1 do - if FindMapping[J].LineNumber > 0 then - RevisionLineNumbers.Add(Pointer(FindMapping[J].LineNumber)); - RevisionMS := TMemoryStream.Create; - try - RevisionStream := TStreamAdapter.Create(RevisionMS); - if GetRevisionContent(FindMapping.FileName, FindMapping[0].Revision, RevisionStream) then - begin - if TranslateLineNumbers(RevisionStream, Stream, RevisionLineNumbers, CurrentLineNumbers) > 0 then - begin - if RevisionLineNumbers.Count = CurrentLineNumbers.Count then - begin - for J := 0 to FindMapping.Count - 1 do - if FindMapping[J].LineNumber > 0 then - begin - FindMapping[J].TranslatedLineNumber := -1; - for K := 0 to RevisionLineNumbers.Count - 1 do - if Integer(RevisionLineNumbers[K]) = FindMapping[J].LineNumber then - begin - FindMapping[J].TranslatedLineNumber := Integer(CurrentLineNumbers[K]); - Break; - end; - end; - end; - end; - end; - finally - RevisionMS.Free; - end; - finally - RevisionLineNumbers.Free; - CurrentLineNumbers.Free; - end; - end; - end; - end; - DoProgress(I + 1, FindFileList.Count, ''); - end; - finally - for I := 0 to FindFileList.Count - 1 do - FindFileList.Objects[I].Free; - FindFileList.Free; - end; - end; - AStack.Prepared := True; + LocationInfoProcessor.PrepareLocationInfoList(AStack, AForce); finally PB.Visible := False; end; + finally + LocationInfoProcessor.Free; end; end; Copied: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackUtils.pas (from rev 2754, branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas) =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackUtils.pas (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackUtils.pas 2009-05-02 13:32:35 UTC (rev 2755) @@ -0,0 +1,544 @@ +{**************************************************************************************************} +{ } +{ Project JEDI Code Library (JCL) } +{ } +{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); } +{ you may not use this file except in compliance with the License. You may obtain a copy of the } +{ License at http://www.mozilla.org/MPL/ } +{ } +{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } +{ ANY KIND, either express or implied. See the License for the specific language governing rights } +{ and limitations under the License. } +{ } +{ The Original Code is JclStackTraceViewerStackUtils.pas. } +{ } +{ The Initial Developer of the Original Code is Uwe Schuster. } +{ Portions created by Uwe Schuster are Copyright (C) 2009 Uwe Schuster. All rights reserved. } +{ } +{ Contributor(s): } +{ Uwe Schuster (uschuster) } +{ } +{**************************************************************************************************} +{ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } +{ } +{**************************************************************************************************} + +unit JclStackTraceViewerStackUtils; + +{$I jcl.inc} + +interface + +uses + SysUtils, Classes, Contnrs, ActiveX, + ToolsAPI, + {$IFDEF UNITVERSIONING} + JclUnitVersioning, + {$ENDIF UNITVERSIONING} + JclStrings, JclFileUtils, + JclDebugSerialization, JclStackTraceViewerClasses, StackCodeUtils, JclStackTraceViewerOptions, + JclStackTraceViewerAPIImpl; + +type + TJclLocationInfoProgressEvent = procedure(APos, AMax: Integer; const AText: string) of object; + + TJclLocationInfoProcessor = class(TObject) + private + FModuleList: TModuleList; + FOnProgress: TJclLocationInfoProgressEvent; + FOptions: TExceptionViewerOption; + FRootDir: string; + procedure DoProgress(APos, AMax: Integer; const AText: string); + public + procedure PrepareLocationInfoList(AStack: TJclStackTraceViewerLocationInfoList; AForce: Boolean = False); + property ModuleList: TModuleList read FModuleList write FModuleList; + property OnProgress: TJclLocationInfoProgressEvent read FOnProgress write FOnProgress; + property Options: TExceptionViewerOption read FOptions write FOptions; + property RootDir: string read FRootDir write FRootDir; + end; + +{$IFDEF UNITVERSIONING} +const + UnitVersioning: TUnitVersionInfo = ( + RCSfile: '$URL: $'; + Revision: '$Revision: $'; + Date: '$Date: $'; + LogPath: '' + ); +{$ENDIF UNITVERSIONING} + +implementation + +uses + JclOtaResources; + +type + TFileSearchItem = class(TObject) + private + FName: string; + FResults: TStringList; + public + constructor Create(const AName: string); + destructor Destroy; override; + property Name: string read FName; + property Results: TStringList read FResults; + end; + + TFileSearcher = class(TObject) + private + FFiles: TObjectList; + FSearchPaths: TStringList; + function GetCount: Integer; + function GetItems(AIndex: Integer): TFileSearchItem; + public + constructor Create; + destructor Destroy; override; + function Add(const AName: string): TFileSearchItem; + procedure Clear; + procedure Delete(AIndex: Integer); + function IndexOf(const AName: string): Integer; + procedure Search; + property Count: Integer read GetCount; + property Items[AIndex: Integer]: TFileSearchItem read GetItems; default; + property SearchPaths: TStringList read FSearchPaths; + end; + +{ TFileSearcher } + +constructor TFileSearcher.Create; +begin + inherited Create; + FFiles := TObjectList.Create; + FSearchPaths := TStringList.Create; +end; + +destructor TFileSearcher.Destroy; +begin + FSearchPaths.Free; + FFiles.Free; + inherited Destroy; +end; + +function TFileSearcher.Add(const AName: string): TFileSearchItem; +begin + FFiles.Add(TFileSearchItem.Create(AName)); + Result := TFileSearchItem(FFiles.Last); +end; + +procedure TFileSearcher.Clear; +begin + FFiles.Clear; +end; + +procedure TFileSearcher.Delete(AIndex: Integer); +begin + FFiles.Delete(AIndex); +end; + +function TFileSearcher.GetCount: Integer; +begin + Result := FFiles.Count; +end; + +function TFileSearcher.GetItems(AIndex: Integer): TFileSearchItem; +begin + Result := TFileSearchItem(FFiles[AIndex]); +end; + +function TFileSearcher.IndexOf(const AName: string): Integer; +var + I: Integer; +begin + Result := -1; + for I := 0 to Count - 1 do + if Items[I].Name = AName then + begin + Result := I; + Break; + end; +end; + +procedure TFileSearcher.Search; +var + I, Idx: Integer; + FastIndexList: TStringList; + FS: TFileSearchItem; + Path: string; + sr: TSearchRec; + re: Integer; +begin + if (Count > 0) then + begin + for I := 0 to Count - 1 do + Items[I].Results.Clear; + if FSearchPaths.Count > 0 then + begin + FastIndexList := TStringList.Create; + try + FastIndexList.Sorted := True; + for I := 0 to Count - 1 do + FastIndexList.AddObject(Items[I].Name, Items[I]); + for I := 0 to FSearchPaths.Count - 1 do + begin + Path := PathAddSeparator(FSearchPaths[I]); + re := FindFirst(Path + '*.*', faAnyFile - faDirectory, sr); + while re = 0 do + begin + Idx := FastIndexList.IndexOf(sr.Name); + if Idx <> -1 then + begin + FS := TFileSearchItem(FastIndexList.Objects[Idx]); + FS.Results.Add(Path + sr.Name); + end; + re := FindNext(sr); + end; + FindClose(sr); + end; + finally + FastIndexList.Free; + end; + end; + end; +end; + +{ TFileSearchItem } + +constructor TFileSearchItem.Create(const AName: string); +begin + inherited Create; + FResults := TStringList.Create; + FName := AName; +end; + +destructor TFileSearchItem.Destroy; +begin + FResults.Free; + inherited Destroy; +end; + +type + TFindMapping = class(TObject) + private + FItems: TList; + function GetCount: Integer; + function GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; + public + FoundFile: Boolean; + FileName: string; + ProjectName: string; + constructor Create; + destructor Destroy; override; + procedure Add(AStackViewItem: TJclStackTraceViewerLocationInfo); + property Count: Integer read GetCount; + property Items[AIndex: Integer]: TJclStackTraceViewerLocationInfo read GetItems; default; + end; + +constructor TFindMapping.Create; +begin + inherited Create; + FItems := TList.Create; +end; + +destructor TFindMapping.Destroy; +begin + FItems.Free; + inherited Destroy; +end; + +procedure TFindMapping.Add(AStackViewItem: TJclStackTraceViewerLocationInfo); +begin + FItems.Add(AStackViewItem); +end; + +function TFindMapping.GetCount: Integer; +begin + Result := FItems.Count; +end; + +function TFindMapping.GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; +begin + Result := FItems[AIndex]; +end; + +procedure TJclLocationInfoProcessor.DoProgress(APos, AMax: Integer; const AText: string); +begin + if Assigned(FOnProgress) then + FOnProgress(APos, AMax, AText); +end; + +procedure TJclLocationInfoProcessor.PrepareLocationInfoList(AStack: TJclStackTraceViewerLocationInfoList; + AForce: Boolean = False); +var + I, J, K, Idx: Integer; + StackViewItem: TJclStackTraceViewerLocationInfo; + FindFileList: TStringList; + FindMapping: TFindMapping; + FileName, ProjectName: string; + RevisionMS: TMemoryStream; + RevisionStream, Stream: IStream; + MS: TMemoryStream; + SA: TStreamAdapter; + + S: string; + EV: IOTAEnvironmentOptions; + FileSearcher: TFileSearcher; + BrowsingPaths: TStringList; + + Found: Boolean; + RevisionLineNumbers, CurrentLineNumbers: TList; +begin + if AForce or not AStack.Prepared then + begin + DoProgress(0, 100, ''); + if AStack.Count > 0 then + begin + FindFileList := TStringList.Create; + try + FindFileList.Sorted := True; + //check if the files can be found in a project in the current project group + DoProgress(0, AStack.Count, rsSTVFindFilesInProjectGroup); + for I := 0 to AStack.Count - 1 do + begin + StackViewItem := AStack[I]; + StackViewItem.Revision := AStack[I].UnitVersionRevision; + Idx := FindFileList.IndexOf(AStack[I].SourceName); + if Idx <> -1 then + begin + FindMapping := TFindMapping(FindFileList.Objects[Idx]); + FindMapping.Add(StackViewItem); + StackViewItem.FoundFile := FindMapping.FoundFile; + StackViewItem.FileName := FindMapping.FileName; + StackViewItem.ProjectName := FindMapping.ProjectName; + end + else + begin + if AStack[I].SourceName <> '' then + begin + DoProgress(I + 1, AStack.Count, Format(rsSTVFindFileInProjectGroup, [AStack[I].SourceName])); + FileName := FindModuleAndProject(AStack[I].SourceName, ProjectName); + end + else + begin + FileName := ''; + ProjectName := ''; + end; + FindMapping := TFindMapping.Create; + FindMapping.Add(StackViewItem); + FindFileList.AddObject(AStack[I].SourceName, FindMapping); + FindMapping.FoundFile := FileName <> ''; + FindMapping.FileName := FileName; + FindMapping.ProjectName := ProjectName; + + StackViewItem.FoundFile := FileName <> ''; + StackViewItem.FileName := FileName; + StackViewItem.ProjectName := ProjectName; + end; + DoProgress(I + 1, AStack.Count, rsSTVFindFilesInProjectGroup); + end; + + //use the build number from the version number as revision number if the revision number is empty + if Assigned(FOptions) and FOptions.ModuleVersionAsRevision and Assigned(FModuleList) then + begin + for I := 0 to FindFileList.Count - 1 do + begin + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindMapping.Count > 0) and (FindMapping[0].Revision = '') and (FindMapping[0].ModuleName <> '') then + begin + Idx := -1; + { TODO -oUSc : Compare full filename when the filename in the stack contains also the path + + Why full filenames? + + It is possible to load + <Path 1>\TestDLL.DLL + <Path 2>\TestDLL.DLL} + for J := 0 to FModuleList.Count - 1 do + if CompareText(ExtractFileName(FModuleList[J].ModuleName), ExtractFileName(FindMapping[0].ModuleName)) = 0 then + begin + Idx := J; + Break; + end; + if Idx <> -1 then + begin + S := FModuleList[Idx].BinFileVersion; + K := Pos('.', S); + if K > 0 then + Delete(S, 1, K); + K := Pos('.', S); + if K > 0 then + Delete(S, 1, K); + K := Pos('.', S); + if K > 0 then + begin + Delete(S, 1, K); + for J := 0 to FindMapping.Count - 1 do + FindMapping[J].Revision := S; + end; + end; + end; + end; + end; + + //check if the other files can be found in BrowsingPath + if FRootDir <> '' then + begin + Found := False; + for I := 0 to FindFileList.Count - 1 do + begin + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindFileList[I] <> '') and (not FindMapping.FoundFile) then + begin + Found := True; + Break; + end; + end; + if Found then + begin + FileSearcher := TFileSearcher.Create; + try + BrowsingPaths := TStringList.Create; + try + EV := (BorlandIDEServices as IOTAServices).GetEnvironmentOptions; + StrTokenToStrings(EV.Values['BrowsingPath'], ';', BrowsingPaths); + for I := 0 to BrowsingPaths.Count - 1 do + begin + S := BrowsingPaths[I]; + if Pos('$(BDS)', S) > 0 then + S := StringReplace(S, '$(BDS)', FRootDir, []); + FileSearcher.SearchPaths.Add(S); + end; + finally + BrowsingPaths.Free; + end; + if FileSearcher.SearchPaths.Count > 0 then + begin + for I := 0 to FindFileList.Count - 1 do + begin + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindFileList[I] <> '') and (not FindMapping.FoundFile) and (FileSearcher.IndexOf(FindFileList[I]) = -1) then + FileSearcher.Add(FindFileList[I]); + end; + if FileSearcher.Count > 0 then + begin + DoProgress(0, 100, rsSTVFindFilesInBrowsingPath); + FileSearcher.Search; + DoProgress(75, 100, rsSTVFindFilesInBrowsingPath); + for I := 0 to FindFileList.Count - 1 do + begin + FindMapping := TFindMapping(FindFileList.Objects[I]); + if not FindMapping.FoundFile then + begin + Idx := FileSearcher.IndexOf(FindFileList[I]); + if (Idx <> -1) and (FileSearcher[Idx].Results.Count > 0) then + begin + FindMapping.FoundFile := True; + FindMapping.FileName := FileSearcher[Idx].Results[0]; + FindMapping.ProjectName := ''; + for J := 0 to FindMapping.Count - 1 do + begin + FindMapping[J].FoundFile := FindMapping.FoundFile; + FindMapping[J].FileName := FindMapping.FileName; + FindMapping[J].ProjectName := FindMapping.ProjectName; + end; + end; + end; + DoProgress(FindFileList.Count * 3 + I + 1, FindFileList.Count * 4, rsSTVFindFilesInBrowsingPath); + end; + end; + end; + finally + FileSearcher.Free; + end; + end; + end; + DoProgress(0, FindFileList.Count, ''); + for I := 0 to FindFileList.Count - 1 do + begin + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindMapping.FoundFile) and (FindMapping.Count > 0) and (FindMapping[0].Revision <> '') then + begin + Found := False; + for J := 0 to FindMapping.Count - 1 do + if FindMapping[J].LineNumber > 0 then + begin + Found := True; + Break; + end; + if Found then + begin + Stream := GetFileEditorContent(FindMapping.FileName); + if not Assigned(Stream) then + begin + if FileExists(FindMapping.FileName) then + begin + SA := TStreamAdapter.Create(TMemoryStream.Create, soOwned); + Stream := SA; + MS := TMemoryStream(SA.Stream); + MS.LoadFromFile(FindMapping.FileName); + end; + end; + if Assigned(Stream) then + begin + RevisionLineNumbers := TList.Create; + CurrentLineNumbers := TList.Create; + try + for J := 0 to FindMapping.Count - 1 do + if FindMapping[J].LineNumber > 0 then + RevisionLineNumbers.Add(Pointer(FindMapping[J].LineNumber)); + RevisionMS := TMemoryStream.Create; + try + RevisionStream := TStreamAdapter.Create(RevisionMS); + if GetRevisionContent(FindMapping.FileName, FindMapping[0].Revision, RevisionStream) then + begin + if TranslateLineNumbers(RevisionStream, Stream, RevisionLineNumbers, CurrentLineNumbers) > 0 then + begin + if RevisionLineNumbers.Count = CurrentLineNumbers.Count then + begin + for J := 0 to FindMapping.Count - 1 do + if FindMapping[J].LineNumber > 0 then + begin + FindMapping[J].TranslatedLineNumber := -1; + for K := 0 to RevisionLineNumbers.Count - 1 do + if Integer(RevisionLineNumbers[K]) = FindMapping[J].LineNumber then + begin + FindMapping[J].TranslatedLineNumber := Integer(CurrentLineNumbers[K]); + Break; + end; + end; + end; + end; + end; + finally + RevisionMS.Free; + end; + finally + RevisionLineNumbers.Free; + CurrentLineNumbers.Free; + end; + end; + end; + end; + DoProgress(I + 1, FindFileList.Count, ''); + end; + finally + for I := 0 to FindFileList.Count - 1 do + FindFileList.Objects[I].Free; + FindFileList.Free; + end; + end; + AStack.Prepared := True; + end; +end; + +{$IFDEF UNITVERSIONING} +initialization + RegisterUnitVersion(HInstance, UnitVersioning); + +finalization + UnregisterUnitVersion(HInstance); +{$ENDIF UNITVERSIONING} + +end. Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk 2009-05-02 13:32:35 UTC (rev 2755) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpert-D.xml) - Last generated: 02-05-2009 09:40:35 UTC + Last generated: 02-05-2009 13:25:15 UTC ----------------------------------------------------------------------------- } @@ -60,7 +60,7 @@ JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , - FileSearcherUnit in '..\..\experts\stackviewer\FileSearcherUnit.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas' , JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , JclDebugXMLDeserializer in '..\..\experts\stackviewer\JclDebugXMLDeserializer.pas' ; Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj 2009-05-02 13:32:35 UTC (rev 2755) @@ -103,7 +103,7 @@ <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> - <DCCReference Include="..\..\experts\stackviewer\FileSearcherUnit.pas" /> + <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" /> </ItemGroup> Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr 2009-05-02 13:32:35 UTC (rev 2755) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpertDLL-L.xml) - Last generated: 02-05-2009 09:40:35 UTC + Last generated: 02-05-2009 13:25:15 UTC ----------------------------------------------------------------------------- } @@ -52,7 +52,7 @@ JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , - FileSearcherUnit in '..\..\experts\stackviewer\FileSearcherUnit.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas' , JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , JclDebugXMLDeserializer in '..\..\experts\stackviewer\JclDebugXMLDeserializer.pas' ; Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj 2009-05-02 13:32:35 UTC (rev 2755) @@ -103,7 +103,7 @@ <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> - <DCCReference Include="..\..\experts\stackviewer\FileSearcherUnit.pas" /> + <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" /> </ItemGroup> Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk 2009-05-02 13:32:35 UTC (rev 2755) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpert-D.xml) - Last generated: 02-05-2009 09:37:40 UTC + Last generated: 02-05-2009 13:25:15 UTC ----------------------------------------------------------------------------- } @@ -60,7 +60,7 @@ JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , - FileSearcherUnit in '..\..\experts\stackviewer\FileSearcherUnit.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas' , JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , JclDebugXMLDeserializer in '..\..\experts\stackviewer\JclDebugXMLDeserializer.pas' ; Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj 2009-05-02 13:32:35 UTC (rev 2755) @@ -79,7 +79,7 @@ <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> - <DCCReference Include="..\..\experts\stackviewer\FileSearcherUnit.pas" /> + <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" /> <BuildConfiguration Include="Base"> Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr 2009-05-02 13:32:35 UTC (rev 2755) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpertDLL-L.xml) - Last generated: 02-05-2009 09:37:40 UTC + Last generated: 02-05-2009 13:25:15 UTC ----------------------------------------------------------------------------- } @@ -52,7 +52,7 @@ JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , - FileSearcherUnit in '..\..\experts\stackviewer\FileSearcherUnit.pas' , + JclStackTraceViewerStackUtils in '..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas' , JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , JclDebugXMLDeserializer in '..\..\experts\stackviewer\JclDebugXMLDeserializer.pas' ; Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj 2009-05-02 13:32:35 UTC (rev 2755) @@ -79,7 +79,7 @@ <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> - <DCCReference Include="..\..\experts\stackviewer\FileSearcherUnit.pas" /> + <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" /> <BuildConfiguration Include="Base"> Modified: branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml =================================================================== --- branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml 2009-05-02 13:32:35 UTC (rev 2755) @@ -32,7 +32,7 @@ <File Name="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" Targets="Delphi" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" Targets="Delphi" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" Targets="Delphi" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\FileSearcherUnit.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas" Targets="Delphi" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclDebugSerialization.pas" Targets="Delphi" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" Targets="Delphi" Formname="" Condition=""/> </Contains> Modified: branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml =================================================================== --- branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml 2009-05-02 12:20:45 UTC (rev 2754) +++ branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml 2009-05-02 13:32:35 UTC (rev 2755) @@ -32,7 +32,7 @@ <File Name="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" Targets="Delphi" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" Targets="Delphi" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" Targets="Delphi" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\FileSearcherUnit.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerStackUtils.pas" Targets="Delphi" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclDebugSerialization.pas" Targets="Delphi" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" Targets="Delphi" Formname="" Condition=""/> </Contains> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-05-02 12:20:55
|
Revision: 2754 http://jcl.svn.sourceforge.net/jcl/?rev=2754&view=rev Author: uschuster Date: 2009-05-02 12:20:45 +0000 (Sat, 02 May 2009) Log Message: ----------- fixed typo Modified Paths: -------------- trunk/jcl/install/JclInstall.pas Modified: trunk/jcl/install/JclInstall.pas =================================================================== --- trunk/jcl/install/JclInstall.pas 2009-05-02 12:17:07 UTC (rev 2753) +++ trunk/jcl/install/JclInstall.pas 2009-05-02 12:20:45 UTC (rev 2754) @@ -389,7 +389,7 @@ RsCaptionDefContainer = 'Container options'; RsCaptionDefContainerAnsiStr = 'Alias AnsiString containers to String containers'; RsCaptionDefContainerWideStr = 'Alias WideString containers to String containers'; - RsCaptionDefContainerUnicodeStr = 'Alias UnicodeString containers to String containers (Delphi 2008 only)'; + RsCaptionDefContainerUnicodeStr = 'Alias UnicodeString containers to String containers (Delphi 2009 only)'; RsCaptionDefContainerNoStr = 'Do not alias anything'; // 7Z options RsCaptionDef7z = 'Sevenzip options'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-05-02 12:20:01
|
Revision: 2753 http://jcl.svn.sourceforge.net/jcl/?rev=2753&view=rev Author: uschuster Date: 2009-05-02 12:17:07 +0000 (Sat, 02 May 2009) Log Message: ----------- prevented package generation/installation for C5, C6, CS1, D8 Modified Paths: -------------- branches/jcl-stack-trace/jcl/TODO.txt branches/jcl-stack-trace/jcl/install/JclInstall.pas branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml Modified: branches/jcl-stack-trace/jcl/TODO.txt =================================================================== --- branches/jcl-stack-trace/jcl/TODO.txt 2009-05-02 09:52:17 UTC (rev 2752) +++ branches/jcl-stack-trace/jcl/TODO.txt 2009-05-02 12:17:07 UTC (rev 2753) @@ -26,5 +26,4 @@ - (almost done) add UNITVERSIONING * integrate it into the installation - - commit packages for D5-D7, D9, D10 - - prevent package generation/installation for C5, C6, CS1, D8 \ No newline at end of file + - commit packages for D5-D7, D9, D10 \ No newline at end of file Modified: branches/jcl-stack-trace/jcl/install/JclInstall.pas =================================================================== --- branches/jcl-stack-trace/jcl/install/JclInstall.pas 2009-05-02 09:52:17 UTC (rev 2752) +++ branches/jcl-stack-trace/jcl/install/JclInstall.pas 2009-05-02 12:17:07 UTC (rev 2753) @@ -1285,7 +1285,10 @@ AddOption(joJCLExpertUses, ExpertOptions, joJCLExperts); AddOption(joJCLExpertSimdView, ExpertOptions, joJCLExperts); AddOption(joJCLExpertRepository, ExpertOptions, joJCLExperts); - AddOption(joJCLExpertStackTraceViewer, ExpertOptions, joJCLExperts); + // the Stack Tracer Viewer experts is for Delphi targets only + if (Target.RadToolKind = brDelphi) or + ((Target.RadToolKind = brBorlandDevStudio) and (Target.VersionNumber >= 3)) then + AddOption(joJCLExpertStackTraceViewer, ExpertOptions, joJCLExperts); end; AddOption(joJCLExpertFavorite, ExpertOptions, joJCLExperts); AddOption(joJCLExpertVersionControl, [goNoAutoCheck], joJCLExperts); Modified: branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml =================================================================== --- branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml 2009-05-02 09:52:17 UTC (rev 2752) +++ branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml 2009-05-02 12:17:07 UTC (rev 2753) @@ -18,22 +18,22 @@ <Package Name="JclBaseExpert-D" Targets="Windows" Condition=""/> </Requires> <Contains> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerImpl.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas" Targets="Windows" Formname="frmException: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas" Targets="Windows" Formname="frmStack: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas" Targets="Windows" Formname="frmThread: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas" Targets="Windows" Formname="frmModule: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormDelphi.pas" Targets="OldStyleIDE" Formname="frmStackView" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" Targets="Bds" Formname="frmStackView" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas" Targets="Windows" Formname="frmMain: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas" Targets="Windows" Formname="JclStackTraceViewerConfigFrame: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerClasses.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\StackCodeUtils.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\FileSearcherUnit.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclDebugSerialization.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" Targets="Windows" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerImpl.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas" Targets="Delphi" Formname="frmException: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas" Targets="Delphi" Formname="frmStack: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas" Targets="Delphi" Formname="frmThread: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas" Targets="Delphi" Formname="frmModule: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormDelphi.pas" Targets="d5,d6,d7" Formname="frmStackView" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" Targets="d9,d10,d11,d12" Formname="frmStackView" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas" Targets="Delphi" Formname="frmMain: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas" Targets="Delphi" Formname="JclStackTraceViewerConfigFrame: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerClasses.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\StackCodeUtils.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\FileSearcherUnit.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclDebugSerialization.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" Targets="Delphi" Formname="" Condition=""/> </Contains> </Package> Modified: branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml =================================================================== --- branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml 2009-05-02 09:52:17 UTC (rev 2752) +++ branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml 2009-05-02 12:17:07 UTC (rev 2753) @@ -18,22 +18,22 @@ <Package Name="JclBaseExpert-D" Targets="Windows" Condition=""/> </Requires> <Contains> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerImpl.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas" Targets="Windows" Formname="frmException: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas" Targets="Windows" Formname="frmStack: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas" Targets="Windows" Formname="frmThread: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas" Targets="Windows" Formname="frmModule: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormDelphi.pas" Targets="OldStyleIDE" Formname="frmStackView" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" Targets="Bds" Formname="frmStackView" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas" Targets="Windows" Formname="frmMain: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas" Targets="Windows" Formname="JclStackTraceViewerConfigFrame: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerClasses.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\StackCodeUtils.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\FileSearcherUnit.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclDebugSerialization.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" Targets="Windows" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerImpl.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas" Targets="Delphi" Formname="frmException: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas" Targets="Delphi" Formname="frmStack: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas" Targets="Delphi" Formname="frmThread: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas" Targets="Delphi" Formname="frmModule: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormDelphi.pas" Targets="d5,d6,d7" Formname="frmStackView" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" Targets="d9,d10,d11,d12" Formname="frmStackView" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas" Targets="Delphi" Formname="frmMain: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas" Targets="Delphi" Formname="JclStackTraceViewerConfigFrame: TFrame" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerClasses.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\StackCodeUtils.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\FileSearcherUnit.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclDebugSerialization.pas" Targets="Delphi" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclDebugXMLDeserializer.pas" Targets="Delphi" Formname="" Condition=""/> </Contains> </Package> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-05-02 09:52:20
|
Revision: 2752 http://jcl.svn.sourceforge.net/jcl/?rev=2752&view=rev Author: uschuster Date: 2009-05-02 09:52:17 +0000 (Sat, 02 May 2009) Log Message: ----------- - removed old horizontal layout stuff (TfrmMain.cboxThread and StackFrame2.pas) - removed some old "debug" code - the viewer got now it's own classes (TStackViewItem* is now TJclStackTraceViewerLocationInfo*) Modified Paths: -------------- branches/jcl-stack-trace/jcl/TODO.txt branches/jcl-stack-trace/jcl/experts/stackviewer/JclDebugSerialization.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackFrame.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerThreadFrame.pas branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml Added Paths: ----------- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerClasses.pas Removed Paths: ------------- branches/jcl-stack-trace/jcl/experts/stackviewer/StackFrame2.dfm branches/jcl-stack-trace/jcl/experts/stackviewer/StackFrame2.pas branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewUnit.pas Modified: branches/jcl-stack-trace/jcl/TODO.txt =================================================================== --- branches/jcl-stack-trace/jcl/TODO.txt 2009-05-01 19:27:56 UTC (rev 2751) +++ branches/jcl-stack-trace/jcl/TODO.txt 2009-05-02 09:52:17 UTC (rev 2752) @@ -12,7 +12,7 @@ ------ * serialization - (Done?) saving/loading - - which classes for the viewer? + - (Done?) which classes for the viewer? (for exam. JclDebug.TJclModuleInfoList vs. JclDebugStackUtils.TModuleList; TJclModuleInfoList doesn't store the module name, because this can be get from the handle which doesn't work in the viewer) @@ -21,9 +21,10 @@ * clean up/minor things - use updated TJclFileEnumerator instead of TFileSearcher - - (partly done) rename some files - - (partly done) add MPL headers - - (partly done) add UNITVERSIONING + - (almost done) rename some files + - (almost done) add MPL headers + - (almost done) add UNITVERSIONING * integrate it into the installation - - commit packages for D5-D7, D9, D10 \ No newline at end of file + - commit packages for D5-D7, D9, D10 + - prevent package generation/installation for C5, C6, CS1, D8 \ No newline at end of file Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclDebugSerialization.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclDebugSerialization.pas 2009-05-01 19:27:56 UTC (rev 2751) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclDebugSerialization.pas 2009-05-02 09:52:17 UTC (rev 2752) @@ -107,10 +107,12 @@ property Items[AIndex: Integer]: TJclSerializableThreadInfo read GetItems; default; end; - TException = class(TObject) + TException = class(TPersistent) private FExceptionClassName: string; FExceptionMessage: string; + protected + procedure AssignTo(Dest: TPersistent); override; public procedure Clear; procedure Deserialize(ASerializer: TJclCustomSimpleSerializer); @@ -119,7 +121,7 @@ property ExceptionMessage: string read FExceptionMessage write FExceptionMessage; end; - TModule = class(TObject) + TModule = class(TPersistent) private FStartStr: string; FEndStr: string; @@ -128,6 +130,8 @@ FBinFileVersion: string; FFileVersion: string; FFileDescription: string; + protected + procedure AssignTo(Dest: TPersistent); override; public procedure Deserialize(ASerializer: TJclCustomSimpleSerializer); procedure Serialize(ASerializer: TJclCustomSimpleSerializer); @@ -140,11 +144,13 @@ property FileDescription: string read FFileDescription write FFileDescription; end; - TModuleList = class(TObject) + TModuleList = class(TPersistent) private FItems: TObjectList; function GetCount: Integer; function GetItems(AIndex: Integer): TModule; + protected + procedure AssignTo(Dest: TPersistent); override; public constructor Create; destructor Destroy; override; @@ -516,6 +522,17 @@ //=== { TException } ========================================================= +procedure TException.AssignTo(Dest: TPersistent); +begin + if Dest is TException then + begin + TException(Dest).FExceptionClassName := FExceptionClassName; + TException(Dest).FExceptionMessage := FExceptionMessage; + end + else + inherited AssignTo(Dest); +end; + procedure TException.Clear; begin FExceptionClassName := ''; @@ -537,6 +554,22 @@ //=== { TModule } ============================================================ +procedure TModule.AssignTo(Dest: TPersistent); +begin + if Dest is TModule then + begin + TModule(Dest).FStartStr := FStartStr; + TModule(Dest).FEndStr := FEndStr; + TModule(Dest).FSystemModuleStr := FSystemModuleStr; + TModule(Dest).FModuleName := FModuleName; + TModule(Dest).FBinFileVersion := FBinFileVersion; + TModule(Dest).FFileVersion := FFileVersion; + TModule(Dest).FFileDescription := FFileDescription; + end + else + inherited AssignTo(Dest); +end; + procedure TModule.Deserialize(ASerializer: TJclCustomSimpleSerializer); begin FStartStr := ASerializer.ReadString(Self, 'StartAddr'); @@ -579,6 +612,20 @@ Result := TModule(FItems.Last); end; +procedure TModuleList.AssignTo(Dest: TPersistent); +var + I: Integer; +begin + if Dest is TModuleList then + begin + TModuleList(Dest).Clear; + for I := 0 to Count - 1 do + TModuleList(Dest).Add.Assign(TModule(FItems[I])); + end + else + inherited AssignTo(Dest); +end; + procedure TModuleList.Clear; begin FItems.Clear; Copied: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerClasses.pas (from rev 2751, branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewUnit.pas) =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerClasses.pas (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerClasses.pas 2009-05-02 09:52:17 UTC (rev 2752) @@ -0,0 +1,228 @@ +{**************************************************************************************************} +{ } +{ Project JEDI Code Library (JCL) } +{ } +{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); } +{ you may not use this file except in compliance with the License. You may obtain a copy of the } +{ License at http://www.mozilla.org/MPL/ } +{ } +{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } +{ ANY KIND, either express or implied. See the License for the specific language governing rights } +{ and limitations under the License. } +{ } +{ The Original Code is JclStackTraceViewerClasses.pas. } +{ } +{ The Initial Developer of the Original Code is Uwe Schuster. } +{ Portions created by Uwe Schuster are Copyright (C) 2009 Uwe Schuster. All rights reserved. } +{ } +{ Contributor(s): } +{ Uwe Schuster (uschuster) } +{ } +{**************************************************************************************************} +{ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } +{ } +{**************************************************************************************************} + +unit JclStackTraceViewerClasses; + +{$I jcl.inc} + +interface + +uses + Contnrs, + {$IFDEF UNITVERSIONING} + JclUnitVersioning, + {$ENDIF UNITVERSIONING} + JclDebug, JclDebugSerialization; + +type + TJclStackTraceViewerLocationInfo = class(TJclLocationInfoEx) + private + FFoundFile: Boolean; + FFileName: string; + FProjectName: string; + FRevision: string; + FTranslatedLineNumber: Integer; + public + property FileName: string read FFileName write FFileName; + property FoundFile: Boolean read FFoundFile write FFoundFile; + property ProjectName: string read FProjectName write FProjectName; + property Revision: string read FRevision write FRevision; + property TranslatedLineNumber: Integer read FTranslatedLineNumber write FTranslatedLineNumber; + end; + + TJclStackTraceViewerLocationInfoList = class(TJclCustomLocationInfoList) + private + FPrepared: Boolean; + function GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; + public + constructor Create; override; + function Add(Addr: Pointer): TJclStackTraceViewerLocationInfo; + property Items[AIndex: Integer]: TJclStackTraceViewerLocationInfo read GetItems; default; + property Prepared: Boolean read FPrepared write FPrepared; + end; + + TJclStackTraceViewerThreadInfo = class(TJclCustomThreadInfo) + private + function GetStack(const AIndex: Integer): TJclStackTraceViewerLocationInfoList; + protected + function GetStackClass: TJclCustomLocationInfoListClass; override; + public + property CreationStack: TJclStackTraceViewerLocationInfoList index 1 read GetStack; + property Stack: TJclStackTraceViewerLocationInfoList index 2 read GetStack; + end; + + TJclStackTraceViewerThreadInfoList = class(TObject) + private + FItems: TObjectList; + function GetItems(AIndex: Integer): TJclStackTraceViewerThreadInfo; + function GetCount: Integer; + public + constructor Create; + destructor Destroy; override; + function Add: TJclStackTraceViewerThreadInfo; + procedure Clear; + property Count: Integer read GetCount; + property Items[AIndex: Integer]: TJclStackTraceViewerThreadInfo read GetItems; default; + end; + + TJclStackTraceViewerExceptionInfo = class(TObject) + private + FException: TException; + FThreadInfoList: TJclStackTraceViewerThreadInfoList; + FModules: TModuleList; + public + constructor Create; + destructor Destroy; override; + procedure AssignExceptionInfo(AExceptionInfo: TExceptionInfo); + property ThreadInfoList: TJclStackTraceViewerThreadInfoList read FThreadInfoList; + property Exception: TException read FException; + property Modules: TModuleList read FModules; + end; + +{$IFDEF UNITVERSIONING} +const + UnitVersioning: TUnitVersionInfo = ( + RCSfile: '$URL: $'; + Revision: '$Revision: $'; + Date: '$Date: $'; + LogPath: '' + ); +{$ENDIF UNITVERSIONING} + +implementation + +//=== { TJclStackTraceViewerLocationInfoList } =============================== + +function TJclStackTraceViewerLocationInfoList.Add(Addr: Pointer): TJclStackTraceViewerLocationInfo; +begin + Result := TJclStackTraceViewerLocationInfo(InternalAdd(Addr)); +end; + +constructor TJclStackTraceViewerLocationInfoList.Create; +begin + inherited Create; + FItemClass := TJclStackTraceViewerLocationInfo; + FOptions := []; + FPrepared := False; +end; + +function TJclStackTraceViewerLocationInfoList.GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; +begin + Result := TJclStackTraceViewerLocationInfo(FItems[AIndex]); +end; + +//=== { TJclStackTraceViewerThreadInfo } ===================================== + +function TJclStackTraceViewerThreadInfo.GetStack(const AIndex: Integer): TJclStackTraceViewerLocationInfoList; +begin + case AIndex of + 1: Result := TJclStackTraceViewerLocationInfoList(FCreationStack); + 2: Result := TJclStackTraceViewerLocationInfoList(FStack); + else + Result := nil; + end; +end; + +function TJclStackTraceViewerThreadInfo.GetStackClass: TJclCustomLocationInfoListClass; +begin + Result := TJclStackTraceViewerLocationInfoList; +end; + +//=== { TJclStackTraceViewerThreadInfoList } ================================= + +constructor TJclStackTraceViewerThreadInfoList.Create; +begin + inherited Create; + FItems := TObjectList.Create; +end; + +destructor TJclStackTraceViewerThreadInfoList.Destroy; +begin + FItems.Free; + inherited Destroy; +end; + +function TJclStackTraceViewerThreadInfoList.Add: TJclStackTraceViewerThreadInfo; +begin + FItems.Add(TJclStackTraceViewerThreadInfo.Create); + Result := TJclStackTraceViewerThreadInfo(FItems.Last); +end; + +procedure TJclStackTraceViewerThreadInfoList.Clear; +begin + FItems.Clear; +end; + +function TJclStackTraceViewerThreadInfoList.GetCount: Integer; +begin + Result := FItems.Count; +end; + +function TJclStackTraceViewerThreadInfoList.GetItems(AIndex: Integer): TJclStackTraceViewerThreadInfo; +begin + Result := TJclStackTraceViewerThreadInfo(FItems[AIndex]); +end; + +//=== { TJclStackTraceViewerExceptionInfo } ================================== + +constructor TJclStackTraceViewerExceptionInfo.Create; +begin + inherited Create; + FException := TException.Create; + FThreadInfoList := TJclStackTraceViewerThreadInfoList.Create; + FModules := TModuleList.Create; +end; + +destructor TJclStackTraceViewerExceptionInfo.Destroy; +begin + FModules.Free; + FException.Free; + FThreadInfoList.Free; + inherited Destroy; +end; + +procedure TJclStackTraceViewerExceptionInfo.AssignExceptionInfo(AExceptionInfo: TExceptionInfo); +var + I: Integer; +begin + FException.Assign(AExceptionInfo.Exception); + FThreadInfoList.Clear; + for I := 0 to AExceptionInfo.ThreadInfoList.Count - 1 do + FThreadInfoList.Add.Assign(AExceptionInfo.ThreadInfoList[I]); + FModules.Assign(AExceptionInfo.Modules); +end; + +{$IFDEF UNITVERSIONING} +initialization + RegisterUnitVersion(HInstance, UnitVersioning); + +finalization + UnregisterUnitVersion(HInstance); +{$ENDIF UNITVERSIONING} + +end. Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm 2009-05-01 19:27:56 UTC (rev 2751) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm 2009-05-02 09:52:17 UTC (rev 2752) @@ -9,17 +9,6 @@ Top = 0 Height = 301 end - object cboxThread: TComboBox - Left = 0 - Top = 33 - Width = 356 - Height = 21 - Style = csDropDownList - ItemHeight = 13 - TabOrder = 0 - Visible = False - OnChange = cboxThreadChange - end object tv: TTreeView Left = 0 Top = 0 @@ -29,7 +18,7 @@ HideSelection = False Indent = 19 ReadOnly = True - TabOrder = 1 + TabOrder = 0 OnChange = tvChange end object StatusBar: TStatusBar @@ -50,7 +39,7 @@ Top = 300 Width = 41 Height = 17 - TabOrder = 3 + TabOrder = 2 Visible = False end object ActionList1: TActionList Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-05-01 19:27:56 UTC (rev 2751) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-05-02 09:52:17 UTC (rev 2752) @@ -40,7 +40,7 @@ JclUnitVersioning, {$ENDIF UNITVERSIONING} JclDebug, JclDebugSerialization, Contnrs, JclStackTraceViewerStackFrame, JclStackTraceViewerModuleFrame, - StackViewUnit, StackFrame2, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, + JclStackTraceViewerClasses, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, JclStackTraceViewerOptions, JclStackTraceViewerAPIImpl, JclOtaUtils , ActiveX @@ -53,7 +53,6 @@ acJumpToCodeLine: TAction; acLoadStack: TAction; OpenDialog1: TOpenDialog; - cboxThread: TComboBox; tv: TTreeView; acOptions: TAction; acUpdateLocalInfo: TAction; @@ -62,17 +61,14 @@ PB: TProgressBar; procedure acJumpToCodeLineExecute(Sender: TObject); procedure acLoadStackExecute(Sender: TObject); - procedure cboxThreadChange(Sender: TObject); procedure tvChange(Sender: TObject; Node: TTreeNode); procedure acOptionsExecute(Sender: TObject); procedure acUpdateLocalInfoExecute(Sender: TObject); private { Private declarations } - FStackItemList: TStackViewItemsList; - FCreationStackItemList: TStackViewItemsList; FTreeViewLinkList: TObjectList; - FThreadInfoList: TJclSerializableThreadInfoList; - FExceptionInfo: TExceptionInfo; + FThreadInfoList: TJclStackTraceViewerThreadInfoList; + FExceptionInfo: TJclStackTraceViewerExceptionInfo; FStackFrame: TfrmStack; FModuleFrame: TfrmModule; FExceptionFrame: TfrmException; @@ -81,7 +77,7 @@ FOptions: TExceptionViewerOption; FRootDir: string; procedure DoProgress(APos, AMax: Integer; const AText: string); - procedure PrepareStack(AStack: TJclSerializableLocationInfoList; AStackItemList: TStackViewItemsList); + procedure PrepareStack(AStack: TJclStackTraceViewerLocationInfoList; AForce: Boolean = False); procedure SetOptions(const Value: TExceptionViewerOption); public { Public declarations } @@ -138,16 +134,16 @@ private FItems: TList; function GetCount: Integer; - function GetItems(AIndex: Integer): TStackViewItem; + function GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; public FoundFile: Boolean; FileName: string; ProjectName: string; constructor Create; destructor Destroy; override; - procedure Add(AStackViewItem: TStackViewItem); + procedure Add(AStackViewItem: TJclStackTraceViewerLocationInfo); property Count: Integer read GetCount; - property Items[AIndex: Integer]: TStackViewItem read GetItems; default; + property Items[AIndex: Integer]: TJclStackTraceViewerLocationInfo read GetItems; default; end; constructor TFindMapping.Create; @@ -162,7 +158,7 @@ inherited Destroy; end; -procedure TFindMapping.Add(AStackViewItem: TStackViewItem); +procedure TFindMapping.Add(AStackViewItem: TJclStackTraceViewerLocationInfo); begin FItems.Add(AStackViewItem); end; @@ -172,21 +168,22 @@ Result := FItems.Count; end; -function TFindMapping.GetItems(AIndex: Integer): TStackViewItem; +function TFindMapping.GetItems(AIndex: Integer): TJclStackTraceViewerLocationInfo; begin Result := FItems[AIndex]; end; -procedure TfrmMain.PrepareStack(AStack: TJclSerializableLocationInfoList; AStackItemList: TStackViewItemsList); +procedure TfrmMain.PrepareStack(AStack: TJclStackTraceViewerLocationInfoList; AForce: Boolean = False); var - I, J, K, Idx, NewLineNumber: Integer; - StackViewItem: TStackViewItem; + I, J, K, Idx: Integer; + StackViewItem: TJclStackTraceViewerLocationInfo; FindFileList: TStringList; FindMapping: TFindMapping; FileName, ProjectName: string; RevisionMS: TMemoryStream; RevisionStream, Stream: IStream; - FS: TFileStream; + MS: TMemoryStream; + SA: TStreamAdapter; S: string; EV: IOTAEnvironmentOptions; @@ -196,198 +193,196 @@ Found: Boolean; RevisionLineNumbers, CurrentLineNumbers: TList; begin - DoProgress(0, 100, ''); - PB.Visible := True; - try - AStackItemList.Clear; - if AStack.Count > 0 then - begin - FindFileList := TStringList.Create; - try - FindFileList.Sorted := True; - //check if the files can be found in a project in the current project group - DoProgress(0, AStack.Count, rsSTVFindFilesInProjectGroup); - for I := 0 to AStack.Count - 1 do - begin - StackViewItem := AStackItemList.Add; - StackViewItem.Assign(AStack[I]); - StackViewItem.Revision := AStack[I].UnitVersionRevision; - Idx := FindFileList.IndexOf(AStack[I].SourceName); - if Idx <> -1 then + if AForce or not AStack.Prepared then + begin + DoProgress(0, 100, ''); + PB.Visible := True; + try + if AStack.Count > 0 then + begin + FindFileList := TStringList.Create; + try + FindFileList.Sorted := True; + //check if the files can be found in a project in the current project group + DoProgress(0, AStack.Count, rsSTVFindFilesInProjectGroup); + for I := 0 to AStack.Count - 1 do begin - FindMapping := TFindMapping(FindFileList.Objects[Idx]); - FindMapping.Add(StackViewItem); - StackViewItem.FoundFile := FindMapping.FoundFile; - StackViewItem.FileName := FindMapping.FileName; - StackViewItem.ProjectName := FindMapping.ProjectName; - end - else - begin - if AStack[I].SourceName <> '' then + StackViewItem := AStack[I]; + StackViewItem.Revision := AStack[I].UnitVersionRevision; + Idx := FindFileList.IndexOf(AStack[I].SourceName); + if Idx <> -1 then begin - DoProgress(I + 1, AStack.Count, Format(rsSTVFindFileInProjectGroup, [AStack[I].SourceName])); - FileName := FindModuleAndProject(AStack[I].SourceName, ProjectName); + FindMapping := TFindMapping(FindFileList.Objects[Idx]); + FindMapping.Add(StackViewItem); + StackViewItem.FoundFile := FindMapping.FoundFile; + StackViewItem.FileName := FindMapping.FileName; + StackViewItem.ProjectName := FindMapping.ProjectName; end else begin - FileName := ''; - ProjectName := ''; - end; - FindMapping := TFindMapping.Create; - FindMapping.Add(StackViewItem); - FindFileList.AddObject(AStack[I].SourceName, FindMapping); - FindMapping.FoundFile := FileName <> ''; - FindMapping.FileName := FileName; - FindMapping.ProjectName := ProjectName; + if AStack[I].SourceName <> '' then + begin + DoProgress(I + 1, AStack.Count, Format(rsSTVFindFileInProjectGroup, [AStack[I].SourceName])); + FileName := FindModuleAndProject(AStack[I].SourceName, ProjectName); + end + else + begin + FileName := ''; + ProjectName := ''; + end; + FindMapping := TFindMapping.Create; + FindMapping.Add(StackViewItem); + FindFileList.AddObject(AStack[I].SourceName, FindMapping); + FindMapping.FoundFile := FileName <> ''; + FindMapping.FileName := FileName; + FindMapping.ProjectName := ProjectName; - StackViewItem.FoundFile := FileName <> ''; - StackViewItem.FileName := FileName; - StackViewItem.ProjectName := ProjectName; + StackViewItem.FoundFile := FileName <> ''; + StackViewItem.FileName := FileName; + StackViewItem.ProjectName := ProjectName; + end; + DoProgress(I + 1, AStack.Count, rsSTVFindFilesInProjectGroup); end; - DoProgress(I + 1, AStack.Count, rsSTVFindFilesInProjectGroup); - end; - //use the build number from the version number as revision number if the revision number is empty - if FOptions.ModuleVersionAsRevision then - begin - for I := 0 to FindFileList.Count - 1 do + //use the build number from the version number as revision number if the revision number is empty + if FOptions.ModuleVersionAsRevision then begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindMapping.Count > 0) and (FindMapping[0].Revision = '') and (FindMapping[0].ModuleName <> '') then + for I := 0 to FindFileList.Count - 1 do begin - Idx := -1; - { TODO -oUSc : Compare full filename when the filename in the stack contains also the path + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindMapping.Count > 0) and (FindMapping[0].Revision = '') and (FindMapping[0].ModuleName <> '') then + begin + Idx := -1; + { TODO -oUSc : Compare full filename when the filename in the stack contains also the path - Why full filenames? + Why full filenames? - It is possible to load - <Path 1>\TestDLL.DLL - <Path 2>\TestDLL.DLL} - for J := 0 to FExceptionInfo.Modules.Count - 1 do - if CompareText(ExtractFileName(FExceptionInfo.Modules[J].ModuleName), ExtractFileName(FindMapping[0].ModuleName)) = 0 then + It is possible to load + <Path 1>\TestDLL.DLL + <Path 2>\TestDLL.DLL} + for J := 0 to FExceptionInfo.Modules.Count - 1 do + if CompareText(ExtractFileName(FExceptionInfo.Modules[J].ModuleName), ExtractFileName(FindMapping[0].ModuleName)) = 0 then + begin + Idx := J; + Break; + end; + if Idx <> -1 then begin - Idx := J; - Break; + S := FExceptionInfo.Modules[Idx].BinFileVersion; + K := Pos('.', S); + if K > 0 then + Delete(S, 1, K); + K := Pos('.', S); + if K > 0 then + Delete(S, 1, K); + K := Pos('.', S); + if K > 0 then + begin + Delete(S, 1, K); + for J := 0 to FindMapping.Count - 1 do + FindMapping[J].Revision := S; + end; end; - if Idx <> -1 then - begin - S := FExceptionInfo.Modules[Idx].BinFileVersion; - K := Pos('.', S); - if K > 0 then - Delete(S, 1, K); - K := Pos('.', S); - if K > 0 then - Delete(S, 1, K); - K := Pos('.', S); - if K > 0 then - begin - Delete(S, 1, K); - for J := 0 to FindMapping.Count - 1 do - FindMapping[J].Revision := S; - end; end; end; end; - end; - //check if the other files can be found in BrowsingPath - Found := False; - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindFileList[I] <> '') and (not FindMapping.FoundFile) then + //check if the other files can be found in BrowsingPath + Found := False; + for I := 0 to FindFileList.Count - 1 do begin - Found := True; - Break; + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindFileList[I] <> '') and (not FindMapping.FoundFile) then + begin + Found := True; + Break; + end; end; - end; - if Found then - begin - FileSearcher := TFileSearcher.Create; - try - BrowsingPaths := TStringList.Create; + if Found then + begin + FileSearcher := TFileSearcher.Create; try - EV := (BorlandIDEServices as IOTAServices).GetEnvironmentOptions; - StrTokenToStrings(EV.Values['BrowsingPath'], ';', BrowsingPaths); - for I := 0 to BrowsingPaths.Count - 1 do - begin - S := BrowsingPaths[I]; - if Pos('$(BDS)', S) > 0 then - S := StringReplace(S, '$(BDS)', RootDir, []); - FileSearcher.SearchPaths.Add(S); + BrowsingPaths := TStringList.Create; + try + EV := (BorlandIDEServices as IOTAServices).GetEnvironmentOptions; + StrTokenToStrings(EV.Values['BrowsingPath'], ';', BrowsingPaths); + for I := 0 to BrowsingPaths.Count - 1 do + begin + S := BrowsingPaths[I]; + if Pos('$(BDS)', S) > 0 then + S := StringReplace(S, '$(BDS)', RootDir, []); + FileSearcher.SearchPaths.Add(S); + end; + finally + BrowsingPaths.Free; end; - finally - BrowsingPaths.Free; - end; - if FileSearcher.SearchPaths.Count > 0 then - begin - for I := 0 to FindFileList.Count - 1 do + if FileSearcher.SearchPaths.Count > 0 then begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindFileList[I] <> '') and (not FindMapping.FoundFile) and (FileSearcher.IndexOf(FindFileList[I]) = -1) then - FileSearcher.Add(FindFileList[I]); - end; - if FileSearcher.Count > 0 then - begin - DoProgress(0, 100, rsSTVFindFilesInBrowsingPath); - FileSearcher.Search; - DoProgress(75, 100, rsSTVFindFilesInBrowsingPath); for I := 0 to FindFileList.Count - 1 do begin FindMapping := TFindMapping(FindFileList.Objects[I]); - if not FindMapping.FoundFile then + if (FindFileList[I] <> '') and (not FindMapping.FoundFile) and (FileSearcher.IndexOf(FindFileList[I]) = -1) then + FileSearcher.Add(FindFileList[I]); + end; + if FileSearcher.Count > 0 then + begin + DoProgress(0, 100, rsSTVFindFilesInBrowsingPath); + FileSearcher.Search; + DoProgress(75, 100, rsSTVFindFilesInBrowsingPath); + for I := 0 to FindFileList.Count - 1 do begin - Idx := FileSearcher.IndexOf(FindFileList[I]); - if (Idx <> -1) and (FileSearcher[Idx].Results.Count > 0) then + FindMapping := TFindMapping(FindFileList.Objects[I]); + if not FindMapping.FoundFile then begin - FindMapping.FoundFile := True; - FindMapping.FileName := FileSearcher[Idx].Results[0]; - FindMapping.ProjectName := ''; - for J := 0 to FindMapping.Count - 1 do + Idx := FileSearcher.IndexOf(FindFileList[I]); + if (Idx <> -1) and (FileSearcher[Idx].Results.Count > 0) then begin - FindMapping[J].FoundFile := FindMapping.FoundFile; - FindMapping[J].FileName := FindMapping.FileName; - FindMapping[J].ProjectName := FindMapping.ProjectName; + FindMapping.FoundFile := True; + FindMapping.FileName := FileSearcher[Idx].Results[0]; + FindMapping.ProjectName := ''; + for J := 0 to FindMapping.Count - 1 do + begin + FindMapping[J].FoundFile := FindMapping.FoundFile; + FindMapping[J].FileName := FindMapping.FileName; + FindMapping[J].ProjectName := FindMapping.ProjectName; + end; end; end; + DoProgress(FindFileList.Count * 3 + I + 1, FindFileList.Count * 4, rsSTVFindFilesInBrowsingPath); end; - DoProgress(FindFileList.Count * 3 + I + 1, FindFileList.Count * 4, rsSTVFindFilesInBrowsingPath); end; end; + finally + FileSearcher.Free; end; - finally - FileSearcher.Free; end; - end; - DoProgress(0, FindFileList.Count, ''); - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindMapping.FoundFile) and (FindMapping.Count > 0) {and (FindMapping[0].Revision <> '')} then//todo - check revision + DoProgress(0, FindFileList.Count, ''); + for I := 0 to FindFileList.Count - 1 do begin - Found := False; - for J := 0 to FindMapping.Count - 1 do - if FindMapping[J].LineNumber > 0 then - begin - Found := True; - Break; - end; - if Found then + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindMapping.FoundFile) and (FindMapping.Count > 0) and (FindMapping[0].Revision <> '') then begin - Stream := GetFileEditorContent(FindMapping.FileName); - if not Assigned(Stream) then + Found := False; + for J := 0 to FindMapping.Count - 1 do + if FindMapping[J].LineNumber > 0 then + begin + Found := True; + Break; + end; + if Found then begin - if FileExists(FindMapping.FileName) then + Stream := GetFileEditorContent(FindMapping.FileName); + if not Assigned(Stream) then begin - (BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('Using %s', [FindMapping.FileName]));//todo - remove - FS := TFileStream.Create(FindMapping.FileName, fmOpenRead); - Stream := TStreamAdapter.Create(FS); + if FileExists(FindMapping.FileName) then + begin + SA := TStreamAdapter.Create(TMemoryStream.Create, soOwned); + Stream := SA; + MS := TMemoryStream(SA.Stream); + MS.LoadFromFile(FindMapping.FileName); + end; end; - end - else - FS := nil; - try - if Assigned(Stream) and (FS = nil) then//todo - remove FS = nil + if Assigned(Stream) then begin RevisionLineNumbers := TList.Create; CurrentLineNumbers := TList.Create; @@ -398,13 +393,10 @@ RevisionMS := TMemoryStream.Create; try RevisionStream := TStreamAdapter.Create(RevisionMS); - (BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F1 %s', [FindMapping.FileName]));//todo - remove if GetRevisionContent(FindMapping.FileName, FindMapping[0].Revision, RevisionStream) then begin - (BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F2 %s', [FindMapping.FileName]));//todo - remove if TranslateLineNumbers(RevisionStream, Stream, RevisionLineNumbers, CurrentLineNumbers) > 0 then begin - (BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F3 %s', [FindMapping.FileName]));//todo - remove if RevisionLineNumbers.Count = CurrentLineNumbers.Count then begin for J := 0 to FindMapping.Count - 1 do @@ -429,22 +421,20 @@ CurrentLineNumbers.Free; end; end; - finally - FS.Free; end; - StackViewItem.TranslatedLineNumber := NewLineNumber; end; + DoProgress(I + 1, FindFileList.Count, ''); end; - DoProgress(I + 1, FindFileList.Count, ''); + finally + for I := 0 to FindFileList.Count - 1 do + FindFileList.Objects[I].Free; + FindFileList.Free; end; - finally - for I := 0 to FindFileList.Count - 1 do - FindFileList.Objects[I].Free; - FindFileList.Free; end; + AStack.Prepared := True; + finally + PB.Visible := False; end; - finally - PB.Visible := False; end; end; @@ -479,13 +469,15 @@ var TreeViewLink: TTreeViewLink; NewControl: TControl; - ThreadInfo: TJclSerializableThreadInfo; + ThreadInfo: TJclStackTraceViewerThreadInfo; + ForceStackUpdate: Boolean; begin inherited; NewControl := nil; if Assigned(tv.Selected) and Assigned(tv.Selected.Data) and (TObject(tv.Selected.Data) is TTreeViewLink) then begin + ForceStackUpdate := Sender = acUpdateLocalInfo; TreeViewLink := TTreeViewLink(tv.Selected.Data); if (TreeViewLink.Kind = tvlkModuleList) and (TreeViewLink.Data is TModuleList) then begin @@ -493,22 +485,22 @@ FModuleFrame.ModuleList := TModuleList(TreeViewLink.Data); end else - if (TreeViewLink.Kind = tvlkThread) and (TreeViewLink.Data is TJclSerializableThreadInfo) then + if (TreeViewLink.Kind = tvlkThread) and (TreeViewLink.Data is TJclStackTraceViewerThreadInfo) then begin - ThreadInfo := TJclSerializableThreadInfo(TreeViewLink.Data); + ThreadInfo := TJclStackTraceViewerThreadInfo(TreeViewLink.Data); NewControl := FThreadFrame; - PrepareStack(ThreadInfo.CreationStack, FCreationStackItemList); + PrepareStack(ThreadInfo.CreationStack, ForceStackUpdate); if tioCreationStack in ThreadInfo.Values then - FThreadFrame.CreationStackList := FCreationStackItemList + FThreadFrame.CreationStackList := ThreadInfo.CreationStack else FThreadFrame.CreationStackList := nil; if TreeViewLink.Data = FThreadInfoList[0] then FThreadFrame.Exception := FExceptionInfo.Exception else FThreadFrame.Exception := nil; - PrepareStack(ThreadInfo.Stack, FStackItemList); + PrepareStack(ThreadInfo.Stack, ForceStackUpdate); if tioStack in ThreadInfo.Values then - FThreadFrame.StackList := FStackItemList + FThreadFrame.StackList := ThreadInfo.Stack else FThreadFrame.StackList := nil; end @@ -519,10 +511,10 @@ FExceptionFrame.Exception := TException(TreeViewLink.Data); end else - if (TreeViewLink.Kind in [tvlkThreadStack, tvlkThreadCreationStack]) and (TreeViewLink.Data is TJclSerializableLocationInfoList) then + if (TreeViewLink.Kind in [tvlkThreadStack, tvlkThreadCreationStack]) and (TreeViewLink.Data is TJclStackTraceViewerLocationInfoList) then begin - PrepareStack(TJclSerializableLocationInfoList(TreeViewLink.Data), FStackItemList); - FStackFrame.StackList := FStackItemList; + PrepareStack(TJclStackTraceViewerLocationInfoList(TreeViewLink.Data), ForceStackUpdate); + FStackFrame.StackList := TJclStackTraceViewerLocationInfoList(TreeViewLink.Data); NewControl := FStackFrame; end; end; @@ -546,10 +538,8 @@ constructor TfrmMain.Create(AOwner: TComponent); begin inherited Create(AOwner); - FExceptionInfo := TExceptionInfo.Create; + FExceptionInfo := TJclStackTraceViewerExceptionInfo.Create; FThreadInfoList := FExceptionInfo.ThreadInfoList; - FStackItemList := TStackViewItemsList.Create; - FCreationStackItemList := TStackViewItemsList.Create; FTreeViewLinkList := TObjectList.Create; FStackFrame := TfrmStack.Create(Self); FStackFrame.Name := 'StackFrameSingle'; @@ -590,8 +580,6 @@ begin FOptions.Free; FTreeViewLinkList.Free; - FStackItemList.Free; - FCreationStackItemList.Free; FExceptionInfo.Free; inherited Destroy; end; @@ -607,14 +595,12 @@ tn, tns: TTreeNode; TreeViewLink: TTreeViewLink; XMLDeserializer: TJclXMLDeserializer; + SerializeExceptionInfo: TExceptionInfo; begin inherited; if OpenDialog1.Execute then begin FStackFrame.StackList := nil; - FStackItemList.Clear; - FCreationStackItemList.Clear; - cboxThread.Items.Clear; tv.Selected := nil; tv.Items.Clear; FTreeViewLinkList.Clear; @@ -630,13 +616,18 @@ FS.Free; end; {$ENDIF ~COMPILER12_UP} - //FExceptionInfo.LoadFromString(SS.DataString); - XMLDeserializer := TJclXMLDeserializer.Create('ExceptInfo'); + SerializeExceptionInfo := TExceptionInfo.Create; try - XMLDeserializer.LoadFromString(SS.DataString); - FExceptionInfo.Deserialize(XMLDeserializer); + XMLDeserializer := TJclXMLDeserializer.Create('ExceptInfo'); + try + XMLDeserializer.LoadFromString(SS.DataString); + SerializeExceptionInfo.Deserialize(XMLDeserializer); + finally + XMLDeserializer.Free; + end; + FExceptionInfo.AssignExceptionInfo(SerializeExceptionInfo); finally - XMLDeserializer.Free; + SerializeExceptionInfo.Free; end; FTreeViewLinkList.Add(TTreeViewLink.Create); @@ -648,14 +639,8 @@ if FThreadInfoList.Count > 0 then begin - { for I := 0 to FThreadInfoList.Count - 1 do - cboxThread.Items.AddObject(Format('[%d/%d] ThreadID: %d [%d]', [I + 1, FThreadInfoList.Count, - FThreadInfoList[I].ThreadID, FThreadInfoList[I].Stack.Count]), FThreadInfoList[I]); - } - for I := 0 to FThreadInfoList.Count - 1 do begin - cboxThread.Items.AddObject(Format('[%d/%d] %s', [I + 1, FThreadInfoList.Count, ''{FThreadInfoList[I].AsString}]), FThreadInfoList[I]); if tioIsMainThread in FThreadInfoList[I].Values then S := '[MainThread]' else @@ -701,9 +686,6 @@ if FOptions.ExpandTreeView then tn.Expanded := True; end; - - cboxThread.ItemIndex := 0; - cboxThreadChange(nil); end; finally SS.Free; @@ -720,23 +702,9 @@ procedure TfrmMain.acUpdateLocalInfoExecute(Sender: TObject); begin inherited; - tvChange(nil, nil); + tvChange(Sender, nil); end; -procedure TfrmMain.cboxThreadChange(Sender: TObject); -begin - inherited; - {//todo - if (cboxThread.ItemIndex <> -1) and (cboxThread.Items.Objects[cboxThread.ItemIndex] is TJclThreadInfo) then - StackListToListBox(TJclThreadInfo(cboxThread.Items.Objects[cboxThread.ItemIndex]).Stack) - else - begin - lbStack.Items.Clear; - FStackItemList.Clear; - end; - } -end; - procedure TfrmMain.DoProgress(APos, AMax: Integer; const AText: string); begin PB.Max := AMax; Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackFrame.pas 2009-05-01 19:27:56 UTC (rev 2751) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerStackFrame.pas 2009-05-02 09:52:17 UTC (rev 2752) @@ -38,7 +38,7 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - JclDebug, StackViewUnit, StackCodeUtils; + JclDebug, JclStackTraceViewerClasses, StackCodeUtils; type TfrmStack = class(TFrame) @@ -47,17 +47,17 @@ procedure lvChange(Sender: TObject; Item: TListItem; Change: TItemChange); private { Private declarations } - FStackList: TStackViewItemsList; + FStackList: TJclStackTraceViewerLocationInfoList; FOnSelectStackLine: TNotifyEvent; procedure DoSelectStackLine; - procedure SetStackList(const Value: TStackViewItemsList); - function GetSelected: TStackViewItem; + procedure SetStackList(const Value: TJclStackTraceViewerLocationInfoList); + function GetSelected: TJclStackTraceViewerLocationInfo; public { Public declarations } procedure LoadState(AIni: TCustomIniFile; const ASection, APrefix: string); procedure SaveState(AIni: TCustomIniFile; const ASection, APrefix: string); - property StackList: TStackViewItemsList read FStackList write SetStackList; - property Selected: TStackViewItem read GetSelected; + property StackList: TJclStackTraceViewerLocationInfoList read FStackList write SetStackList; + property Selected: TJclStackTraceViewerLocationInfo read GetSelected; property OnSelectStackLine: TNotifyEvent read FOnSelectStackLine write FOnSelectStackLine; end; @@ -83,10 +83,10 @@ FOnSelectStackLine(Self); end; -function TfrmStack.GetSelected: TStackViewItem; +function TfrmStack.GetSelected: TJclStackTraceViewerLocationInfo; begin - if Assigned(lv.Selected) and Assigned(lv.Selected.Data) and (TObject(lv.Selected.Data) is TStackViewItem) then - Result := TStackViewItem(lv.Selected.Data) + if Assigned(lv.Selected) and Assigned(lv.Selected.Data) and (TObject(lv.Selected.Data) is TJclStackTraceViewerLocationInfo) then + Result := TJclStackTraceViewerLocationInfo(lv.Selected.Data) else Result := nil; end; @@ -118,7 +118,7 @@ AIni.WriteInteger(ASection, Format(APrefix + 'ColumnWidth%d', [I]), lv.Columns.Items[I].Width); end; -procedure TfrmStack.SetStackList(const Value: TStackViewItemsList); +procedure TfrmStack.SetStackList(const Value: TJclStackTraceViewerLocationInfoList); var I: Integer; ListItem: TListItem; Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerThreadFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerThreadFrame.pas 2009-05-01 19:27:56 UTC (rev 2751) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerThreadFrame.pas 2009-05-02 09:52:17 UTC (rev 2752) @@ -38,7 +38,7 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - JclDebugSerialization, StackViewUnit, JclStackTraceViewerStackFrame, JclStackTraceViewerExceptInfoFrame; + JclDebugSerialization, JclStackTraceViewerClasses, JclStackTraceViewerStackFrame, JclStackTraceViewerExceptInfoFrame; type TfrmThread = class(TFrame) @@ -50,16 +50,16 @@ FCreationStackFrame: TfrmStack; FExceptionFrame: TfrmException; FStackFrame: TfrmStack; - FCreationStackList: TStackViewItemsList; - FStackList: TStackViewItemsList; + FCreationStackList: TJclStackTraceViewerLocationInfoList; + FStackList: TJclStackTraceViewerLocationInfoList; FException: TException; FLastStackFrame: TObject; FCreationStackHeight: Integer; procedure SaveSplitterState; - procedure SetCreationStackList(const Value: TStackViewItemsList); + procedure SetCreationStackList(const Value: TJclStackTraceViewerLocationInfoList); procedure SetException(const Value: TException); - procedure SetStackList(const Value: TStackViewItemsList); - function GetSelected: TStackViewItem; + procedure SetStackList(const Value: TJclStackTraceViewerLocationInfoList); + function GetSelected: TJclStackTraceViewerLocationInfo; procedure HandleStackSelection(ASender: TObject); procedure UpdateSplitterState; { Private declarations } @@ -68,10 +68,10 @@ constructor Create(AOwner: TComponent); override; procedure LoadState(AIni: TCustomIniFile; const ASection: string); procedure SaveState(AIni: TCustomIniFile; const ASection: string); - property CreationStackList: TStackViewItemsList read FCreationStackList write SetCreationStackList; + property CreationStackList: TJclStackTraceViewerLocationInfoList read FCreationStackList write SetCreationStackList; property Exception: TException read FException write SetException; - property StackList: TStackViewItemsList read FStackList write SetStackList; - property Selected: TStackViewItem read GetSelected; + property StackList: TJclStackTraceViewerLocationInfoList read FStackList write SetStackList; + property Selected: TJclStackTraceViewerLocationInfo read GetSelected; end; {$IFDEF UNITVERSIONING} @@ -110,7 +110,7 @@ FLastStackFrame := nil; end; -function TfrmThread.GetSelected: TStackViewItem; +function TfrmThread.GetSelected: TJclStackTraceViewerLocationInfo; begin if (FLastStackFrame = FStackFrame) and FStackFrame.Visible and Assigned(FStackFrame.Selected) then Result := FStackFrame.Selected @@ -148,7 +148,7 @@ FCreationStackFrame.SaveState(AIni, ASection, 'CreationStackFrameThread'); end; -procedure TfrmThread.SetCreationStackList(const Value: TStackViewItemsList); +procedure TfrmThread.SetCreationStackList(const Value: TJclStackTraceViewerLocationInfoList); begin FCreationStackList := Value; FCreationStackFrame.StackList := FCreationStackList; @@ -164,7 +164,7 @@ pnlExceptInfo.Visible := Assigned(FException); end; -procedure TfrmThread.SetStackList(const Value: TStackViewItemsList); +procedure TfrmThread.SetStackList(const Value: TJclStackTraceViewerLocationInfoList); begin FStackList := Value; FStackFrame.StackList := FStackList; Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas 2009-05-01 19:27:56 UTC (rev 2751) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas 2009-05-02 09:52:17 UTC (rev 2752) @@ -11,12 +11,12 @@ {$ENDIF !BDS} ActiveX, ToolsAPI, JclOtaUtils, - StackViewUnit; + JclStackTraceViewerClasses; function FindModule(const AFileName: string): string; function FindModuleAndProject(const AFileName: string; var AProjectName: string): string; function GetFileEditorContent(const AFileName: string): IStream; -procedure JumpToCode(AStackViewItem: TStackViewItem); +procedure JumpToCode(AStackViewItem: TJclStackTraceViewerLocationInfo); implementation @@ -149,7 +149,7 @@ end; end; -procedure JumpToCode(AStackViewItem: TStackViewItem); +procedure JumpToCode(AStackViewItem: TJclStackTraceViewerLocationInfo); var S, FileName, ProjectName: string; Module: IOTAModule; Deleted: branches/jcl-stack-trace/jcl/experts/stackviewer/StackFrame2.dfm =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/StackFrame2.dfm 2009-05-01 19:27:56 UTC (rev 2751) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/StackFrame2.dfm 2009-05-02 09:52:17 UTC (rev 2752) @@ -1,20 +0,0 @@ -object frmStack2: TfrmStack2 - Left = 0 - Top = 0 - Width = 320 - Height = 240 - TabOrder = 0 - object lbStack: TListBox - Left = 0 - Top = 0 - Width = 320 - Height = 240 - Style = lbOwnerDrawVariable - Align = alClient - ItemHeight = 13 - TabOrder = 0 - OnDblClick = lbStackDblClick - OnDrawItem = lbStackDrawItem - OnMeasureItem = lbStackMeasureItem - end -end Deleted: branches/jcl-stack-trace/jcl/experts/stackviewer/StackFrame2.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/StackFrame2.pas 2009-05-01 19:27:56 UTC (rev 2751) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/StackFrame2.pas 2009-05-02 09:52:17 UTC (rev 2752) @@ -1,109 +0,0 @@ -unit StackFrame2; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, JclDebug, StackViewUnit, StackCodeUtils; - -type - TfrmStack2 = class(TFrame) - lbStack: TListBox; - procedure lbStackDblClick(Sender: TObject); - procedure lbStackDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; - State: TOwnerDrawState); - procedure lbStackMeasureItem(Control: TWinControl; Index: Integer; - var Height: Integer); - private - { Private declarations } - FStackList: TStackViewItemsList; - procedure SetStackList(const Value: TStackViewItemsList); - function GetSelected: TStackViewItem; - public - { Public declarations } - property StackList: TStackViewItemsList read FStackList write SetStackList; - property Selected: TStackViewItem read GetSelected; - end; - -implementation - -{$R *.dfm} - -function TfrmStack2.GetSelected: TStackViewItem; -begin - if (lbStack.ItemIndex <> -1) and (lbStack.Items.Objects[lbStack.ItemIndex] is TStackViewItem) then - Result := TStackViewItem(lbStack.Items.Objects[lbStack.ItemIndex]) - else - Result := nil; -end; - -procedure TfrmStack2.lbStackDblClick(Sender: TObject); -begin - JumpToCode(Selected); -end; - -procedure TfrmStack2.lbStackDrawItem(Control: TWinControl; Index: Integer; - Rect: TRect; State: TOwnerDrawState); -var - ListboxCanvas: TCanvas; - StackItem: TStackViewItem; - BkgColor: TColor; - S: string; - P: Integer; -begin - ListboxCanvas := TListBox(Control).Canvas; - if TListBox(Control).Items.Objects[Index] is TStackViewItem then - begin - StackItem := TStackViewItem(TListBox(Control).Items.Objects[Index]); - S := StackItem.AsString; - P := Pos(']', S); - if P > 0 then - begin - Delete(S, P + 1, 1); - Insert(#13#10, S, P + 1); - end; - if StackItem.FoundFile then - BkgColor := clMoneyGreen - else - BkgColor := clWindow; - end - else - begin - S := TListBox(Control).Items[Index]; - BkgColor := clWindow; - end; - if odSelected in State then - ListboxCanvas.Brush.Color := clHighlight - else - ListboxCanvas.Brush.Color := BkgColor; - ListboxCanvas.FillRect(Rect); - Rect.Left := Rect.Left + 2; - ListboxCanvas.TextRect(Rect, S); -end; - -procedure TfrmStack2.lbStackMeasureItem(Control: TWinControl; Index: Integer; - var Height: Integer); -var - TextHeight: Integer; -begin - TextHeight := TListBox(Control).Canvas.TextHeight('Ay'); - Height := TextHeight * 2 + 1; -end; - -procedure TfrmStack2.SetStackList(const Value: TStackViewItemsList); -var - I: Integer; -begin - FStackList := Value; - lbStack.Items.BeginUpdate; - try - lbStack.Items.Clear; - if Assigned(FStackList) then - for I := 0 to FStackList.Count - 1 do - lbStack.Items.AddObject(FStackList[I].SourceName, FStackList[I]); - finally - lbStack.Items.EndUpdate; - end; -end; - -end. Deleted: branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewUnit.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewUnit.pas 2009-05-01 19:27:56 UTC (rev 2751) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewUnit.pas 2009-05-02 09:52:17 UTC (rev 2752) @@ -1,74 +0,0 @@ -unit StackViewUnit; - -interface - -uses - Contnrs, JclDebug; - -type - TStackViewItem = class(TJclLocationInfoEx) - private - FFoundFile: Boolean; - FFileName: string; - FProjectName: string; - FRevision: string; - FTranslatedLineNumber: Integer; - public - property FileName: string read FFileName write FFileName; - property FoundFile: Boolean read FFoundFile write FFoundFile; - property ProjectName: string read FProjectName write FProjectName; - property Revision: string read FRevision write FRevision; - property TranslatedLineNumber: Integer read FTranslatedLineNumber write FTranslatedLineNumber; - end; - - TStackViewItemsList = class(TObject) - private - FItems: TObjectList; - function GetCount: Integer; - function GetItems(AIndex: Integer): TStackViewItem; - public - constructor Create; - destructor Destroy; override; - function Add: TStackViewItem; - procedure Clear; - property Count: Integer read GetCount; - property Items[AIndex: Integer]: TStackViewItem read GetItems; default; - end; - -implementation - -{ TStackViewItemsList } - -constructor TStackViewItemsList.Create; -begin - FItems := TObjectList.Create; -end; - -destructor TStackViewItemsList.Destroy; -begin - FItems.Free; - inherited Destroy; -end; - -function TStackViewItemsList.Add: TStackViewItem; -begin - FItems.Add(TStackViewItem.Create(nil, nil)); - Result := TStackViewItem(FItems.Last); -end; - -procedure TStackViewItemsList.Clear; -begin - FItems.Clear; -end; - -function TStackViewItemsList.GetCount: Integer; -begin - Result := FItems.Count; -end; - -function TStackViewItemsList.GetItems(AIndex: Integer): TStackViewItem; -begin - Result := TStackViewItem(FItems[AIndex]); -end; - -end. Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk 2009-05-01 19:27:56 UTC (rev 2751) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk 2009-05-02 09:52:17 UTC (rev 2752) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpert-D.xml) - Last generated: 26-04-2009 23:50:24 UTC + Last generated: 02-05-2009 09:40:35 UTC ----------------------------------------------------------------------------- } @@ -51,12 +51,11 @@ JclStackTraceViewerExceptInfoFrame in '..\..\experts\stackviewer\JclStackTraceViewerExceptInfoFrame.pas' {frmException: TFrame}, JclStackTraceViewerStackFrame in '..\..\experts\stackviewer\JclStackTraceViewerStackFrame.pas' {frmStack: TFrame}, JclStackTraceViewerThreadFrame in '..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas' {frmThread: TFrame}, - StackFrame2 in '..\..\experts\stackviewer\StackFrame2.pas' {frmStack2: TFrame}, JclStackTraceViewerModuleFrame in '..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas' {frmModule: TFrame}, JclStackTraceViewerMainFormBDS in '..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas' {frmStackView}, JclStackTraceViewerMainFrame in '..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas' {frmMain: TFrame}, JclStackTraceViewerConfigFrame in '..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas' {JclStackTraceViewerConfigFrame: TFrame}, - StackViewUnit in '..\..\experts\stackviewer\StackViewUnit.pas' , + JclStackTraceViewerClasses in '..\..\experts\stackviewer\JclStackTraceViewerClasses.pas' , StackCodeUtils in '..\..\experts\stackviewer\StackCodeUtils.pas' , JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , Modified: branches/jcl-stack-trace/jcl/packages/d11... [truncated message content] |
From: <usc...@us...> - 2009-05-01 19:28:02
|
Revision: 2751 http://jcl.svn.sourceforge.net/jcl/?rev=2751&view=rev Author: uschuster Date: 2009-05-01 19:27:56 +0000 (Fri, 01 May 2009) Log Message: ----------- implemented JumpToCode for closed but existing files which are not part of the current project group Modified Paths: -------------- branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas 2009-04-29 22:41:47 UTC (rev 2750) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas 2009-05-01 19:27:56 UTC (rev 2751) @@ -164,40 +164,52 @@ FileName := AStackViewItem.SourceName; ModuleInfo := FindModuleInfoAndProject(FileName, ProjectName); if Assigned(ModuleInfo) then + begin S := ModuleInfo.FileName; - if (S <> '') and Assigned(BorlandIDEServices) then + if (S <> '') and Assigned(BorlandIDEServices) then + begin + {$IFDEF BDS} + Module := (BorlandIDEServices as IOTAModuleServices).OpenModule(S); + {$ELSE !BDS} + Module := ModuleInfo.OpenModule; + {$ENDIF !BDS} + end; + end + else + if AStackViewItem.FoundFile then begin {$IFDEF BDS} - Module := (BorlandIDEServices as IOTAModuleServices).OpenModule(S); + Module := (BorlandIDEServices as IOTAModuleServices).OpenModule(AStackViewItem.FileName); {$ELSE !BDS} - Module := ModuleInfo.OpenModule; + (BorlandIDEServices as IOTAActionServices).OpenFile(AStackViewItem.FileName); + Module := (BorlandIDEServices as IOTAModuleServices).FindModule(AStackViewItem.FileName); {$ENDIF !BDS} - if Assigned(Module) then - begin - {$IFDEF BDS} - Module.Show; - {$ENDIF BDS} - for I := 0 to Module.GetModuleFileCount - 1 do - if Supports(Module.GetModuleFileEditor(I), IOTASourceEditor, SourceEditor) then + end; + if Assigned(Module) then + begin + {$IFDEF BDS} + Module.Show; + {$ENDIF BDS} + for I := 0 to Module.GetModuleFileCount - 1 do + if Supports(Module.GetModuleFileEditor(I), IOTASourceEditor, SourceEditor) then + begin + SourceEditor.Show; + if SourceEditor.EditViewCount > 0 then begin - SourceEditor.Show; - if SourceEditor.EditViewCount > 0 then + if AStackViewItem.TranslatedLineNumber > 0 then + LineNumber := AStackViewItem.TranslatedLineNumber + else + LineNumber := AStackViewItem.LineNumber; + if LineNumber > 0 then begin - if AStackViewItem.TranslatedLineNumber > 0 then - LineNumber := AStackViewItem.TranslatedLineNumber - else - LineNumber := AStackViewItem.LineNumber; - if LineNumber > 0 then - begin - SourceEditor.EditViews[0].Center(LineNumber, 1); - EditPos.Line := LineNumber; - EditPos.Col := 1; - SourceEditor.EditViews[0].CursorPos := EditPos; - end; + SourceEditor.EditViews[0].Center(LineNumber, 1); + EditPos.Line := LineNumber; + EditPos.Col := 1; + SourceEditor.EditViews[0].CursorPos := EditPos; end; - Break; end; - end; + Break; + end; end; end; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-04-29 22:41:48
|
Revision: 2750 http://jcl.svn.sourceforge.net/jcl/?rev=2750&view=rev Author: uschuster Date: 2009-04-29 22:41:47 +0000 (Wed, 29 Apr 2009) Log Message: ----------- implemented StackCodeUtils.pas functions for the old IDE Modified Paths: -------------- branches/jcl-stack-trace/jcl/TODO.txt branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas Modified: branches/jcl-stack-trace/jcl/TODO.txt =================================================================== --- branches/jcl-stack-trace/jcl/TODO.txt 2009-04-29 20:21:19 UTC (rev 2749) +++ branches/jcl-stack-trace/jcl/TODO.txt 2009-04-29 22:41:47 UTC (rev 2750) @@ -20,7 +20,6 @@ * icon's * clean up/minor things - - implement StackCodeUtils.pas functions for the old IDE - use updated TJclFileEnumerator instead of TFileSearcher - (partly done) rename some files - (partly done) add MPL headers Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas 2009-04-29 20:21:19 UTC (rev 2749) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas 2009-04-29 22:41:47 UTC (rev 2750) @@ -5,7 +5,13 @@ interface uses - SysUtils, ActiveX, ToolsAPI, StackViewUnit; + SysUtils, + {$IFNDEF BDS} + Classes, + {$ENDIF !BDS} + ActiveX, ToolsAPI, + JclOtaUtils, + StackViewUnit; function FindModule(const AFileName: string): string; function FindModuleAndProject(const AFileName: string; var AProjectName: string): string; @@ -14,13 +20,13 @@ implementation -function FindModuleInProject(AProject: IOTAProject; const AFileName: string): string; +function FindModuleInfoInProject(AProject: IOTAProject; const AFileName: string): IOTAModuleInfo; var I, P: Integer; ModuleInfo: IOTAModuleInfo; S, S2: string; begin - Result := ''; + Result := nil; if AProject.GetModuleCount > 0 then begin S := UpperCase(AFileName); @@ -33,7 +39,7 @@ P := Pos(S, S2); if (P > 0) and (P = Length(S2) - Length(S) + 1) then begin - Result := ModuleInfo.FileName; + Result := ModuleInfo; Break; end; end; @@ -48,75 +54,131 @@ Result := FindModuleAndProject(AFilename, Dummy); end; -function FindModuleAndProject(const AFileName: string; var AProjectName: string): string; +function FindModuleInfoAndProject(const AFileName: string; var AProjectName: string): IOTAModuleInfo; var I: Integer; ProjectGroup: IOTAProjectGroup; begin - Result := ''; + Result := nil; AProjectName := ''; {$IFDEF BDS} ProjectGroup := (BorlandIDEServices as IOTAModuleServices).MainProjectGroup; + {$ELSE !BDS} + ProjectGroup := TJclOTAExpertBase.GetProjectGroup; + {$ENDIF !BDS} if Assigned(ProjectGroup) then for I := 0 to ProjectGroup.ProjectCount - 1 do begin - Result := FindModuleInProject(ProjectGroup.Projects[I], AFileName); - if Result <> '' then + Result := FindModuleInfoInProject(ProjectGroup.Projects[I], AFileName); + if Assigned(Result) then begin AProjectName := ProjectGroup.Projects[I].FileName; Break; end; end; - {$ENDIF BDS} end; +function FindModuleAndProject(const AFileName: string; var AProjectName: string): string; +var + ModuleInfo: IOTAModuleInfo; +begin + ModuleInfo := FindModuleInfoAndProject(AFileName, AProjectName); + if Assigned(ModuleInfo) then + Result := ModuleInfo.FileName + else + Result := ''; +end; + function GetFileEditorContent(const AFileName: string): IStream; -{$IFDEF BDS} var I: Integer; Module: IOTAModule; + {$IFDEF BDS} EditorContent: IOTAEditorContent; -{$ENDIF BDS} + {$ELSE !BDS} + ContentPos, ReadCount, BufferSize: Integer; + Buffer: Pointer; + ModuleSourceEditor: IOTASourceEditor; + ModuleReader: IOTAEditReader; + S: TStream; + SA: TStreamAdapter; + {$ENDIF !BDS} begin Result := nil; - {$IFDEF BDS} Module := (BorlandIDEServices as IOTAModuleServices).FindModule(AFileName); if Assigned(Module) then begin + {$IFDEF BDS} for I := 0 to Module.ModuleFileCount - 1 do if Supports(Module.ModuleFileEditors[I], IOTAEditorContent, EditorContent) then begin Result := EditorContent.Content; Break; end; + {$ELSE !BDS} + for I := 0 to Module.GetModuleFileCount - 1 do + if Supports(Module.GetModuleFileEditor(I), IOTASourceEditor, ModuleSourceEditor) then + begin + ModuleReader := ModuleSourceEditor.CreateReader; + if Assigned(ModuleReader) then + begin + ContentPos := 0; + BufferSize := 4096; + SA := TStreamAdapter.Create(TMemoryStream.Create, soOwned); + S := SA.Stream; + Result := SA; + GetMem(Buffer, BufferSize); + try + ReadCount := BufferSize; + while ReadCount = BufferSize do + begin + ReadCount := ModuleReader.GetText(ContentPos, Buffer, ReadCount); + if ReadCount > 0 then + begin + Inc(ContentPos, BufferSize); + S.Write(Buffer^, ReadCount); + end; + end; + finally + FreeMem(Buffer); + end; + end; + Break; + end; + {$ENDIF !BDS} end; - {$ENDIF BDS} end; procedure JumpToCode(AStackViewItem: TStackViewItem); -{$IFDEF BDS} var - S, FileName: string; + S, FileName, ProjectName: string; Module: IOTAModule; + ModuleInfo: IOTAModuleInfo; SourceEditor: IOTASourceEditor; I, LineNumber: Integer; EditPos: TOTAEditPos; -{$ENDIF BDS} begin - {$IFDEF BDS} if Assigned(AStackViewItem) then begin FileName := AStackViewItem.SourceName; - S := FindModule(FileName); + ModuleInfo := FindModuleInfoAndProject(FileName, ProjectName); + if Assigned(ModuleInfo) then + S := ModuleInfo.FileName; if (S <> '') and Assigned(BorlandIDEServices) then begin + {$IFDEF BDS} Module := (BorlandIDEServices as IOTAModuleServices).OpenModule(S); + {$ELSE !BDS} + Module := ModuleInfo.OpenModule; + {$ENDIF !BDS} if Assigned(Module) then begin + {$IFDEF BDS} Module.Show; - for I := 0 to Module.ModuleFileCount - 1 do - if Supports(Module.ModuleFileEditors[I], IOTASourceEditor, SourceEditor) then + {$ENDIF BDS} + for I := 0 to Module.GetModuleFileCount - 1 do + if Supports(Module.GetModuleFileEditor(I), IOTASourceEditor, SourceEditor) then begin SourceEditor.Show; if SourceEditor.EditViewCount > 0 then @@ -138,7 +200,6 @@ end; end; end; - {$ENDIF BDS} end; end. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-04-29 20:21:20
|
Revision: 2749 http://jcl.svn.sourceforge.net/jcl/?rev=2749&view=rev Author: uschuster Date: 2009-04-29 20:21:19 +0000 (Wed, 29 Apr 2009) Log Message: ----------- added progress to PrepareStack Modified Paths: -------------- branches/jcl-stack-trace/jcl/TODO.txt branches/jcl-stack-trace/jcl/experts/common/JclOtaResources.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas Modified: branches/jcl-stack-trace/jcl/TODO.txt =================================================================== --- branches/jcl-stack-trace/jcl/TODO.txt 2009-04-26 23:57:57 UTC (rev 2748) +++ branches/jcl-stack-trace/jcl/TODO.txt 2009-04-29 20:21:19 UTC (rev 2749) @@ -17,9 +17,6 @@ TJclModuleInfoList doesn't store the module name, because this can be get from the handle which doesn't work in the viewer) -* progress for TfrmStackView.PrepareStack - (getting revisions from a real SCM system can take some time) - * icon's * clean up/minor things Modified: branches/jcl-stack-trace/jcl/experts/common/JclOtaResources.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/common/JclOtaResources.pas 2009-04-26 23:57:57 UTC (rev 2748) +++ branches/jcl-stack-trace/jcl/experts/common/JclOtaResources.pas 2009-04-29 20:21:19 UTC (rev 2749) @@ -352,7 +352,7 @@ //=== JclOtaExcDlgRepository.pas ============================================= resourcestring RsRepositoryExcDlgPage = 'Exception dialog'; - + RsRepositoryExcDlgDelphiName = 'Jcl Exception dialog for Delphi'; RsRepositoryExcDlgDelphiDescription = 'Create an exception dialog for your Delphi project'; @@ -373,6 +373,13 @@ rsStackTraceViewerCaption = 'Stack Traces'; rsStackTraceViewerOptionsPageName = 'Stack Trace Viewer'; +//=== JclStackTraceViewerMainFrame.pas ======================================= +resourcestring + rsSTVFindFilesInProjectGroup = 'Find files in active project group'; + rsSTVFindFileInProjectGroup = 'Find %s in active project group'; + rsSTVFindFilesInBrowsingPath = 'Find files in browsing path'; + + {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm 2009-04-26 23:57:57 UTC (rev 2748) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm 2009-04-29 20:21:19 UTC (rev 2749) @@ -7,7 +7,7 @@ object Splitter2: TSplitter Left = 145 Top = 0 - Height = 320 + Height = 301 end object cboxThread: TComboBox Left = 0 @@ -24,7 +24,7 @@ Left = 0 Top = 0 Width = 145 - Height = 320 + Height = 301 Align = alLeft HideSelection = False Indent = 19 @@ -32,6 +32,27 @@ TabOrder = 1 OnChange = tvChange end + object StatusBar: TStatusBar + Left = 0 + Top = 301 + Width = 372 + Height = 19 + Panels = < + item + Width = 100 + end + item + Width = 50 + end> + end + object PB: TProgressBar + Left = 19 + Top = 300 + Width = 41 + Height = 17 + TabOrder = 3 + Visible = False + end object ActionList1: TActionList Left = 56 Top = 216 Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-04-26 23:57:57 UTC (rev 2748) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-04-29 20:21:19 UTC (rev 2749) @@ -58,6 +58,8 @@ acOptions: TAction; acUpdateLocalInfo: TAction; Splitter2: TSplitter; + StatusBar: TStatusBar; + PB: TProgressBar; procedure acJumpToCodeLineExecute(Sender: TObject); procedure acLoadStackExecute(Sender: TObject); procedure cboxThreadChange(Sender: TObject); @@ -78,6 +80,7 @@ FLastControl: TControl; FOptions: TExceptionViewerOption; FRootDir: string; + procedure DoProgress(APos, AMax: Integer; const AText: string); procedure PrepareStack(AStack: TJclSerializableLocationInfoList; AStackItemList: TStackViewItemsList); procedure SetOptions(const Value: TExceptionViewerOption); public @@ -103,7 +106,7 @@ implementation uses - JclOtaConsts, + JclOtaConsts, JclOtaResources, JclStackTraceViewerImpl; {$R *.dfm} @@ -193,239 +196,255 @@ Found: Boolean; RevisionLineNumbers, CurrentLineNumbers: TList; begin - AStackItemList.Clear; - if AStack.Count > 0 then - begin - FindFileList := TStringList.Create; - try - FindFileList.Sorted := True; - //check if the files can be found in a project in the current project group - for I := 0 to AStack.Count - 1 do - begin - StackViewItem := AStackItemList.Add; - StackViewItem.Assign(AStack[I]); - StackViewItem.Revision := AStack[I].UnitVersionRevision; - Idx := FindFileList.IndexOf(AStack[I].SourceName); - if Idx <> -1 then + DoProgress(0, 100, ''); + PB.Visible := True; + try + AStackItemList.Clear; + if AStack.Count > 0 then + begin + FindFileList := TStringList.Create; + try + FindFileList.Sorted := True; + //check if the files can be found in a project in the current project group + DoProgress(0, AStack.Count, rsSTVFindFilesInProjectGroup); + for I := 0 to AStack.Count - 1 do begin - FindMapping := TFindMapping(FindFileList.Objects[Idx]); - FindMapping.Add(StackViewItem); - StackViewItem.FoundFile := FindMapping.FoundFile; - StackViewItem.FileName := FindMapping.FileName; - StackViewItem.ProjectName := FindMapping.ProjectName; - end - else - begin - if AStack[I].SourceName <> '' then - FileName := FindModuleAndProject(AStack[I].SourceName, ProjectName) + StackViewItem := AStackItemList.Add; + StackViewItem.Assign(AStack[I]); + StackViewItem.Revision := AStack[I].UnitVersionRevision; + Idx := FindFileList.IndexOf(AStack[I].SourceName); + if Idx <> -1 then + begin + FindMapping := TFindMapping(FindFileList.Objects[Idx]); + FindMapping.Add(StackViewItem); + StackViewItem.FoundFile := FindMapping.FoundFile; + StackViewItem.FileName := FindMapping.FileName; + StackViewItem.ProjectName := FindMapping.ProjectName; + end else begin - FileName := ''; - ProjectName := ''; + if AStack[I].SourceName <> '' then + begin + DoProgress(I + 1, AStack.Count, Format(rsSTVFindFileInProjectGroup, [AStack[I].SourceName])); + FileName := FindModuleAndProject(AStack[I].SourceName, ProjectName); + end + else + begin + FileName := ''; + ProjectName := ''; + end; + FindMapping := TFindMapping.Create; + FindMapping.Add(StackViewItem); + FindFileList.AddObject(AStack[I].SourceName, FindMapping); + FindMapping.FoundFile := FileName <> ''; + FindMapping.FileName := FileName; + FindMapping.ProjectName := ProjectName; + + StackViewItem.FoundFile := FileName <> ''; + StackViewItem.FileName := FileName; + StackViewItem.ProjectName := ProjectName; end; - FindMapping := TFindMapping.Create; - FindMapping.Add(StackViewItem); - FindFileList.AddObject(AStack[I].SourceName, FindMapping); - FindMapping.FoundFile := FileName <> ''; - FindMapping.FileName := FileName; - FindMapping.ProjectName := ProjectName; - - StackViewItem.FoundFile := FileName <> ''; - StackViewItem.FileName := FileName; - StackViewItem.ProjectName := ProjectName; + DoProgress(I + 1, AStack.Count, rsSTVFindFilesInProjectGroup); end; - end; - //use the build number from the version number as revision number if the revision number is empty - if FOptions.ModuleVersionAsRevision then - begin - for I := 0 to FindFileList.Count - 1 do + //use the build number from the version number as revision number if the revision number is empty + if FOptions.ModuleVersionAsRevision then begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindMapping.Count > 0) and (FindMapping[0].Revision = '') and (FindMapping[0].ModuleName <> '') then + for I := 0 to FindFileList.Count - 1 do begin - Idx := -1; - { TODO -oUSc : Compare full filename when the filename in the stack contains also the path + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindMapping.Count > 0) and (FindMapping[0].Revision = '') and (FindMapping[0].ModuleName <> '') then + begin + Idx := -1; + { TODO -oUSc : Compare full filename when the filename in the stack contains also the path - Why full filenames? + Why full filenames? - It is possible to load - <Path 1>\TestDLL.DLL - <Path 2>\TestDLL.DLL} - for J := 0 to FExceptionInfo.Modules.Count - 1 do - if CompareText(ExtractFileName(FExceptionInfo.Modules[J].ModuleName), ExtractFileName(FindMapping[0].ModuleName)) = 0 then + It is possible to load + <Path 1>\TestDLL.DLL + <Path 2>\TestDLL.DLL} + for J := 0 to FExceptionInfo.Modules.Count - 1 do + if CompareText(ExtractFileName(FExceptionInfo.Modules[J].ModuleName), ExtractFileName(FindMapping[0].ModuleName)) = 0 then + begin + Idx := J; + Break; + end; + if Idx <> -1 then begin - Idx := J; - Break; + S := FExceptionInfo.Modules[Idx].BinFileVersion; + K := Pos('.', S); + if K > 0 then + Delete(S, 1, K); + K := Pos('.', S); + if K > 0 then + Delete(S, 1, K); + K := Pos('.', S); + if K > 0 then + begin + Delete(S, 1, K); + for J := 0 to FindMapping.Count - 1 do + FindMapping[J].Revision := S; + end; end; - if Idx <> -1 then - begin - S := FExceptionInfo.Modules[Idx].BinFileVersion; - K := Pos('.', S); - if K > 0 then - Delete(S, 1, K); - K := Pos('.', S); - if K > 0 then - Delete(S, 1, K); - K := Pos('.', S); - if K > 0 then - begin - Delete(S, 1, K); - for J := 0 to FindMapping.Count - 1 do - FindMapping[J].Revision := S; - end; end; end; end; - end; - //check if the other files can be found in BrowsingPath - Found := False; - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindFileList[I] <> '') and (not FindMapping.FoundFile) then + //check if the other files can be found in BrowsingPath + Found := False; + for I := 0 to FindFileList.Count - 1 do begin - Found := True; - Break; + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindFileList[I] <> '') and (not FindMapping.FoundFile) then + begin + Found := True; + Break; + end; end; - end; - if Found then - begin - FileSearcher := TFileSearcher.Create; - try - BrowsingPaths := TStringList.Create; + if Found then + begin + FileSearcher := TFileSearcher.Create; try - EV := (BorlandIDEServices as IOTAServices).GetEnvironmentOptions; - StrTokenToStrings(EV.Values['BrowsingPath'], ';', BrowsingPaths); - for I := 0 to BrowsingPaths.Count - 1 do - begin - S := BrowsingPaths[I]; - if Pos('$(BDS)', S) > 0 then - S := StringReplace(S, '$(BDS)', RootDir, []); - FileSearcher.SearchPaths.Add(S); + BrowsingPaths := TStringList.Create; + try + EV := (BorlandIDEServices as IOTAServices).GetEnvironmentOptions; + StrTokenToStrings(EV.Values['BrowsingPath'], ';', BrowsingPaths); + for I := 0 to BrowsingPaths.Count - 1 do + begin + S := BrowsingPaths[I]; + if Pos('$(BDS)', S) > 0 then + S := StringReplace(S, '$(BDS)', RootDir, []); + FileSearcher.SearchPaths.Add(S); + end; + finally + BrowsingPaths.Free; end; - finally - BrowsingPaths.Free; - end; - if FileSearcher.SearchPaths.Count > 0 then - begin - for I := 0 to FindFileList.Count - 1 do + if FileSearcher.SearchPaths.Count > 0 then begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindFileList[I] <> '') and (not FindMapping.FoundFile) and (FileSearcher.IndexOf(FindFileList[I]) = -1) then - FileSearcher.Add(FindFileList[I]); - end; - if FileSearcher.Count > 0 then - begin - FileSearcher.Search; for I := 0 to FindFileList.Count - 1 do begin FindMapping := TFindMapping(FindFileList.Objects[I]); - if not FindMapping.FoundFile then + if (FindFileList[I] <> '') and (not FindMapping.FoundFile) and (FileSearcher.IndexOf(FindFileList[I]) = -1) then + FileSearcher.Add(FindFileList[I]); + end; + if FileSearcher.Count > 0 then + begin + DoProgress(0, 100, rsSTVFindFilesInBrowsingPath); + FileSearcher.Search; + DoProgress(75, 100, rsSTVFindFilesInBrowsingPath); + for I := 0 to FindFileList.Count - 1 do begin - Idx := FileSearcher.IndexOf(FindFileList[I]); - if (Idx <> -1) and (FileSearcher[Idx].Results.Count > 0) then + FindMapping := TFindMapping(FindFileList.Objects[I]); + if not FindMapping.FoundFile then begin - FindMapping.FoundFile := True; - FindMapping.FileName := FileSearcher[Idx].Results[0]; - FindMapping.ProjectName := ''; - for J := 0 to FindMapping.Count - 1 do + Idx := FileSearcher.IndexOf(FindFileList[I]); + if (Idx <> -1) and (FileSearcher[Idx].Results.Count > 0) then begin - FindMapping[J].FoundFile := FindMapping.FoundFile; - FindMapping[J].FileName := FindMapping.FileName; - FindMapping[J].ProjectName := FindMapping.ProjectName; + FindMapping.FoundFile := True; + FindMapping.FileName := FileSearcher[Idx].Results[0]; + FindMapping.ProjectName := ''; + for J := 0 to FindMapping.Count - 1 do + begin + FindMapping[J].FoundFile := FindMapping.FoundFile; + FindMapping[J].FileName := FindMapping.FileName; + FindMapping[J].ProjectName := FindMapping.ProjectName; + end; end; end; + DoProgress(FindFileList.Count * 3 + I + 1, FindFileList.Count * 4, rsSTVFindFilesInBrowsingPath); end; end; end; + finally + FileSearcher.Free; end; - finally - FileSearcher.Free; end; - end; - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindMapping.FoundFile) and (FindMapping.Count > 0) {and (FindMapping[0].Revision <> '')} then//todo - check revision + DoProgress(0, FindFileList.Count, ''); + for I := 0 to FindFileList.Count - 1 do begin - Found := False; - for J := 0 to FindMapping.Count - 1 do - if FindMapping[J].LineNumber > 0 then - begin - Found := True; - Break; - end; - if Found then + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindMapping.FoundFile) and (FindMapping.Count > 0) {and (FindMapping[0].Revision <> '')} then//todo - check revision begin - Stream := GetFileEditorContent(FindMapping.FileName); - if not Assigned(Stream) then - begin - if FileExists(FindMapping.FileName) then + Found := False; + for J := 0 to FindMapping.Count - 1 do + if FindMapping[J].LineNumber > 0 then begin -(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('Using %s', [FindMapping.FileName]));//todo - remove - FS := TFileStream.Create(FindMapping.FileName, fmOpenRead); - Stream := TStreamAdapter.Create(FS); + Found := True; + Break; end; - end - else - FS := nil; - try - if Assigned(Stream) and (FS = nil) then//todo - remove FS = nil + if Found then + begin + Stream := GetFileEditorContent(FindMapping.FileName); + if not Assigned(Stream) then begin - RevisionLineNumbers := TList.Create; - CurrentLineNumbers := TList.Create; - try - for J := 0 to FindMapping.Count - 1 do - if FindMapping[J].LineNumber > 0 then - RevisionLineNumbers.Add(Pointer(FindMapping[J].LineNumber)); - RevisionMS := TMemoryStream.Create; + if FileExists(FindMapping.FileName) then + begin + (BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('Using %s', [FindMapping.FileName]));//todo - remove + FS := TFileStream.Create(FindMapping.FileName, fmOpenRead); + Stream := TStreamAdapter.Create(FS); + end; + end + else + FS := nil; + try + if Assigned(Stream) and (FS = nil) then//todo - remove FS = nil + begin + RevisionLineNumbers := TList.Create; + CurrentLineNumbers := TList.Create; try - RevisionStream := TStreamAdapter.Create(RevisionMS); -(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F1 %s', [FindMapping.FileName]));//todo - remove - if GetRevisionContent(FindMapping.FileName, FindMapping[0].Revision, RevisionStream) then - begin -(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F2 %s', [FindMapping.FileName]));//todo - remove - if TranslateLineNumbers(RevisionStream, Stream, RevisionLineNumbers, CurrentLineNumbers) > 0 then + for J := 0 to FindMapping.Count - 1 do + if FindMapping[J].LineNumber > 0 then + RevisionLineNumbers.Add(Pointer(FindMapping[J].LineNumber)); + RevisionMS := TMemoryStream.Create; + try + RevisionStream := TStreamAdapter.Create(RevisionMS); + (BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F1 %s', [FindMapping.FileName]));//todo - remove + if GetRevisionContent(FindMapping.FileName, FindMapping[0].Revision, RevisionStream) then begin -(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F3 %s', [FindMapping.FileName]));//todo - remove - if RevisionLineNumbers.Count = CurrentLineNumbers.Count then + (BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F2 %s', [FindMapping.FileName]));//todo - remove + if TranslateLineNumbers(RevisionStream, Stream, RevisionLineNumbers, CurrentLineNumbers) > 0 then begin - for J := 0 to FindMapping.Count - 1 do - if FindMapping[J].LineNumber > 0 then - begin - FindMapping[J].TranslatedLineNumber := -1; - for K := 0 to RevisionLineNumbers.Count - 1 do - if Integer(RevisionLineNumbers[K]) = FindMapping[J].LineNumber then - begin - FindMapping[J].TranslatedLineNumber := Integer(CurrentLineNumbers[K]); - Break; - end; - end; + (BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F3 %s', [FindMapping.FileName]));//todo - remove + if RevisionLineNumbers.Count = CurrentLineNumbers.Count then + begin + for J := 0 to FindMapping.Count - 1 do + if FindMapping[J].LineNumber > 0 then + begin + FindMapping[J].TranslatedLineNumber := -1; + for K := 0 to RevisionLineNumbers.Count - 1 do + if Integer(RevisionLineNumbers[K]) = FindMapping[J].LineNumber then + begin + FindMapping[J].TranslatedLineNumber := Integer(CurrentLineNumbers[K]); + Break; + end; + end; + end; end; end; + finally + RevisionMS.Free; end; finally - RevisionMS.Free; + RevisionLineNumbers.Free; + CurrentLineNumbers.Free; end; - finally - RevisionLineNumbers.Free; - CurrentLineNumbers.Free; end; + finally + FS.Free; end; - finally - FS.Free; + StackViewItem.TranslatedLineNumber := NewLineNumber; end; - StackViewItem.TranslatedLineNumber := NewLineNumber; end; + DoProgress(I + 1, FindFileList.Count, ''); end; + finally + for I := 0 to FindFileList.Count - 1 do + FindFileList.Objects[I].Free; + FindFileList.Free; end; - finally - for I := 0 to FindFileList.Count - 1 do - FindFileList.Objects[I].Free; - FindFileList.Free; end; + finally + PB.Visible := False; end; end; @@ -527,7 +546,6 @@ constructor TfrmMain.Create(AOwner: TComponent); begin inherited Create(AOwner); -// FThreadInfoList := TThreadInfoList.Create; FExceptionInfo := TExceptionInfo.Create; FThreadInfoList := FExceptionInfo.ThreadInfoList; FStackItemList := TStackViewItemsList.Create; @@ -555,6 +573,9 @@ FThreadFrame.Align := alClient; FThreadFrame.Visible := False; + PB.Parent := StatusBar; + PB.SetBounds(2, 3, 96, 14); + FOptions := TExceptionViewerOption.Create; if Assigned(StackTraceViewerExpert) then begin @@ -571,7 +592,6 @@ FTreeViewLinkList.Free; FStackItemList.Free; FCreationStackItemList.Free; -// FThreadInfoList.Free; FExceptionInfo.Free; inherited Destroy; end; @@ -595,6 +615,7 @@ FStackItemList.Clear; FCreationStackItemList.Clear; cboxThread.Items.Clear; + tv.Selected := nil; tv.Items.Clear; FTreeViewLinkList.Clear; SS := TStringStream.Create(''); @@ -693,7 +714,7 @@ procedure TfrmMain.acOptionsExecute(Sender: TObject); begin inherited; - TJclOTAExpertBase.ConfigurationDialog('Stack Trace Viewer'); + TJclOTAExpertBase.ConfigurationDialog(rsStackTraceViewerOptionsPageName); end; procedure TfrmMain.acUpdateLocalInfoExecute(Sender: TObject); @@ -716,6 +737,14 @@ } end; +procedure TfrmMain.DoProgress(APos, AMax: Integer; const AText: string); +begin + PB.Max := AMax; + PB.Position := APos; + StatusBar.Panels[1].Text := AText; + StatusBar.Update; +end; + {$IFDEF UNITVERSIONING} initialization RegisterUnitVersion(HInstance, UnitVersioning); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-04-26 23:58:08
|
Revision: 2748 http://jcl.svn.sourceforge.net/jcl/?rev=2748&view=rev Author: uschuster Date: 2009-04-26 23:57:57 +0000 (Sun, 26 Apr 2009) Log Message: ----------- some cleanup Modified Paths: -------------- branches/jcl-stack-trace/jcl/experts/common/JclOtaConsts.pas branches/jcl-stack-trace/jcl/experts/common/JclOtaResources.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml Added Paths: ----------- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerAPIImpl.pas Removed Paths: ------------- branches/jcl-stack-trace/jcl/experts/stackviewer/StackLineNumberTranslator.pas Modified: branches/jcl-stack-trace/jcl/experts/common/JclOtaConsts.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/common/JclOtaConsts.pas 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/experts/common/JclOtaConsts.pas 2009-04-26 23:57:57 UTC (rev 2748) @@ -17,6 +17,7 @@ { } { Contributors: } { Florent Ouchet (outchy) } +{ Uwe Schuster (uschuster) } { } {**************************************************************************************************} { } @@ -148,6 +149,12 @@ JclVersionCtrlIconTypeNoIconValue = 'noicon'; JclVersionCtrlIconTypeJclIconValue = 'jclicons'; + //=== Stack Trace Viewer Expert ============================================ + JclStackTraceViewerExpertName = 'JclStackTraceViewerExpert'; + JclStackTraceViewerActionName = 'JCLStackTraceViewerCommand'; + JclStackTraceViewerMenuName = 'JCLStackTraceViewerMenu'; + JclStackTraceViewerDesktopIniSection = 'JclStackTraceViewer'; + {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( Modified: branches/jcl-stack-trace/jcl/experts/common/JclOtaResources.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/common/JclOtaResources.pas 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/experts/common/JclOtaResources.pas 2009-04-26 23:57:57 UTC (rev 2748) @@ -368,6 +368,11 @@ RsActionCategory = 'JEDI Code Library'; RsVersionCtrlSystemName = 'System'; +//=== JclStackTraceViewerImpl.pas ============================================ +resourcestring + rsStackTraceViewerCaption = 'Stack Traces'; + rsStackTraceViewerOptionsPageName = 'Stack Trace Viewer'; + {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( Copied: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerAPIImpl.pas (from rev 2744, branches/jcl-stack-trace/jcl/experts/stackviewer/StackLineNumberTranslator.pas) =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerAPIImpl.pas (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerAPIImpl.pas 2009-04-26 23:57:57 UTC (rev 2748) @@ -0,0 +1,276 @@ +{**************************************************************************************************} +{ } +{ Project JEDI Code Library (JCL) } +{ } +{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); } +{ you may not use this file except in compliance with the License. You may obtain a copy of the } +{ License at http://www.mozilla.org/MPL/ } +{ } +{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } +{ ANY KIND, either express or implied. See the License for the specific language governing rights } +{ and limitations under the License. } +{ } +{ The Original Code is JclStackTraceViewerAPIImpl.pas. } +{ } +{ The Initial Developer of the Original Code is Uwe Schuster. } +{ Portions created by Uwe Schuster are Copyright (C) 2009 Uwe Schuster. All rights reserved. } +{ } +{ Contributor(s): } +{ Uwe Schuster (uschuster) } +{ } +{**************************************************************************************************} +{ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } +{ } +{**************************************************************************************************} + +unit JclStackTraceViewerAPIImpl; + +{$I jcl.inc} + +interface + +uses + Classes, ActiveX, + {$IFDEF UNITVERSIONING} + JclUnitVersioning, + {$ENDIF UNITVERSIONING} + JclStackTraceViewerAPI; + +type + TJclLineNumberTranslators = class(TObject) + private + FIndexList: TList; + FNextIndex: Integer; + FTranslators: TInterfaceList; + function GetCount: Integer; + function GetItems(AIndex: Integer): IJclLineNumberTranslator; + public + constructor Create; + destructor Destroy; override; + function RegisterTranslator(const ATranslator: IJclLineNumberTranslator): Integer; + function TranslateLineNumbers(ARevisionContent, ACurrentContent: IStream; + ARevisionLineNumbers: TList; ACurrentLineNumbers: TList): Integer; + procedure UnregisterTranslator(AIndex: Integer); + property Count: Integer read GetCount; + property Items[AIndex: Integer]: IJclLineNumberTranslator read GetItems; default; + end; + + TJclRevisionProviders = class(TObject) + private + FIndexList: TList; + FNextIndex: Integer; + FTranslators: TInterfaceList; + function GetCount: Integer; + function GetItems(AIndex: Integer): IJclRevisionProvider; + public + constructor Create; + destructor Destroy; override; + function RegisterProvider(const ATranslator: IJclRevisionProvider): Integer; + function GetRevisionContent(const AFileName, ARevision: string; AContent: IStream): Boolean; + procedure UnregisterProvider(AIndex: Integer); + property Count: Integer read GetCount; + property Items[AIndex: Integer]: IJclRevisionProvider read GetItems; default; + end; + +var + LineNumberTranslators: TJclLineNumberTranslators; + RevisionProviders: TJclRevisionProviders; + +function TranslateLineNumbers(ARevisionContent, ACurrentContent: IStream; ARevisionLineNumbers: TList; ACurrentLineNumbers: TList): Integer; +function GetRevisionContent(const AFileName, ARevision: string; AContent: IStream): Boolean; + +{$IFDEF UNITVERSIONING} +const + UnitVersioning: TUnitVersionInfo = ( + RCSfile: '$URL: $'; + Revision: '$Revision: $'; + Date: '$Date: $'; + LogPath: '' + ); +{$ENDIF UNITVERSIONING} + +implementation + +//=== { TJclLineNumberTranslators } ========================================== + +constructor TJclLineNumberTranslators.Create; +begin + inherited Create; + FNextIndex := 1; + FIndexList := TList.Create; + FTranslators := TInterfaceList.Create; +end; + +destructor TJclLineNumberTranslators.Destroy; +begin + FTranslators.Free; + FIndexList.Free; + inherited Destroy; +end; + +function TJclLineNumberTranslators.GetCount: Integer; +begin + Result := FTranslators.Count; +end; + +function TJclLineNumberTranslators.GetItems(AIndex: Integer): IJclLineNumberTranslator; +begin + Result := IJclLineNumberTranslator(FTranslators[AIndex]); +end; + +function TJclLineNumberTranslators.RegisterTranslator(const ATranslator: IJclLineNumberTranslator): Integer; +begin + if Assigned(ATranslator) then + begin + Result := FNextIndex; + Inc(FNextIndex); + FTranslators.Add(ATranslator); + FIndexList.Add(Pointer(Result)); + end + else + Result := -1; +end; + +function TJclLineNumberTranslators.TranslateLineNumbers(ARevisionContent, ACurrentContent: IStream; + ARevisionLineNumbers: TList; ACurrentLineNumbers: TList): Integer; +var + I: Integer; +begin + Result := 0; + for I := 0 to Count - 1 do + begin + Result := Items[I].TranslateLineNumbers(ARevisionContent, ACurrentContent, ARevisionLineNumbers, ACurrentLineNumbers); + if Result > 0 then + Break; + end; +end; + +procedure TJclLineNumberTranslators.UnregisterTranslator(AIndex: Integer); +var + Idx: Integer; +begin + Idx := FIndexList.IndexOf(Pointer(AIndex)); + if Idx <> -1 then + begin + FTranslators.Delete(Idx); + FIndexList.Delete(Idx); + end; +end; + +//=== { TJclRevisionProviders } ============================================== + +constructor TJclRevisionProviders.Create; +begin + inherited Create; + FNextIndex := 1; + FIndexList := TList.Create; + FTranslators := TInterfaceList.Create; +end; + +destructor TJclRevisionProviders.Destroy; +begin + FTranslators.Free; + FIndexList.Free; + inherited Destroy; +end; + +function TJclRevisionProviders.GetCount: Integer; +begin + Result := FTranslators.Count; +end; + +function TJclRevisionProviders.GetItems(AIndex: Integer): IJclRevisionProvider; +begin + Result := IJclRevisionProvider(FTranslators[AIndex]); +end; + +function TJclRevisionProviders.RegisterProvider(const ATranslator: IJclRevisionProvider): Integer; +begin + if Assigned(ATranslator) then + begin + Result := FNextIndex; + Inc(FNextIndex); + FTranslators.Add(ATranslator); + FIndexList.Add(Pointer(Result)); + end + else + Result := -1; +end; + +function TJclRevisionProviders.GetRevisionContent(const AFileName, ARevision: string; AContent: IStream): Boolean; +var + I: Integer; +begin + Result := False; + for I := 0 to Count - 1 do + if Items[I].GetRevisionContent(AFileName, ARevision, AContent) then + begin + Result := True; + Break; + end; +end; + +procedure TJclRevisionProviders.UnregisterProvider(AIndex: Integer); +var + Idx: Integer; +begin + Idx := FIndexList.IndexOf(Pointer(AIndex)); + if Idx <> -1 then + begin + FTranslators.Delete(Idx); + FIndexList.Delete(Idx); + end; +end; + +function RegisterLineNumberTranslator(const ATranslator: IJclLineNumberTranslator): Integer; +begin + Result := LineNumberTranslators.RegisterTranslator(ATranslator); +end; + +function TranslateLineNumbers(ARevisionContent, ACurrentContent: IStream; ARevisionLineNumbers: TList; ACurrentLineNumbers: TList): Integer; +begin + Result := LineNumberTranslators.TranslateLineNumbers(ARevisionContent, ACurrentContent, ARevisionLineNumbers, ACurrentLineNumbers); +end; + +procedure UnregisterLineNumberTranslator(AIndex: Integer); +begin + LineNumberTranslators.UnregisterTranslator(AIndex); +end; + +function GetRevisionContent(const AFileName, ARevision: string; AContent: IStream): Boolean; +begin + Result := RevisionProviders.GetRevisionContent(AFileName, ARevision, AContent); +end; + +function RegisterRevisionProvider(const ATranslator: IJclRevisionProvider): Integer; +begin + Result := RevisionProviders.RegisterProvider(ATranslator); +end; + +procedure UnregisterRevisionProvider(AIndex: Integer); +begin + RevisionProviders.UnregisterProvider(AIndex); +end; + +initialization + {$IFDEF UNITVERSIONING} + RegisterUnitVersion(HInstance, UnitVersioning); + {$ENDIF UNITVERSIONING} + LineNumberTranslators := TJclLineNumberTranslators.Create; + RevisionProviders := TJclRevisionProviders.Create; + RegisterLineNumberTranslatorProc := RegisterLineNumberTranslator; + UnregisterLineNumberTranslatorProc := UnregisterLineNumberTranslator; + RegisterRevisionProviderProc := RegisterRevisionProvider; + UnregisterRevisionProviderProc := UnregisterRevisionProvider; + +finalization + LineNumberTranslators.Free; + RevisionProviders.Free; + {$IFDEF UNITVERSIONING} + UnregisterUnitVersion(HInstance); + {$ENDIF UNITVERSIONING} + +end. Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas 2009-04-26 23:57:57 UTC (rev 2748) @@ -95,23 +95,15 @@ {$R JclStackTraceViewerIcon.res} uses - JclDebug, JclFileUtils, JclOtaConsts, - JclOtaResources; + JclDebug, JclFileUtils, + JclOtaConsts, JclOtaResources; -resourcestring - rsStackTraceViewerCaption = 'Stack Traces';//todo - move to JclOtaResources.pas - -const - JclStackTraceViewerExpertName = 'JclStackTraceViewerExpert';//todo - move to JclOtaConsts.pas - JclStackTraceViewerActionName = 'JCLStackTraceViewerCommand'; - JclStackTraceViewerMenuName = 'JCLStackTraceViewerMenu'; - procedure Register; begin try if Assigned(RegisterFieldAddress) then - RegisterFieldAddress(IDEDesktopIniSection, @frmStackView); - RegisterDesktopFormClass(TfrmStackView, IDEDesktopIniSection, IDEDesktopIniSection); + RegisterFieldAddress(JclStackTraceViewerDesktopIniSection, @frmStackView); + RegisterDesktopFormClass(TfrmStackView, JclStackTraceViewerDesktopIniSection, JclStackTraceViewerDesktopIniSection); StackTraceViewerExpert := TJclStackTraceViewerExpert.Create; RegisterPackageWizard(StackTraceViewerExpert); except @@ -150,8 +142,8 @@ TerminateProc := JclWizardTerminate; if Assigned(RegisterFieldAddress) then - RegisterFieldAddress(IDEDesktopIniSection, @frmStackView); - RegisterDesktopFormClass(TfrmStackView, IDEDesktopIniSection, IDEDesktopIniSection); + RegisterFieldAddress(JclStackTraceViewerDesktopIniSection, @frmStackView); + RegisterDesktopFormClass(TfrmStackView, JclStackTraceViewerDesktopIniSection, JclStackTraceViewerDesktopIniSection); StackTraceViewerExpert := TJclStackTraceViewerExpert.Create; JCLWizardIndex := TJclOTAExpertBase.GetOTAWizardServices.AddWizard(StackTraceViewerExpert); @@ -204,7 +196,7 @@ inherited AddConfigurationPages(AddPageFunc); FOptionsFrame := TJclStackTraceViewerConfigFrame.Create(nil); FOptionsFrame.Options := FOptions; - AddPageFunc(FOptionsFrame, 'Stack Trace Viewer', Self);//todo - resourcestring + AddPageFunc(FOptionsFrame, rsStackTraceViewerOptionsPageName, Self); end; procedure TJclStackTraceViewerExpert.ConfigurationClosed(AControl: TControl; SaveChanges: Boolean); @@ -233,7 +225,6 @@ IDEMenu: TMainMenu; ViewMenu: TMenuItem; Category: string; - ImageBmp: TBitmap; NTAServices: INTAServices; begin inherited RegisterCommands; Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.pas 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.pas 2009-04-26 23:57:57 UTC (rev 2748) @@ -35,17 +35,11 @@ uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Docktoolform, StdCtrls, ComCtrls, Menus, - {PlatformDefaultStyleActnCtrls,} ActnPopup, ActnList, ToolWin, ExtCtrls, IniFiles, ToolsAPI, + ActnPopup, ActnList, ToolWin, ExtCtrls, IniFiles, {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - JclDebug, JclDebugSerialization, Contnrs, JclStackTraceViewerStackFrame, JclStackTraceViewerModuleFrame, - StackViewUnit, StackFrame2, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, - JclStackTraceViewerOptions, - StackLineNumberTranslator, JclOtaUtils - , ActiveX - , FileSearcherUnit, JclStrings, JclDebugXMLDeserializer, JclStackTraceViewerMainFrame - ; + JclStackTraceViewerOptions, JclStackTraceViewerMainFrame; type TfrmStackView = class(TDockableToolbarForm) @@ -77,9 +71,6 @@ var frmStackView: TfrmStackView; -const - IDEDesktopIniSection = 'TStackViewAddIn';//todo - move - {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( @@ -93,6 +84,7 @@ implementation uses + JclOtaConsts, JclStackTraceViewerImpl; {$R *.dfm} @@ -102,7 +94,7 @@ procedure TfrmStackView.FormCreate(Sender: TObject); begin inherited; - DeskSection := IDEDesktopIniSection; + DeskSection := JclStackTraceViewerDesktopIniSection; AutoSave := True; if Assigned(StackTraceViewerExpert) then Icon := StackTraceViewerExpert.Icon; Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.pas 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.pas 2009-04-26 23:57:57 UTC (rev 2748) @@ -35,17 +35,11 @@ uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Docktoolform, StdCtrls, ComCtrls, Menus, - ActnList, ToolWin, ExtCtrls, IniFiles, ToolsAPI, + ActnList, ToolWin, ExtCtrls, IniFiles, {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - JclDebug, JclDebugSerialization, Contnrs, JclStackTraceViewerStackFrame, JclStackTraceViewerModuleFrame, - StackViewUnit, StackFrame2, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, - JclStackTraceViewerOptions, - StackLineNumberTranslator, JclOtaUtils - , ActiveX - , FileSearcherUnit, JclStrings, JclDebugXMLDeserializer, JclStackTraceViewerMainFrame - ; + JclStackTraceViewerOptions, JclStackTraceViewerMainFrame; type TfrmStackView = class(TDockableToolbarForm) @@ -72,9 +66,6 @@ var frmStackView: TfrmStackView; -const - IDEDesktopIniSection = 'TStackViewAddIn';//todo - move - {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( @@ -88,6 +79,7 @@ implementation uses + JclOtaConsts, JclStackTraceViewerImpl; {$R *.dfm} @@ -97,7 +89,7 @@ procedure TfrmStackView.FormCreate(Sender: TObject); begin inherited; - DeskSection := IDEDesktopIniSection; + DeskSection := JclStackTraceViewerDesktopIniSection; AutoSave := True; if Assigned(StackTraceViewerExpert) then Icon := StackTraceViewerExpert.Icon; Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-04-26 23:57:57 UTC (rev 2748) @@ -42,7 +42,7 @@ JclDebug, JclDebugSerialization, Contnrs, JclStackTraceViewerStackFrame, JclStackTraceViewerModuleFrame, StackViewUnit, StackFrame2, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, JclStackTraceViewerOptions, - StackLineNumberTranslator, JclOtaUtils + JclStackTraceViewerAPIImpl, JclOtaUtils , ActiveX , FileSearcherUnit, JclStrings, JclDebugXMLDeserializer ; @@ -90,9 +90,6 @@ property RootDir: string read FRootDir write FRootDir; end; -const - IDEDesktopIniSection = 'TStackViewAddIn';//todo - move - {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( @@ -106,6 +103,7 @@ implementation uses + JclOtaConsts, JclStackTraceViewerImpl; {$R *.dfm} @@ -126,9 +124,9 @@ begin if Assigned(ADesktop) then begin - FStackFrame.LoadState(ADesktop, IDEDesktopIniSection, 'StackFrameSingle'); - FModuleFrame.LoadState(ADesktop, IDEDesktopIniSection); - FThreadFrame.LoadState(ADesktop, IDEDesktopIniSection); + FStackFrame.LoadState(ADesktop, JclStackTraceViewerDesktopIniSection, 'StackFrameSingle'); + FModuleFrame.LoadState(ADesktop, JclStackTraceViewerDesktopIniSection); + FThreadFrame.LoadState(ADesktop, JclStackTraceViewerDesktopIniSection); end; end; @@ -435,9 +433,9 @@ begin if Assigned(ADesktop) then begin - FStackFrame.SaveState(ADesktop, IDEDesktopIniSection, 'StackFrameSingle'); - FModuleFrame.SaveState(ADesktop, IDEDesktopIniSection); - FThreadFrame.SaveState(ADesktop, IDEDesktopIniSection); + FStackFrame.SaveState(ADesktop, JclStackTraceViewerDesktopIniSection, 'StackFrameSingle'); + FModuleFrame.SaveState(ADesktop, JclStackTraceViewerDesktopIniSection); + FThreadFrame.SaveState(ADesktop, JclStackTraceViewerDesktopIniSection); end; end; Deleted: branches/jcl-stack-trace/jcl/experts/stackviewer/StackLineNumberTranslator.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/StackLineNumberTranslator.pas 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/StackLineNumberTranslator.pas 2009-04-26 23:57:57 UTC (rev 2748) @@ -1,226 +0,0 @@ -unit StackLineNumberTranslator; - -interface - -uses - Classes, ActiveX, JclStackTraceViewerAPI; - -type - TJclLineNumberTranslators = class(TObject) - private - FIndexList: TList; - FNextIndex: Integer; - FTranslators: TInterfaceList; - function GetCount: Integer; - function GetItems(AIndex: Integer): IJclLineNumberTranslator; - public - constructor Create; - destructor Destroy; override; - function RegisterTranslator(const ATranslator: IJclLineNumberTranslator): Integer; - function TranslateLineNumbers(ARevisionContent, ACurrentContent: IStream; - ARevisionLineNumbers: TList; ACurrentLineNumbers: TList): Integer; - procedure UnregisterTranslator(AIndex: Integer); - property Count: Integer read GetCount; - property Items[AIndex: Integer]: IJclLineNumberTranslator read GetItems; default; - end; - - TJclRevisionProviders = class(TObject) - private - FIndexList: TList; - FNextIndex: Integer; - FTranslators: TInterfaceList; - function GetCount: Integer; - function GetItems(AIndex: Integer): IJclRevisionProvider; - public - constructor Create; - destructor Destroy; override; - function RegisterProvider(const ATranslator: IJclRevisionProvider): Integer; - function GetRevisionContent(const AFileName, ARevision: string; AContent: IStream): Boolean; - procedure UnregisterProvider(AIndex: Integer); - property Count: Integer read GetCount; - property Items[AIndex: Integer]: IJclRevisionProvider read GetItems; default; - end; - -var - LineNumberTranslators: TJclLineNumberTranslators; - RevisionProviders: TJclRevisionProviders; - -function TranslateLineNumbers(ARevisionContent, ACurrentContent: IStream; ARevisionLineNumbers: TList; ACurrentLineNumbers: TList): Integer; -function GetRevisionContent(const AFileName, ARevision: string; AContent: IStream): Boolean; - -implementation - -{ TJclLineNumberTranslators } - -constructor TJclLineNumberTranslators.Create; -begin - inherited Create; - FNextIndex := 1; - FIndexList := TList.Create; - FTranslators := TInterfaceList.Create; -end; - -destructor TJclLineNumberTranslators.Destroy; -begin - FTranslators.Free; - FIndexList.Free; - inherited Destroy; -end; - -function TJclLineNumberTranslators.GetCount: Integer; -begin - Result := FTranslators.Count; -end; - -function TJclLineNumberTranslators.GetItems(AIndex: Integer): IJclLineNumberTranslator; -begin - Result := IJclLineNumberTranslator(FTranslators[AIndex]); -end; - -function TJclLineNumberTranslators.RegisterTranslator(const ATranslator: IJclLineNumberTranslator): Integer; -begin - if Assigned(ATranslator) then - begin - Result := FNextIndex; - Inc(FNextIndex); - FTranslators.Add(ATranslator); - FIndexList.Add(Pointer(Result)); - end - else - Result := -1; -end; - -function TJclLineNumberTranslators.TranslateLineNumbers(ARevisionContent, ACurrentContent: IStream; - ARevisionLineNumbers: TList; ACurrentLineNumbers: TList): Integer; -var - I: Integer; -begin - Result := 0; - for I := 0 to Count - 1 do - begin - Result := Items[I].TranslateLineNumbers(ARevisionContent, ACurrentContent, ARevisionLineNumbers, ACurrentLineNumbers); - if Result > 0 then - Break; - end; -end; - -procedure TJclLineNumberTranslators.UnregisterTranslator(AIndex: Integer); -var - Idx: Integer; -begin - Idx := FIndexList.IndexOf(Pointer(AIndex)); - if Idx <> -1 then - begin - FTranslators.Delete(Idx); - FIndexList.Delete(Idx); - end; -end; - -{ TJclRevisionProviders } - -constructor TJclRevisionProviders.Create; -begin - inherited Create; - FNextIndex := 1; - FIndexList := TList.Create; - FTranslators := TInterfaceList.Create; -end; - -destructor TJclRevisionProviders.Destroy; -begin - FTranslators.Free; - FIndexList.Free; - inherited Destroy; -end; - -function TJclRevisionProviders.GetCount: Integer; -begin - Result := FTranslators.Count; -end; - -function TJclRevisionProviders.GetItems(AIndex: Integer): IJclRevisionProvider; -begin - Result := IJclRevisionProvider(FTranslators[AIndex]); -end; - -function TJclRevisionProviders.RegisterProvider(const ATranslator: IJclRevisionProvider): Integer; -begin - if Assigned(ATranslator) then - begin - Result := FNextIndex; - Inc(FNextIndex); - FTranslators.Add(ATranslator); - FIndexList.Add(Pointer(Result)); - end - else - Result := -1; -end; - -function TJclRevisionProviders.GetRevisionContent(const AFileName, ARevision: string; AContent: IStream): Boolean; -var - I: Integer; -begin - Result := False; - for I := 0 to Count - 1 do - if Items[I].GetRevisionContent(AFileName, ARevision, AContent) then - begin - Result := True; - Break; - end; -end; - -procedure TJclRevisionProviders.UnregisterProvider(AIndex: Integer); -var - Idx: Integer; -begin - Idx := FIndexList.IndexOf(Pointer(AIndex)); - if Idx <> -1 then - begin - FTranslators.Delete(Idx); - FIndexList.Delete(Idx); - end; -end; - -function RegisterLineNumberTranslator(const ATranslator: IJclLineNumberTranslator): Integer; -begin - Result := LineNumberTranslators.RegisterTranslator(ATranslator); -end; - -function TranslateLineNumbers(ARevisionContent, ACurrentContent: IStream; ARevisionLineNumbers: TList; ACurrentLineNumbers: TList): Integer; -begin - Result := LineNumberTranslators.TranslateLineNumbers(ARevisionContent, ACurrentContent, ARevisionLineNumbers, ACurrentLineNumbers); -end; - -procedure UnregisterLineNumberTranslator(AIndex: Integer); -begin - LineNumberTranslators.UnregisterTranslator(AIndex); -end; - -function GetRevisionContent(const AFileName, ARevision: string; AContent: IStream): Boolean; -begin - Result := RevisionProviders.GetRevisionContent(AFileName, ARevision, AContent); -end; - -function RegisterRevisionProvider(const ATranslator: IJclRevisionProvider): Integer; -begin - Result := RevisionProviders.RegisterProvider(ATranslator); -end; - -procedure UnregisterRevisionProvider(AIndex: Integer); -begin - RevisionProviders.UnregisterProvider(AIndex); -end; - -initialization - LineNumberTranslators := TJclLineNumberTranslators.Create; - RevisionProviders := TJclRevisionProviders.Create; - RegisterLineNumberTranslatorProc := RegisterLineNumberTranslator; - UnregisterLineNumberTranslatorProc := UnregisterLineNumberTranslator; - RegisterRevisionProviderProc := RegisterRevisionProvider; - UnregisterRevisionProviderProc := UnregisterRevisionProvider; - -finalization - LineNumberTranslators.Free; - RevisionProviders.Free; - -end. Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk 2009-04-26 23:57:57 UTC (rev 2748) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpert-D.xml) - Last generated: 26-04-2009 17:39:40 UTC + Last generated: 26-04-2009 23:50:24 UTC ----------------------------------------------------------------------------- } @@ -59,7 +59,7 @@ StackViewUnit in '..\..\experts\stackviewer\StackViewUnit.pas' , StackCodeUtils in '..\..\experts\stackviewer\StackCodeUtils.pas' , JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , - StackLineNumberTranslator in '..\..\experts\stackviewer\StackLineNumberTranslator.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , FileSearcherUnit in '..\..\experts\stackviewer\FileSearcherUnit.pas' , JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj 2009-04-26 23:57:57 UTC (rev 2748) @@ -102,7 +102,7 @@ <DCCReference Include="..\..\experts\stackviewer\StackViewUnit.pas" /> <DCCReference Include="..\..\experts\stackviewer\StackCodeUtils.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> - <DCCReference Include="..\..\experts\stackviewer\StackLineNumberTranslator.pas" /> + <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> <DCCReference Include="..\..\experts\stackviewer\FileSearcherUnit.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr 2009-04-26 23:57:57 UTC (rev 2748) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpertDLL-L.xml) - Last generated: 26-04-2009 17:39:41 UTC + Last generated: 26-04-2009 23:50:24 UTC ----------------------------------------------------------------------------- } @@ -51,7 +51,7 @@ StackViewUnit in '..\..\experts\stackviewer\StackViewUnit.pas' , StackCodeUtils in '..\..\experts\stackviewer\StackCodeUtils.pas' , JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , - StackLineNumberTranslator in '..\..\experts\stackviewer\StackLineNumberTranslator.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , FileSearcherUnit in '..\..\experts\stackviewer\FileSearcherUnit.pas' , JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , Modified: branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj 2009-04-26 23:57:57 UTC (rev 2748) @@ -102,7 +102,7 @@ <DCCReference Include="..\..\experts\stackviewer\StackViewUnit.pas" /> <DCCReference Include="..\..\experts\stackviewer\StackCodeUtils.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> - <DCCReference Include="..\..\experts\stackviewer\StackLineNumberTranslator.pas" /> + <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> <DCCReference Include="..\..\experts\stackviewer\FileSearcherUnit.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk 2009-04-26 23:57:57 UTC (rev 2748) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpert-D.xml) - Last generated: 26-04-2009 16:33:21 UTC + Last generated: 26-04-2009 23:50:24 UTC ----------------------------------------------------------------------------- } @@ -59,7 +59,7 @@ StackViewUnit in '..\..\experts\stackviewer\StackViewUnit.pas' , StackCodeUtils in '..\..\experts\stackviewer\StackCodeUtils.pas' , JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , - StackLineNumberTranslator in '..\..\experts\stackviewer\StackLineNumberTranslator.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , FileSearcherUnit in '..\..\experts\stackviewer\FileSearcherUnit.pas' , JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj 2009-04-26 23:57:57 UTC (rev 2748) @@ -78,7 +78,7 @@ <DCCReference Include="..\..\experts\stackviewer\StackViewUnit.pas" /> <DCCReference Include="..\..\experts\stackviewer\StackCodeUtils.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> - <DCCReference Include="..\..\experts\stackviewer\StackLineNumberTranslator.pas" /> + <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> <DCCReference Include="..\..\experts\stackviewer\FileSearcherUnit.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr 2009-04-26 23:57:57 UTC (rev 2748) @@ -4,7 +4,7 @@ DO NOT EDIT THIS FILE, IT IS GENERATED BY THE PACKAGE GENERATOR ALWAYS EDIT THE RELATED XML FILE (JclStackTraceViewerExpertDLL-L.xml) - Last generated: 26-04-2009 17:39:41 UTC + Last generated: 26-04-2009 23:50:24 UTC ----------------------------------------------------------------------------- } @@ -51,7 +51,7 @@ StackViewUnit in '..\..\experts\stackviewer\StackViewUnit.pas' , StackCodeUtils in '..\..\experts\stackviewer\StackCodeUtils.pas' , JclStackTraceViewerOptions in '..\..\experts\stackviewer\JclStackTraceViewerOptions.pas' , - StackLineNumberTranslator in '..\..\experts\stackviewer\StackLineNumberTranslator.pas' , + JclStackTraceViewerAPIImpl in '..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas' , JclStackTraceViewerAPI in '..\..\experts\stackviewer\JclStackTraceViewerAPI.pas' , FileSearcherUnit in '..\..\experts\stackviewer\FileSearcherUnit.pas' , JclDebugSerialization in '..\..\experts\stackviewer\JclDebugSerialization.pas' , Modified: branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj =================================================================== --- branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj 2009-04-26 23:57:57 UTC (rev 2748) @@ -78,7 +78,7 @@ <DCCReference Include="..\..\experts\stackviewer\StackViewUnit.pas" /> <DCCReference Include="..\..\experts\stackviewer\StackCodeUtils.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" /> - <DCCReference Include="..\..\experts\stackviewer\StackLineNumberTranslator.pas" /> + <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" /> <DCCReference Include="..\..\experts\stackviewer\FileSearcherUnit.pas" /> <DCCReference Include="..\..\experts\stackviewer\JclDebugSerialization.pas" /> Modified: branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml =================================================================== --- branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml 2009-04-26 23:57:57 UTC (rev 2748) @@ -31,7 +31,7 @@ <File Name="..\..\experts\stackviewer\StackViewUnit.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\StackCodeUtils.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\StackLineNumberTranslator.pas" Targets="Windows" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\FileSearcherUnit.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclDebugSerialization.pas" Targets="Windows" Formname="" Condition=""/> Modified: branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml =================================================================== --- branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml 2009-04-26 22:49:01 UTC (rev 2747) +++ branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml 2009-04-26 23:57:57 UTC (rev 2748) @@ -31,7 +31,7 @@ <File Name="..\..\experts\stackviewer\StackViewUnit.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\StackCodeUtils.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerOptions.pas" Targets="Windows" Formname="" Condition=""/> - <File Name="..\..\experts\stackviewer\StackLineNumberTranslator.pas" Targets="Windows" Formname="" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPIImpl.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerAPI.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\FileSearcherUnit.pas" Targets="Windows" Formname="" Condition=""/> <File Name="..\..\experts\stackviewer\JclDebugSerialization.pas" Targets="Windows" Formname="" Condition=""/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-04-26 22:49:06
|
Revision: 2747 http://jcl.svn.sourceforge.net/jcl/?rev=2747&view=rev Author: uschuster Date: 2009-04-26 22:49:01 +0000 (Sun, 26 Apr 2009) Log Message: ----------- some changes for the old IDE (delphi32.exe) Modified Paths: -------------- branches/jcl-stack-trace/jcl/TODO.txt branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml Added Paths: ----------- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.dfm branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.pas Modified: branches/jcl-stack-trace/jcl/TODO.txt =================================================================== --- branches/jcl-stack-trace/jcl/TODO.txt 2009-04-26 17:48:01 UTC (rev 2746) +++ branches/jcl-stack-trace/jcl/TODO.txt 2009-04-26 22:49:01 UTC (rev 2747) @@ -23,7 +23,7 @@ * icon's * clean up/minor things - - add and test desktop state stuff in DLL expert mode + - implement StackCodeUtils.pas functions for the old IDE - use updated TJclFileEnumerator instead of TFileSearcher - (partly done) rename some files - (partly done) add MPL headers Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas 2009-04-26 17:48:01 UTC (rev 2746) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas 2009-04-26 22:49:01 UTC (rev 2747) @@ -38,7 +38,12 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - JclOtaUtils, JclStackTraceViewerMainFormBDS, JclStackTraceViewerConfigFrame, JclStackTraceViewerOptions; + {$IFDEF BDS} + JclStackTraceViewerMainFormBDS, + {$ELSE ~BDS} + JclStackTraceViewerMainFormDelphi, + {$ENDIF ~BDS} + JclOtaUtils, JclStackTraceViewerConfigFrame, JclStackTraceViewerOptions; type TJclStackTraceViewerExpert = class(TJclOTAExpert) @@ -137,7 +142,6 @@ end; end; -{ TODO -oUSc : test desktop state stuff (RegisterFieldAddress and RegisterDesktopFormClass) } function JCLWizardInit(const BorlandIDEServices: IBorlandIDEServices; RegisterProc: TWizardRegisterProc; var TerminateProc: TWizardTerminateProc): Boolean stdcall; @@ -237,7 +241,6 @@ NTAServices := GetNTAServices; Category := ''; - { TODO : verify if command exists in <= D2007 } for I := 0 to NTAServices.ActionList.ActionCount - 1 do if CompareText(NTAServices.ActionList.Actions[I].Name, 'ViewPrjMgrCommand') = 0 then begin Copied: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.dfm (from rev 2746, branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.dfm) =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.dfm (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.dfm 2009-04-26 22:49:01 UTC (rev 2747) @@ -0,0 +1,84 @@ +inherited frmStackView: TfrmStackView + Width = 364 + Height = 358 + Caption = 'Exception Stack View' + KeyPreview = True + PopupMenu = nil + ShowHint = False + PixelsPerInch = 96 + TextHeight = 13 + inherited Splitter1: TSplitter + Width = 356 + Constraints.MinHeight = 3 + end + inherited ToolBar1: TToolBar + Width = 356 + ParentShowHint = False + ShowHint = False + object ToolButton1: TToolButton + Left = 4 + Top = 0 + Action = MainFrame.acLoadStack + end + object ToolButton2: TToolButton + Left = 27 + Top = 0 + Width = 8 + Caption = 'ToolButton2' + ImageIndex = 4 + Style = tbsSeparator + end + object ToolButton3: TToolButton + Left = 35 + Top = 0 + Action = MainFrame.acJumpToCodeLine + end + object ToolButton4: TToolButton + Left = 58 + Top = 0 + Width = 8 + Caption = 'ToolButton4' + ImageIndex = 0 + Style = tbsSeparator + end + object ToolButton5: TToolButton + Left = 66 + Top = 0 + Action = MainFrame.acOptions + end + object ToolButton6: TToolButton + Left = 89 + Top = 0 + Width = 8 + Caption = 'ToolButton6' + ImageIndex = 0 + Style = tbsSeparator + end + object ToolButton7: TToolButton + Left = 97 + Top = 0 + Action = MainFrame.acUpdateLocalInfo + end + end + inline MainFrame: TfrmMain [2] + Left = 0 + Top = 33 + Width = 356 + Height = 298 + Align = alClient + TabOrder = 1 + inherited Splitter2: TSplitter + Height = 298 + end + inherited tv: TTreeView + Height = 298 + end + end + inherited DockActionList: TActionList [3] + Top = 216 + end + inherited ToolbarPopupMenu: TPopupMenu [4] + end + inherited ToolActionList: TActionList [5] + end +end Copied: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.pas (from rev 2746, branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.pas) =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.pas (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormDelphi.pas 2009-04-26 22:49:01 UTC (rev 2747) @@ -0,0 +1,138 @@ +{**************************************************************************************************} +{ } +{ Project JEDI Code Library (JCL) } +{ } +{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); } +{ you may not use this file except in compliance with the License. You may obtain a copy of the } +{ License at http://www.mozilla.org/MPL/ } +{ } +{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } +{ ANY KIND, either express or implied. See the License for the specific language governing rights } +{ and limitations under the License. } +{ } +{ The Original Code is JclStackTraceViewerMainFormDelphi.pas. } +{ } +{ The Initial Developer of the Original Code is Uwe Schuster. } +{ Portions created by Uwe Schuster are Copyright (C) 2009 Uwe Schuster. All rights reserved. } +{ } +{ Contributor(s): } +{ Uwe Schuster (uschuster) } +{ } +{**************************************************************************************************} +{ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } +{ } +{**************************************************************************************************} + +unit JclStackTraceViewerMainFormDelphi; + +{$I jcl.inc} + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + Docktoolform, StdCtrls, ComCtrls, Menus, + ActnList, ToolWin, ExtCtrls, IniFiles, ToolsAPI, + {$IFDEF UNITVERSIONING} + JclUnitVersioning, + {$ENDIF UNITVERSIONING} + JclDebug, JclDebugSerialization, Contnrs, JclStackTraceViewerStackFrame, JclStackTraceViewerModuleFrame, + StackViewUnit, StackFrame2, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, + JclStackTraceViewerOptions, + StackLineNumberTranslator, JclOtaUtils + , ActiveX + , FileSearcherUnit, JclStrings, JclDebugXMLDeserializer, JclStackTraceViewerMainFrame + ; + +type + TfrmStackView = class(TDockableToolbarForm) + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton3: TToolButton; + ToolButton4: TToolButton; + ToolButton5: TToolButton; + ToolButton6: TToolButton; + ToolButton7: TToolButton; + MainFrame: TfrmMain; + procedure FormCreate(Sender: TObject); + private + { Private declarations } + procedure SetOptions(const Value: TExceptionViewerOption); + function GetOptions: TExceptionViewerOption; + public + { Public declarations } + procedure LoadWindowState(ADesktop: TMemIniFile); override; + procedure SaveWindowState(ADesktop: TMemIniFile; AIsProject: Boolean); override; + property Options: TExceptionViewerOption read GetOptions write SetOptions; + end; + +var + frmStackView: TfrmStackView; + +const + IDEDesktopIniSection = 'TStackViewAddIn';//todo - move + +{$IFDEF UNITVERSIONING} +const + UnitVersioning: TUnitVersionInfo = ( + RCSfile: '$URL: $'; + Revision: '$Revision: $'; + Date: '$Date: $'; + LogPath: '' + ); +{$ENDIF UNITVERSIONING} + +implementation + +uses + JclStackTraceViewerImpl; + +{$R *.dfm} + +{ TfrmStackView } + +procedure TfrmStackView.FormCreate(Sender: TObject); +begin + inherited; + DeskSection := IDEDesktopIniSection; + AutoSave := True; + if Assigned(StackTraceViewerExpert) then + Icon := StackTraceViewerExpert.Icon; +end; + +function TfrmStackView.GetOptions: TExceptionViewerOption; +begin + Result := MainFrame.Options; +end; + +procedure TfrmStackView.LoadWindowState(ADesktop: TMemIniFile); +begin + inherited LoadWindowState(ADesktop); + if Assigned(ADesktop) then + MainFrame.LoadWindowState(ADesktop); +end; + +procedure TfrmStackView.SaveWindowState(ADesktop: TMemIniFile; AIsProject: Boolean); +begin + inherited SaveWindowState(ADesktop, AIsProject); + if SaveStateNecessary and Assigned(ADesktop) then + MainFrame.SaveWindowState(ADesktop, AIsProject); +end; + +procedure TfrmStackView.SetOptions(const Value: TExceptionViewerOption); +begin + MainFrame.Options := Value; +end; + +{$IFDEF UNITVERSIONING} +initialization + RegisterUnitVersion(HInstance, UnitVersioning); + +finalization + UnregisterUnitVersion(HInstance); +{$ENDIF UNITVERSIONING} + +end. Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-04-26 17:48:01 UTC (rev 2746) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-04-26 22:49:01 UTC (rev 2747) @@ -35,7 +35,7 @@ uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Docktoolform, StdCtrls, ComCtrls, Menus, - {PlatformDefaultStyleActnCtrls,} ActnPopup, ActnList, ToolWin, ExtCtrls, IniFiles, ToolsAPI, + ActnList, ToolWin, ExtCtrls, IniFiles, ToolsAPI, {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas 2009-04-26 17:48:01 UTC (rev 2746) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/StackCodeUtils.pas 2009-04-26 22:49:01 UTC (rev 2747) @@ -1,5 +1,7 @@ unit StackCodeUtils; +{$I jcl.inc} + interface uses @@ -53,6 +55,7 @@ begin Result := ''; AProjectName := ''; + {$IFDEF BDS} ProjectGroup := (BorlandIDEServices as IOTAModuleServices).MainProjectGroup; if Assigned(ProjectGroup) then for I := 0 to ProjectGroup.ProjectCount - 1 do @@ -64,15 +67,19 @@ Break; end; end; + {$ENDIF BDS} end; function GetFileEditorContent(const AFileName: string): IStream; +{$IFDEF BDS} var I: Integer; Module: IOTAModule; EditorContent: IOTAEditorContent; +{$ENDIF BDS} begin Result := nil; + {$IFDEF BDS} Module := (BorlandIDEServices as IOTAModuleServices).FindModule(AFileName); if Assigned(Module) then begin @@ -83,9 +90,11 @@ Break; end; end; + {$ENDIF BDS} end; procedure JumpToCode(AStackViewItem: TStackViewItem); +{$IFDEF BDS} var S, FileName: string; Module: IOTAModule; @@ -93,7 +102,9 @@ SourceEditor: IOTASourceEditor; I, LineNumber: Integer; EditPos: TOTAEditPos; +{$ENDIF BDS} begin + {$IFDEF BDS} if Assigned(AStackViewItem) then begin FileName := AStackViewItem.SourceName; @@ -127,6 +138,7 @@ end; end; end; + {$ENDIF BDS} end; end. Modified: branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml =================================================================== --- branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml 2009-04-26 17:48:01 UTC (rev 2746) +++ branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml 2009-04-26 22:49:01 UTC (rev 2747) @@ -24,7 +24,8 @@ <File Name="..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas" Targets="Windows" Formname="frmThread: TFrame" Condition=""/> <File Name="..\..\experts\stackviewer\StackFrame2.pas" Targets="Windows" Formname="frmStack2: TFrame" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas" Targets="Windows" Formname="frmModule: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" Targets="Windows" Formname="frmStackView" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormDelphi.pas" Targets="OldStyleIDE" Formname="frmStackView" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" Targets="Bds" Formname="frmStackView" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas" Targets="Windows" Formname="frmMain: TFrame" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas" Targets="Windows" Formname="JclStackTraceViewerConfigFrame: TFrame" Condition=""/> <File Name="..\..\experts\stackviewer\StackViewUnit.pas" Targets="Windows" Formname="" Condition=""/> Modified: branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml =================================================================== --- branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml 2009-04-26 17:48:01 UTC (rev 2746) +++ branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml 2009-04-26 22:49:01 UTC (rev 2747) @@ -24,7 +24,8 @@ <File Name="..\..\experts\stackviewer\JclStackTraceViewerThreadFrame.pas" Targets="Windows" Formname="frmThread: TFrame" Condition=""/> <File Name="..\..\experts\stackviewer\StackFrame2.pas" Targets="Windows" Formname="frmStack2: TFrame" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerModuleFrame.pas" Targets="Windows" Formname="frmModule: TFrame" Condition=""/> - <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" Targets="Windows" Formname="frmStackView" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormDelphi.pas" Targets="OldStyleIDE" Formname="frmStackView" Condition=""/> + <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFormBDS.pas" Targets="Bds" Formname="frmStackView" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerMainFrame.pas" Targets="Windows" Formname="frmMain: TFrame" Condition=""/> <File Name="..\..\experts\stackviewer\JclStackTraceViewerConfigFrame.pas" Targets="Windows" Formname="JclStackTraceViewerConfigFrame: TFrame" Condition=""/> <File Name="..\..\experts\stackviewer\StackViewUnit.pas" Targets="Windows" Formname="" Condition=""/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-04-26 17:48:14
|
Revision: 2746 http://jcl.svn.sourceforge.net/jcl/?rev=2746&view=rev Author: uschuster Date: 2009-04-26 17:48:01 +0000 (Sun, 26 Apr 2009) Log Message: ----------- - changes for version dependent main form (moved almost everything of the main form into ...MainFrame.pas) - fixed the problem with mixing icon and options if the form was opened by the IDE by loading the desktop layout Modified Paths: -------------- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpert.dproj branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d11/JclStackTraceViewerExpertDLL.dproj branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dpk branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpert.dproj branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dpr branches/jcl-stack-trace/jcl/packages/d12/JclStackTraceViewerExpertDLL.dproj branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpert-D.xml branches/jcl-stack-trace/jcl/packages/xml/JclStackTraceViewerExpertDLL-L.xml Added Paths: ----------- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.dfm branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.pas branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas Removed Paths: ------------- branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.dfm branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.pas Modified: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas 2009-04-26 17:36:02 UTC (rev 2745) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerImpl.pas 2009-04-26 17:48:01 UTC (rev 2746) @@ -38,7 +38,7 @@ {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} - JclOtaUtils, StackViewForm, JclStackTraceViewerConfigFrame, JclStackTraceViewerOptions; + JclOtaUtils, JclStackTraceViewerMainFormBDS, JclStackTraceViewerConfigFrame, JclStackTraceViewerOptions; type TJclStackTraceViewerExpert = class(TJclOTAExpert) @@ -58,8 +58,15 @@ procedure UnregisterCommands; override; procedure AddConfigurationPages(AddPageFunc: TJclOTAAddPageFunc); override; procedure ConfigurationClosed(AControl: TControl; SaveChanges: Boolean); override; + property Icon: TIcon read FIcon; + property Options: TExceptionViewerOption read FOptions; end; +// the expert var is required to get the icon and options in the MainForm/Frame create methods +// (the main form is a registered form and the IDE can create it too) +var + StackTraceViewerExpert: TJclStackTraceViewerExpert = nil; + // design package entry point procedure Register; @@ -100,7 +107,8 @@ if Assigned(RegisterFieldAddress) then RegisterFieldAddress(IDEDesktopIniSection, @frmStackView); RegisterDesktopFormClass(TfrmStackView, IDEDesktopIniSection, IDEDesktopIniSection); - RegisterPackageWizard(TJclStackTraceViewerExpert.Create); + StackTraceViewerExpert := TJclStackTraceViewerExpert.Create; + RegisterPackageWizard(StackTraceViewerExpert); except on ExceptionObj: TObject do begin @@ -117,7 +125,10 @@ begin try if JCLWizardIndex <> -1 then + begin + StackTraceViewerExpert := nil; TJclOTAExpertBase.GetOTAWizardServices.RemoveWizard(JCLWizardIndex); + end; except on ExceptionObj: TObject do begin @@ -137,7 +148,8 @@ if Assigned(RegisterFieldAddress) then RegisterFieldAddress(IDEDesktopIniSection, @frmStackView); RegisterDesktopFormClass(TfrmStackView, IDEDesktopIniSection, IDEDesktopIniSection); - JCLWizardIndex := TJclOTAExpertBase.GetOTAWizardServices.AddWizard(TJclStackTraceViewerExpert.Create); + StackTraceViewerExpert := TJclStackTraceViewerExpert.Create; + JCLWizardIndex := TJclOTAExpertBase.GetOTAWizardServices.AddWizard(StackTraceViewerExpert); Result := True; except @@ -170,9 +182,6 @@ if not Assigned(frmStackView) then begin frmStackView := TfrmStackView.Create(Application); - frmStackView.Icon := FIcon; - frmStackView.Options := FOptions; - frmStackView.RootDir := RootDir; frmStackView.Show; end else Copied: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.dfm (from rev 2744, branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.dfm) =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.dfm (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.dfm 2009-04-26 17:48:01 UTC (rev 2746) @@ -0,0 +1,100 @@ +inherited frmStackView: TfrmStackView + Caption = 'Exception Stack View' + ClientHeight = 331 + ClientWidth = 356 + KeyPreview = True + PopupMenu = nil + ShowHint = False + PixelsPerInch = 96 + TextHeight = 13 + inherited Splitter1: TSplitter + Width = 356 + Constraints.MinHeight = 3 + end + inherited ToolBar1: TToolBar + Width = 356 + ParentShowHint = False + ShowHint = False + object ToolButton1: TToolButton + Left = 4 + Top = 0 + Action = MainFrame.acLoadStack + end + object ToolButton2: TToolButton + Left = 27 + Top = 0 + Width = 8 + Caption = 'ToolButton2' + ImageIndex = 4 + Style = tbsSeparator + end + object ToolButton3: TToolButton + Left = 35 + Top = 0 + Action = MainFrame.acJumpToCodeLine + end + object ToolButton4: TToolButton + Left = 58 + Top = 0 + Width = 8 + Caption = 'ToolButton4' + ImageIndex = 0 + Style = tbsSeparator + end + object ToolButton5: TToolButton + Left = 66 + Top = 0 + Action = MainFrame.acOptions + end + object ToolButton6: TToolButton + Left = 89 + Top = 0 + Width = 8 + Caption = 'ToolButton6' + ImageIndex = 0 + Style = tbsSeparator + end + object ToolButton7: TToolButton + Left = 97 + Top = 0 + Action = MainFrame.acUpdateLocalInfo + end + end + inline MainFrame: TfrmMain [2] + Left = 0 + Top = 33 + Width = 356 + Height = 298 + Align = alClient + TabOrder = 1 + inherited Splitter2: TSplitter + Height = 298 + end + inherited tv: TTreeView + Height = 298 + end + end + inherited DockActionList: TActionList [3] + Top = 216 + end + inherited ToolbarPopupMenu: TPopupActionBar [4] + end + inherited ToolActionList: TActionList [5] + end + object PopupActionBar1: TPopupActionBar + Left = 136 + Top = 216 + object mnuJumpToCodeLine: TMenuItem + Action = MainFrame.acJumpToCodeLine + end + object N1: TMenuItem + Caption = '-' + end + object StayonTop2: TMenuItem + Action = StayOnTopCmd + end + object Dockable2: TMenuItem + Action = DockableCmd + end + end +end Copied: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.pas (from rev 2744, branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.pas) =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.pas (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFormBDS.pas 2009-04-26 17:48:01 UTC (rev 2746) @@ -0,0 +1,143 @@ +{**************************************************************************************************} +{ } +{ Project JEDI Code Library (JCL) } +{ } +{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); } +{ you may not use this file except in compliance with the License. You may obtain a copy of the } +{ License at http://www.mozilla.org/MPL/ } +{ } +{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } +{ ANY KIND, either express or implied. See the License for the specific language governing rights } +{ and limitations under the License. } +{ } +{ The Original Code is JclStackTraceViewerMainFormBDS.pas. } +{ } +{ The Initial Developer of the Original Code is Uwe Schuster. } +{ Portions created by Uwe Schuster are Copyright (C) 2009 Uwe Schuster. All rights reserved. } +{ } +{ Contributor(s): } +{ Uwe Schuster (uschuster) } +{ } +{**************************************************************************************************} +{ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } +{ } +{**************************************************************************************************} + +unit JclStackTraceViewerMainFormBDS; + +{$I jcl.inc} + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + Docktoolform, StdCtrls, ComCtrls, Menus, + {PlatformDefaultStyleActnCtrls,} ActnPopup, ActnList, ToolWin, ExtCtrls, IniFiles, ToolsAPI, + {$IFDEF UNITVERSIONING} + JclUnitVersioning, + {$ENDIF UNITVERSIONING} + JclDebug, JclDebugSerialization, Contnrs, JclStackTraceViewerStackFrame, JclStackTraceViewerModuleFrame, + StackViewUnit, StackFrame2, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, + JclStackTraceViewerOptions, + StackLineNumberTranslator, JclOtaUtils + , ActiveX + , FileSearcherUnit, JclStrings, JclDebugXMLDeserializer, JclStackTraceViewerMainFrame + ; + +type + TfrmStackView = class(TDockableToolbarForm) + ToolButton1: TToolButton; + PopupActionBar1: TPopupActionBar; + mnuJumpToCodeLine: TMenuItem; + N1: TMenuItem; + StayonTop2: TMenuItem; + Dockable2: TMenuItem; + ToolButton2: TToolButton; + ToolButton3: TToolButton; + ToolButton4: TToolButton; + ToolButton5: TToolButton; + ToolButton6: TToolButton; + ToolButton7: TToolButton; + MainFrame: TfrmMain; + procedure FormCreate(Sender: TObject); + private + { Private declarations } + procedure SetOptions(const Value: TExceptionViewerOption); + function GetOptions: TExceptionViewerOption; + public + { Public declarations } + procedure LoadWindowState(ADesktop: TCustomIniFile); override; + procedure SaveWindowState(ADesktop: TCustomIniFile; AIsProject: Boolean); override; + property Options: TExceptionViewerOption read GetOptions write SetOptions; + end; + +var + frmStackView: TfrmStackView; + +const + IDEDesktopIniSection = 'TStackViewAddIn';//todo - move + +{$IFDEF UNITVERSIONING} +const + UnitVersioning: TUnitVersionInfo = ( + RCSfile: '$URL: $'; + Revision: '$Revision: $'; + Date: '$Date: $'; + LogPath: '' + ); +{$ENDIF UNITVERSIONING} + +implementation + +uses + JclStackTraceViewerImpl; + +{$R *.dfm} + +{ TfrmStackView } + +procedure TfrmStackView.FormCreate(Sender: TObject); +begin + inherited; + DeskSection := IDEDesktopIniSection; + AutoSave := True; + if Assigned(StackTraceViewerExpert) then + Icon := StackTraceViewerExpert.Icon; +end; + +function TfrmStackView.GetOptions: TExceptionViewerOption; +begin + Result := MainFrame.Options; +end; + +procedure TfrmStackView.LoadWindowState(ADesktop: TCustomIniFile); +begin + inherited LoadWindowState(ADesktop); + if Assigned(ADesktop) then + MainFrame.LoadWindowState(ADesktop); +end; + +procedure TfrmStackView.SaveWindowState(ADesktop: TCustomIniFile; AIsProject: Boolean); +begin + inherited SaveWindowState(ADesktop, AIsProject); + if SaveStateNecessary and Assigned(ADesktop) then + MainFrame.SaveWindowState(ADesktop, AIsProject); +end; + +procedure TfrmStackView.SetOptions(const Value: TExceptionViewerOption); +begin + MainFrame.Options := Value; +end; + +{$IFDEF UNITVERSIONING} +initialization + RegisterUnitVersion(HInstance, UnitVersioning); + +finalization + UnregisterUnitVersion(HInstance); +{$ENDIF UNITVERSIONING} + +end. Copied: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm (from rev 2744, branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.dfm) =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.dfm 2009-04-26 17:48:01 UTC (rev 2746) @@ -0,0 +1,61 @@ +object frmMain: TfrmMain + Left = 0 + Top = 0 + Width = 372 + Height = 320 + TabOrder = 0 + object Splitter2: TSplitter + Left = 145 + Top = 0 + Height = 320 + end + object cboxThread: TComboBox + Left = 0 + Top = 33 + Width = 356 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + Visible = False + OnChange = cboxThreadChange + end + object tv: TTreeView + Left = 0 + Top = 0 + Width = 145 + Height = 320 + Align = alLeft + HideSelection = False + Indent = 19 + ReadOnly = True + TabOrder = 1 + OnChange = tvChange + end + object ActionList1: TActionList + Left = 56 + Top = 216 + object acJumpToCodeLine: TAction + Caption = 'Jump to code line' + Hint = 'Jump to the code line of the selected stack line' + OnExecute = acJumpToCodeLineExecute + end + object acLoadStack: TAction + Caption = 'Load Stack' + Hint = 'Load Stack from file' + OnExecute = acLoadStackExecute + end + object acOptions: TAction + Caption = 'Options' + OnExecute = acOptionsExecute + end + object acUpdateLocalInfo: TAction + Caption = 'Update Local Info' + OnExecute = acUpdateLocalInfoExecute + end + end + object OpenDialog1: TOpenDialog + Left = 56 + Top = 264 + end +end Copied: branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas (from rev 2744, branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.pas) =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas (rev 0) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/JclStackTraceViewerMainFrame.pas 2009-04-26 17:48:01 UTC (rev 2746) @@ -0,0 +1,729 @@ +{**************************************************************************************************} +{ } +{ Project JEDI Code Library (JCL) } +{ } +{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); } +{ you may not use this file except in compliance with the License. You may obtain a copy of the } +{ License at http://www.mozilla.org/MPL/ } +{ } +{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF } +{ ANY KIND, either express or implied. See the License for the specific language governing rights } +{ and limitations under the License. } +{ } +{ The Original Code is JclStackTraceViewerMainFrame.pas. } +{ } +{ The Initial Developer of the Original Code is Uwe Schuster. } +{ Portions created by Uwe Schuster are Copyright (C) 2009 Uwe Schuster. All rights reserved. } +{ } +{ Contributor(s): } +{ Uwe Schuster (uschuster) } +{ } +{**************************************************************************************************} +{ } +{ Last modified: $Date:: $ } +{ Revision: $Rev:: $ } +{ Author: $Author:: $ } +{ } +{**************************************************************************************************} + +unit JclStackTraceViewerMainFrame; + +{$I jcl.inc} + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + Docktoolform, StdCtrls, ComCtrls, Menus, + {PlatformDefaultStyleActnCtrls,} ActnPopup, ActnList, ToolWin, ExtCtrls, IniFiles, ToolsAPI, + {$IFDEF UNITVERSIONING} + JclUnitVersioning, + {$ENDIF UNITVERSIONING} + JclDebug, JclDebugSerialization, Contnrs, JclStackTraceViewerStackFrame, JclStackTraceViewerModuleFrame, + StackViewUnit, StackFrame2, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, + JclStackTraceViewerOptions, + StackLineNumberTranslator, JclOtaUtils + , ActiveX + , FileSearcherUnit, JclStrings, JclDebugXMLDeserializer + ; + +type + TfrmMain = class(TFrame) + ActionList1: TActionList; + acJumpToCodeLine: TAction; + acLoadStack: TAction; + OpenDialog1: TOpenDialog; + cboxThread: TComboBox; + tv: TTreeView; + acOptions: TAction; + acUpdateLocalInfo: TAction; + Splitter2: TSplitter; + procedure acJumpToCodeLineExecute(Sender: TObject); + procedure acLoadStackExecute(Sender: TObject); + procedure cboxThreadChange(Sender: TObject); + procedure tvChange(Sender: TObject; Node: TTreeNode); + procedure acOptionsExecute(Sender: TObject); + procedure acUpdateLocalInfoExecute(Sender: TObject); + private + { Private declarations } + FStackItemList: TStackViewItemsList; + FCreationStackItemList: TStackViewItemsList; + FTreeViewLinkList: TObjectList; + FThreadInfoList: TJclSerializableThreadInfoList; + FExceptionInfo: TExceptionInfo; + FStackFrame: TfrmStack; + FModuleFrame: TfrmModule; + FExceptionFrame: TfrmException; + FThreadFrame: TfrmThread; + FLastControl: TControl; + FOptions: TExceptionViewerOption; + FRootDir: string; + procedure PrepareStack(AStack: TJclSerializableLocationInfoList; AStackItemList: TStackViewItemsList); + procedure SetOptions(const Value: TExceptionViewerOption); + public + { Public declarations } + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure LoadWindowState(ADesktop: TCustomIniFile); + procedure SaveWindowState(ADesktop: TCustomIniFile; AIsProject: Boolean); + property Options: TExceptionViewerOption read FOptions write SetOptions; + property RootDir: string read FRootDir write FRootDir; + end; + +const + IDEDesktopIniSection = 'TStackViewAddIn';//todo - move + +{$IFDEF UNITVERSIONING} +const + UnitVersioning: TUnitVersionInfo = ( + RCSfile: '$URL: $'; + Revision: '$Revision: $'; + Date: '$Date: $'; + LogPath: '' + ); +{$ENDIF UNITVERSIONING} + +implementation + +uses + JclStackTraceViewerImpl; + +{$R *.dfm} + +type + TTreeViewLinkKind = (tvlkException, tvlkModuleList, tvlkThread, tvlkThreadStack, tvlkThreadCreationStack); + + TTreeViewLink = class(TObject) + private + FData: TObject; + FKind: TTreeViewLinkKind; + public + property Data: TObject read FData write FData; + property Kind: TTreeViewLinkKind read FKind write FKind; + end; + +procedure TfrmMain.LoadWindowState(ADesktop: TCustomIniFile); +begin + if Assigned(ADesktop) then + begin + FStackFrame.LoadState(ADesktop, IDEDesktopIniSection, 'StackFrameSingle'); + FModuleFrame.LoadState(ADesktop, IDEDesktopIniSection); + FThreadFrame.LoadState(ADesktop, IDEDesktopIniSection); + end; +end; + +type + TFindMapping = class(TObject) + private + FItems: TList; + function GetCount: Integer; + function GetItems(AIndex: Integer): TStackViewItem; + public + FoundFile: Boolean; + FileName: string; + ProjectName: string; + constructor Create; + destructor Destroy; override; + procedure Add(AStackViewItem: TStackViewItem); + property Count: Integer read GetCount; + property Items[AIndex: Integer]: TStackViewItem read GetItems; default; + end; + +constructor TFindMapping.Create; +begin + inherited Create; + FItems := TList.Create; +end; + +destructor TFindMapping.Destroy; +begin + FItems.Free; + inherited Destroy; +end; + +procedure TFindMapping.Add(AStackViewItem: TStackViewItem); +begin + FItems.Add(AStackViewItem); +end; + +function TFindMapping.GetCount: Integer; +begin + Result := FItems.Count; +end; + +function TFindMapping.GetItems(AIndex: Integer): TStackViewItem; +begin + Result := FItems[AIndex]; +end; + +procedure TfrmMain.PrepareStack(AStack: TJclSerializableLocationInfoList; AStackItemList: TStackViewItemsList); +var + I, J, K, Idx, NewLineNumber: Integer; + StackViewItem: TStackViewItem; + FindFileList: TStringList; + FindMapping: TFindMapping; + FileName, ProjectName: string; + RevisionMS: TMemoryStream; + RevisionStream, Stream: IStream; + FS: TFileStream; + + S: string; + EV: IOTAEnvironmentOptions; + FileSearcher: TFileSearcher; + BrowsingPaths: TStringList; + + Found: Boolean; + RevisionLineNumbers, CurrentLineNumbers: TList; +begin + AStackItemList.Clear; + if AStack.Count > 0 then + begin + FindFileList := TStringList.Create; + try + FindFileList.Sorted := True; + //check if the files can be found in a project in the current project group + for I := 0 to AStack.Count - 1 do + begin + StackViewItem := AStackItemList.Add; + StackViewItem.Assign(AStack[I]); + StackViewItem.Revision := AStack[I].UnitVersionRevision; + Idx := FindFileList.IndexOf(AStack[I].SourceName); + if Idx <> -1 then + begin + FindMapping := TFindMapping(FindFileList.Objects[Idx]); + FindMapping.Add(StackViewItem); + StackViewItem.FoundFile := FindMapping.FoundFile; + StackViewItem.FileName := FindMapping.FileName; + StackViewItem.ProjectName := FindMapping.ProjectName; + end + else + begin + if AStack[I].SourceName <> '' then + FileName := FindModuleAndProject(AStack[I].SourceName, ProjectName) + else + begin + FileName := ''; + ProjectName := ''; + end; + FindMapping := TFindMapping.Create; + FindMapping.Add(StackViewItem); + FindFileList.AddObject(AStack[I].SourceName, FindMapping); + FindMapping.FoundFile := FileName <> ''; + FindMapping.FileName := FileName; + FindMapping.ProjectName := ProjectName; + + StackViewItem.FoundFile := FileName <> ''; + StackViewItem.FileName := FileName; + StackViewItem.ProjectName := ProjectName; + end; + end; + + //use the build number from the version number as revision number if the revision number is empty + if FOptions.ModuleVersionAsRevision then + begin + for I := 0 to FindFileList.Count - 1 do + begin + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindMapping.Count > 0) and (FindMapping[0].Revision = '') and (FindMapping[0].ModuleName <> '') then + begin + Idx := -1; + { TODO -oUSc : Compare full filename when the filename in the stack contains also the path + + Why full filenames? + + It is possible to load + <Path 1>\TestDLL.DLL + <Path 2>\TestDLL.DLL} + for J := 0 to FExceptionInfo.Modules.Count - 1 do + if CompareText(ExtractFileName(FExceptionInfo.Modules[J].ModuleName), ExtractFileName(FindMapping[0].ModuleName)) = 0 then + begin + Idx := J; + Break; + end; + if Idx <> -1 then + begin + S := FExceptionInfo.Modules[Idx].BinFileVersion; + K := Pos('.', S); + if K > 0 then + Delete(S, 1, K); + K := Pos('.', S); + if K > 0 then + Delete(S, 1, K); + K := Pos('.', S); + if K > 0 then + begin + Delete(S, 1, K); + for J := 0 to FindMapping.Count - 1 do + FindMapping[J].Revision := S; + end; + end; + end; + end; + end; + + //check if the other files can be found in BrowsingPath + Found := False; + for I := 0 to FindFileList.Count - 1 do + begin + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindFileList[I] <> '') and (not FindMapping.FoundFile) then + begin + Found := True; + Break; + end; + end; + if Found then + begin + FileSearcher := TFileSearcher.Create; + try + BrowsingPaths := TStringList.Create; + try + EV := (BorlandIDEServices as IOTAServices).GetEnvironmentOptions; + StrTokenToStrings(EV.Values['BrowsingPath'], ';', BrowsingPaths); + for I := 0 to BrowsingPaths.Count - 1 do + begin + S := BrowsingPaths[I]; + if Pos('$(BDS)', S) > 0 then + S := StringReplace(S, '$(BDS)', RootDir, []); + FileSearcher.SearchPaths.Add(S); + end; + finally + BrowsingPaths.Free; + end; + if FileSearcher.SearchPaths.Count > 0 then + begin + for I := 0 to FindFileList.Count - 1 do + begin + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindFileList[I] <> '') and (not FindMapping.FoundFile) and (FileSearcher.IndexOf(FindFileList[I]) = -1) then + FileSearcher.Add(FindFileList[I]); + end; + if FileSearcher.Count > 0 then + begin + FileSearcher.Search; + for I := 0 to FindFileList.Count - 1 do + begin + FindMapping := TFindMapping(FindFileList.Objects[I]); + if not FindMapping.FoundFile then + begin + Idx := FileSearcher.IndexOf(FindFileList[I]); + if (Idx <> -1) and (FileSearcher[Idx].Results.Count > 0) then + begin + FindMapping.FoundFile := True; + FindMapping.FileName := FileSearcher[Idx].Results[0]; + FindMapping.ProjectName := ''; + for J := 0 to FindMapping.Count - 1 do + begin + FindMapping[J].FoundFile := FindMapping.FoundFile; + FindMapping[J].FileName := FindMapping.FileName; + FindMapping[J].ProjectName := FindMapping.ProjectName; + end; + end; + end; + end; + end; + end; + finally + FileSearcher.Free; + end; + end; + for I := 0 to FindFileList.Count - 1 do + begin + FindMapping := TFindMapping(FindFileList.Objects[I]); + if (FindMapping.FoundFile) and (FindMapping.Count > 0) {and (FindMapping[0].Revision <> '')} then//todo - check revision + begin + Found := False; + for J := 0 to FindMapping.Count - 1 do + if FindMapping[J].LineNumber > 0 then + begin + Found := True; + Break; + end; + if Found then + begin + Stream := GetFileEditorContent(FindMapping.FileName); + if not Assigned(Stream) then + begin + if FileExists(FindMapping.FileName) then + begin +(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('Using %s', [FindMapping.FileName]));//todo - remove + FS := TFileStream.Create(FindMapping.FileName, fmOpenRead); + Stream := TStreamAdapter.Create(FS); + end; + end + else + FS := nil; + try + if Assigned(Stream) and (FS = nil) then//todo - remove FS = nil + begin + RevisionLineNumbers := TList.Create; + CurrentLineNumbers := TList.Create; + try + for J := 0 to FindMapping.Count - 1 do + if FindMapping[J].LineNumber > 0 then + RevisionLineNumbers.Add(Pointer(FindMapping[J].LineNumber)); + RevisionMS := TMemoryStream.Create; + try + RevisionStream := TStreamAdapter.Create(RevisionMS); +(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F1 %s', [FindMapping.FileName]));//todo - remove + if GetRevisionContent(FindMapping.FileName, FindMapping[0].Revision, RevisionStream) then + begin +(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F2 %s', [FindMapping.FileName]));//todo - remove + if TranslateLineNumbers(RevisionStream, Stream, RevisionLineNumbers, CurrentLineNumbers) > 0 then + begin +(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F3 %s', [FindMapping.FileName]));//todo - remove + if RevisionLineNumbers.Count = CurrentLineNumbers.Count then + begin + for J := 0 to FindMapping.Count - 1 do + if FindMapping[J].LineNumber > 0 then + begin + FindMapping[J].TranslatedLineNumber := -1; + for K := 0 to RevisionLineNumbers.Count - 1 do + if Integer(RevisionLineNumbers[K]) = FindMapping[J].LineNumber then + begin + FindMapping[J].TranslatedLineNumber := Integer(CurrentLineNumbers[K]); + Break; + end; + end; + end; + end; + end; + finally + RevisionMS.Free; + end; + finally + RevisionLineNumbers.Free; + CurrentLineNumbers.Free; + end; + end; + finally + FS.Free; + end; + StackViewItem.TranslatedLineNumber := NewLineNumber; + end; + end; + end; + finally + for I := 0 to FindFileList.Count - 1 do + FindFileList.Objects[I].Free; + FindFileList.Free; + end; + end; +end; + +procedure TfrmMain.SaveWindowState(ADesktop: TCustomIniFile; AIsProject: Boolean); +begin + if Assigned(ADesktop) then + begin + FStackFrame.SaveState(ADesktop, IDEDesktopIniSection, 'StackFrameSingle'); + FModuleFrame.SaveState(ADesktop, IDEDesktopIniSection); + FThreadFrame.SaveState(ADesktop, IDEDesktopIniSection); + end; +end; + +procedure TfrmMain.SetOptions(const Value: TExceptionViewerOption); +var + OldOptions: TExceptionViewerOption; +begin + OldOptions := TExceptionViewerOption.Create; + try + OldOptions.Assign(FOptions); + FOptions.Assign(Value); + if FOptions.ModuleVersionAsRevision <> OldOptions.ModuleVersionAsRevision then + begin + { TODO -oUSc : Update stack views } + end; + finally + OldOptions.Free; + end; +end; + +procedure TfrmMain.tvChange(Sender: TObject; Node: TTreeNode); +var + TreeViewLink: TTreeViewLink; + NewControl: TControl; + ThreadInfo: TJclSerializableThreadInfo; +begin + inherited; + NewControl := nil; + if Assigned(tv.Selected) and Assigned(tv.Selected.Data) and + (TObject(tv.Selected.Data) is TTreeViewLink) then + begin + TreeViewLink := TTreeViewLink(tv.Selected.Data); + if (TreeViewLink.Kind = tvlkModuleList) and (TreeViewLink.Data is TModuleList) then + begin + NewControl := FModuleFrame; + FModuleFrame.ModuleList := TModuleList(TreeViewLink.Data); + end + else + if (TreeViewLink.Kind = tvlkThread) and (TreeViewLink.Data is TJclSerializableThreadInfo) then + begin + ThreadInfo := TJclSerializableThreadInfo(TreeViewLink.Data); + NewControl := FThreadFrame; + PrepareStack(ThreadInfo.CreationStack, FCreationStackItemList); + if tioCreationStack in ThreadInfo.Values then + FThreadFrame.CreationStackList := FCreationStackItemList + else + FThreadFrame.CreationStackList := nil; + if TreeViewLink.Data = FThreadInfoList[0] then + FThreadFrame.Exception := FExceptionInfo.Exception + else + FThreadFrame.Exception := nil; + PrepareStack(ThreadInfo.Stack, FStackItemList); + if tioStack in ThreadInfo.Values then + FThreadFrame.StackList := FStackItemList + else + FThreadFrame.StackList := nil; + end + else + if (TreeViewLink.Kind = tvlkException) and (TreeViewLink.Data is TException) then + begin + NewControl := FExceptionFrame; + FExceptionFrame.Exception := TException(TreeViewLink.Data); + end + else + if (TreeViewLink.Kind in [tvlkThreadStack, tvlkThreadCreationStack]) and (TreeViewLink.Data is TJclSerializableLocationInfoList) then + begin + PrepareStack(TJclSerializableLocationInfoList(TreeViewLink.Data), FStackItemList); + FStackFrame.StackList := FStackItemList; + NewControl := FStackFrame; + end; + end; + if Assigned(NewControl) then + NewControl.Show; + if Assigned(FLastControl) and (FLastControl <> NewControl) then + FLastControl.Hide; + if FLastControl <> NewControl then + FLastControl := NewControl; +end; + +procedure TfrmMain.acJumpToCodeLineExecute(Sender: TObject); +begin + if Assigned(FThreadFrame) and FThreadFrame.Visible and Assigned(FThreadFrame.Selected) then + JumpToCode(FThreadFrame.Selected) + else + if Assigned(FStackFrame) and FStackFrame.Visible and Assigned(FStackFrame.Selected) then + JumpToCode(FStackFrame.Selected); +end; + +constructor TfrmMain.Create(AOwner: TComponent); +begin + inherited Create(AOwner); +// FThreadInfoList := TThreadInfoList.Create; + FExceptionInfo := TExceptionInfo.Create; + FThreadInfoList := FExceptionInfo.ThreadInfoList; + FStackItemList := TStackViewItemsList.Create; + FCreationStackItemList := TStackViewItemsList.Create; + FTreeViewLinkList := TObjectList.Create; + FStackFrame := TfrmStack.Create(Self); + FStackFrame.Name := 'StackFrameSingle'; + FStackFrame.Parent := Self; + FStackFrame.Align := alClient; + FStackFrame.Visible := False; + + FModuleFrame := TfrmModule.Create(Self); + FModuleFrame.Parent := Self; + FModuleFrame.Align := alClient; + FModuleFrame.Visible := False; + + FExceptionFrame := TfrmException.Create(Self); + FExceptionFrame.Name := 'ExceptionFrameSingle'; + FExceptionFrame.Parent := Self; + FExceptionFrame.Align := alClient; + FExceptionFrame.Visible := False; + + FThreadFrame := TfrmThread.Create(Self); + FThreadFrame.Parent := Self; + FThreadFrame.Align := alClient; + FThreadFrame.Visible := False; + + FOptions := TExceptionViewerOption.Create; + if Assigned(StackTraceViewerExpert) then + begin + Options := StackTraceViewerExpert.Options; + RootDir := StackTraceViewerExpert.RootDir; + end; + + FLastControl := nil; +end; + +destructor TfrmMain.Destroy; +begin + FOptions.Free; + FTreeViewLinkList.Free; + FStackItemList.Free; + FCreationStackItemList.Free; +// FThreadInfoList.Free; + FExceptionInfo.Free; + inherited Destroy; +end; + +procedure TfrmMain.acLoadStackExecute(Sender: TObject); +var + SS: TStringStream; + {$IFNDEF COMPILER12_UP} + FS: TFileStream; + {$ENDIF ~COMPILER12_UP} + I: Integer; + S: string; + tn, tns: TTreeNode; + TreeViewLink: TTreeViewLink; + XMLDeserializer: TJclXMLDeserializer; +begin + inherited; + if OpenDialog1.Execute then + begin + FStackFrame.StackList := nil; + FStackItemList.Clear; + FCreationStackItemList.Clear; + cboxThread.Items.Clear; + tv.Items.Clear; + FTreeViewLinkList.Clear; + SS := TStringStream.Create(''); + try + {$IFDEF COMPILER12_UP} + SS.LoadFromFile(OpenDialog1.FileName); + {$ELSE ~COMPILER12_UP} + FS := TFileStream.Create(OpenDialog1.FileName, fmOpenRead); + try + SS.CopyFrom(FS, 0); + finally + FS.Free; + end; + {$ENDIF ~COMPILER12_UP} + //FExceptionInfo.LoadFromString(SS.DataString); + XMLDeserializer := TJclXMLDeserializer.Create('ExceptInfo'); + try + XMLDeserializer.LoadFromString(SS.DataString); + FExceptionInfo.Deserialize(XMLDeserializer); + finally + XMLDeserializer.Free; + end; + + FTreeViewLinkList.Add(TTreeViewLink.Create); + TreeViewLink := TTreeViewLink(FTreeViewLinkList.Last); + TreeViewLink.Kind := tvlkModuleList; + TreeViewLink.Data := FExceptionInfo.Modules; + tn := tv.Items.Add(nil, Format('Module List [%d]', [FExceptionInfo.Modules.Count])); + tn.Data := TreeViewLink; + + if FThreadInfoList.Count > 0 then + begin + { + for I := 0 to FThreadInfoList.Count - 1 do + cboxThread.Items.AddObject(Format('[%d/%d] ThreadID: %d [%d]', [I + 1, FThreadInfoList.Count, + FThreadInfoList[I].ThreadID, FThreadInfoList[I].Stack.Count]), FThreadInfoList[I]); + } + for I := 0 to FThreadInfoList.Count - 1 do + begin + cboxThread.Items.AddObject(Format('[%d/%d] %s', [I + 1, FThreadInfoList.Count, ''{FThreadInfoList[I].AsString}]), FThreadInfoList[I]); + if tioIsMainThread in FThreadInfoList[I].Values then + S := '[MainThread]' + else + S := ''; + S := Format('ID: %d %s', [FThreadInfoList[I].ThreadID, S]); + + FTreeViewLinkList.Add(TTreeViewLink.Create); + TreeViewLink := TTreeViewLink(FTreeViewLinkList.Last); + TreeViewLink.Kind := tvlkThread; + TreeViewLink.Data := FThreadInfoList[I]; + tn := tv.Items.Add(nil, S); + tn.Data := TreeViewLink; + + if I = 0 then + begin + FTreeViewLinkList.Add(TTreeViewLink.Create); + TreeViewLink := TTreeViewLink(FTreeViewLinkList.Last); + TreeViewLink.Kind := tvlkException; + TreeViewLink.Data := FExceptionInfo.Exception; + tns := tv.Items.AddChild(tn, 'Exception'); + tns.Data := TreeViewLink; + end; + + if tioStack in FThreadInfoList[I].Values then + begin + FTreeViewLinkList.Add(TTreeViewLink.Create); + TreeViewLink := TTreeViewLink(FTreeViewLinkList.Last); + TreeViewLink.Kind := tvlkThreadStack; + TreeViewLink.Data := FThreadInfoList[I].Stack; + tns := tv.Items.AddChild(tn, Format('Stack [%d]', [FThreadInfoList[I].Stack.Count])); + tns.Data := TreeViewLink; + end; + + if tioCreationStack in FThreadInfoList[I].Values then + begin + FTreeViewLinkList.Add(TTreeViewLink.Create); + TreeViewLink := TTreeViewLink(FTreeViewLinkList.Last); + TreeViewLink.Kind := tvlkThreadCreationStack; + TreeViewLink.Data := FThreadInfoList[I].CreationStack; + tns := tv.Items.AddChild(tn, Format('CreationStack [%d]', [FThreadInfoList[I].CreationStack.Count])); + tns.Data := TreeViewLink; + end; + if FOptions.ExpandTreeView then + tn.Expanded := True; + end; + + cboxThread.ItemIndex := 0; + cboxThreadChange(nil); + end; + finally + SS.Free; + end; + end; +end; + +procedure TfrmMain.acOptionsExecute(Sender: TObject); +begin + inherited; + TJclOTAExpertBase.ConfigurationDialog('Stack Trace Viewer'); +end; + +procedure TfrmMain.acUpdateLocalInfoExecute(Sender: TObject); +begin + inherited; + tvChange(nil, nil); +end; + +procedure TfrmMain.cboxThreadChange(Sender: TObject); +begin + inherited; + {//todo + if (cboxThread.ItemIndex <> -1) and (cboxThread.Items.Objects[cboxThread.ItemIndex] is TJclThreadInfo) then + StackListToListBox(TJclThreadInfo(cboxThread.Items.Objects[cboxThread.ItemIndex]).Stack) + else + begin + lbStack.Items.Clear; + FStackItemList.Clear; + end; + } +end; + +{$IFDEF UNITVERSIONING} +initialization + RegisterUnitVersion(HInstance, UnitVersioning); + +finalization + UnregisterUnitVersion(HInstance); +{$ENDIF UNITVERSIONING} + +end. Deleted: branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.dfm =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.dfm 2009-04-26 17:36:02 UTC (rev 2745) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.dfm 2009-04-26 17:48:01 UTC (rev 2746) @@ -1,136 +0,0 @@ -inherited frmStackView: TfrmStackView - Caption = 'Exception Stack View' - ClientHeight = 331 - ClientWidth = 356 - KeyPreview = True - PopupMenu = nil - ShowHint = False - PixelsPerInch = 96 - TextHeight = 13 - inherited Splitter1: TSplitter - Width = 356 - Constraints.MinHeight = 3 - end - object Splitter2: TSplitter [1] - Left = 145 - Top = 33 - Height = 298 - end - inherited ToolBar1: TToolBar - Width = 356 - ParentShowHint = False - ShowHint = False - object ToolButton1: TToolButton - Left = 4 - Top = 0 - Action = acLoadStack - end - object ToolButton2: TToolButton - Left = 27 - Top = 0 - Width = 8 - Caption = 'ToolButton2' - ImageIndex = 4 - Style = tbsSeparator - end - object ToolButton3: TToolButton - Left = 35 - Top = 0 - Action = acJumpToCodeLine - end - object ToolButton4: TToolButton - Left = 58 - Top = 0 - Width = 8 - Caption = 'ToolButton4' - ImageIndex = 0 - Style = tbsSeparator - end - object ToolButton5: TToolButton - Left = 66 - Top = 0 - Action = acOptions - end - object ToolButton6: TToolButton - Left = 89 - Top = 0 - Width = 8 - Caption = 'ToolButton6' - ImageIndex = 0 - Style = tbsSeparator - end - object ToolButton7: TToolButton - Left = 97 - Top = 0 - Action = acUpdateLocalInfo - end - end - object cboxThread: TComboBox [3] - Left = 0 - Top = 33 - Width = 356 - Height = 21 - Style = csDropDownList - ItemHeight = 0 - TabOrder = 1 - Visible = False - OnChange = cboxThreadChange - end - object tv: TTreeView [4] - Left = 0 - Top = 33 - Width = 145 - Height = 298 - Align = alLeft - HideSelection = False - Indent = 19 - ReadOnly = True - TabOrder = 2 - OnChange = tvChange - end - inherited DockActionList: TActionList - Top = 216 - end - object ActionList1: TActionList - Left = 56 - Top = 216 - object acJumpToCodeLine: TAction - Caption = 'Jump to code line' - Hint = 'Jump to the code line of the selected stack line' - OnExecute = acJumpToCodeLineExecute - end - object acLoadStack: TAction - Caption = 'Load Stack' - Hint = 'Load Stack from file' - OnExecute = acLoadStackExecute - end - object acOptions: TAction - Caption = 'Options' - OnExecute = acOptionsExecute - end - object acUpdateLocalInfo: TAction - Caption = 'Update Local Info' - OnExecute = acUpdateLocalInfoExecute - end - end - object PopupActionBar1: TPopupActionBar - Left = 136 - Top = 216 - object mnuJumpToCodeLine: TMenuItem - Action = acJumpToCodeLine - end - object N1: TMenuItem - Caption = '-' - end - object StayonTop2: TMenuItem - Action = StayOnTopCmd - end - object Dockable2: TMenuItem - Action = DockableCmd - end - end - object OpenDialog1: TOpenDialog - Left = 56 - Top = 264 - end -end Deleted: branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.pas =================================================================== --- branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.pas 2009-04-26 17:36:02 UTC (rev 2745) +++ branches/jcl-stack-trace/jcl/experts/stackviewer/StackViewForm.pas 2009-04-26 17:48:01 UTC (rev 2746) @@ -1,699 +0,0 @@ -unit StackViewForm; - -{$I jcl.inc} - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - Docktoolform, StdCtrls, ComCtrls, Menus, - {PlatformDefaultStyleActnCtrls,} ActnPopup, ActnList, ToolWin, ExtCtrls, IniFiles, ToolsAPI, - JclDebug, JclDebugSerialization, Contnrs, JclStackTraceViewerStackFrame, JclStackTraceViewerModuleFrame, - StackViewUnit, StackFrame2, StackCodeUtils, JclStackTraceViewerExceptInfoFrame, JclStackTraceViewerThreadFrame, - JclStackTraceViewerOptions, - StackLineNumberTranslator, JclOtaUtils - , ActiveX - , FileSearcherUnit, JclStrings, JclDebugXMLDeserializer - ; - -type - TfrmStackView = class(TDockableToolbarForm) - ActionList1: TActionList; - acJumpToCodeLine: TAction; - ToolButton1: TToolButton; - PopupActionBar1: TPopupActionBar; - mnuJumpToCodeLine: TMenuItem; - N1: TMenuItem; - StayonTop2: TMenuItem; - Dockable2: TMenuItem; - acLoadStack: TAction; - ToolButton2: TToolButton; - ToolButton3: TToolButton; - OpenDialog1: TOpenDialog; - cboxThread: TComboBox; - tv: TTreeView; - acOptions: TAction; - ToolButton4: TToolButton; - ToolButton5: TToolButton; - acUpdateLocalInfo: TAction; - ToolButton6: TToolButton; - ToolButton7: TToolButton; - Splitter2: TSplitter; - procedure FormCreate(Sender: TObject); - procedure acJumpToCodeLineExecute(Sender: TObject); - procedure acLoadStackExecute(Sender: TObject); - procedure cboxThreadChange(Sender: TObject); - procedure tvChange(Sender: TObject; Node: TTreeNode); - procedure acOptionsExecute(Sender: TObject); - procedure acUpdateLocalInfoExecute(Sender: TObject); - private - { Private declarations } - FStackItemList: TStackViewItemsList; - FCreationStackItemList: TStackViewItemsList; - FTreeViewLinkList: TObjectList; - FThreadInfoList: TJclSerializableThreadInfoList; - FExceptionInfo: TExceptionInfo; - FStackFrame: TfrmStack; - FModuleFrame: TfrmModule; - FExceptionFrame: TfrmException; - FThreadFrame: TfrmThread; - FLastControl: TControl; - FOptions: TExceptionViewerOption; - FRootDir: string; - procedure PrepareStack(AStack: TJclSerializableLocationInfoList; AStackItemList: TStackViewItemsList); - procedure SetOptions(const Value: TExceptionViewerOption); - public - { Public declarations } - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure LoadWindowState(ADesktop: TCustomIniFile); override; - procedure SaveWindowState(ADesktop: TCustomIniFile; AIsProject: Boolean); override; - property Options: TExceptionViewerOption read FOptions write SetOptions; - property RootDir: string read FRootDir write FRootDir; - end; - -var - frmStackView: TfrmStackView; - -const - IDEDesktopIniSection = 'TStackViewAddIn';//todo - move - -implementation - -{$R *.dfm} - -type - TTreeViewLinkKind = (tvlkException, tvlkModuleList, tvlkThread, tvlkThreadStack, tvlkThreadCreationStack); - - TTreeViewLink = class(TObject) - private - FData: TObject; - FKind: TTreeViewLinkKind; - public - property Data: TObject read FData write FData; - property Kind: TTreeViewLinkKind read FKind write FKind; - end; - -{ TfrmStackView } - -procedure TfrmStackView.FormCreate(Sender: TObject); -begin - inherited; - DeskSection := IDEDesktopIniSection; - AutoSave := True; -end; - -procedure TfrmStackView.LoadWindowState(ADesktop: TCustomIniFile); -begin - inherited LoadWindowState(ADesktop); - if Assigned(ADesktop) then - begin - FStackFrame.LoadState(ADesktop, DeskSection, 'StackFrameSingle'); - FModuleFrame.LoadState(ADesktop, DeskSection); - FThreadFrame.LoadState(ADesktop, DeskSection); - end; -end; - -type - TFindMapping = class(TObject) - private - FItems: TList; - function GetCount: Integer; - function GetItems(AIndex: Integer): TStackViewItem; - public - FoundFile: Boolean; - FileName: string; - ProjectName: string; - constructor Create; - destructor Destroy; override; - procedure Add(AStackViewItem: TStackViewItem); - property Count: Integer read GetCount; - property Items[AIndex: Integer]: TStackViewItem read GetItems; default; - end; - -constructor TFindMapping.Create; -begin - inherited Create; - FItems := TList.Create; -end; - -destructor TFindMapping.Destroy; -begin - FItems.Free; - inherited Destroy; -end; - -procedure TFindMapping.Add(AStackViewItem: TStackViewItem); -begin - FItems.Add(AStackViewItem); -end; - -function TFindMapping.GetCount: Integer; -begin - Result := FItems.Count; -end; - -function TFindMapping.GetItems(AIndex: Integer): TStackViewItem; -begin - Result := FItems[AIndex]; -end; - -procedure TfrmStackView.PrepareStack(AStack: TJclSerializableLocationInfoList; AStackItemList: TStackViewItemsList); -var - I, J, K, Idx, NewLineNumber: Integer; - StackViewItem: TStackViewItem; - FindFileList: TStringList; - FindMapping: TFindMapping; - FileName, ProjectName: string; - RevisionMS: TMemoryStream; - RevisionStream, Stream: IStream; - FS: TFileStream; - - S: string; - EV: IOTAEnvironmentOptions; - FileSearcher: TFileSearcher; - BrowsingPaths: TStringList; - - Found: Boolean; - RevisionLineNumbers, CurrentLineNumbers: TList; -begin - AStackItemList.Clear; - if AStack.Count > 0 then - begin - FindFileList := TStringList.Create; - try - FindFileList.Sorted := True; - //check if the files can be found in a project in the current project group - for I := 0 to AStack.Count - 1 do - begin - StackViewItem := AStackItemList.Add; - StackViewItem.Assign(AStack[I]); - StackViewItem.Revision := AStack[I].UnitVersionRevision; - Idx := FindFileList.IndexOf(AStack[I].SourceName); - if Idx <> -1 then - begin - FindMapping := TFindMapping(FindFileList.Objects[Idx]); - FindMapping.Add(StackViewItem); - StackViewItem.FoundFile := FindMapping.FoundFile; - StackViewItem.FileName := FindMapping.FileName; - StackViewItem.ProjectName := FindMapping.ProjectName; - end - else - begin - if AStack[I].SourceName <> '' then - FileName := FindModuleAndProject(AStack[I].SourceName, ProjectName) - else - begin - FileName := ''; - ProjectName := ''; - end; - FindMapping := TFindMapping.Create; - FindMapping.Add(StackViewItem); - FindFileList.AddObject(AStack[I].SourceName, FindMapping); - FindMapping.FoundFile := FileName <> ''; - FindMapping.FileName := FileName; - FindMapping.ProjectName := ProjectName; - - StackViewItem.FoundFile := FileName <> ''; - StackViewItem.FileName := FileName; - StackViewItem.ProjectName := ProjectName; - end; - end; - - //use the build number from the version number as revision number if the revision number is empty - if FOptions.ModuleVersionAsRevision then - begin - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindMapping.Count > 0) and (FindMapping[0].Revision = '') and (FindMapping[0].ModuleName <> '') then - begin - Idx := -1; - { TODO -oUSc : Compare full filename when the filename in the stack contains also the path - - Why full filenames? - - It is possible to load - <Path 1>\TestDLL.DLL - <Path 2>\TestDLL.DLL} - for J := 0 to FExceptionInfo.Modules.Count - 1 do - if CompareText(ExtractFileName(FExceptionInfo.Modules[J].ModuleName), ExtractFileName(FindMapping[0].ModuleName)) = 0 then - begin - Idx := J; - Break; - end; - if Idx <> -1 then - begin - S := FExceptionInfo.Modules[Idx].BinFileVersion; - K := Pos('.', S); - if K > 0 then - Delete(S, 1, K); - K := Pos('.', S); - if K > 0 then - Delete(S, 1, K); - K := Pos('.', S); - if K > 0 then - begin - Delete(S, 1, K); - for J := 0 to FindMapping.Count - 1 do - FindMapping[J].Revision := S; - end; - end; - end; - end; - end; - - //check if the other files can be found in BrowsingPath - Found := False; - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindFileList[I] <> '') and (not FindMapping.FoundFile) then - begin - Found := True; - Break; - end; - end; - if Found then - begin - FileSearcher := TFileSearcher.Create; - try - BrowsingPaths := TStringList.Create; - try - EV := (BorlandIDEServices as IOTAServices).GetEnvironmentOptions; - StrTokenToStrings(EV.Values['BrowsingPath'], ';', BrowsingPaths); - for I := 0 to BrowsingPaths.Count - 1 do - begin - S := BrowsingPaths[I]; - if Pos('$(BDS)', S) > 0 then - S := StringReplace(S, '$(BDS)', RootDir, []); - FileSearcher.SearchPaths.Add(S); - end; - finally - BrowsingPaths.Free; - end; - if FileSearcher.SearchPaths.Count > 0 then - begin - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindFileList[I] <> '') and (not FindMapping.FoundFile) and (FileSearcher.IndexOf(FindFileList[I]) = -1) then - FileSearcher.Add(FindFileList[I]); - end; - if FileSearcher.Count > 0 then - begin - FileSearcher.Search; - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if not FindMapping.FoundFile then - begin - Idx := FileSearcher.IndexOf(FindFileList[I]); - if (Idx <> -1) and (FileSearcher[Idx].Results.Count > 0) then - begin - FindMapping.FoundFile := True; - FindMapping.FileName := FileSearcher[Idx].Results[0]; - FindMapping.ProjectName := ''; - for J := 0 to FindMapping.Count - 1 do - begin - FindMapping[J].FoundFile := FindMapping.FoundFile; - FindMapping[J].FileName := FindMapping.FileName; - FindMapping[J].ProjectName := FindMapping.ProjectName; - end; - end; - end; - end; - end; - end; - finally - FileSearcher.Free; - end; - end; - for I := 0 to FindFileList.Count - 1 do - begin - FindMapping := TFindMapping(FindFileList.Objects[I]); - if (FindMapping.FoundFile) and (FindMapping.Count > 0) {and (FindMapping[0].Revision <> '')} then//todo - check revision - begin - Found := False; - for J := 0 to FindMapping.Count - 1 do - if FindMapping[J].LineNumber > 0 then - begin - Found := True; - Break; - end; - if Found then - begin - Stream := GetFileEditorContent(FindMapping.FileName); - if not Assigned(Stream) then - begin - if FileExists(FindMapping.FileName) then - begin -(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('Using %s', [FindMapping.FileName]));//todo - remove - FS := TFileStream.Create(FindMapping.FileName, fmOpenRead); - Stream := TStreamAdapter.Create(FS); - end; - end - else - FS := nil; - try - if Assigned(Stream) and (FS = nil) then//todo - remove FS = nil - begin - RevisionLineNumbers := TList.Create; - CurrentLineNumbers := TList.Create; - try - for J := 0 to FindMapping.Count - 1 do - if FindMapping[J].LineNumber > 0 then - RevisionLineNumbers.Add(Pointer(FindMapping[J].LineNumber)); - RevisionMS := TMemoryStream.Create; - try - RevisionStream := TStreamAdapter.Create(RevisionMS); -(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F1 %s', [FindMapping.FileName]));//todo - remove - if GetRevisionContent(FindMapping.FileName, FindMapping[0].Revision, RevisionStream) then - begin -(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F2 %s', [FindMapping.FileName]));//todo - remove - if TranslateLineNumbers(RevisionStream, Stream, RevisionLineNumbers, CurrentLineNumbers) > 0 then - begin -(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('F3 %s', [FindMapping.FileName]));//todo - remove - if RevisionLineNumbers.Count = CurrentLineNumbers.Count then - begin - for J := 0 to FindMapping.Count - 1... [truncated message content] |
From: <usc...@us...> - 2009-04-26 17:36:14
|
Revision: 2745 http://jcl.svn.sourceforge.net/jcl/?rev=2745&view=rev Author: uschuster Date: 2009-04-26 17:36:02 +0000 (Sun, 26 Apr 2009) Log Message: ----------- project group updates for lower versions (not tested) Modified Paths: -------------- branches/jcl-stack-trace/jcl/TODO.txt branches/jcl-stack-trace/jcl/packages/JclPackagesD100.bdsgroup branches/jcl-stack-trace/jcl/packages/JclPackagesD50.bpg branches/jcl-stack-trace/jcl/packages/JclPackagesD60.bpg branches/jcl-stack-trace/jcl/packages/JclPackagesD70.bpg branches/jcl-stack-trace/jcl/packages/JclPackagesD90.bdsgroup branches/jcl-stack-trace/jcl/packages/resources.mak Modified: branches/jcl-stack-trace/jcl/TODO.txt =================================================================== --- branches/jcl-stack-trace/jcl/TODO.txt 2009-04-26 09:39:10 UTC (rev 2744) +++ branches/jcl-stack-trace/jcl/TODO.txt 2009-04-26 17:36:02 UTC (rev 2745) @@ -30,4 +30,4 @@ - (partly done) add UNITVERSIONING * integrate it into the installation - - generate packages, JclPackages*.* and resources.mak for 5 - 10 \ No newline at end of file + - commit packages for D5-D7, D9, D10 \ No newline at end of file Modified: branches/jcl-stack-trace/jcl/packages/JclPackagesD100.bdsgroup =================================================================== --- branches/jcl-stack-trace/jcl/packages/JclPackagesD100.bdsgroup 2009-04-26 09:39:10 UTC (rev 2744) +++ branches/jcl-stack-trace/jcl/packages/JclPackagesD100.bdsgroup 2009-04-26 17:36:02 UTC (rev 2745) @@ -19,7 +19,8 @@ <Projects Name="JclRepositoryExpert100.bpl">d10\JclRepositoryExpert.bdsproj</Projects> <Projects Name="JclSIMDViewExpert100.bpl">d10\JclSIMDViewExpert.bdsproj</Projects> <Projects Name="JclVersionControlExpert100.bpl">d10\JclVersionControlExpert.bdsproj</Projects> - <Projects Name="Targets">Jcl100.bpl JclVcl100.bpl JclContainers100.bpl JclBaseExpert100.bpl JclDebugExpert100.bpl JclFavoriteFoldersExpert100.bpl JclProjectAnalysisExpert100.bpl JclRepositoryExpert100.bpl JclSIMDViewExpert100.bpl JclVersionControlExpert100.bpl</Projects> + <Projects Name="JclStackTraceViewerExpert100.bpl">d10\JclStackTraceViewerExpert.bdsproj</Projects> + <Projects Name="Targets">Jcl100.bpl JclVcl100.bpl JclContainers100.bpl JclBaseExpert100.bpl JclDebugExpert100.bpl JclFavoriteFoldersExpert100.bpl JclProjectAnalysisExpert100.bpl JclRepositoryExpert100.bpl JclSIMDViewExpert100.bpl JclVersionControlExpert100.bpl JclStackTraceViewerExpert100.bpl</Projects> </Projects> <Dependencies/> </Default.Personality> Modified: branches/jcl-stack-trace/jcl/packages/JclPackagesD50.bpg =================================================================== --- branches/jcl-stack-trace/jcl/packages/JclPackagesD50.bpg 2009-04-26 09:39:10 UTC (rev 2744) +++ branches/jcl-stack-trace/jcl/packages/JclPackagesD50.bpg 2009-04-26 17:36:02 UTC (rev 2745) @@ -13,7 +13,7 @@ JclDebugExpertD50.bpl JclFavoriteFoldersExpertD50.bpl \ JclProjectAnalysisExpertD50.bpl JclRepositoryExpertD50.bpl \ JclSIMDViewExpertD50.bpl JclThreadNameExpertD50.bpl JclUsesExpertD50.bpl \ - JclVersionControlExpertD50.bpl + JclVersionControlExpertD50.bpl JclStackTraceViewerExpertD50.bpl #------------------------------------------------------------------------------ default: $(PROJECTS) #------------------------------------------------------------------------------ @@ -54,4 +54,7 @@ JclVersionControlExpertD50.bpl: d5\JclVersionControlExpertD50.dpk $(DCC) +JclStackTraceViewerExpertD50.bpl: d5\JclStackTraceViewerExpertD50.dpk + $(DCC) + Modified: branches/jcl-stack-trace/jcl/packages/JclPackagesD60.bpg =================================================================== --- branches/jcl-stack-trace/jcl/packages/JclPackagesD60.bpg 2009-04-26 09:39:10 UTC (rev 2744) +++ branches/jcl-stack-trace/jcl/packages/JclPackagesD60.bpg 2009-04-26 17:36:02 UTC (rev 2745) @@ -13,7 +13,7 @@ JclBaseExpertD60.bpl JclDebugExpertD60.bpl JclFavoriteFoldersExpertD60.bpl \ JclProjectAnalysisExpertD60.bpl JclRepositoryExpertD60.bpl \ JclSIMDViewExpertD60.bpl JclThreadNameExpertD60.bpl JclUsesExpertD60.bpl \ - JclVersionControlExpertD60.bpl + JclVersionControlExpertD60.bpl JclStackTraceViewerExpertD60.bpl #------------------------------------------------------------------------------ default: $(PROJECTS) #------------------------------------------------------------------------------ @@ -57,4 +57,7 @@ JclVersionControlExpertD60.bpl: d6\JclVersionControlExpert.dpk $(DCC) +JclStackTraceViewerExpertD60.bpl: d6\JclStackTraceViewerExpert.dpk + $(DCC) + Modified: branches/jcl-stack-trace/jcl/packages/JclPackagesD70.bpg =================================================================== --- branches/jcl-stack-trace/jcl/packages/JclPackagesD70.bpg 2009-04-26 09:39:10 UTC (rev 2744) +++ branches/jcl-stack-trace/jcl/packages/JclPackagesD70.bpg 2009-04-26 17:36:02 UTC (rev 2745) @@ -12,7 +12,8 @@ PROJECTS = Jcl70.bpl JclVcl70.bpl JclVClx70.bpl JclContainers70.bpl \ JclBaseExpert70.bpl JclDebugExpert70.bpl JclFavoriteFoldersExpert70.bpl \ JclProjectAnalysisExpert70.bpl JclRepositoryExpert70.bpl \ - JclSIMDViewExpert70.bpl JclUsesExpert70.bpl JclVersionControlExpert70.bpl + JclSIMDViewExpert70.bpl JclUsesExpert70.bpl JclVersionControlExpert70.bpl \ + JclStackTraceViewerExpert70.bpl #------------------------------------------------------------------------------ default: $(PROJECTS) #------------------------------------------------------------------------------ @@ -53,4 +54,7 @@ JclVersionControlExpert70.bpl: d7\JclVersionControlExpert.dpk $(DCC) +JclStackTraceViewerExpert70.bpl: d7\JclStackTraceViewerExpert.dpk + $(DCC) + Modified: branches/jcl-stack-trace/jcl/packages/JclPackagesD90.bdsgroup =================================================================== --- branches/jcl-stack-trace/jcl/packages/JclPackagesD90.bdsgroup 2009-04-26 09:39:10 UTC (rev 2744) +++ branches/jcl-stack-trace/jcl/packages/JclPackagesD90.bdsgroup 2009-04-26 17:36:02 UTC (rev 2745) @@ -21,7 +21,8 @@ <Projects Name="JclRepositoryExpert90.bpl">d9\JclRepositoryExpert.bdsproj</Projects> <Projects Name="JclSIMDViewExpert90.bpl">d9\JclSIMDViewExpert.bdsproj</Projects> <Projects Name="JclVersionControlExpert90.bpl">d9\JclVersionControlExpert.bdsproj</Projects> - <Projects Name="Targets">Jcl90.bpl JclVcl90.bpl JclContainers90.bpl JclBaseExpert90.bpl JclDebugExpert90.bpl JclFavoriteFoldersExpert90.bpl JclProjectAnalysisExpert90.bpl JclRepositoryExpert90.bpl JclSIMDViewExpert90.bpl JclVersionControlExpert90.bpl</Projects> + <Projects Name="JclStackTraceViewerExpert90.bpl">d9\JclStackTraceViewerExpert.bdsproj</Projects> + <Projects Name="Targets">Jcl90.bpl JclVcl90.bpl JclContainers90.bpl JclBaseExpert90.bpl JclDebugExpert90.bpl JclFavoriteFoldersExpert90.bpl JclProjectAnalysisExpert90.bpl JclRepositoryExpert90.bpl JclSIMDViewExpert90.bpl JclVersionControlExpert90.bpl JclStackTraceViewerExpert90.bpl</Projects> </Projects> <Dependencies/> </Default.Personality> Modified: branches/jcl-stack-trace/jcl/packages/resources.mak =================================================================== --- branches/jcl-stack-trace/jcl/packages/resources.mak 2009-04-26 09:39:10 UTC (rev 2744) +++ branches/jcl-stack-trace/jcl/packages/resources.mak 2009-04-26 17:36:02 UTC (rev 2745) @@ -63,6 +63,8 @@ d10\JclVcl.res \ d10\JclVersionControlExpert.res \ d10\JclVersionControlExpertDLL.res \ + d10\JclStackTraceViewerExpert.res \ + d10\JclStackTraceViewerExpertDLL.res \ d11\Jcl.res \ d11\JclContainers.res \ d11\JclBaseExpert.res \ @@ -81,6 +83,8 @@ d11\JclVcl.res \ d11\JclVersionControlExpert.res \ d11\JclVersionControlExpertDLL.res \ + d11\JclStackTraceViewerExpert.res \ + d11\JclStackTraceViewerExpertDLL.res \ d12\Jcl.res \ d12\JclContainers.res \ d12\JclBaseExpert.res \ @@ -99,6 +103,8 @@ d12\JclVcl.res \ d12\JclVersionControlExpert.res \ d12\JclVersionControlExpertDLL.res \ + d12\JclStackTraceViewerExpert.res \ + d12\JclStackTraceViewerExpertDLL.res \ d5\JclUsesExpertDLLD50.res \ d5\JclBaseExpertD50.res \ d5\JclD50.res \ @@ -119,6 +125,8 @@ d5\JclUsesExpertD50.res \ d5\JclVersionControlExpertD50.res \ d5\JclVersionControlExpertDLLD50.res \ + d5\JclStackTraceViewerExpertD50.res \ + d5\JclStackTraceViewerExpertDLLD50.res \ d6\Jcl.res \ d6\JclContainers.res \ d6\JclBaseExpert.res \ @@ -140,6 +148,8 @@ d6\JclVClx.res \ d6\JclVersionControlExpert.res \ d6\JclVersionControlExpertDLL.res \ + d6\JclStackTraceViewerExpert.res \ + d6\JclStackTraceViewerExpertDLL.res \ d7\Jcl.res \ d7\JclContainers.res \ d7\JclBaseExpert.res \ @@ -159,6 +169,8 @@ d7\JclVClx.res \ d7\JclVersionControlExpert.res \ d7\JclVersionControlExpertDLL.res \ + d7\JclStackTraceViewerExpert.res \ + d7\JclStackTraceViewerExpertDLL.res \ d8\Jcl.res \ d8\JclContainers.res \ d8\JclBaseExpert.res \ @@ -180,6 +192,8 @@ d9\JclVcl.res \ d9\JclVersionControlExpert.res \ d9\JclVersionControlExpertDLL.res \ + d9\JclStackTraceViewerExpert.res \ + d9\JclStackTraceViewerExpertDLL.res \ k3\Jcl.res \ k3\JclContainers.res \ k3\JclVClx.res This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <usc...@us...> - 2009-04-26 09:39:12
|
Revision: 2744 http://jcl.svn.sourceforge.net/jcl/?rev=2744&view=rev Author: uschuster Date: 2009-04-26 09:39:10 +0000 (Sun, 26 Apr 2009) Log Message: ----------- - made TJclThreadInfoList.Gather a procedure (function...string; was very likely a left over some old code) - added TJclThreadInfoList.GatherExclude and TJclThreadInfo.GatherInclude Modified Paths: -------------- branches/jcl-stack-trace/jcl/TODO.txt branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas Modified: branches/jcl-stack-trace/jcl/TODO.txt =================================================================== --- branches/jcl-stack-trace/jcl/TODO.txt 2009-04-22 07:22:08 UTC (rev 2743) +++ branches/jcl-stack-trace/jcl/TODO.txt 2009-04-26 09:39:10 UTC (rev 2744) @@ -2,12 +2,6 @@ -------- * (Florent) TJclLocationInfoEx should replace TJclLocationInfo -* extending TJclThreadInfoList.Gather to exclude a set of threads or to include a set of threads - (multiple functions to make things more clear) - - one function for exclude - - one function for include - (exclude + include together doesn't make sense without any wildcard like stuff) - * ? merge TJclDebugThreadInfo/TJclDebugThreadList and TJclThreadInfo/TJclThreadInfoList - investigate if the stack can stay a TJclStackInfoList and if the location information can be retrieved later correctly Modified: branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas =================================================================== --- branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas 2009-04-22 07:22:08 UTC (rev 2743) +++ branches/jcl-stack-trace/jcl/source/windows/JclDebug.pas 2009-04-26 09:39:10 UTC (rev 2744) @@ -921,12 +921,15 @@ function GetAsString: string; function GetCount: Integer; function GetItems(AIndex: Integer): TJclThreadInfo; + procedure InternalGather(AIncludeThreadIDs, AExcludeThreadIDs: array of DWORD); public constructor Create; destructor Destroy; override; function Add: TJclThreadInfo; procedure Clear; - function Gather(AExceptThreadID: DWORD): string; + procedure Gather(AExceptThreadID: DWORD); + procedure GatherExclude(AThreadIDs: array of DWORD); + procedure GatherInclude(AThreadIDs: array of DWORD); property AsCSVString: string read GetAsCSVString; property AsString: string read GetAsString; property Count: Integer read GetCount; @@ -6082,8 +6085,33 @@ Result := Result + Items[I].AsString + #13#10; end; -function TJclThreadInfoList.Gather(AExceptThreadID: DWORD): string; +procedure TJclThreadInfoList.Gather(AExceptThreadID: DWORD); +begin + InternalGather([], [AExceptThreadID]); +end; +procedure TJclThreadInfoList.GatherExclude(AThreadIDs: array of DWORD); +begin + InternalGather([], AThreadIDs); +end; + +procedure TJclThreadInfoList.GatherInclude(AThreadIDs: array of DWORD); +begin + InternalGather(AThreadIDs, []); +end; + +function TJclThreadInfoList.GetCount: Integer; +begin + Result := FItems.Count; +end; + +function TJclThreadInfoList.GetItems(AIndex: Integer): TJclThreadInfo; +begin + Result := TJclThreadInfo(FItems[AIndex]); +end; + +procedure TJclThreadInfoList.InternalGather(AIncludeThreadIDs, AExcludeThreadIDs: array of DWORD); + function OpenThread(ThreadID: DWORD): THandle; type TOpenThreadFunc = function(DesiredAccess: DWORD; InheritHandle: BOOL; ThreadID: DWORD): THandle; stdcall; @@ -6106,6 +6134,20 @@ end; end; + function SearchThreadInArray(AThreadIDs: array of DWORD; AThreadID: DWORD): Boolean; + var + I: Integer; + begin + Result := False; + if Length(AThreadIDs) > 0 then + for I := Low(AThreadIDs) to High(AThreadIDs) do + if AThreadIDs[I] = AThreadID then + begin + Result := True; + Break; + end; + end; + var SnapProcHandle: THandle; ThreadEntry: TThreadEntry32; @@ -6127,8 +6169,12 @@ NextThread := Thread32First(SnapProcHandle, ThreadEntry); while NextThread do begin - if (AExceptThreadID <> ThreadEntry.th32ThreadID) and (ThreadEntry.th32OwnerProcessID = PID) then - ThreadIDList.Add(Pointer(ThreadEntry.th32ThreadID)); + if ThreadEntry.th32OwnerProcessID = PID then + begin + if SearchThreadInArray(AIncludeThreadIDs, ThreadEntry.th32ThreadID) or + not SearchThreadInArray(AExcludeThreadIDs, ThreadEntry.th32ThreadID) then + ThreadIDList.Add(Pointer(ThreadEntry.th32ThreadID)); + end; NextThread := Thread32Next(SnapProcHandle, ThreadEntry); end; finally @@ -6165,16 +6211,6 @@ end; end; -function TJclThreadInfoList.GetCount: Integer; -begin - Result := FItems.Count; -end; - -function TJclThreadInfoList.GetItems(AIndex: Integer): TJclThreadInfo; -begin - Result := TJclThreadInfo(FItems[AIndex]); -end; - //== Miscellanuous =========================================================== {$IFDEF MSWINDOWS} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-04-22 07:22:16
|
Revision: 2743 http://jcl.svn.sourceforge.net/jcl/?rev=2743&view=rev Author: outchy Date: 2009-04-22 07:22:08 +0000 (Wed, 22 Apr 2009) Log Message: ----------- Repository cleanup. Bugtracker URL update. Modified Paths: -------------- trunk/help/AnsiStrings.dtx trunk/help/Notify.dtx trunk/thirdparty/svn_cleaner/SvnCleaner.xml trunk/website/daily/styles/default.css trunk/website/delphi-jedi/btguide.html trunk/website/delphi-jedi/documents/lgpl.html trunk/website/delphi-jedi/documents/mpl11.html trunk/website/delphi-jedi/documents/styleguide.html trunk/website/delphi-jedi/index.html trunk/website/delphi-jedi/jpp.html trunk/website/delphi-jedi/page10.html trunk/website/delphi-jedi/page11.html trunk/website/delphi-jedi/page12.html trunk/website/delphi-jedi/page13.html trunk/website/delphi-jedi/page20.html trunk/website/delphi-jedi/page21.html trunk/website/delphi-jedi/page22.html trunk/website/delphi-jedi/page23.html trunk/website/delphi-jedi/page24.html trunk/website/delphi-jedi/page30.html trunk/website/delphi-jedi/page32.html trunk/website/delphi-jedi/page33.html trunk/website/delphi-jedi/page34.html trunk/website/delphi-jedi/page40.html trunk/website/delphi-jedi/page41.html trunk/website/delphi-jedi/page42.html trunk/website/delphi-jedi/page50.html trunk/website/delphi-jedi/page506.html trunk/website/delphi-jedi/page51.html trunk/website/delphi-jedi/page52.html trunk/website/delphi-jedi/page53.html trunk/website/delphi-jedi/page54.html trunk/website/delphi-jedi/page60.html trunk/website/delphi-jedi/ppp.html trunk/website/delphi-jedi/release120.html trunk/website/delphi-jedi/styles.css trunk/website/delphi-jedi/team/cps.html trunk/website/delphi-jedi/team/test.css trunk/website/test.html Property Changed: ---------------- trunk/ trunk/donations/ trunk/donations/dcl/ trunk/donations/dcl/demos/ trunk/donations/dcl/demos/Algos/ trunk/donations/dcl/demos/Hash/ trunk/donations/dcl/demos/List/ trunk/donations/dcl/demos/Perf/ trunk/donations/dcl/demos/Tree/ trunk/donations/dcl/doc/ trunk/donations/dcl/doc/Classes/ trunk/donations/dcl/doc/Interfaces/ trunk/donations/examples/ trunk/donations/examples/common/ trunk/donations/examples/common/pcre/ trunk/donations/examples/prototypes/ trunk/donations/examples/vcl/ trunk/donations/examples/vcl/dfm/ trunk/donations/examples/vcl/unitversioning/ trunk/donations/examples/visclx/ trunk/donations/examples/visclx/dfm/ trunk/donations/source/ trunk/donations/source/common/ trunk/donations/source/prototypes/ trunk/donations/source/unix/ trunk/donations/source/vcl/ trunk/donations/source/visclx/ trunk/donations/source/windows/ trunk/help/ trunk/help/AnsiStrings.dtx trunk/help/Notify.dtx trunk/help/images/ trunk/jcl/ trunk/jcl/bin/ trunk/jcl/devtools/ trunk/jcl/docs/ trunk/jcl/docs/cps_files/ trunk/jcl/docs/styles/ trunk/jcl/examples/ trunk/jcl/examples/common/ trunk/jcl/examples/common/containers/ trunk/jcl/examples/common/containers/algorithms/ trunk/jcl/examples/common/containers/hashing/ trunk/jcl/examples/common/containers/lists/ trunk/jcl/examples/common/containers/performance/ trunk/jcl/examples/common/containers/trees/ trunk/jcl/examples/common/expreval/ trunk/jcl/examples/common/filesearch/ trunk/jcl/examples/common/graphics/ trunk/jcl/examples/common/multimedia/ trunk/jcl/examples/common/numformat/ trunk/jcl/examples/common/pcre/ trunk/jcl/examples/common/rtti/ trunk/jcl/examples/common/sysinfo/ trunk/jcl/examples/common/textconverter/ trunk/jcl/examples/common/textreader/ trunk/jcl/examples/common/unitversioning/ trunk/jcl/examples/dotnet/ trunk/jcl/examples/dotnet/JCLNetDemo/ trunk/jcl/examples/windows/ trunk/jcl/examples/windows/appinst/ trunk/jcl/examples/windows/asuser/ trunk/jcl/examples/windows/clr/ trunk/jcl/examples/windows/compression/ trunk/jcl/examples/windows/compression/archive/ trunk/jcl/examples/windows/debug/ trunk/jcl/examples/windows/debug/framestrack/ trunk/jcl/examples/windows/debug/reportconverter/ trunk/jcl/examples/windows/debug/sourceloc/ trunk/jcl/examples/windows/debug/stacktrack/ trunk/jcl/examples/windows/debug/threadexcept/ trunk/jcl/examples/windows/delphitools/ trunk/jcl/examples/windows/delphitools/common/ trunk/jcl/examples/windows/delphitools/dependencyviewer/ trunk/jcl/examples/windows/delphitools/peviewer/ trunk/jcl/examples/windows/delphitools/resfix/ trunk/jcl/examples/windows/delphitools/screenjpg/ trunk/jcl/examples/windows/delphitools/toolhelpview/ trunk/jcl/examples/windows/edisdk/ trunk/jcl/examples/windows/edisdk/comserver/ trunk/jcl/examples/windows/edisdk/vb5/ trunk/jcl/examples/windows/filesummary/ trunk/jcl/examples/windows/fileversion/ trunk/jcl/examples/windows/lanman/ trunk/jcl/examples/windows/locales/ trunk/jcl/examples/windows/mapi/ trunk/jcl/examples/windows/multimedia/ trunk/jcl/examples/windows/ntfs/ trunk/jcl/examples/windows/ntservice/ trunk/jcl/examples/windows/peimage/ trunk/jcl/examples/windows/registry/ trunk/jcl/examples/windows/structstorage/ trunk/jcl/examples/windows/sysinfo/ trunk/jcl/examples/windows/tasks/ trunk/jcl/examples/windows/widestring/ trunk/jcl/experts/ trunk/jcl/experts/common/ trunk/jcl/experts/debug/ trunk/jcl/experts/debug/converter/ trunk/jcl/experts/debug/dialog/ trunk/jcl/experts/debug/simdview/ trunk/jcl/experts/debug/threadnames/ trunk/jcl/experts/debug/tools/ trunk/jcl/experts/favfolders/ trunk/jcl/experts/projectanalyzer/ trunk/jcl/experts/repository/ trunk/jcl/experts/useswizard/ trunk/jcl/experts/versioncontrol/ trunk/jcl/experts/versioncontrol/icons/ trunk/jcl/include/ trunk/jcl/install/ trunk/jcl/install/ClxGui/ trunk/jcl/install/HeaderTest/ trunk/jcl/install/VclGui/ trunk/jcl/install/build/ trunk/jcl/install/prototypes/ trunk/jcl/lib/ trunk/jcl/lib/c5/ trunk/jcl/lib/c5/debug/ trunk/jcl/lib/c6/ trunk/jcl/lib/c6/debug/ trunk/jcl/lib/cs1/ trunk/jcl/lib/d10/ trunk/jcl/lib/d10/debug/ trunk/jcl/lib/d10.net/ trunk/jcl/lib/d10.net/debug/ trunk/jcl/lib/d11/ trunk/jcl/lib/d11/debug/ trunk/jcl/lib/d11.net/ trunk/jcl/lib/d11.net/debug/ trunk/jcl/lib/d12/ trunk/jcl/lib/d12/debug/ trunk/jcl/lib/d5/ trunk/jcl/lib/d5/debug/ trunk/jcl/lib/d6/ trunk/jcl/lib/d6/debug/ trunk/jcl/lib/d7/ trunk/jcl/lib/d7/debug/ trunk/jcl/lib/d8/ trunk/jcl/lib/d9/ trunk/jcl/lib/d9/debug/ trunk/jcl/lib/d9.net/ trunk/jcl/lib/d9.net/debug/ trunk/jcl/lib/k3/ trunk/jcl/lib/k3/debug/ trunk/jcl/packages/ trunk/jcl/packages/c5/ trunk/jcl/packages/c6/ trunk/jcl/packages/cs1/ trunk/jcl/packages/d10/ trunk/jcl/packages/d10.net/ trunk/jcl/packages/d11/ trunk/jcl/packages/d11.net/ trunk/jcl/packages/d12/ trunk/jcl/packages/d5/ trunk/jcl/packages/d6/ trunk/jcl/packages/d7/ trunk/jcl/packages/d8/ trunk/jcl/packages/d9/ trunk/jcl/packages/d9.net/ trunk/jcl/packages/k3/ trunk/jcl/packages/xml/ trunk/jcl/source/ trunk/jcl/source/common/ trunk/jcl/source/common/JclNotify.pas trunk/jcl/source/common/zlibh.pas trunk/jcl/source/include/ trunk/jcl/source/prototypes/ trunk/jcl/source/prototypes/containers/ trunk/jcl/source/prototypes/supplement/ trunk/jcl/source/prototypes/win32api/ trunk/jcl/source/unix/ trunk/jcl/source/vcl/ trunk/jcl/source/visclx/ trunk/jcl/source/windows/ trunk/jcl/source/windows/obj/ trunk/jcl/source/windows/obj/bzip2/ trunk/jcl/source/windows/obj/pcre/ trunk/jcl/source/windows/obj/zlib/ trunk/jpp/ trunk/jpp/Original/ trunk/qa/ trunk/qa/automated/ trunk/qa/automated/dunit/ trunk/qa/automated/dunit/units/ trunk/qa/automated/dunit/units/TestJclNotify.pas trunk/thirdparty/ trunk/thirdparty/InnoSetup/ trunk/thirdparty/InnoSetup/CompInstall/ trunk/thirdparty/InnoSetup/InnoSetup/ trunk/thirdparty/InnoSetup/InnoSetup/Languages/ trunk/thirdparty/InnoSetup/Skin/ trunk/thirdparty/InnoSetup/Skin/images/ trunk/thirdparty/bzip2/ trunk/thirdparty/jedi_code_format/ trunk/thirdparty/makedist/ trunk/thirdparty/pcre/ trunk/thirdparty/svn_cleaner/ trunk/thirdparty/unicode_data_extractor/ trunk/thirdparty/zlib/ trunk/website/ trunk/website/daily/ trunk/website/daily/styles/ trunk/website/daily/styles/default.css trunk/website/delphi-jedi/ trunk/website/delphi-jedi/btguide.html trunk/website/delphi-jedi/documents/ trunk/website/delphi-jedi/documents/lgpl.html trunk/website/delphi-jedi/documents/lgpl.pdf trunk/website/delphi-jedi/documents/mpl11.html trunk/website/delphi-jedi/documents/mpl11.pdf trunk/website/delphi-jedi/documents/styleguide.html trunk/website/delphi-jedi/documents/styleguide.pdf trunk/website/delphi-jedi/download/ trunk/website/delphi-jedi/img/ trunk/website/delphi-jedi/img/absatz.jpg trunk/website/delphi-jedi/img/bg.jpg trunk/website/delphi-jedi/img/ecke.jpg trunk/website/delphi-jedi/img/email.jpg trunk/website/delphi-jedi/img/mail.gif trunk/website/delphi-jedi/img/pixel.gif trunk/website/delphi-jedi/index.html trunk/website/delphi-jedi/jpp.html trunk/website/delphi-jedi/page10.html trunk/website/delphi-jedi/page11.html trunk/website/delphi-jedi/page12.html trunk/website/delphi-jedi/page13.html trunk/website/delphi-jedi/page20.html trunk/website/delphi-jedi/page21.html trunk/website/delphi-jedi/page22.html trunk/website/delphi-jedi/page23.html trunk/website/delphi-jedi/page24.html trunk/website/delphi-jedi/page30.html trunk/website/delphi-jedi/page32.html trunk/website/delphi-jedi/page33.html trunk/website/delphi-jedi/page34.html trunk/website/delphi-jedi/page40.html trunk/website/delphi-jedi/page41.html trunk/website/delphi-jedi/page42.html trunk/website/delphi-jedi/page50.html trunk/website/delphi-jedi/page506.html trunk/website/delphi-jedi/page51.html trunk/website/delphi-jedi/page52.html trunk/website/delphi-jedi/page53.html trunk/website/delphi-jedi/page54.html trunk/website/delphi-jedi/page60.html trunk/website/delphi-jedi/ppp.html trunk/website/delphi-jedi/release120.html trunk/website/delphi-jedi/styles.css trunk/website/delphi-jedi/team/ trunk/website/delphi-jedi/team/cps.html trunk/website/delphi-jedi/team/cps.pdf trunk/website/delphi-jedi/team/strucv1.jpg trunk/website/delphi-jedi/team/test.css trunk/website/itrack/ trunk/website/poll/ trunk/website/poll/JediPoll.pdf trunk/website/test.html trunk/website/websetup/ Property changes on: trunk ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/dcl ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/dcl/demos ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/dcl/demos/Algos ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/dcl/demos/Hash ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/dcl/demos/List ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/dcl/demos/Perf ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/dcl/demos/Tree ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/dcl/doc ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/dcl/doc/Classes ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/dcl/doc/Interfaces ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/examples ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/examples/common ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/examples/common/pcre ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/examples/prototypes ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/examples/vcl ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/examples/vcl/dfm ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/examples/vcl/unitversioning ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/examples/visclx ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/examples/visclx/dfm ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/source ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/source/common ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/source/prototypes ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/source/unix ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/source/vcl ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/source/visclx ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/donations/source/windows ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/help ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Modified: trunk/help/AnsiStrings.dtx =================================================================== --- trunk/help/AnsiStrings.dtx 2009-04-22 07:16:06 UTC (rev 2742) +++ trunk/help/AnsiStrings.dtx 2009-04-22 07:22:08 UTC (rev 2743) @@ -1,28 +1,28 @@ -@@StrAnsiToOem -<GROUP StringManipulation.StringTransformationRoutines> -Summary: - Translates an ANSI string into a string using the OEM character set. -Description: - The StrAnsiToOem function translates an ansi string into a string using the - OEM defined character set. -Parameters: - S - The string to translate. -Result: - The translated string. -Donator: - Anonymous --------------------------------------------------------------------------------- -@@StrOemToAnsi -<GROUP StringManipulation.StringTransformationRoutines> -Summary: - Translates an OEM string into an ansi string. -Description: - The StrOemToAnsi function translated a string using the OEM defined character set - into an ansi string. -Parameters: - S - The string to translate. -Result: - The translated string. -Donator: - Anonymous --------------------------------------------------------------------------------- +@@StrAnsiToOem +<GROUP StringManipulation.StringTransformationRoutines> +Summary: + Translates an ANSI string into a string using the OEM character set. +Description: + The StrAnsiToOem function translates an ansi string into a string using the + OEM defined character set. +Parameters: + S - The string to translate. +Result: + The translated string. +Donator: + Anonymous +-------------------------------------------------------------------------------- +@@StrOemToAnsi +<GROUP StringManipulation.StringTransformationRoutines> +Summary: + Translates an OEM string into an ansi string. +Description: + The StrOemToAnsi function translated a string using the OEM defined character set + into an ansi string. +Parameters: + S - The string to translate. +Result: + The translated string. +Donator: + Anonymous +-------------------------------------------------------------------------------- Property changes on: trunk/help/AnsiStrings.dtx ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/help/Notify.dtx =================================================================== --- trunk/help/Notify.dtx 2009-04-22 07:16:06 UTC (rev 2742) +++ trunk/help/Notify.dtx 2009-04-22 07:22:08 UTC (rev 2743) @@ -1,161 +1,161 @@ -@@IJclListener -<GROUP Notifications> -Summary - Interface for listener implementations. -Description - IJclListener defines the interface required in a notifier/listener pattern - setup. It consists of a single method, called by the notifier for each message - being passed to it. - - See the <LINK @@BaseServices.Notifications, topic on notifier/listener pattern> - for more information on how to use this and related interfaces. -Donator - Marcel Bestebroer --------------------------------------------------------------------------------- -@@IJclListener.Notification -Summary - Notification callback. -Description - Notification is called by the notifier's <LINK IJclNotifier.Notify, Notify> - method if the listener is registered with the notifier. - - The provided message is passed on from the process calling the - <LINK IJclNotifier.Notify, Notify> method. Most real world implementations - will have implemented additional interfaces (or an interface derived from - IJclNotificationMessage) to provide actual information on the nature of the - notification. -Parameters - msg - A message containing additional information on the nature of the - notification. --------------------------------------------------------------------------------- -@@IJclNotifier -<GROUP Notifications> -Summary - Interface for notifier implementations. -Description - IJclNotifier defines the interface required in a notifier/listener pattern - setup. It consists of a two management methods and a notifier method. - - See the <LINK @@BaseServices.Notifications, topic on notifier/listener pattern> - for more information on how to use this and related interfaces. -Donator - Marcel Bestebroer --------------------------------------------------------------------------------- -@@IJclNotifier.Add -Summary - Adds a listener to the notifier. -Description - Add will register the specified listener with the notifier. If the specified - listener is already registered with the notifier, nothing will happen. -Parameters - listener - The IJclListener implementation to register with the notifier. --------------------------------------------------------------------------------- -@@IJclNotifier.Notify -Summary - Notifies all listeners of an event. -Description - Notify will iterate all registered listeners and call their - <LINK IJclNotificationMessage.Notification, Notification> method, passing the - provided message. -Parameters - msg - A message containing additional information on the nature of the - notification. The message is passed on to the listeners currently - registered with the notifier. --------------------------------------------------------------------------------- -@@IJclNotifier.Remove -Summary - Removes a listener from the notifier. -Description - Remove will unregister the specified listener from the notifier. If the - specified listener is not registered with the notifier, nothing will happen. -Parameters - listener - The IJclListener implementation to unregister from the notifier. --------------------------------------------------------------------------------- -@@IJclNotificationMessage -<GROUP Notifications> -Summary - Interface for notification message implementations. -Description - IJclNotificationMessage defines the interface required in a notifier/listener - pattern setup. It serves as a place holder to various notification messages - and implementers will either use a derived interface or additional interface - to provide process-specific information. - - See the <LINK @@BaseServices.Notifications, topic on notifier/listener pattern> - for more information on how to use this and related interfaces. -Donator - Marcel Bestebroer --------------------------------------------------------------------------------- -@@TJclBaseNotifier -<GROUP Notifications> -Summary - Base implementation of IJclNotifier. -Description - TJclBaseNotifier is a base implementation of IJclNotifier. It provides - notification in a sequential order, using the same order in which listeners - were registered. - -*Thread safety * - If the unit is compiled with the THREADSAFE define, all access to the - notifier list is protected using a multi-read/exclusive-write synchronization - object. - - Sending notifications is seen as a read-only operation since the list is not - modified. - - Note that TJclBaseNotifier does not create threads when generating the - notifications. Each listener is notified in a sequential manner, where each - listener will have to wait for the previous listener to finish. A call to the - IJclNotifier.Notify will thus not finish until all listeners have processed - the notification. - -* Notes * - Using this implementation does not imply TJclBaseListener or - TJclBaseNotificationMessage have to be used; TJclBaseNotifier will handle - any IJclListener and IJclNotificationMessage implementation. -Donator - Marcel Bestebroer --------------------------------------------------------------------------------- -@@TJclBaseNotifier.Add -<ALIAS IJclNotifier.Add> --------------------------------------------------------------------------------- -@@TJclBaseNotifier.Notify -<ALIAS IJclNotifier.Notify> --------------------------------------------------------------------------------- -@@TJclBaseNotifier.Remove -<ALIAS IJclNotifier.Remove> --------------------------------------------------------------------------------- -@@TJclBaseNotificationMessage -<GROUP Notifications> -Summary - Base implementation of IJclNotificationMessage. -Description - TJclBaseNotificationMessage is a base implementation of IJclNotificationMessage. - Since the interface only serves as a place holder, you should create - derivatives of this class, implementing either one or more additional - interfaces, or implementing an interface derived from IJclNotificationMessage. - -* Notes * - Using this implementation does not imply TJclBaseNotifier or - TJclBaseListener have to be used; TJclBaseNotificationMessage will be handled - by any IJclListener and IJclNotificationMessage implementation. -Donator - Marcel Bestebroer --------------------------------------------------------------------------------- -@@TJclBaseListener -<GROUP Notifications> -Summary - Base implementation of IJclListener. -Description - TJclBaseListener is a base implementation of IJclListener. It declares an - empty, virtual implementation for the Notification method. Descendants should - override the method to process the notification messages. - -* Notes * - Using this implementation does not imply TJclBaseNotifier or - TJclBaseNotificationMessage have to be used; TJclBaseListener will handle - any IJclNotifier and IJclNotificationMessage implementation. -Donator - Marcel Bestebroer --------------------------------------------------------------------------------- - +@@IJclListener +<GROUP Notifications> +Summary + Interface for listener implementations. +Description + IJclListener defines the interface required in a notifier/listener pattern + setup. It consists of a single method, called by the notifier for each message + being passed to it. + + See the <LINK @@BaseServices.Notifications, topic on notifier/listener pattern> + for more information on how to use this and related interfaces. +Donator + Marcel Bestebroer +-------------------------------------------------------------------------------- +@@IJclListener.Notification +Summary + Notification callback. +Description + Notification is called by the notifier's <LINK IJclNotifier.Notify, Notify> + method if the listener is registered with the notifier. + + The provided message is passed on from the process calling the + <LINK IJclNotifier.Notify, Notify> method. Most real world implementations + will have implemented additional interfaces (or an interface derived from + IJclNotificationMessage) to provide actual information on the nature of the + notification. +Parameters + msg - A message containing additional information on the nature of the + notification. +-------------------------------------------------------------------------------- +@@IJclNotifier +<GROUP Notifications> +Summary + Interface for notifier implementations. +Description + IJclNotifier defines the interface required in a notifier/listener pattern + setup. It consists of a two management methods and a notifier method. + + See the <LINK @@BaseServices.Notifications, topic on notifier/listener pattern> + for more information on how to use this and related interfaces. +Donator + Marcel Bestebroer +-------------------------------------------------------------------------------- +@@IJclNotifier.Add +Summary + Adds a listener to the notifier. +Description + Add will register the specified listener with the notifier. If the specified + listener is already registered with the notifier, nothing will happen. +Parameters + listener - The IJclListener implementation to register with the notifier. +-------------------------------------------------------------------------------- +@@IJclNotifier.Notify +Summary + Notifies all listeners of an event. +Description + Notify will iterate all registered listeners and call their + <LINK IJclNotificationMessage.Notification, Notification> method, passing the + provided message. +Parameters + msg - A message containing additional information on the nature of the + notification. The message is passed on to the listeners currently + registered with the notifier. +-------------------------------------------------------------------------------- +@@IJclNotifier.Remove +Summary + Removes a listener from the notifier. +Description + Remove will unregister the specified listener from the notifier. If the + specified listener is not registered with the notifier, nothing will happen. +Parameters + listener - The IJclListener implementation to unregister from the notifier. +-------------------------------------------------------------------------------- +@@IJclNotificationMessage +<GROUP Notifications> +Summary + Interface for notification message implementations. +Description + IJclNotificationMessage defines the interface required in a notifier/listener + pattern setup. It serves as a place holder to various notification messages + and implementers will either use a derived interface or additional interface + to provide process-specific information. + + See the <LINK @@BaseServices.Notifications, topic on notifier/listener pattern> + for more information on how to use this and related interfaces. +Donator + Marcel Bestebroer +-------------------------------------------------------------------------------- +@@TJclBaseNotifier +<GROUP Notifications> +Summary + Base implementation of IJclNotifier. +Description + TJclBaseNotifier is a base implementation of IJclNotifier. It provides + notification in a sequential order, using the same order in which listeners + were registered. + +*Thread safety * + If the unit is compiled with the THREADSAFE define, all access to the + notifier list is protected using a multi-read/exclusive-write synchronization + object. + + Sending notifications is seen as a read-only operation since the list is not + modified. + + Note that TJclBaseNotifier does not create threads when generating the + notifications. Each listener is notified in a sequential manner, where each + listener will have to wait for the previous listener to finish. A call to the + IJclNotifier.Notify will thus not finish until all listeners have processed + the notification. + +* Notes * + Using this implementation does not imply TJclBaseListener or + TJclBaseNotificationMessage have to be used; TJclBaseNotifier will handle + any IJclListener and IJclNotificationMessage implementation. +Donator + Marcel Bestebroer +-------------------------------------------------------------------------------- +@@TJclBaseNotifier.Add +<ALIAS IJclNotifier.Add> +-------------------------------------------------------------------------------- +@@TJclBaseNotifier.Notify +<ALIAS IJclNotifier.Notify> +-------------------------------------------------------------------------------- +@@TJclBaseNotifier.Remove +<ALIAS IJclNotifier.Remove> +-------------------------------------------------------------------------------- +@@TJclBaseNotificationMessage +<GROUP Notifications> +Summary + Base implementation of IJclNotificationMessage. +Description + TJclBaseNotificationMessage is a base implementation of IJclNotificationMessage. + Since the interface only serves as a place holder, you should create + derivatives of this class, implementing either one or more additional + interfaces, or implementing an interface derived from IJclNotificationMessage. + +* Notes * + Using this implementation does not imply TJclBaseNotifier or + TJclBaseListener have to be used; TJclBaseNotificationMessage will be handled + by any IJclListener and IJclNotificationMessage implementation. +Donator + Marcel Bestebroer +-------------------------------------------------------------------------------- +@@TJclBaseListener +<GROUP Notifications> +Summary + Base implementation of IJclListener. +Description + TJclBaseListener is a base implementation of IJclListener. It declares an + empty, virtual implementation for the Notification method. Descendants should + override the method to process the notification messages. + +* Notes * + Using this implementation does not imply TJclBaseNotifier or + TJclBaseNotificationMessage have to be used; TJclBaseListener will handle + any IJclNotifier and IJclNotificationMessage implementation. +Donator + Marcel Bestebroer +-------------------------------------------------------------------------------- + Property changes on: trunk/help/Notify.dtx ___________________________________________________________________ Added: svn:eol-style + native Property changes on: trunk/help/images ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/bin ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/devtools ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/docs ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/docs/cps_files ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/docs/styles ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/containers ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/containers/algorithms ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/containers/hashing ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/containers/lists ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/containers/performance ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/containers/trees ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/expreval ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/filesearch ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/graphics ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/multimedia ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/numformat ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/pcre ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/rtti ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/sysinfo ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/textconverter ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/textreader ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/common/unitversioning ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/dotnet ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/dotnet/JCLNetDemo ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/appinst ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/asuser ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/clr ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/compression ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/compression/archive ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/debug ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/debug/framestrack ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/debug/reportconverter ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/debug/sourceloc ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/debug/stacktrack ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/debug/threadexcept ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/delphitools ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/delphitools/common ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/delphitools/dependencyviewer ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/delphitools/peviewer ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/delphitools/resfix ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/delphitools/screenjpg ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/delphitools/toolhelpview ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/edisdk ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/edisdk/comserver ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/edisdk/vb5 ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/filesummary ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/fileversion ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/lanman ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/locales ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/mapi ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/multimedia ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/ntfs ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/ntservice ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/peimage ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/registry ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/structstorage ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/sysinfo ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/tasks ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/examples/windows/widestring ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/common ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/debug ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/debug/converter ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/debug/dialog ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/debug/simdview ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/debug/threadnames ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/debug/tools ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/favfolders ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/projectanalyzer ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/repository ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/useswizard ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/versioncontrol ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/experts/versioncontrol/icons ___________________________________________________________________ Modified: tsvn:projectlanguage - 1033 + 0x0409 Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Added: svn:ignore + *.~* *.hpp *.dcu __history Property changes on: trunk/jcl/include ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/install ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/install/ClxGui ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/install/HeaderTest ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/install/VclGui ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/install/build ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/install/prototypes ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/lib ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/lib/c5 ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/lib/c5/debug ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/lib/c6 ___________________________________________________________________ Modified: bugtraq:url - http://homepages.codegear.com/jedi/issuetracker/view.php?id=%BUGID% + http://issuetracker.delphi-jedi.org/view.php?id=%BUGID% Property changes on: trunk/jcl/lib/c6/debug _________________... [truncated message content] |