fpvviewer: Adds a nice search next option for searching in the DXF tokens tree

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2601 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
sekelsenmat
2012-12-20 12:02:51 +00:00
parent 95ddacdc6a
commit 24535a5161
3 changed files with 96 additions and 18 deletions

View File

@ -46,9 +46,9 @@ object frmFPVViewer: TfrmFPVViewer
end
object Label1: TLabel
Left = 8
Height = 16
Height = 15
Top = 97
Width = 47
Width = 46
Caption = 'Scale by:'
ParentColor = False
end
@ -77,15 +77,32 @@ object frmFPVViewer: TfrmFPVViewer
object pageViewer: TPage
end
object pageTreeData: TPage
object DXFTreeView: TTreeView
object TokensTreeView: TTreeView
Left = 0
Height = 410
Top = 0
Height = 378
Top = 32
Width = 485
Align = alClient
Align = alBottom
DefaultItemHeight = 18
TabOrder = 0
end
object editSearchInTokens: TEdit
Left = 4
Height = 23
Top = 0
Width = 156
TabOrder = 1
Text = 'editSearchInTokens'
end
object btnSearchInTokens: TButton
Left = 168
Height = 25
Top = 0
Width = 155
Caption = 'Search in Token Tree'
OnClick = btnSearchInTokensClick
TabOrder = 2
end
end
end
object buttonRenderingTest: TButton
@ -117,9 +134,9 @@ object frmFPVViewer: TfrmFPVViewer
end
object Label2: TLabel
Left = 8
Height = 16
Height = 15
Top = 72
Width = 74
Width = 73
Caption = 'Y adjustment:'
ParentColor = False
end
@ -145,9 +162,9 @@ object frmFPVViewer: TfrmFPVViewer
end
object Label3: TLabel
Left = 160
Height = 16
Height = 15
Top = 72
Width = 74
Width = 73
Caption = 'X adjustment:'
ParentColor = False
end

View File

@ -6,7 +6,7 @@ interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, EditBtn,
StdCtrls, Spin, ExtCtrls, ComCtrls, Grids,
StdCtrls, Spin, ExtCtrls, ComCtrls, Grids, Math,
fpvv_drawer, fpimage, fpcanvas, coreconrec;
type
@ -19,7 +19,9 @@ type
Button1: TButton;
btnContourLines: TButton;
Button2: TButton;
btnSearchInTokens: TButton;
buttonRenderingTest: TButton;
editSearchInTokens: TEdit;
editFileName: TFileNameEdit;
Label2: TLabel;
Label3: TLabel;
@ -30,8 +32,9 @@ type
spinAdjustX: TSpinEdit;
spinScale: TFloatSpinEdit;
Label1: TLabel;
DXFTreeView: TTreeView;
TokensTreeView: TTreeView;
procedure btnContourLinesClick(Sender: TObject);
procedure btnSearchInTokensClick(Sender: TObject);
procedure btnVisualizeClick(Sender: TObject);
procedure btnViewDXFTokensClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
@ -193,6 +196,46 @@ begin
Drawer.Invalidate;
end;
procedure TfrmFPVViewer.btnSearchInTokensClick(Sender: TObject);
var
lTokenWithText, lCurNode: TTreeNode;
// minimal positions, based on the currently selected item to do "search next"
lSearchStart: Word = 0;
i, j: Integer;
lStr, lText: TCaption;
lNodesCount: Integer;
begin
lText := editSearchInTokens.Text;
// if something is selected, set this position as a minimum
if TokensTreeView.Selected <> nil then
lSearchStart := TokensTreeView.Selected.AbsoluteIndex;
// Now do the actual search
lTokenWithText := nil;
lNodesCount := TokensTreeView.Items.Count-1;
for i := 0 to lNodesCount do
begin
lCurNode := TokensTreeView.Items.Item[i];
if lCurNode = nil then Continue;
// Check the minimum level first
if lSearchStart >= lCurNode.AbsoluteIndex then Continue;
// Check the text
lStr := lCurNode.Text;
if System.Pos(lText, lStr) > 0 then
begin
lTokenWithText := lCurNode;
Break;
end;
end;
if lTokenWithText <> nil then
begin
TokensTreeView.Selected := lTokenWithText;
end;
end;
procedure TfrmFPVViewer.btnViewDXFTokensClick(Sender: TObject);
var
Reader: TvDXFVectorialReader;
@ -207,7 +250,7 @@ begin
Vec := TvVectorialDocument.Create;
try
Reader.ReadFromFile(editFileName.FileName, Vec);
ConvertDXFTokensToTreeView(Reader.Tokenizer.Tokens, DXFTreeView);
ConvertDXFTokensToTreeView(Reader.Tokenizer.Tokens, TokensTreeView);
finally
Reader.Free;
Vec.Free;
@ -243,7 +286,7 @@ begin
// Generate the positioning info
TvFormula(Vec.GetPage(0).GetEntity(0)).PositionElements(Canvas, 0, 0);
DXFTreeView.Items.Clear;
TokensTreeView.Items.Clear;
Vec.GenerateDebugTree(@FPVDebugAddItemProc);
finally
Vec.Free;
@ -326,7 +369,7 @@ function TfrmFPVViewer.FPVDebugAddItemProc(AStr: string; AParent: Pointer): Poin
var
lTreeItem: TTreeNode;
begin
lTreeItem := DXFTreeView.Items.AddChild(TTreeNode(AParent), AStr);
lTreeItem := TokensTreeView.Items.AddChild(TTreeNode(AParent), AStr);
Result := lTreeItem;
end;

View File

@ -14,9 +14,27 @@
<VersionInfo>
<StringTable ProductVersion=""/>
</VersionInfo>
<BuildModes Count="2">
<BuildModes Count="3">
<Item1 Name="default" Default="True"/>
<Item2 Name="qt">
<Item2 Name="win32-console">
<CompilerOptions>
<Version Value="11"/>
<Target>
<Filename Value="fpvviewer"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Other>
<CompilerMessages>
<UseMsgFile Value="True"/>
</CompilerMessages>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
</Item2>
<Item3 Name="qt">
<MacroValues Count="1">
<Macro1 Name="LCLWidgetType" Value="qt"/>
</MacroValues>
@ -45,7 +63,7 @@
</Other>
<LCLWidgetType Value="qt"/>
</CompilerOptions>
</Item2>
</Item3>
</BuildModes>
<PublishOptions>
<Version Value="2"/>