From d48bf69b3d1df6338e579b23be470a7a84f3c3b6 Mon Sep 17 00:00:00 2001 From: sborate Date: Tue, 12 Mar 2024 14:06:16 +0530 Subject: [PATCH] P4VS 2023.1 Patch 5 Release --- P4VS/P4VsProviderService.cs | 115 ++++++- P4VS/UI/P4DataRetrievalPreferencesControl.cs | 234 +++++++------ .../UI/P4DataRetrievalPreferencesControl.resx | 312 ++++++++++-------- RELEASENOTES.txt | 82 ++++- 4 files changed, 491 insertions(+), 252 deletions(-) diff --git a/P4VS/P4VsProviderService.cs b/P4VS/P4VsProviderService.cs index 7af084d..3bb62fa 100644 --- a/P4VS/P4VsProviderService.cs +++ b/P4VS/P4VsProviderService.cs @@ -106,6 +106,8 @@ public partial class P4VsProviderService : // The list of files approved for in-memory edit private Hashtable approvedForInMemoryEdit = new Hashtable(); + private static int lastAccessedIndex = 0; + #if !VS2012 internal static P4SolutionExplorer SolutionExplorer = null; #endif @@ -617,9 +619,9 @@ public int GetSccGlyph([In] int cFiles, [In] string[] rgpszFullPaths, [Out] VsSt } else { - IList nodes = GetControlledProjectsContainingFile(rgpszFullPaths[idx]); - if (nodes.Count > 0) - { + var anyControlledProject = AnyControlledProjectsContainingFile(rgpszFullPaths[idx]); + if (anyControlledProject) + { // If the file is not controlled, but is member of a controlled project, report the item as checked out (same as source control in VS2003 did) // If the provider wants to have special icons for "pending add" files, the IVsSccGlyphs interface needs to be supported rgsiGlyphs[idx] = VsStateIcon.STATEICON_DISABLED; @@ -3530,11 +3532,110 @@ public IList GetControlledProjectsContainingFile(string file) return nodes; } + /// + /// This function returns true in case the file is present in any of the project + /// It is an optimized modification to the function GetControlledProjectsContainingFile + /// + private bool AnyControlledProjectsContainingFile(string file) + { + // bail immediately if the path ends with a ... wildcard + if (file.EndsWith("...")) + { + return false; + } - /// - /// Returns a list of controlled projects containing the specified file - /// - public IList GetControlledProjectsContainingFiles([In] int cFiles, [In] string[] files) + var controlledProjectKeys = controlledProjects.Keys.ToArray(); + var totalProjects = controlledProjectKeys.Length; + + // It is high likely that this file would also be present in the same project + // in which last file checked was present + // So check all projects, but just start with last project checked + // And as this function can get called via different thread, static lastAccessedIndex is received into local variable + var projectToStartSearching = lastAccessedIndex; + + for (int i = 0; i < totalProjects; i = IncrementCounters(i, totalProjects)) + { + // To circle back to first project once already searched in the last project + // "% totalProjects" is used + var currentProject = (projectToStartSearching + i) % totalProjects; + IVsHierarchy pHier = controlledProjectKeys[currentProject]; + + IVsHierarchy solHier = (IVsHierarchy)_P4VsProvider.GetService(typeof(SVsSolution)); + if (solHier == pHier) + { + // This is the solution + if (_P4VsProvider.IsThereASolution()) + { + if (file.ToLower().CompareTo(_P4VsProvider.GetSolutionFileName().ToLower()) == 0) + { + VSITEMSELECTION vsItem; + vsItem.itemid = VSConstants.VSITEMID_ROOT; + vsItem.pHier = null; + + return true; + } + } + } + else + { + IVsProject2 pProject = pHier as IVsProject2; + // See if the file is member of this project + // Caveat: the IsDocumentInProject function is expensive for certain project types, + // you may want to limit its usage by creating your own maps of file2project or folder2project + int fFound; + uint itemid; + VSDOCUMENTPRIORITY[] prio = new VSDOCUMENTPRIORITY[1]; + + if (pProject != null && pProject.IsDocumentInProject(file, out fFound, prio, out itemid) == VSConstants.S_OK && fFound != 0) + { + VSITEMSELECTION vsItem; + vsItem.itemid = itemid; + vsItem.pHier = pHier; + + return true; + } + else + { + IVsSccProject2 sccPrj2 = pHier as IVsSccProject2; + if (sccPrj2 != null) + { + string prjFile = _P4VsProvider.GetProjectFileName(sccPrj2); + if (prjFile != null) + { + if (file.ToLower().CompareTo(prjFile.ToLower()) == 0) + { + VSITEMSELECTION vsItem; + vsItem.itemid = VSConstants.VSITEMID_ROOT; + vsItem.pHier = null; + + return true; + } + } + } + } + } + } + + return false; + } + + private int IncrementCounters(int i, int totalProjects) + { + lastAccessedIndex++; + if (lastAccessedIndex >= totalProjects) + { + // Reset the index to start over looping from first element + lastAccessedIndex = 0; + } + + i++; + return i; + } + + /// + /// Returns a list of controlled projects containing the specified file + /// + public IList GetControlledProjectsContainingFiles([In] int cFiles, [In] string[] files) { // Accumulate all the controlled projects that contain this file IList nodes = new List(); diff --git a/P4VS/UI/P4DataRetrievalPreferencesControl.cs b/P4VS/UI/P4DataRetrievalPreferencesControl.cs index 947e9dd..a2f8ee0 100644 --- a/P4VS/UI/P4DataRetrievalPreferencesControl.cs +++ b/P4VS/UI/P4DataRetrievalPreferencesControl.cs @@ -49,8 +49,6 @@ public class P4DataRetrievalPreferencesControl : System.Windows.Forms.UserContro private I18nControls.GridLabel updateLbl; private I18nControls.GridLabel dataRetrievalLbl; private I18nControls.GridGroupBox dataRetrievalGB; - private I18nControls.GridLayoutPanel gridLayoutPanel1; - private I18nControls.GridPanel gridPanel1; private I18nControls.GridCheckBox LLFullMenuCB; private I18nControls.GridCheckBox PreloadCacheCB; private I18nControls.GridCheckBox TreatProjectsAsDirsCB; @@ -69,8 +67,11 @@ public class P4DataRetrievalPreferencesControl : System.Windows.Forms.UserContro private I18nControls.GridLayoutSubpanel gridLayoutSubpanel3; private I18nControls.GridLabel gridLabel4; private I18nControls.GridGroupBox gridGroupBox2; + private I18nControls.GridTextBox numberUpdatedFilesTB; + private I18nControls.GridLabel numberUpdateFilesLbl; + private I18nControls.GridLayoutPanel gridLayoutPanel1; - + public static int Update_status_Default = 15; @@ -121,6 +122,8 @@ private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(P4DataRetrievalPreferencesControl)); this.gridLayoutPanel1 = new Perforce.I18nControls.GridLayoutPanel(); + this.numberUpdatedFilesTB = new Perforce.I18nControls.GridTextBox(); + this.numberUpdateFilesLbl = new Perforce.I18nControls.GridLabel(); this.disableParSubmitCB = new Perforce.I18nControls.GridCheckBox(); this.disableParShelveCB = new Perforce.I18nControls.GridCheckBox(); this.disableParSyncCB = new Perforce.I18nControls.GridCheckBox(); @@ -154,7 +157,6 @@ private void InitializeComponent() this.allLbl = new Perforce.I18nControls.GridLabel(); this.sizeLbl = new Perforce.I18nControls.GridLabel(); this.updateLbl = new Perforce.I18nControls.GridLabel(); - this.gridPanel1 = new Perforce.I18nControls.GridPanel(); this.gridLayoutPanel1.SuspendLayout(); this.gridLayoutSubpanel3.SuspendLayout(); this.gridLayoutSubpanel2.SuspendLayout(); @@ -164,6 +166,8 @@ private void InitializeComponent() // gridLayoutPanel1 // resources.ApplyResources(this.gridLayoutPanel1, "gridLayoutPanel1"); + this.gridLayoutPanel1.Controls.Add(this.numberUpdatedFilesTB); + this.gridLayoutPanel1.Controls.Add(this.numberUpdateFilesLbl); this.gridLayoutPanel1.Controls.Add(this.disableParSubmitCB); this.gridLayoutPanel1.Controls.Add(this.disableParShelveCB); this.gridLayoutPanel1.Controls.Add(this.disableParSyncCB); @@ -191,23 +195,47 @@ private void InitializeComponent() this.gridLayoutPanel1.Controls.Add(this.allLbl); this.gridLayoutPanel1.Controls.Add(this.sizeLbl); this.gridLayoutPanel1.Controls.Add(this.updateLbl); - this.gridLayoutPanel1.Controls.Add(this.gridPanel1); - this.gridLayoutPanel1.EnableDesignerGrid = false; + this.gridLayoutPanel1.EnableDesignerGrid = true; this.gridLayoutPanel1.EnableDesignerLayout = true; this.gridLayoutPanel1.EnableParentResize = false; this.gridLayoutPanel1.MinimumColumnWidth = 0; this.gridLayoutPanel1.MinimumRowHeight = 0; this.gridLayoutPanel1.Name = "gridLayoutPanel1"; // + // numberUpdatedFilesTB + // + resources.ApplyResources(this.numberUpdatedFilesTB, "numberUpdatedFilesTB"); + this.numberUpdatedFilesTB.CellHeight = 29; + this.numberUpdatedFilesTB.CellWidth = 173; + this.numberUpdatedFilesTB.Column = 2; + this.numberUpdatedFilesTB.ColumnsSpanned = 0; + this.numberUpdatedFilesTB.Name = "numberUpdatedFilesTB"; + this.numberUpdatedFilesTB.Row = 5; + this.numberUpdatedFilesTB.RowsSpanned = 0; + this.numberUpdatedFilesTB.YOffset = 0; + // + // numberUpdateFilesLbl + // + resources.ApplyResources(this.numberUpdateFilesLbl, "numberUpdateFilesLbl"); + this.numberUpdateFilesLbl.AutoEllipsis = true; + this.numberUpdateFilesLbl.CellHeight = 29; + this.numberUpdateFilesLbl.CellWidth = 290; + this.numberUpdateFilesLbl.Column = 0; + this.numberUpdateFilesLbl.ColumnsSpanned = 1; + this.numberUpdateFilesLbl.Name = "numberUpdateFilesLbl"; + this.numberUpdateFilesLbl.Row = 5; + this.numberUpdateFilesLbl.RowsSpanned = 0; + this.numberUpdateFilesLbl.YOffset = 4; + // // disableParSubmitCB // resources.ApplyResources(this.disableParSubmitCB, "disableParSubmitCB"); - this.disableParSubmitCB.CellHeight = 30; - this.disableParSubmitCB.CellWidth = 515; + this.disableParSubmitCB.CellHeight = 26; + this.disableParSubmitCB.CellWidth = 568; this.disableParSubmitCB.Column = 0; this.disableParSubmitCB.ColumnsSpanned = 3; this.disableParSubmitCB.Name = "disableParSubmitCB"; - this.disableParSubmitCB.Row = 17; + this.disableParSubmitCB.Row = 18; this.disableParSubmitCB.RowsSpanned = 0; this.disableParSubmitCB.UseVisualStyleBackColor = true; this.disableParSubmitCB.YOffset = 0; @@ -215,12 +243,12 @@ private void InitializeComponent() // disableParShelveCB // resources.ApplyResources(this.disableParShelveCB, "disableParShelveCB"); - this.disableParShelveCB.CellHeight = 30; - this.disableParShelveCB.CellWidth = 515; + this.disableParShelveCB.CellHeight = 25; + this.disableParShelveCB.CellWidth = 568; this.disableParShelveCB.Column = 0; this.disableParShelveCB.ColumnsSpanned = 3; this.disableParShelveCB.Name = "disableParShelveCB"; - this.disableParShelveCB.Row = 18; + this.disableParShelveCB.Row = 19; this.disableParShelveCB.RowsSpanned = 0; this.disableParShelveCB.UseVisualStyleBackColor = true; this.disableParShelveCB.YOffset = 0; @@ -228,12 +256,12 @@ private void InitializeComponent() // disableParSyncCB // resources.ApplyResources(this.disableParSyncCB, "disableParSyncCB"); - this.disableParSyncCB.CellHeight = 30; - this.disableParSyncCB.CellWidth = 515; + this.disableParSyncCB.CellHeight = 26; + this.disableParSyncCB.CellWidth = 568; this.disableParSyncCB.Column = 0; this.disableParSyncCB.ColumnsSpanned = 3; this.disableParSyncCB.Name = "disableParSyncCB"; - this.disableParSyncCB.Row = 16; + this.disableParSyncCB.Row = 17; this.disableParSyncCB.RowsSpanned = 0; this.disableParSyncCB.UseVisualStyleBackColor = true; this.disableParSyncCB.YOffset = 0; @@ -241,8 +269,8 @@ private void InitializeComponent() // gridLayoutSubpanel3 // resources.ApplyResources(this.gridLayoutSubpanel3, "gridLayoutSubpanel3"); - this.gridLayoutSubpanel3.CellHeight = 106; - this.gridLayoutSubpanel3.CellWidth = 515; + this.gridLayoutSubpanel3.CellHeight = 26; + this.gridLayoutSubpanel3.CellWidth = 568; this.gridLayoutSubpanel3.Column = 0; this.gridLayoutSubpanel3.ColumnsSpanned = 3; this.gridLayoutSubpanel3.Controls.Add(this.gridLabel4); @@ -253,15 +281,15 @@ private void InitializeComponent() this.gridLayoutSubpanel3.MinimumColumnWidth = 10; this.gridLayoutSubpanel3.MinimumRowHeight = 10; this.gridLayoutSubpanel3.Name = "gridLayoutSubpanel3"; - this.gridLayoutSubpanel3.Row = 15; + this.gridLayoutSubpanel3.Row = 16; this.gridLayoutSubpanel3.RowsSpanned = 0; this.gridLayoutSubpanel3.YOffset = 0; // // gridLabel4 // resources.ApplyResources(this.gridLabel4, "gridLabel4"); - this.gridLabel4.CellHeight = 106; - this.gridLabel4.CellWidth = 259; + this.gridLabel4.CellHeight = 13; + this.gridLabel4.CellWidth = 101; this.gridLabel4.Column = 0; this.gridLabel4.ColumnsSpanned = 0; this.gridLabel4.Name = "gridLabel4"; @@ -272,25 +300,25 @@ private void InitializeComponent() // gridGroupBox2 // resources.ApplyResources(this.gridGroupBox2, "gridGroupBox2"); - this.gridGroupBox2.CellHeight = 106; - this.gridGroupBox2.CellWidth = 257; + this.gridGroupBox2.CellHeight = 13; + this.gridGroupBox2.CellWidth = 467; this.gridGroupBox2.Column = 1; this.gridGroupBox2.ColumnsSpanned = 0; this.gridGroupBox2.Name = "gridGroupBox2"; this.gridGroupBox2.Row = 0; this.gridGroupBox2.RowsSpanned = 0; this.gridGroupBox2.TabStop = false; - this.gridGroupBox2.YOffset = 0; + this.gridGroupBox2.YOffset = 5; // // gridLabel3 // resources.ApplyResources(this.gridLabel3, "gridLabel3"); - this.gridLabel3.CellHeight = 32; - this.gridLabel3.CellWidth = 377; + this.gridLabel3.CellHeight = 35; + this.gridLabel3.CellWidth = 568; this.gridLabel3.Column = 0; this.gridLabel3.ColumnsSpanned = 3; this.gridLabel3.Name = "gridLabel3"; - this.gridLabel3.Row = 14; + this.gridLabel3.Row = 15; this.gridLabel3.RowsSpanned = 0; this.gridLabel3.YOffset = 0; // @@ -309,8 +337,8 @@ private void InitializeComponent() // gridLayoutSubpanel2 // resources.ApplyResources(this.gridLayoutSubpanel2, "gridLayoutSubpanel2"); - this.gridLayoutSubpanel2.CellHeight = 23; - this.gridLayoutSubpanel2.CellWidth = 377; + this.gridLayoutSubpanel2.CellHeight = 26; + this.gridLayoutSubpanel2.CellWidth = 568; this.gridLayoutSubpanel2.Column = 0; this.gridLayoutSubpanel2.ColumnsSpanned = 3; this.gridLayoutSubpanel2.Controls.Add(this.gridLabel2); @@ -321,7 +349,7 @@ private void InitializeComponent() this.gridLayoutSubpanel2.MinimumColumnWidth = 10; this.gridLayoutSubpanel2.MinimumRowHeight = 10; this.gridLayoutSubpanel2.Name = "gridLayoutSubpanel2"; - this.gridLayoutSubpanel2.Row = 7; + this.gridLayoutSubpanel2.Row = 8; this.gridLayoutSubpanel2.RowsSpanned = 0; this.gridLayoutSubpanel2.YOffset = 0; // @@ -341,7 +369,7 @@ private void InitializeComponent() // resources.ApplyResources(this.gridGroupBox1, "gridGroupBox1"); this.gridGroupBox1.CellHeight = 13; - this.gridGroupBox1.CellWidth = 237; + this.gridGroupBox1.CellWidth = 428; this.gridGroupBox1.Column = 1; this.gridGroupBox1.ColumnsSpanned = 0; this.gridGroupBox1.Name = "gridGroupBox1"; @@ -353,8 +381,8 @@ private void InitializeComponent() // gridLayoutSubpanel1 // resources.ApplyResources(this.gridLayoutSubpanel1, "gridLayoutSubpanel1"); - this.gridLayoutSubpanel1.CellHeight = 19; - this.gridLayoutSubpanel1.CellWidth = 377; + this.gridLayoutSubpanel1.CellHeight = 23; + this.gridLayoutSubpanel1.CellWidth = 568; this.gridLayoutSubpanel1.Column = 0; this.gridLayoutSubpanel1.ColumnsSpanned = 3; this.gridLayoutSubpanel1.Controls.Add(this.dataRetrievalLbl); @@ -385,7 +413,7 @@ private void InitializeComponent() // resources.ApplyResources(this.dataRetrievalGB, "dataRetrievalGB"); this.dataRetrievalGB.CellHeight = 13; - this.dataRetrievalGB.CellWidth = 295; + this.dataRetrievalGB.CellWidth = 486; this.dataRetrievalGB.Column = 1; this.dataRetrievalGB.ColumnsSpanned = 0; this.dataRetrievalGB.Name = "dataRetrievalGB"; @@ -397,12 +425,12 @@ private void InitializeComponent() // LLFullMenuCB // resources.ApplyResources(this.LLFullMenuCB, "LLFullMenuCB"); - this.LLFullMenuCB.CellHeight = 17; - this.LLFullMenuCB.CellWidth = 377; + this.LLFullMenuCB.CellHeight = 20; + this.LLFullMenuCB.CellWidth = 568; this.LLFullMenuCB.Column = 0; this.LLFullMenuCB.ColumnsSpanned = 3; this.LLFullMenuCB.Name = "LLFullMenuCB"; - this.LLFullMenuCB.Row = 12; + this.LLFullMenuCB.Row = 13; this.LLFullMenuCB.RowsSpanned = 0; this.LLFullMenuCB.UseVisualStyleBackColor = true; this.LLFullMenuCB.YOffset = 0; @@ -410,12 +438,12 @@ private void InitializeComponent() // PreloadCacheCB // resources.ApplyResources(this.PreloadCacheCB, "PreloadCacheCB"); - this.PreloadCacheCB.CellHeight = 17; - this.PreloadCacheCB.CellWidth = 377; + this.PreloadCacheCB.CellHeight = 20; + this.PreloadCacheCB.CellWidth = 568; this.PreloadCacheCB.Column = 0; this.PreloadCacheCB.ColumnsSpanned = 3; this.PreloadCacheCB.Name = "PreloadCacheCB"; - this.PreloadCacheCB.Row = 10; + this.PreloadCacheCB.Row = 11; this.PreloadCacheCB.RowsSpanned = 0; this.PreloadCacheCB.UseVisualStyleBackColor = true; this.PreloadCacheCB.YOffset = 0; @@ -423,12 +451,12 @@ private void InitializeComponent() // TreatProjectsAsDirsCB // resources.ApplyResources(this.TreatProjectsAsDirsCB, "TreatProjectsAsDirsCB"); - this.TreatProjectsAsDirsCB.CellHeight = 17; - this.TreatProjectsAsDirsCB.CellWidth = 377; + this.TreatProjectsAsDirsCB.CellHeight = 20; + this.TreatProjectsAsDirsCB.CellWidth = 568; this.TreatProjectsAsDirsCB.Column = 0; this.TreatProjectsAsDirsCB.ColumnsSpanned = 3; this.TreatProjectsAsDirsCB.Name = "TreatProjectsAsDirsCB"; - this.TreatProjectsAsDirsCB.Row = 9; + this.TreatProjectsAsDirsCB.Row = 10; this.TreatProjectsAsDirsCB.RowsSpanned = 0; this.TreatProjectsAsDirsCB.UseVisualStyleBackColor = true; this.TreatProjectsAsDirsCB.YOffset = 0; @@ -436,12 +464,12 @@ private void InitializeComponent() // NoFstatOptimizatioRDO // resources.ApplyResources(this.NoFstatOptimizatioRDO, "NoFstatOptimizatioRDO"); - this.NoFstatOptimizatioRDO.CellHeight = 23; - this.NoFstatOptimizatioRDO.CellWidth = 377; + this.NoFstatOptimizatioRDO.CellHeight = 26; + this.NoFstatOptimizatioRDO.CellWidth = 568; this.NoFstatOptimizatioRDO.Column = 0; this.NoFstatOptimizatioRDO.ColumnsSpanned = 3; this.NoFstatOptimizatioRDO.Name = "NoFstatOptimizatioRDO"; - this.NoFstatOptimizatioRDO.Row = 13; + this.NoFstatOptimizatioRDO.Row = 14; this.NoFstatOptimizatioRDO.RowsSpanned = 0; this.NoFstatOptimizatioRDO.TabStop = true; this.NoFstatOptimizatioRDO.UseVisualStyleBackColor = true; @@ -451,12 +479,12 @@ private void InitializeComponent() // LazyLoadRDO // resources.ApplyResources(this.LazyLoadRDO, "LazyLoadRDO"); - this.LazyLoadRDO.CellHeight = 23; - this.LazyLoadRDO.CellWidth = 377; + this.LazyLoadRDO.CellHeight = 26; + this.LazyLoadRDO.CellWidth = 568; this.LazyLoadRDO.Column = 0; this.LazyLoadRDO.ColumnsSpanned = 3; this.LazyLoadRDO.Name = "LazyLoadRDO"; - this.LazyLoadRDO.Row = 11; + this.LazyLoadRDO.Row = 12; this.LazyLoadRDO.RowsSpanned = 0; this.LazyLoadRDO.TabStop = true; this.LazyLoadRDO.UseVisualStyleBackColor = true; @@ -466,12 +494,12 @@ private void InitializeComponent() // OptimizeFstatsRDO // resources.ApplyResources(this.OptimizeFstatsRDO, "OptimizeFstatsRDO"); - this.OptimizeFstatsRDO.CellHeight = 23; - this.OptimizeFstatsRDO.CellWidth = 377; + this.OptimizeFstatsRDO.CellHeight = 26; + this.OptimizeFstatsRDO.CellWidth = 568; this.OptimizeFstatsRDO.Column = 0; this.OptimizeFstatsRDO.ColumnsSpanned = 3; this.OptimizeFstatsRDO.Name = "OptimizeFstatsRDO"; - this.OptimizeFstatsRDO.Row = 8; + this.OptimizeFstatsRDO.Row = 9; this.OptimizeFstatsRDO.RowsSpanned = 0; this.OptimizeFstatsRDO.TabStop = true; this.OptimizeFstatsRDO.UseVisualStyleBackColor = true; @@ -481,12 +509,12 @@ private void InitializeComponent() // AutoUpdateStatudCB // resources.ApplyResources(this.AutoUpdateStatudCB, "AutoUpdateStatudCB"); - this.AutoUpdateStatudCB.CellHeight = 23; - this.AutoUpdateStatudCB.CellWidth = 377; + this.AutoUpdateStatudCB.CellHeight = 26; + this.AutoUpdateStatudCB.CellWidth = 568; this.AutoUpdateStatudCB.Column = 0; this.AutoUpdateStatudCB.ColumnsSpanned = 3; this.AutoUpdateStatudCB.Name = "AutoUpdateStatudCB"; - this.AutoUpdateStatudCB.Row = 5; + this.AutoUpdateStatudCB.Row = 6; this.AutoUpdateStatudCB.RowsSpanned = 0; this.AutoUpdateStatudCB.UseVisualStyleBackColor = true; this.AutoUpdateStatudCB.YOffset = 0; @@ -495,20 +523,20 @@ private void InitializeComponent() // resources.ApplyResources(this.infoLbl, "infoLbl"); this.infoLbl.AutoEllipsis = true; - this.infoLbl.CellHeight = 35; - this.infoLbl.CellWidth = 377; + this.infoLbl.CellHeight = 34; + this.infoLbl.CellWidth = 568; this.infoLbl.Column = 0; this.infoLbl.ColumnsSpanned = 3; this.infoLbl.Name = "infoLbl"; - this.infoLbl.Row = 6; + this.infoLbl.Row = 7; this.infoLbl.RowsSpanned = 0; this.infoLbl.YOffset = 0; // // updateTB // resources.ApplyResources(this.updateTB, "updateTB"); - this.updateTB.CellHeight = 26; - this.updateTB.CellWidth = 71; + this.updateTB.CellHeight = 29; + this.updateTB.CellWidth = 173; this.updateTB.Column = 2; this.updateTB.ColumnsSpanned = 0; this.updateTB.Name = "updateTB"; @@ -519,8 +547,8 @@ private void InitializeComponent() // numberFilesTB // resources.ApplyResources(this.numberFilesTB, "numberFilesTB"); - this.numberFilesTB.CellHeight = 26; - this.numberFilesTB.CellWidth = 71; + this.numberFilesTB.CellHeight = 29; + this.numberFilesTB.CellWidth = 173; this.numberFilesTB.Column = 2; this.numberFilesTB.ColumnsSpanned = 0; this.numberFilesTB.Name = "numberFilesTB"; @@ -531,8 +559,8 @@ private void InitializeComponent() // sizeTB // resources.ApplyResources(this.sizeTB, "sizeTB"); - this.sizeTB.CellHeight = 26; - this.sizeTB.CellWidth = 71; + this.sizeTB.CellHeight = 29; + this.sizeTB.CellWidth = 173; this.sizeTB.Column = 2; this.sizeTB.ColumnsSpanned = 0; this.sizeTB.Name = "sizeTB"; @@ -543,8 +571,8 @@ private void InitializeComponent() // numberSpecsTB // resources.ApplyResources(this.numberSpecsTB, "numberSpecsTB"); - this.numberSpecsTB.CellHeight = 26; - this.numberSpecsTB.CellWidth = 71; + this.numberSpecsTB.CellHeight = 29; + this.numberSpecsTB.CellWidth = 173; this.numberSpecsTB.Column = 2; this.numberSpecsTB.ColumnsSpanned = 0; this.numberSpecsTB.Name = "numberSpecsTB"; @@ -556,107 +584,95 @@ private void InitializeComponent() // resources.ApplyResources(this.minutesLbl, "minutesLbl"); this.minutesLbl.AutoEllipsis = true; - this.minutesLbl.CellHeight = 26; - this.minutesLbl.CellWidth = 54; + this.minutesLbl.CellHeight = 29; + this.minutesLbl.CellWidth = 105; this.minutesLbl.Column = 3; this.minutesLbl.ColumnsSpanned = 0; this.minutesLbl.Name = "minutesLbl"; this.minutesLbl.Row = 1; this.minutesLbl.RowsSpanned = 0; - this.minutesLbl.YOffset = 3; + this.minutesLbl.YOffset = 4; this.minutesLbl.SizeChanged += new System.EventHandler(this.label3_SizeChanged); // // label3 // resources.ApplyResources(this.label3, "label3"); this.label3.AutoEllipsis = true; - this.label3.CellHeight = 26; - this.label3.CellWidth = 54; + this.label3.CellHeight = 29; + this.label3.CellWidth = 105; this.label3.Column = 3; this.label3.ColumnsSpanned = 0; this.label3.Name = "label3"; this.label3.Row = 3; this.label3.RowsSpanned = 0; - this.label3.YOffset = 3; + this.label3.YOffset = 4; this.label3.SizeChanged += new System.EventHandler(this.label3_SizeChanged); // // numberSpecsLbl // resources.ApplyResources(this.numberSpecsLbl, "numberSpecsLbl"); this.numberSpecsLbl.AutoEllipsis = true; - this.numberSpecsLbl.CellHeight = 26; - this.numberSpecsLbl.CellWidth = 252; + this.numberSpecsLbl.CellHeight = 29; + this.numberSpecsLbl.CellWidth = 290; this.numberSpecsLbl.Column = 0; this.numberSpecsLbl.ColumnsSpanned = 1; this.numberSpecsLbl.Name = "numberSpecsLbl"; this.numberSpecsLbl.Row = 4; this.numberSpecsLbl.RowsSpanned = 0; - this.numberSpecsLbl.YOffset = 3; + this.numberSpecsLbl.YOffset = 4; // // numberFilesLbl // resources.ApplyResources(this.numberFilesLbl, "numberFilesLbl"); this.numberFilesLbl.AutoEllipsis = true; - this.numberFilesLbl.CellHeight = 26; - this.numberFilesLbl.CellWidth = 252; + this.numberFilesLbl.CellHeight = 29; + this.numberFilesLbl.CellWidth = 290; this.numberFilesLbl.Column = 0; this.numberFilesLbl.ColumnsSpanned = 1; this.numberFilesLbl.Name = "numberFilesLbl"; this.numberFilesLbl.Row = 2; this.numberFilesLbl.RowsSpanned = 0; - this.numberFilesLbl.YOffset = 3; + this.numberFilesLbl.YOffset = 4; // // allLbl // resources.ApplyResources(this.allLbl, "allLbl"); this.allLbl.AutoEllipsis = true; - this.allLbl.CellHeight = 26; - this.allLbl.CellWidth = 54; + this.allLbl.CellHeight = 29; + this.allLbl.CellWidth = 105; this.allLbl.Column = 3; this.allLbl.ColumnsSpanned = 0; this.allLbl.Name = "allLbl"; this.allLbl.Row = 4; this.allLbl.RowsSpanned = 0; - this.allLbl.YOffset = 3; + this.allLbl.YOffset = 4; this.allLbl.SizeChanged += new System.EventHandler(this.label3_SizeChanged); // // sizeLbl // resources.ApplyResources(this.sizeLbl, "sizeLbl"); this.sizeLbl.AutoEllipsis = true; - this.sizeLbl.CellHeight = 26; - this.sizeLbl.CellWidth = 252; + this.sizeLbl.CellHeight = 29; + this.sizeLbl.CellWidth = 290; this.sizeLbl.Column = 0; this.sizeLbl.ColumnsSpanned = 1; this.sizeLbl.Name = "sizeLbl"; this.sizeLbl.Row = 3; this.sizeLbl.RowsSpanned = 0; - this.sizeLbl.YOffset = 3; + this.sizeLbl.YOffset = 4; // // updateLbl // resources.ApplyResources(this.updateLbl, "updateLbl"); this.updateLbl.AutoEllipsis = true; - this.updateLbl.CellHeight = 26; - this.updateLbl.CellWidth = 252; + this.updateLbl.CellHeight = 29; + this.updateLbl.CellWidth = 290; this.updateLbl.Column = 0; this.updateLbl.ColumnsSpanned = 1; this.updateLbl.Name = "updateLbl"; this.updateLbl.Row = 1; this.updateLbl.RowsSpanned = 0; - this.updateLbl.YOffset = 3; - // - // gridPanel1 - // - resources.ApplyResources(this.gridPanel1, "gridPanel1"); - this.gridPanel1.CellHeight = 25; - this.gridPanel1.CellWidth = 217; - this.gridPanel1.Column = 1; - this.gridPanel1.ColumnsSpanned = 0; - this.gridPanel1.Name = "gridPanel1"; - this.gridPanel1.Row = 19; - this.gridPanel1.RowsSpanned = 0; - this.gridPanel1.YOffset = 0; + this.updateLbl.YOffset = 4; // // P4DataRetrievalPreferencesControl // @@ -710,9 +726,10 @@ private void P4DataRetrievalPreferencesControl_Load(object sender, EventArgs e) } else { - updateTB.Text = Preferences.LocalSettings.GetInt("Update_status", 5).ToString(); + updateTB.Text = Preferences.LocalSettings.GetInt("Update_status", P4DataRetrievalPreferencesControl.Update_status_Default).ToString(); } numberFilesTB.Text = Preferences.LocalSettings.GetInt("Number_files",1000).ToString(); + numberUpdatedFilesTB.Text = Preferences.LocalSettings.GetInt("Number_files_cache", 500).ToString(); sizeTB.Text = Preferences.LocalSettings.GetInt("Size_files", 500).ToString(); numberSpecsTB.Text = Preferences.LocalSettings.GetInt("Number_specs",100).ToString(); @@ -780,6 +797,10 @@ public void OnApply() { Preferences.LocalSettings["Number_files"] = SafeConvertToInt32(numberFilesTB.Text); } + if (!String.IsNullOrEmpty(numberUpdatedFilesTB.Text)) + { + Preferences.LocalSettings["Number_files_cache"] = SafeConvertToInt32(numberUpdatedFilesTB.Text); + } if (!String.IsNullOrEmpty(sizeTB.Text)) { Preferences.LocalSettings["Size_files"] = SafeConvertToInt32(sizeTB.Text); @@ -836,6 +857,19 @@ private void numberFilesTB_KeyPress(object sender, KeyPressEventArgs e) } } + private void numberUpdatedFilesTB_KeyPress(object sender, KeyPressEventArgs e) + { + if (!(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar))) + { + e.Handled = true; + } + + if ((numberUpdatedFilesTB.Text.Length > 6) && (!(char.IsControl(e.KeyChar)))) + { + e.Handled = true; + } + } + private void sizeTB_KeyPress(object sender, KeyPressEventArgs e) { if (!(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar))) @@ -877,7 +911,7 @@ public bool UpdateIntervalEnabled } else { - updateTB.Text = Preferences.LocalSettings.GetInt("Update_status",5).ToString(); + updateTB.Text = Preferences.LocalSettings.GetInt("Update_status", P4DataRetrievalPreferencesControl.Update_status_Default).ToString(); } } } diff --git a/P4VS/UI/P4DataRetrievalPreferencesControl.resx b/P4VS/UI/P4DataRetrievalPreferencesControl.resx index ec70ac3..8008998 100644 --- a/P4VS/UI/P4DataRetrievalPreferencesControl.resx +++ b/P4VS/UI/P4DataRetrievalPreferencesControl.resx @@ -121,15 +121,85 @@ Top, Left, Right + + Right + + + + 293, 143 + + + 65, 20 + + + + 32 + + + 500 + + + Right + + + numberUpdatedFilesTB + + + Perforce.I18nControls.GridTextBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + + + gridLayoutPanel1 + + + 0 + + + Left + + + True + + + NoControl + + + 61, 147 + + + 10, 3, 3, 3 + + + 571, 20 + + + 220, 13 + + + 31 + + + Maximum number of files to cache in one run: + + + numberUpdateFilesLbl + + + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + + + gridLayoutPanel1 + + + 1 + Left NoControl - - 15, 418 + 66, 483 15, 3, 3, 3 @@ -137,7 +207,6 @@ 483, 17 - 30 @@ -148,13 +217,13 @@ disableParSubmitCB - Perforce.I18nControls.GridCheckBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridCheckBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 0 + 2 Left @@ -163,13 +232,13 @@ NoControl - 15, 451 + 66, 508 15, 3, 3, 3 - 483, 17 + 483, 18 29 @@ -181,13 +250,13 @@ disableParShelveCB - Perforce.I18nControls.GridCheckBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridCheckBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 1 + 3 Left @@ -196,7 +265,7 @@ NoControl - 15, 385 + 66, 457 15, 3, 3, 3 @@ -214,13 +283,13 @@ disableParSyncCB - Perforce.I18nControls.GridCheckBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridCheckBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 2 + 4 Left, Right @@ -241,7 +310,7 @@ 0, 0, 3, 0 - 90, 13 + 98, 13 10 @@ -253,7 +322,7 @@ gridLabel4 - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutSubpanel3 @@ -265,10 +334,10 @@ Left, Right - 96, 5 + 104, 5 - 417, 2 + 461, 2 8 @@ -277,7 +346,7 @@ gridGroupBox2 - Perforce.I18nControls.GridGroupBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridGroupBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutSubpanel3 @@ -286,13 +355,13 @@ 1 - 0, 366 + 51, 438 0, 10, 0, 0 - 516, 13 + 568, 13 27 @@ -301,13 +370,13 @@ gridLayoutSubpanel3 - Perforce.I18nControls.GridLayoutSubpanel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLayoutSubpanel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 3 + 5 Left, Right @@ -316,13 +385,13 @@ NoControl - 10, 327 + 61, 396 10, 3, 25, 3 - 481, 26 + 533, 26 26 @@ -334,17 +403,20 @@ gridLabel3 - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 4 + 6 True + + NoControl + -311, 526 @@ -361,13 +433,13 @@ gridLabel1 - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 1 + 7 Left, Right @@ -400,7 +472,7 @@ gridLabel2 - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutSubpanel2 @@ -415,7 +487,7 @@ 143, 5 - 370, 2 + 422, 2 8 @@ -424,7 +496,7 @@ gridGroupBox1 - Perforce.I18nControls.GridGroupBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridGroupBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutSubpanel2 @@ -433,13 +505,13 @@ 1 - 0, 191 + 51, 239 0, 10, 0, 0 - 516, 13 + 568, 13 24 @@ -448,13 +520,13 @@ gridLayoutSubpanel2 - Perforce.I18nControls.GridLayoutSubpanel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLayoutSubpanel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 6 + 8 Left, Right @@ -487,7 +559,7 @@ dataRetrievalLbl - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutSubpanel1 @@ -502,7 +574,7 @@ 79, 5 - 428, 2 + 480, 2 8 @@ -511,7 +583,7 @@ dataRetrievalGB - Perforce.I18nControls.GridGroupBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridGroupBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutSubpanel1 @@ -520,10 +592,10 @@ 1 - 3, 3 + 54, 6 - 510, 13 + 562, 13 23 @@ -532,13 +604,13 @@ gridLayoutSubpanel1 - Perforce.I18nControls.GridLayoutSubpanel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLayoutSubpanel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 3 + 9 Left, Right @@ -547,13 +619,13 @@ NoControl - 30, 284 + 81, 347 30, 0, 3, 0 - 483, 17 + 535, 17 22 @@ -565,13 +637,13 @@ LLFullMenuCB - Perforce.I18nControls.GridCheckBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridCheckBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 8 + 10 Left, Right @@ -580,13 +652,13 @@ NoControl - 30, 244 + 81, 301 30, 0, 3, 0 - 483, 17 + 535, 17 22 @@ -598,13 +670,13 @@ PreloadCacheCB - Perforce.I18nControls.GridCheckBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridCheckBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 9 + 11 Left, Right @@ -613,13 +685,13 @@ NoControl - 30, 227 + 81, 281 30, 0, 3, 0 - 483, 17 + 535, 17 22 @@ -631,13 +703,13 @@ TreatProjectsAsDirsCB - Perforce.I18nControls.GridCheckBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridCheckBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 10 + 12 Left, Right @@ -646,13 +718,13 @@ NoControl - 10, 304 + 61, 370 10, 3, 3, 3 - 503, 17 + 555, 17 0 @@ -664,13 +736,13 @@ NoFstatOptimizatioRDO - Perforce.I18nControls.GridRadioButton, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridRadioButton, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 11 + 13 Left, Right @@ -679,13 +751,13 @@ NoControl - 10, 264 + 61, 324 10, 3, 3, 3 - 503, 17 + 555, 17 0 @@ -697,13 +769,13 @@ LazyLoadRDO - Perforce.I18nControls.GridRadioButton, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridRadioButton, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 12 + 14 Left, Right @@ -712,13 +784,13 @@ NoControl - 10, 207 + 61, 258 10, 3, 3, 3 - 503, 17 + 555, 17 0 @@ -730,13 +802,13 @@ OptimizeFstatsRDO - Perforce.I18nControls.GridRadioButton, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridRadioButton, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 13 + 15 Left @@ -748,7 +820,7 @@ NoControl - 15, 126 + 66, 172 15, 3, 3, 3 @@ -766,13 +838,13 @@ AutoUpdateStatudCB - Perforce.I18nControls.GridCheckBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridCheckBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 14 + 16 Left, Right @@ -781,13 +853,13 @@ NoControl - 10, 149 + 61, 198 10, 3, 25, 3 - 481, 29 + 533, 25 13 @@ -799,19 +871,19 @@ infoLbl - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 11 + 17 Right - 255, 22 + 293, 27 65, 20 @@ -829,19 +901,19 @@ updateTB - Perforce.I18nControls.GridTextBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridTextBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 12 + 18 Right - 255, 48 + 293, 56 65, 20 @@ -859,19 +931,19 @@ numberFilesTB - Perforce.I18nControls.GridTextBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridTextBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 13 + 19 Right - 255, 74 + 293, 85 65, 20 @@ -889,19 +961,19 @@ sizeTB - Perforce.I18nControls.GridTextBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridTextBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 14 + 20 Right - 255, 100 + 293, 114 65, 20 @@ -919,13 +991,13 @@ numberSpecsTB - Perforce.I18nControls.GridTextBox, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridTextBox, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 15 + 21 None @@ -937,7 +1009,7 @@ NoControl - 326, 25 + 364, 31 3, 0, 8, 0 @@ -955,13 +1027,13 @@ minutesLbl - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 16 + 22 Left @@ -973,7 +1045,7 @@ NoControl - 326, 77 + 364, 89 3, 0, 8, 0 @@ -991,13 +1063,13 @@ label3 - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 17 + 23 Left @@ -1009,7 +1081,7 @@ NoControl - 10, 103 + 61, 118 10, 3, 3, 3 @@ -1030,13 +1102,13 @@ numberSpecsLbl - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 18 + 24 Left @@ -1048,7 +1120,7 @@ NoControl - 10, 51 + 61, 60 10, 3, 3, 3 @@ -1069,13 +1141,13 @@ numberFilesLbl - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 19 + 25 None @@ -1087,7 +1159,7 @@ NoControl - 327, 103 + 364, 118 3, 0, 8, 0 @@ -1105,13 +1177,13 @@ allLbl - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 20 + 26 Left @@ -1123,7 +1195,7 @@ NoControl - 10, 77 + 61, 89 10, 3, 3, 3 @@ -1144,13 +1216,13 @@ sizeLbl - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 21 + 27 Left @@ -1165,7 +1237,7 @@ NoControl - 10, 25 + 61, 31 10, 3, 3, 3 @@ -1186,43 +1258,19 @@ updateLbl - Perforce.I18nControls.GridLabel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLabel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 gridLayoutPanel1 - 22 - - - Top, Bottom, Left, Right - - - 38, 472 - - - 350, 21 - - - 21 - - - gridPanel1 - - - Perforce.I18nControls.GridPanel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 - - - gridLayoutPanel1 - - - 27 + 28 0, 0 - 516, 496 + 568, 542 21 @@ -1231,7 +1279,7 @@ gridLayoutPanel1 - Perforce.I18nControls.GridLayoutPanel, P4VS, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 + Perforce.I18nControls.GridLayoutPanel, P4VS_Utils, Version=2011.1.0.0, Culture=neutral, PublicKeyToken=5d747d90f174beb1 $this @@ -1255,7 +1303,7 @@ GrowAndShrink - 510, 522 + 558, 569 P4DataRetrievalPreferencesControl diff --git a/RELEASENOTES.txt b/RELEASENOTES.txt index a1e956f..d49430d 100644 --- a/RELEASENOTES.txt +++ b/RELEASENOTES.txt @@ -25,7 +25,7 @@ Compatibility Statements This release is supported on the following platforms: - Windows 7 and 10 + Windows 7, 10 and 11 Visual Studio Compatibility @@ -36,8 +36,8 @@ Compatibility Statements Compatibility with Previous Releases - Unless otherwise stated below, the 2021.2 release of P4VS is - compatible with previous releases from Perforce Software. + Unless otherwise stated below, this release of P4VS is compatible with + previous releases from Perforce Software. Installation @@ -82,10 +82,10 @@ Compatibility Statements If the connection dialog does not appear after Visual Studio upgrade, it is likely active but not on the screen. Use ALT+TAB to attempt to cycle to the Visual Studio application icon that - is the P4VS connection dialog and attempt to restore, move, or maximize - the dialog. If ALT+TAB does not allow access to the connection dialog, - the related screen position saved preference may be edited or deleted. - The settings file can be found in: + is the P4VS connection dialog and attempt to restore, move, or + maximize the dialog. If ALT+TAB does not allow access to the + connection dialog, the related screen position saved preference may be + edited or deleted. The settings file can be found in: C:\Users\\AppData\Roaming\Perforce\P4VS\localsettings.ini and the related lines in that file are: # @@ -128,9 +128,9 @@ Compatibility Statements extension, instead of plain ShiftJis, to avoid mojibake. You need to set the following environment variable: UNICODEMAP_JP=cp932,nec-vdc - Then, when P4V or P4Merge runs, it will use the modified ShiftJis (CP932) - implementation, and apply the extension to recognize NEC special - characters when encoding/decoding characters. + Then, when P4V or P4Merge runs, it will use the modified ShiftJis + (CP932) implementation, and apply the extension to recognize NEC + special characters when encoding/decoding characters. When loading a large project under Perforce control, if directories containing a large number of files are in an expanded @@ -153,17 +153,73 @@ Key to symbols used in change notes below. -------------------------------------------------------------------------- +New Functionality in 2023.1 Patch 5 (2023.1/2551959) (2024/02/07) + (Job #119182) * + Rebuilt with the latest p4api.net API. + +-------------------------------------------------------------------------- +New Functionality in 2023.1 Patch 4 (2023.1/2513916) (2023/11/03) + #2513043 (Job #112720 #114096) * + In ‘Helix Core - Data Retrieval’ tab in the 'Source Control' + preferences settings, overlapping of row ‘Maximum number of + files to cache in one run’ is fixed. All rows and controls + behave correctly on resizing the Data Retrieval options window. + +-------------------------------------------------------------------------- + +New Functionality in 2023.1 Patch 3 (2023.1/2493210) (2023/09/25) + + #2493034, #2493068 (Job #117444) * + During solution/project load, Visual Studio queries for the icons + of the files. And the icons are decided based upon whether the + respective file is included in any of the project or not. This + patch improvises the algorithm behind this to improve P4VS solution + load performance. + +-------------------------------------------------------------------------- + +Bugs fixed in 2023.1 Patch 2 (2023.1/2482839) (2023/08/31) + + #2482139, 2482140 (Job #117130) * + Fixed the intermittent crash of Visual Studio while accessing + repository. This issue occurs intermittently without any particular + pattern, while accessing repository in a different thread than the + main thread. + +-------------------------------------------------------------------------- + +New Functionality in 2023.1 Patch 1 (2023.1/2471431) (2023/08/02) + + #2470221, #2465173 (Job #116595) * + During solution/project load, Visual Studio queried for the file + state for virtual files which are linked from a different physical + location.This caused a substantial numbers of wasteful server calls + which degraded P4VS performance. This fix aims to workaround that + issue and improve P4VS solution load performance + + #2470221, #2467811 (Job #116619) * + Increased the default value for 'Check server updates for every' (in + the Helix Core - Data Retrieval preferences) from 5 mins to 15 mins. + Please note that this will only impact fresh P4VS installations. + + #2470221, #2469313, #2468294 (Job #116620) * + Enriched P4VS logging by adding details like time to completion for + server calls, P4VS settings information and server calls during + recurring solution refreshes + +-------------------------------------------------------------------------- + New Functionality in 2023.1 (2023.1/2456196) (2023/06/20) (Job #115708) * - Rebuilt with the latest p4api.net API. (2023.1/2456134) + Rebuilt with the latest p4api.net API. (2023.1/2456134) -------------------------------------------------------------------------- New Functionality in 2021.2 Patch 7 (2021.2/2413698) (2023/03/02) (Job #114624) * - Rebuilt with the latest p4api.net API. + Rebuilt with the latest p4api.net API. --------------------------------------------------------------------------- @@ -2767,4 +2823,4 @@ Bugs fixed in 2012.1/486881 P4VS no longer opens and closes connections to the Perforce server for each command run. --------------------------------------------------------------------------- +-------------------------------------------------------------------------- \ No newline at end of file