IdeInspector: 2.4.0 comp

git-svn-id: trunk@28708 -
This commit is contained in:
martin 2010-12-13 21:33:10 +00:00
parent 32a62507fe
commit e476e14b73

View File

@ -99,15 +99,17 @@ type
procedure DoPropSelChanged(Sender: TObject); procedure DoPropSelChanged(Sender: TObject);
protected protected
FPropertiesGrid: TCustomPropertiesGrid; FPropertiesGrid: TCustomPropertiesGrid;
procedure SetSelected(AComp: TComponent);
procedure UpdateTree; procedure UpdateTree;
procedure Notification(AComponent: TComponent; Operation: TOperation); override; procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure DoActiveFormChanged(Sender: TObject; Form: TCustomForm); procedure DoActiveFormChanged(Sender: TObject; Form: TCustomForm);
procedure DoActiveControChanged(Sender: TObject; LastControl: TControl); procedure DoActiveControChanged(Sender: TObject; LastControl: TControl);
procedure DoKeyDownBefore(Sender: TObject; var Key: Word; Shift: TShiftState); procedure DoKeyDownBefore(Sender: TObject; var Key: Word; Shift: TShiftState);
function IndexOfCurrent: Integer; function IndexOfCurrent: Integer;
procedure SetSelected(AComp: TComponent);
procedure UpdateCurrent; // set to Fselected
procedure DisplayCurrent;
procedure UpdateHistory(ForceAdd: Boolean = False); procedure UpdateHistory(ForceAdd: Boolean = False);
procedure UpdateCurrent;
public public
{ public declarations } { public declarations }
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
@ -212,7 +214,7 @@ begin
end; end;
if FCurEntry.Comp <> nil then if FCurEntry.Comp <> nil then
SetSelected(FCurEntry.Comp); SetSelected(FCurEntry.Comp);
UpdateCurrent; DisplayCurrent;
end; end;
procedure TIdeInspectForm.FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure TIdeInspectForm.FormClose(Sender: TObject; var CloseAction: TCloseAction);
@ -247,11 +249,17 @@ var
begin begin
Row := FPropertiesGrid.GetActiveRow; Row := FPropertiesGrid.GetActiveRow;
Method.Code := nil;; Method.Code := nil;;
if (Row <> nil) and (Row.Editor is TMethodPropertyEditor) then if (Row <> nil) then begin
Method := TMethodPropertyEditor(Row.Editor).GetMethodValue; if (Row.Editor is TMethodPropertyEditor) then begin
Method := TMethodPropertyEditor(Row.Editor).GetMethodValue;
FPropertiesGrid.PropertyEditorHook.LookupRoot := nil; // prevent edit
end
else
FPropertiesGrid.PropertyEditorHook.LookupRoot := FSelected;
end;
if Method.Code = nil then begin if Method.Code = nil then begin
SetSelected(FSelected); UpdateCurrent;
exit; exit;
end; end;
@ -288,7 +296,7 @@ begin
FCurEntry.Display := s; FCurEntry.Display := s;
FCurEntry.Comp := nil; FCurEntry.Comp := nil;
FCurEntry.TheUnitName := TObject(Method.Data).ClassType.UnitName; FCurEntry.TheUnitName := GetClassUnitName(TObject(Method.Data).ClassType);
FCurEntry.FileName := LazarusIDE.FindUnitFile(FCurEntry.TheUnitName, LazarusIDE); FCurEntry.FileName := LazarusIDE.FindUnitFile(FCurEntry.TheUnitName, LazarusIDE);
if MethName <> '' then if MethName <> '' then
FCurEntry.IdentifierName := TObject(Method.Data).ClassName + '.' + MethName FCurEntry.IdentifierName := TObject(Method.Data).ClassName + '.' + MethName
@ -340,9 +348,13 @@ end;
procedure TIdeInspectForm.btnOpenFileClick(Sender: TObject); procedure TIdeInspectForm.btnOpenFileClick(Sender: TObject);
begin begin
if FCurEntry.IdentifierName <> '' then if (FCurEntry.IdentifierName <> '') and
LazarusIDE.DoOpenFileAndJumpToIdentifier(EditFile.Text, FCurEntry.IdentifierName, -1, -1, [ofOnlyIfExists, ofRegularFile]) (LazarusIDE.DoOpenFileAndJumpToIdentifier
else (EditFile.Text, FCurEntry.IdentifierName, -1, -1, [ofOnlyIfExists, ofRegularFile])
= mrOK)
then
exit;
if FCurEntry.Line > 0 then if FCurEntry.Line > 0 then
LazarusIDE.DoOpenFileAndJumpToPos(EditFile.Text, Point(1,FCurEntry.Line), Max(FCurEntry.Line-1,1), -1, -1, [ofOnlyIfExists, ofRegularFile]) LazarusIDE.DoOpenFileAndJumpToPos(EditFile.Text, Point(1,FCurEntry.Line), Max(FCurEntry.Line-1,1), -1, -1, [ofOnlyIfExists, ofRegularFile])
else else
@ -497,35 +509,6 @@ begin
SetSelected(TComponent(TreeView1.Selected.Data)); SetSelected(TComponent(TreeView1.Selected.Data));
end; end;
procedure TIdeInspectForm.SetSelected(AComp: TComponent);
begin
FSelected := AComp;
FPropertiesGrid.TIObject := FSelected;
btnSubComponent.Enabled := (FSelected <> nil) and (FSelected.ComponentCount > 0);
btnControls.Enabled := (FSelected <> nil) and
(FSelected is TWinControl) and (TWinControl(FSelected).ControlCount > 0);
UpdateTree;
// keep date, if the component gets destroyed
if FCurEntry.Comp <> FSelected then begin
FCurEntry.Comp := FSelected;
FCurEntry.UpdateDisplayName;
if FSelected <> nil then begin
FCurEntry.TheUnitName := FSelected.UnitName;
FCurEntry.FileName := LazarusIDE.FindUnitFile(FCurEntry.TheUnitName, LazarusIDE);
FCurEntry.IdentifierName := FSelected.ClassName;
FCurEntry.Line := -1;
end
else begin
FCurEntry.TheUnitName := '';
FCurEntry.FileName := '';
FCurEntry.IdentifierName := '';
FCurEntry.Line := -1;
end;
UpdateHistory;
end;
end;
procedure TIdeInspectForm.UpdateTree; procedure TIdeInspectForm.UpdateTree;
function FindNode(AComp: TComponent): TTreeNode; function FindNode(AComp: TComponent): TTreeNode;
var var
@ -574,7 +557,7 @@ begin
if (Operation = opRemove) and (FCurEntry <> nil) and (FCurEntry.Comp = AComponent) then begin if (Operation = opRemove) and (FCurEntry <> nil) and (FCurEntry.Comp = AComponent) then begin
FCurEntry.Comp := nil; FCurEntry.Comp := nil;
FCurEntry.UpdateDisplayName; FCurEntry.UpdateDisplayName;
UpdateCurrent; DisplayCurrent;
end; end;
if (Operation = opRemove) and (FHistoryList <> nil) then begin if (Operation = opRemove) and (FHistoryList <> nil) then begin
f := False; f := False;
@ -707,10 +690,44 @@ begin
ComboHistory.Items.Add(THistoryEntry(FHistoryList[i]).Display); ComboHistory.Items.Add(THistoryEntry(FHistoryList[i]).Display);
FIsUpdatingHistory := False; FIsUpdatingHistory := False;
DisplayCurrent;
end;
procedure TIdeInspectForm.SetSelected(AComp: TComponent);
begin
FSelected := AComp;
FPropertiesGrid.TIObject := FSelected;
btnSubComponent.Enabled := (FSelected <> nil) and (FSelected.ComponentCount > 0);
btnControls.Enabled := (FSelected <> nil) and
(FSelected is TWinControl) and (TWinControl(FSelected).ControlCount > 0);
UpdateTree;
UpdateCurrent; UpdateCurrent;
end; end;
procedure TIdeInspectForm.UpdateCurrent; procedure TIdeInspectForm.UpdateCurrent;
begin
// keep date, if the component gets destroyed
if FCurEntry.Comp <> FSelected then begin
FCurEntry.Comp := FSelected;
FCurEntry.UpdateDisplayName;
if FSelected <> nil then begin
FCurEntry.TheUnitName := GetClassUnitName(FSelected.ClassType);
FCurEntry.FileName := LazarusIDE.FindUnitFile(FCurEntry.TheUnitName, LazarusIDE);
FCurEntry.IdentifierName := FSelected.ClassName;
FCurEntry.Line := -1;
end
else begin
FCurEntry.TheUnitName := '';
FCurEntry.FileName := '';
FCurEntry.IdentifierName := '';
FCurEntry.Line := -1;
end;
UpdateHistory;
end;
end;
procedure TIdeInspectForm.DisplayCurrent;
begin begin
FIsUpdatingHistory := True; FIsUpdatingHistory := True;
ComboHistory.Text := FCurEntry.Display; ComboHistory.Text := FCurEntry.Display;
@ -744,6 +761,7 @@ begin
Name := 'FPropertiesGrid'; Name := 'FPropertiesGrid';
Parent := TabControl1; Parent := TabControl1;
Align := alClient; Align := alClient;
SaveOnChangeTIObject := False;
OnSelectionChange := @DoPropSelChanged; OnSelectionChange := @DoPropSelChanged;
end; end;