|
From: Robert M. <mar...@us...> - 2004-12-22 09:57:55
|
Update of /cvsroot/jvcl/dev/JVCL3/devtools/ReadPalettes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30076/JVCL3/devtools/ReadPalettes Modified Files: ReadPalettes.pas Added Files: usage.txt Log Message: expanded functionality --- NEW FILE: usage.txt --- This package spies on various IDE functions to create lists. The JVCL needs to be installed already. 1. Install this design time only package. 2. While still in the IDE open "DXXX Packages.bpg" from the Packages directory. 3. Perform a "Build all Projects" on it. 4. While still in the IDE uninstall this package (named 'IDE tool to create the list of all installed JVCL components'). 5. You will get a series of save dialogs for the various CSV files generated. Index: ReadPalettes.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/devtools/ReadPalettes/ReadPalettes.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ReadPalettes.pas 21 Dec 2004 18:17:47 -0000 1.2 --- ReadPalettes.pas 22 Dec 2004 09:57:44 -0000 1.3 *************** *** 11,26 **** uses Classes, Controls, ComCtrls, Forms, ! {$IFDEF WINDOWS} Dialogs, ! {$ENDIF WINDOWS} ! {$IFDEF LINUX} QDialogs, ! {$ENDIF LINUX} ! TypInfo, SysUtils, ! ToolsAPI; var VisibleComponentList: TStringList; AllComponentList: TStringList; procedure ReadRegisterComponents; --- 11,60 ---- uses Classes, Controls, ComCtrls, Forms, ! {$IFDEF MSWINDOWS} Dialogs, ! {$ENDIF MSWINDOWS} ! {$IFDEF UNIX} QDialogs, ! {$ENDIF UNIX} ! TypInfo, SysUtils, ActnList, ! DesignIntf, ToolsAPI; var VisibleComponentList: TStringList; AllComponentList: TStringList; + PropertyEditorList: TStringList; + ComponentEditorList: TStringList; + CustomModuleList: TStringList; + NoIconList: TStringList; + ActionsList: TStringList; + + OldSpyRegisterPropertyEditor: TRegisterPropertyEditorProc; + OldSpyRegisterComponentEditor: TRegisterComponentEditorProc; + OldSpyRegisterCustomModule: TRegisterCustomModuleProc; + OldSpyRegisterNoIcon: procedure(ComponentClasses: array of TComponentClass); + OldSpyRegisterActions: procedure (const CategoryName: string; + const AClasses: array of TBasicActionClass; Resource: TComponentClass) = nil; + + procedure SaveFile(AFileName: string; List: TStringList); + begin + with TSaveDialog.Create(nil) do + begin + DefaultExt := 'csv'; + Filter := 'CSV files (*.csv)|*.csv|All files (*.*)|*.*'; + FileName := AFileName; + if Execute then + List.SaveToFile(FileName); + Free; + end; + end; + + procedure AddIDs(List: TStringList); + var + I: Integer; + begin + List.Sorted := False; + for I := 0 to List.Count - 1 do + List[I] := Format('%u;%s', [I, List[I]]); + end; procedure ReadRegisterComponents; *************** *** 78,114 **** SetOrdProp(Palette, PropInfo, OldToolIndex); PaletteTab.Visible := True; ! with TSaveDialog.Create(nil) do ! begin ! DefaultExt := 'csv'; ! Filter := 'CSV files (*.csv)|*.csv|All files (*.*)|*.*'; ! FileName := 'Visible JVCL components.csv'; ! if Execute then ! VisibleComponentList.SaveToFile(FileName); ! Free; ! end; end; ! procedure ReadRegisterComponentEditor; begin end; ! procedure ReadRegisterPropertyEditor; begin end; ! procedure ReadRegisterCustomModule; begin end; ! procedure ReadRegisterPackageWizard; begin end; ! procedure ReadRegisterNoIcon; begin end; ! procedure ReadRegisterActions; begin end; --- 112,191 ---- SetOrdProp(Palette, PropInfo, OldToolIndex); PaletteTab.Visible := True; + end; ! procedure SpyRegisterComponentEditor(ComponentClass: TComponentClass; ComponentEditor: TComponentEditorClass); ! begin ! if Assigned(ComponentClass) and Assigned(ComponentEditor) then ! if (Pos('TJv', ComponentClass.ClassName) = 1) or (Pos('TJv', ComponentEditor.ClassName) = 1) then ! ComponentEditorList.Add(Format('"%s";"%s"', ! [ComponentClass.ClassName, ComponentEditor.ClassName])); ! if Assigned(OldSpyRegisterComponentEditor) then ! OldSpyRegisterComponentEditor(ComponentClass, ComponentEditor); end; ! procedure SpyRegisterPropertyEditor(PropertyType: PTypeInfo; ! ComponentClass: TClass; const PropertyName: string; ! EditorClass: TPropertyEditorClass); begin + if Assigned(PropertyType) and Assigned(ComponentClass) and Assigned(EditorClass) then + if (Pos('TJv', PropertyType^.Name) = 1) or (Pos('TJv', ComponentClass.ClassName) = 1) or (Pos('TJv', EditorClass.ClassName) = 1) then + PropertyEditorList.Add(Format('"%s";"%s";"%s";"%s"', + [PropertyType^.Name, ComponentClass.ClassName, PropertyName, EditorClass.ClassName])); + if Assigned(OldSpyRegisterPropertyEditor) then + OldSpyRegisterPropertyEditor(PropertyType, ComponentClass, PropertyName, EditorClass); end; ! procedure SpyRegisterCustomModule(Group: Integer; ! ComponentBaseClass: TComponentClass; CustomModuleClass: TCustomModuleClass); begin + if Assigned(ComponentBaseClass) and Assigned(CustomModuleClass) then + //if (Pos('TJv', ComponentBaseClass.ClassName) = 1) or (Pos('TJv', CustomModuleClass.ClassName) = 1) then + CustomModuleList.Add(Format('%u;"%s";"%s"', + [Group, ComponentBaseClass.ClassName, CustomModuleClass.ClassName])); + if Assigned(OldSpyRegisterCustomModule) then + OldSpyRegisterCustomModule(Group, ComponentBaseClass, CustomModuleClass); end; ! procedure SpyRegisterNoIcon(ComponentClasses: array of TComponentClass); ! var ! I: Integer; begin + for I := Low(ComponentClasses) to High(ComponentClasses) do + NoIconList.Add(Format('"%s"', [ComponentClasses[I].ClassName])); + if Assigned(OldSpyRegisterNoIcon) then + OldSpyRegisterNoIcon(ComponentClasses); end; ! procedure SpyRegisterActions(const CategoryName: string; ! const AClasses: array of TBasicActionClass; Resource: TComponentClass); ! var ! I: Integer; begin + for I := Low(AClasses) to High(AClasses) do + if Assigned(Resource) then + ActionsList.Add(Format('"%s";"%s";"%s"', [CategoryName, AClasses[I].ClassName, Resource.ClassName])) + else + ActionsList.Add(Format('"%s";"%s";""', [CategoryName, AClasses[I].ClassName])); + if Assigned(OldSpyRegisterActions) then + OldSpyRegisterActions(CategoryName, AClasses, Resource); end; ! procedure CleanNoIconList; ! var ! I, N: Integer; ! S: string; begin + for I := 0 to ActionsList.Count - 1 do + begin + N := Pos(';', ActionsList[I]); + S := Copy(ActionsList[I], N + 1, Length(ActionsList[I])); + N := Pos(';', S); + S := Copy(S, 1, N - 1); + if NoIconList.Find(S, N) then + NoIconList.Delete(N); + end; end; ! procedure ReadRegisterPackageWizard; begin end; *************** *** 138,150 **** Inc(N); end; ! with TSaveDialog.Create(nil) do ! begin ! DefaultExt := 'csv'; ! Filter := 'CSV files (*.csv)|*.csv|All files (*.*)|*.*'; ! FileName := 'All JVCL components.csv'; ! if Execute then ! AllComponentList.SaveToFile(FileName); ! Free; ! end; end; --- 215,219 ---- Inc(N); end; ! SaveFile('All JVCL components.csv', AllComponentList); end; *************** *** 152,161 **** begin ReadRegisterComponents; - ReadRegisterComponentEditor; - ReadRegisterPropertyEditor; - ReadRegisterCustomModule; ReadRegisterPackageWizard; - ReadRegisterNoIcon; - ReadRegisterActions; ReadRegisterClass; {$IFDEF COMPILER7_UP} --- 221,225 ---- *************** *** 167,174 **** --- 231,294 ---- VisibleComponentList := TStringList.Create; AllComponentList := TStringList.Create; + PropertyEditorList := TStringList.Create; + PropertyEditorList.Duplicates := dupIgnore; + PropertyEditorList.Sorted := True; + ComponentEditorList := TStringList.Create; + ComponentEditorList.Duplicates := dupIgnore; + ComponentEditorList.Sorted := True; + CustomModuleList := TStringList.Create; + CustomModuleList.Duplicates := dupIgnore; + CustomModuleList.Sorted := True; + NoIconList := TStringList.Create; + NoIconList.Duplicates := dupIgnore; + NoIconList.Sorted := True; + ActionsList := TStringList.Create; + ActionsList.Duplicates := dupIgnore; + ActionsList.Sorted := True; + + OldSpyRegisterPropertyEditor := RegisterPropertyEditorProc; + RegisterPropertyEditorProc := SpyRegisterPropertyEditor; + OldSpyRegisterComponentEditor := RegisterComponentEditorProc; + RegisterComponentEditorProc := SpyRegisterComponentEditor; + OldSpyRegisterCustomModule := RegisterCustomModuleProc; + RegisterCustomModuleProc := SpyRegisterCustomModule; + OldSpyRegisterNoIcon := RegisterNoIconProc; + RegisterNoIconProc := SpyRegisterNoIcon; + OldSpyRegisterActions := RegisterActionsProc; + RegisterActionsProc := SpyRegisterActions; finalization + RegisterPropertyEditorProc := OldSpyRegisterPropertyEditor; + RegisterComponentEditorProc := OldSpyRegisterComponentEditor; + RegisterCustomModuleProc := OldSpyRegisterCustomModule; + RegisterNoIconProc := OldSpyRegisterNoIcon; + RegisterActionsProc := OldSpyRegisterActions; + + CleanNoIconList; + + AddIDs(PropertyEditorList); + AddIDs(ComponentEditorList); + AddIDs(CustomModuleList); + AddIDs(NoIconList); + AddIDs(ActionsList); + + PropertyEditorList.Insert(0, '"ID";"PropertyType_Name";"ComponentClass_ClassName";"PropertyName";"EditorClass_ClassName"'); + ComponentEditorList.Insert(0, '"ID";"ComponentClass_ClassName";"ComponentEditor_ClassName"'); + CustomModuleList.Insert(0, '"ID";"Group";"ComponentBaseClass_ClassName";"CustomModuleClass_ClassName"'); + NoIconList.Insert(0, '"ID";"ClassName"'); + ActionsList.Insert(0, '"ID";"CategoryName";"ClassName";"Resource_ClassName"'); + SaveFile('JVCL Visible Components.csv', VisibleComponentList); + SaveFile('JVCL Property Editors.csv', PropertyEditorList); + SaveFile('JVCL Component Editors.csv', ComponentEditorList); + SaveFile('JVCL Custom Modules.csv', CustomModuleList); + SaveFile('JVCL No Icon Components.csv', NoIconList); + SaveFile('JVCL Actions.csv', ActionsList); FreeAndNil(VisibleComponentList); FreeAndNil(AllComponentList); + FreeAndNil(PropertyEditorList); + FreeAndNil(ComponentEditorList); + FreeAndNil(CustomModuleList); + FreeAndNil(NoIconList); + FreeAndNil(ActionsList); end. |