View Issue Details

IDProjectCategoryView StatusLast Update
0022196LazarusDebuggerpublic2012-06-11 14:59
ReporterLudo BrandsAssigned ToMartin Friebe 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version1.1 (SVN)Product Build 
Target Version1.2.0Fixed in Version1.1 (SVN) 
Summary0022196: [Patch] History for Evaluate/Modify window
DescriptionAttached patches add a history functionality to the Evaluate/Modify window. When enabled, the expression and result pairs are appended to the result memo. A configuration setting allows to insert new results before old results or append after. A separator creates a visual break between successive pairs and the marker before the expression changes in function of Evaluate or Modify action. Changing the history enable or the insert order clears the history.
The first patch has 2 check boxes to enable history keeping and insert order. The second one uses a 3 state button with hints to change the configuration. I'll leave the choice to the devs. The first is more explicit, the second more discreet and resizes better.
 
TagsNo tags attached.
Fixed in Revision37611
LazTarget1.2
Widgetset
Attached Files
  • evalhistory1.diff (7,260 bytes)
    Index: debuggerstrconst.pp
    ===================================================================
    --- debuggerstrconst.pp	(revision 37511)
    +++ debuggerstrconst.pp	(working copy)
    @@ -70,6 +70,8 @@
       drsInspectColWidthMethAddress = 'Method address column';
     
       drsUseInstanceClassType = 'Use Instance class type';
    +  drsEvalHistory          = 'Keep result history';
    +  dsrEvalHistoryTop       = 'Insert result at top';
       drsLen = 'Len=%d: ';
     
     
    Index: evaluatedlg.pp
    ===================================================================
    --- evaluatedlg.pp	(revision 37511)
    +++ evaluatedlg.pp	(working copy)
    @@ -47,6 +47,8 @@
       { TEvaluateDlg }
     
       TEvaluateDlg = class(TDebuggerDlg)
    +    chkHistory: TCheckBox;
    +    chkInsertOrder: TCheckBox;
         chkTypeCast: TCheckBox;
         cmbExpression: TComboBox;
         cmbNewValue: TComboBox;
    @@ -59,6 +61,8 @@
         tbWatch: TToolButton;
         tbModify: TToolButton;
         tbEvaluate: TToolButton;
    +    procedure chkHistoryChange(Sender: TObject);
    +    procedure chkInsertOrderChange(Sender: TObject);
         procedure cmbNewValueKeyDown(Sender: TObject; var Key: Word;
           Shift: TShiftState);
         procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    @@ -89,6 +93,10 @@
     
     var
       EvaluateDlgWindowCreator: TIDEWindowCreator;
    +const
    +  RESULTSEPARATOR='-----------';
    +  RESULTEVAL='>>>> ';
    +  RESULTMOD='<<>> ';
     
     { TEvaluateDlg }
     
    @@ -109,6 +117,8 @@
       Label2.Caption := lisDBGEMResult;
       lblNewValue.Caption := lisDBGEMNewValue;
       chkTypeCast.Caption := drsUseInstanceClassType;
    +  chkHistory.Caption := drsEvalHistory;
    +  chkInsertOrder.Caption := dsrEvalHistoryTop;
     
       ToolBar1.Images := IDEImages.Images_16;
       tbInspect.ImageIndex := IDEImages.LoadImage(16, 'debugger_inspect');
    @@ -142,7 +152,20 @@
       else
         tbModify.Enabled := False;
       FreeAndNil(DBGType);
    -  txtResult.Lines.Text := R;
    +  if chkHistory.Checked then
    +    begin
    +    if txtResult.Lines.Text='' then
    +      txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
    +    else
    +      if chkInsertOrder.Checked then
    +        txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
    +           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
    +      else
    +        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
    +           + RESULTEVAL+ S+':'+LineEnding+ R+LineEnding;
    +    end
    +  else
    +    txtResult.Lines.Text := R;
     end;
     
     procedure TEvaluateDlg.cmbExpressionChange(Sender: TObject);
    @@ -199,7 +222,20 @@
       DBGType:=nil;
       if not DebugBoss.Evaluate(S, R, DBGType) then Exit;
       FreeAndNil(DBGType);
    -  txtResult.Lines.Text := R;
    +  if chkHistory.Checked then
    +    begin
    +    if txtResult.Lines.Text='' then
    +      txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
    +    else
    +      if chkInsertOrder.Checked then
    +        txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
    +           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
    +      else
    +        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
    +           + RESULTMOD+ S+':'+LineEnding+ R+LineEnding;
    +    end
    +  else
    +    txtResult.Lines.Text := R;
     end;
     
     procedure TEvaluateDlg.FormClose(Sender: TObject; var CloseAction: TCloseAction);
    @@ -222,6 +258,17 @@
       end;
     end;
     
    +procedure TEvaluateDlg.chkHistoryChange(Sender: TObject);
    +begin
    +  chkInsertOrder.Enabled:=chkHistory.Checked;
    +  txtResult.Lines.Clear;
    +end;
    +
    +procedure TEvaluateDlg.chkInsertOrderChange(Sender: TObject);
    +begin
    +  txtResult.Lines.Clear;
    +end;
    +
     procedure TEvaluateDlg.FormShow(Sender: TObject);
     begin
       cmbExpression.SetFocus;
    Index: evaluatedlg.lfm
    ===================================================================
    --- evaluatedlg.lfm	(revision 37511)
    +++ evaluatedlg.lfm	(working copy)
    @@ -19,9 +19,9 @@
         AnchorSideTop.Control = ToolBar1
         AnchorSideTop.Side = asrBottom
         Left = 6
    -    Height = 16
    +    Height = 14
         Top = 47
    -    Width = 59
    +    Width = 57
         BorderSpacing.Left = 6
         BorderSpacing.Top = 3
         Caption = '&Expression:'
    @@ -33,9 +33,9 @@
         AnchorSideTop.Control = cmbExpression
         AnchorSideTop.Side = asrBottom
         Left = 6
    -    Height = 16
    -    Top = 95
    -    Width = 36
    +    Height = 14
    +    Top = 91
    +    Width = 35
         BorderSpacing.Left = 6
         BorderSpacing.Top = 6
         Caption = '&Result:'
    @@ -46,9 +46,9 @@
         AnchorSideLeft.Control = Owner
         AnchorSideBottom.Control = cmbNewValue
         Left = 6
    -    Height = 16
    -    Top = 242
    -    Width = 59
    +    Height = 14
    +    Top = 246
    +    Width = 55
         Anchors = [akLeft, akBottom]
         BorderSpacing.Left = 6
         BorderSpacing.Bottom = 3
    @@ -71,7 +71,7 @@
         TabOrder = 0
         TabStop = True
         object tbInspect: TToolButton
    -      Left = 154
    +      Left = 152
           Top = 2
           Caption = '&Inspect'
           Enabled = False
    @@ -79,7 +79,7 @@
           OnClick = tbInspectClick
         end
         object tbWatch: TToolButton
    -      Left = 104
    +      Left = 102
           Top = 2
           AllowAllUp = True
           Caption = '&Watch'
    @@ -88,7 +88,7 @@
           OnClick = tbWatchClick
         end
         object tbModify: TToolButton
    -      Left = 54
    +      Left = 52
           Top = 2
           Caption = '&Modify'
           Enabled = False
    @@ -111,14 +111,14 @@
         AnchorSideRight.Control = Owner
         AnchorSideRight.Side = asrBottom
         Left = 6
    -    Height = 23
    -    Top = 66
    +    Height = 21
    +    Top = 64
         Width = 388
         Anchors = [akTop, akLeft, akRight]
         BorderSpacing.Left = 6
         BorderSpacing.Top = 3
         BorderSpacing.Right = 6
    -    ItemHeight = 15
    +    ItemHeight = 13
         OnChange = cmbExpressionChange
         OnKeyDown = cmbExpressionKeyDown
         TabOrder = 2
    @@ -131,8 +131,8 @@
         AnchorSideRight.Side = asrBottom
         AnchorSideBottom.Control = lblNewValue
         Left = 6
    -    Height = 122
    -    Top = 114
    +    Height = 132
    +    Top = 108
         Width = 388
         Anchors = [akTop, akLeft, akRight, akBottom]
         BorderSpacing.Left = 6
    @@ -149,14 +149,14 @@
         AnchorSideBottom.Control = Owner
         AnchorSideBottom.Side = asrBottom
         Left = 6
    -    Height = 23
    -    Top = 261
    +    Height = 21
    +    Top = 263
         Width = 388
         Anchors = [akLeft, akRight, akBottom]
         BorderSpacing.Left = 6
         BorderSpacing.Right = 6
         BorderSpacing.Bottom = 6
    -    ItemHeight = 15
    +    ItemHeight = 13
         OnKeyDown = cmbNewValueKeyDown
         TabOrder = 3
       end
    @@ -165,10 +165,10 @@
         AnchorSideTop.Side = asrCenter
         AnchorSideRight.Control = Owner
         AnchorSideRight.Side = asrBottom
    -    Left = 306
    -    Height = 19
    +    Left = 312
    +    Height = 17
         Top = 46
    -    Width = 88
    +    Width = 82
         Anchors = [akTop, akRight]
         BorderSpacing.Right = 6
         Caption = 'chkTypeCast'
    @@ -176,4 +176,24 @@
         State = cbChecked
         TabOrder = 4
       end
    +  object chkInsertOrder: TCheckBox[8]
    +    Left = 301
    +    Height = 17
    +    Top = 88
    +    Width = 93
    +    Anchors = [akTop, akRight]
    +    Caption = 'chkInsertOrder'
    +    Enabled = False
    +    OnChange = chkInsertOrderChange
    +    TabOrder = 5
    +  end
    +  object chkHistory: TCheckBox[9]
    +    Left = 96
    +    Height = 17
    +    Top = 88
    +    Width = 70
    +    Caption = 'chkHistory'
    +    OnChange = chkHistoryChange
    +    TabOrder = 6
    +  end
     end
    
    evalhistory1.diff (7,260 bytes)
  • evalhistory2.diff (8,300 bytes)
    Index: debuggerstrconst.pp
    ===================================================================
    --- debuggerstrconst.pp	(revision 37511)
    +++ debuggerstrconst.pp	(working copy)
    @@ -70,6 +70,9 @@
       drsInspectColWidthMethAddress = 'Method address column';
     
       drsUseInstanceClassType = 'Use Instance class type';
    +  drsEvalHistoryNone      = 'No history kept';
    +  dsrEvalHistoryUp        = 'Insert result at top of history';
    +  dsrEvalHistoryDown      = 'Append result at bottom of history';
       drsLen = 'Len=%d: ';
     
     
    Index: evaluatedlg.pp
    ===================================================================
    --- evaluatedlg.pp	(revision 37511)
    +++ evaluatedlg.pp	(working copy)
    @@ -37,9 +37,9 @@
     interface
     
     uses
    -  Classes, SysUtils, LCLType, Forms,
    +  Classes, SysUtils, LCLType, Forms,LCLintf,
       IDEWindowIntf, IDEImagesIntf, LazarusIDEStrConsts,
    -  ComCtrls, StdCtrls, DebuggerDlg, BaseDebugManager,
    +  ComCtrls, StdCtrls, ExtCtrls, Arrow, DebuggerDlg, BaseDebugManager,
       InputHistory, IDEProcs, Debugger, DebuggerStrConst;
     
     type
    @@ -47,18 +47,22 @@
       { TEvaluateDlg }
     
       TEvaluateDlg = class(TDebuggerDlg)
    +    ArrHistory: TArrow;
         chkTypeCast: TCheckBox;
         cmbExpression: TComboBox;
         cmbNewValue: TComboBox;
         Label1: TLabel;
         Label2: TLabel;
         lblNewValue: TLabel;
    +    PnlHistory: TPanel;
         txtResult: TMemo;
         ToolBar1: TToolBar;
         tbInspect: TToolButton;
         tbWatch: TToolButton;
         tbModify: TToolButton;
         tbEvaluate: TToolButton;
    +    procedure ArrHistoryClick(Sender: TObject);
    +    procedure chkInsertOrderChange(Sender: TObject);
         procedure cmbNewValueKeyDown(Sender: TObject; var Key: Word;
           Shift: TShiftState);
         procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    @@ -89,6 +93,10 @@
     
     var
       EvaluateDlgWindowCreator: TIDEWindowCreator;
    +const
    +  RESULTSEPARATOR='-----------';
    +  RESULTEVAL='>>>> ';
    +  RESULTMOD='<<>> ';
     
     { TEvaluateDlg }
     
    @@ -109,6 +117,8 @@
       Label2.Caption := lisDBGEMResult;
       lblNewValue.Caption := lisDBGEMNewValue;
       chkTypeCast.Caption := drsUseInstanceClassType;
    +  ArrHistory.Hint:=drsEvalHistoryNone;
    +  ArrHistory.ShowHint:=true;
     
       ToolBar1.Images := IDEImages.Images_16;
       tbInspect.ImageIndex := IDEImages.LoadImage(16, 'debugger_inspect');
    @@ -142,7 +152,20 @@
       else
         tbModify.Enabled := False;
       FreeAndNil(DBGType);
    -  txtResult.Lines.Text := R;
    +  if ArrHistory.ArrowType<>atRight then
    +    begin
    +    if txtResult.Lines.Text='' then
    +      txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
    +    else
    +      if ArrHistory.ArrowType=atUp then
    +        txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
    +           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
    +      else
    +        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
    +           + RESULTEVAL+ S+':'+LineEnding+ R+LineEnding;
    +    end
    +  else
    +    txtResult.Lines.Text := R;
     end;
     
     procedure TEvaluateDlg.cmbExpressionChange(Sender: TObject);
    @@ -199,7 +222,20 @@
       DBGType:=nil;
       if not DebugBoss.Evaluate(S, R, DBGType) then Exit;
       FreeAndNil(DBGType);
    -  txtResult.Lines.Text := R;
    +  if ArrHistory.ArrowType<>atRight then
    +    begin
    +    if txtResult.Lines.Text='' then
    +      txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
    +    else
    +      if ArrHistory.ArrowType=atUp then
    +        txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
    +           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
    +      else
    +        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
    +           + RESULTMOD+ S+':'+LineEnding+ R+LineEnding;
    +    end
    +  else
    +    txtResult.Lines.Text := R;
     end;
     
     procedure TEvaluateDlg.FormClose(Sender: TObject; var CloseAction: TCloseAction);
    @@ -222,6 +258,35 @@
       end;
     end;
     
    +procedure TEvaluateDlg.ArrHistoryClick(Sender: TObject);
    +var
    +  CursorPos: TPoint;
    +begin
    +  case ArrHistory.ArrowType of
    +    atRight:begin
    +            ArrHistory.ArrowType:=atUp;
    +            ArrHistory.Hint:=dsrEvalHistoryUp;
    +            end;
    +    atUp:   begin
    +            ArrHistory.ArrowType:=atDown;
    +            ArrHistory.Hint:=dsrEvalHistoryDown;
    +            end;
    +    atDown: begin
    +            ArrHistory.ArrowType:=atRight;
    +            ArrHistory.Hint:=drsEvalHistoryNone;
    +            end;
    +  end;
    +  txtResult.Lines.Clear;
    +  ArrHistory.Invalidate;
    +  if GetCursorPos(CursorPos) then
    +    application.ActivateHint(CursorPos, True);
    +end;
    +
    +procedure TEvaluateDlg.chkInsertOrderChange(Sender: TObject);
    +begin
    +  txtResult.Lines.Clear;
    +end;
    +
     procedure TEvaluateDlg.FormShow(Sender: TObject);
     begin
       cmbExpression.SetFocus;
    Index: evaluatedlg.lfm
    ===================================================================
    --- evaluatedlg.lfm	(revision 37511)
    +++ evaluatedlg.lfm	(working copy)
    @@ -19,9 +19,9 @@
         AnchorSideTop.Control = ToolBar1
         AnchorSideTop.Side = asrBottom
         Left = 6
    -    Height = 16
    +    Height = 14
         Top = 47
    -    Width = 59
    +    Width = 57
         BorderSpacing.Left = 6
         BorderSpacing.Top = 3
         Caption = '&Expression:'
    @@ -33,9 +33,9 @@
         AnchorSideTop.Control = cmbExpression
         AnchorSideTop.Side = asrBottom
         Left = 6
    -    Height = 16
    -    Top = 95
    -    Width = 36
    +    Height = 14
    +    Top = 91
    +    Width = 35
         BorderSpacing.Left = 6
         BorderSpacing.Top = 6
         Caption = '&Result:'
    @@ -46,9 +46,9 @@
         AnchorSideLeft.Control = Owner
         AnchorSideBottom.Control = cmbNewValue
         Left = 6
    -    Height = 16
    -    Top = 242
    -    Width = 59
    +    Height = 14
    +    Top = 246
    +    Width = 55
         Anchors = [akLeft, akBottom]
         BorderSpacing.Left = 6
         BorderSpacing.Bottom = 3
    @@ -71,7 +71,7 @@
         TabOrder = 0
         TabStop = True
         object tbInspect: TToolButton
    -      Left = 154
    +      Left = 152
           Top = 2
           Caption = '&Inspect'
           Enabled = False
    @@ -79,7 +79,7 @@
           OnClick = tbInspectClick
         end
         object tbWatch: TToolButton
    -      Left = 104
    +      Left = 102
           Top = 2
           AllowAllUp = True
           Caption = '&Watch'
    @@ -88,7 +88,7 @@
           OnClick = tbWatchClick
         end
         object tbModify: TToolButton
    -      Left = 54
    +      Left = 52
           Top = 2
           Caption = '&Modify'
           Enabled = False
    @@ -111,14 +111,14 @@
         AnchorSideRight.Control = Owner
         AnchorSideRight.Side = asrBottom
         Left = 6
    -    Height = 23
    -    Top = 66
    +    Height = 21
    +    Top = 64
         Width = 388
         Anchors = [akTop, akLeft, akRight]
         BorderSpacing.Left = 6
         BorderSpacing.Top = 3
         BorderSpacing.Right = 6
    -    ItemHeight = 15
    +    ItemHeight = 13
         OnChange = cmbExpressionChange
         OnKeyDown = cmbExpressionKeyDown
         TabOrder = 2
    @@ -131,8 +131,8 @@
         AnchorSideRight.Side = asrBottom
         AnchorSideBottom.Control = lblNewValue
         Left = 6
    -    Height = 122
    -    Top = 114
    +    Height = 132
    +    Top = 108
         Width = 388
         Anchors = [akTop, akLeft, akRight, akBottom]
         BorderSpacing.Left = 6
    @@ -149,14 +149,14 @@
         AnchorSideBottom.Control = Owner
         AnchorSideBottom.Side = asrBottom
         Left = 6
    -    Height = 23
    -    Top = 261
    +    Height = 21
    +    Top = 263
         Width = 388
         Anchors = [akLeft, akRight, akBottom]
         BorderSpacing.Left = 6
         BorderSpacing.Right = 6
         BorderSpacing.Bottom = 6
    -    ItemHeight = 15
    +    ItemHeight = 13
         OnKeyDown = cmbNewValueKeyDown
         TabOrder = 3
       end
    @@ -165,10 +165,10 @@
         AnchorSideTop.Side = asrCenter
         AnchorSideRight.Control = Owner
         AnchorSideRight.Side = asrBottom
    -    Left = 306
    -    Height = 19
    +    Left = 312
    +    Height = 17
         Top = 46
    -    Width = 88
    +    Width = 82
         Anchors = [akTop, akRight]
         BorderSpacing.Right = 6
         Caption = 'chkTypeCast'
    @@ -176,4 +176,23 @@
         State = cbChecked
         TabOrder = 4
       end
    +  object PnlHistory: TPanel[8]
    +    Left = 374
    +    Height = 18
    +    Top = 89
    +    Width = 17
    +    Anchors = [akTop, akRight]
    +    Caption = 'PnlHistory'
    +    ClientHeight = 18
    +    ClientWidth = 17
    +    TabOrder = 5
    +    object ArrHistory: TArrow
    +      Left = 1
    +      Height = 15
    +      Top = 1
    +      Width = 15
    +      ArrowType = atRight
    +      OnClick = ArrHistoryClick
    +    end
    +  end
     end
    
    evalhistory2.diff (8,300 bytes)
  • evalhistory3.diff (13,239 bytes)
    Index: debugger/debuggerstrconst.pp
    ===================================================================
    --- debugger/debuggerstrconst.pp	(revision 37511)
    +++ debugger/debuggerstrconst.pp	(working copy)
    @@ -68,6 +68,9 @@
       drsInspectColWidthMethType = 'Method type column';
       drsInspectColWidthMethReturns = 'Method returns column';
       drsInspectColWidthMethAddress = 'Method address column';
    +  drsEvalHistoryNone      = 'No history kept';
    +  dsrEvalHistoryUp        = 'Insert result at top of history';
    +  dsrEvalHistoryDown      = 'Append result at bottom of history';
     
       drsUseInstanceClassType = 'Use Instance class type';
       drsLen = 'Len=%d: ';
    Index: debugger/evaluatedlg.pp
    ===================================================================
    --- debugger/evaluatedlg.pp	(revision 37511)
    +++ debugger/evaluatedlg.pp	(working copy)
    @@ -39,11 +39,14 @@
     uses
       Classes, SysUtils, LCLType, Forms,
       IDEWindowIntf, IDEImagesIntf, LazarusIDEStrConsts,
    -  ComCtrls, StdCtrls, DebuggerDlg, BaseDebugManager,
    +  ComCtrls, StdCtrls, Menus, DebuggerDlg, BaseDebugManager,
       InputHistory, IDEProcs, Debugger, DebuggerStrConst;
     
     type
     
    +  TEvalHistDirection=(EHDNone,EHDUp,EHDDown);
    +
    +
       { TEvaluateDlg }
     
       TEvaluateDlg = class(TDebuggerDlg)
    @@ -53,6 +56,12 @@
         Label1: TLabel;
         Label2: TLabel;
         lblNewValue: TLabel;
    +    MenuItem1: TMenuItem;
    +    MenuItem2: TMenuItem;
    +    MenuItem3: TMenuItem;
    +    mnuHistory: TPopupMenu;
    +    ToolButton1: TToolButton;
    +    tbHistory: TToolButton;
         txtResult: TMemo;
         ToolBar1: TToolBar;
         tbInspect: TToolButton;
    @@ -68,12 +77,16 @@
         procedure cmbExpressionChange(Sender: TObject);
         procedure cmbExpressionKeyDown(Sender: TObject; var Key: Word;
           Shift: TShiftState);
    +    procedure MenuItem1Click(Sender: TObject);
    +    procedure MenuItem2Click(Sender: TObject);
    +    procedure MenuItem3Click(Sender: TObject);
         procedure tbEvaluateClick(Sender: TObject);
         procedure tbInspectClick(Sender: TObject);
         procedure tbModifyClick(Sender: TObject);
         procedure tbWatchClick(Sender: TObject);
         
       private
    +    fHistDirection:TEvalHistDirection;
         function GetFindText: string;
         procedure SetFindText(const NewFindText: string);
         procedure Evaluate;
    @@ -90,6 +103,11 @@
     var
       EvaluateDlgWindowCreator: TIDEWindowCreator;
     
    +const
    +  RESULTSEPARATOR='-----------';
    +  RESULTEVAL='>>>> ';
    +  RESULTMOD='<<>> ';
    +
     { TEvaluateDlg }
     
     constructor TEvaluateDlg.Create(TheOwner:TComponent);
    @@ -109,12 +127,18 @@
       Label2.Caption := lisDBGEMResult;
       lblNewValue.Caption := lisDBGEMNewValue;
       chkTypeCast.Caption := drsUseInstanceClassType;
    +  fHistDirection:=EHDNone;
     
       ToolBar1.Images := IDEImages.Images_16;
       tbInspect.ImageIndex := IDEImages.LoadImage(16, 'debugger_inspect');
       tbWatch.ImageIndex := IDEImages.LoadImage(16, 'debugger_watches');
       tbModify.ImageIndex := IDEImages.LoadImage(16, 'debugger_modify');
       tbEvaluate.ImageIndex := IDEImages.LoadImage(16, 'debugger_evaluate');
    +  tbHistory.ImageIndex := IDEImages.LoadImage(16, 'evaluate_no_hist');
    +
    +  mnuHistory.Items[0].Caption:=drsEvalHistoryNone;
    +  mnuHistory.Items[1].Caption:=dsrEvalHistoryUp;
    +  mnuHistory.Items[2].Caption:=dsrEvalHistoryDown;
     end;
     
     procedure TEvaluateDlg.Evaluate;
    @@ -142,7 +166,20 @@
       else
         tbModify.Enabled := False;
       FreeAndNil(DBGType);
    -  txtResult.Lines.Text := R;
    +  if fHistDirection<>EHDNone then
    +    begin
    +    if txtResult.Lines.Text='' then
    +      txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
    +    else
    +      if fHistDirection=EHDUp then
    +        txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
    +           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
    +      else
    +        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
    +           + RESULTEVAL+ S+':'+LineEnding+ R+LineEnding;
    +    end
    +  else
    +    txtResult.Lines.Text := R;
     end;
     
     procedure TEvaluateDlg.cmbExpressionChange(Sender: TObject);
    @@ -166,6 +203,27 @@
       end;
     end;
     
    +procedure TEvaluateDlg.MenuItem1Click(Sender: TObject);
    +begin
    +  fHistDirection:=EHDNone;
    +  tbHistory.ImageIndex := IDEImages.LoadImage(16, 'evaluate_no_hist');
    +  txtResult.Lines.Clear;
    +end;
    +
    +procedure TEvaluateDlg.MenuItem2Click(Sender: TObject);
    +begin
    +  fHistDirection:=EHDUp;
    +  tbHistory.ImageIndex := IDEImages.LoadImage(16, 'evaluate_up');
    +  txtResult.Lines.Clear;
    +end;
    +
    +procedure TEvaluateDlg.MenuItem3Click(Sender: TObject);
    +begin
    +  fHistDirection:=EHDDown;
    +  tbHistory.ImageIndex := IDEImages.LoadImage(16, 'callstack_goto');
    +  txtResult.Lines.Clear;
    +end;
    +
     procedure TEvaluateDlg.SetFindText(const NewFindText: string);
     begin
       if NewFindText<>'' then
    @@ -199,7 +257,20 @@
       DBGType:=nil;
       if not DebugBoss.Evaluate(S, R, DBGType) then Exit;
       FreeAndNil(DBGType);
    -  txtResult.Lines.Text := R;
    +  if fHistDirection<>EHDNone then
    +    begin
    +    if txtResult.Lines.Text='' then
    +      txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
    +    else
    +      if fHistDirection=EHDUp then
    +        txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
    +           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
    +      else
    +        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
    +           + RESULTMOD+ S+':'+LineEnding+ R+LineEnding;
    +    end
    +  else
    +    txtResult.Lines.Text := R;
     end;
     
     procedure TEvaluateDlg.FormClose(Sender: TObject; var CloseAction: TCloseAction);
    Index: debugger/evaluatedlg.lfm
    ===================================================================
    --- debugger/evaluatedlg.lfm	(revision 37511)
    +++ debugger/evaluatedlg.lfm	(working copy)
    @@ -19,9 +19,9 @@
         AnchorSideTop.Control = ToolBar1
         AnchorSideTop.Side = asrBottom
         Left = 6
    -    Height = 16
    +    Height = 14
         Top = 47
    -    Width = 59
    +    Width = 57
         BorderSpacing.Left = 6
         BorderSpacing.Top = 3
         Caption = '&Expression:'
    @@ -33,9 +33,9 @@
         AnchorSideTop.Control = cmbExpression
         AnchorSideTop.Side = asrBottom
         Left = 6
    -    Height = 16
    -    Top = 95
    -    Width = 36
    +    Height = 14
    +    Top = 91
    +    Width = 35
         BorderSpacing.Left = 6
         BorderSpacing.Top = 6
         Caption = '&Result:'
    @@ -46,9 +46,9 @@
         AnchorSideLeft.Control = Owner
         AnchorSideBottom.Control = cmbNewValue
         Left = 6
    -    Height = 16
    -    Top = 242
    -    Width = 59
    +    Height = 14
    +    Top = 246
    +    Width = 55
         Anchors = [akLeft, akBottom]
         BorderSpacing.Left = 6
         BorderSpacing.Bottom = 3
    @@ -71,7 +71,7 @@
         TabOrder = 0
         TabStop = True
         object tbInspect: TToolButton
    -      Left = 154
    +      Left = 152
           Top = 2
           Caption = '&Inspect'
           Enabled = False
    @@ -79,7 +79,7 @@
           OnClick = tbInspectClick
         end
         object tbWatch: TToolButton
    -      Left = 104
    +      Left = 102
           Top = 2
           AllowAllUp = True
           Caption = '&Watch'
    @@ -88,7 +88,7 @@
           OnClick = tbWatchClick
         end
         object tbModify: TToolButton
    -      Left = 54
    +      Left = 52
           Top = 2
           Caption = '&Modify'
           Enabled = False
    @@ -103,6 +103,20 @@
           ImageIndex = 0
           OnClick = tbEvaluateClick
         end
    +    object ToolButton1: TToolButton
    +      Left = 202
    +      Top = 2
    +      Width = 10
    +      Caption = 'ToolButton1'
    +      Style = tbsSeparator
    +    end
    +    object tbHistory: TToolButton
    +      Left = 212
    +      Top = 2
    +      Caption = 'History'
    +      DropdownMenu = mnuHistory
    +      Style = tbsDropDown
    +    end
       end
       object cmbExpression: TComboBox[4]
         AnchorSideLeft.Control = Owner
    @@ -111,14 +125,14 @@
         AnchorSideRight.Control = Owner
         AnchorSideRight.Side = asrBottom
         Left = 6
    -    Height = 23
    -    Top = 66
    +    Height = 21
    +    Top = 64
         Width = 388
         Anchors = [akTop, akLeft, akRight]
         BorderSpacing.Left = 6
         BorderSpacing.Top = 3
         BorderSpacing.Right = 6
    -    ItemHeight = 15
    +    ItemHeight = 13
         OnChange = cmbExpressionChange
         OnKeyDown = cmbExpressionKeyDown
         TabOrder = 2
    @@ -131,8 +145,8 @@
         AnchorSideRight.Side = asrBottom
         AnchorSideBottom.Control = lblNewValue
         Left = 6
    -    Height = 122
    -    Top = 114
    +    Height = 132
    +    Top = 108
         Width = 388
         Anchors = [akTop, akLeft, akRight, akBottom]
         BorderSpacing.Left = 6
    @@ -149,14 +163,14 @@
         AnchorSideBottom.Control = Owner
         AnchorSideBottom.Side = asrBottom
         Left = 6
    -    Height = 23
    -    Top = 261
    +    Height = 21
    +    Top = 263
         Width = 388
         Anchors = [akLeft, akRight, akBottom]
         BorderSpacing.Left = 6
         BorderSpacing.Right = 6
         BorderSpacing.Bottom = 6
    -    ItemHeight = 15
    +    ItemHeight = 13
         OnKeyDown = cmbNewValueKeyDown
         TabOrder = 3
       end
    @@ -165,10 +179,10 @@
         AnchorSideTop.Side = asrCenter
         AnchorSideRight.Control = Owner
         AnchorSideRight.Side = asrBottom
    -    Left = 306
    -    Height = 19
    +    Left = 312
    +    Height = 17
         Top = 46
    -    Width = 88
    +    Width = 82
         Anchors = [akTop, akRight]
         BorderSpacing.Right = 6
         Caption = 'chkTypeCast'
    @@ -176,4 +190,20 @@
         State = cbChecked
         TabOrder = 4
       end
    +  object mnuHistory: TPopupMenu[8]
    +    left = 72
    +    top = 136
    +    object MenuItem1: TMenuItem
    +      Caption = 'None'
    +      OnClick = MenuItem1Click
    +    end
    +    object MenuItem2: TMenuItem
    +      Caption = 'Up'
    +      OnClick = MenuItem2Click
    +    end
    +    object MenuItem3: TMenuItem
    +      Caption = 'Down'
    +      OnClick = MenuItem3Click
    +    end
    +  end
     end
    Index: images/laz_images_list.txt
    ===================================================================
    --- images/laz_images_list.txt	(revision 37511)
    +++ images/laz_images_list.txt	(working copy)
    @@ -202,6 +202,8 @@
     debugger/debugger_source_line.png
     debugger/debugger_watches.png
     debugger/debugger_event_log.png
    +debugger/evaluate_no_hist.png
    +debugger/evaluate_up.png
     packages/pkg_add.png
     packages/pkg_graph.png
     packages/pkg_inherited.png
    Index: images/laz_images.lrs
    ===================================================================
    --- images/laz_images.lrs	(revision 37511)
    +++ images/laz_images.lrs	(working copy)
    @@ -10520,6 +10520,42 @@
       +#246#147#11't'#16#128#224''''#6#0#164#2'p'#240#27#255#227'#ns'#166#242'8'#0
       +#27'@l'#170''''#152#194#31';'#5't|'#158'Bdv'#0#0#0#0'IEND'#174'B`'#130
     ]);
    +LazarusResources.Add('evaluate_no_hist','PNG',[
    +  #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
    +  +#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167
    +  +#147#0#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#1'!IDAT8'#203#173
    +  +#146#187'J'#3'A'#20#134#191#217#221#4'E'#2#18#188'&'#224#181#18#209#160'U'
    +  +#192#194'B'#242#16#1'}'#1#193'&'#22#18#236#19'R['#8#10#218#138'h'#227#3#8#178
    +  +#4'l'#4'!'#138#141#10'jT'#180'0}'#220#153#177'q'#133'YE3'#196#175#26#230'0'
    +  +#135#255'2BkM;8'#180#137#247'u'#18#194#238#229#167'r/z'#241#175#22#134#23#183
    +  +'H'#231'7'#127'] '#194#16'+'#229#178'1'#216#189#25'$'#213#219'M '#21#183#245
    +  +'WV'#166#26#198'|'#173'X4'#23#132#204#173#30#240#30'H'#250#146#9'2'#227#253#0
    +  +'Tk'#247'\?'#188#160#148#226'io'#249'g'#5#8#161'-C'#20'F'#136#149'R'#201#168
    +  +#193'of'#200'N'#164'QZ'#179#127'\ci'#164'nZ'#248#166' Bn'#253#136#133#217'Q'
    +  +#148#214#28#158'\r'#182#145#255#227#31'D'#232#234#140#227':'#2#23'AG<f'#223
    +  +#194']"'#203#244'X'#15'Ri'#252#139'Gf'#244'yk-'#132#20#182'}&'#135#146'H'#165
    +  +'9'#189'zf'#167#144#179#179#224#185#14#142#16#224'@<'#230#218'[h'#12#204#3
    +  +#208#12'$RiRoU;'#11#173#242#1'5'#206't'#134#225#206'`'#26#0#0#0#0'IEND'#174
    +  +'B`'#130
    +]);
    +LazarusResources.Add('evaluate_up','PNG',[
    +  #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
    +  +#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167
    +  +#147#0#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#1'3IDAT8'#203#181
    +  +#146#189'J'#3'A'#20#133#207#236#204'N'#20#13#200#226'OL$'#254#129' '#193'D'
    +  +#173#2#22#22#146#135#8#232#11#8'6'#177#144#224#3#4'k'#11'AA['#17'm'#2#182#130
    +  +#172#1'-'#132#224'*6QP'#163#162#133#233#215#157#185'V'#9'*'#178#236#18#252
    +  +#170#11#247#22#231#227'\FDh'#7#3'm"Z'#19'c'#225#162#16'1'#0'`'#255#170'0'#188
    +  +#184'}'#150#200'o]'#248#221#180#18'l'#148'J?'#162#236#221#13'V'#227'}='#211
    +  +#158#210#184#175#191'_'#173'L5'#210#223#247'k'#197#226#223#10's'#171#135#242
    +  +#211'SN'#191#21#157#200#140#15#0#0'*'#206'#jOo5'#173'u'#234'e'#127#217#245'U'
    +  +#136'HQ'#142'H'#145#140'Y'#221#16#220#128#193#24'L'#193'a'#10'>$8?'#14#172'`'
    +  +#187#25'd'''#19#208'D88q'#176'4RG '#133'&'#185#245'2-'#204#142'B'#19#225#232
    +  +#244#6#151#155'y'#230#255#7#191#232#234#148#224#6#3#7'C'#135'4'#195#183#240
    +  +#16#205'"='#214#11#165#9#246#245'3f'#168#26'N'#161#176'cS*iAi'#194#249#237'+'
    +  +'v'#11#185'p'#10#205#6'`'#0#210#228#225#21#26#177'y'#0#128#235')(M'#136#127
    +  +'T'#194')'#4#229#11';u'#131'('#138#183#140#235#0#0#0#0'IEND'#174'B`'#130
    +]);
     LazarusResources.Add('pkg_add','PNG',[
       #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
       +#0#0#3#31'IDATx^u'#147'mh\E'#24#133#207'nr'#247#163'fi'#26'!5i)B'#27'iI5'#169
    
    evalhistory3.diff (13,239 bytes)
  • evaluate_no_hist.png (398 bytes)
    evaluate_no_hist.png (398 bytes)
  • evaluate_up.png (416 bytes)
    evaluate_up.png (416 bytes)

Activities

2012-06-04 20:11

 

evalhistory1.diff (7,260 bytes)
Index: debuggerstrconst.pp
===================================================================
--- debuggerstrconst.pp	(revision 37511)
+++ debuggerstrconst.pp	(working copy)
@@ -70,6 +70,8 @@
   drsInspectColWidthMethAddress = 'Method address column';
 
   drsUseInstanceClassType = 'Use Instance class type';
+  drsEvalHistory          = 'Keep result history';
+  dsrEvalHistoryTop       = 'Insert result at top';
   drsLen = 'Len=%d: ';
 
 
Index: evaluatedlg.pp
===================================================================
--- evaluatedlg.pp	(revision 37511)
+++ evaluatedlg.pp	(working copy)
@@ -47,6 +47,8 @@
   { TEvaluateDlg }
 
   TEvaluateDlg = class(TDebuggerDlg)
+    chkHistory: TCheckBox;
+    chkInsertOrder: TCheckBox;
     chkTypeCast: TCheckBox;
     cmbExpression: TComboBox;
     cmbNewValue: TComboBox;
@@ -59,6 +61,8 @@
     tbWatch: TToolButton;
     tbModify: TToolButton;
     tbEvaluate: TToolButton;
+    procedure chkHistoryChange(Sender: TObject);
+    procedure chkInsertOrderChange(Sender: TObject);
     procedure cmbNewValueKeyDown(Sender: TObject; var Key: Word;
       Shift: TShiftState);
     procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
@@ -89,6 +93,10 @@
 
 var
   EvaluateDlgWindowCreator: TIDEWindowCreator;
+const
+  RESULTSEPARATOR='-----------';
+  RESULTEVAL='>>>> ';
+  RESULTMOD='<<>> ';
 
 { TEvaluateDlg }
 
@@ -109,6 +117,8 @@
   Label2.Caption := lisDBGEMResult;
   lblNewValue.Caption := lisDBGEMNewValue;
   chkTypeCast.Caption := drsUseInstanceClassType;
+  chkHistory.Caption := drsEvalHistory;
+  chkInsertOrder.Caption := dsrEvalHistoryTop;
 
   ToolBar1.Images := IDEImages.Images_16;
   tbInspect.ImageIndex := IDEImages.LoadImage(16, 'debugger_inspect');
@@ -142,7 +152,20 @@
   else
     tbModify.Enabled := False;
   FreeAndNil(DBGType);
-  txtResult.Lines.Text := R;
+  if chkHistory.Checked then
+    begin
+    if txtResult.Lines.Text='' then
+      txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
+    else
+      if chkInsertOrder.Checked then
+        txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
+           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
+      else
+        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
+           + RESULTEVAL+ S+':'+LineEnding+ R+LineEnding;
+    end
+  else
+    txtResult.Lines.Text := R;
 end;
 
 procedure TEvaluateDlg.cmbExpressionChange(Sender: TObject);
@@ -199,7 +222,20 @@
   DBGType:=nil;
   if not DebugBoss.Evaluate(S, R, DBGType) then Exit;
   FreeAndNil(DBGType);
-  txtResult.Lines.Text := R;
+  if chkHistory.Checked then
+    begin
+    if txtResult.Lines.Text='' then
+      txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
+    else
+      if chkInsertOrder.Checked then
+        txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
+           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
+      else
+        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
+           + RESULTMOD+ S+':'+LineEnding+ R+LineEnding;
+    end
+  else
+    txtResult.Lines.Text := R;
 end;
 
 procedure TEvaluateDlg.FormClose(Sender: TObject; var CloseAction: TCloseAction);
@@ -222,6 +258,17 @@
   end;
 end;
 
+procedure TEvaluateDlg.chkHistoryChange(Sender: TObject);
+begin
+  chkInsertOrder.Enabled:=chkHistory.Checked;
+  txtResult.Lines.Clear;
+end;
+
+procedure TEvaluateDlg.chkInsertOrderChange(Sender: TObject);
+begin
+  txtResult.Lines.Clear;
+end;
+
 procedure TEvaluateDlg.FormShow(Sender: TObject);
 begin
   cmbExpression.SetFocus;
Index: evaluatedlg.lfm
===================================================================
--- evaluatedlg.lfm	(revision 37511)
+++ evaluatedlg.lfm	(working copy)
@@ -19,9 +19,9 @@
     AnchorSideTop.Control = ToolBar1
     AnchorSideTop.Side = asrBottom
     Left = 6
-    Height = 16
+    Height = 14
     Top = 47
-    Width = 59
+    Width = 57
     BorderSpacing.Left = 6
     BorderSpacing.Top = 3
     Caption = '&Expression:'
@@ -33,9 +33,9 @@
     AnchorSideTop.Control = cmbExpression
     AnchorSideTop.Side = asrBottom
     Left = 6
-    Height = 16
-    Top = 95
-    Width = 36
+    Height = 14
+    Top = 91
+    Width = 35
     BorderSpacing.Left = 6
     BorderSpacing.Top = 6
     Caption = '&Result:'
@@ -46,9 +46,9 @@
     AnchorSideLeft.Control = Owner
     AnchorSideBottom.Control = cmbNewValue
     Left = 6
-    Height = 16
-    Top = 242
-    Width = 59
+    Height = 14
+    Top = 246
+    Width = 55
     Anchors = [akLeft, akBottom]
     BorderSpacing.Left = 6
     BorderSpacing.Bottom = 3
@@ -71,7 +71,7 @@
     TabOrder = 0
     TabStop = True
     object tbInspect: TToolButton
-      Left = 154
+      Left = 152
       Top = 2
       Caption = '&Inspect'
       Enabled = False
@@ -79,7 +79,7 @@
       OnClick = tbInspectClick
     end
     object tbWatch: TToolButton
-      Left = 104
+      Left = 102
       Top = 2
       AllowAllUp = True
       Caption = '&Watch'
@@ -88,7 +88,7 @@
       OnClick = tbWatchClick
     end
     object tbModify: TToolButton
-      Left = 54
+      Left = 52
       Top = 2
       Caption = '&Modify'
       Enabled = False
@@ -111,14 +111,14 @@
     AnchorSideRight.Control = Owner
     AnchorSideRight.Side = asrBottom
     Left = 6
-    Height = 23
-    Top = 66
+    Height = 21
+    Top = 64
     Width = 388
     Anchors = [akTop, akLeft, akRight]
     BorderSpacing.Left = 6
     BorderSpacing.Top = 3
     BorderSpacing.Right = 6
-    ItemHeight = 15
+    ItemHeight = 13
     OnChange = cmbExpressionChange
     OnKeyDown = cmbExpressionKeyDown
     TabOrder = 2
@@ -131,8 +131,8 @@
     AnchorSideRight.Side = asrBottom
     AnchorSideBottom.Control = lblNewValue
     Left = 6
-    Height = 122
-    Top = 114
+    Height = 132
+    Top = 108
     Width = 388
     Anchors = [akTop, akLeft, akRight, akBottom]
     BorderSpacing.Left = 6
@@ -149,14 +149,14 @@
     AnchorSideBottom.Control = Owner
     AnchorSideBottom.Side = asrBottom
     Left = 6
-    Height = 23
-    Top = 261
+    Height = 21
+    Top = 263
     Width = 388
     Anchors = [akLeft, akRight, akBottom]
     BorderSpacing.Left = 6
     BorderSpacing.Right = 6
     BorderSpacing.Bottom = 6
-    ItemHeight = 15
+    ItemHeight = 13
     OnKeyDown = cmbNewValueKeyDown
     TabOrder = 3
   end
@@ -165,10 +165,10 @@
     AnchorSideTop.Side = asrCenter
     AnchorSideRight.Control = Owner
     AnchorSideRight.Side = asrBottom
-    Left = 306
-    Height = 19
+    Left = 312
+    Height = 17
     Top = 46
-    Width = 88
+    Width = 82
     Anchors = [akTop, akRight]
     BorderSpacing.Right = 6
     Caption = 'chkTypeCast'
@@ -176,4 +176,24 @@
     State = cbChecked
     TabOrder = 4
   end
+  object chkInsertOrder: TCheckBox[8]
+    Left = 301
+    Height = 17
+    Top = 88
+    Width = 93
+    Anchors = [akTop, akRight]
+    Caption = 'chkInsertOrder'
+    Enabled = False
+    OnChange = chkInsertOrderChange
+    TabOrder = 5
+  end
+  object chkHistory: TCheckBox[9]
+    Left = 96
+    Height = 17
+    Top = 88
+    Width = 70
+    Caption = 'chkHistory'
+    OnChange = chkHistoryChange
+    TabOrder = 6
+  end
 end
evalhistory1.diff (7,260 bytes)

2012-06-04 20:11

 

evalhistory2.diff (8,300 bytes)
Index: debuggerstrconst.pp
===================================================================
--- debuggerstrconst.pp	(revision 37511)
+++ debuggerstrconst.pp	(working copy)
@@ -70,6 +70,9 @@
   drsInspectColWidthMethAddress = 'Method address column';
 
   drsUseInstanceClassType = 'Use Instance class type';
+  drsEvalHistoryNone      = 'No history kept';
+  dsrEvalHistoryUp        = 'Insert result at top of history';
+  dsrEvalHistoryDown      = 'Append result at bottom of history';
   drsLen = 'Len=%d: ';
 
 
Index: evaluatedlg.pp
===================================================================
--- evaluatedlg.pp	(revision 37511)
+++ evaluatedlg.pp	(working copy)
@@ -37,9 +37,9 @@
 interface
 
 uses
-  Classes, SysUtils, LCLType, Forms,
+  Classes, SysUtils, LCLType, Forms,LCLintf,
   IDEWindowIntf, IDEImagesIntf, LazarusIDEStrConsts,
-  ComCtrls, StdCtrls, DebuggerDlg, BaseDebugManager,
+  ComCtrls, StdCtrls, ExtCtrls, Arrow, DebuggerDlg, BaseDebugManager,
   InputHistory, IDEProcs, Debugger, DebuggerStrConst;
 
 type
@@ -47,18 +47,22 @@
   { TEvaluateDlg }
 
   TEvaluateDlg = class(TDebuggerDlg)
+    ArrHistory: TArrow;
     chkTypeCast: TCheckBox;
     cmbExpression: TComboBox;
     cmbNewValue: TComboBox;
     Label1: TLabel;
     Label2: TLabel;
     lblNewValue: TLabel;
+    PnlHistory: TPanel;
     txtResult: TMemo;
     ToolBar1: TToolBar;
     tbInspect: TToolButton;
     tbWatch: TToolButton;
     tbModify: TToolButton;
     tbEvaluate: TToolButton;
+    procedure ArrHistoryClick(Sender: TObject);
+    procedure chkInsertOrderChange(Sender: TObject);
     procedure cmbNewValueKeyDown(Sender: TObject; var Key: Word;
       Shift: TShiftState);
     procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
@@ -89,6 +93,10 @@
 
 var
   EvaluateDlgWindowCreator: TIDEWindowCreator;
+const
+  RESULTSEPARATOR='-----------';
+  RESULTEVAL='>>>> ';
+  RESULTMOD='<<>> ';
 
 { TEvaluateDlg }
 
@@ -109,6 +117,8 @@
   Label2.Caption := lisDBGEMResult;
   lblNewValue.Caption := lisDBGEMNewValue;
   chkTypeCast.Caption := drsUseInstanceClassType;
+  ArrHistory.Hint:=drsEvalHistoryNone;
+  ArrHistory.ShowHint:=true;
 
   ToolBar1.Images := IDEImages.Images_16;
   tbInspect.ImageIndex := IDEImages.LoadImage(16, 'debugger_inspect');
@@ -142,7 +152,20 @@
   else
     tbModify.Enabled := False;
   FreeAndNil(DBGType);
-  txtResult.Lines.Text := R;
+  if ArrHistory.ArrowType<>atRight then
+    begin
+    if txtResult.Lines.Text='' then
+      txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
+    else
+      if ArrHistory.ArrowType=atUp then
+        txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
+           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
+      else
+        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
+           + RESULTEVAL+ S+':'+LineEnding+ R+LineEnding;
+    end
+  else
+    txtResult.Lines.Text := R;
 end;
 
 procedure TEvaluateDlg.cmbExpressionChange(Sender: TObject);
@@ -199,7 +222,20 @@
   DBGType:=nil;
   if not DebugBoss.Evaluate(S, R, DBGType) then Exit;
   FreeAndNil(DBGType);
-  txtResult.Lines.Text := R;
+  if ArrHistory.ArrowType<>atRight then
+    begin
+    if txtResult.Lines.Text='' then
+      txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
+    else
+      if ArrHistory.ArrowType=atUp then
+        txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
+           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
+      else
+        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
+           + RESULTMOD+ S+':'+LineEnding+ R+LineEnding;
+    end
+  else
+    txtResult.Lines.Text := R;
 end;
 
 procedure TEvaluateDlg.FormClose(Sender: TObject; var CloseAction: TCloseAction);
@@ -222,6 +258,35 @@
   end;
 end;
 
+procedure TEvaluateDlg.ArrHistoryClick(Sender: TObject);
+var
+  CursorPos: TPoint;
+begin
+  case ArrHistory.ArrowType of
+    atRight:begin
+            ArrHistory.ArrowType:=atUp;
+            ArrHistory.Hint:=dsrEvalHistoryUp;
+            end;
+    atUp:   begin
+            ArrHistory.ArrowType:=atDown;
+            ArrHistory.Hint:=dsrEvalHistoryDown;
+            end;
+    atDown: begin
+            ArrHistory.ArrowType:=atRight;
+            ArrHistory.Hint:=drsEvalHistoryNone;
+            end;
+  end;
+  txtResult.Lines.Clear;
+  ArrHistory.Invalidate;
+  if GetCursorPos(CursorPos) then
+    application.ActivateHint(CursorPos, True);
+end;
+
+procedure TEvaluateDlg.chkInsertOrderChange(Sender: TObject);
+begin
+  txtResult.Lines.Clear;
+end;
+
 procedure TEvaluateDlg.FormShow(Sender: TObject);
 begin
   cmbExpression.SetFocus;
Index: evaluatedlg.lfm
===================================================================
--- evaluatedlg.lfm	(revision 37511)
+++ evaluatedlg.lfm	(working copy)
@@ -19,9 +19,9 @@
     AnchorSideTop.Control = ToolBar1
     AnchorSideTop.Side = asrBottom
     Left = 6
-    Height = 16
+    Height = 14
     Top = 47
-    Width = 59
+    Width = 57
     BorderSpacing.Left = 6
     BorderSpacing.Top = 3
     Caption = '&Expression:'
@@ -33,9 +33,9 @@
     AnchorSideTop.Control = cmbExpression
     AnchorSideTop.Side = asrBottom
     Left = 6
-    Height = 16
-    Top = 95
-    Width = 36
+    Height = 14
+    Top = 91
+    Width = 35
     BorderSpacing.Left = 6
     BorderSpacing.Top = 6
     Caption = '&Result:'
@@ -46,9 +46,9 @@
     AnchorSideLeft.Control = Owner
     AnchorSideBottom.Control = cmbNewValue
     Left = 6
-    Height = 16
-    Top = 242
-    Width = 59
+    Height = 14
+    Top = 246
+    Width = 55
     Anchors = [akLeft, akBottom]
     BorderSpacing.Left = 6
     BorderSpacing.Bottom = 3
@@ -71,7 +71,7 @@
     TabOrder = 0
     TabStop = True
     object tbInspect: TToolButton
-      Left = 154
+      Left = 152
       Top = 2
       Caption = '&Inspect'
       Enabled = False
@@ -79,7 +79,7 @@
       OnClick = tbInspectClick
     end
     object tbWatch: TToolButton
-      Left = 104
+      Left = 102
       Top = 2
       AllowAllUp = True
       Caption = '&Watch'
@@ -88,7 +88,7 @@
       OnClick = tbWatchClick
     end
     object tbModify: TToolButton
-      Left = 54
+      Left = 52
       Top = 2
       Caption = '&Modify'
       Enabled = False
@@ -111,14 +111,14 @@
     AnchorSideRight.Control = Owner
     AnchorSideRight.Side = asrBottom
     Left = 6
-    Height = 23
-    Top = 66
+    Height = 21
+    Top = 64
     Width = 388
     Anchors = [akTop, akLeft, akRight]
     BorderSpacing.Left = 6
     BorderSpacing.Top = 3
     BorderSpacing.Right = 6
-    ItemHeight = 15
+    ItemHeight = 13
     OnChange = cmbExpressionChange
     OnKeyDown = cmbExpressionKeyDown
     TabOrder = 2
@@ -131,8 +131,8 @@
     AnchorSideRight.Side = asrBottom
     AnchorSideBottom.Control = lblNewValue
     Left = 6
-    Height = 122
-    Top = 114
+    Height = 132
+    Top = 108
     Width = 388
     Anchors = [akTop, akLeft, akRight, akBottom]
     BorderSpacing.Left = 6
@@ -149,14 +149,14 @@
     AnchorSideBottom.Control = Owner
     AnchorSideBottom.Side = asrBottom
     Left = 6
-    Height = 23
-    Top = 261
+    Height = 21
+    Top = 263
     Width = 388
     Anchors = [akLeft, akRight, akBottom]
     BorderSpacing.Left = 6
     BorderSpacing.Right = 6
     BorderSpacing.Bottom = 6
-    ItemHeight = 15
+    ItemHeight = 13
     OnKeyDown = cmbNewValueKeyDown
     TabOrder = 3
   end
@@ -165,10 +165,10 @@
     AnchorSideTop.Side = asrCenter
     AnchorSideRight.Control = Owner
     AnchorSideRight.Side = asrBottom
-    Left = 306
-    Height = 19
+    Left = 312
+    Height = 17
     Top = 46
-    Width = 88
+    Width = 82
     Anchors = [akTop, akRight]
     BorderSpacing.Right = 6
     Caption = 'chkTypeCast'
@@ -176,4 +176,23 @@
     State = cbChecked
     TabOrder = 4
   end
+  object PnlHistory: TPanel[8]
+    Left = 374
+    Height = 18
+    Top = 89
+    Width = 17
+    Anchors = [akTop, akRight]
+    Caption = 'PnlHistory'
+    ClientHeight = 18
+    ClientWidth = 17
+    TabOrder = 5
+    object ArrHistory: TArrow
+      Left = 1
+      Height = 15
+      Top = 1
+      Width = 15
+      ArrowType = atRight
+      OnClick = ArrHistoryClick
+    end
+  end
 end
evalhistory2.diff (8,300 bytes)

Ludo Brands

2012-06-05 18:28

developer   ~0060292

As discussed, a different version with a toolbutton with drop down menu

2012-06-05 18:29

 

evalhistory3.diff (13,239 bytes)
Index: debugger/debuggerstrconst.pp
===================================================================
--- debugger/debuggerstrconst.pp	(revision 37511)
+++ debugger/debuggerstrconst.pp	(working copy)
@@ -68,6 +68,9 @@
   drsInspectColWidthMethType = 'Method type column';
   drsInspectColWidthMethReturns = 'Method returns column';
   drsInspectColWidthMethAddress = 'Method address column';
+  drsEvalHistoryNone      = 'No history kept';
+  dsrEvalHistoryUp        = 'Insert result at top of history';
+  dsrEvalHistoryDown      = 'Append result at bottom of history';
 
   drsUseInstanceClassType = 'Use Instance class type';
   drsLen = 'Len=%d: ';
Index: debugger/evaluatedlg.pp
===================================================================
--- debugger/evaluatedlg.pp	(revision 37511)
+++ debugger/evaluatedlg.pp	(working copy)
@@ -39,11 +39,14 @@
 uses
   Classes, SysUtils, LCLType, Forms,
   IDEWindowIntf, IDEImagesIntf, LazarusIDEStrConsts,
-  ComCtrls, StdCtrls, DebuggerDlg, BaseDebugManager,
+  ComCtrls, StdCtrls, Menus, DebuggerDlg, BaseDebugManager,
   InputHistory, IDEProcs, Debugger, DebuggerStrConst;
 
 type
 
+  TEvalHistDirection=(EHDNone,EHDUp,EHDDown);
+
+
   { TEvaluateDlg }
 
   TEvaluateDlg = class(TDebuggerDlg)
@@ -53,6 +56,12 @@
     Label1: TLabel;
     Label2: TLabel;
     lblNewValue: TLabel;
+    MenuItem1: TMenuItem;
+    MenuItem2: TMenuItem;
+    MenuItem3: TMenuItem;
+    mnuHistory: TPopupMenu;
+    ToolButton1: TToolButton;
+    tbHistory: TToolButton;
     txtResult: TMemo;
     ToolBar1: TToolBar;
     tbInspect: TToolButton;
@@ -68,12 +77,16 @@
     procedure cmbExpressionChange(Sender: TObject);
     procedure cmbExpressionKeyDown(Sender: TObject; var Key: Word;
       Shift: TShiftState);
+    procedure MenuItem1Click(Sender: TObject);
+    procedure MenuItem2Click(Sender: TObject);
+    procedure MenuItem3Click(Sender: TObject);
     procedure tbEvaluateClick(Sender: TObject);
     procedure tbInspectClick(Sender: TObject);
     procedure tbModifyClick(Sender: TObject);
     procedure tbWatchClick(Sender: TObject);
     
   private
+    fHistDirection:TEvalHistDirection;
     function GetFindText: string;
     procedure SetFindText(const NewFindText: string);
     procedure Evaluate;
@@ -90,6 +103,11 @@
 var
   EvaluateDlgWindowCreator: TIDEWindowCreator;
 
+const
+  RESULTSEPARATOR='-----------';
+  RESULTEVAL='>>>> ';
+  RESULTMOD='<<>> ';
+
 { TEvaluateDlg }
 
 constructor TEvaluateDlg.Create(TheOwner:TComponent);
@@ -109,12 +127,18 @@
   Label2.Caption := lisDBGEMResult;
   lblNewValue.Caption := lisDBGEMNewValue;
   chkTypeCast.Caption := drsUseInstanceClassType;
+  fHistDirection:=EHDNone;
 
   ToolBar1.Images := IDEImages.Images_16;
   tbInspect.ImageIndex := IDEImages.LoadImage(16, 'debugger_inspect');
   tbWatch.ImageIndex := IDEImages.LoadImage(16, 'debugger_watches');
   tbModify.ImageIndex := IDEImages.LoadImage(16, 'debugger_modify');
   tbEvaluate.ImageIndex := IDEImages.LoadImage(16, 'debugger_evaluate');
+  tbHistory.ImageIndex := IDEImages.LoadImage(16, 'evaluate_no_hist');
+
+  mnuHistory.Items[0].Caption:=drsEvalHistoryNone;
+  mnuHistory.Items[1].Caption:=dsrEvalHistoryUp;
+  mnuHistory.Items[2].Caption:=dsrEvalHistoryDown;
 end;
 
 procedure TEvaluateDlg.Evaluate;
@@ -142,7 +166,20 @@
   else
     tbModify.Enabled := False;
   FreeAndNil(DBGType);
-  txtResult.Lines.Text := R;
+  if fHistDirection<>EHDNone then
+    begin
+    if txtResult.Lines.Text='' then
+      txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
+    else
+      if fHistDirection=EHDUp then
+        txtResult.Lines.Text := RESULTEVAL+ S+':'+LineEnding+ R + LineEnding
+           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
+      else
+        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
+           + RESULTEVAL+ S+':'+LineEnding+ R+LineEnding;
+    end
+  else
+    txtResult.Lines.Text := R;
 end;
 
 procedure TEvaluateDlg.cmbExpressionChange(Sender: TObject);
@@ -166,6 +203,27 @@
   end;
 end;
 
+procedure TEvaluateDlg.MenuItem1Click(Sender: TObject);
+begin
+  fHistDirection:=EHDNone;
+  tbHistory.ImageIndex := IDEImages.LoadImage(16, 'evaluate_no_hist');
+  txtResult.Lines.Clear;
+end;
+
+procedure TEvaluateDlg.MenuItem2Click(Sender: TObject);
+begin
+  fHistDirection:=EHDUp;
+  tbHistory.ImageIndex := IDEImages.LoadImage(16, 'evaluate_up');
+  txtResult.Lines.Clear;
+end;
+
+procedure TEvaluateDlg.MenuItem3Click(Sender: TObject);
+begin
+  fHistDirection:=EHDDown;
+  tbHistory.ImageIndex := IDEImages.LoadImage(16, 'callstack_goto');
+  txtResult.Lines.Clear;
+end;
+
 procedure TEvaluateDlg.SetFindText(const NewFindText: string);
 begin
   if NewFindText<>'' then
@@ -199,7 +257,20 @@
   DBGType:=nil;
   if not DebugBoss.Evaluate(S, R, DBGType) then Exit;
   FreeAndNil(DBGType);
-  txtResult.Lines.Text := R;
+  if fHistDirection<>EHDNone then
+    begin
+    if txtResult.Lines.Text='' then
+      txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
+    else
+      if fHistDirection=EHDUp then
+        txtResult.Lines.Text := RESULTMOD+ S+':'+LineEnding+ R + LineEnding
+           + RESULTSEPARATOR + LineEnding + txtResult.Lines.Text
+      else
+        txtResult.Lines.Text := txtResult.Lines.Text + RESULTSEPARATOR + LineEnding
+           + RESULTMOD+ S+':'+LineEnding+ R+LineEnding;
+    end
+  else
+    txtResult.Lines.Text := R;
 end;
 
 procedure TEvaluateDlg.FormClose(Sender: TObject; var CloseAction: TCloseAction);
Index: debugger/evaluatedlg.lfm
===================================================================
--- debugger/evaluatedlg.lfm	(revision 37511)
+++ debugger/evaluatedlg.lfm	(working copy)
@@ -19,9 +19,9 @@
     AnchorSideTop.Control = ToolBar1
     AnchorSideTop.Side = asrBottom
     Left = 6
-    Height = 16
+    Height = 14
     Top = 47
-    Width = 59
+    Width = 57
     BorderSpacing.Left = 6
     BorderSpacing.Top = 3
     Caption = '&Expression:'
@@ -33,9 +33,9 @@
     AnchorSideTop.Control = cmbExpression
     AnchorSideTop.Side = asrBottom
     Left = 6
-    Height = 16
-    Top = 95
-    Width = 36
+    Height = 14
+    Top = 91
+    Width = 35
     BorderSpacing.Left = 6
     BorderSpacing.Top = 6
     Caption = '&Result:'
@@ -46,9 +46,9 @@
     AnchorSideLeft.Control = Owner
     AnchorSideBottom.Control = cmbNewValue
     Left = 6
-    Height = 16
-    Top = 242
-    Width = 59
+    Height = 14
+    Top = 246
+    Width = 55
     Anchors = [akLeft, akBottom]
     BorderSpacing.Left = 6
     BorderSpacing.Bottom = 3
@@ -71,7 +71,7 @@
     TabOrder = 0
     TabStop = True
     object tbInspect: TToolButton
-      Left = 154
+      Left = 152
       Top = 2
       Caption = '&Inspect'
       Enabled = False
@@ -79,7 +79,7 @@
       OnClick = tbInspectClick
     end
     object tbWatch: TToolButton
-      Left = 104
+      Left = 102
       Top = 2
       AllowAllUp = True
       Caption = '&Watch'
@@ -88,7 +88,7 @@
       OnClick = tbWatchClick
     end
     object tbModify: TToolButton
-      Left = 54
+      Left = 52
       Top = 2
       Caption = '&Modify'
       Enabled = False
@@ -103,6 +103,20 @@
       ImageIndex = 0
       OnClick = tbEvaluateClick
     end
+    object ToolButton1: TToolButton
+      Left = 202
+      Top = 2
+      Width = 10
+      Caption = 'ToolButton1'
+      Style = tbsSeparator
+    end
+    object tbHistory: TToolButton
+      Left = 212
+      Top = 2
+      Caption = 'History'
+      DropdownMenu = mnuHistory
+      Style = tbsDropDown
+    end
   end
   object cmbExpression: TComboBox[4]
     AnchorSideLeft.Control = Owner
@@ -111,14 +125,14 @@
     AnchorSideRight.Control = Owner
     AnchorSideRight.Side = asrBottom
     Left = 6
-    Height = 23
-    Top = 66
+    Height = 21
+    Top = 64
     Width = 388
     Anchors = [akTop, akLeft, akRight]
     BorderSpacing.Left = 6
     BorderSpacing.Top = 3
     BorderSpacing.Right = 6
-    ItemHeight = 15
+    ItemHeight = 13
     OnChange = cmbExpressionChange
     OnKeyDown = cmbExpressionKeyDown
     TabOrder = 2
@@ -131,8 +145,8 @@
     AnchorSideRight.Side = asrBottom
     AnchorSideBottom.Control = lblNewValue
     Left = 6
-    Height = 122
-    Top = 114
+    Height = 132
+    Top = 108
     Width = 388
     Anchors = [akTop, akLeft, akRight, akBottom]
     BorderSpacing.Left = 6
@@ -149,14 +163,14 @@
     AnchorSideBottom.Control = Owner
     AnchorSideBottom.Side = asrBottom
     Left = 6
-    Height = 23
-    Top = 261
+    Height = 21
+    Top = 263
     Width = 388
     Anchors = [akLeft, akRight, akBottom]
     BorderSpacing.Left = 6
     BorderSpacing.Right = 6
     BorderSpacing.Bottom = 6
-    ItemHeight = 15
+    ItemHeight = 13
     OnKeyDown = cmbNewValueKeyDown
     TabOrder = 3
   end
@@ -165,10 +179,10 @@
     AnchorSideTop.Side = asrCenter
     AnchorSideRight.Control = Owner
     AnchorSideRight.Side = asrBottom
-    Left = 306
-    Height = 19
+    Left = 312
+    Height = 17
     Top = 46
-    Width = 88
+    Width = 82
     Anchors = [akTop, akRight]
     BorderSpacing.Right = 6
     Caption = 'chkTypeCast'
@@ -176,4 +190,20 @@
     State = cbChecked
     TabOrder = 4
   end
+  object mnuHistory: TPopupMenu[8]
+    left = 72
+    top = 136
+    object MenuItem1: TMenuItem
+      Caption = 'None'
+      OnClick = MenuItem1Click
+    end
+    object MenuItem2: TMenuItem
+      Caption = 'Up'
+      OnClick = MenuItem2Click
+    end
+    object MenuItem3: TMenuItem
+      Caption = 'Down'
+      OnClick = MenuItem3Click
+    end
+  end
 end
Index: images/laz_images_list.txt
===================================================================
--- images/laz_images_list.txt	(revision 37511)
+++ images/laz_images_list.txt	(working copy)
@@ -202,6 +202,8 @@
 debugger/debugger_source_line.png
 debugger/debugger_watches.png
 debugger/debugger_event_log.png
+debugger/evaluate_no_hist.png
+debugger/evaluate_up.png
 packages/pkg_add.png
 packages/pkg_graph.png
 packages/pkg_inherited.png
Index: images/laz_images.lrs
===================================================================
--- images/laz_images.lrs	(revision 37511)
+++ images/laz_images.lrs	(working copy)
@@ -10520,6 +10520,42 @@
   +#246#147#11't'#16#128#224''''#6#0#164#2'p'#240#27#255#227'#ns'#166#242'8'#0
   +#27'@l'#170''''#152#194#31';'#5't|'#158'Bdv'#0#0#0#0'IEND'#174'B`'#130
 ]);
+LazarusResources.Add('evaluate_no_hist','PNG',[
+  #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
+  +#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167
+  +#147#0#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#1'!IDAT8'#203#173
+  +#146#187'J'#3'A'#20#134#191#217#221#4'E'#2#18#188'&'#224#181#18#209#160'U'
+  +#192#194'B'#242#16#1'}'#1#193'&'#22#18#236#19'R['#8#10#218#138'h'#227#3#8#178
+  +#4'l'#4'!'#138#141#10'jT'#180'0}'#220#153#177'q'#133'YE3'#196#175#26#230'0'
+  +#135#255'2BkM;8'#180#137#247'u'#18#194#238#229#167'r/z'#241#175#22#134#23#183
+  +'H'#231'7'#127'] '#194#16'+'#229#178'1'#216#189#25'$'#213#219'M '#21#183#245
+  +'WV'#166#26#198'|'#173'X4'#23#132#204#173#30#240#30'H'#250#146#9'2'#227#253#0
+  +'Tk'#247'\?'#188#160#148#226'io'#249'g'#5#8#161'-C'#20'F'#136#149'R'#201#168
+  +#193'of'#200'N'#164'QZ'#179#127'\ci'#164'nZ'#248#166' Bn'#253#136#133#217'Q'
+  +#148#214#28#158'\r'#182#145#255#227#31'D'#232#234#140#227':'#2#23'AG<f'#223
+  +#194']"'#203#244'X'#15'Ri'#252#139'Gf'#244'yk-'#132#20#182'}&'#135#146'H'#165
+  +'9'#189'zf'#167#144#179#179#224#185#14#142#16#224'@<'#230#218'[h'#12#204#3
+  +#208#12'$RiRoU;'#11#173#242#1'5'#206't'#134#225#206'`'#26#0#0#0#0'IEND'#174
+  +'B`'#130
+]);
+LazarusResources.Add('evaluate_up','PNG',[
+  #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
+  +#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167
+  +#147#0#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#1'3IDAT8'#203#181
+  +#146#189'J'#3'A'#20#133#207#236#204'N'#20#13#200#226'OL$'#254#129' '#193'D'
+  +#173#2#22#22#146#135#8#232#11#8'6'#177#144#224#3#4'k'#11'AA['#17'm'#2#182#130
+  +#172#1'-'#132#224'*6QP'#163#162#133#233#215#157#185'V'#9'*'#178#236#18#252
+  +#170#11#247#22#231#227'\FDh'#7#3'm"Z'#19'c'#225#162#16'1'#0'`'#255#170'0'#188
+  +#184'}'#150#200'o]'#248#221#180#18'l'#148'J?'#162#236#221#13'V'#227'}='#211
+  +#158#210#184#175#191'_'#173'L5'#210#223#247'k'#197#226#223#10's'#171#135#242
+  +#211'SN'#191#21#157#200#140#15#0#0'*'#206'#jOo5'#173'u'#234'e'#127#217#245'U'
+  +#136'HQ'#142'H'#145#140'Y'#221#16#220#128#193#24'L'#193'a'#10'>$8?'#14#172'`'
+  +#187#25'd'''#19#208'D88q'#176'4RG '#133'&'#185#245'2-'#204#142'B'#19#225#232
+  +#244#6#151#155'y'#230#255#7#191#232#234#148#224#6#3#7'C'#135'4'#195#183#240
+  +#16#205'"='#214#11#165#9#246#245'3f'#168#26'N'#161#176'cS*iAi'#194#249#237'+'
+  +'v'#11#185'p'#10#205#6'`'#0#210#228#225#21#26#177'y'#0#128#235')(M'#136#127
+  +'T'#194')'#4#229#11';u'#131'('#138#183#140#235#0#0#0#0'IEND'#174'B`'#130
+]);
 LazarusResources.Add('pkg_add','PNG',[
   #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a'
   +#0#0#3#31'IDATx^u'#147'mh\E'#24#133#207'nr'#247#163'fi'#26'!5i)B'#27'iI5'#169
evalhistory3.diff (13,239 bytes)

2012-06-05 18:29

 

evaluate_no_hist.png (398 bytes)
evaluate_no_hist.png (398 bytes)

2012-06-05 18:30

 

evaluate_up.png (416 bytes)
evaluate_up.png (416 bytes)

Issue History

Date Modified Username Field Change
2012-06-04 20:11 Ludo Brands New Issue
2012-06-04 20:11 Ludo Brands Status new => assigned
2012-06-04 20:11 Ludo Brands Assigned To => Marc Weustink
2012-06-04 20:11 Ludo Brands File Added: evalhistory1.diff
2012-06-04 20:11 Ludo Brands File Added: evalhistory2.diff
2012-06-04 21:37 Martin Friebe Assigned To Marc Weustink => Martin Friebe
2012-06-05 18:28 Ludo Brands Note Added: 0060292
2012-06-05 18:29 Ludo Brands File Added: evalhistory3.diff
2012-06-05 18:29 Ludo Brands File Added: evaluate_no_hist.png
2012-06-05 18:30 Ludo Brands File Added: evaluate_up.png
2012-06-11 00:41 Martin Friebe Fixed in Revision => 37611
2012-06-11 00:41 Martin Friebe LazTarget => 1.2
2012-06-11 00:41 Martin Friebe Status assigned => resolved
2012-06-11 00:41 Martin Friebe Fixed in Version => 1.1 (SVN)
2012-06-11 00:41 Martin Friebe Resolution open => fixed
2012-06-11 00:41 Martin Friebe Target Version => 1.2.0
2012-06-11 14:59 Ludo Brands Status resolved => closed