You've already forked lazarus-ccr
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:
@ -46,9 +46,9 @@ object frmFPVViewer: TfrmFPVViewer
|
|||||||
end
|
end
|
||||||
object Label1: TLabel
|
object Label1: TLabel
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 16
|
Height = 15
|
||||||
Top = 97
|
Top = 97
|
||||||
Width = 47
|
Width = 46
|
||||||
Caption = 'Scale by:'
|
Caption = 'Scale by:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
@ -77,15 +77,32 @@ object frmFPVViewer: TfrmFPVViewer
|
|||||||
object pageViewer: TPage
|
object pageViewer: TPage
|
||||||
end
|
end
|
||||||
object pageTreeData: TPage
|
object pageTreeData: TPage
|
||||||
object DXFTreeView: TTreeView
|
object TokensTreeView: TTreeView
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 410
|
Height = 378
|
||||||
Top = 0
|
Top = 32
|
||||||
Width = 485
|
Width = 485
|
||||||
Align = alClient
|
Align = alBottom
|
||||||
DefaultItemHeight = 18
|
DefaultItemHeight = 18
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
object buttonRenderingTest: TButton
|
object buttonRenderingTest: TButton
|
||||||
@ -117,9 +134,9 @@ object frmFPVViewer: TfrmFPVViewer
|
|||||||
end
|
end
|
||||||
object Label2: TLabel
|
object Label2: TLabel
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 16
|
Height = 15
|
||||||
Top = 72
|
Top = 72
|
||||||
Width = 74
|
Width = 73
|
||||||
Caption = 'Y adjustment:'
|
Caption = 'Y adjustment:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
@ -145,9 +162,9 @@ object frmFPVViewer: TfrmFPVViewer
|
|||||||
end
|
end
|
||||||
object Label3: TLabel
|
object Label3: TLabel
|
||||||
Left = 160
|
Left = 160
|
||||||
Height = 16
|
Height = 15
|
||||||
Top = 72
|
Top = 72
|
||||||
Width = 74
|
Width = 73
|
||||||
Caption = 'X adjustment:'
|
Caption = 'X adjustment:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
|
@ -6,7 +6,7 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, EditBtn,
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, EditBtn,
|
||||||
StdCtrls, Spin, ExtCtrls, ComCtrls, Grids,
|
StdCtrls, Spin, ExtCtrls, ComCtrls, Grids, Math,
|
||||||
fpvv_drawer, fpimage, fpcanvas, coreconrec;
|
fpvv_drawer, fpimage, fpcanvas, coreconrec;
|
||||||
|
|
||||||
type
|
type
|
||||||
@ -19,7 +19,9 @@ type
|
|||||||
Button1: TButton;
|
Button1: TButton;
|
||||||
btnContourLines: TButton;
|
btnContourLines: TButton;
|
||||||
Button2: TButton;
|
Button2: TButton;
|
||||||
|
btnSearchInTokens: TButton;
|
||||||
buttonRenderingTest: TButton;
|
buttonRenderingTest: TButton;
|
||||||
|
editSearchInTokens: TEdit;
|
||||||
editFileName: TFileNameEdit;
|
editFileName: TFileNameEdit;
|
||||||
Label2: TLabel;
|
Label2: TLabel;
|
||||||
Label3: TLabel;
|
Label3: TLabel;
|
||||||
@ -30,8 +32,9 @@ type
|
|||||||
spinAdjustX: TSpinEdit;
|
spinAdjustX: TSpinEdit;
|
||||||
spinScale: TFloatSpinEdit;
|
spinScale: TFloatSpinEdit;
|
||||||
Label1: TLabel;
|
Label1: TLabel;
|
||||||
DXFTreeView: TTreeView;
|
TokensTreeView: TTreeView;
|
||||||
procedure btnContourLinesClick(Sender: TObject);
|
procedure btnContourLinesClick(Sender: TObject);
|
||||||
|
procedure btnSearchInTokensClick(Sender: TObject);
|
||||||
procedure btnVisualizeClick(Sender: TObject);
|
procedure btnVisualizeClick(Sender: TObject);
|
||||||
procedure btnViewDXFTokensClick(Sender: TObject);
|
procedure btnViewDXFTokensClick(Sender: TObject);
|
||||||
procedure Button1Click(Sender: TObject);
|
procedure Button1Click(Sender: TObject);
|
||||||
@ -193,6 +196,46 @@ begin
|
|||||||
Drawer.Invalidate;
|
Drawer.Invalidate;
|
||||||
end;
|
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);
|
procedure TfrmFPVViewer.btnViewDXFTokensClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
Reader: TvDXFVectorialReader;
|
Reader: TvDXFVectorialReader;
|
||||||
@ -207,7 +250,7 @@ begin
|
|||||||
Vec := TvVectorialDocument.Create;
|
Vec := TvVectorialDocument.Create;
|
||||||
try
|
try
|
||||||
Reader.ReadFromFile(editFileName.FileName, Vec);
|
Reader.ReadFromFile(editFileName.FileName, Vec);
|
||||||
ConvertDXFTokensToTreeView(Reader.Tokenizer.Tokens, DXFTreeView);
|
ConvertDXFTokensToTreeView(Reader.Tokenizer.Tokens, TokensTreeView);
|
||||||
finally
|
finally
|
||||||
Reader.Free;
|
Reader.Free;
|
||||||
Vec.Free;
|
Vec.Free;
|
||||||
@ -243,7 +286,7 @@ begin
|
|||||||
// Generate the positioning info
|
// Generate the positioning info
|
||||||
TvFormula(Vec.GetPage(0).GetEntity(0)).PositionElements(Canvas, 0, 0);
|
TvFormula(Vec.GetPage(0).GetEntity(0)).PositionElements(Canvas, 0, 0);
|
||||||
|
|
||||||
DXFTreeView.Items.Clear;
|
TokensTreeView.Items.Clear;
|
||||||
Vec.GenerateDebugTree(@FPVDebugAddItemProc);
|
Vec.GenerateDebugTree(@FPVDebugAddItemProc);
|
||||||
finally
|
finally
|
||||||
Vec.Free;
|
Vec.Free;
|
||||||
@ -326,7 +369,7 @@ function TfrmFPVViewer.FPVDebugAddItemProc(AStr: string; AParent: Pointer): Poin
|
|||||||
var
|
var
|
||||||
lTreeItem: TTreeNode;
|
lTreeItem: TTreeNode;
|
||||||
begin
|
begin
|
||||||
lTreeItem := DXFTreeView.Items.AddChild(TTreeNode(AParent), AStr);
|
lTreeItem := TokensTreeView.Items.AddChild(TTreeNode(AParent), AStr);
|
||||||
Result := lTreeItem;
|
Result := lTreeItem;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -14,9 +14,27 @@
|
|||||||
<VersionInfo>
|
<VersionInfo>
|
||||||
<StringTable ProductVersion=""/>
|
<StringTable ProductVersion=""/>
|
||||||
</VersionInfo>
|
</VersionInfo>
|
||||||
<BuildModes Count="2">
|
<BuildModes Count="3">
|
||||||
<Item1 Name="default" Default="True"/>
|
<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">
|
<MacroValues Count="1">
|
||||||
<Macro1 Name="LCLWidgetType" Value="qt"/>
|
<Macro1 Name="LCLWidgetType" Value="qt"/>
|
||||||
</MacroValues>
|
</MacroValues>
|
||||||
@ -45,7 +63,7 @@
|
|||||||
</Other>
|
</Other>
|
||||||
<LCLWidgetType Value="qt"/>
|
<LCLWidgetType Value="qt"/>
|
||||||
</CompilerOptions>
|
</CompilerOptions>
|
||||||
</Item2>
|
</Item3>
|
||||||
</BuildModes>
|
</BuildModes>
|
||||||
<PublishOptions>
|
<PublishOptions>
|
||||||
<Version Value="2"/>
|
<Version Value="2"/>
|
||||||
|
Reference in New Issue
Block a user