Skip to content

Commit ab8dc02

Browse files
Updates to StructureView
1 parent 0ec6a28 commit ab8dc02

File tree

8 files changed

+115
-81
lines changed

8 files changed

+115
-81
lines changed

Zoomicon.Downloader/Zoomicon.Downloader.dproj

+7-7
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,8 @@
178178
</Source>
179179
</Delphi.Personality>
180180
<Deployment Version="3">
181-
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
182-
<Platform Name="OSX32">
181+
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
182+
<Platform Name="iOSSimulator">
183183
<Overwrite>true</Overwrite>
184184
</Platform>
185185
</DeployFile>
@@ -194,17 +194,17 @@
194194
<Overwrite>true</Overwrite>
195195
</Platform>
196196
</DeployFile>
197-
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
198-
<Platform Name="iOSSimulator">
199-
<Overwrite>true</Overwrite>
200-
</Platform>
201-
</DeployFile>
202197
<DeployFile LocalName="..\..\..\..\..\..\Public\Documents\Embarcadero\Studio\21.0\Bpl\Zoomicon.Downloader.bpl" Configuration="Debug" Class="ProjectOutput">
203198
<Platform Name="Win32">
204199
<RemoteName>Zoomicon_Downloader.bpl</RemoteName>
205200
<Overwrite>true</Overwrite>
206201
</Platform>
207202
</DeployFile>
203+
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
204+
<Platform Name="OSX32">
205+
<Overwrite>true</Overwrite>
206+
</Platform>
207+
</DeployFile>
208208
<DeployClass Name="AdditionalDebugSymbols">
209209
<Platform Name="OSX32">
210210
<Operation>1</Operation>

Zoomicon.Generics/Zoomicon.Generics.dproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -912,9 +912,9 @@
912912
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
913913
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
914914
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
915+
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
915916
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
916917
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
917-
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
918918
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
919919
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
920920
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>

Zoomicon.GitStore/Zoomicon.GitStore.dproj

+4-4
Original file line numberDiff line numberDiff line change
@@ -201,13 +201,13 @@
201201
<Overwrite>true</Overwrite>
202202
</Platform>
203203
</DeployFile>
204-
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
205-
<Platform Name="iOSSimulator">
204+
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
205+
<Platform Name="OSX32">
206206
<Overwrite>true</Overwrite>
207207
</Platform>
208208
</DeployFile>
209-
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
210-
<Platform Name="OSX32">
209+
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
210+
<Platform Name="iOSSimulator">
211211
<Overwrite>true</Overwrite>
212212
</Platform>
213213
</DeployFile>

Zoomicon.Introspection/Zoomicon.Introspection.FMX.StructureView.pas

+98-64
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ interface
2222
FMX.Types; //for RegisterFmxClasses
2323

2424
const
25+
{$region 'Defaults'}
26+
2527
DEFAULT_SHOW_ONLY_VISIBLE = true;
2628
DEFAULT_SHOW_ONLY_NAMED = true;
2729
DEFAULT_SHOW_NAMES = false;
@@ -32,6 +34,8 @@ interface
3234
DEFAULT_DRAGDROP_REPARENT = false; //acting as structure viewer, not editor by default
3335
DEFAULT_DRAGDROP_SELECTTARGET = true; //on drop, target is selected
3436

37+
{$endregion}
38+
3539
type
3640
//TClassList = TList<TClass>; //using old-style (non Generic) "TClassList" from System.Contnrs instead
3741

@@ -80,6 +84,9 @@ TStructureView = class(TFrame)
8084
{DragDropXX}
8185
procedure SetDragDropReorder(const Value: Boolean); virtual;
8286
procedure SetDragDropReparent(const Value: Boolean); virtual;
87+
{SelectedItem}
88+
function GetSelectedObject: TObject; virtual;
89+
procedure SetSelectedObject(const Value: TObject); virtual;
8390

8491
public
8592
constructor Create(AOwner: TComponent); override;
@@ -98,6 +105,7 @@ TStructureView = class(TFrame)
98105
property DragDropReorder: Boolean read FDragDropReorder write SetDragDropReorder default DEFAULT_DRAGDROP_REORDER;
99106
property DragDropReparent: Boolean read FDragDropReparent write SetDragDropReparent default DEFAULT_DRAGDROP_REPARENT;
100107
property DragDropSelectTarget: Boolean read FDragDropSelectTarget write FDragDropSelectTarget default DEFAULT_DRAGDROP_SELECTTARGET;
108+
property SelectedObject: TObject read GetSelectedObject write SetSelectedObject; //default nil
101109
//Events//
102110
property OnSelection: TSelectionEvent read FOnSelection write FOnSelection;
103111
property OnRestructuring: TRestructuringEvent read FOnRestructuring write FOnRestructuring;
@@ -113,7 +121,8 @@ implementation
113121
System.Rtti, //for TValue
114122
FMX.Dialogs, //for ShowMessage
115123
Zoomicon.Helpers.RTL.ClassListHelpers, //for TClassList.FindClassOf
116-
Zoomicon.Helpers.FMX.ImgList.ImageListHelpers; //for TImageListAddBitmapHelper
124+
Zoomicon.Helpers.FMX.ImgList.ImageListHelpers, //for TImageListAddBitmapHelper
125+
Zoomicon.Helpers.FMX.TreeView.TreeViewHelpers; //for TTreeViewItemSearchHelper
117126

118127
{$R *.fmx}
119128

@@ -151,68 +160,6 @@ destructor TStructureView.Destroy;
151160

152161
{$region 'Properties' ---------------------------------------------------}
153162

154-
{$region 'DragDropXX'}
155-
156-
procedure TStructureView.SetDragDropReorder(const Value: Boolean);
157-
begin
158-
FDragDropReorder := Value;
159-
TreeView.AllowDrag := FDragDropReorder or FDragDropReparent;
160-
end;
161-
162-
procedure TStructureView.SetDragDropReparent(const Value: Boolean);
163-
begin
164-
FDragDropReparent := Value;
165-
TreeView.AllowDrag := FDragDropReorder or FDragDropReparent;
166-
end;
167-
168-
{$endregion}
169-
170-
{$region 'ShowXX'}
171-
172-
procedure TStructureView.SetShowOnlyClasses(const Value: TClassList);
173-
begin
174-
FShowOnlyClasses := Value;
175-
LoadTreeView;
176-
end;
177-
178-
procedure TStructureView.SetShowOnlyVisible(const Value: Boolean);
179-
begin
180-
FShowOnlyVisible := Value;
181-
LoadTreeView;
182-
end;
183-
184-
procedure TStructureView.SetShowOnlyNamed(const Value: Boolean);
185-
begin
186-
FShowOnlyNamed := Value;
187-
LoadTreeView;
188-
end;
189-
190-
procedure TStructureView.SetShowNames(const Value: Boolean);
191-
begin
192-
FShowNames := Value;
193-
LoadTreeView;
194-
end;
195-
196-
procedure TStructureView.SetShowTypes(const Value: Boolean);
197-
begin
198-
FShowTypes := Value;
199-
LoadTreeView;
200-
end;
201-
202-
procedure TStructureView.SetShowHintNames(const Value: Boolean);
203-
begin
204-
FShowHintNames := Value;
205-
LoadTreeView;
206-
end;
207-
208-
procedure TStructureView.SetShowHintTypes(const Value: Boolean);
209-
begin
210-
FShowHintTypes := Value;
211-
LoadTreeView;
212-
end;
213-
214-
{$endregion}
215-
216163
{$region 'GUIRoot'}
217164

218165
procedure TStructureView.SetGUIRoot(const Value: TControl);
@@ -283,14 +230,101 @@ procedure TStructureView.LoadTreeView;
283230

284231
{$endregion}
285232

233+
{$region 'ShowXX'}
234+
235+
procedure TStructureView.SetShowOnlyClasses(const Value: TClassList);
236+
begin
237+
FShowOnlyClasses := Value;
238+
LoadTreeView;
239+
end;
240+
241+
procedure TStructureView.SetShowOnlyVisible(const Value: Boolean);
242+
begin
243+
FShowOnlyVisible := Value;
244+
LoadTreeView;
245+
end;
246+
247+
procedure TStructureView.SetShowOnlyNamed(const Value: Boolean);
248+
begin
249+
FShowOnlyNamed := Value;
250+
LoadTreeView;
251+
end;
252+
253+
procedure TStructureView.SetShowNames(const Value: Boolean);
254+
begin
255+
FShowNames := Value;
256+
LoadTreeView;
257+
end;
258+
259+
procedure TStructureView.SetShowTypes(const Value: Boolean);
260+
begin
261+
FShowTypes := Value;
262+
LoadTreeView;
263+
end;
264+
265+
procedure TStructureView.SetShowHintNames(const Value: Boolean);
266+
begin
267+
FShowHintNames := Value;
268+
LoadTreeView;
269+
end;
270+
271+
procedure TStructureView.SetShowHintTypes(const Value: Boolean);
272+
begin
273+
FShowHintTypes := Value;
274+
LoadTreeView;
275+
end;
276+
277+
{$endregion}
278+
279+
{$region 'DragDropXX'}
280+
281+
procedure TStructureView.SetDragDropReorder(const Value: Boolean);
282+
begin
283+
FDragDropReorder := Value;
284+
TreeView.AllowDrag := FDragDropReorder or FDragDropReparent;
285+
end;
286+
287+
procedure TStructureView.SetDragDropReparent(const Value: Boolean);
288+
begin
289+
FDragDropReparent := Value;
290+
TreeView.AllowDrag := FDragDropReorder or FDragDropReparent;
291+
end;
292+
293+
{$endregion}
294+
295+
{$region 'SelectedObject'}
296+
297+
function TStructureView.GetSelectedObject: TObject;
298+
begin
299+
var selectedItem := TreeView.Selected;
300+
if Assigned(selectedItem) then
301+
result := selectedItem.TagObject
302+
else
303+
result := nil;
304+
end;
305+
306+
procedure TStructureView.SetSelectedObject(const Value: TObject);
307+
begin
308+
if Assigned(Value) then
309+
TreeView.Selected := TreeView.FindObject(Value)
310+
else
311+
TreeView.Selected := nil; //clear selection (instead of searching for "TagObject = nil" at the tree items
312+
end;
313+
314+
{$endregion}
315+
286316
{$endregion .............................................................}
287317

288318
{$region 'Events' -------------------------------------------------------}
289319

290320
procedure TStructureView.TreeViewChange(Sender: TObject);
291321
begin
292322
if Assigned(FOnSelection) then
293-
FOnSelection(Self, TreeView.Selected.TagObject);
323+
begin
324+
var selectedItem := TreeView.Selected;
325+
if Assigned(selectedItem) then
326+
FOnSelection(Self, selectedItem.TagObject);
327+
end;
294328
end;
295329

296330
procedure TStructureView.TreeViewDragChange(SourceItem, DestItem: TTreeViewItem; var Allow: Boolean);

Zoomicon.Introspection/Zoomicon.Introspection.FMX.dproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -908,10 +908,10 @@
908908
</DeployClass>
909909
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
910910
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
911-
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
912911
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
913-
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
912+
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
914913
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
914+
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
915915
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
916916
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
917917
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>

Zoomicon.Media/Zoomicon.Media.FMX.dproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -903,9 +903,9 @@
903903
</DeployClass>
904904
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
905905
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
906+
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
906907
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
907908
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
908-
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
909909
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
910910
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
911911
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>

Zoomicon.Puzzler/Zoomicon.Puzzler.dproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -905,10 +905,10 @@
905905
</DeployClass>
906906
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
907907
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
908+
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
908909
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
909910
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
910911
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
911-
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
912912
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
913913
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
914914
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>

Zoomicon.Zooming/Zoomicon.Zooming.FMX.dproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -916,10 +916,10 @@
916916
</DeployClass>
917917
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
918918
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
919+
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
919920
<ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
920921
<ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME)"/>
921922
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
922-
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
923923
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
924924
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
925925
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>

0 commit comments

Comments
 (0)