fpc/packages/ide/fpevalw.pas
florian 3ce7927096 * made the ide a package, so it can be build in parallel with the other packages, reasons:
- lowers build times
  - ide is not that important anymore than years before
  - other utils like pastojs are also located in the packages tree

git-svn-id: trunk@37926 -
2018-01-06 20:22:30 +00:00

106 lines
2.6 KiB
ObjectPascal

{
Copyright (c) 1997-2008 by the Daniel Mantione
Debug expression evaluator dialog ?
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
unit fpevalw;
{****************************************************************************}
interface
{****************************************************************************}
uses fpdebug,dialogs,views,objects,fpconst,drivers;
type Pevaluate_dialog=^Tevaluate_dialog;
Tevaluate_dialog=object(Tdialog)
watch:Pwatch;
expr_input,expr_output:Pinputline;
constructor init(var bounds:Trect);
procedure evaluate;
procedure handleevent(var event:Tevent);virtual;
destructor done;
end;
{****************************************************************************}
implementation
{****************************************************************************}
constructor Tevaluate_dialog.init(var bounds:Trect);
var r:Trect;
l:Plabel;
b:Pbutton;
begin
inherited init(bounds,'Evaluate expression');
options:=options or ofcentered;
{watch is auto initialized to nil.}
r.assign(2,3,size.x-20,4);
new(expr_input,init(r,255));
insert(expr_input);
r.assign(size.x-20,3,size.x-18,4);
insert(new(Phistory,init(r,expr_input,hidEvaluate)));
r.assign(2,2,size.x-20,3);
new(l,init(r,'E~x~pression:',expr_input));
insert(l);
r.assign(2,6,size.x-20,7);
new(expr_output,init(r,255));
insert(expr_output);
r.assign(2,5,size.x-20,6);
new(l,init(r,'~R~esult:',expr_output));
insert(l);
r.assign(size.x-14,3,size.x-3,5);
new(b,init(r,'~E~valuate',cmEvaluate,bfDefault));
insert(b);
//r.assign(size.x-14,6,size.x-3,8);
//new(b,init(r,'Help',cmHelp,bfNormal));
//insert(b);
expr_input^.select;
end;
procedure Tevaluate_dialog.evaluate;
begin
if watch<>nil then
dispose(watch,done);
new(watch,init(expr_input^.data^));
expr_output^.data^:=strpas(watch^.current_value);
expr_output^.drawview;
end;
procedure Tevaluate_dialog.handleevent(var event:Tevent);
begin
inherited handleevent(event);
if event.what=evCommand then
case event.command of
cmEvaluate:
evaluate;
end;
end;
destructor Tevaluate_dialog.done;
begin
if watch<>nil then
dispose(watch,done);
end;
end.