mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 17:56:51 +13:00
Image history performance improvements
This commit is contained in:
parent
2d1fc1e0b6
commit
323f7ac7e8
6 changed files with 60 additions and 60 deletions
|
@ -27,18 +27,6 @@ You should have received a copy of the GNU General Public License
|
||||||
|
|
||||||
namespace ShareX.HelpersLib
|
namespace ShareX.HelpersLib
|
||||||
{
|
{
|
||||||
// http://en.wikipedia.org/wiki/List_of_file_formats
|
|
||||||
|
|
||||||
public enum ImageFileExtensions
|
|
||||||
{
|
|
||||||
jpg, jpeg, png, gif, bmp, ico, tif, tiff
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum TextFileExtensions
|
|
||||||
{
|
|
||||||
txt, log, nfo, c, cpp, cc, cxx, h, hpp, hxx, cs, vb, html, htm, xhtml, xht, xml, css, js, php, bat, java, lua, py, pl, cfg, ini
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum EDataType
|
public enum EDataType
|
||||||
{
|
{
|
||||||
Default,
|
Default,
|
||||||
|
|
|
@ -62,6 +62,9 @@ public static class Helpers
|
||||||
public const string URLPathCharacters = URLCharacters + "/"; // 47
|
public const string URLPathCharacters = URLCharacters + "/"; // 47
|
||||||
public const string ValidURLCharacters = URLPathCharacters + ":?#[]@!$&'()*+,;= ";
|
public const string ValidURLCharacters = URLPathCharacters + ":?#[]@!$&'()*+,;= ";
|
||||||
|
|
||||||
|
public static readonly string[] ImageFileExtensions = new string[] { "jpg", "jpeg", "png", "gif", "bmp", "ico", "tif", "tiff" };
|
||||||
|
public static readonly string[] TextFileExtensions = new string[] { "txt", "log", "nfo", "c", "cpp", "cc", "cxx", "h", "hpp", "hxx", "cs", "vb", "html", "htm", "xhtml", "xht", "xml", "css", "js", "php", "bat", "java", "lua", "py", "pl", "cfg", "ini" };
|
||||||
|
|
||||||
public static readonly Version OSVersion = Environment.OSVersion.Version;
|
public static readonly Version OSVersion = Environment.OSVersion.Version;
|
||||||
|
|
||||||
// Extension without dot
|
// Extension without dot
|
||||||
|
@ -110,13 +113,13 @@ public static string AppendExtension(string filePath, string extension)
|
||||||
return filePath.TrimEnd('.') + '.' + extension.TrimStart('.');
|
return filePath.TrimEnd('.') + '.' + extension.TrimStart('.');
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool IsValidFile(string filePath, Type enumType)
|
private static bool IsValidFile(string filePath, string[] extensionList)
|
||||||
{
|
{
|
||||||
string ext = GetFilenameExtension(filePath);
|
string ext = GetFilenameExtension(filePath);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(ext))
|
if (!string.IsNullOrEmpty(ext))
|
||||||
{
|
{
|
||||||
return Enum.GetNames(enumType).Any(x => ext.Equals(x, StringComparison.InvariantCultureIgnoreCase));
|
return extensionList.Any(x => ext.Equals(x, StringComparison.InvariantCultureIgnoreCase));
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -124,12 +127,12 @@ private static bool IsValidFile(string filePath, Type enumType)
|
||||||
|
|
||||||
public static bool IsImageFile(string filePath)
|
public static bool IsImageFile(string filePath)
|
||||||
{
|
{
|
||||||
return IsValidFile(filePath, typeof(ImageFileExtensions));
|
return IsValidFile(filePath, ImageFileExtensions);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsTextFile(string filePath)
|
public static bool IsTextFile(string filePath)
|
||||||
{
|
{
|
||||||
return IsValidFile(filePath, typeof(TextFileExtensions));
|
return IsValidFile(filePath, TextFileExtensions);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EDataType FindDataType(string filePath)
|
public static EDataType FindDataType(string filePath)
|
||||||
|
|
32
ShareX.HistoryLib/ImageHistoryForm.Designer.cs
generated
32
ShareX.HistoryLib/ImageHistoryForm.Designer.cs
generated
|
@ -29,8 +29,8 @@ protected override void Dispose(bool disposing)
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ImageHistoryForm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ImageHistoryForm));
|
||||||
this.ilvImages = new Manina.Windows.Forms.ImageListView();
|
|
||||||
this.tscMain = new System.Windows.Forms.ToolStripContainer();
|
this.tscMain = new System.Windows.Forms.ToolStripContainer();
|
||||||
|
this.ilvImages = new Manina.Windows.Forms.ImageListView();
|
||||||
this.tsMain = new System.Windows.Forms.ToolStrip();
|
this.tsMain = new System.Windows.Forms.ToolStrip();
|
||||||
this.tsddbViewMode = new System.Windows.Forms.ToolStripDropDownButton();
|
this.tsddbViewMode = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
this.tsmiViewModeThumbnails = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsmiViewModeThumbnails = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
@ -49,6 +49,20 @@ private void InitializeComponent()
|
||||||
this.tsMain.SuspendLayout();
|
this.tsMain.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
|
// tscMain
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// tscMain.ContentPanel
|
||||||
|
//
|
||||||
|
this.tscMain.ContentPanel.Controls.Add(this.ilvImages);
|
||||||
|
resources.ApplyResources(this.tscMain.ContentPanel, "tscMain.ContentPanel");
|
||||||
|
resources.ApplyResources(this.tscMain, "tscMain");
|
||||||
|
this.tscMain.Name = "tscMain";
|
||||||
|
//
|
||||||
|
// tscMain.TopToolStripPanel
|
||||||
|
//
|
||||||
|
this.tscMain.TopToolStripPanel.Controls.Add(this.tsMain);
|
||||||
|
//
|
||||||
// ilvImages
|
// ilvImages
|
||||||
//
|
//
|
||||||
this.ilvImages.AllowDuplicateFileNames = true;
|
this.ilvImages.AllowDuplicateFileNames = true;
|
||||||
|
@ -66,20 +80,6 @@ private void InitializeComponent()
|
||||||
this.ilvImages.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ilvImages_KeyDown);
|
this.ilvImages.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ilvImages_KeyDown);
|
||||||
this.ilvImages.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ilvImages_MouseUp);
|
this.ilvImages.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ilvImages_MouseUp);
|
||||||
//
|
//
|
||||||
// tscMain
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// tscMain.ContentPanel
|
|
||||||
//
|
|
||||||
this.tscMain.ContentPanel.Controls.Add(this.ilvImages);
|
|
||||||
resources.ApplyResources(this.tscMain.ContentPanel, "tscMain.ContentPanel");
|
|
||||||
resources.ApplyResources(this.tscMain, "tscMain");
|
|
||||||
this.tscMain.Name = "tscMain";
|
|
||||||
//
|
|
||||||
// tscMain.TopToolStripPanel
|
|
||||||
//
|
|
||||||
this.tscMain.TopToolStripPanel.Controls.Add(this.tsMain);
|
|
||||||
//
|
|
||||||
// tsMain
|
// tsMain
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.tsMain, "tsMain");
|
resources.ApplyResources(this.tsMain, "tsMain");
|
||||||
|
@ -127,6 +127,7 @@ private void InitializeComponent()
|
||||||
this.tsmiThumbnailSize150,
|
this.tsmiThumbnailSize150,
|
||||||
this.tsmiThumbnailSize200,
|
this.tsmiThumbnailSize200,
|
||||||
this.tsmiThumbnailSize250});
|
this.tsmiThumbnailSize250});
|
||||||
|
this.tsddbThumbnailSize.Margin = new System.Windows.Forms.Padding(5, 1, 0, 2);
|
||||||
this.tsddbThumbnailSize.Name = "tsddbThumbnailSize";
|
this.tsddbThumbnailSize.Name = "tsddbThumbnailSize";
|
||||||
resources.ApplyResources(this.tsddbThumbnailSize, "tsddbThumbnailSize");
|
resources.ApplyResources(this.tsddbThumbnailSize, "tsddbThumbnailSize");
|
||||||
//
|
//
|
||||||
|
@ -164,6 +165,7 @@ private void InitializeComponent()
|
||||||
//
|
//
|
||||||
this.tsbQuickList.CheckOnClick = true;
|
this.tsbQuickList.CheckOnClick = true;
|
||||||
this.tsbQuickList.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
this.tsbQuickList.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||||
|
this.tsbQuickList.Margin = new System.Windows.Forms.Padding(5, 1, 0, 2);
|
||||||
this.tsbQuickList.Name = "tsbQuickList";
|
this.tsbQuickList.Name = "tsbQuickList";
|
||||||
resources.ApplyResources(this.tsbQuickList, "tsbQuickList");
|
resources.ApplyResources(this.tsbQuickList, "tsbQuickList");
|
||||||
this.tsbQuickList.Click += new System.EventHandler(this.tsbQuickList_Click);
|
this.tsbQuickList.Click += new System.EventHandler(this.tsbQuickList_Click);
|
||||||
|
|
|
@ -75,7 +75,8 @@ public ImageHistoryForm(string historyPath, int viewMode, Size thumbnailSize, in
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
Icon = ShareXResources.Icon;
|
Icon = ShareXResources.Icon;
|
||||||
Text = "ShareX - " + string.Format("Image history: {0}", historyPath);
|
// TODO: Translate
|
||||||
|
Text = "ShareX - Image history";
|
||||||
|
|
||||||
HistoryPath = historyPath;
|
HistoryPath = historyPath;
|
||||||
MaxItemCount = maxItemCount;
|
MaxItemCount = maxItemCount;
|
||||||
|
@ -104,15 +105,21 @@ private void RefreshHistoryItems()
|
||||||
|
|
||||||
private HistoryItem[] GetHistoryItems()
|
private HistoryItem[] GetHistoryItems()
|
||||||
{
|
{
|
||||||
IEnumerable<HistoryItem> tempHistoryItems = history.GetHistoryItems().Where(x => !string.IsNullOrEmpty(x.Filepath) && Helpers.IsImageFile(x.Filepath) && File.Exists(x.Filepath));
|
List<HistoryItem> tempHistoryItems = new List<HistoryItem>();
|
||||||
|
|
||||||
if (MaxItemCount > -1)
|
int itemCount = 0;
|
||||||
|
|
||||||
|
foreach (HistoryItem hi in history.GetHistoryItems())
|
||||||
{
|
{
|
||||||
int skip = tempHistoryItems.Count() - MaxItemCount;
|
if (!string.IsNullOrEmpty(hi.Filepath) && Helpers.IsImageFile(hi.Filepath) && File.Exists(hi.Filepath))
|
||||||
|
|
||||||
if (skip > 0)
|
|
||||||
{
|
{
|
||||||
tempHistoryItems = tempHistoryItems.Skip(skip);
|
tempHistoryItems.Add(hi);
|
||||||
|
itemCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MaxItemCount > -1 && itemCount >= MaxItemCount)
|
||||||
|
{
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -117,6 +117,18 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name=">>tscMain.BottomToolStripPanel.Name" xml:space="preserve">
|
||||||
|
<value>tscMain.BottomToolStripPanel</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tscMain.BottomToolStripPanel.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tscMain.BottomToolStripPanel.Parent" xml:space="preserve">
|
||||||
|
<value>tscMain</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>tscMain.BottomToolStripPanel.ZOrder" xml:space="preserve">
|
||||||
|
<value>4</value>
|
||||||
|
</data>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="ilvImages.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="ilvImages.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Fill</value>
|
<value>Fill</value>
|
||||||
|
@ -136,7 +148,7 @@
|
||||||
<value>ilvImages</value>
|
<value>ilvImages</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>ilvImages.Type" xml:space="preserve">
|
<data name=">>ilvImages.Type" xml:space="preserve">
|
||||||
<value>Manina.Windows.Forms.ImageListView, ImageListView, Version=11.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
<value>Manina.Windows.Forms.ImageListView, ImageListView, Version=11.0.4.0, Culture=neutral, PublicKeyToken=null</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>ilvImages.Parent" xml:space="preserve">
|
<data name=">>ilvImages.Parent" xml:space="preserve">
|
||||||
<value>tscMain.ContentPanel</value>
|
<value>tscMain.ContentPanel</value>
|
||||||
|
@ -144,18 +156,6 @@
|
||||||
<data name=">>ilvImages.ZOrder" xml:space="preserve">
|
<data name=">>ilvImages.ZOrder" xml:space="preserve">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>tscMain.BottomToolStripPanel.Name" xml:space="preserve">
|
|
||||||
<value>tscMain.BottomToolStripPanel</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tscMain.BottomToolStripPanel.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tscMain.BottomToolStripPanel.Parent" xml:space="preserve">
|
|
||||||
<value>tscMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tscMain.BottomToolStripPanel.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="tscMain.ContentPanel.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tscMain.ContentPanel.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>804, 587</value>
|
<value>804, 587</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -238,31 +238,31 @@
|
||||||
<value>View mode</value>
|
<value>View mode</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsmiThumbnailSize75.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsmiThumbnailSize75.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>121, 22</value>
|
<value>152, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsmiThumbnailSize75.Text" xml:space="preserve">
|
<data name="tsmiThumbnailSize75.Text" xml:space="preserve">
|
||||||
<value>75 x 75</value>
|
<value>75 x 75</value>
|
||||||
<comment>@Invariant</comment></data>
|
<comment>@Invariant</comment></data>
|
||||||
<data name="tsmiThumbnailSize100.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsmiThumbnailSize100.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>121, 22</value>
|
<value>152, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsmiThumbnailSize100.Text" xml:space="preserve">
|
<data name="tsmiThumbnailSize100.Text" xml:space="preserve">
|
||||||
<value>100 x 100</value>
|
<value>100 x 100</value>
|
||||||
<comment>@Invariant</comment></data>
|
<comment>@Invariant</comment></data>
|
||||||
<data name="tsmiThumbnailSize150.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsmiThumbnailSize150.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>121, 22</value>
|
<value>152, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsmiThumbnailSize150.Text" xml:space="preserve">
|
<data name="tsmiThumbnailSize150.Text" xml:space="preserve">
|
||||||
<value>150 x 150</value>
|
<value>150 x 150</value>
|
||||||
<comment>@Invariant</comment></data>
|
<comment>@Invariant</comment></data>
|
||||||
<data name="tsmiThumbnailSize200.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsmiThumbnailSize200.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>121, 22</value>
|
<value>152, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsmiThumbnailSize200.Text" xml:space="preserve">
|
<data name="tsmiThumbnailSize200.Text" xml:space="preserve">
|
||||||
<value>200 x 200</value>
|
<value>200 x 200</value>
|
||||||
<comment>@Invariant</comment></data>
|
<comment>@Invariant</comment></data>
|
||||||
<data name="tsmiThumbnailSize250.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsmiThumbnailSize250.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>121, 22</value>
|
<value>152, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsmiThumbnailSize250.Text" xml:space="preserve">
|
<data name="tsmiThumbnailSize250.Text" xml:space="preserve">
|
||||||
<value>250 x 250</value>
|
<value>250 x 250</value>
|
||||||
|
@ -274,7 +274,7 @@
|
||||||
<value>Thumbnail size</value>
|
<value>Thumbnail size</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbQuickList.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsbQuickList.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>174, 20</value>
|
<value>150, 20</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsbQuickList.Text" xml:space="preserve">
|
<data name="tsbQuickList.Text" xml:space="preserve">
|
||||||
<value>Only show last 100 images</value>
|
<value>Only show last 100 images</value>
|
||||||
|
@ -286,7 +286,7 @@
|
||||||
<value>3, 1, 3, 1</value>
|
<value>3, 1, 3, 1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsMain.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="tsMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>361, 25</value>
|
<value>347, 25</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsMain.TabIndex" type="System.Int32, mscorlib">
|
<data name="tsMain.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
|
|
|
@ -509,8 +509,8 @@ public Size ToastWindowSize
|
||||||
public TaskSettingsAdvanced()
|
public TaskSettingsAdvanced()
|
||||||
{
|
{
|
||||||
this.ApplyDefaultPropertyValues();
|
this.ApplyDefaultPropertyValues();
|
||||||
ImageExtensions = Enum.GetNames(typeof(ImageFileExtensions)).ToList();
|
ImageExtensions = Helpers.ImageFileExtensions.ToList();
|
||||||
TextExtensions = Enum.GetNames(typeof(TextFileExtensions)).ToList();
|
TextExtensions = Helpers.TextFileExtensions.ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue