IDE: codebrowser: added progressbar

git-svn-id: trunk@14194 -
This commit is contained in:
mattias 2008-02-19 17:43:48 +00:00
parent 5d5e0293b2
commit e97e5ab6b0
3 changed files with 78 additions and 31 deletions

View File

@ -25,7 +25,7 @@ object CodeBrowserView: TCodeBrowserView
TabOrder = 0
object ScopeComboBox: TComboBox
Left = 3
Height = 25
Height = 29
Width = 315
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
MaxLength = 0
@ -68,7 +68,7 @@ object CodeBrowserView: TCodeBrowserView
Left = 12
Height = 22
Top = 8
Width = 164
Width = 165
Caption = 'ShowPrivateCheckBox'
OnChange = ShowPrivateCheckBoxChange
TabOrder = 0
@ -78,7 +78,7 @@ object CodeBrowserView: TCodeBrowserView
Left = 272
Height = 22
Top = 8
Width = 182
Width = 183
Caption = 'ShowProtectedCheckBox'
OnChange = ShowProtectedCheckBoxChange
TabOrder = 1
@ -88,7 +88,7 @@ object CodeBrowserView: TCodeBrowserView
object BrowseTreeView: TTreeView
AnchorSideTop.Control = OptionsGroupBox
AnchorSideTop.Side = asrBottom
Height = 297
Height = 277
Top = 246
Width = 634
Align = alBottom
@ -285,6 +285,14 @@ object CodeBrowserView: TCodeBrowserView
Text = 'IdentifierFilterEdit'
end
end
object ProgressBar1: TProgressBar
Height = 20
Top = 523
Width = 634
Align = alBottom
Max = 10000
TabOrder = 5
end
object ImageList1: TImageList
Height = 18
Width = 18

View File

@ -9,7 +9,7 @@ LazarusResources.Add('TCodeBrowserView','FORMDATA',[
+'TGroupBox'#13'ScopeGroupBox'#4'Left'#2#6#6'Height'#2'2'#3'Top'#2#6#5'Width'
+#3'n'#2#5'Align'#7#5'alTop'#20'BorderSpacing.Around'#2#6#7'Caption'#6#13'Sco'
+'peGroupBox'#12'ClientHeight'#2#31#11'ClientWidth'#3'j'#2#8'TabOrder'#2#0#0#9
+'TComboBox'#13'ScopeComboBox'#4'Left'#2#3#6'Height'#2#25#5'Width'#3';'#1#16
+'TComboBox'#13'ScopeComboBox'#4'Left'#2#3#6'Height'#2#29#5'Width'#3';'#1#16
+'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#9
+'MaxLength'#2#0#10'OnDropDown'#7#21'ScopeComboBoxDropDown'#13'OnEditingDone'
+#7#24'ScopeComboBoxEditingDone'#8'TabOrder'#2#0#4'Text'#6#13'ScopeComboBox'#0
@ -24,14 +24,14 @@ LazarusResources.Add('TCodeBrowserView','FORMDATA',[
+'op'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'
+#2#6#19'BorderSpacing.Right'#2#6#7'Caption'#6#15'OptionsGroupBox'#12'ClientH'
+'eight'#2#31#11'ClientWidth'#3'j'#2#8'TabOrder'#2#1#0#9'TCheckBox'#19'ShowPr'
+'ivateCheckBox'#4'Left'#2#12#6'Height'#2#22#3'Top'#2#8#5'Width'#3#164#0#7'Ca'
+'ivateCheckBox'#4'Left'#2#12#6'Height'#2#22#3'Top'#2#8#5'Width'#3#165#0#7'Ca'
+'ption'#6#19'ShowPrivateCheckBox'#8'OnChange'#7#25'ShowPrivateCheckBoxChange'
+#8'TabOrder'#2#0#11'UseOnChange'#9#0#0#9'TCheckBox'#21'ShowProtectedCheckBox'
+#4'Left'#3#16#1#6'Height'#2#22#3'Top'#2#8#5'Width'#3#182#0#7'Caption'#6#21'S'
+#4'Left'#3#16#1#6'Height'#2#22#3'Top'#2#8#5'Width'#3#183#0#7'Caption'#6#21'S'
+'howProtectedCheckBox'#8'OnChange'#7#27'ShowProtectedCheckBoxChange'#8'TabOr'
+'der'#2#1#11'UseOnChange'#9#0#0#0#9'TTreeView'#14'BrowseTreeView'#21'AnchorS'
+'ideTop.Control'#7#15'OptionsGroupBox'#18'AnchorSideTop.Side'#7#9'asrBottom'
+#6'Height'#3')'#1#3'Top'#3#246#0#5'Width'#3'z'#2#5'Align'#7#8'alBottom'#7'An'
+#6'Height'#3#21#1#3'Top'#3#246#0#5'Width'#3'z'#2#5'Align'#7#8'alBottom'#7'An'
+'chors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#17'BorderSpacing.Top'
+#2#6#17'DefaultItemHeight'#2#19#6'Images'#7#10'ImageList1'#14'ParentShowHint'
+#8#9'PopupMenu'#7#10'PopupMenu1'#8'ShowHint'#9#8'ShowRoot'#8#8'TabOrder'#2#2
@ -98,27 +98,29 @@ LazarusResources.Add('TCodeBrowserView','FORMDATA',[
+#5'TEdit'#20'IdentifierFilterEdit'#21'AnchorSideTop.Control'#7#23'ShowIdenti'
+'fiersCheckBox'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#3#223#0#6'Heig'
+'ht'#2#23#3'Top'#2';'#5'Width'#3#201#0#13'OnEditingDone'#7#28'PackageFilterE'
+'ditEditingDone'#8'TabOrder'#2#5#4'Text'#6#20'IdentifierFilterEdit'#0#0#0#10
+'TImageList'#10'ImageList1'#6'Height'#2#18#5'Width'#2#18#4'left'#3'*'#1#3'to'
+'p'#3#196#0#0#0#10'TPopupMenu'#10'PopupMenu1'#7'OnPopup'#7#15'PopupMenu1Popu'
+'p'#4'left'#3#248#0#3'top'#3#196#0#0#9'TMenuItem'#23'CopyDescriptionMenuItem'
+#7'Caption'#6#23'CopyDescriptionMenuItem'#7'OnClick'#7#28'CopyDescriptionMen'
+'uItemClick'#0#0#9'TMenuItem'#22'CopyIdentifierMenuItem'#7'Caption'#6#22'Cop'
+'yIdentifierMenuItem'#7'OnClick'#7#27'CopyIdentifierMenuItemClick'#0#0#9'TMe'
+'nuItem'#21'CopySeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#25'Exp'
+'andAllPackagesMenuItem'#7'Caption'#6#25'ExpandAllPackagesMenuItem'#7'OnClic'
+'k'#7#30'ExpandAllPackagesMenuItemClick'#0#0#9'TMenuItem'#27'CollapseAllPack'
+'agesMenuItem'#7'Caption'#6#27'CollapseAllPackagesMenuItem'#7'OnClick'#7' Co'
+'llapseAllPackagesMenuItemClick'#0#0#9'TMenuItem'#28'AllPackagesSeparatorMen'
+'uItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#22'ExpandAllUnitsMenuItem'#7'Capt'
+'ion'#6#22'ExpandAllUnitsMenuItem'#7'OnClick'#7#27'ExpandAllUnitsMenuItemCli'
+'ck'#0#0#9'TMenuItem'#24'CollapseAllUnitsMenuItem'#7'Caption'#6#24'CollapseA'
+'llUnitsMenuItem'#7'OnClick'#7#29'CollapseAllUnitsMenuItemClick'#0#0#9'TMenu'
+'Item'#25'AllUnitsSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#24'E'
+'xpandAllClassesMenuItem'#7'Caption'#6#24'ExpandAllClassesMenuItem'#7'OnClic'
+'k'#7#29'ExpandAllClassesMenuItemClick'#0#0#9'TMenuItem'#26'CollapseAllClass'
+'esMenuItem'#7'Caption'#6#26'CollapseAllClassesMenuItem'#7'OnClick'#7#31'Col'
+'lapseAllClassesMenuItemClick'#0#0#9'TMenuItem'#27'AllClassesSeparatorMenuIt'
+'em'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#14'ExportMenuItem'#7'Caption'#6#14'E'
+'xportMenuItem'#7'OnClick'#7#19'ExportMenuItemClick'#0#0#0#0
+'ditEditingDone'#8'TabOrder'#2#5#4'Text'#6#20'IdentifierFilterEdit'#0#0#0#12
+'TProgressBar'#12'ProgressBar1'#6'Height'#2#20#3'Top'#3#11#2#5'Width'#3'z'#2
+#5'Align'#7#8'alBottom'#3'Max'#3#16''''#8'TabOrder'#2#5#0#0#10'TImageList'#10
+'ImageList1'#6'Height'#2#18#5'Width'#2#18#4'left'#3'*'#1#3'top'#3#196#0#0#0
+#10'TPopupMenu'#10'PopupMenu1'#7'OnPopup'#7#15'PopupMenu1Popup'#4'left'#3#248
+#0#3'top'#3#196#0#0#9'TMenuItem'#23'CopyDescriptionMenuItem'#7'Caption'#6#23
+'CopyDescriptionMenuItem'#7'OnClick'#7#28'CopyDescriptionMenuItemClick'#0#0#9
+'TMenuItem'#22'CopyIdentifierMenuItem'#7'Caption'#6#22'CopyIdentifierMenuIte'
+'m'#7'OnClick'#7#27'CopyIdentifierMenuItemClick'#0#0#9'TMenuItem'#21'CopySep'
+'aratorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#25'ExpandAllPackagesMenu'
+'Item'#7'Caption'#6#25'ExpandAllPackagesMenuItem'#7'OnClick'#7#30'ExpandAllP'
+'ackagesMenuItemClick'#0#0#9'TMenuItem'#27'CollapseAllPackagesMenuItem'#7'Ca'
+'ption'#6#27'CollapseAllPackagesMenuItem'#7'OnClick'#7' CollapseAllPackagesM'
+'enuItemClick'#0#0#9'TMenuItem'#28'AllPackagesSeparatorMenuItem'#7'Caption'#6
+#1'-'#0#0#9'TMenuItem'#22'ExpandAllUnitsMenuItem'#7'Caption'#6#22'ExpandAllU'
+'nitsMenuItem'#7'OnClick'#7#27'ExpandAllUnitsMenuItemClick'#0#0#9'TMenuItem'
+#24'CollapseAllUnitsMenuItem'#7'Caption'#6#24'CollapseAllUnitsMenuItem'#7'On'
+'Click'#7#29'CollapseAllUnitsMenuItemClick'#0#0#9'TMenuItem'#25'AllUnitsSepa'
+'ratorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#24'ExpandAllClassesMenuIt'
+'em'#7'Caption'#6#24'ExpandAllClassesMenuItem'#7'OnClick'#7#29'ExpandAllClas'
+'sesMenuItemClick'#0#0#9'TMenuItem'#26'CollapseAllClassesMenuItem'#7'Caption'
+#6#26'CollapseAllClassesMenuItem'#7'OnClick'#7#31'CollapseAllClassesMenuItem'
+'Click'#0#0#9'TMenuItem'#27'AllClassesSeparatorMenuItem'#7'Caption'#6#1'-'#0
+#0#9'TMenuItem'#14'ExportMenuItem'#7'Caption'#6#14'ExportMenuItem'#7'OnClick'
+#7#19'ExportMenuItemClick'#0#0#0#0
]);

View File

@ -274,6 +274,7 @@ type
PackageFilterContainsSpeedButton: TSpeedButton;
PackageFilterEdit: TEdit;
PopupMenu1: TPopupMenu;
ProgressBar1: TProgressBar;
ScopeComboBox: TComboBox;
ScopeGroupBox: TGroupBox;
ScopeWithRequiredPackagesCheckBox: TCheckBox;
@ -427,6 +428,26 @@ function StringToCodeBrowserTextFilter(const s: string): TCodeBrowserTextFilter;
implementation
const
ProgressGetScopeStart=0;
ProgressGetScopeSize=10;
ProgressGatherPackagesStart=ProgressGetScopeStart+ProgressGetScopeSize;
ProgressGatherPackagesSize=30;
ProgressFreeUnusedPkgStart=ProgressGatherPackagesStart+ProgressGatherPackagesSize;
ProgressFreeUnusedPkgSize=100;
ProgressAddNewUnitListsStart=ProgressFreeUnusedPkgStart+ProgressFreeUnusedPkgSize;
ProgressAddNewUnitListsSize=300;
ProgressGatherFileListsStart=ProgressAddNewUnitListsStart+ProgressAddNewUnitListsSize;
ProgressGatherFileListsSize=300;
ProgressGatherOutdatedFilesStart=ProgressGatherFileListsStart+ProgressGatherFileListsSize;
ProgressGatherOutdatedFilesSize=300;
ProgressUpdateUnitsStart=ProgressGatherOutdatedFilesStart+ProgressGatherOutdatedFilesSize;
ProgressUpdateUnitsSize=3000;
ProgressGetViewOptionsStart=ProgressUpdateUnitsStart+ProgressUpdateUnitsSize;
ProgressGetViewOptionsSize=10;
ProgressUpdateTreeViewStart=ProgressGetViewOptionsStart+ProgressGetViewOptionsSize;
ProgressUpdateTreeViewSize=1000;
ProgressTotal=ProgressUpdateTreeViewStart+ProgressUpdateTreeViewSize;
function CompareUnitListOwners(Data1, Data2: Pointer): integer;
begin
@ -516,6 +537,8 @@ begin
IdentifierFilterBeginsSpeedButton.Hint:=lisIdentifierBeginsWith;
IdentifierFilterContainsSpeedButton.Caption:=lisContains;
IdentifierFilterContainsSpeedButton.Hint:=lisIdentifierContains;
ProgressBar1.Max:=ProgressTotal;
InitImageList;
LoadOptions;
@ -811,6 +834,7 @@ begin
else
UpdateNeeded:=false;
Done:=true;
ProgressBar1.Position:=ProgressTotal;
exit;
end;
if ord(OldStage)<ord(cbwsFinished) then begin
@ -822,6 +846,7 @@ end;
procedure TCodeBrowserView.WorkGetScopeOptions;
begin
DebugLn(['TCodeBrowserView.WorkGetScopeOptions START']);
ProgressBar1.Position:=ProgressGetScopeStart;
Options.WithRequiredPackages:=ScopeWithRequiredPackagesCheckBox.Checked;
Options.Scope:=ScopeComboBox.Text;
@ -830,6 +855,7 @@ begin
fStage:=cbwsGatherPackages
else
fStage:=cbwsGetViewOptions;
ProgressBar1.Position:=ProgressGetScopeStart+ProgressGetScopeSize;
end;
procedure TCodeBrowserView.WorkGatherPackages;
@ -905,6 +931,7 @@ begin
// this stage finished -> next stage
fStage:=cbwsFreeUnusedPackages;
ProgressBar1.Position:=ProgressGatherPackagesStart+ProgressGatherPackagesSize;
end;
procedure TCodeBrowserView.WorkFreeUnusedPackages;
@ -938,11 +965,13 @@ var
UnusedPackage: TCodeBrowserUnitList;
begin
DebugLn(['TCodeBrowserView.WorkFreeUnusedPackages START']);
// find an unused package
UnusedPackage:=FindUnusedUnitList;
if UnusedPackage=nil then begin
// this stage finished -> next stage
fStage:=cbwsAddNewPackages;
ProgressBar1.Position:=ProgressFreeUnusedPkgStart+ProgressFreeUnusedPkgSize;
exit;
end;
@ -955,6 +984,7 @@ var
Node: TAvgLvlTreeNode;
List: TCodeBrowserUnitList;
begin
ProgressBar1.Position:=ProgressAddNewUnitListsStart;
if (FWorkingParserRoot<>nil) and (FWorkingParserRoot.UnitLists<>nil)
and (FParserRoot<>nil) then begin
Node:=FWorkingParserRoot.UnitLists.FindLowest;
@ -971,6 +1001,7 @@ begin
// this stage finished -> next stage
fStage:=cbwsGatherFiles;
ProgressBar1.Position:=ProgressAddNewUnitListsStart+ProgressAddNewUnitListsSize;
end;
procedure TCodeBrowserView.WorkGatherFileLists;
@ -1011,6 +1042,7 @@ begin
if List=nil then begin
// this stage finished -> next stage
fStage:=cbwsGatherOutdatedFiles;
ProgressBar1.Position:=ProgressGatherFileListsStart+ProgressGatherFileListsSize;
exit;
end;
@ -1294,6 +1326,7 @@ begin
// this stage finished -> next stage
fStage:=cbwsUpdateUnits;
ProgressBar1.Position:=ProgressGatherOutdatedFilesStart+ProgressGatherOutdatedFilesSize;
end;
procedure TCodeBrowserView.WorkUpdateUnits;
@ -1325,6 +1358,7 @@ begin
if AnUnit=nil then begin
// this stage finished -> next stage
fStage:=cbwsGetViewOptions;
ProgressBar1.Position:=ProgressUpdateUnitsStart+ProgressUpdateUnitsSize;
exit;
end;
@ -1451,13 +1485,16 @@ begin
fStage:=cbwsUpdateTreeView
else
fStage:=cbwsFinished;
ProgressBar1.Position:=ProgressGetViewOptionsStart+ProgressGetViewOptionsSize;
end;
procedure TCodeBrowserView.WorkUpdateTreeView;
begin
ProgressBar1.Position:=ProgressUpdateTreeViewStart;
UpdateTreeView;
// this stage finished -> next stage
fStage:=cbwsFinished;
ProgressBar1.Position:=ProgressUpdateTreeViewStart+ProgressUpdateTreeViewSize;
end;
procedure TCodeBrowserView.FreeUnitList(List: TCodeBrowserUnitList);