diff --git a/debugger/breakpointsdlg.lfm b/debugger/breakpointsdlg.lfm index e88135f0cb..32b369c91c 100644 --- a/debugger/breakpointsdlg.lfm +++ b/debugger/breakpointsdlg.lfm @@ -2,6 +2,7 @@ object BreakpointsDlg: TBreakpointsDlg CAPTION = 'Breakpoint list' CLIENTHEIGHT = 205 CLIENTWIDTH = 629 + ONCREATE = BreakpointsDlgCREATE VISIBLE = True HORZSCROLLBAR.PAGE = 630 VERTSCROLLBAR.PAGE = 206 @@ -11,7 +12,6 @@ object BreakpointsDlg: TBreakpointsDlg WIDTH = 629 HELPTYPE = htkeyword object lvBreakPoints: TLISTVIEW - ALIGN = alclient ANCHORS = [aktop, akleft] COLUMNS = < item @@ -55,14 +55,16 @@ object BreakpointsDlg: TBreakpointsDlg ONCLICK = lvBreakPointsClick ONDBLCLICK = lvBreakPointsDBLCLICK ONSELECTITEM = lvBreakPointsSelectItem + LEFT = 72 HEIGHT = 205 - WIDTH = 629 + TOP = 2 + WIDTH = 557 HELPTYPE = htkeyword end object mnuPopup: TPOPUPMENU ONPOPUP = mnuPopupPopup - left = 100 - top = 96 + left = 24 + top = 8 object popAdd: TMENUITEM CAPTION = 'Add...' object popAddSourceBP: TMENUITEM @@ -102,5 +104,20 @@ object BreakpointsDlg: TBreakpointsDlg CAPTION = '&Delete All' ONCLICK = popDeleteAllClick end + object N3: TMENUITEM + CAPTION = '-' + end + object popDisableAllSameSource: TMENUITEM + CAPTION = 'Disable All in same source' + ONCLICK = popDisableAllSameSourceCLICK + end + object popEnableAllSameSource: TMENUITEM + CAPTION = 'Enable All in same source' + ONCLICK = popEnableAllSameSourceCLICK + end + object popDeleteAllSameSource: TMENUITEM + CAPTION = 'Delete All in same source' + ONCLICK = popDeleteAllSameSourceCLICK + end end end diff --git a/debugger/breakpointsdlg.lrs b/debugger/breakpointsdlg.lrs index 7c11ed09e6..99d88c441d 100644 --- a/debugger/breakpointsdlg.lrs +++ b/debugger/breakpointsdlg.lrs @@ -2,30 +2,36 @@ LazarusResources.Add('TBreakpointsDlg','FORMDATA',[ 'TPF0'#15'TBreakpointsDlg'#14'BreakpointsDlg'#7'CAPTION'#6#15'Breakpoint list' - +#12'CLIENTHEIGHT'#3#205#0#11'CLIENTWIDTH'#3'u'#2#7'VISIBLE'#9#18'HORZSCROLLB' - +'AR.PAGE'#3'v'#2#18'VERTSCROLLBAR.PAGE'#3#206#0#4'LEFT'#3'T'#1#6'HEIGHT'#3 - +#205#0#3'TOP'#2'u'#5'WIDTH'#3'u'#2#8'HELPTYPE'#7#9'htkeyword'#0#9'TLISTVIEW' - +#13'lvBreakPoints'#5'ALIGN'#7#8'alclient'#7'ANCHORS'#11#5'aktop'#6'akleft'#0 - +#7'COLUMNS'#14#1#7'CAPTION'#6#5'State'#7'VISIBLE'#9#5'WIDTH'#2'2'#0#1#7'CAPT' - +'ION'#6#16'Filename/Address'#7'VISIBLE'#9#5'WIDTH'#3#150#0#0#1#7'CAPTION'#6 - +#11'Line/Length'#7'VISIBLE'#9#5'WIDTH'#2'd'#0#1#7'CAPTION'#6#9'Condition'#7 - +'VISIBLE'#9#5'WIDTH'#2'K'#0#1#7'CAPTION'#6#6'Action'#7'VISIBLE'#9#5'WIDTH'#2 - +'2'#0#1#7'CAPTION'#6#10'Pass Count'#7'VISIBLE'#9#5'WIDTH'#2'd'#0#1#7'CAPTION' - +#6#5'Group'#7'VISIBLE'#9#5'WIDTH'#2'2'#0#0#11'MULTISELECT'#9#9'POPUPMENU'#7#8 - +'mnuPopup'#9'VIEWSTYLE'#7#8'vsreport'#7'ONCLICK'#7#18'lvBreakPointsClick'#10 - +'ONDBLCLICK'#7#21'lvBreakPointsDBLCLICK'#12'ONSELECTITEM'#7#23'lvBreakPoints' - +'SelectItem'#6'HEIGHT'#3#205#0#5'WIDTH'#3'u'#2#8'HELPTYPE'#7#9'htkeyword'#0#0 - +#10'TPOPUPMENU'#8'mnuPopup'#7'ONPOPUP'#7#13'mnuPopupPopup'#4'left'#2'd'#3'to' - +'p'#2'`'#0#9'TMENUITEM'#6'popAdd'#7'CAPTION'#6#6'Add...'#0#9'TMENUITEM'#14'p' - +'opAddSourceBP'#7'CAPTION'#6#18'&Source breakpoint'#7'ENABLED'#8#7'ONCLICK'#7 - +#19'popAddSourceBPClick'#0#0#0#9'TMENUITEM'#2'N1'#7'CAPTION'#6#1'-'#0#0#9'TM' - +'ENUITEM'#13'popProperties'#7'CAPTION'#6#11'&Properties'#7'ONCLICK'#7#18'pop' - +'PropertiesClick'#0#0#9'TMENUITEM'#10'popEnabled'#7'CAPTION'#6#8'&Enabled'#19 - +'SHOWALWAYSCHECKABLE'#9#7'ONCLICK'#7#15'popEnabledClick'#0#0#9'TMENUITEM'#9 - +'popDelete'#7'CAPTION'#6#7'&Delete'#7'ONCLICK'#7#14'popDeleteClick'#0#0#9'TM' - +'ENUITEM'#2'N2'#7'CAPTION'#6#1'-'#0#0#9'TMENUITEM'#13'popDisableAll'#7'CAPTI' - +'ON'#6#12'D&isable All'#7'ONCLICK'#7#18'popDisableAllClick'#0#0#9'TMENUITEM' - +#12'popEnableAll'#7'CAPTION'#6#11'&Enable All'#7'ONCLICK'#7#17'popEnableAllC' - +'lick'#0#0#9'TMENUITEM'#12'popDeleteAll'#7'CAPTION'#6#11'&Delete All'#7'ONCL' - +'ICK'#7#17'popDeleteAllClick'#0#0#0#0 + +#12'CLIENTHEIGHT'#3#205#0#11'CLIENTWIDTH'#3'u'#2#8'ONCREATE'#7#20'Breakpoint' + +'sDlgCREATE'#7'VISIBLE'#9#18'HORZSCROLLBAR.PAGE'#3'v'#2#18'VERTSCROLLBAR.PAG' + +'E'#3#206#0#4'LEFT'#3'T'#1#6'HEIGHT'#3#205#0#3'TOP'#2'u'#5'WIDTH'#3'u'#2#8'H' + +'ELPTYPE'#7#9'htkeyword'#0#9'TLISTVIEW'#13'lvBreakPoints'#7'ANCHORS'#11#5'ak' + +'top'#6'akleft'#0#7'COLUMNS'#14#1#7'CAPTION'#6#5'State'#7'VISIBLE'#9#5'WIDTH' + +#2'2'#0#1#7'CAPTION'#6#16'Filename/Address'#7'VISIBLE'#9#5'WIDTH'#3#150#0#0#1 + +#7'CAPTION'#6#11'Line/Length'#7'VISIBLE'#9#5'WIDTH'#2'd'#0#1#7'CAPTION'#6#9 + +'Condition'#7'VISIBLE'#9#5'WIDTH'#2'K'#0#1#7'CAPTION'#6#6'Action'#7'VISIBLE' + +#9#5'WIDTH'#2'2'#0#1#7'CAPTION'#6#10'Pass Count'#7'VISIBLE'#9#5'WIDTH'#2'd'#0 + +#1#7'CAPTION'#6#5'Group'#7'VISIBLE'#9#5'WIDTH'#2'2'#0#0#11'MULTISELECT'#9#9 + +'POPUPMENU'#7#8'mnuPopup'#9'VIEWSTYLE'#7#8'vsreport'#7'ONCLICK'#7#18'lvBreak' + +'PointsClick'#10'ONDBLCLICK'#7#21'lvBreakPointsDBLCLICK'#12'ONSELECTITEM'#7 + +#23'lvBreakPointsSelectItem'#4'LEFT'#2'H'#6'HEIGHT'#3#205#0#3'TOP'#2#2#5'WID' + +'TH'#3'-'#2#8'HELPTYPE'#7#9'htkeyword'#0#0#10'TPOPUPMENU'#8'mnuPopup'#7'ONPO' + +'PUP'#7#13'mnuPopupPopup'#4'left'#2#24#3'top'#2#8#0#9'TMENUITEM'#6'popAdd'#7 + +'CAPTION'#6#6'Add...'#0#9'TMENUITEM'#14'popAddSourceBP'#7'CAPTION'#6#18'&Sou' + +'rce breakpoint'#7'ENABLED'#8#7'ONCLICK'#7#19'popAddSourceBPClick'#0#0#0#9'T' + +'MENUITEM'#2'N1'#7'CAPTION'#6#1'-'#0#0#9'TMENUITEM'#13'popProperties'#7'CAPT' + +'ION'#6#11'&Properties'#7'ONCLICK'#7#18'popPropertiesClick'#0#0#9'TMENUITEM' + +#10'popEnabled'#7'CAPTION'#6#8'&Enabled'#19'SHOWALWAYSCHECKABLE'#9#7'ONCLICK' + +#7#15'popEnabledClick'#0#0#9'TMENUITEM'#9'popDelete'#7'CAPTION'#6#7'&Delete' + +#7'ONCLICK'#7#14'popDeleteClick'#0#0#9'TMENUITEM'#2'N2'#7'CAPTION'#6#1'-'#0#0 + +#9'TMENUITEM'#13'popDisableAll'#7'CAPTION'#6#12'D&isable All'#7'ONCLICK'#7#18 + +'popDisableAllClick'#0#0#9'TMENUITEM'#12'popEnableAll'#7'CAPTION'#6#11'&Enab' + +'le All'#7'ONCLICK'#7#17'popEnableAllClick'#0#0#9'TMENUITEM'#12'popDeleteAll' + +#7'CAPTION'#6#11'&Delete All'#7'ONCLICK'#7#17'popDeleteAllClick'#0#0#9'TMENU' + +'ITEM'#2'N3'#7'CAPTION'#6#1'-'#0#0#9'TMENUITEM'#23'popDisableAllSameSource'#7 + +'CAPTION'#6#26'Disable All in same source'#7'ONCLICK'#7#28'popDisableAllSame' + +'SourceCLICK'#0#0#9'TMENUITEM'#22'popEnableAllSameSource'#7'CAPTION'#6#25'En' + +'able All in same source'#7'ONCLICK'#7#27'popEnableAllSameSourceCLICK'#0#0#9 + +'TMENUITEM'#22'popDeleteAllSameSource'#7'CAPTION'#6#25'Delete All in same so' + +'urce'#7'ONCLICK'#7#27'popDeleteAllSameSourceCLICK'#0#0#0#0 ]); diff --git a/debugger/breakpointsdlg.pp b/debugger/breakpointsdlg.pp index f943e9e444..cb5fd733f5 100644 --- a/debugger/breakpointsdlg.pp +++ b/debugger/breakpointsdlg.pp @@ -60,12 +60,20 @@ type popDisableAll: TMenuItem; popEnableAll: TMenuItem; popDeleteAll: TMenuItem; + N3: TMenuItem; //-------------- + popDisableAllSameSource: TMenuItem; + popEnableAllSameSource: TMenuItem; + popDeleteAllSameSource: TMenuItem; + procedure BreakpointsDlgCREATE(Sender: TObject); procedure lvBreakPointsClick(Sender: TObject); procedure lvBreakPointsDBLCLICK(Sender: TObject); procedure lvBreakPointsSelectItem(Sender: TObject; AItem: TListItem; Selected: Boolean); procedure mnuPopupPopup(Sender: TObject); procedure popAddSourceBPClick(Sender: TObject); + procedure popDeleteAllSameSourceCLICK(Sender: TObject); + procedure popDisableAllSameSourceCLICK(Sender: TObject); + procedure popEnableAllSameSourceCLICK(Sender: TObject); procedure popPropertiesClick(Sender: TObject); procedure popEnabledClick(Sender: TObject); procedure popDeleteClick(Sender: TObject); @@ -212,6 +220,11 @@ procedure TBreakPointsDlg.lvBreakPointsClick(Sender: TObject); begin end; +procedure TBreakPointsDlg.BreakpointsDlgCREATE(Sender: TObject); +begin + lvBreakPoints.Align:=alClient; +end; + procedure TBreakPointsDlg.lvBreakPointsDBLCLICK(Sender: TObject); begin DoJumpToCurrentBreakPoint; @@ -240,6 +253,12 @@ begin popEnabled.Checked := false; popDelete.Enabled := Enable; + // 'All in same source' menuitems + popDisableAllSameSource.Enabled := Enable; + popDeleteAllSameSource.Enabled := Enable; + popEnableAllSameSource.Enabled := Enable; + + // 'All' menuitems Enable := lvBreakPoints.Items.Count>0; popDisableAll.Enabled := Enable; popDeleteAll.Enabled := Enable; @@ -250,10 +269,78 @@ procedure TBreakPointsDlg.popAddSourceBPClick(Sender: TObject); begin end; +procedure TBreakPointsDlg.popDeleteAllSameSourceCLICK(Sender: TObject); +var + n: Integer; + Item: TListItem; + CurItem: TListItem; + CurBreakPoint: TIDEBreakPoint; + Filename: String; +begin + CurItem:=lvBreakPoints.Selected; + if (CurItem=nil) then exit; + Filename:=TIDEBreakpoint(CurItem.Data).Source; + if MessageDlg('Delete all breakpoints?', + 'Delete all breakpoints in file "'+Filename+'"?', + mtConfirmation,[mbYes,mbCancel],0)<>mrYes + then exit; + for n := lvBreakPoints.Items.Count - 1 downto 0 do + begin + Item := lvBreakPoints.Items[n]; + CurBreakPoint:=TIDEBreakPoint(Item.Data); + if CompareFilenames(CurBreakPoint.Source,Filename)=0 + then CurBreakPoint.Free; + end; +end; + +procedure TBreakPointsDlg.popDisableAllSameSourceCLICK(Sender: TObject); +var + n: Integer; + Item: TListItem; + CurItem: TListItem; + CurBreakPoint: TIDEBreakPoint; + Filename: String; +begin + CurItem:=lvBreakPoints.Selected; + if (CurItem=nil) then exit; + Filename:=TIDEBreakpoint(CurItem.Data).Source; + for n := 0 to lvBreakPoints.Items.Count - 1 do + begin + Item := lvBreakPoints.Items[n]; + CurBreakPoint:=TIDEBreakPoint(Item.Data); + if CompareFilenames(CurBreakPoint.Source,Filename)=0 + then CurBreakPoint.Enabled := False; + end; +end; + +procedure TBreakPointsDlg.popEnableAllSameSourceCLICK(Sender: TObject); +var + n: Integer; + Item: TListItem; + CurItem: TListItem; + CurBreakPoint: TIDEBreakPoint; + Filename: String; +begin + CurItem:=lvBreakPoints.Selected; + if (CurItem=nil) then exit; + Filename:=TIDEBreakpoint(CurItem.Data).Source; + for n := 0 to lvBreakPoints.Items.Count - 1 do + begin + Item := lvBreakPoints.Items[n]; + CurBreakPoint:=TIDEBreakPoint(Item.Data); + if CompareFilenames(CurBreakPoint.Source,Filename)=0 + then CurBreakPoint.Enabled := True; + end; +end; + procedure TBreakPointsDlg.popDeleteAllClick(Sender: TObject); var n: Integer; begin + if MessageDlg('Delete all breakpoints?', + 'Delete all breakpoints?', + mtConfirmation,[mbYes,mbCancel],0)<>mrYes + then exit; for n := lvBreakPoints.Items.Count - 1 downto 0 do TIDEBreakPoint(lvBreakPoints.Items[n].Data).Free; end; @@ -327,9 +414,9 @@ const // enabled valid DEBUG_STATE: array[Boolean, TValidState] of String = ( - {vsUnknown, vsValid, vsInvalid} - {Disabled} ('?', 'Disabled','Invalid'), - {Endabled} ('?', 'Enabled', 'Invalid')); + {vsUnknown, vsValid, vsInvalid} + {Disabled} ('? (Off)','Disabled','Invalid (Off)'), + {Endabled} ('? (On)', 'Enabled', 'Invalid (On)')); var Action: TIDEBreakPointAction; S: String; @@ -402,6 +489,9 @@ end. { ============================================================================= $Log$ + Revision 1.19 2003/06/03 11:20:12 mattias + implemented enable/disable/delete breakpoints in same source + Revision 1.18 2003/06/03 08:02:33 mattias implemented showing source lines in breakpoints dialog diff --git a/ide/outputfilter.pas b/ide/outputfilter.pas index 745efe2352..a042ee7e2f 100644 --- a/ide/outputfilter.pas +++ b/ide/outputfilter.pas @@ -144,7 +144,7 @@ end; function TOutputFilter.Execute(TheProcess: TProcess): boolean; const - BufSize = 100; + BufSize = 1000; var i, Count, LineStart : longint; OutputLine, Buf : String;