From: Jens F. <jfu...@us...> - 2004-04-19 22:34:53
|
Update of /cvsroot/jvcl/dev/JVCL3/run In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30462/JVCL3/run Modified Files: JvAppStorage.pas JvPropertyStore.pas Log Message: - Smaller BugFixes - AppStorage.ReadPersistent enhanced. Now it also supports a PropertyIgnoreList Index: JvAppStorage.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvAppStorage.pas,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** JvAppStorage.pas 10 Apr 2004 19:22:54 -0000 1.28 --- JvAppStorage.pas 19 Apr 2004 22:34:31 -0000 1.29 *************** *** 407,411 **** { Retrieves a TPersistent-Object with all of its published properties } procedure ReadPersistent(const Path: string; const PersObj: TPersistent; ! const Recursive: Boolean = True; const ClearFirst: Boolean = True); { Stores a TPersistent-Object with all of its published properties} procedure WritePersistent(const Path: string; const PersObj: TPersistent; --- 407,411 ---- { Retrieves a TPersistent-Object with all of its published properties } procedure ReadPersistent(const Path: string; const PersObj: TPersistent; ! const Recursive: Boolean = True; const ClearFirst: Boolean = True; const IgnoreProperties: TStrings = nil); { Stores a TPersistent-Object with all of its published properties} procedure WritePersistent(const Path: string; const PersObj: TPersistent; *************** *** 1510,1514 **** begin SL.BeginUpdate; ! try ResolvePath(Path + '\*', TgtStore, TgtPath); Delete(TgtPath, Length(TgtPath) - 1, 2); --- 1510,1514 ---- begin SL.BeginUpdate; ! try ResolvePath(Path + '\*', TgtStore, TgtPath); Delete(TgtPath, Length(TgtPath) - 1, 2); *************** *** 1763,1767 **** procedure TJvCustomAppStorage.ReadPersistent(const Path: string; const PersObj: TPersistent; ! const Recursive, ClearFirst: Boolean); var Index: Integer; --- 1763,1767 ---- procedure TJvCustomAppStorage.ReadPersistent(const Path: string; const PersObj: TPersistent; ! const Recursive, ClearFirst: Boolean; const IgnoreProperties: TStrings); var Index: Integer; *************** *** 1779,1821 **** KeyName := TranslatePropertyName(PersObj, PropName, True); PropPath := ConcatPaths([Path, KeyName]); ! case PropType(PersObj, PropName) of ! tkLString, tkWString, tkString: ! SetStrProp(PersObj, PropName, ReadString(PropPath, GetStrProp(PersObj, PropName))); ! tkEnumeration: ! begin ! TmpValue := GetOrdProp(PersObj, PropName); ! ReadEnumeration(PropPath, GetPropInfo(PersObj, PropName).PropType^, TmpValue, TmpValue); ! SetOrdProp(PersObj, PropName, TmpValue); ! end; ! tkSet: ! begin ! TmpValue := GetOrdProp(PersObj, PropName); ! ReadSet(PropPath, GetPropInfo(PersObj, PropName).PropType^, TmpValue, TmpValue); ! SetOrdProp(PersObj, PropName, TmpValue); ! end; ! tkChar, tkInteger: ! begin ! TmpValue := GetOrdProp(PersObj, PropName); ! ReadEnumeration(PropPath, GetPropInfo(PersObj, PropName).PropType^, TmpValue, TmpValue); ! SetOrdProp(PersObj, PropName, TmpValue); ! end; ! tkInt64: ! SetInt64Prop(PersObj, PropName, StrToInt64(ReadString(PropPath, ! IntToStr(GetInt64Prop(PersObj, PropName))))); ! tkFloat: ! SetFloatProp(PersObj, PropName, ReadFloat(PropPath, GetFloatProp(PersObj, PropName))); ! tkClass: ! begin ! SubObj := GetObjectProp(PersObj, PropName); ! if SubObj is TStrings then ! ReadStringList(PropPath, TStrings(SubObj), ClearFirst) ! else ! if (SubObj is TPersistent) and Recursive then ! if SubObj is TJvCustomPropertyStore then ! TJvCustomPropertyStore(SubObj).LoadProperties else ! ReadPersistent(PropPath, TPersistent(SubObj), True, ClearFirst); ! end; ! end; end; end; --- 1779,1822 ---- KeyName := TranslatePropertyName(PersObj, PropName, True); PropPath := ConcatPaths([Path, KeyName]); ! if (IgnoreProperties = nil) or (IgnoreProperties.IndexOf(PropName) = -1) then ! case PropType(PersObj, PropName) of ! tkLString, tkWString, tkString: ! SetStrProp(PersObj, PropName, ReadString(PropPath, GetStrProp(PersObj, PropName))); ! tkEnumeration: ! begin ! TmpValue := GetOrdProp(PersObj, PropName); ! ReadEnumeration(PropPath, GetPropInfo(PersObj, PropName).PropType^, TmpValue, TmpValue); ! SetOrdProp(PersObj, PropName, TmpValue); ! end; ! tkSet: ! begin ! TmpValue := GetOrdProp(PersObj, PropName); ! ReadSet(PropPath, GetPropInfo(PersObj, PropName).PropType^, TmpValue, TmpValue); ! SetOrdProp(PersObj, PropName, TmpValue); ! end; ! tkChar, tkInteger: ! begin ! TmpValue := GetOrdProp(PersObj, PropName); ! ReadEnumeration(PropPath, GetPropInfo(PersObj, PropName).PropType^, TmpValue, TmpValue); ! SetOrdProp(PersObj, PropName, TmpValue); ! end; ! tkInt64: ! SetInt64Prop(PersObj, PropName, StrToInt64(ReadString(PropPath, ! IntToStr(GetInt64Prop(PersObj, PropName))))); ! tkFloat: ! SetFloatProp(PersObj, PropName, ReadFloat(PropPath, GetFloatProp(PersObj, PropName))); ! tkClass: ! begin ! SubObj := GetObjectProp(PersObj, PropName); ! if SubObj is TStrings then ! ReadStringList(PropPath, TStrings(SubObj), ClearFirst) else ! if (SubObj is TPersistent) and Recursive then ! if SubObj is TJvCustomPropertyStore then ! TJvCustomPropertyStore(SubObj).LoadProperties ! else ! ReadPersistent(PropPath, TPersistent(SubObj), True, ClearFirst); ! end; ! end; end; end; Index: JvPropertyStore.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvPropertyStore.pas,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** JvPropertyStore.pas 19 Apr 2004 21:58:32 -0000 1.21 --- JvPropertyStore.pas 19 Apr 2004 22:34:31 -0000 1.22 *************** *** 69,73 **** procedure StoreData; virtual; procedure Notification(AComponent: TComponent; Operation: TOperation); override; ! property CombinedIgnoreList: TStrings read FCombinedIgnoreList; public constructor Create(AOwner: TComponent); override; --- 69,73 ---- procedure StoreData; virtual; procedure Notification(AComponent: TComponent; Operation: TOperation); override; ! function CombinedIgnoreList: TStrings; public constructor Create(AOwner: TComponent); override; *************** *** 274,279 **** FIgnoreLastLoadTime := False; FCombinedIgnoreList := TCombinedStrings.Create; - FCombinedIgnoreList.AddStrings(FIntIgnoreProperties); - FCombinedIgnoreList.AddStrings(FIgnoreProperties); with FIntIgnoreProperties do begin --- 274,277 ---- *************** *** 311,314 **** --- 309,319 ---- end; + function TJvCustomPropertyStore.CombinedIgnoreList: TStrings; + begin + FCombinedIgnoreList.Assign(FIntIgnoreProperties); + FCombinedIgnoreList.AddStrings(FIgnoreProperties); + Result := FCombinedIgnoreList; + end; + function TJvCustomPropertyStore.GetPropCount(Instance: TPersistent): Integer; var *************** *** 502,506 **** FOnBeforeLoadProperties(Self); LoadData; ! AppStorage.ReadPersistent(AppStoragePath, Self, True, False); if Assigned(FOnAfterLoadProperties) then FOnAfterLoadProperties(Self); --- 507,511 ---- FOnBeforeLoadProperties(Self); LoadData; ! AppStorage.ReadPersistent(AppStoragePath, Self, True, False, CombinedIgnoreList); if Assigned(FOnAfterLoadProperties) then FOnAfterLoadProperties(Self); *************** *** 641,645 **** if NewObject is TPersistent then Sender.ReadPersistent(Sender.ConcatPaths([Path, cObject + IntToStr(Index)]), ! TPersistent(NewObject), True, True); end; if Sender.ValueStored(Sender.ConcatPaths([Path, cItem + IntToStr(Index)])) then --- 646,650 ---- if NewObject is TPersistent then Sender.ReadPersistent(Sender.ConcatPaths([Path, cObject + IntToStr(Index)]), ! TPersistent(NewObject), True, True, CombinedIgnoreList); end; if Sender.ValueStored(Sender.ConcatPaths([Path, cItem + IntToStr(Index)])) then *************** *** 666,670 **** if Objects[Index] is TPersistent then Sender.ReadPersistent(Sender.ConcatPaths([Path, cObject + IntToStr(Index)]), ! TPersistent(Objects[Index]), True, True); end; if Sender.ValueStored(Sender.ConcatPaths([Path, cItem + IntToStr(Index)])) then --- 671,675 ---- if Objects[Index] is TPersistent then Sender.ReadPersistent(Sender.ConcatPaths([Path, cObject + IntToStr(Index)]), ! TPersistent(Objects[Index]), True, True, CombinedIgnoreList); end; if Sender.ValueStored(Sender.ConcatPaths([Path, cItem + IntToStr(Index)])) then |