You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(99) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(207) |
Feb
(118) |
Mar
(45) |
Apr
(16) |
May
(3) |
Jun
(14) |
Jul
(20) |
Aug
(37) |
Sep
(77) |
Oct
(28) |
Nov
(40) |
Dec
(20) |
2006 |
Jan
(23) |
Feb
(14) |
Mar
(9) |
Apr
|
May
(22) |
Jun
(25) |
Jul
(12) |
Aug
(17) |
Sep
(124) |
Oct
(120) |
Nov
(48) |
Dec
|
From: Joel L. <lo...@us...> - 2006-11-11 07:08:30
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv6075 Modified Files: Tag: VC_Debugger debugger.pas Log Message: Set the stack frame context for GDB as well. Index: debugger.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugger.pas,v retrieving revision 1.12.2.20 retrieving revision 1.12.2.21 diff -u -d -r1.12.2.20 -r1.12.2.21 --- debugger.pas 8 Nov 2006 04:18:17 -0000 1.12.2.20 +++ debugger.pas 11 Nov 2006 07:08:23 -0000 1.12.2.21 @@ -299,6 +299,7 @@ procedure Pause; override; procedure Next; override; procedure Step; override; + procedure SetContext(frame: Integer); override; function GetVariableHint(name: string): string; override; //Low-level stuff @@ -2457,6 +2458,12 @@ fBusy := False; end; +procedure TGDBDebugger.SetContext(frame: Integer); +begin + QueueCommand('frame', IntToStr(frame)); + RefreshContext([cdLocals, cdWatches]); +end; + initialization Breakpoints := TList.Create; |
From: Tony R. <tb...@us...> - 2006-11-10 19:33:23
|
Update of /cvsroot/wxdsgn/wxdevcpp/source/components In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv23618/source/components Modified Files: wxEdit.pas wxmemo.pas Log Message: Bug fix for # 1545110. http://sourceforge.net/tracker/index.php?func=detail&aid=1545110&group_id=95606&atid=611982 Index: wxmemo.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/components/wxmemo.pas,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- wxmemo.pas 30 Sep 2006 19:14:11 -0000 1.17 +++ wxmemo.pas 10 Nov 2006 19:33:19 -0000 1.18 @@ -211,6 +211,7 @@ { Method to set variable and property values and create objects } procedure TWxMemo.AutoInitialize; begin + FWx_EventList := TStringList.Create; FWx_PropertyList := TStringList.Create; FWx_Border := 5; @@ -227,6 +228,7 @@ defaultFGColor := self.font.color; FWx_LoadFromFile := TWxFileNameString.Create; FWx_Comments := TStringList.Create; + AutoSize := False; end; { of AutoInitialize } @@ -470,6 +472,8 @@ // else // parentName:=self.Parent.name; + AutoSize := False; + parentName := GetWxWidgetParent(self); Wx_EditStyle := Wx_EditStyle + [wxTE_MULTILINE]; Index: wxEdit.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/components/wxEdit.pas,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- wxEdit.pas 30 Sep 2006 19:14:11 -0000 1.22 +++ wxEdit.pas 10 Nov 2006 19:33:19 -0000 1.23 @@ -245,6 +245,7 @@ defaultFGColor := self.font.color; BorderStyle := bsSingle; FWx_Comments := TStringList.Create; + AutoSize := False; end; { of AutoInitialize } @@ -510,6 +511,8 @@ parentName := GetWxWidgetParent(self); + AutoSize := False; + strStyle := GetEditSpecificStyle(self.Wx_GeneralStyle, self.Wx_EditStyle); if trim(Wx_ProxyValidatorString.strValidatorValue) <> '' then |
From: Guru K. <gur...@us...> - 2006-11-08 17:25:55
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv1876 Modified Files: debugger.pas Log Message: Fix for recursive debug attempt by the IDE. Index: debugger.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugger.pas,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- debugger.pas 22 Oct 2006 08:19:22 -0000 1.12 +++ debugger.pas 8 Nov 2006 17:25:39 -0000 1.13 @@ -395,6 +395,10 @@ begin CloseDebugger(nil); if (MessageDlg(Lang[ID_MSG_NODEBUGSYMBOLS], mtConfirmation, [mbYes, mbNo], 0) = mrYes) then begin + if Assigned(MainForm.fProject) and (trim(MainForm.fProject.CurrentProfile.CompilerOptions) = '') then + begin + MainForm.fProject.CurrentProfile.CompilerOptions := StringOfChar('0',devCompiler.OptionsCount); + end; if devCompiler.FindOption('-g3', opt, idx) then begin opt.optValue := 1; if not Assigned(MainForm.fProject) then |
From: Guru K. <gur...@us...> - 2006-11-08 17:05:52
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv26525 Modified Files: Templates.pas project.pas Log Message: This patch addresses the following issues: 1)The XPMs are generated if not found on Save and Save All function (the changes that are not checked in previously) 2)Fix the problem where the user cannot create c project Index: Templates.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/Templates.pas,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- Templates.pas 30 Oct 2006 08:13:18 -0000 1.20 +++ Templates.pas 8 Nov 2006 17:05:47 -0000 1.21 @@ -180,7 +180,7 @@ fOptions[0].Libs.Append(ReadString(cProject, 'Libs', '')); fOptions[0].Includes.Append(ReadString(cProject, 'Includes', '')); - fOptions.useGPP:= ReadBool(cProject, 'Cpp', TRUE); + fOptions.useGPP:= ReadBool(cProject, 'Cpp', false); fOptions[0].Compiler:= ReadString(cProject, 'CompilerOptions', ''); fOptions[0].compilerType:= ID_COMPILER_MINGW; end @@ -206,7 +206,7 @@ fOptions[0].PreprocDefines := ReadString(cProject, 'PreprocDefines', ''); fOptions[0].CompilerOptions := ReadString(cProject, COMPILER_INI_LABEL, ''); - fOptions.useGPP:= ReadBool(cProject, 'IsCpp', true); + fOptions.useGPP:= ReadBool(cProject, 'IsCpp', false); fOptions[0].IncludeVersionInfo:= ReadBool(cProject, 'IncludeVersionInfo', FALSE); fOptions[0].SupportXPThemes:= ReadBool(cProject, 'SupportXPThemes', FALSE); Index: project.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/project.pas,v retrieving revision 1.38 retrieving revision 1.39 diff -u -d -r1.38 -r1.39 --- project.pas 7 Nov 2006 08:27:16 -0000 1.38 +++ project.pas 8 Nov 2006 17:05:47 -0000 1.39 @@ -266,6 +266,12 @@ result := SaveAs else try + //Update the XPMs if we dont have them in the disk + if assigned(fEditor)then + begin + if (fEditor.isForm) then + fEditor.GetDesigner.CreateNewXPMs(fEditor.FileName); + end; // if no editor created open one save file and close // creates a blank file. if (not assigned(fEditor) and not FileExists(fFileName)) then @@ -284,7 +290,7 @@ fEditor:=nil; // because closing the editor will destroy it //FreeAndNil(fEditor); end - else + else if assigned(fEditor) and fEditor.Modified then begin if devEditor.AppendNewline then @@ -1440,7 +1446,6 @@ if NewProfile.CompilerSet > devCompilerSet.Sets.Count - 1 then //TODO: Guru: Log to String and Show at the end; NewProfile.compilerType:=GetClosestMatchingCompilerSet(NewProfile.compilerType); - NewProfile.CompilerOptions := finifile.ReadProfile(i, COMPILER_INI_LABEL, ''); NewProfile.PreprocDefines:= finifile.ReadProfile(i, 'PreprocDefines', ''); fProfiles.Add(NewProfile); @@ -2410,6 +2415,7 @@ except end; xmlObj.Destroy; + Result:=true; end; { TUnitList } |
From: Guru K. <gur...@us...> - 2006-11-08 08:04:26
|
Update of /cvsroot/wxdsgn/wxdevcpp/source/components In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv4132 Modified Files: wxUtils.pas Log Message: This patch addresses the following issues: 1)When the debug button is clicked, the project is compiled bore debugging it. 2)The XPMs are generated if not found on Save and Save All function Index: wxUtils.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/components/wxUtils.pas,v retrieving revision 1.43 retrieving revision 1.44 diff -u -d -r1.43 -r1.44 --- wxUtils.pas 4 Nov 2006 23:44:24 -0000 1.43 +++ wxUtils.pas 8 Nov 2006 08:04:23 -0000 1.44 @@ -45,6 +45,7 @@ IID_IWxSplitterInterface: TGUID = '{900F32A7-3864-4827-9039-85C053504BDB}'; IID_IWxControlPanelInterface: TGUID = '{077d51a0-6628-11db-bd13-0800200c9a66}'; IID_IWxThirdPartyComponentInterface: TGUID = '{ead81650-6903-11db-bd13-0800200c9a66}'; + IID_IWxImageContainerInterface: TGUID = '{10619130-6bd4-11db-bd13-0800200c9a66}'; var StringFormat : string; @@ -211,6 +212,13 @@ function IsLibAddedAtEnd(CompilerTye:Integer):boolean; end; + IWxImageContainerInterface = Interface + ['{10619130-6bd4-11db-bd13-0800200c9a66}'] + function GetBitmapCount:Integer; + function GetBitmap(Idx:Integer;var bmp:TBitmap; var PropertyName:string):boolean; + function GetPropertyName(Idx:Integer):String; + end; + TWxStdStyleItem = (wxSIMPLE_BORDER, wxDOUBLE_BORDER, wxSUNKEN_BORDER, wxRAISED_BORDER, wxSTATIC_BORDER, wxTRANSPARENT_WINDOW, wxTAB_TRAVERSAL, wxWANTS_CHARS, @@ -4130,6 +4138,8 @@ strXPMContent: string; begin + if bmp = nil then + exit; Result := True; |
From: Guru K. <gur...@us...> - 2006-11-08 08:01:22
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv2850 Modified Files: Designerfrm.pas Log Message: This patch addresses the following issues: 1)When the debug button is clicked, the project is compiled bore debugging it. 2)The XPMs are generated if not found on Save and Save All function Index: Designerfrm.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/Designerfrm.pas,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- Designerfrm.pas 3 Nov 2006 17:22:02 -0000 1.31 +++ Designerfrm.pas 8 Nov 2006 08:00:32 -0000 1.32 @@ -44,7 +44,7 @@ type - TfrmNewForm = class(TForm, IWxComponentInterface,IWxDesignerFormInterface) + TfrmNewForm = class(TForm, IWxComponentInterface,IWxDesignerFormInterface,IWxImageContainerInterface) procedure CreateInitVars; procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); @@ -55,6 +55,10 @@ procedure SetFrameProperties(); procedure SetDialogProperties(); + function GetBitmapCount:Integer; + function GetBitmap(Idx:Integer;var bmp:TBitmap; var PropertyName:string):boolean; + function GetPropertyName(Idx:Integer):String; + private { Private declarations } FWxFrm_IDName: string; @@ -131,6 +135,8 @@ function GetFormName: string; procedure SetFormName(StrValue: string); + procedure CreateNewXPMs(strFileName:String); + published property EVT_INIT_DIALOG: string Read FEVT_INIT_DIALOG Write FEVT_INIT_DIALOG; property EVT_CHAR: string Read FEVT_CHAR Write FEVT_CHAR; @@ -1727,4 +1733,50 @@ FWx_Name:=strValue; end; +procedure TfrmNewForm.CreateNewXPMs(strFileName:String); +var + i,j:Integer; + imgCtrl:IWxImageContainerInterface; + bmp:TBitmap; + strPropertyName,strComponentName,strXPMFileName:String; +begin + for i:= 0 to self.ComponentCount -1 Do + begin + if self.Components[i].GetInterface(IID_IWxImageContainerInterface,imgCtrl) = false then + continue; + for j := 0 to imgCtrl.GetBitmapCount -1 Do + begin + strXPMFileName:=IncludeTrailingPathDelimiter(ExtractFilePath(strFileName))+'Images\'+Wx_Name+'_'+imgCtrl.GetPropertyName(j)+'.xpm'; + if FileExists(strXPMFileName) then + continue; + bmp:=nil; + imgCtrl.GetBitmap(j,bmp,strPropertyName); + if bmp <> nil then + GenerateXPMDirectly(bmp,strPropertyName,wx_Name,strFileName); + end; + end; + strXPMFileName:='Images\Self_'+wx_Name+'.xpm'; + if FileExists(strXPMFileName) and (Wx_ICON.Bitmap <> nil) then + begin + GenerateXPMDirectly(Wx_ICON.Bitmap,'Self',wx_Name,strFileName); + end; +end; + +function TfrmNewForm.GetBitmapCount:Integer; +begin + Result:=1; +end; + +function TfrmNewForm.GetBitmap(Idx:Integer;var bmp:TBitmap; var PropertyName:string):boolean; +begin + bmp.Assign(Wx_ICON.Bitmap); + Result:=true; +end; + + +function TfrmNewForm.GetPropertyName(Idx:Integer):String; +begin + Result:=wx_Name; +end; + end. |
From: Guru K. <gur...@us...> - 2006-11-08 08:01:16
|
Update of /cvsroot/wxdsgn/wxdevcpp/source/components In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv3253 Modified Files: WxBitmapButton.pas WxToolButton.pas wxstaticbitmap.pas wxtoolbar.pas Log Message: This patch addresses the following issues: 1)When the debug button is clicked, the project is compiled bore debugging it. 2)The XPMs are generated if not found on Save and Save All function Index: wxstaticbitmap.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/components/wxstaticbitmap.pas,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- wxstaticbitmap.pas 3 Nov 2006 16:47:33 -0000 1.16 +++ wxstaticbitmap.pas 8 Nov 2006 08:01:13 -0000 1.17 @@ -21,7 +21,7 @@ Forms, Graphics, ExtCtrls, WxUtils, Wxcontrolpanel, WxSizerPanel; type - TWxStaticBitmap = class(TWxControlPanel, IWxComponentInterface) + TWxStaticBitmap = class(TWxControlPanel, IWxComponentInterface,IWxImageContainerInterface) private { Private fields of TWxStaticBitmap } { Storage for property Picture } @@ -60,6 +60,7 @@ FInvisibleFGColorString: string; FWx_Alignment: TWxSizerAlignment; FWx_BorderAlignment: TWxBorderAlignment; + fBitmapCount:Integer; { Private methods of TWxStaticBitmap } { Method to set variable and property values and create objects } @@ -71,6 +72,10 @@ { Write method for property Picture } procedure SetPicture(Value: TPicture); + function GetBitmapCount:Integer; + function GetBitmap(Idx:Integer;var bmp:TBitmap; var PropertyName:string):boolean; + function GetPropertyName(Idx:Integer):String; + protected { Protected fields of TWxStaticBitmap } @@ -650,4 +655,21 @@ self.Font.Color := GetColorFromString(Value); end; +function TWxStaticBitmap.GetBitmapCount:Integer; +begin + Result:=1; +end; + +function TWxStaticBitmap.GetBitmap(Idx:Integer;var bmp:TBitmap; var PropertyName:string):boolean; +begin + bmp:=Picture.Bitmap; + PropertyName:=Name; + Result:=true; +end; + +function TWxStaticBitmap.GetPropertyName(Idx:Integer):String; +begin + Result:=Name; +end; + end. Index: WxBitmapButton.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/components/WxBitmapButton.pas,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- WxBitmapButton.pas 3 Nov 2006 16:47:33 -0000 1.19 +++ WxBitmapButton.pas 8 Nov 2006 08:01:12 -0000 1.20 @@ -9,7 +9,7 @@ type - TWxBitmapButton = class(TBitBtn, IWxComponentInterface) + TWxBitmapButton = class(TBitBtn, IWxComponentInterface,IWxImageContainerInterface) private FEVT_BUTTON: string; FEVT_UPDATE_UI: string; @@ -39,6 +39,7 @@ FInvisibleFGColorString: string; FWx_Validator: string; FWx_Comments: TStrings; + fBitmapCount:Integer; { Private methods of TWxButton } @@ -46,6 +47,9 @@ procedure AutoDestroy; procedure SetWx_EventList(Value: TStringList); + function GetBitmapCount:Integer; + function GetBitmap(Idx:Integer;var bmp:TBitmap; var PropertyName:string):boolean; + function GetPropertyName(Idx:Integer):String; protected { Protected fields of TWxButton } @@ -566,4 +570,21 @@ self.Glyph.Assign(Value.Bitmap); end; +function TWxBitmapButton.GetBitmapCount:Integer; +begin + Result:=1; +end; + +function TWxBitmapButton.GetBitmap(Idx:Integer;var bmp:TBitmap; var PropertyName:string):boolean; +begin + bmp:= Wx_Bitmap.Bitmap; + PropertyName:=Name; + Result:=true; +end; + +function TWxBitmapButton.GetPropertyName(Idx:Integer):String; +begin + Result:=Name; +end; + end. Index: wxtoolbar.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/components/wxtoolbar.pas,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- wxtoolbar.pas 3 Nov 2006 16:47:33 -0000 1.14 +++ wxtoolbar.pas 8 Nov 2006 08:01:13 -0000 1.15 @@ -517,9 +517,14 @@ Result := 'wxUpdateUIEvent& event'; exit; end; + if EventName = 'EVT_TOOL' then + begin + Result := 'wxCommandEvent& event'; + exit; + end; if EventName = 'EVT_MENU' then begin - Result := 'wxMenuEvent& event'; + Result := 'wxCommandEvent& event'; exit; end; if EventName = 'EVT_TOOL_ENTER' then Index: WxToolButton.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/components/WxToolButton.pas,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- WxToolButton.pas 3 Nov 2006 16:47:33 -0000 1.14 +++ WxToolButton.pas 8 Nov 2006 08:01:13 -0000 1.15 @@ -11,7 +11,7 @@ type TWxToolButton = class(TBitBtn, IWxComponentInterface, IWxToolBarInsertableInterface, - IWxToolBarNonInsertableInterface) + IWxToolBarNonInsertableInterface,IWxImageContainerInterface) private FEVT_MENU: string; FEVT_UPDATE_UI: string; @@ -43,6 +43,7 @@ FWx_Comments: TStrings; FWx_Alignment: TWxSizerAlignment; FWx_BorderAlignment: TWxBorderAlignment; + fBitmapCount:Integer; { Private methods of TWxButton } procedure AutoInitialize; @@ -102,6 +103,9 @@ procedure SetBorderWidth(width: integer); function GetStretchFactor: integer; procedure SetStretchFactor(intValue: integer); + function GetBitmapCount:Integer; + function GetBitmap(Idx:Integer;var bmp:TBitmap; var PropertyName:string):boolean; + function GetPropertyName(Idx:Integer):String; published { Published properties of TWxButton } @@ -525,5 +529,22 @@ FWx_DISABLE_BITMAP.Assign(Value); end; +function TWxToolButton.GetBitmapCount:Integer; +begin + Result:=1; //fixme later +end; + +function TWxToolButton.GetBitmap(Idx:Integer;var bmp:TBitmap; var PropertyName:string):boolean; +begin + bmp:= Wx_Bitmap.Bitmap; + PropertyName:=Name; + Result:=true; +end; + +function TWxToolButton.GetPropertyName(Idx:Integer):String; +begin + Result:=Name; +end; + end. |
From: Guru K. <gur...@us...> - 2006-11-08 07:59:09
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv2058 Modified Files: compiler.pas main.pas Log Message: This patch addresses the following issues: 1)When the debug button is clicked, the project is compiled bore debugging it. 2)The XPMs are generated if not found on Save and Save All function Index: compiler.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/compiler.pas,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- compiler.pas 4 Nov 2006 13:25:49 -0000 1.28 +++ compiler.pas 8 Nov 2006 07:59:03 -0000 1.29 @@ -79,6 +79,7 @@ procedure Compile(SingleFile: string = ''); virtual; procedure Run; virtual; procedure CompileAndRun; virtual; + procedure CompileAndDebug; virtual; procedure Debug; virtual; function Clean: Boolean; virtual; function RebuildAll: Boolean; virtual; @@ -112,6 +113,7 @@ fUserParams: string; fDevRun: TDevRun; fRunAfterCompileFinish: boolean; + fDebugAfterCompileFinish: boolean; fAbortThread: boolean; procedure CreateMakefile; virtual; @@ -137,7 +139,7 @@ uses MultiLangSupport, devcfg, Macros, devExec, CompileProgressFm, StrUtils, RegExpr, - DbugIntf; + DbugIntf,main; constructor TCompiler.Create; begin @@ -901,6 +903,7 @@ cCmdLine := devCompiler.SingleCompile; fSingleFile := SingleFile <> ''; fRunAfterCompileFinish := FALSE; + fDebugAfterCompileFinish:= FALSE; if Assigned(fDevRun) then begin MessageDlg(Lang[ID_MSG_ALREADYCOMP], mtInformation, [mbOK], 0); @@ -1055,6 +1058,14 @@ begin Compile; fRunAfterCompileFinish := TRUE; + fDebugAfterCompileFinish:= FALSE; +end; + +procedure TCompiler.CompileAndDebug; +begin + Compile; + fRunAfterCompileFinish := FALSE; + fDebugAfterCompileFinish:= TRUE; end; procedure TCompiler.Debug; @@ -1198,6 +1209,11 @@ begin ReleaseProgressForm; Run; + end + else if (fDebugAfterCompileFinish) then + begin + ReleaseProgressForm; + MainForm.actDebugExecuteX(nil); end; end; Index: main.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/main.pas,v retrieving revision 1.93 retrieving revision 1.94 diff -u -d -r1.93 -r1.94 --- main.pas 3 Nov 2006 17:39:02 -0000 1.93 +++ main.pas 8 Nov 2006 07:59:03 -0000 1.94 @@ -1039,6 +1039,7 @@ procedure DoCreateWxSpecificItems; {$ENDIF} public + procedure actDebugExecuteX(Sender: TObject); procedure DoCreateEverything; procedure DoApplyWindowPlacement; procedure OpenFile(s: string; withoutActivation: Boolean = false); // Modified for wx @@ -3317,6 +3318,7 @@ begin if eX.Modified then Result := SaveFileInternal(eX,false); + eX.GetDesigner.CreateNewXPMs(eX.FileName); end; end; @@ -3477,7 +3479,7 @@ end Else wxEditor.Modified:=false; - if (e.isForm) then + if (wxEditor.isForm) then begin IsFileAForm:=boolInspectorDataClear; boolInspectorDataClear:=true; @@ -5397,17 +5399,28 @@ end; procedure TMainForm.actDebugExecute(Sender: TObject); -var - e: TEditor; - idx, idx2: integer; - s: string; begin if (assigned(fProject) and (fProject.CurrentProfile.compilerType <> ID_COMPILER_MINGW)) then begin ShowMessage('Debugging is Disabled for Non-MingW compilers.'); exit; end; + + if fCompiler.Compiling then + begin + MessageDlg(Lang[ID_MSG_ALREADYCOMP], mtInformation, [mbOK], 0); + Exit; + end; + if PrepareForCompile(false) then + fCompiler.CompileAndDebug; +end; +procedure TMainForm.actDebugExecuteX(Sender: TObject); +var + e: TEditor; + idx, idx2: integer; + s: string; +begin PrepareDebugger; if assigned(fProject) then begin @@ -5537,7 +5550,7 @@ procedure TMainForm.actDebugUpdate(Sender: TObject); begin (Sender as TCustomAction).Enabled := (assigned(fProject) or (PageControl.PageCount > 0)) and - not devExecutor.Running; + (not devExecutor.Running) and (not fDebugger.Executing); end; procedure TMainForm.actCompileUpdate(Sender: TObject); |
From: Guru K. <gur...@us...> - 2006-11-08 07:48:36
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv30425 Modified Files: version.pas Log Message: Added the missing 3rd part include folders to the Cpp includes Index: version.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/version.pas,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -r1.36 -r1.37 --- version.pas 29 Oct 2006 07:58:13 -0000 1.36 +++ version.pas 8 Nov 2006 07:48:31 -0000 1.37 @@ -123,7 +123,17 @@ + 'include' + pd + 'common' + pd+ 'wx' + pd + 'fl;' + 'include' + pd + 'common' + pd+ 'wx' + pd + 'animate;' + 'include' + pd + 'common' + pd+ 'wx' + pd + 'generic;' - + 'include' + pd + 'common' + pd+ 'wx' + pd + 'msw;' ; + + 'include' + pd + 'common' + pd+ 'wx' + pd + 'msw;' + + 'include' + pd + 'common' + pd+ '3rdparty;' + + 'include' + pd + 'common' + pd+ '3rdparty' + pd + 'wx;' + + 'include' + pd + 'common' + pd+ '3rdparty' + pd + 'wx'+ pd + 'things;' + + 'include' + pd + 'common' + pd+ '3rdparty' + pd + 'wx'+ pd + 'treemultictrl;' + + 'include' + pd + 'common' + pd+ '3rdparty' + pd + 'wx'+ pd + 'sheet;' + + 'include' + pd + 'common' + pd+ '3rdparty' + pd + 'wx'+ pd + 'plotctrl;' + + 'include' + pd + 'common' + pd+ '3rdparty' + pd + 'wx'+ pd + 'ifm;' + + 'include' + pd + 'common' + pd+ '3rdparty' + pd + 'wx'+ pd + 'chartart;' + ; + GCC_CPP_INCLUDE_DIR = ';include' |
From: Joel L. <lo...@us...> - 2006-11-08 05:44:05
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv13874 Modified Files: Tag: VC_Debugger compiler.pas main.pas Log Message: -Changed the compile and run behaviour to use to a pointer to a function rather than calling the function direct. -The change above allowed for the compiler to run the compile process before running the debuggee Index: compiler.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/compiler.pas,v retrieving revision 1.28 retrieving revision 1.28.2.1 diff -u -d -r1.28 -r1.28.2.1 --- compiler.pas 4 Nov 2006 13:25:49 -0000 1.28 +++ compiler.pas 8 Nov 2006 05:43:59 -0000 1.28.2.1 @@ -65,7 +65,6 @@ procedure DoResOutput(const s, s2, s3: string); function GetMakeFile: string; function GetCompiling: Boolean; - procedure RunTerminate(Sender: TObject); procedure InitProgressForm(Status: string); procedure EndProgressForm; procedure ReleaseProgressForm; @@ -74,12 +73,11 @@ procedure SwitchToOriginalCompilerSet; // switches the original compiler set to index procedure SetProject(Project: TProject); public + OnCompilationEnded: procedure(Sender: TObject) of object; + procedure BuildMakeFile; procedure CheckSyntax; virtual; procedure Compile(SingleFile: string = ''); virtual; - procedure Run; virtual; - procedure CompileAndRun; virtual; - procedure Debug; virtual; function Clean: Boolean; virtual; function RebuildAll: Boolean; virtual; procedure ShowResults; virtual; @@ -111,7 +109,6 @@ fBinDirs: string; fUserParams: string; fDevRun: TDevRun; - fRunAfterCompileFinish: boolean; fAbortThread: boolean; procedure CreateMakefile; virtual; @@ -900,7 +897,6 @@ begin cCmdLine := devCompiler.SingleCompile; fSingleFile := SingleFile <> ''; - fRunAfterCompileFinish := FALSE; if Assigned(fDevRun) then begin MessageDlg(Lang[ID_MSG_ALREADYCOMP], mtInformation, [mbOK], 0); @@ -1004,64 +1000,6 @@ end; end; -procedure TCompiler.RunTerminate(Sender: TObject); -begin - Application.Restore; -end; - -procedure TCompiler.Run; -begin - if fTarget = ctNone then exit; - if fTarget = ctProject then - begin - if fProject.CurrentProfile.typ = dptStat then - MessageDlg(Lang[ID_ERR_NOTEXECUTABLE], mtError, [mbOK], 0) - else if not FileExists(fProject.Executable) then - MessageDlg(Lang[ID_ERR_PROJECTNOTCOMPILED], mtWarning, [mbOK], 0) - else if fProject.CurrentProfile.typ = dptDyn then begin - if fProject.CurrentProfile.HostApplication = '' then - MessageDlg(Lang[ID_ERR_HOSTMISSING], mtWarning, [mbOK], 0) - else if not FileExists(fProject.CurrentProfile.HostApplication) then - MessageDlg(Lang[ID_ERR_HOSTNOTEXIST], mtWarning, [mbOK], 0) - else begin // execute DLL's host application - if devData.MinOnRun then - Application.Minimize; - devExecutor.ExecuteAndWatch(fProject.CurrentProfile.HostApplication, fRunParams, - ExtractFileDir(fProject.CurrentProfile.HostApplication), True, INFINITE, RunTerminate); - end; - end - else begin // execute normally - if devData.MinOnRun then - Application.Minimize; - devExecutor.ExecuteAndWatch(fProject.Executable, fRunParams, - ExtractFileDir(fProject.Executable), True, INFINITE, RunTerminate); - end; - end - else - begin - if not FileExists(ChangeFileExt(fSourceFile, EXE_EXT)) then - MessageDlg(Lang[ID_ERR_SRCNOTCOMPILED], mtWarning, [mbOK], 0) - else - begin - if devData.MinOnRun then - Application.Minimize; - devExecutor.ExecuteAndWatch(ChangeFileExt(fSourceFile, EXE_EXT),fRunParams, - ExtractFilePath(fSourceFile), True, INFINITE, RunTerminate); - end; - end; -end; - -procedure TCompiler.CompileAndRun; -begin - Compile; - fRunAfterCompileFinish := TRUE; -end; - -procedure TCompiler.Debug; -begin - -end; - function TCompiler.Clean: Boolean; const cCleanLine = '%s clean -f "%s" %s'; @@ -1194,16 +1132,13 @@ else if (fErrCount = 0) and (fDevRun.ExitCode = 0) then begin DoLogEntry(Lang[ID_COMPILESUCCESS]); - if (fRunAfterCompileFinish) then - begin - ReleaseProgressForm; - Run; - end; + Application.ProcessMessages; + if Assigned(OnCompilationEnded) then + OnCompilationEnded(Self); end; //Clean up fDevRun := nil; - fRunAfterCompileFinish := False; Application.ProcessMessages; end; Index: main.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/main.pas,v retrieving revision 1.79.4.7 retrieving revision 1.79.4.8 diff -u -d -r1.79.4.7 -r1.79.4.8 --- main.pas 7 Nov 2006 07:13:11 -0000 1.79.4.7 +++ main.pas 8 Nov 2006 05:43:59 -0000 1.79.4.8 @@ -906,6 +906,8 @@ procedure actDesignerPasteExecute(Sender: TObject); procedure actDesignerDeleteExecute(Sender: TObject); function isFileOpenedinEditor(strFile: string): Boolean; + procedure OnCompileTerminated(Sender: TObject); + procedure doDebugAfterCompile(Sender: TObject); {$IFDEF WX_BUILD} procedure Panel2Resize(Sender: TObject); @@ -5195,6 +5197,11 @@ Result := True; end; +procedure TMainForm.OnCompileTerminated(Sender: TObject); +begin + Application.Restore; +end; + procedure TMainForm.actCompileExecute(Sender: TObject); begin if fCompiler.Compiling then @@ -5211,23 +5218,46 @@ e: TEditor; begin e := GetEditor; - fCompiler.Target := ctNone; - if assigned(fProject) then begin - if assigned(e) and (not e.InProject) then - fCompiler.Target := ctFile + if fProject.CurrentProfile.typ = dptStat then + MessageDlg(Lang[ID_ERR_NOTEXECUTABLE], mtError, [mbOK], Handle) + else if not FileExists(fProject.Executable) then + MessageDlg(Lang[ID_ERR_PROJECTNOTCOMPILED], mtWarning, [mbOK], Handle) + else if fProject.CurrentProfile.typ = dptDyn then + begin + if fProject.CurrentProfile.HostApplication = '' then + MessageDlg(Lang[ID_ERR_HOSTMISSING], mtWarning, [mbOK], Handle) + else if not FileExists(fProject.CurrentProfile.HostApplication) then + MessageDlg(Lang[ID_ERR_HOSTNOTEXIST], mtWarning, [mbOK], Handle) + else + begin + if devData.MinOnRun then + Application.Minimize; + devExecutor.ExecuteAndWatch(fProject.CurrentProfile.HostApplication, fProject.CmdLineArgs, + ExtractFileDir(fProject.CurrentProfile.HostApplication), True, INFINITE, OnCompileTerminated); + end; + end else - fCompiler.Target := ctProject; + begin + if devData.MinOnRun then + Application.Minimize; + devExecutor.ExecuteAndWatch(fProject.Executable, fProject.CmdLineArgs, + ExtractFileDir(fProject.Executable), True, INFINITE, OnCompileTerminated); + end; end - else - if assigned(e) then - fCompiler.Target := ctFile; - - if fCompiler.Target = ctFile then - fCompiler.SourceFile := e.FileName; - - fCompiler.Run; + else if assigned(e) then + begin + if not FileExists(ChangeFileExt(e.FileName, EXE_EXT)) then + MessageDlg(Lang[ID_ERR_SRCNOTCOMPILED], mtWarning, [mbOK], Handle) + else + begin + if devData.MinOnRun then + Application.Minimize; + devExecutor.ExecuteAndWatch(ChangeFileExt(e.FileName, EXE_EXT), '', + ExtractFilePath(e.FileName), True, INFINITE, OnCompileTerminated); + end; + end; end; procedure TMainForm.actCompRunExecute(Sender: TObject); @@ -5238,7 +5268,10 @@ Exit; end; if PrepareForCompile(false) then - fCompiler.CompileAndRun; + begin + fCompiler.Compile; + fCompiler.OnCompilationEnded := actRunExecute; + end; end; procedure TMainForm.actRebuildExecute(Sender: TObject); @@ -5324,72 +5357,81 @@ end; end; -procedure TMainForm.actDebugExecute(Sender: TObject); +procedure TMainForm.doDebugAfterCompile(Sender: TObject); var e: TEditor; idx, idx2: integer; s: string; begin - if not fDebugger.Executing then + PrepareDebugger; + if assigned(fProject) then begin - PrepareDebugger; - if assigned(fProject) then - begin - if not FileExists(fProject.Executable) then begin - MessageDlg(Lang[ID_ERR_PROJECTNOTCOMPILED], mtWarning, [mbOK], 0); + if not FileExists(fProject.Executable) then begin + MessageDlg(Lang[ID_ERR_PROJECTNOTCOMPILED], mtWarning, [mbOK], 0); + exit; + end; + if fProject.CurrentProfile.typ = dptDyn then begin + if fProject.CurrentProfile.HostApplication = '' then begin + MessageDlg(Lang[ID_ERR_HOSTMISSING], mtWarning, [mbOK], 0); + exit; + end + else if not FileExists(fProject.CurrentProfile.HostApplication) then begin + MessageDlg(Lang[ID_ERR_HOSTNOTEXIST], mtWarning, [mbOK], 0); exit; end; - if fProject.CurrentProfile.typ = dptDyn then begin - if fProject.CurrentProfile.HostApplication = '' then begin - MessageDlg(Lang[ID_ERR_HOSTMISSING], mtWarning, [mbOK], 0); - exit; - end - else if not FileExists(fProject.CurrentProfile.HostApplication) then begin - MessageDlg(Lang[ID_ERR_HOSTNOTEXIST], mtWarning, [mbOK], 0); - exit; - end; - end; + end; - // add to the debugger the project include dirs - for idx := 0 to fProject.CurrentProfile.Includes.Count - 1 do - fDebugger.AddIncludeDir(fProject.CurrentProfile.Includes[idx]); + // add to the debugger the project include dirs + for idx := 0 to fProject.CurrentProfile.Includes.Count - 1 do + fDebugger.AddIncludeDir(fProject.CurrentProfile.Includes[idx]); - fDebugger.Execute('"' + StringReplace(fProject.Executable, '\', '\\', [rfReplaceAll]) + '"', fCompiler.RunParams); - fDebugger.RefreshBreakpoints; - end - else + fDebugger.Execute('"' + StringReplace(fProject.Executable, '\', '\\', [rfReplaceAll]) + '"', fCompiler.RunParams); + fDebugger.RefreshBreakpoints; + end + else + begin + e := GetEditor; + if assigned(e) then begin - e := GetEditor; - if assigned(e) then - begin - if not FileExists(ChangeFileExt(e.FileName, EXE_EXT)) then begin - MessageDlg(Lang[ID_ERR_SRCNOTCOMPILED], mtWarning, [mbOK], 0); - exit; - end; - if e.Modified then // if file is modified - if not SaveFile(e) then // save it first - Abort; // if it's not saved, abort - chdir(ExtractFilePath(e.FileName)); - - fDebugger.Execute(StringReplace(ChangeFileExt(ExtractFileName(e.FileName), EXE_EXT), '\', '\\', [rfReplaceAll]) + '"', fCompiler.RunParams); - fDebugger.RefreshBreakpoints; + if not FileExists(ChangeFileExt(e.FileName, EXE_EXT)) then begin + MessageDlg(Lang[ID_ERR_SRCNOTCOMPILED], mtWarning, [mbOK], 0); + exit; end; + if e.Modified then // if file is modified + if not SaveFile(e) then // save it first + Abort; // if it's not saved, abort + chdir(ExtractFilePath(e.FileName)); + + fDebugger.Execute(StringReplace(ChangeFileExt(ExtractFileName(e.FileName), EXE_EXT), '\', '\\', [rfReplaceAll]) + '"', fCompiler.RunParams); + fDebugger.RefreshBreakpoints; end; + end; - for idx := 0 to DebugTree.Items.Count - 1 do begin - idx2 := AnsiPos('=', DebugTree.Items[idx].Text); - if (idx2 > 0) then begin - s := DebugTree.Items[idx].Text; - Delete(s, idx2 + 1, length(s) - idx2); - DebugTree.Items[idx].Text := s + ' ?'; - end; + for idx := 0 to DebugTree.Items.Count - 1 do begin + idx2 := AnsiPos('=', DebugTree.Items[idx].Text); + if (idx2 > 0) then begin + s := DebugTree.Items[idx].Text; + Delete(s, idx2 + 1, length(s) - idx2); + DebugTree.Items[idx].Text := s + ' ?'; end; + end; + + //Then run the debuggee + fDebugger.Go; +end; + +procedure TMainForm.actDebugExecute(Sender: TObject); +begin + if not fDebugger.Executing then + begin + fCompiler.OnCompilationEnded := doDebugAfterCompile; + actCompile.Execute; end else if fDebugger.Paused then + begin RemoveActiveBreakpoints; - - // Run the debugger - fDebugger.Go; + fDebugger.Go; + end; end; procedure TMainForm.actEnviroOptionsExecute(Sender: TObject); @@ -5900,7 +5942,7 @@ procedure TMainForm.actRestartDebugExecute(Sender: TObject); begin - actStopExecute.Execute; + doDebugAfterCompile(Sender); actDebug.Execute; end; |
From: Joel L. <lo...@us...> - 2006-11-08 04:18:21
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv13440 Modified Files: Tag: VC_Debugger debugger.pas Log Message: When the user selects no for the access violation and breakpoint dialogs, do not jump the top of the stack trace. Index: debugger.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugger.pas,v retrieving revision 1.12.2.19 retrieving revision 1.12.2.20 diff -u -d -r1.12.2.19 -r1.12.2.20 --- debugger.pas 8 Nov 2006 04:14:34 -0000 1.12.2.19 +++ debugger.pas 8 Nov 2006 04:18:17 -0000 1.12.2.20 @@ -772,19 +772,13 @@ procedure ParseError(const line: string); begin if RegExp.Exec(line, '\((.*)\): Access Violation - code c0000005 \((.*)\)') then - begin - JumpToCurrentLine := True; - OnAccessViolation; - end + OnAccessViolation else if RegExp.Exec(line, '\((.*)\): Control-C exception - code 40010005 \((.*)\)') then else if RegExp.Exec(line, '\((.*)\): Break instruction exception - code 80000003 \((.*)\)') then if IgnoreBreakpoint then IgnoreBreakpoint := False else - begin - JumpToCurrentLine := True; OnBreakpoint; - end; end; procedure ParseOutput(const line: string); |
From: Joel L. <lo...@us...> - 2006-11-08 04:14:40
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv11916 Modified Files: Tag: VC_Debugger debugger.pas debugwait.pas Log Message: -Clean up the critical section when the thread is terminated -Tell CDB to quit automatically when the debuggee exits Index: debugwait.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugwait.pas,v retrieving revision 1.6.2.6 retrieving revision 1.6.2.7 diff -u -d -r1.6.2.6 -r1.6.2.7 --- debugwait.pas 8 Nov 2006 03:46:10 -0000 1.6.2.6 +++ debugwait.pas 8 Nov 2006 04:14:34 -0000 1.6.2.7 @@ -43,6 +43,7 @@ property Event: THandle write fEvent; property Pipe: THandle write hInputPipe; constructor Create(start: Boolean); + destructor Destroy; override; end; TDebugWait = class(TThread) @@ -68,6 +69,12 @@ InitializeCriticalSection(OutputCrit); end; +destructor TDebugReader.Destroy; +begin + DeleteCriticalSection(OutputCrit); + inherited; +end; + procedure TDebugReader.Execute; var Buffer: array[0..1024] of char; Index: debugger.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugger.pas,v retrieving revision 1.12.2.18 retrieving revision 1.12.2.19 diff -u -d -r1.12.2.18 -r1.12.2.19 --- debugger.pas 8 Nov 2006 03:46:10 -0000 1.12.2.18 +++ debugger.pas 8 Nov 2006 04:14:34 -0000 1.12.2.19 @@ -736,7 +736,7 @@ Executable := DBG_PROGRAM(devCompiler.CompilerType); //Create the command line - Executable := Format('%s -lines -2 -y "%s" "%s" %s', [Executable, ExtractFilePath(Filename), FileName, arguments]); + Executable := Format('%s -lines -2 -G -y "%s" "%s" %s', [Executable, ExtractFilePath(Filename), FileName, arguments]); //Launch the process if not CreateProcess(nil, PChar(Executable), nil, nil, True, CREATE_NEW_CONSOLE, |
From: Joel L. <lo...@us...> - 2006-11-08 03:46:16
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv526 Modified Files: Tag: VC_Debugger debugger.pas debugwait.pas Log Message: -Moved the initialization code. The constructor will handle the critical section creation and all. That's the spirit of OO programming! -Don't let the CloseDebugger function be reentrant Index: debugwait.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugwait.pas,v retrieving revision 1.6.2.5 retrieving revision 1.6.2.6 diff -u -d -r1.6.2.5 -r1.6.2.6 --- debugwait.pas 6 Nov 2006 03:39:58 -0000 1.6.2.5 +++ debugwait.pas 8 Nov 2006 03:46:10 -0000 1.6.2.6 @@ -32,14 +32,17 @@ type TDebugReader = class(TThread) - public - hPipeRead: THandle; - EventReady: THandle; - OutputCrit: TRTLCriticalSection; - Output: string; - protected + fEvent: THandle; + hInputPipe: THandle; + OutputCrit: TRTLCriticalSection; procedure Execute; override; + + public + Output: string; + property Event: THandle write fEvent; + property Pipe: THandle write hInputPipe; + constructor Create(start: Boolean); end; TDebugWait = class(TThread) @@ -59,6 +62,12 @@ uses main, devcfg, utils, dbugintf, debugger; +constructor TDebugReader.Create(start: Boolean); +begin + inherited; + InitializeCriticalSection(OutputCrit); +end; + procedure TDebugReader.Execute; var Buffer: array[0..1024] of char; @@ -67,7 +76,7 @@ while True do begin FillChar(Buffer, sizeof(Buffer), 0); - if not ReadFile(hPipeRead, Buffer, sizeof(Buffer), LastRead, nil) then + if not ReadFile(hInputPipe, Buffer, sizeof(Buffer), LastRead, nil) then Break; //Now that we have read the data from the pipe, copy the contents @@ -76,7 +85,7 @@ LeaveCriticalSection(OutputCrit); //Then pass control to our other half. - SetEvent(EventReady); + SetEvent(fEvent); end; end; Index: debugger.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugger.pas,v retrieving revision 1.12.2.17 retrieving revision 1.12.2.18 diff -u -d -r1.12.2.17 -r1.12.2.18 --- debugger.pas 8 Nov 2006 03:19:27 -0000 1.12.2.17 +++ debugger.pas 8 Nov 2006 03:46:10 -0000 1.12.2.18 @@ -429,11 +429,10 @@ // Create a thread that will read the child's output. Reader := TDebugReader.Create(true); - Reader.hPipeRead := hOutputRead; - Reader.EventReady := Event; + Reader.Pipe := hOutputRead; + Reader.Event := Event; Reader.OnTerminate := CloseDebugger; Reader.FreeOnTerminate := True; - InitializeCriticalSection(Reader.OutputCrit); // Create a thread that will notice when an output is ready to be sent for processing Wait := TDebugWait.Create(true); @@ -451,10 +450,15 @@ procedure TDebugger.CloseDebugger(Sender: TObject); begin - if Executing then begin + if Executing then + begin fPaused := false; fExecuting := false; + // First don't let us be called twice. Set the secondary threads to not call + // us when they terminate + Reader.OnTerminate := nil; + // Force the read on the input to return by closing the stdin handle. Wait.Stop := True; SetEvent(Event); |
From: Joel L. <lo...@us...> - 2006-11-08 03:19:35
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv22528 Modified Files: Tag: VC_Debugger debugger.pas Log Message: Fixed the corrupted copy we have in CVS due to a not printable character. It is now removed before parsing. Index: debugger.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugger.pas,v retrieving revision 1.12.2.16 retrieving revision 1.12.2.17 diff -u -d -r1.12.2.16 -r1.12.2.17 --- debugger.pas 6 Nov 2006 08:22:39 -0000 1.12.2.16 +++ debugger.pas 8 Nov 2006 03:19:27 -0000 1.12.2.17 @@ -1640,7 +1640,829 @@ RegExp: TRegExpr; CurLine: String; + procedure StripCtrlChars(var line: string); + var + Idx: Integer; + begin + Idx := Pos(#26, line); + while Idx <> 0 do + begin + Delete(line, Idx, 1); + Idx := Pos(#26, line); + end; + end; + procedure ParseOutput(const line: string); begin //Exclude these miscellaneous messages - if (line = ' \ No newline at end of file + if (line = 'pre-prompt') or (line = 'prompt') or (line = 'post-prompt') or + (line = 'frames-invalid') then + Exit + //Empty lines + else if Trim(line) = '' then + Exit + else if Pos('(gdb) ', line) = 1 then + begin + //The debugger is waiting for input, we're paused! + SentCommand := False; + fPaused := True; + fBusy := False; + + //Because we are here, we probably are a side-effect of a previous instruction + //Execute the process function for the command. + if Assigned(OverrideHandler) then + begin + OverrideHandler(CurOutput); + OverrideHandler := nil; + end + else if (CurOutput.Count <> 0) and (CurrentCommand <> nil) and Assigned(CurrentCommand.OnResult) then + CurrentCommand.OnResult(CurOutput); + + if CurrentCommand <> nil then + begin + if (CurrentCommand.Command = 'run'#10) or (CurrentCommand.Command = 'next'#10) or + (CurrentCommand.Command = 'step'#10) or (CurrentCommand.Command = '') then + begin + RefreshContext; + Application.BringToFront; + end; + end; + CurOutput.Clear; + + //Send the command, and do not send any more + SendCommand; + + //Make sure we don't save the current line! + Exit; + end + else if (Pos('no debugging symbols found', line) > 0) or (Pos('No symbol table is loaded', line) > 0) then + OnNoDebuggingSymbolsFound + else if Pos('file is more recent than executable', line) > 0 then + OnSourceMoreRecent + else if line = 'signal' then + OverrideHandler := OnSignal + else if RegExp.Exec(line, 'Breakpoint ([0-9]+),') then + with GetBreakpointFromIndex(StrToInt(RegExp.Substitute('$1'))) do + MainForm.GotoBreakpoint(Filename, Line) + else if Pos('exited ', line) = 1 then + CloseDebugger(nil); + + CurOutput.Add(Line); + end; +begin + //Update the memo + SentCommand := False; + RegExp := TRegExpr.Create; + + while Pos(#13, Output) > 0 do + begin + //Extract the current line + CurLine := Copy(Output, 0, Pos(#13, Output) - 1); + + //Process the output + StripCtrlChars(CurLine); + MainForm.DebugOutput.Lines.Add(CurLine); + ParseOutput(CurLine); + + //Remove those that we've already processed + Delete(Output, 1, Pos(#10, Output)); + end; + + if Length(Output) > 0 then + begin + MainForm.DebugOutput.Lines.Add(Output); + ParseOutput(Output); + end; + + //Clean up + RegExp.Free; +end; + +procedure TGDBDebugger.OnSignal(Output: TStringList); +var + I: Integer; +begin + for I := 0 to Output.Count - 1 do + begin + if Output[I] = 'signal-name' then + if Output[I + 1] = 'SIGSEGV' then + OnAccessViolation + else; + end; +end; + +procedure TGDBDebugger.OnSourceMoreRecent; +begin + if (MessageDlg(Lang[ID_MSG_SOURCEMORERECENT], mtConfirmation, [mbYes, mbNo], 0) = mrYes) then begin + CloseDebugger(nil); + MainForm.actCompileExecute(nil); + end; +end; + +procedure TGDBDebugger.AddIncludeDir(s: string); +begin + IncludeDirs.Add(s); +end; + +procedure TGDBDebugger.ClearIncludeDirs; +begin + IncludeDirs.Clear; +end; + +procedure TGDBDebugger.AddBreakpoint(breakpoint: TBreakpoint); +var + aBreakpoint: PBreakpoint; +begin + if (not Paused) and Executing then + begin + MessageDlg('Cannot add a breakpoint while the debugger is executing.', mtError, [mbOK], MainForm.Handle); + Exit; + end; + + New(aBreakpoint); + aBreakpoint^ := breakpoint; + Breakpoints.Add(aBreakpoint); + RefreshBreakpoint(aBreakpoint^); +end; + +procedure TGDBDebugger.RemoveBreakpoint(breakpoint: TBreakpoint); +var + I: Integer; +begin + if (not Paused) and Executing then + begin + MessageDlg('Cannot remove a breakpoint while the debugger is executing.', mtError, [mbOK], MainForm.Handle); + Exit; + end; + + for i := 0 to Breakpoints.Count - 1 do + begin + if (PBreakPoint(Breakpoints.Items[i])^.line = breakpoint.Line) and (PBreakPoint(Breakpoints.Items[i])^.editor = breakpoint.Editor) then + begin + if Executing then + QueueCommand('delete', IntToStr(PBreakpoint(Breakpoints.Items[i])^.Index)); + Dispose(Breakpoints.Items[i]); + Breakpoints.Delete(i); + Break; + end; + end; +end; + +procedure TGDBDebugger.RefreshBreakpoint(var breakpoint: TBreakpoint); +begin + if Executing then + begin + Inc(fNextBreakpoint); + breakpoint.Index := fNextBreakpoint; + QueueCommand('break', Format('"%s:%d"', [ExtractFileName(breakpoint.Filename), breakpoint.Line])); + end; +end; + +procedure TGDBDebugger.RefreshContext(refresh: ContextDataSet); +var + I: Integer; + Node: TTreeNode; + Command: TCommand; +begin + if not Executing then + Exit; + + //First send commands for stack tracing and locals + if cdStackTrace in refresh then + begin + Command := TCommand.Create; + Command.Command := 'bt'; + Command.OnResult := OnCallStack; + QueueCommand(Command); + end; + if cdLocals in refresh then + begin + Command := TCommand.Create; + Command.Command := 'info locals 1'; + Command.OnResult := OnLocals; + QueueCommand(Command); + end; + + //Then update the watches + if (cdWatches in refresh) and Assigned(DebugTree) then + begin + I := 0; + while I < DebugTree.Items.Count do + begin + Node := DebugTree.Items[I]; + if Node.Data = nil then + Continue; + with PWatch(Node.Data)^ do + begin + Command := TCommand.Create; + + //Decide what command we should send - dv for locals, dt for structures + if Pos('.', Name) > 0 then + Command.Command := 'display ' + Copy(name, 1, Pos('.', name) - 1) + else + Command.Command := 'display ' + name; + + //Fill in the other data + Command.Data := Node; + Command.OnResult := OnRefreshContext; + Node.DeleteChildren; + + //Then send it + QueueCommand(Command); + end; + + //Increment our counter + Inc(I); + end; + end; +end; + +procedure TGDBDebugger.OnRefreshContext(Output: TStringList); +var + I: Integer; + Node: TTreeNode; + + procedure RecurseStructure(Parent: TTreeNode; var I: Integer); + var + Child: TTreeNode; + begin + while I < Output.Count - 4 do + if Output[I] = '}' then + Exit + else if Output[I + 4] <> '{' then + begin + with DebugTree.Items.AddChild(Parent, Output[I] + ' = ' + Output[I + 4]) do + begin + SelectedIndex := 21; + ImageIndex := 21; + end; + Inc(I, 8); + end + else + begin + Child := DebugTree.Items.AddChild(Parent, Output[I]); + with Child do + begin + SelectedIndex := 32; + ImageIndex := 32; + end; + Inc(I, 6); + RecurseStructure(Child, I); + end; + end; + + procedure RecurseArray(Parent: TTreeNode; var I: Integer); + var + RegExp: TRegExpr; + Value: String; + begin + RegExp := TRegExpr.Create; + while (I < Output.Count - 2) do + begin + if Output[I] = '}' then + Break + else if (Trim(Output[I]) <> '') and (Output[I] <> 'array-section-end') then + begin + if RegExp.Exec(Output[I], ', (.*)') then + Value := RegExp.Substitute('$1') + else + Value := Output[I]; + + with DebugTree.Items.AddChild(Parent, Format('[%d] = %s', [Parent.Count, Value])) do + begin + SelectedIndex := 21; + ImageIndex := 21; + end; + end; + + Inc(I, 2); + end; + + RegExp.Free; + end; +begin + I := 0; + Node := TTreeNode(CurrentCommand.Data); + + while I < Output.Count do + begin + if Output[I] = 'display-expression' then + begin + Node.Text := Output[I + 1]; + Node.SelectedIndex := 32; + Node.ImageIndex := 32; + + if Output[I + 5] = '{' then + begin + Inc(I, 7); + + //Determine if it is a structure of an array + if Pos('array-section-begin', Output[I - 1]) = 1 then + RecurseArray(Node, I) + else + RecurseStructure(Node, I); + end + else + Node.Text := Output[I + 1] + ' = ' + Output[I + 5]; + Break; + end; + Inc(I); + end +end; + +procedure TGDBDebugger.AddWatch(varname: string); +var + Watch: PWatch; +begin + with DebugTree.Items.Add(nil, varname + ' = (unknown)') do + begin + ImageIndex := 21; + SelectedIndex := 21; + New(Watch); + Watch^.Name := varname; + Data := Watch; + end; +end; + +procedure TGDBDebugger.RemoveWatch(varname: string); +var + node: TTreeNode; +begin + //Find the top-most node + node := DebugTree.Selected; + while Assigned(node) and (Assigned(node.Parent)) do + node := node.Parent; + + //Then clean it up + if Assigned(node) then + begin + Dispose(node.Data); + DebugTree.Items.Delete(node); + end; +end; + +procedure TGDBDebugger.ModifyVariable(varname, newvalue: string); +begin + QueueCommand('set variable', varname + ' = ' + newvalue); +end; + +procedure TGDBDebugger.OnCallStack(Output: TStringList); +var + I: Integer; + CallStack: TList; + RegExp: TRegExpr; + StackFrame: PStackFrame; +begin + StackFrame := nil; + CallStack := TList.Create; + RegExp := TRegExpr.Create; + + I := 0; + while I < Output.Count do + begin + if Pos('frame-begin', Output[I]) = 1 then + begin + //Stack frame with source information + New(StackFrame); + CallStack.Add(StackFrame); + end + else if Output[I] = 'frame-function-name' then + begin + Inc(I); + StackFrame^.FuncName := Output[I]; + end + else if Output[I] = 'frame-args' then + begin + Inc(I); + + //Make sure it's valid + if Output[I] <> ' (' then + begin + Inc(I); + Continue; + end + else + Inc(I); + + while (I < Output.Count - 6) do + begin + if Output[I] = 'arg-begin' then + begin + if StackFrame^.Args <> '' then + StackFrame^.Args := StackFrame^.Args + ', '; + StackFrame^.Args := StackFrame^.Args + Output[I + 1] + ' = ' + Output[I + 5]; + end; + Inc(I, 6); + + //Do we stop? + if Trim(Output[I + 1]) <> ',' then + Break + else + Inc(I, 2); + end; + end + else if Output[I] = 'frame-source-file' then + begin + Inc(I); + StackFrame^.Filename := Output[I]; + end + else if Output[I] = 'frame-source-line' then + begin + Inc(I); + StackFrame^.Line := StrToInt(Output[I]); + end; + Inc(I); + end; + + //Now that we have the entire callstack loaded into our list, call the function + //that wants it + if Assigned(TDebugger(Self).OnCallStack) then + TDebugger(Self).OnCallStack(CallStack); + + //Do we show the new execution point? + if JumpToCurrentLine then + begin + JumpToCurrentLine := False; + MainForm.GotoTopOfStackTrace; + end; + + //Clean up + RegExp.Free; + CallStack.Free; +end; + +procedure TGDBDebugger.OnLocals(Output: TStringList); +var + I: Integer; + RegExp: TRegExpr; + Local: PVariable; + Locals: TList; + + function SynthesizeIndent(Indent: Integer): string; + var + I: Integer; + begin + Result := ''; + for I := 0 to Indent - 1 do + Result := Result + ' '; + end; + + procedure RecurseStructure(Indent: Integer; var I: Integer); + begin + while I < Output.Count - 4 do + if Output[I] = '}' then + Exit + else if Output[I + 4] <> '{' then + begin + New(Local); + Locals.Add(Local); + with Local^ do + begin + Name := SynthesizeIndent(Indent) + Output[I]; + Value := Output[I + 4]; + end; + + Inc(I, 8); + end + else + begin + New(Local); + Locals.Add(Local); + with Local^ do + begin + Name := SynthesizeIndent(Indent) + Output[I]; + Value := ''; + end; + + Inc(I, 6); + RecurseStructure(Indent + 4, I); + end; + end; + + procedure RecurseArray(Indent: Integer; var I: Integer); + var + RegExp: TRegExpr; + Count: Integer; + begin + Count := 0; + RegExp := TRegExpr.Create; + while (I < Output.Count - 2) do + begin + if Output[I] = '}' then + Break + else if (Trim(Output[I]) <> '') and (Output[I] <> 'array-section-end') then + begin + New(Local); + Locals.Add(Local); + with Local^ do + begin + Name := Format('%s[%d]', [SynthesizeIndent(Indent), Count]); + if RegExp.Exec(Output[I], ', (.*)') then + Value := RegExp.Substitute('$1') + else + Value := Output[I]; + end; + Inc(Count); + end; + + Inc(I, 2); + end; + + RegExp.Free; + end; +begin + RegExp := TRegExpr.Create; + Locals := TList.Create; + + I := 0; + while I < Output.Count do + begin + if RegExp.Exec(Output[I], '(.*) = (.*)') then + begin + New(Local); + Locals.Add(Local); + + if RegExp.Substitute('$2') = '{' then + begin + with Local^ do + begin + Name := RegExp.Substitute('$1'); + Value := ''; + end; + + Inc(I, 2); + //Determine if it is a structure of an array + if Pos('array-section-begin', Output[I - 1]) = 1 then + RecurseArray(4, I) + else + RecurseStructure(4, I); + end + else + begin + //Fill the fields + with Local^ do + begin + Name := RegExp.Substitute('$1'); + Value := RegExp.Substitute('$2'); + end; + end; + end; + Inc(I); + end; + + //Pass the locals list to the callback function that wants it + if Assigned(TDebugger(Self).OnLocals) then + TDebugger(Self).OnLocals(Locals); + + //Clean up + Locals.Free; + RegExp.Free; +end; + +procedure TGDBDebugger.GetRegisters; +var + Command: TCommand; +begin + if (not Executing) or (not Paused) then + Exit; + + RegistersFilled := 0; + Registers := TRegisters.Create; + Command := TCommand.Create; + Command.Command := 'displ/x $eax'; + Command.OnResult := OnRegisters; + QueueCommand(Command); + + Command := TCommand.Create; + Command.Command := 'displ/x $ebx'; + Command.OnResult := OnRegisters; + QueueCommand(Command); + + Command := TCommand.Create; + Command.Command := 'displ/x $ecx'; + Command.OnResult := OnRegisters; + QueueCommand(Command); + + Command := TCommand.Create; + Command.Command := 'displ/x $edx'; + Command.OnResult := OnRegisters; + + QueueCommand(Command); + Command := TCommand.Create; + Command.Command := 'displ/x $esi'; + Command.OnResult := OnRegisters; + QueueCommand(Command); + + Command := TCommand.Create; + Command.Command := 'displ/x $edi'; + Command.OnResult := OnRegisters; + QueueCommand(Command); + + Command := TCommand.Create; + Command.Command := 'displ/x $ebp'; + Command.OnResult := OnRegisters; + QueueCommand(Command); + + Command := TCommand.Create; + Command.Command := 'displ/x $esp'; + Command.OnResult := OnRegisters; + QueueCommand(Command); + + Command := TCommand.Create; + Command.Command := 'displ/x $eip'; + Command.OnResult := OnRegisters; + QueueCommand(Command); + + Command := TCommand.Create; + Command.Command := 'displ/x $cs'; + Command.OnResult := OnRegisters; + QueueCommand(Command); + + Command := TCommand.Create; + Command.Command := 'displ/x $ds'; + Command.OnResult := OnRegisters; + QueueCommand(Command); + + Command := TCommand.Create; + Command.Command := 'displ/x $ss'; + Command.OnResult := OnRegisters; + QueueCommand(Command); + + Command := TCommand.Create; + Command.Command := 'displ/x $es'; + Command.OnResult := OnRegisters; + QueueCommand(Command); +end; + +procedure TGDBDebugger.OnRegisters(Output: TStringList); +var + I: Integer; + Reg: String; + RegExp: TRegExpr; +begin + RegExp := TRegExpr.Create; + + I := 0; + while I < Output.Count do + begin + if Output[I] = ' = ' then + begin + Inc(I, 2); + + //Determine the register + if RegExp.Exec(CurrentCommand.Command, 'displ/x \$(.*)') then + begin + Inc(RegistersFilled); + Reg := Trim(RegExp.Substitute('$1')); + if Reg = 'eax' then + Registers.EAX := Output[I] + else if Reg = 'ebx' then + Registers.EBX := Output[I] + else if Reg = 'ecx' then + Registers.ECX := Output[I] + else if Reg = 'edx' then + Registers.EDX := Output[I] + else if Reg = 'esi' then + Registers.ESI := Output[I] + else if Reg = 'edi' then + Registers.EDI := Output[I] + else if Reg = 'ebp' then + Registers.EBP := Output[I] + else if Reg = 'eip' then + Registers.EIP := Output[I] + else if Reg = 'esp' then + Registers.ESP := Output[I] + else if Reg = 'cs' then + Registers.CS := Output[I] + else if Reg = 'ds' then + Registers.DS := Output[I] + else if Reg = 'ss' then + Registers.SS := Output[I] + else if Reg = 'es' then + Registers.ES := Output[I] + else + Dec(RegistersFilled); + end; + end; + Inc(I); + end; + + //Pass the locals list to the callback function that wants it + if (RegistersFilled = 13) and Assigned(TDebugger(Self).OnRegisters) then + begin + TDebugger(Self).OnRegisters(Registers); + Registers.Free; + end; + + //Clean up + RegExp.Free; +end; + +procedure TGDBDebugger.Disassemble(func: string); +var + Command: TCommand; +begin + if (not Executing) or (not Paused) then + Exit; + + Command := TCommand.Create; + Command.Command := 'disas ' + func; + Command.OnResult := OnDisassemble; + QueueCommand(Command); +end; + +procedure TGDBDebugger.OnDisassemble(Output: TStringList); +begin + //Pass the disassembly to the callback function that wants it + if Assigned(TDebugger(Self).OnDisassemble) then + TDebugger(Self).OnDisassemble(Output.Text); +end; + +procedure TGDBDebugger.SetAssemblySyntax(syntax: AssemblySyntax); +begin + case syntax of + asIntel: QueueCommand('set disassembly-flavor', 'intel'); + asATnT: QueueCommand('set disassembly-flavor', 'att'); + end; +end; + +function TGDBDebugger.GetVariableHint(name: string): string; +var + Command: TCommand; +begin + if (not Executing) or (not Paused) then + Exit; + + Command := TCommand.Create; + Command.Data := TObject(name); + Command.OnResult := OnVariableHint; + Command.Command := 'print ' + name; + + //Send the command; + QueueCommand(Command); +end; + +procedure TGDBDebugger.OnVariableHint(Output: TStringList); +begin + //Call the callback + if Assigned(TDebugger(Self).OnVariableHint) then + TDebugger(Self).OnVariableHint(Output[0]); +end; + +procedure TGDBDebugger.Go; +var + Command: TCommand; +begin + Command := TCommand.Create; + if not Started then + Command.Command := 'run' + else + Command.Command := 'continue'; + Command.Callback := OnGo; + QueueCommand(Command); +end; + +procedure TGDBDebugger.OnGo; +begin + inherited; + Started := True; +end; + +procedure TGDBDebugger.Pause; +begin +end; + +procedure TGDBDebugger.Next; +var + Command: TCommand; +begin + Command := TCommand.Create; + Command.Command := 'next'; + Command.Callback := OnTrace; + QueueCommand(Command); +end; + +procedure TGDBDebugger.Step; +var + Command: TCommand; +begin + Command := TCommand.Create; + Command.Command := 'step'; + Command.Callback := OnTrace; + QueueCommand(Command); +end; + +procedure TGDBDebugger.OnTrace; +begin + JumpToCurrentLine := True; + fPaused := False; + fBusy := False; +end; + +initialization + Breakpoints := TList.Create; + +finalization + Breakpoints.Free; + +end. |
From: Guru K. <gur...@us...> - 2006-11-07 08:34:05
|
Update of /cvsroot/wxdsgn/wxdevcpp/source/Vcl/Parser In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv2388 Modified Files: ClassBrowser.pas Log Message: Fix for the Crash when the Folder of the Class Browser is selected and when a new class form is invoked. Index: ClassBrowser.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/Vcl/Parser/ClassBrowser.pas,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- ClassBrowser.pas 27 Feb 2005 08:27:45 -0000 1.4 +++ ClassBrowser.pas 7 Nov 2006 08:34:01 -0000 1.5 @@ -142,6 +142,7 @@ procedure AddFolder(S: string; Node: TTreeNode); procedure RemoveFolder(S: string); procedure RenameFolder(Old, New: string); + function IsNodeAFolder(FolderNode: TTreeNode): Boolean; function FolderCount: integer; procedure SetUpdateOn; procedure SetUpdateOff; @@ -823,6 +824,19 @@ end; end; +function TClassBrowser.IsNodeAFolder(FolderNode: TTreeNode): Boolean; +var + I: integer; +begin + Result := false; + for I := Low(fFolders) to High(fFolders) do + if FolderNode = fFolders[I].Node then + begin + Result:=true; + break; + end; +end; + procedure TClassBrowser.myDragDrop(Sender, Source: TObject; X, Y: Integer); var Node: TTreeNode; |
From: Guru K. <gur...@us...> - 2006-11-07 08:33:22
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv2319 Modified Files: NewClassFm.pas Log Message: Fix for the Crash when the Folder of the Class Browser is selected and when a new class form is invoked. Index: NewClassFm.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/NewClassFm.pas,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- NewClassFm.pas 27 Feb 2005 07:55:43 -0000 1.4 +++ NewClassFm.pas 7 Nov 2006 08:33:19 -0000 1.5 @@ -110,7 +110,7 @@ finally sl.Free; end; - if Assigned(MainForm.ClassBrowser1.Selected) and (PStatement(MainForm.ClassBrowser1.Selected.Data)^._Kind = skClass) then begin + if Assigned(MainForm.ClassBrowser1.Selected) and (MainForm.ClassBrowser1.IsNodeAFolder(MainForm.ClassBrowser1.Selected)=false) and (PStatement(MainForm.ClassBrowser1.Selected.Data)^._Kind = skClass) then begin cmbClass.ItemIndex := cmbClass.Items.IndexOf(PStatement(MainForm.ClassBrowser1.Selected.Data)^._Command); chkInherit.Checked := True; end |
From: Guru K. <gur...@us...> - 2006-11-07 08:27:20
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv32311 Modified Files: project.pas Log Message: Adding the Save Version code that is removed when we added the multiprofile project. Index: project.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/project.pas,v retrieving revision 1.37 retrieving revision 1.38 diff -u -d -r1.37 -r1.38 --- project.pas 30 Oct 2006 08:13:18 -0000 1.37 +++ project.pas 7 Nov 2006 08:27:16 -0000 1.38 @@ -22,7 +22,7 @@ interface uses - Utils, StrUtils, + Utils, StrUtils,jvsimplexml, {$IFDEF WIN32} IniFiles, SysUtils, Dialogs, ComCtrls, Editor, Contnrs, Classes, Controls, version, prjtypes, Templates, Forms, @@ -234,6 +234,7 @@ procedure SetNodeValue(value: TTreeNode); procedure CheckProjectFileForUpdate; procedure IncrementBuildNumber; + function ExportToExternalProject(const aFileName:string):boolean; end; implementation @@ -1075,6 +1076,25 @@ Write('ProfilesCount', fProfiles.Count); Write('ProfileIndex', CurrentProfileIndex); Write('Folders', fFolders.CommaText); + //Save the Version Info + Section := 'VersionInfo'; + Write('Major', VersionInfo.Major); + Write('Minor', VersionInfo.Minor); + Write('Release', VersionInfo.Release); + Write('Build', VersionInfo.Build); + Write('LanguageID', VersionInfo.LanguageID); + Write('CharsetID', VersionInfo.CharsetID); + Write('CompanyName', VersionInfo.CompanyName); + Write('FileVersion', VersionInfo.FileVersion); + Write('FileDescription',VersionInfo.FileDescription); + Write('InternalName', VersionInfo.InternalName); + Write('LegalCopyright', VersionInfo.LegalCopyright); + Write('LegalTrademarks', VersionInfo.LegalTrademarks); + Write('OriginalFilename',VersionInfo.OriginalFilename); + Write('ProductName', VersionInfo.ProductName); + Write('ProductVersion', VersionInfo.ProductVersion); + Write('AutoIncBuildNrOnRebuild', VersionInfo.AutoIncBuildNrOnRebuild); + Write('AutoIncBuildNrOnCompile', VersionInfo.AutoIncBuildNrOnCompile); for i := 0 to fProfiles.Count - 1 do begin @@ -2339,6 +2359,59 @@ SetModified(True); end; +function TProject.ExportToExternalProject(const aFileName:string):boolean; +var + xmlObj:TJvSimpleXML; + mkelement,exeelement:TJvSimpleXMLElemClassic; + strFileNames:String; + i:Integer; + + function GetAppTypeString(apptyp:Integer):string; + begin + case apptyp of + dptGUI: + Result:='GUI'; + dptCon: + Result:='console'; + dptStat: + Result:='lib'; + dptDyn: + Result:='dll'; + end; + end; + function GetAppTag(apptyp:Integer):string; + begin + case apptyp of + dptGUI, + dptCon: + Result:='exe'; + dptStat: + Result:='lib'; + dptDyn: + Result:='dll'; + end; + end; +begin + xmlObj:=TJvSimpleXML.Create(nil); + mkelement:=xmlObj.Root.Container.Add('makefile'); + + exeelement:=mkelement.Container.Add(GetAppTag(CurrentProfile.typ)); + for i:= 0 to fUnits.count -1 do + begin + strFileNames := strFileNames + ' '+fUnits[i].FileName; + end; + exeelement.Container.Add('sources',strFileNames); + + if (CurrentProfile.typ = dptGUI) or (CurrentProfile.typ = dptCon) then + exeelement.Container.Add('app-type',GetAppTypeString(CurrentProfile.typ)); + //Add Include and Lib directories + try + xmlObj.SaveToFile(aFileName); + except + end; + xmlObj.Destroy; +end; + { TUnitList } constructor TUnitList.Create; |
From: Joel L. <lo...@us...> - 2006-11-07 07:13:15
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv3106 Modified Files: Tag: VC_Debugger main.pas Log Message: Fixed copying and pasting Index: main.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/main.pas,v retrieving revision 1.79.4.6 retrieving revision 1.79.4.7 diff -u -d -r1.79.4.6 -r1.79.4.7 --- main.pas 6 Nov 2006 02:50:41 -0000 1.79.4.6 +++ main.pas 7 Nov 2006 07:13:11 -0000 1.79.4.7 @@ -4672,9 +4672,13 @@ actWxPropertyInspectorPaste.Execute else // Otherwise form component is selected so paste whole component (control and code) actDesignerPaste.Execute + else if e.Text.Focused then + e.Text.PasteFromClipboard else - e.Text.PasteFromClipboard; - end; + SendMessage(GetFocus, WM_PASTE, 0, 0); + end + else + SendMessage(GetFocus, WM_PASTE, 0, 0); end; procedure TMainForm.actSelectAllExecute(Sender: TObject); @@ -5570,7 +5574,7 @@ else Clipboard.AsText := LogOutput.Lines.Text; cDebugTab: - if DebugSubPages.ActivePageIndex = 3 then + if DebugSubPages.ActivePage = tabDebugOutput then Clipboard.AsText := DebugOutput.SelText; cFindTab: if assigned(FindOutput.Selected) then @@ -5587,7 +5591,7 @@ cResTab: ResourceOutput.Items.Clear; cLogTab: LogOutput.Clear; cDebugTab: - if DebugSubPages.ActivePageIndex = 3 then + if DebugSubPages.ActivePage = tabDebugOutput then DebugOutput.Clear; cFindTab: FindOutput.Items.Clear; end; @@ -5773,7 +5777,7 @@ procedure TMainForm.MessagePopupPopup(Sender: TObject); begin - if (MessageControl.ActivePage = DebugSheet) and (DebugSubPages.ActivePageIndex <> 3) then begin + if (MessageControl.ActivePage = DebugSheet) and (DebugSubPages.ActivePage <> tabDebugOutput) then begin MsgCopyItem.Enabled := false; MsgClearItem.Enabled := false; end |
From: Joel L. <lo...@us...> - 2006-11-06 08:22:42
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv9278 Modified Files: Tag: VC_Debugger debugger.pas Log Message: Removed debug messages Index: debugger.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugger.pas,v retrieving revision 1.12.2.15 retrieving revision 1.12.2.16 diff -u -d -r1.12.2.15 -r1.12.2.16 --- debugger.pas 6 Nov 2006 07:38:44 -0000 1.12.2.15 +++ debugger.pas 6 Nov 2006 08:22:39 -0000 1.12.2.16 @@ -999,7 +999,6 @@ Indent := 0; while I < Output.Count do begin - SendDebug(inttostr(i) + ': ' + Output[I]); if RegExp.Exec(Output[I], StructArrayExpr) then begin with DebugTree.Items.AddChild(ParentNode, RegExp.Substitute('[$2] $3')) do @@ -1031,10 +1030,7 @@ if Length(RegExp.Substitute('$1')) <= Indent then Break else - begin - showmessage(inttostr(Length(RegExp.Substitute('$1'))) + '/' + inttostr(indent)); SubStructure.Add(Output[I]); - end; Inc(I); end; @@ -1124,9 +1120,7 @@ ImageIndex := 21; end; end; - end - else - SendDebug(Output[i]); + end; //Increment I Inc(I); @@ -1136,6 +1130,7 @@ procedure ParseArray(Output: TStringList; ParentNode: TTreeNode); var SubStructure: TStringList; + Increment: Integer; I: Integer; begin I := 0; @@ -1144,15 +1139,19 @@ if RegExp.Exec(Output[I], ArrayExpr) then begin Inc(I, 2); - if Output[I] = '' then + Increment := 2; + while Trim(Output[I]) = '' do + begin Inc(I); + Inc(Increment); + end; //Are we an array (with a basic data type) or with a UDT? if RegExp.Exec(Output[I], StructExpr) then begin with TRegExpr.Create do begin - Exec(Output[I - 2], ArrayExpr); + Exec(Output[I - Increment], ArrayExpr); with DebugTree.Items.AddChild(ParentNode, Substitute('[$1]')) do begin SelectedIndex := 32; |
From: Joel L. <lo...@us...> - 2006-11-06 07:38:47
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv24366 Modified Files: Tag: VC_Debugger debugger.pas Log Message: Added parsing for arrays in structures, array of structures as well as array of structures containing arrays. Index: debugger.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugger.pas,v retrieving revision 1.12.2.14 retrieving revision 1.12.2.15 diff -u -d -r1.12.2.14 -r1.12.2.15 --- debugger.pas 6 Nov 2006 03:39:58 -0000 1.12.2.14 +++ debugger.pas 6 Nov 2006 07:38:44 -0000 1.12.2.15 @@ -127,6 +127,7 @@ Event: THandle; Wait: TDebugWait; Reader: TDebugReader; + CurOutput: TStringList; procedure DisplayError(s: string); function GetBreakpointFromIndex(index: integer): TBreakpoint; @@ -254,7 +255,6 @@ OverrideHandler: TCallback; RegistersFilled: Integer; Registers: TRegisters; - CurOutput: TStringList; Started: Boolean; protected @@ -330,6 +330,7 @@ constructor TDebugger.Create; begin + CurOutput := TStringList.Create; SentCommand := False; fNextBreakpoint := 0; fExecuting := False; @@ -349,6 +350,7 @@ CloseHandle(Event); RemoveAllBreakpoints; + CurOutput.Free; CommandQueue.Free; IncludeDirs.Free; inherited Destroy; @@ -762,7 +764,6 @@ var RegExp: TRegExpr; CurLine: String; - CurOutput: TStringList; procedure ParseError(const line: string); begin @@ -828,7 +829,6 @@ begin //Update the memo SentCommand := False; - CurOutput := TStringList.Create; RegExp := TRegExpr.Create; while Pos(#10, Output) > 0 do @@ -852,7 +852,6 @@ //Clean up RegExp.Free; - CurOutput.Free; end; procedure TCDBDebugger.AddIncludeDir(s: string); @@ -936,7 +935,7 @@ if cdLocals in refresh then begin Command := TCommand.Create; - Command.Command := 'dv /i /t /v'; + Command.Command := 'dv -i -t -v'; Command.OnResult := OnLocals; QueueCommand(Command); end; @@ -956,7 +955,9 @@ //Decide what command we should send - dv for locals, dt for structures if Pos('.', Name) > 0 then - Command.Command := 'dt -r ' + Copy(name, 1, Pos('.', name) - 1) + Command.Command := 'dt -r -b ' + Copy(name, 1, Pos('.', name) - 1) + else if Pos('[', Name) > 0 then + Command.Command := 'dt -a -r -b ' + Copy(name, 1, Pos('[', name) - 1) else Command.Command := 'dv ' + name; @@ -976,6 +977,10 @@ end; procedure TCDBDebugger.OnRefreshContext(Output: TStringList); +const + StructExpr = '( +)\+0x([0-9a-fA-F]{1,8}) ([^ ]*)?( +): (.*)'; + ArrayExpr = '\[([0-9a-fA-F]*)\] @ ([0-9a-fA-F]*)'; + StructArrayExpr = '( *)\[([0-9a-fA-F]*)\] (.*)'; var NeedsRefresh: Boolean; Expanded: Boolean; @@ -983,19 +988,89 @@ Node: TTreeNode; J: Integer; + procedure ParseStructure(Output: TStringList; ParentNode: TTreeNode); forward; + procedure ParseStructArray(Output: TStringList; ParentNode: TTreeNode); + var + I: Integer; + Indent: Integer; + SubStructure: TStringList; + begin + I := 0; + Indent := 0; + while I < Output.Count do + begin + SendDebug(inttostr(i) + ': ' + Output[I]); + if RegExp.Exec(Output[I], StructArrayExpr) then + begin + with DebugTree.Items.AddChild(ParentNode, RegExp.Substitute('[$2] $3')) do + begin + SelectedIndex := 21; + ImageIndex := 21; + end; + + Inc(I); + if I >= Output.Count then + Continue; + + if RegExp.Exec(Output[I], StructExpr) then + begin + if Indent = 0 then + Indent := Length(RegExp.Substitute('$1')); + + SubStructure := TStringList.Create; + while I < Output.Count do + begin + if RegExp.Exec(Output[I], StructExpr) then + begin + if Length(RegExp.Substitute('$1')) < Indent then + Break + else + SubStructure.Add(Output[I]); + end + else if RegExp.Exec(Output[I], StructArrayExpr) then + if Length(RegExp.Substitute('$1')) <= Indent then + Break + else + begin + showmessage(inttostr(Length(RegExp.Substitute('$1'))) + '/' + inttostr(indent)); + SubStructure.Add(Output[I]); + end; + + Inc(I); + end; + Indent := 0; + + //Process it + with ParentNode.Item[ParentNode.Count - 1] do + begin + SelectedIndex := 32; + ImageIndex := 32; + end; + + //Determine if it is a structure or an array + ParseStructure(SubStructure, ParentNode.Item[ParentNode.Count - 1]); + ParentNode.Item[ParentNode.Count - 1].Expand(false); + SubStructure.Free; + Dec(I); + end; + end; + + Inc(I); + end; + end; + procedure ParseStructure(Output: TStringList; ParentNode: TTreeNode); - const - VariableExpr = '( +)\+0x([0-9a-fA-F]{1,8}) ([^ ]*)?( +): (.*)'; var SubStructure: TStringList; Indent: Integer; + Node: TTreeNode; I: Integer; begin I := 0; Indent := 0; while I < Output.Count do begin - if RegExp.Exec(Output[I], VariableExpr) then + if RegExp.Exec(Output[I], StructExpr) or RegExp.Exec(Output[I], StructArrayExpr) then begin if Indent = 0 then Indent := Length(RegExp.Substitute('$1')); @@ -1005,10 +1080,11 @@ begin //Populate the substructure string list SubStructure := TStringList.Create; + while I < Output.Count do begin - if RegExp.Exec(Output[I], VariableExpr) then - if Length(RegExp.Substitute('$1')) = Indent then + if RegExp.Exec(Output[I], StructArrayExpr) or RegExp.Exec(Output[I], StructExpr) then + if Length(RegExp.Substitute('$1')) <= Indent then Break else SubStructure.Add(Output[I]); @@ -1021,17 +1097,89 @@ SelectedIndex := 32; ImageIndex := 32; end; - ParseStructure(SubStructure, ParentNode.Item[ParentNode.Count - 1]); + + //Determine if it is a structure or an array + if SubStructure.Count <> 0 then + if Trim(SubStructure[0])[1] = '[' then + ParseStructArray(SubStructure, ParentNode.Item[ParentNode.Count - 1]) + else + ParseStructure(SubStructure, ParentNode.Item[ParentNode.Count - 1]); ParentNode.Item[ParentNode.Count - 1].Expand(false); SubStructure.Free; //Decrement I, since we will increment one at the end of the loop Dec(I); end - //Otherwise just add the value else - with DebugTree.Items.AddChild(ParentNode, RegExp.Substitute('$3 = $5')) do + begin + if RegExp.Substitute('$5') = '' then + Node := DebugTree.Items.AddChild(ParentNode, RegExp.Substitute('$3')) + else + Node := DebugTree.Items.AddChild(ParentNode, RegExp.Substitute('$3 = $5')); + + with Node do + begin + SelectedIndex := 21; + ImageIndex := 21; + end; + end; + end + else + SendDebug(Output[i]); + + //Increment I + Inc(I); + end; + end; + + procedure ParseArray(Output: TStringList; ParentNode: TTreeNode); + var + SubStructure: TStringList; + I: Integer; + begin + I := 0; + while I < Output.Count do + begin + if RegExp.Exec(Output[I], ArrayExpr) then + begin + Inc(I, 2); + if Output[I] = '' then + Inc(I); + + //Are we an array (with a basic data type) or with a UDT? + if RegExp.Exec(Output[I], StructExpr) then + begin + with TRegExpr.Create do + begin + Exec(Output[I - 2], ArrayExpr); + with DebugTree.Items.AddChild(ParentNode, Substitute('[$1]')) do + begin + SelectedIndex := 32; + ImageIndex := 32; + end; + + Free; + end; + + //Populate the substructure string list + SubStructure := TStringList.Create; + while (I < Output.Count) and (Output[I] <> '') do + begin + SubStructure.Add(Output[I]); + Inc(I); + end; + + //Process it + ParseStructure(SubStructure, ParentNode.Item[ParentNode.Count - 1]); + ParentNode.Item[ParentNode.Count - 1].Expand(false); + SubStructure.Free; + + //Decrement I, since we will increment one at the end of the loop + Dec(I); + end + else + with DebugTree.Items.AddChild(ParentNode, RegExp.Substitute('[$1]') + ' = ' + Output[I]) do begin SelectedIndex := 21; ImageIndex := 21; @@ -1046,10 +1194,21 @@ NeedsRefresh := False; RegExp := TRegExpr.Create; Node := TTreeNode(CurrentCommand.Data); - + //Set the type of the structure/class/whatever with PWatch(Node.Data)^ do - if RegExp.Exec(Output[0], '(.*) (.*) @ 0x([0-9a-fA-F]{1,8}) Type (.*)') then + if RegExp.Exec(Output[0], '(.*) (.*) @ 0x([0-9a-fA-F]{1,8}) Type (.*)\[\]') then + begin + Expanded := Node.Expanded; + Node.Text := RegExp.Substitute(Copy(name, 1, Pos('[', name) - 1) + ' = $4 (0x$3)'); + Node.SelectedIndex := 32; + Node.ImageIndex := 32; + ParseArray(Output, Node); + + if Expanded then + Node.Expand(True); + end + else if RegExp.Exec(Output[0], '(.*) (.*) @ 0x([0-9a-fA-F]{1,8}) Type (.*)') then begin Expanded := Node.Expanded; Node.Text := RegExp.Substitute(Copy(name, 1, Pos('.', name) - 1) + ' = $4 (0x$3)'); @@ -1062,13 +1221,17 @@ end else for J := 0 to Output.Count - 1 do - if RegExp.Exec(Output[J], '( +)' + name + ' = (struct|class|union) (.*)') then + if RegExp.Exec(Output[J], '( +)' + name + ' = (.*) \[(.*)\]') then + begin + PWatch(Node.Data)^.Name := PWatch(Node.Data)^.Name + '['; + NeedsRefresh := True; + end + else if RegExp.Exec(Output[J], '( +)' + name + ' = (struct|class|union) (.*)') then begin PWatch(Node.Data)^.Name := PWatch(Node.Data)^.Name + '.'; NeedsRefresh := True; end - else - if RegExp.Exec(Output[J], '( +)' + name + ' = (.*)') then + else if RegExp.Exec(Output[J], '( +)' + name + ' = (.*)') then Node.Text := Trim(Output[J]); //Do we have to refresh the entire thing? @@ -1412,14 +1575,12 @@ constructor TGDBDebugger.Create; begin inherited; - CurOutput := TStringList.Create; OverrideHandler := nil; Started := False; end; destructor TGDBDebugger.Destroy; begin - CurOutput.Free; inherited; end; @@ -1482,6 +1643,5 @@ procedure ParseOutput(const line: string); begin - Assert((Pos(#10, line) = 0) and (Pos(#13, line) = 0)); //Exclude these miscellaneous messages if (line = ' \ No newline at end of file |
From: Joel L. <lo...@us...> - 2006-11-06 03:40:03
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv27115 Modified Files: Tag: VC_Debugger debugger.pas debugwait.pas Log Message: Removed the last bit of the old API Index: debugwait.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugwait.pas,v retrieving revision 1.6.2.4 retrieving revision 1.6.2.5 diff -u -d -r1.6.2.4 -r1.6.2.5 --- debugwait.pas 28 Oct 2006 04:48:32 -0000 1.6.2.4 +++ debugwait.pas 6 Nov 2006 03:39:58 -0000 1.6.2.5 @@ -37,7 +37,6 @@ EventReady: THandle; OutputCrit: TRTLCriticalSection; Output: string; - Idle: boolean; protected procedure Execute; override; Index: debugger.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugger.pas,v retrieving revision 1.12.2.13 retrieving revision 1.12.2.14 diff -u -d -r1.12.2.13 -r1.12.2.14 --- debugger.pas 6 Nov 2006 02:50:41 -0000 1.12.2.13 +++ debugger.pas 6 Nov 2006 03:39:58 -0000 1.12.2.14 @@ -194,10 +194,6 @@ procedure GetRegisters; virtual; abstract; procedure Disassemble; overload; procedure Disassemble(func: string); overload; virtual; abstract; - - //Havn't looked at these - function WaitForIdle: Boolean; - function Idle: Boolean; end; TCDBDebugger = class(TDebugger) @@ -358,30 +354,6 @@ inherited Destroy; end; -function TDebugger.WaitForIdle: boolean; -var - I : integer; -begin - I := 0; - Result := false; - while not Reader.Idle do - begin - Sleep(20); - I := I + 1; - if (i = 200) then begin - MessageDlg('Timeout elapsed while waiting for previous debugger command to complete.'#10#13#10#13 + - 'Check if the debugger has hung.', mtError, [mbOK], MainForm.Handle); - Reader.Idle := True; - Result := true; - end; - end; -end; - -function TDebugger.Idle: boolean; -begin - result := Reader.Idle; -end; - procedure TDebugger.Execute(filename, arguments: string); var hOutputReadTmp, hOutputWrite, @@ -459,7 +431,6 @@ Reader.EventReady := Event; Reader.OnTerminate := CloseDebugger; Reader.FreeOnTerminate := True; - Reader.Idle := True; InitializeCriticalSection(Reader.OutputCrit); // Create a thread that will notice when an output is ready to be sent for processing |
From: Joel L. <lo...@us...> - 2006-11-06 02:50:45
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv7029 Modified Files: Tag: VC_Debugger debugger.pas main.dfm main.pas Log Message: -Added a SetContext function which lets the user set the stack frame he wants to examine. Current only implemented for CDB -Removed the debug subtab in the debug tab. -When the user double clicks a stack frame don't remove his selection. -Update the RefreshContext function so that we can customize which aspects of the local context we want to refresh. Index: main.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/main.pas,v retrieving revision 1.79.4.5 retrieving revision 1.79.4.6 diff -u -d -r1.79.4.5 -r1.79.4.6 --- main.pas 6 Nov 2006 02:10:53 -0000 1.79.4.5 +++ main.pas 6 Nov 2006 02:50:41 -0000 1.79.4.6 @@ -556,10 +556,6 @@ Logout1: TMenuItem; N66: TMenuItem; DebugSubPages: TPageControl; - tabVars: TTabSheet; - PanelDebug: TPanel; - AddWatchBtn: TSpeedButton; - RemoveWatchBtn: TSpeedButton; tabBacktrace: TTabSheet; lvBacktrace: TListView; tabDebugOutput: TTabSheet; @@ -579,15 +575,6 @@ cmbMembers: TComboBox; N17: TMenuItem; ToolClassesItem: TMenuItem; - DebugPanel: TPanel; - NextStepBtn: TSpeedButton; - StepIntoBtn: TSpeedButton; - DebugPanel2: TPanel; - StepOverBtn: TSpeedButton; - DebugPanel3: TPanel; - DDebugBtn: TSpeedButton; - RunToCursorBtn: TSpeedButton; - StopExecBtn: TSpeedButton; N67: TMenuItem; FloatingReportwindowItem: TMenuItem; N57: TMenuItem; @@ -2203,27 +2190,6 @@ HelpPop.Images := CurrentTheme.HelpImages; DebugVarsPopup.Images := CurrentTheme.MenuImages; ClassBrowser1.Images := CurrentTheme.BrowserImages; - - //this prevent a bug in the VCL - DDebugBtn.Glyph := nil; - NextStepBtn.Glyph := nil; - StepOverBtn.Glyph := nil; - StepIntoBtn.Glyph := nil; - AddWatchBtn.Glyph := nil; - RemoveWatchBtn.Glyph := nil; - RuntocursorBtn.Glyph := nil; - StopExecBtn.Glyph := nil; - - CurrentTheme.MenuImages.GetBitmap(32, DDebugBtn.Glyph); - CurrentTheme.MenuImages.GetBitmap(18, NextStepBtn.Glyph); - CurrentTheme.MenuImages.GetBitmap(14, StepOverBtn.Glyph); - CurrentTheme.MenuImages.GetBitmap(14, StepIntoBtn.Glyph); - CurrentTheme.MenuImages.GetBitmap(21, AddWatchBtn.Glyph); - CurrentTheme.MenuImages.GetBitmap(5, RemoveWatchBtn.Glyph); - CurrentTheme.MenuImages.GetBitmap(24, RuntocursorBtn.Glyph); - CurrentTheme.MenuImages.GetBitmap(11, StopExecBtn.Glyph); - - AddWatchBtn.Glyph.TransparentColor := clWhite; end; end; @@ -2861,8 +2827,6 @@ lblSendCommandDebugger.Caption := Strings[ID_DEB_SENDDEBUGCOMMAND]; GdbCommandBtn.Caption := Strings[ID_DEB_SEND]; - - tabVars.Caption := Strings[ID_SHEET_DEBUG]; tabBacktrace.Caption := Strings[ID_DEB_BACKTRACE]; tabDebugOutput.Caption := Strings[ID_DEB_OUTPUT]; @@ -7013,11 +6977,15 @@ idx: integer; e: TEditor; begin - if Assigned(lvBacktrace.Selected) and (lvBackTrace.Selected.SubItems.Count >= 3) then begin + if Assigned(lvBacktrace.Selected) and (lvBackTrace.Selected.SubItems.Count >= 3) then + begin idx := StrToIntDef(lvBacktrace.Selected.SubItems[2], -1); - if idx <> -1 then begin + if idx <> -1 then + begin e := GetEditorFromFileName(CppParser1.GetFullFilename(lvBacktrace.Selected.SubItems[1])); - if Assigned(e) then begin + if Assigned(e) then + begin + fDebugger.SetContext(lvBacktrace.Selected.Index); e.GotoLineNr(idx); e.Activate; end; Index: main.dfm =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/main.dfm,v retrieving revision 1.37.2.8 retrieving revision 1.37.2.9 diff -u -d -r1.37.2.8 -r1.37.2.9 --- main.dfm 1 Nov 2006 08:22:17 -0000 1.37.2.8 +++ main.dfm 6 Nov 2006 02:50:41 -0000 1.37.2.9 @@ -70,7 +70,7 @@ Left = 0 Top = 0 Width = 618 - Height = 98 + Height = 97 Align = alClient BevelOuter = bvRaised BevelKind = bkSoft @@ -108,7 +108,7 @@ Left = 0 Top = 0 Width = 618 - Height = 98 + Height = 97 Align = alClient BevelKind = bkSoft BorderStyle = bsNone @@ -126,7 +126,7 @@ Left = 0 Top = 0 Width = 225 - Height = 98 + Height = 97 Align = alLeft Caption = 'Information :' TabOrder = 0 @@ -181,18 +181,18 @@ Left = 225 Top = 0 Width = 393 - Height = 98 + Height = 97 Align = alClient Caption = 'Compile log :' TabOrder = 1 DesignSize = ( 393 - 98) + 97) object LogOutput: TMemo Left = 7 Top = 16 Width = 638 - Height = 87 + Height = 86 Anchors = [akLeft, akTop, akRight, akBottom] ReadOnly = True ScrollBars = ssVertical @@ -208,378 +208,11 @@ Left = 0 Top = 0 Width = 618 - Height = 98 - ActivePage = tabVars + Height = 97 + ActivePage = tabBacktrace Align = alClient Style = tsFlatButtons TabOrder = 0 - object tabVars: TTabSheet - Caption = 'Debug' - object PanelDebug: TPanel - Left = 468 - Top = 0 - Width = 156 - Height = 67 - Align = alLeft - BevelOuter = bvLowered - TabOrder = 0 - object AddWatchBtn: TSpeedButton - Left = 4 - Top = 3 - Width = 148 - Height = 20 - Action = actAddWatch - Flat = True - Glyph.Data = { - 36030000424D3603000000000000360000002800000010000000100000000100 - 18000000000000030000120B0000120B00000000000000000000AFAFAFAFAFAF - AFAFAFAFAFAF8081812F34345A5B5BA6A6A6AFAFAFAFAFAFAFAFAFAFAFAFA1A1 - A1858585A6A6A6AFAFAFAFAFAFAFAFAFAFAFAF777777606A6ACEE5E582909074 - 79796E6E6EAFAFAFAFAFAFA6A6A63D3D3D000000878787AFAFAFAFAFAFAFAFAF - AFAFAF3A3A3AB4C9C9D8F1F1D4ECECB2C6C65D6666696969AFAFAF3A3A3A0000 - 00454545A4A4A4AFAFAFAFAFAFAFAFAF6B6B6B8D9C9CD2EAEAD2EAEAC4DADAB3 - C8C8ABBEBE6670700E0E0E0404044D4D4DABABABAFAFAFAFAFAFAFAFAF9E9E9E - 6C6F6FB2C4C4CDE5E5A7BABA667272475050414848494C4C1515154B54547C7C - 7CAFAFAFAFAFAFAFAFAFAFAFAF878787555E5EC6DDDDBFD6D6636F6F82919197 - A9A9869696616C6C353B3BBACFCF7580803A3A3A949494AFAFAFAFAFAF282A2A - 9DABABC5DCDCB3C7C7444B4BC4D3D3AFC0C096A7A7859494333838C5DBDBD5ED - ED99AAAA262929AFAFAFAFAFAF101111737E7EB9CFCFB2C7C74C5555CEDBDBCC - DADAA3B6B68D9E9E3F4646C7DEDED6EEEE9CAEAE4E5151AFAFAFAFAFAF202121 - 7C8181879595B1C7C76C7878818E8EC2D3D3A6BABA6E7A7A727F7FD2EAEAA8BB - BB595C5C9F9F9FAFAFAFAFAFAF333535DCE4E47478788A9A9AAABFBF717F7F3C - 43433B4242788686C2D8D8BFD5D5464949A4A4A4AFAFAFAFAFAFAFAFAF343434 - D0D1D1787F7FAFC5C5C1D7D7C5DDDDCBE3E3D0E8E8D3EBEBD6EFEF6B77776161 - 61AFAFAFAFAFAFAFAFAFAFAFAF26262682828293A1A1BCD3D3C0D7D7C3DADAC6 - DEDECCE4E4D0E8E897A6A66E7070AFAFAFAFAFAFAFAFAFAFAFAFAFAFAF757575 - 1E1E1E6C7878B3C9C9BFD5D5C2D8D8C4DBDBC8E0E0B8CECE4148489D9D9DAFAF - AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF5B5B5B383A3A758383A0B2B2C0 - D7D7BDD2D26B7575858585AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF - AFAFAFAFAFAFA6A6A65B5B5B4B4F4F5761618D9D9D575757AFAFAFAFAFAFAFAF - AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF97979785 - 85853A3D3D979797AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF} - end - object RemoveWatchBtn: TSpeedButton - Left = 4 - Top = 26 - Width = 148 - Height = 20 - Action = actRemoveWatch - Flat = True - Glyph.Data = { - 36030000424D3603000000000000360000002800000010000000100000000100 - 18000000000000030000120B0000120B00000000000000000000AAAAAAAAAAAA - AAAAAA000000000000000000000000000000000000000000000000080808AAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00000075977D72947A718F786E8D746B - 8A7268856F67826D647D69000000080808080808AAAAAAAAAAAAAAAAAA000000 - 789A809AB2A05F786596AD9A5C72606B8A724C5B4F67836D536858617A670000 - 00080808080808AAAAAAAAAAAA000000637D68B4C5B75F786596AD9A4E5F526D - 8A724C5C4F67836D48584C637A68000000080808080808080808AAAAAA000000 - 637D68B4C6B75F786596AD9A4E5F526D8A724C5C4F67836E48584D637A680000 - 00080808080808080808AAAAAA000000637D68B4C6B95F786596AD9B4F5F526D - 8A724C5C4F67836E49584D637B68000000080808080808080808AAAAAA000000 - 637D68B4C6B95F786596AD9B4F5F526D8A724C5C4F68836E49584D637B680000 - 00080808080808AAAAAAAAAAAA000000637D68B4C6B95F786597AE9B4F5F526D - 8A724C5C4F68846E49584D637B68000000AAAAAAAAAAAAAAAAAAAAAAAA000000 - 637D68252525252525252525252525252525252525252525252525637B680000 - 00AAAAAAAAAAAAAAAAAAAAAAAA0000002525256E8B73637B68637B685A6F5E52 - 64574553494B5B4F3D453F252525000000AAAAAAAAAAAAAAAAAA000000547363 - 6B8C748DAA948AA58F8AA58F74967C74967C68866F617966586E5D4B5A4D4552 - 48000000AAAAAAAAAAAA00000074967CABC0B0C8D6CED6E1DAB1C4BB94ADA091 - AB9E8FAA9B8EA79A8CA59874967C576B5B000000AAAAAAAAAAAA0000008DA596 - D2DED7B5C9BE98B3A496B1A295B0A094ADA091AB9E8FAA9B8EA79A8CA5988AA3 - 97000000AAAAAAAAAAAA000000ADC4B6B7CCBF9BB6A7B5C9BE5E6F65282E2B31 - 393522262491AB9E8FAA9B8EA79A8CA598000000AAAAAAAAAAAAAAAAAA252525 - 0000009EBAA8ABC1B4DDE7E17D8A83869F90434E4894ADA091AB9E0000000000 - 00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00000000000000000000000000 - 0000000000000000000000AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA} - end - end - object DebugPanel: TPanel - Left = 0 - Top = 0 - Width = 156 - Height = 67 - Align = alLeft - BevelOuter = bvLowered - TabOrder = 1 - object NextStepBtn: TSpeedButton - Left = 4 - Top = 3 - Width = 148 - Height = 20 - Action = actStepOver - Flat = True - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000000000000000000000000000000000000FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 - 000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 - 0000316339000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 - 00007BAD840052845A00295A31000000000000000000FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 - 000084B5940073A584006B9C73004A7B5200315A39000000000000000000FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 - 00008CBD9C007BAD840073A584007BAD84006B9C73004A7B520042734A000000 - 000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 - 00008CBD9C007BAD84007BAD84007BAD84007BA584007BAD84006B9C73004A7B - 5200425A42000000000000000000FF00FF00FF00FF00FF00FF00FF00FF000000 - 000094BD9C0084AD8C007BAD840084AD8C007BAD84007BAD840073A57B007BA5 - 84006B9C73004A845A00315A39000000000000000000FF00FF00FF00FF002929 - 2900FFFFFF00EFF7EF00EFF7EF00EFF7EF00EFF7EF00E7EFE700DEE7DE00D6E7 - D600DEE7DE00EFF7EF00ADC6B5000000000000000000FF00FF00FF00FF000000 - 0000FFFFFF00EFF7EF00EFF7EF00EFF7EF00EFF7EF00EFF7EF00E7EFE700EFF7 - F700C6DECE001818180000000000FF00FF00FF00FF00FF00FF00FF00FF000000 - 0000FFFFFF00F7F7F700F7F7F700EFF7EF00EFF7EF00F7F7F700C6DECE000000 - 000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 - 0000FFFFFF00F7F7F700EFF7EF00EFF7F700CEDECE000000000000000000FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 - 0000FFFFFF00EFF7F700D6E7D6000000000000000000FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 - 0000DEEFE7000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 - 000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} - end - object StepIntoBtn: TSpeedButton - Left = 4 - Top = 26 - Width = 148 - Height = 20 - Action = actStepInto - Flat = True - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000000000000000000000000000000000000FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF0000000000FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00000000002942310000000000FF00FF00FF00FF00FF00FF00FF00 - FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00000000002942310000000000FF00FF00FF00FF00FF00 - FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF0000000000008400000084000000000000000000000000 - 000000A5000000B5000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF000000000000000000009400000094000000A5 - 000000A5000000C6000000B5000000000000FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000000000000000 - 000000A5000000B5000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} - end - end - object DebugPanel2: TPanel - Left = 156 - Top = 0 - Width = 156 - Height = 67 - Align = alLeft - BevelOuter = bvLowered - TabOrder = 2 - object StepOverBtn: TSpeedButton - Left = 4 - Top = 3 - Width = 148 - Height = 20 - Action = actStepOver - Flat = True - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000000000000000000000000000000000000FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF0000000000FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00000000002942310000000000FF00FF00FF00FF00FF00FF00FF00 - FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00000000002942310000000000FF00FF00FF00FF00FF00 - FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF0000000000008400000084000000000000000000000000 - 000000A5000000B5000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF000000000000000000009400000094000000A5 - 000000A5000000C6000000B5000000000000FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000000000000000 - 000000A5000000B5000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} - end - object RunToCursorBtn: TSpeedButton - Left = 4 - Top = 26 - Width = 148 - Height = 20 - Action = actRunToCursor - Flat = True - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000000000000000000000000000000000000FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF0000000000FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00000000002942310000000000FF00FF00FF00FF00FF00FF00FF00 - FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00000000002942310000000000FF00FF00FF00FF00FF00 - FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF0000000000008400000084000000000000000000000000 - 000000A5000000B5000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF000000000000000000009400000094000000A5 - 000000A5000000C6000000B5000000000000FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000000000000000 - 000000A5000000B5000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} - end - end - object DebugPanel3: TPanel - Left = 312 - Top = 0 - Width = 156 - Height = 67 - Align = alLeft - BevelOuter = bvLowered - TabOrder = 3 - object DDebugBtn: TSpeedButton - Left = 4 - Top = 3 - Width = 148 - Height = 20 - Action = actDebug - Flat = True - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000000000000000000000000000000000000FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00F7F7F700D6D6 - D600E7E7E700FF00FF00EFEFF700FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00EFEFEF00CECECE00ADADAD00ADADAD00A5A5 - A500737373009494AD00D6D6EF00FF00FF00FF00FF00FF00FF00FF00FF00EFEF - FF00F7F7FF00FFFFFF00D6D6D6009C9C9C00636363004A4A4A00313939005A5A - 5A003131840052528400E7E7E700FF00FF00FF00FF00FF00FF00FF00FF00E7E7 - E700A5A5C600C6C6D6005A635A00393939002929290021212100212929001821 - 520010107B004A4A5200C6C6C600F7F7F700FF00FF00FF00FF00FF00FF00EFEF - EF00636384004242A50021294A00182121003942390031393900212939000808 - 8C0021293100424242007B7B7B0094949400F7F7F700FF00FF00FF00FF00F7F7 - F7008C8C8C0039427B000000AD002931420031393900424252000000A5002131 - 63002939390039424200636363007B7B7B00F7F7F700FF00FF00FF00FF00FF00 - FF00CECECE0042524A0018298C000808A50018215A0018189400081094004263 - 5A0039524A003142420039393900A5A5A500FFFFFF00FF00FF00FF00FF00F7F7 - F700A5A5A5009CA59C004A737B000000AD000000AD0008089C00424A5A005A84 - 7B004A6B630039524A006B6B6B00C6C6C600FFFFFF00FF00FF00FF00FF00FFFF - FF0084848400BDC6C6007B949C002939AD000000AD000000AD00181894005A7B - 94005A847B0042635A00636B6B00CECECE00FF00FF00FF00FF00FF00FF00FF00 - FF00C6C6C600393994000808AD003942B500A5BDCE006B73AD000000AD000000 - AD0039529C004A6B63004A525200BDBDBD00FF00FF00FF00FF00FF00FF00EFEF - F7005252CE000000AD000000AD00BDCECE00C6D6D600C6DED600737B8C003142 - A5002939A50052736B00393939008C8C8C00EFEFEF00FF00FF008C8CDE001010 - B5000000AD000000AD009494DE00EFEFEF00A5BDB500B5CEC600A5BDBD007B9C - 9C005A7B730063736B00ADADAD0094949400EFEFEF00FF00FF000000B5000000 - AD001818B500BDBDEF00FF00FF00E7E7E7005A5A5A00849C9C0094B5AD00738C - 840039635A0063736B00EFEFEF00A5A5A500FF00FF00FF00FF00ADADE7009C9C - DE00F7F7FF00FF00FF00FF00FF00F7F7F700737373009CADAD0052848C007384 - 8400C6CECE00EFEFEF00FF00FF00EFEFEF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FFFFFF0094949400E7E7E700FFFFFF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00E7E7E700EFEFEF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} - end - object StopExecBtn: TSpeedButton - Left = 4 - Top = 26 - Width = 148 - Height = 20 - Action = actStopExecute - Flat = True - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000000000000000000000000000000000000FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FFFFFF00F7F7F700D6D6 - D600E7E7E700FF00FF00EFEFF700FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00EFEFEF00CECECE00ADADAD00ADADAD00A5A5 - A500737373009494AD00D6D6EF00FF00FF00FF00FF00FF00FF00FF00FF00EFEF - FF00F7F7FF00FFFFFF00D6D6D6009C9C9C00636363004A4A4A00313939005A5A - 5A003131840052528400E7E7E700FF00FF00FF00FF00FF00FF00FF00FF00E7E7 - E700A5A5C600C6C6D6005A635A00393939002929290021212100212929001821 - 520010107B004A4A5200C6C6C600F7F7F700FF00FF00FF00FF00FF00FF00EFEF - EF00636384004242A50021294A00182121003942390031393900212939000808 - 8C0021293100424242007B7B7B0094949400F7F7F700FF00FF00FF00FF00F7F7 - F7008C8C8C0039427B000000AD002931420031393900424252000000A5002131 - 63002939390039424200636363007B7B7B00F7F7F700FF00FF00FF00FF00FF00 - FF00CECECE0042524A0018298C000808A50018215A0018189400081094004263 - 5A0039524A003142420039393900A5A5A500FFFFFF00FF00FF00FF00FF00F7F7 - F700A5A5A5009CA59C004A737B000000AD000000AD0008089C00424A5A005A84 - 7B004A6B630039524A006B6B6B00C6C6C600FFFFFF00FF00FF00FF00FF00FFFF - FF0084848400BDC6C6007B949C002939AD000000AD000000AD00181894005A7B - 94005A847B0042635A00636B6B00CECECE00FF00FF00FF00FF00FF00FF00FF00 - FF00C6C6C600393994000808AD003942B500A5BDCE006B73AD000000AD000000 - AD0039529C004A6B63004A525200BDBDBD00FF00FF00FF00FF00FF00FF00EFEF - F7005252CE000000AD000000AD00BDCECE00C6D6D600C6DED600737B8C003142 - A5002939A50052736B00393939008C8C8C00EFEFEF00FF00FF008C8CDE001010 - B5000000AD000000AD009494DE00EFEFEF00A5BDB500B5CEC600A5BDBD007B9C - 9C005A7B730063736B00ADADAD0094949400EFEFEF00FF00FF000000B5000000 - AD001818B500BDBDEF00FF00FF00E7E7E7005A5A5A00849C9C0094B5AD00738C - 840039635A0063736B00EFEFEF00A5A5A500FF00FF00FF00FF00ADADE7009C9C - DE00F7F7FF00FF00FF00FF00FF00F7F7F700737373009CADAD0052848C007384 - 8400C6CECE00EFEFEF00FF00FF00EFEFEF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FFFFFF0094949400E7E7E700FFFFFF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00E7E7E700EFEFEF00FF00FF00FF00 - FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} - end - end - end object tabBacktrace: TTabSheet Caption = 'Stack Trace' ImageIndex = 1 @@ -605,6 +238,7 @@ item Caption = 'Line' end> + HideSelection = False ReadOnly = True RowSelect = True TabOrder = 0 @@ -621,7 +255,7 @@ Left = 0 Top = 0 Width = 610 - Height = 67 + Height = 66 Align = alClient Columns = < item @@ -705,7 +339,7 @@ Left = 0 Top = 0 Width = 618 - Height = 98 + Height = 97 Align = alClient BevelOuter = bvRaised BevelKind = bkSoft Index: debugger.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/debugger.pas,v retrieving revision 1.12.2.12 retrieving revision 1.12.2.13 diff -u -d -r1.12.2.12 -r1.12.2.13 --- debugger.pas 31 Oct 2006 13:10:13 -0000 1.12.2.12 +++ debugger.pas 6 Nov 2006 02:50:41 -0000 1.12.2.13 @@ -32,6 +32,8 @@ type AssemblySyntax = (asATnT, asIntel); + ContextData = (cdLocals, cdStackTrace, cdWatches); + ContextDataSet = set of ContextData; TCallback = procedure(Output: TStringList) of object; TRegisters = class @@ -174,15 +176,16 @@ procedure Go; virtual; abstract; procedure Pause; virtual; abstract; procedure Next; virtual; abstract; - procedure Step; virtual; abstract; //fDebugger.SendCommand(GDB_STEP, ''); - function GetVariableHint(name: string): string; virtual; abstract; //fDebugger.SendCommand(GDB_DISPLAY, fCurrentHint); + procedure Step; virtual; abstract; + procedure SetContext(frame: Integer); virtual; abstract; + function GetVariableHint(name: string): string; virtual; abstract; //Source lookup directories procedure AddIncludeDir(s: string); virtual; abstract; procedure ClearIncludeDirs; virtual; abstract; //Variable watches - procedure RefreshContext; virtual; abstract; + procedure RefreshContext(refresh: ContextDataSet = [cdLocals, cdStackTrace, cdWatches]); virtual; abstract; procedure AddWatch(varname: string); virtual; abstract; procedure RemoveWatch(varname: string); virtual; abstract; procedure ModifyVariable(varname, newvalue: string); virtual; abstract; @@ -230,7 +233,7 @@ procedure RefreshBreakpoint(var breakpoint: TBreakpoint); override; //Variable watches - procedure RefreshContext; override; + procedure RefreshContext(refresh: ContextDataSet = [cdLocals, cdStackTrace, cdWatches]); override; procedure AddWatch(varname: string); override; procedure RemoveWatch(varname: string); override; @@ -239,6 +242,7 @@ procedure Pause; override; procedure Next; override; procedure Step; override; + procedure SetContext(frame: Integer); override; function GetVariableHint(name: string): string; override; //Low-level stuff @@ -289,7 +293,7 @@ procedure RefreshBreakpoint(var breakpoint: TBreakpoint); override; //Variable watches - procedure RefreshContext; override; + procedure RefreshContext(refresh: ContextDataSet = [cdLocals, cdStackTrace, cdWatches]); override; procedure AddWatch(varname: string); override; procedure RemoveWatch(varname: string); override; procedure ModifyVariable(varname, newvalue: string); override; @@ -941,7 +945,7 @@ end; end; -procedure TCDBDebugger.RefreshContext; +procedure TCDBDebugger.RefreshContext(refresh: ContextDataSet); var I: Integer; Node: TTreeNode; @@ -951,17 +955,23 @@ Exit; //First send commands for stack tracing and locals - Command := TCommand.Create; - Command.Command := 'kp 512'; - Command.OnResult := OnCallStack; - QueueCommand(Command); - Command := TCommand.Create; - Command.Command := 'dv /i /t /v'; - Command.OnResult := OnLocals; - QueueCommand(Command); + if cdStackTrace in refresh then + begin + Command := TCommand.Create; + Command.Command := 'kp 512'; + Command.OnResult := OnCallStack; + QueueCommand(Command); + end; + if cdLocals in refresh then + begin + Command := TCommand.Create; + Command.Command := 'dv /i /t /v'; + Command.OnResult := OnLocals; + QueueCommand(Command); + end; //Then update the watches - if Assigned(DebugTree) then + if (cdWatches in refresh) and Assigned(DebugTree) then begin I := 0; while I < DebugTree.Items.Count do @@ -1419,6 +1429,12 @@ fBusy := False; end; +procedure TCDBDebugger.SetContext(frame: Integer); +begin + QueueCommand('.frame', IntToStr(frame)); + RefreshContext([cdLocals, cdWatches]); +end; + //------------------------------------------------------------------------------ // TGDBDebugger //------------------------------------------------------------------------------ |
From: Joel L. <lo...@us...> - 2006-11-06 02:21:42
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv27418 Modified Files: Tag: VC_Debugger CPUFrm.dfm CPUFrm.pas Log Message: -Made the radio button thing to be a RadioGroup since that more accurately represents the relationship between both radio buttons -Fixed the abstract error when using the CPU window with CDB (only GDB support AT&T and Intel syntaxes). Perhaps there is a better solution? Index: CPUFrm.dfm =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/CPUFrm.dfm,v retrieving revision 1.8.2.1 retrieving revision 1.8.2.2 diff -u -d -r1.8.2.1 -r1.8.2.2 --- CPUFrm.dfm 26 Oct 2006 08:33:15 -0000 1.8.2.1 +++ CPUFrm.dfm 6 Nov 2006 02:21:39 -0000 1.8.2.2 @@ -84,43 +84,13 @@ end> end end - object gbSyntax: TGroupBox - Left = 417 - Top = 8 - Width = 137 - Height = 57 - Anchors = [akTop, akRight] - Caption = 'Assembler Syntax :' - TabOrder = 1 - object rbIntel: TRadioButton - Tag = 1 - Left = 80 - Top = 24 - Width = 49 - Height = 17 - Caption = 'Intel' - TabOrder = 0 - OnClick = rbSyntaxClick - end - object rbATT: TRadioButton - Left = 16 - Top = 24 - Width = 57 - Height = 17 - Caption = 'AT&&T' - Checked = True - TabOrder = 1 - TabStop = True - OnClick = rbSyntaxClick - end - end object CloseBtn: TBitBtn Left = 417 Top = 417 Width = 137 Height = 25 Anchors = [akRight, akBottom] - TabOrder = 2 + TabOrder = 1 Kind = bkClose end object gbRegisters: TGroupBox @@ -130,7 +100,7 @@ Height = 337 Anchors = [akTop, akRight] Caption = 'Registers :' - TabOrder = 3 + TabOrder = 2 object lblEIP: TLabel Left = 8 Top = 212 @@ -327,6 +297,19 @@ TabOrder = 12 end end + object rgSyntax: TRadioGroup + Left = 418 + Top = 8 + Width = 137 + Height = 57 + Caption = 'Assembly Syntax' + ItemIndex = 0 + Items.Strings = ( + 'Intel' + 'AT&&T') + TabOrder = 3 + OnClick = rgSyntaxClick + end object XPMenu: TXPMenu DimLevel = 30 GrayLevel = 10 Index: CPUFrm.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/CPUFrm.pas,v retrieving revision 1.8.2.2 retrieving revision 1.8.2.3 diff -u -d -r1.8.2.2 -r1.8.2.3 --- CPUFrm.pas 28 Oct 2006 04:48:32 -0000 1.8.2.2 +++ CPUFrm.pas 6 Nov 2006 02:21:39 -0000 1.8.2.3 @@ -25,7 +25,7 @@ {$IFDEF WIN32} Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, SynEdit, XPMenu, debugger, - SynEditHighlighter, SynHighlighterAsm; + SynEditHighlighter, SynHighlighterAsm, ExtCtrls; {$ENDIF} {$IFDEF LINUX} SysUtils, Variants, Classes, QGraphics, QControls, QForms, @@ -35,9 +35,6 @@ type TCPUForm = class(TForm) gbAsm: TGroupBox; - gbSyntax: TGroupBox; - rbIntel: TRadioButton; - rbATT: TRadioButton; CloseBtn: TBitBtn; edFunc: TEdit; lblFunc: TLabel; @@ -71,10 +68,11 @@ ESText: TEdit; XPMenu: TXPMenu; SynAsmSyn1: TSynAsmSyn; + rgSyntax: TRadioGroup; procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure rbSyntaxClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure edFuncKeyPress(Sender: TObject; var Key: Char); + procedure rgSyntaxClick(Sender: TObject); private ActiveLine: integer; @@ -120,7 +118,7 @@ with Lang do begin Caption := Strings[ID_CPU_CAPTION]; gbAsm.Caption := Strings[ID_CPU_ASMCODE]; - gbSyntax.Caption := Strings[ID_CPU_SYNTAX]; + rgSyntax.Caption := Strings[ID_CPU_SYNTAX]; gbRegisters.Caption := Strings[ID_CPU_REGISTERS]; lblFunc.Caption := Strings[ID_CPU_FUNC]; CloseBtn.Caption := Strings[ID_BTN_CLOSE]; @@ -134,31 +132,41 @@ CPUForm := nil; end; -procedure TCPUForm.edFuncKeyPress(Sender: TObject; var Key: Char); -begin - if (Key = #13) and fDebugger.Executing then - fDebugger.Disassemble(edFunc.Text); -end; - -procedure TCPUForm.rbSyntaxClick(Sender: TObject); -var - cb : TCheckBox; +procedure TCPUForm.rgSyntaxClick(Sender: TObject); begin - cb := TCheckBox(sender); if fDebugger.Executing then begin - if cb.Tag = 0 then - fDebugger.SetAssemblySyntax(asATnT) + if TRadioGroup(Sender).ItemIndex = 0 then + fDebugger.SetAssemblySyntax(asIntel) else - fDebugger.SetAssemblySyntax(asIntel); + fDebugger.SetAssemblySyntax(asATnT); //Reload the disassembly fDebugger.Disassemble; end; end; +procedure TCPUForm.edFuncKeyPress(Sender: TObject; var Key: Char); +begin + if (Key = #13) and fDebugger.Executing then + fDebugger.Disassemble(edFunc.Text); +end; + procedure TCPUForm.PopulateRegisters(debugger: TDebugger); begin + //Set the assembly syntax to be Intel's syntax (we ARE on x86, after all!) + //Now, some debuggers do not support the changing of assembly syntaxes and + //only support Intel's assembly syntax. So we surround the entire function with + //a try-catch, if we catch an AbstractError we disable the syntax switching radio group. +{$WARNINGS OFF (EAbstractError is specific to a platform)} + try + debugger.SetAssemblySyntax(asIntel); + except + on E: EAbstractError do + rgSyntax.Enabled := False; + end; +{$WARNINGS ON} + fDebugger := debugger; fDebugger.OnRegisters := OnRegisters; fDebugger.OnDisassemble := OnDisassembly; |
From: Joel L. <lo...@us...> - 2006-11-06 02:10:57
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv22885 Modified Files: Tag: VC_Debugger main.pas Log Message: Merged changes from HEAD. Index: main.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/main.pas,v retrieving revision 1.79.4.4 retrieving revision 1.79.4.5 diff -u -d -r1.79.4.4 -r1.79.4.5 --- main.pas 1 Nov 2006 08:22:17 -0000 1.79.4.4 +++ main.pas 6 Nov 2006 02:10:53 -0000 1.79.4.5 @@ -7580,6 +7580,10 @@ actProjectManagerExecute(nil); end; LeftPageControl.ActivePageIndex := 0; + if frmProjMgrDock.Visible = false then + begin + FloatingProjectManagerItemClick(FloatingProjectManagerItem); + end; ProjectView.SetFocus; end; @@ -7766,6 +7770,11 @@ actProjectManagerExecute(nil); end; LeftPageControl.ActivePageIndex := 1; + if frmProjMgrDock.Visible = false then + begin + FloatingProjectManagerItemClick(FloatingProjectManagerItem); + end; + if ClassBrowser1.Visible And ClassBrowser1.Enabled then ClassBrowser1.SetFocus; end; @@ -9735,16 +9744,16 @@ if Assigned(e) then begin if UpperCase(SelectedComponent.ClassName) = UpperCase('TFrmNewForm') then - GenerateXPMDirectly(TFrmNewForm(TJvInspectorPropData(JvInspProperties.Selected.Data).Instance).Wx_ICON.Bitmap,e.GetDesigner.Wx_Name,e.FileName); + GenerateXPMDirectly(TFrmNewForm(TJvInspectorPropData(JvInspProperties.Selected.Data).Instance).Wx_ICON.Bitmap,e.GetDesigner.Wx_Name,'Self',e.FileName); if UpperCase(SelectedComponent.ClassName) = UpperCase('TWxStaticBitmap') then - GenerateXPMDirectly(TWxStaticBitmap(TJvInspectorPropData(JvInspProperties.Selected.Data).Instance).Picture.Bitmap,SelectedComponent.Name,e.FileName); + GenerateXPMDirectly(TWxStaticBitmap(TJvInspectorPropData(JvInspProperties.Selected.Data).Instance).Picture.Bitmap,SelectedComponent.Name,e.GetDesigner.Wx_Name,e.FileName); if UpperCase(SelectedComponent.ClassName) = UpperCase('TWxBitmapButton') then - GenerateXPMDirectly(TWxBitmapButton(TJvInspectorPropData(JvInspProperties.Selected.Data).Instance).Wx_Bitmap.Bitmap,SelectedComponent.Name,e.FileName); + GenerateXPMDirectly(TWxBitmapButton(TJvInspectorPropData(JvInspProperties.Selected.Data).Instance).Wx_Bitmap.Bitmap,SelectedComponent.Name,e.GetDesigner.Wx_Name,e.FileName); if UpperCase(SelectedComponent.ClassName) = UpperCase('TWxToolButton') then - GenerateXPMDirectly(TWxToolButton(TJvInspectorPropData(JvInspProperties.Selected.Data).Instance).Wx_Bitmap.Bitmap,SelectedComponent.Name,e.FileName); + GenerateXPMDirectly(TWxToolButton(TJvInspectorPropData(JvInspProperties.Selected.Data).Instance).Wx_Bitmap.Bitmap,SelectedComponent.Name,e.GetDesigner.Wx_Name,e.FileName); end; end; end; @@ -9793,7 +9802,7 @@ begin MessageDlg('Contructor Function(in Header) or Sometimes all the Functions(in Source) might not be renamed. '+#13+#10+''+#13+#10+'Please rename them manually.'+#13+#10+''+#13+#10+'We hope to fix this bug asap.'+#13+#10+'Sorry for the trouble.', mtInformation, [mbOK], 0); strDirName:=IncludeTrailingBackslash(ExtractFileDir(e.FileName)); - RenameFile(strDirName+'\'+PreviousStringValue+'_XPM.xpm',strDirName+'\'+TfrmNewForm(comp).Wx_Name+'_XPM.xpm'); + RenameFile(strDirName+'\'+'Self_'+PreviousStringValue+'_XPM.xpm',strDirName+'\'+'Self_'+TfrmNewForm(comp).Wx_Name+'_XPM.xpm'); GenerateXPM(e.GetDesigner,e.FileName,true); end; finally |
From: Joel L. <lo...@us...> - 2006-11-06 02:09:42
|
Update of /cvsroot/wxdsgn/wxdevcpp/source In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv22438 Modified Files: Tag: VC_Debugger editor.pas Log Message: Fixed all the quirks with the matching bracket highlighting (false background colours, strange foreground colours etc). Also added support for the Selected line's background colour Index: editor.pas =================================================================== RCS file: /cvsroot/wxdsgn/wxdevcpp/source/editor.pas,v retrieving revision 1.30.2.5 retrieving revision 1.30.2.6 diff -u -d -r1.30.2.5 -r1.30.2.6 --- editor.pas 30 Oct 2006 08:52:58 -0000 1.30.2.5 +++ editor.pas 6 Nov 2006 02:09:36 -0000 1.30.2.6 @@ -2029,7 +2029,6 @@ procedure TEditor.PaintMatchingBrackets(TransientType: TTransientType); const - BracketSet = ['{', '[', '(', '}', ']', ')']; OpenChars: array[0..2] of Char = ('{', '[', '('); CloseChars: array[0..2] of Char = ('}', ']', ')'); @@ -2038,30 +2037,87 @@ Result:= fText.RowColumnToPixels(fText.BufferToDisplayPos(p)); end; + procedure SetColors(Editor: TSynEdit; virtualCoord: TBufferCoord; Attri: TSynHighlighterAttributes); + function GetEditorBackgroundColor: TColor; + var + Attri: TSynHighlighterAttributes; + PhysicalIndex: Integer; + begin + PhysicalIndex := Editor.RowColToCharIndex(virtualCoord); + + //Start by checking for selections + if (PhysicalIndex >= Editor.SelStart) and (PhysicalIndex < Editor.SelEnd) then + Result := Editor.SelectedColor.Background + else if (Editor.ActiveLineColor <> clNone) and (Editor.CaretY = virtualCoord.Line) then + Result := Editor.ActiveLineColor + else + begin + Result := Editor.Color; + if Editor.Highlighter <> nil then + begin + Attri := Editor.Highlighter.WhitespaceAttribute; + if (Attri <> nil) and (Attri.Background <> clNone) then + Result := Attri.Background; + end; + end; + end; + + function GetEditorForegroundColor: TColor; + var + PhysicalIndex: Integer; + begin + PhysicalIndex := Editor.RowColToCharIndex(virtualCoord); + + //Start by checking for selections + if (PhysicalIndex >= Editor.SelStart) and (PhysicalIndex < Editor.SelEnd) then + Result := Editor.SelectedColor.Foreground + else + Result := Editor.Font.Color; + end; + var + Special: Boolean; + Foreground, Background: TColor; + begin + //Initialize the editor colors to defaults + Foreground := GetEditorForegroundColor; + Background := GetEditorBackgroundColor; + + Editor.OnSpecialLineColors(Self, virtualCoord.Line, Special, Foreground, Background); + Editor.Canvas.Brush.Style := bsSolid; + Editor.Canvas.Font.Assign(fText.Font); + Editor.Canvas.Font.Style := Attri.Style; + if TransientType = ttAfter then + fText.Canvas.Font.Style := Editor.Canvas.Font.Style + [fsBold]; + + Editor.Canvas.Brush.Color := Background; + Editor.Canvas.Font.Color := Foreground; + end; + var - P: TBufferCoord; - Pix: TPoint; - S: String; + P: TBufferCoord; + Pix: TPoint; + S: String; I: Integer; Attri: TSynHighlighterAttributes; begin P := fText.CaretXY; fText.GetHighlighterAttriAtRowCol(P, S, Attri); if Assigned(Attri) and (fText.Highlighter.SymbolAttribute = Attri) and - (fText.CaretX<=length(fText.LineText) + 1) then begin - for i := 0 to 2 do begin - if (S = OpenChars[i]) or (S = CloseChars[i]) then begin + (fText.CaretX <= length(fText.LineText) + 1) then + begin + for i := 0 to 2 do + begin + if (S = OpenChars[i]) or (S = CloseChars[i]) then + begin + //Draw the brackets + SetColors(fText, P, Attri); Pix := CharToPixels(P); - fText.Canvas.Brush.Style := bsSolid; - fText.Canvas.Font.Assign(fText.Font); - fText.Canvas.Font.Style := Attri.Style; - - if (TransientType = ttAfter) then - fText.Canvas.Font.Style := [fsBold]; fText.Canvas.TextOut(Pix.X, Pix.Y, S); - P := fText.GetMatchingBracketEx(P); - if (P.Char > 0) and (P.Line > 0) then begin + P := fText.GetMatchingBracketEx(P); + if (P.Char > 0) and (P.Line > 0) then + begin + SetColors(fText, P, Attri); Pix := CharToPixels(P); if S = OpenChars[i] then fText.Canvas.TextOut(Pix.X, Pix.Y, CloseChars[i]) @@ -2085,17 +2141,12 @@ procedure TEditor.FunctionArgsExecute(Kind: SynCompletionType; Sender: TObject; var AString: String; var x, y: Integer; var CanExecute: Boolean); var + TmpX, savepos, StartX, ParenCounter: Integer; locline, lookup: String; - TmpX, savepos, StartX, - ParenCounter{, - TmpLocation} : Integer; FoundMatch: Boolean; - {P: PStatement;} sl: TList; begin - sl := nil; - {P := nil;} try with TSynCompletionProposal(Sender).Editor do begin @@ -2108,14 +2159,13 @@ else dec(TmpX); FoundMatch := False; - {TmpLocation := 0;} + while (TmpX > 0) and not (FoundMatch) do begin - if LocLine[TmpX] = ',' then begin - {inc(TmpLocation);} - dec(TmpX); - end - else if LocLine[TmpX] = ')' then begin + if LocLine[TmpX] = ',' then + Dec(TmpX) + else if LocLine[TmpX] = ')' then + begin //We found a close, go till it's opening paren ParenCounter := 1; dec(TmpX); @@ -2146,7 +2196,6 @@ sl := fLastParamFunc; end; if not Assigned(sl) then begin - //P:=MainForm.CppParser1.Locate(lookup, False); // we should really avoid a Locate for each char typed, this call takes a long time to execute when the cache is huge sl := TList.Create; if MainForm.CppParser1.FillListOf(Lookup, False, sl) then begin // and try to use only a minimum of FillListOf if Assigned(fLastParamFunc) then |