diff --git a/.gitattributes b/.gitattributes index 503c8a4032..0cc0ff2dbe 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3249,6 +3249,7 @@ components/onlinepackagemanager/images/ToolBar/Dis/04[!!-~]Update.png -text svne components/onlinepackagemanager/images/ToolBar/Dis/05[!!-~]CleanUp.png -text svneol=unset#image/png components/onlinepackagemanager/images/ToolBar/Dis/06[!!-~]Repository.png -text svneol=unset#image/png components/onlinepackagemanager/images/ToolBar/Dis/07[!!-~]Options.png -text svneol=unset#image/png +components/onlinepackagemanager/images/ToolBar/Dis/08[!!-~]Help.png -text svneol=unset#image/png components/onlinepackagemanager/images/ToolBar/Nor/00[!!-~]Refresh.png -text svneol=unset#image/png components/onlinepackagemanager/images/ToolBar/Nor/01[!!-~]Filter.png -text svneol=unset#image/png components/onlinepackagemanager/images/ToolBar/Nor/02[!!-~]Download.png -text svneol=unset#image/png @@ -3257,6 +3258,7 @@ components/onlinepackagemanager/images/ToolBar/Nor/04[!!-~]Update.png -text svne components/onlinepackagemanager/images/ToolBar/Nor/05[!!-~]CleanUp.png -text svneol=unset#image/png components/onlinepackagemanager/images/ToolBar/Nor/06[!!-~]Repository.png -text svneol=unset#image/png components/onlinepackagemanager/images/ToolBar/Nor/07[!!-~]Options.png -text svneol=unset#image/png +components/onlinepackagemanager/images/ToolBar/Nor/08[!!-~]Help.png -text svneol=unset#image/png components/onlinepackagemanager/images/Tree_Buttons/00[!!-~]Repository.png -text svneol=unset#image/png components/onlinepackagemanager/images/Tree_Buttons/01[!!-~]PackageName.png -text svneol=unset#image/png components/onlinepackagemanager/images/Tree_Buttons/02[!!-~]PackageFile.png -text svneol=unset#image/png diff --git a/components/onlinepackagemanager/images/ToolBar/Dis/08 Help.png b/components/onlinepackagemanager/images/ToolBar/Dis/08 Help.png new file mode 100644 index 0000000000..3a801ce5f7 Binary files /dev/null and b/components/onlinepackagemanager/images/ToolBar/Dis/08 Help.png differ diff --git a/components/onlinepackagemanager/images/ToolBar/Nor/08 Help.png b/components/onlinepackagemanager/images/ToolBar/Nor/08 Help.png new file mode 100644 index 0000000000..cdead7f2a2 Binary files /dev/null and b/components/onlinepackagemanager/images/ToolBar/Nor/08 Help.png differ diff --git a/components/onlinepackagemanager/opkman_const.pas b/components/onlinepackagemanager/opkman_const.pas index f0eddd0cc2..b42dfaccfe 100644 --- a/components/onlinepackagemanager/opkman_const.pas +++ b/components/onlinepackagemanager/opkman_const.pas @@ -90,6 +90,7 @@ resourcestring rsMainFrm_VSTText_PackageState2 = 'Extracted'; rsMainFrm_VSTText_PackageState3 = 'Installed'; rsMainFrm_VSTText_PackageState4 = 'Up to date'; + rsMainFrm_VSTText_PackageState5 = 'New updates available'; rsMainFrm_VSTText_PackageCategory0 = 'Charts and Graphs'; rsMainFrm_VSTText_PackageCategory1 = 'Cryptography'; rsMainFrm_VSTText_PackageCategory2 = 'DataControls'; diff --git a/components/onlinepackagemanager/opkman_mainfrm.pas b/components/onlinepackagemanager/opkman_mainfrm.pas index e9eb0e0f56..2a8540594c 100644 --- a/components/onlinepackagemanager/opkman_mainfrm.pas +++ b/components/onlinepackagemanager/opkman_mainfrm.pas @@ -537,7 +537,7 @@ end; procedure TMainFrm.tbRefreshClick(Sender: TObject); begin - Updates.Paused := True; + Updates.PauseUpdate; VisualTree.VST.Clear; VisualTree.VST.Invalidate; GetPackageList; @@ -576,7 +576,7 @@ begin if CanGo then begin - Updates.Paused := True; + Updates.PauseUpdate; Options.LastDownloadDir := DstDir; Options.Changed := True; PackageAction := paDownloadTo; @@ -598,7 +598,7 @@ begin end; end; SerializablePackages.RemoveErrorState; - Updates.Paused := False; + Updates.StartUpdate; end; procedure TMainFrm.tbUpdateClick(Sender: TObject); @@ -630,7 +630,7 @@ begin if CanGo then begin - Updates.Paused := True; + Updates.PauseUpdate; PackageAction := paUpdate; VisualTree.UpdatePackageStates; if SerializablePackages.DownloadCount > 0 then @@ -678,7 +678,7 @@ begin if not NeedToRebuild then begin SerializablePackages.RemoveErrorState; - Updates.Paused := False; + Updates.StartUpdate; end; end; @@ -709,7 +709,7 @@ begin if CanGo then begin - Updates.Paused := True; + Updates.PauseUpdate; PackageAction := paInstall; VisualTree.UpdatePackageStates; if SerializablePackages.DownloadCount > 0 then @@ -758,7 +758,7 @@ begin if not NeedToRebuild then begin SerializablePackages.RemoveErrorState; - Updates.Paused := False; + Updates.StartUpdate; end; end; diff --git a/components/onlinepackagemanager/opkman_updates.pas b/components/onlinepackagemanager/opkman_updates.pas index e13c0b138a..8db72fa270 100644 --- a/components/onlinepackagemanager/opkman_updates.pas +++ b/components/onlinepackagemanager/opkman_updates.pas @@ -87,8 +87,9 @@ type destructor Destroy; override; procedure StartUpdate; procedure StopUpdate; + procedure PauseUpdate; published - property Paused: Boolean read FPaused write SetPaused; + property IsPaused: Boolean read FPaused; property OnUpdate: TNotifyEvent read FOnUpdate write FOnUpdate; end; @@ -403,9 +404,16 @@ end; procedure TUpdates.StopUpdate; begin FNeedToBreak := True; + Save; FTimer.StopTimer; FStarted := False; FHTTPClient.NeedToBreak := True; + +end; + +procedure TUpdates.PauseUpdate; +begin + FPaused := True; Save; end; diff --git a/components/onlinepackagemanager/opkman_visualtree.pas b/components/onlinepackagemanager/opkman_visualtree.pas index 53368a403d..5335e9fdc0 100644 --- a/components/onlinepackagemanager/opkman_visualtree.pas +++ b/components/onlinepackagemanager/opkman_visualtree.pas @@ -1010,12 +1010,11 @@ begin ParentNode := Node^.Parent; ParentData := FVST.GetNodeData(ParentNode); Data^.HasUpdate := (Data^.UpdateVersion > Data^.InstalledVersion) or (ParentData^.ForceUpadate); - if Data^.HasUpdate then - begin - ParentData^.HasUpdate := True; - FVST.ReinitNode(ParentNode, False); - FVST.RepaintNode(ParentNode); - end; + ParentData^.HasUpdate := Data^.HasUpdate; + FVST.ReinitNode(Node, False); + FVST.RepaintNode(Node); + FVST.ReinitNode(ParentNode, False); + FVST.RepaintNode(ParentNode); end; end; end; @@ -1310,10 +1309,13 @@ begin 1: CellText := rsMainFrm_VSTText_PackageState1; 2: CellText := rsMainFrm_VSTText_PackageState2; 3: begin - if Data^.InstalledVersion >= Data^.UpdateVersion then - CellText := rsMainFrm_VSTText_PackageState4 + if Data^.HasUpdate then + CellText := rsMainFrm_VSTText_PackageState5 else - CellText := rsMainFrm_VSTText_PackageState3 + if (Data^.UpdateVersion = '') or (Data^.UpdateVersion = Data^.InstalledVersion) then + CellText := rsMainFrm_VSTText_PackageState4 + else + CellText := rsMainFrm_VSTText_PackageState3 end; end; 3: CellText := GetDisplayString(Data^.Description); @@ -1421,7 +1423,8 @@ begin else TargetCanvas.Font.Color := clWhite; end - else if (Data^.DataType = 2) and (Data^.InstalledVersion >= Data^.UpdateVersion) then + else if (Data^.DataType = 2) and (not Data^.HasUpdate) and (Data^.InstalledVersion <> '') and + ((Data^.UpdateVersion = '') or (Data^.UpdateVersion = Data^.InstalledVersion)) then begin TargetCanvas.Font.Style := TargetCanvas.Font.Style + [fsBold]; if Node <> Sender.FocusedNode then