diff --git a/SCrawler/Content/Pictures/CutPic_48.png b/SCrawler/Content/Pictures/CutPic_48.png new file mode 100644 index 0000000..3b3a6c3 Binary files /dev/null and b/SCrawler/Content/Pictures/CutPic_48.png differ diff --git a/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb b/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb index b7fb234..938cae7 100644 --- a/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb +++ b/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb @@ -33,6 +33,7 @@ Namespace DownloadObjects Dim MENU_LOAD_SEP_5 As System.Windows.Forms.ToolStripSeparator Dim MENU_LOAD_SEP_6 As System.Windows.Forms.ToolStripSeparator Dim MENU_LOAD_SEP_7 As System.Windows.Forms.ToolStripSeparator + Dim MENU_LOAD_SEP_0 As System.Windows.Forms.ToolStripSeparator Me.OPT_DEFAULT = New System.Windows.Forms.ToolStripMenuItem() Me.OPT_SUBSCRIPTIONS = New System.Windows.Forms.ToolStripMenuItem() Me.ToolbarTOP = New System.Windows.Forms.ToolStrip() @@ -40,6 +41,8 @@ Namespace DownloadObjects Me.BTT_LOAD_SESSION_CURRENT = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_LOAD_SESSION_LAST = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_LOAD_SESSION_CHOOSE = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_COPY_TO = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_MOVE_TO = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_LOAD_FAV = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_LOAD_SPEC = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_FEED_ADD_FAV = New System.Windows.Forms.ToolStripMenuItem() @@ -74,6 +77,7 @@ Namespace DownloadObjects MENU_LOAD_SEP_5 = New System.Windows.Forms.ToolStripSeparator() MENU_LOAD_SEP_6 = New System.Windows.Forms.ToolStripSeparator() MENU_LOAD_SEP_7 = New System.Windows.Forms.ToolStripSeparator() + MENU_LOAD_SEP_0 = New System.Windows.Forms.ToolStripSeparator() Me.ToolbarTOP.SuspendLayout() Me.SuspendLayout() ' @@ -144,6 +148,11 @@ Namespace DownloadObjects MENU_LOAD_SEP_7.Name = "MENU_LOAD_SEP_7" MENU_LOAD_SEP_7.Size = New System.Drawing.Size(349, 6) ' + 'MENU_LOAD_SEP_0 + ' + MENU_LOAD_SEP_0.Name = "MENU_LOAD_SEP_0" + MENU_LOAD_SEP_0.Size = New System.Drawing.Size(349, 6) + ' 'ToolbarTOP ' Me.ToolbarTOP.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden @@ -157,7 +166,7 @@ Namespace DownloadObjects ' Me.MENU_LOAD_SESSION.AutoToolTip = False Me.MENU_LOAD_SESSION.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.MENU_LOAD_SESSION.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_LOAD_SESSION_CURRENT, Me.BTT_LOAD_SESSION_LAST, Me.BTT_LOAD_SESSION_CHOOSE, MENU_LOAD_SEP_1, Me.BTT_LOAD_FAV, Me.BTT_LOAD_SPEC, MENU_LOAD_SEP_2, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_REMOVE_FAV, MENU_LOAD_SEP_3, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_SPEC, MENU_LOAD_SEP_4, Me.BTT_FEED_CLEAR_FAV, Me.BTT_FEED_CLEAR_SPEC, Me.BTT_FEED_DELETE_SPEC, Me.BTT_FEED_DELETE_DAILY_LIST, Me.BTT_FEED_DELETE_DAILY_DATE, MENU_LOAD_SEP_5, Me.BTT_MERGE_SESSIONS, Me.BTT_CLEAR_DAILY, MENU_LOAD_SEP_6, Me.BTT_MERGE_FEEDS, MENU_LOAD_SEP_7, Me.BTT_CHECK_ALL, Me.BTT_CHECK_NONE}) + Me.MENU_LOAD_SESSION.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_LOAD_SESSION_CURRENT, Me.BTT_LOAD_SESSION_LAST, Me.BTT_LOAD_SESSION_CHOOSE, MENU_LOAD_SEP_0, Me.BTT_COPY_TO, Me.BTT_MOVE_TO, MENU_LOAD_SEP_1, Me.BTT_LOAD_FAV, Me.BTT_LOAD_SPEC, MENU_LOAD_SEP_2, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_REMOVE_FAV, MENU_LOAD_SEP_3, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_SPEC, MENU_LOAD_SEP_4, Me.BTT_FEED_CLEAR_FAV, Me.BTT_FEED_CLEAR_SPEC, Me.BTT_FEED_DELETE_SPEC, Me.BTT_FEED_DELETE_DAILY_LIST, Me.BTT_FEED_DELETE_DAILY_DATE, MENU_LOAD_SEP_5, Me.BTT_MERGE_SESSIONS, Me.BTT_CLEAR_DAILY, MENU_LOAD_SEP_6, Me.BTT_MERGE_FEEDS, MENU_LOAD_SEP_7, Me.BTT_CHECK_ALL, Me.BTT_CHECK_NONE}) Me.MENU_LOAD_SESSION.Image = Global.SCrawler.My.Resources.Resources.ArrowDownPic_Blue_24 Me.MENU_LOAD_SESSION.ImageTransparentColor = System.Drawing.Color.Magenta Me.MENU_LOAD_SESSION.Name = "MENU_LOAD_SESSION" @@ -185,6 +194,20 @@ Namespace DownloadObjects Me.BTT_LOAD_SESSION_CHOOSE.Size = New System.Drawing.Size(352, 22) Me.BTT_LOAD_SESSION_CHOOSE.Text = "Select loading session" ' + 'BTT_COPY_TO + ' + Me.BTT_COPY_TO.Image = Global.SCrawler.My.Resources.Resources.PastePic_32 + Me.BTT_COPY_TO.Name = "BTT_COPY_TO" + Me.BTT_COPY_TO.Size = New System.Drawing.Size(352, 22) + Me.BTT_COPY_TO.Text = "Copy checked to..." + ' + 'BTT_MOVE_TO + ' + Me.BTT_MOVE_TO.Image = Global.SCrawler.My.Resources.Resources.CutPic_48 + Me.BTT_MOVE_TO.Name = "BTT_MOVE_TO" + Me.BTT_MOVE_TO.Size = New System.Drawing.Size(352, 22) + Me.BTT_MOVE_TO.Text = "Move checked to..." + ' 'BTT_LOAD_FAV ' Me.BTT_LOAD_FAV.Image = Global.SCrawler.My.Resources.Resources.HeartPic_32 @@ -433,5 +456,7 @@ Namespace DownloadObjects Private WithEvents BTT_FEED_ADD_SPEC_REMOVE As ToolStripMenuItem Private WithEvents BTT_CHECK_ALL As ToolStripMenuItem Private WithEvents BTT_CHECK_NONE As ToolStripMenuItem + Private WithEvents BTT_COPY_TO As ToolStripMenuItem + Private WithEvents BTT_MOVE_TO As ToolStripMenuItem End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Download/Feed/DownloadFeedForm.resx b/SCrawler/Download/Feed/DownloadFeedForm.resx index 6b14342..55a4543 100644 --- a/SCrawler/Download/Feed/DownloadFeedForm.resx +++ b/SCrawler/Download/Feed/DownloadFeedForm.resx @@ -156,6 +156,9 @@ False + + False + 17, 17 diff --git a/SCrawler/Download/Feed/DownloadFeedForm.vb b/SCrawler/Download/Feed/DownloadFeedForm.vb index 203e503..7bc18b5 100644 --- a/SCrawler/Download/Feed/DownloadFeedForm.vb +++ b/SCrawler/Download/Feed/DownloadFeedForm.vb @@ -492,6 +492,40 @@ Namespace DownloadObjects End Try End Sub #End Region + Private Sub BTT_COPY_MOVE_TO_Click(sender As Object, e As EventArgs) Handles BTT_COPY_TO.Click, BTT_MOVE_TO.Click + Const MsgTitle$ = "Copy/Move checked files" + Try + Dim isCopy As Boolean = sender Is BTT_COPY_TO + Dim dest As SFile = Nothing + Dim ff As SFile, df As SFile + Dim files As IEnumerable(Of SFile) = Nothing + + With GetCheckedMedia() + If .ListExists Then files = .Select(Function(m) m.Data.File) + End With + If files.ListExists Then + Using f As New FeedCopyToForm(files, isCopy) + f.ShowDialog() + If f.DialogResult = DialogResult.OK Then dest = f.Destination + End Using + If Not dest.IsEmptyString Then + For Each ff In files + If Not ff.IsEmptyString Then + df = ff + df.Path = dest.Path + If isCopy Then ff.Copy(df) Else SFile.Move(ff, df) + End If + Next + If Not isCopy Then RefillList0() + MsgBoxE({$"The following files were copied to{vbCr}{dest}{vbCr}{vbCr}{files.ListToString(vbCr)}", MsgTitle}) + End If + Else + MsgBoxE({"No files selected", MsgTitle}, vbExclamation) + End If + Catch ex As Exception + ErrorsDescriber.Execute(EDP.LogMessageValue, ex, MsgTitle) + End Try + End Sub #Region "Load fav, spec" Private Sub BTT_LOAD_FAV_Click(sender As Object, e As EventArgs) Handles BTT_LOAD_FAV.Click FeedChangeMode(FeedModes.Special, {FeedSpecial.FavoriteName}) diff --git a/SCrawler/Download/Feed/FeedCopyToForm.Designer.vb b/SCrawler/Download/Feed/FeedCopyToForm.Designer.vb new file mode 100644 index 0000000..786ed5e --- /dev/null +++ b/SCrawler/Download/Feed/FeedCopyToForm.Designer.vb @@ -0,0 +1,153 @@ +' Copyright (C) Andy https://github.com/AAndyProgram +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY +Namespace DownloadObjects + + Partial Friend Class FeedCopyToForm : Inherits System.Windows.Forms.Form + + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + Private components As System.ComponentModel.IContainer + + Private Sub InitializeComponent() + Dim CONTAINER_MAIN As System.Windows.Forms.ToolStripContainer + Dim ActionButton1 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(FeedCopyToForm)) + Dim ActionButton2 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton3 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim ActionButton4 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton() + Dim TP_MAIN As System.Windows.Forms.TableLayoutPanel + Dim FRM_FILES As System.Windows.Forms.GroupBox + Me.CMB_DEST = New PersonalUtilities.Forms.Controls.ComboBoxExtended() + Me.TXT_FILES = New System.Windows.Forms.RichTextBox() + CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer() + TP_MAIN = New System.Windows.Forms.TableLayoutPanel() + FRM_FILES = New System.Windows.Forms.GroupBox() + CONTAINER_MAIN.ContentPanel.SuspendLayout() + CONTAINER_MAIN.SuspendLayout() + CType(Me.CMB_DEST, System.ComponentModel.ISupportInitialize).BeginInit() + TP_MAIN.SuspendLayout() + FRM_FILES.SuspendLayout() + Me.SuspendLayout() + ' + 'CONTAINER_MAIN + ' + ' + 'CONTAINER_MAIN.ContentPanel + ' + CONTAINER_MAIN.ContentPanel.Controls.Add(TP_MAIN) + CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(534, 116) + CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill + CONTAINER_MAIN.LeftToolStripPanelVisible = False + CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0) + CONTAINER_MAIN.Name = "CONTAINER_MAIN" + CONTAINER_MAIN.RightToolStripPanelVisible = False + CONTAINER_MAIN.Size = New System.Drawing.Size(534, 141) + CONTAINER_MAIN.TabIndex = 0 + CONTAINER_MAIN.TopToolStripPanelVisible = False + ' + 'CMB_DEST + ' + ActionButton1.BackgroundImage = CType(resources.GetObject("ActionButton1.BackgroundImage"), System.Drawing.Image) + ActionButton1.Name = "Open" + ActionButton1.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Open + ActionButton1.ToolTipText = "Choose a new location (Ctrl+O)" + ActionButton2.BackgroundImage = CType(resources.GetObject("ActionButton2.BackgroundImage"), System.Drawing.Image) + ActionButton2.Name = "Add" + ActionButton2.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Add + ActionButton2.ToolTipText = "Choose a new location and add it to the list (Alt+O)" + ActionButton3.BackgroundImage = CType(resources.GetObject("ActionButton3.BackgroundImage"), System.Drawing.Image) + ActionButton3.Name = "Clear" + ActionButton3.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Clear + ActionButton4.BackgroundImage = CType(resources.GetObject("ActionButton4.BackgroundImage"), System.Drawing.Image) + ActionButton4.Name = "ArrowDown" + ActionButton4.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.ArrowDown + Me.CMB_DEST.Buttons.Add(ActionButton1) + Me.CMB_DEST.Buttons.Add(ActionButton2) + Me.CMB_DEST.Buttons.Add(ActionButton3) + Me.CMB_DEST.Buttons.Add(ActionButton4) + Me.CMB_DEST.CaptionMode = PersonalUtilities.Forms.Controls.Base.ICaptionControl.Modes.Label + Me.CMB_DEST.CaptionText = "Destination:" + Me.CMB_DEST.CaptionVisible = True + Me.CMB_DEST.CaptionWidth = 70.0R + Me.CMB_DEST.Dock = System.Windows.Forms.DockStyle.Fill + Me.CMB_DEST.Location = New System.Drawing.Point(3, 3) + Me.CMB_DEST.Name = "CMB_DEST" + Me.CMB_DEST.Size = New System.Drawing.Size(528, 22) + Me.CMB_DEST.TabIndex = 0 + Me.CMB_DEST.TextBoxBorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + ' + 'TP_MAIN + ' + TP_MAIN.ColumnCount = 1 + TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + TP_MAIN.Controls.Add(Me.CMB_DEST, 0, 0) + TP_MAIN.Controls.Add(FRM_FILES, 0, 1) + TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill + TP_MAIN.Location = New System.Drawing.Point(0, 0) + TP_MAIN.Name = "TP_MAIN" + TP_MAIN.RowCount = 2 + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) + TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!)) + TP_MAIN.Size = New System.Drawing.Size(534, 116) + TP_MAIN.TabIndex = 0 + ' + 'FRM_FILES + ' + FRM_FILES.Controls.Add(Me.TXT_FILES) + FRM_FILES.Dock = System.Windows.Forms.DockStyle.Fill + FRM_FILES.Location = New System.Drawing.Point(3, 31) + FRM_FILES.Name = "FRM_FILES" + FRM_FILES.Size = New System.Drawing.Size(528, 82) + FRM_FILES.TabIndex = 1 + FRM_FILES.TabStop = False + FRM_FILES.Text = "Files:" + ' + 'TXT_FILES + ' + Me.TXT_FILES.Dock = System.Windows.Forms.DockStyle.Fill + Me.TXT_FILES.Location = New System.Drawing.Point(3, 16) + Me.TXT_FILES.Name = "TXT_FILES" + Me.TXT_FILES.ReadOnly = True + Me.TXT_FILES.Size = New System.Drawing.Size(522, 63) + Me.TXT_FILES.TabIndex = 0 + Me.TXT_FILES.Text = "" + ' + 'FeedCopyToForm + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(534, 141) + Me.Controls.Add(CONTAINER_MAIN) + Me.KeyPreview = True + Me.MinimizeBox = False + Me.MinimumSize = New System.Drawing.Size(550, 150) + Me.Name = "FeedCopyToForm" + Me.ShowInTaskbar = False + Me.Text = "Copy to..." + CONTAINER_MAIN.ContentPanel.ResumeLayout(False) + CONTAINER_MAIN.ResumeLayout(False) + CONTAINER_MAIN.PerformLayout() + CType(Me.CMB_DEST, System.ComponentModel.ISupportInitialize).EndInit() + TP_MAIN.ResumeLayout(False) + FRM_FILES.ResumeLayout(False) + Me.ResumeLayout(False) + + End Sub + Private WithEvents CMB_DEST As PersonalUtilities.Forms.Controls.ComboBoxExtended + Private WithEvents TXT_FILES As RichTextBox + End Class +End Namespace \ No newline at end of file diff --git a/SCrawler/Download/Feed/FeedCopyToForm.resx b/SCrawler/Download/Feed/FeedCopyToForm.resx new file mode 100644 index 0000000..0266693 --- /dev/null +++ b/SCrawler/Download/Feed/FeedCopyToForm.resx @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + False + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP + WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP + aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+ + 5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8 + vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB + cMaRN0UdBBkAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6 + JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAADmUlE + QVRIS62WWWxMURjHL220JW1HausmlFrDFKUhnUGH6bRFzJ2idImlC0Vp2mlji1A8iNhCPIjIRES8EU+W + h2oEtbSDTk3HNNM7S01VKsXjkb/vXBo3k1Ee7sMvmZzzzf//ne/+z50RAAxL1MUIG4G/YAv3HSVhF5Vw + IYNdz3LadVj9RgdTB+HQYYPHIJuE1ocSdlEJFzG+1bPRLQLinglIeCkg+XUkKvz56hnkOfQs/rmA8S9H + YEp7FDI64tAQtKhnsMapZ7zzNHsUFnbGY4VzIk70l6hnIH4wsDR7NBZ3apDrSqL5T8eFgUr1DLZ78lim + Q4N8VzK29MxEpZSBa4M16hnU+c3M9CEFpdJsVHsXos63DDcHrf9nQEXD5VymwW/5USLNwl5vJhp7dTgW + NML2pR7jbsUMS+KdMTa5Q8NQxinfBU4dRFcOyjy52OtbhwOBDTgZLKPPmTgY0ON4MBdNfSbYBupxY8Aq + G10dqMG5/nIc7ytGQ6CQRliAamkTN/g1Ai4e95Qy3iogpX0UtBRDnhRzdxq2SXOxz5eFQ70rScCEU335 + ssGxj0YS06HSm4GN3ekwdE2C1hGH1LZR0JDOJof5jwHvnIvzTa0jlooTYfktvt+fhcOBHDQFTWRgxJGP + ObAGsulZLMLWnjlY756K5c4JmNcRi6T2SGheCIihS2l5ozAo6NRhMolnUAcGV6IcwwqvFrX+JTjYuwKH + SfRAYDms/mzs9y1GFe2VSnOw1j0FejqpLN4WCX4ZufiIBwLMLxQGm12rsLQzgWKYgmLPLNTQw6ynpDSS + IBet8y+TqaVRVdFIeJrWuCcj+/0EzH43BomvIhBLI45uFiDcJ+6QwROFwa6+Amb9bGFNg6Xs9Ncd7Oy3 + Knb2eyU7/20nu9y/m136tIvEl6BC0qKoZwby3alo9JVhj7T5R7m/kJVIIityi8zyXmTiW+I10SqyIQNb + uIgNwYuuf25kFd75KPKkI49OmUWnrfYWyXv/wBb2cijhhVf6a9lGei65XclYRDd6mj0GWz2iLBJaH0rY + RSVc5Eywmhm7kuQXHX+bJlBStrh+zTi0PpSwi0q4yNFAOVvgiEcKJWUsxZn/NhT+znlofShhF5VwkRpv + MUtti4KGYjj6sYCIh5QSu4oG27stjItHU+cjeQzvkcFzFQ2KnSKLoc4FukDCXeI2GbSoaFD4ziyPxNxK + 0AUyNxOP1DOwcaG/8I+/LRB+At7psBnyDBG0AAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAIZJREFUOE+1j10KwCAMgz2b755xl/IsvnaL2K20UfbDAmEako+ZROSTafjE12Go + tbbB43rK5xSAQq1VYFtmeQBoqZTSreVZvgTknM8yyyjA/qodsDF9gspD2Bj6B+DH+NqzhQQAG+POMnSX + AFuc5QFgn6ClHh5iOQVAKNixyucB8NY0vG9JOzzyhrdq5IRgAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAE65JREFUeF7t + 3X2sJWddB/DdLi2lQG2hdOHuvfM887J7Cxca4ELTQMDWKigIFpBAEAgi9g+CJpJo9Q8NJhgBiYZIYspL + GlAKCkhEC4KgQlsLQkqhKi/lrYWWlxaw3dLddrerz/Q89+7dc2fbfTn3npf5fJJv2rS758z85nnOzJz5 + nZktAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMK3O3r79wVUIz65jfGNVxI/VIX69CvGO9M//a9P+e8o3B/8v + vKn9s+3fyX8dAJgmaWd+fl3E96Wd/E9XdvZHkfbvXNa+Rn45AGCS3bvjj/E/h3box5OrmxjPyy8PAEyS + XXO7zqhCeH/HDnwUOdCE+J6zdux4eH47YIrEGE8uy/Ls9Bnx/LooL0oH9b9Th/I1TVG+rCqKC+q6Xsh/ + FJgmO8vy6WknfdPQTnsjckMdwlPy2wITLO3wF6si/lGas1ekuXvX0Fzuyg9S3psOCl6qDwimQB3ji9Ok + 3btmEm907kpnEa/Mbw9Mlq1pB/6cdHZ/ZcfcPZrcXoXyrVVVFfl1gUmSdsS/libqPUMTd5NSvjktwrbB + kgDjVi1UT26K+Nnu+XrMuaud60uPWHpIfhtg3JqyfEaanHcPTdZNTRPCPy4uLj40LxIwBudt2fKAtOP/ + 0zQnN+5koIg3tpca81sC49J+LZcm5a3rJulYEq6LSV40YBOFEB6V5uFV6+flRiTsSwf9r81vDYzBCSO4 + vjfq/KAuiqfm5QM2QRPjuWnubUbz71DCn6W33zpYCmDT1EX5m92Tcuy5q47xFXkxgQ3UduqnOXfn0Bzc + xJSvz4sCbIb2pzlp8v1w/WScnKSzkjekRT1hsMTAKC0vL5/Ydud3zb1NT1FelBcL2GiDm3d0TMTJy0ea + pjk1LzYwAu3NvtLc+uTQXBtn7tYYCJtja/vQno5JOJFpQrzWb4hhNJoQnpjm1Q3D82wCcnNRFKfnxQQ2 + Qttk1zH5JjzhFmcIcHzyzb6O5aFem5J0sP/OvKjARmg7b7sm3xRkT3vDorwawJHb1t6Ep2NOTVoOtDch + yssMjFr6IPh8x8SbnsT4lrQamgPhCMzPzz+sifHjnXNpMnN5XnRglJaWlk5KE2z/0ISbxnzQQ0bgvlXz + 1ePSXPnG0NyZ+DRF8Zi8CsCo7Azh0V0TbkrzRc2B0G3wIJ9429CcmZLce4MgYJTyff87JtzU5uayLM/J + qwcM7vD5+jQ3DgzNlWnKDXldgFFJZwW/2jHZpj1727uZ5VWE3mofqJXmw4eG5sdUpqqqXXm1gFGoQnhJ + 12SbgRxoYvzjtIruK04vxRjPSvPgK0PzYmqTPqtemVcNGIU6xgu7JtusJH1ovH9ubu6UvLrQC2ncPyuN + /58Mz4fpTvnmvHrAKJQL5dO6J9ssJXxucWFhLq8yzLKtaUf5h2ncb9zz+8eUKsYP53UERmHX/PyOrsk2 + g7nJDUWYZUuPWHpIE8oPdIz92UiMn86rCoxIOmOYta8KD5uftk2Peb1hZtTzdVOHcF3HmJ+ZVCF+Ia8u + MCppcl0+PNlmOG1zYPtYYc2BzIQ0np+ZxvWPh8b5LObqvMrAqEzRo4BHmctijCfnEsBUqkP5u2ksz8Kd + PI8g5SfyagOj0jbIpQk2c01DR5Brmh3NfC4DTI324LWO8V0dY3pm48mAsEGm7OEgo0sRb9wZ4+NzGWDi + lWUZ0ti9Zt1YnvUU8fdyCYBRmsFbAh9xqhDvqEN4Xi4FTKz8s93vD4/hPiSdpJyXywCMWPtrgKuGJ12P + ck/6gPmDXAuYOHVR/lY6UN3XMXb7kDv17MAGqhaqJ6WJ1sdegDUJ726a5oG5JDB2917vL+Kl3eO1N/lQ + LgewUdIO8E0dk69vubosy+25JDA2bYNuFeJnOsZovxLjhbkkwEZZXl4+0QfOvfl2Ogg4O5cFNl1dFE9N + 4/B7Q+Oyj7mh/VzKZQE2UtM0j6iL+LWOidizhN3OPBiHuigvSmPwrvVjsn9pQnh1LguwGQa3Fo3fHp6M + Pcw97c1WcllgQy0tLZ2UDr7/qmMc9jJNiF/WkwNjMHhQ0GzfX/yIU8RLfRCxkdq+kzTfrugcf/3MgZ1l + +fRcHmCztU8Yq2P8h47J2cdcpTmQjdCE8IQ0vnzjdkjKP8nlAcZoWxXin3dP0n4l1eGb9UL92FwXOG51 + Ub48ja09w2Otz2nvTJpKs21QIWDs0lnKb6TJqTEphN3NQvncXBY4VtvSju4N3WOs17l6cXHxoblGwKRo + r8mlHeAtHZO2b9mfDohem8sCR2XX3K4z0hj65NCYklSTGONpuUzApNlVFFWaqP81NHF7mvD2tnM7lwbu + V/vwqTR2vrV+LPU7VSjf4ff+MAU0B65NeWVd12fm0sBhpTnzosHDp7rGUV8T9lVFvDiXCJgSrmEezDea + onhMrgsM25rmyuvSODkwNG56nvZyYvi5XCNg2mgOXM3tVVH9ci4L3KtpmlN9W7Y+VYhfiEkuEzCt8n3L + fzA8yXuY/b7OZEVZlovt3ew6xknf8965ublTcpmAaac5cG3C2zQ09Vv7bVAaC/+7fmz0Og6QYVZpDlyT + GD/dPlgpl4b+2Nru5NIYuGfdmOhxmhB/VBblL+QaATNKc+DBfH1nCI/OdWHGtTewSdv874fGgIT4xfYb + wlwmYNZpDlzNbVUIz85lYUblJ2i6BDacGP/u7O3bH5zLBPSF5sDV7K+L+Nu5LMyYtJP7xbSNfzy0zfue + A+03gak8WwdVAnpHc+CaxHiJ5sCZsnK9f/+6bd3v3JZ2/r+SawT0mebAg0kfjB93v/Pp136t3X693bWN + e56v6nsBhmkOXE24Ph0EnJXrwpSp63qhDuXnu7dtn1P+U1VVP5PLBHAozYGDtD+LchvU6TN4Iqa+lqGs + XO8/YVAlgMPQHLiSsC+dNb0ml4UJVxflRWm73b1+O/Y5YXcVwvNziQDun+bANYnxkvO2bHlALg0TJsZ4 + cl3ESzu3Xa8Trm+KYimXCeDIaQ48mKqIH9McOHl2zc/vaIr42a5t1vN8tCiK03OZAI6J5sCVFPFr7QNk + cl0Ys3yp6nvrtlO/s3K9f9ugSgDHSXPgILk58PxcFsYkX+93J8s1qUK8oynKF+YSAYyO5sCVhH3pgOjV + uSxsoqZpHpjq//bu7dLjFPHGND+Xc5kARk9z4JrE+JZUEl+1bpLFhYW5VPf/WLcd5N/ruj4zlwlg42gO + PCQfdXOVjdeE8MRU6xuGai9uXw2MgebA1YTrFkMoc10YsaYoX5rqfOf6uvc6e9LO/xW5RACbT3Pgam5N + B0Q/m8vCCLT3XnCQ2ZXwnWqhenIuE8D4aA5czV3OykZj19yuM1I9PzlUXwnhirIst+cyAYyf5sA1GTQH + uu/6MdoZ4+NTHb+1rq59j+v9wKTSHHhIPtI0zam5NByhNH5enGr306Fa9j1720ttuUQAE0tz4Epi/FJM + cl24b8ZNd25KdTk31whg8mkOXEm4pX1EbS4LHebn5x+WdnIf765fr3NVCOFRuUwA00Nz4Gr21kX58lwW + 1qjmq8el+nxjqF4S4yVLS0sn5TIBTB/NgWuiOfAQTVE+J9XltnV16nXCvqqIF+cSAUw3zYGH5INnb9/+ + 4Fyavtra7uRSLe4Zqk3f88MmxvNyjQBmhiavg/liVVVFrkuvLC4uPjSt/4eG6iEhXlOWZchlApg9mgNX + c3P6wD8nl6UXqvlqZ1rv/xmqQ+/ThPJv5ufnH5TLBDC7NAeuZm97n/tclplWhfCstL4/GVr/nsf1fqCH + NAeu5kB7aSSVZFabA13v786tVVFckGsE0C+aAw8mnSG/f25u7pRcmpnQbt8mlB/oWt8+pwnxWk+PBNAc + uJoqxC/MSnNgs7BQ1yFc17WePc97Z+1AD+C4aA5czU3T/qjXdED3zLQePx5ar75nf77ev3VQJQBWaQ5c + zZ4qhJfkskyVuigvapvbOtapt2lC/FFTls/IJQKgi+bA1aw0B07FGWOM8eQ6xnd1rEe/E+OX2jGdywTA + fdEcuCYx/u2kXzNudjTz6az/c53L3+NUMX7YI6EBjp7mwIO5pt3J5rpMlHKhfFpavu8PLW/fM+s/7QTY + eJoDV/PduiiWc1kmwuB6f7x7aDn7ntvrGC/MJQLgeGgOHKQK8Y46hOflsoxN0zQPbEJ8Z9cy9jxf3RnC + o3OZABgFzYGrab9efl0qyViaAxcXFubSgchnOpar77k8xnhaLhMAo6Q5cE2K+L7NfoBMHcJT0nvfvG5Z + +h3X+wE2iebAg7m6LMvtuS4bKl/v14txSMLuKoQX5BIBsBk0B64kfCfV4om5LCN33pYtD3DA1ZVwfb1Q + PzaXCYDNpDlwJWH3RnSe75rbdUZ6/X9b/369z0eLojg9lwmAcdAcuJqV5sCRaEJ4QnrNbw+9R9+zcr1/ + 26BKAIyV5sBDcll7W95cmmPSPocgvc6dQ6/b9+xpivJluUQATBDNgQdz1TE2B6phV4p446TdhAmAIens + 9ZXpQ1tz4KA58Am5LPfrrB07Hp7+zr90v1Z/UxXxU3Vdn5nLBMAk0xy4krC7WSifm8tyWGVZnl2F+M3u + 1+hxYrxkeXn5xFwmAKaB5sDV7E9nsRfnsqyTdnIvGtxiuPPv9jV7Ul1ekUsEwLTRHHgwVSjfsbS0dFIu + TWtr+6uB9P8ODP/Znue7ZVmek2sEwBTT2Laa8sr2enb7jHoHRl0JV8QYH5nHDQCzwJ0DV/P1tKO7vuO/ + 9zpVKN/qej/AjNIcKB3Z24TyVXmIADCrNAfKmtzUxHhuHhoAzDrNgZJyVQjhUXlIANAjmgN7m/Du471d + MgBTzp0D+5Sw777uiQBAz2gO7EPCLSnn500OAAOaA2c615RlGfKmBoBDaQ6cvTQhvmd+fv5BeRMDwGFp + DpyJuN4PwDHQHDjVubUqigvypgSAo6M5cPrShHjtYghl3oQAcGw0B05Rivi+ubm5U/KmA4Djozlw4rM/ + X+/fOthiADA6mgMnME2IP2rK8hl5GwHAxtAcOFH5SozxrLxpAGBjaQ4cf6oYP9w0zal5kwDA5tAcOLYc + aC/FpE1wwmBLAMAm0xy46bk91fvCXH4AGCvNgZuRIn6tKYrH5JoDwGTQHLihuTzGeFouNQBMFs2BI4/r + /QBMB82Bo0rYXYXwglxWAJh8mgOPN+H6eqF+bC4nAEwVzYHHkiL+c1EUp+caAsB00hx4FInxLalk2waV + A4AppznwfrOnLsqX53IBwOzQHHiYFPHGaqF6Ui4TAMwezYGHpirip+q6PjOXBwBmmubANjFesry8fGKu + CQD0Q4+bA/dWMf56LgMA9E8PmwO/W5blOXn1AaC/+tMcWF4ZY3xkXm0AYOabA2O8ZGlp6aS8ugDAGrPY + HLi3CeWr8voBAIczQ82BN6UDmnPzagEA92f6mwPLz1dVVeTVAQCO1LQ2B1Yh/PX8/PyD8moAAEdrupoD + w76qiBfnRQcAjtMUNAeGW1LOz8sLAIzKBDcHXlOWZciLCQCM2gQ2B142Nzd3Sl48AGCjTEhz4H7X+wFg + k425OfDWqqh+Pi8KALDJtqWDgDemHfKBoR30hqUJ8dqY5PcHAMalKcrnpJ3z94Z31qNO+/t+1/sBYIKk + k/LT6hD+Mu2oR/4rgXTW/+X02r+U3woAmDTtz/GaIv5F2nH/ZHhHfpS5J+Vf01n/S9LLbhu8OgAw0dpb + 8TYL5XPTmfvb0o78v/MOvWtHvybtzXzKT1Qx/n5d1wv5pQCAaXXvAUFRLLXd+3WMFzZF+cKUl7X/rIri + gsWFhbn8RwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6LEtW/4flgYiLD1qeX0A + AAAASUVORK5CYII= + + + + False + + \ No newline at end of file diff --git a/SCrawler/Download/Feed/FeedCopyToForm.vb b/SCrawler/Download/Feed/FeedCopyToForm.vb new file mode 100644 index 0000000..2d14f43 --- /dev/null +++ b/SCrawler/Download/Feed/FeedCopyToForm.vb @@ -0,0 +1,79 @@ +' Copyright (C) Andy https://github.com/AAndyProgram +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY +Imports PersonalUtilities.Tools +Imports PersonalUtilities.Forms +Imports PersonalUtilities.Forms.Controls.Base +Imports ADB = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons +Namespace DownloadObjects + Friend Class FeedCopyToForm + Private WithEvents MyDefs As DefaultFormOptions + Private _Destination As SFile = Nothing + Friend ReadOnly Property Destination As SFile + Get + Return _Destination + End Get + End Property + Friend Sub New(ByVal Files As IEnumerable(Of SFile), ByVal IsCopy As Boolean) + InitializeComponent() + MyDefs = New DefaultFormOptions(Me, Settings.Design) + If Files.ListExists Then TXT_FILES.Text = Files.ListToString(vbNewLine) + Text = $"{IIf(IsCopy, "Copy", "Move")} files to..." + Try + If IsCopy Then + Icon = ImageRenderer.GetIcon(My.Resources.PastePic_32, EDP.ThrowException) + Else + Icon = ImageRenderer.GetIcon(My.Resources.CutPic_48, EDP.ThrowException) + End If + Catch + ShowIcon = False + End Try + End Sub + Private Sub FeedCopyToForm_Load(sender As Object, e As EventArgs) Handles Me.Load + Try + With MyDefs + .MyViewInitialize(True) + .AddOkCancelToolbar() + .MyFieldsCheckerE = New FieldsChecker + With .MyFieldsCheckerE + .AddControl(Of String)(CMB_DEST, "Destination") + .EndLoaderOperations() + End With + Settings.DownloadLocations.PopulateComboBox(CMB_DEST) + CMB_DEST.Text = Settings.FeedLastCopyMoveLocation.Value + .EndLoaderOperations() + .MyOkCancel.EnableOK = True + End With + Catch ex As Exception + MyDefs.InvokeLoaderError(ex) + End Try + End Sub + Private Sub FeedCopyToForm_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown + Dim b As Boolean = True + If e.KeyCode = Keys.O And e.Control Then + Settings.DownloadLocations.ChooseNewLocation(CMB_DEST, False, False) + ElseIf e.KeyCode = Keys.O And e.Alt Then + Settings.DownloadLocations.ChooseNewLocation(CMB_DEST, True, True) + Else + b = False + End If + If b Then e.Handled = True + End Sub + Private Sub MyDefs_ButtonOkClick(ByVal Sender As Object, ByVal e As KeyHandleEventArgs) Handles MyDefs.ButtonOkClick + If MyDefs.MyFieldsChecker.AllParamsOK Then + _Destination = CMB_DEST.Text + Settings.FeedLastCopyMoveLocation.Value = _Destination + MyDefs.CloseForm() + End If + End Sub + Private Sub CMB_DEST_ActionOnButtonClick(ByVal Sender As Object, ByVal e As ActionButtonEventArgs) Handles CMB_DEST.ActionOnButtonClick + If Sender.DefaultButton = ADB.Open Or Sender.DefaultButton = ADB.Add Then _ + Settings.DownloadLocations.ChooseNewLocation(CMB_DEST, Sender.DefaultButton = ADB.Add, Sender.DefaultButton = ADB.Add) + End Sub + End Class +End Namespace \ No newline at end of file diff --git a/SCrawler/Download/Feed/FeedMedia.Designer.vb b/SCrawler/Download/Feed/FeedMedia.Designer.vb index 200bf40..7a191c8 100644 --- a/SCrawler/Download/Feed/FeedMedia.Designer.vb +++ b/SCrawler/Download/Feed/FeedMedia.Designer.vb @@ -24,8 +24,10 @@ Namespace DownloadObjects Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Dim CONTEXT_SEP_1 As System.Windows.Forms.ToolStripSeparator - Dim CONTEXT_SEP_2 As System.Windows.Forms.ToolStripSeparator Dim TP_LBL As System.Windows.Forms.TableLayoutPanel + Dim CONTEXT_SEP_3 As System.Windows.Forms.ToolStripSeparator + Dim CONTEXT_SEP_4 As System.Windows.Forms.ToolStripSeparator + Me.CONTEXT_SEP_2 = New System.Windows.Forms.ToolStripSeparator() Me.CH_CHECKED = New System.Windows.Forms.CheckBox() Me.LBL_INFO = New System.Windows.Forms.Label() Me.CONTEXT_DATA = New System.Windows.Forms.ContextMenuStrip(Me.components) @@ -35,23 +37,25 @@ Namespace DownloadObjects Me.BTT_CONTEXT_OPEN_USER = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_OPEN_USER_URL = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_OPEN_USER_POST = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_COPY_TO = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_MOVE_TO = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_FEED_ADD_FAV = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_FEED_ADD_FAV_REMOVE = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_FEED_ADD_SPEC = New System.Windows.Forms.ToolStripMenuItem() + Me.BTT_FEED_ADD_SPEC_REMOVE = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_FEED_REMOVE_FAV = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_FEED_REMOVE_SPEC = New System.Windows.Forms.ToolStripMenuItem() - Me.CONTEXT_SEP_3 = New System.Windows.Forms.ToolStripSeparator() Me.BTT_CONTEXT_FIND_USER = New System.Windows.Forms.ToolStripMenuItem() Me.BTT_CONTEXT_INFO = New System.Windows.Forms.ToolStripMenuItem() - Me.CONTEXT_SEP_4 = New System.Windows.Forms.ToolStripSeparator() + Me.CONTEXT_SEP_5 = New System.Windows.Forms.ToolStripSeparator() Me.BTT_CONTEXT_DELETE = New System.Windows.Forms.ToolStripMenuItem() Me.ICON_SITE = New System.Windows.Forms.PictureBox() Me.TP_MAIN = New System.Windows.Forms.TableLayoutPanel() Me.LBL_TITLE = New System.Windows.Forms.Label() - Me.BTT_FEED_ADD_FAV_REMOVE = New System.Windows.Forms.ToolStripMenuItem() - Me.BTT_FEED_ADD_SPEC_REMOVE = New System.Windows.Forms.ToolStripMenuItem() CONTEXT_SEP_1 = New System.Windows.Forms.ToolStripSeparator() - CONTEXT_SEP_2 = New System.Windows.Forms.ToolStripSeparator() TP_LBL = New System.Windows.Forms.TableLayoutPanel() + CONTEXT_SEP_3 = New System.Windows.Forms.ToolStripSeparator() + CONTEXT_SEP_4 = New System.Windows.Forms.ToolStripSeparator() TP_LBL.SuspendLayout() Me.CONTEXT_DATA.SuspendLayout() CType(Me.ICON_SITE, System.ComponentModel.ISupportInitialize).BeginInit() @@ -65,8 +69,8 @@ Namespace DownloadObjects ' 'CONTEXT_SEP_2 ' - CONTEXT_SEP_2.Name = "CONTEXT_SEP_2" - CONTEXT_SEP_2.Size = New System.Drawing.Size(302, 6) + Me.CONTEXT_SEP_2.Name = "CONTEXT_SEP_2" + Me.CONTEXT_SEP_2.Size = New System.Drawing.Size(302, 6) ' 'TP_LBL ' @@ -110,9 +114,9 @@ Namespace DownloadObjects ' 'CONTEXT_DATA ' - Me.CONTEXT_DATA.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_CONTEXT_DOWN, Me.CONTEXT_SEP_0, Me.BTT_CONTEXT_OPEN_MEDIA, Me.BTT_CONTEXT_OPEN_USER, CONTEXT_SEP_1, Me.BTT_CONTEXT_OPEN_USER_URL, Me.BTT_CONTEXT_OPEN_USER_POST, CONTEXT_SEP_2, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_FAV, Me.BTT_FEED_REMOVE_SPEC, Me.CONTEXT_SEP_3, Me.BTT_CONTEXT_FIND_USER, Me.BTT_CONTEXT_INFO, Me.CONTEXT_SEP_4, Me.BTT_CONTEXT_DELETE}) + Me.CONTEXT_DATA.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_CONTEXT_DOWN, Me.CONTEXT_SEP_0, Me.BTT_CONTEXT_OPEN_MEDIA, Me.BTT_CONTEXT_OPEN_USER, CONTEXT_SEP_1, Me.BTT_CONTEXT_OPEN_USER_URL, Me.BTT_CONTEXT_OPEN_USER_POST, Me.CONTEXT_SEP_2, Me.BTT_COPY_TO, Me.BTT_MOVE_TO, CONTEXT_SEP_3, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_FAV, Me.BTT_FEED_REMOVE_SPEC, CONTEXT_SEP_4, Me.BTT_CONTEXT_FIND_USER, Me.BTT_CONTEXT_INFO, Me.CONTEXT_SEP_5, Me.BTT_CONTEXT_DELETE}) Me.CONTEXT_DATA.Name = "CONTEXT_PIC" - Me.CONTEXT_DATA.Size = New System.Drawing.Size(306, 364) + Me.CONTEXT_DATA.Size = New System.Drawing.Size(306, 414) ' 'BTT_CONTEXT_DOWN ' @@ -156,6 +160,25 @@ Namespace DownloadObjects Me.BTT_CONTEXT_OPEN_USER_POST.Size = New System.Drawing.Size(305, 22) Me.BTT_CONTEXT_OPEN_USER_POST.Text = "Open post" ' + 'BTT_COPY_TO + ' + Me.BTT_COPY_TO.Image = Global.SCrawler.My.Resources.Resources.PastePic_32 + Me.BTT_COPY_TO.Name = "BTT_COPY_TO" + Me.BTT_COPY_TO.Size = New System.Drawing.Size(305, 22) + Me.BTT_COPY_TO.Text = "Copy to..." + ' + 'BTT_MOVE_TO + ' + Me.BTT_MOVE_TO.Image = Global.SCrawler.My.Resources.Resources.CutPic_48 + Me.BTT_MOVE_TO.Name = "BTT_MOVE_TO" + Me.BTT_MOVE_TO.Size = New System.Drawing.Size(305, 22) + Me.BTT_MOVE_TO.Text = "Move to..." + ' + 'CONTEXT_SEP_3 + ' + CONTEXT_SEP_3.Name = "CONTEXT_SEP_3" + CONTEXT_SEP_3.Size = New System.Drawing.Size(302, 6) + ' 'BTT_FEED_ADD_FAV ' Me.BTT_FEED_ADD_FAV.Image = Global.SCrawler.My.Resources.Resources.HeartPic_32 @@ -163,6 +186,13 @@ Namespace DownloadObjects Me.BTT_FEED_ADD_FAV.Size = New System.Drawing.Size(305, 22) Me.BTT_FEED_ADD_FAV.Text = "Add to Favorite" ' + 'BTT_FEED_ADD_FAV_REMOVE + ' + Me.BTT_FEED_ADD_FAV_REMOVE.Image = Global.SCrawler.My.Resources.Resources.HeartPic_32 + Me.BTT_FEED_ADD_FAV_REMOVE.Name = "BTT_FEED_ADD_FAV_REMOVE" + Me.BTT_FEED_ADD_FAV_REMOVE.Size = New System.Drawing.Size(305, 22) + Me.BTT_FEED_ADD_FAV_REMOVE.Text = "Add to Favorite (remove from current)" + ' 'BTT_FEED_ADD_SPEC ' Me.BTT_FEED_ADD_SPEC.Image = Global.SCrawler.My.Resources.Resources.RSSPic_512 @@ -170,6 +200,13 @@ Namespace DownloadObjects Me.BTT_FEED_ADD_SPEC.Size = New System.Drawing.Size(305, 22) Me.BTT_FEED_ADD_SPEC.Text = "Add to special feed..." ' + 'BTT_FEED_ADD_SPEC_REMOVE + ' + Me.BTT_FEED_ADD_SPEC_REMOVE.Image = Global.SCrawler.My.Resources.Resources.RSSPic_512 + Me.BTT_FEED_ADD_SPEC_REMOVE.Name = "BTT_FEED_ADD_SPEC_REMOVE" + Me.BTT_FEED_ADD_SPEC_REMOVE.Size = New System.Drawing.Size(305, 22) + Me.BTT_FEED_ADD_SPEC_REMOVE.Text = "Add to special feed (remove from current)..." + ' 'BTT_FEED_REMOVE_FAV ' Me.BTT_FEED_REMOVE_FAV.Image = Global.SCrawler.My.Resources.Resources.DeletePic_24 @@ -184,10 +221,10 @@ Namespace DownloadObjects Me.BTT_FEED_REMOVE_SPEC.Size = New System.Drawing.Size(305, 22) Me.BTT_FEED_REMOVE_SPEC.Text = "Remove from special feed..." ' - 'CONTEXT_SEP_3 + 'CONTEXT_SEP_4 ' - Me.CONTEXT_SEP_3.Name = "CONTEXT_SEP_3" - Me.CONTEXT_SEP_3.Size = New System.Drawing.Size(302, 6) + CONTEXT_SEP_4.Name = "CONTEXT_SEP_4" + CONTEXT_SEP_4.Size = New System.Drawing.Size(302, 6) ' 'BTT_CONTEXT_FIND_USER ' @@ -203,10 +240,10 @@ Namespace DownloadObjects Me.BTT_CONTEXT_INFO.Size = New System.Drawing.Size(305, 22) Me.BTT_CONTEXT_INFO.Text = "Information" ' - 'CONTEXT_SEP_4 + 'CONTEXT_SEP_5 ' - Me.CONTEXT_SEP_4.Name = "CONTEXT_SEP_4" - Me.CONTEXT_SEP_4.Size = New System.Drawing.Size(302, 6) + Me.CONTEXT_SEP_5.Name = "CONTEXT_SEP_5" + Me.CONTEXT_SEP_5.Size = New System.Drawing.Size(302, 6) ' 'BTT_CONTEXT_DELETE ' @@ -252,20 +289,6 @@ Namespace DownloadObjects Me.LBL_TITLE.Size = New System.Drawing.Size(140, 25) Me.LBL_TITLE.TabIndex = 1 ' - 'BTT_FEED_ADD_FAV_REMOVE - ' - Me.BTT_FEED_ADD_FAV_REMOVE.Image = Global.SCrawler.My.Resources.Resources.HeartPic_32 - Me.BTT_FEED_ADD_FAV_REMOVE.Name = "BTT_FEED_ADD_FAV_REMOVE" - Me.BTT_FEED_ADD_FAV_REMOVE.Size = New System.Drawing.Size(305, 22) - Me.BTT_FEED_ADD_FAV_REMOVE.Text = "Add to Favorite (remove from current)" - ' - 'BTT_FEED_ADD_SPEC_REMOVE - ' - Me.BTT_FEED_ADD_SPEC_REMOVE.Image = Global.SCrawler.My.Resources.Resources.RSSPic_512 - Me.BTT_FEED_ADD_SPEC_REMOVE.Name = "BTT_FEED_ADD_SPEC_REMOVE" - Me.BTT_FEED_ADD_SPEC_REMOVE.Size = New System.Drawing.Size(305, 22) - Me.BTT_FEED_ADD_SPEC_REMOVE.Text = "Add to special feed (remove from current)..." - ' 'FeedMedia ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -299,7 +322,6 @@ Namespace DownloadObjects Private WithEvents LBL_INFO As Label Private WithEvents BTT_CONTEXT_INFO As ToolStripMenuItem Private WithEvents ICON_SITE As PictureBox - Private WithEvents CONTEXT_SEP_3 As ToolStripSeparator Private WithEvents BTT_CONTEXT_DOWN As ToolStripMenuItem Private WithEvents CONTEXT_SEP_0 As ToolStripSeparator Private WithEvents LBL_TITLE As Label @@ -307,8 +329,11 @@ Namespace DownloadObjects Private WithEvents BTT_FEED_ADD_SPEC As ToolStripMenuItem Private WithEvents BTT_FEED_REMOVE_FAV As ToolStripMenuItem Private WithEvents BTT_FEED_REMOVE_SPEC As ToolStripMenuItem - Private WithEvents CONTEXT_SEP_4 As ToolStripSeparator Private WithEvents BTT_FEED_ADD_FAV_REMOVE As ToolStripMenuItem Private WithEvents BTT_FEED_ADD_SPEC_REMOVE As ToolStripMenuItem + Private WithEvents BTT_COPY_TO As ToolStripMenuItem + Private WithEvents BTT_MOVE_TO As ToolStripMenuItem + Private WithEvents CONTEXT_SEP_5 As ToolStripSeparator + Private WithEvents CONTEXT_SEP_2 As ToolStripSeparator End Class End Namespace \ No newline at end of file diff --git a/SCrawler/Download/Feed/FeedMedia.resx b/SCrawler/Download/Feed/FeedMedia.resx index d0a3aa8..eb410b0 100644 --- a/SCrawler/Download/Feed/FeedMedia.resx +++ b/SCrawler/Download/Feed/FeedMedia.resx @@ -120,13 +120,16 @@ False - - False - False 17, 17 + + False + + + False + \ No newline at end of file diff --git a/SCrawler/Download/Feed/FeedMedia.vb b/SCrawler/Download/Feed/FeedMedia.vb index f1665a6..e402f86 100644 --- a/SCrawler/Download/Feed/FeedMedia.vb +++ b/SCrawler/Download/Feed/FeedMedia.vb @@ -177,9 +177,13 @@ Namespace DownloadObjects BTT_CONTEXT_DOWN.Visible = True CONTEXT_SEP_0.Visible = True BTT_CONTEXT_OPEN_USER.Visible = False - CONTEXT_SEP_4.Visible = False + CONTEXT_SEP_5.Visible = False BTT_CONTEXT_DELETE.Visible = False + CONTEXT_SEP_2.Visible = False + BTT_COPY_TO.Visible = False + BTT_MOVE_TO.Visible = False + If Not Media.Data.URL.IsEmptyString Then Dim ext$ = Media.Data.URL.CSFile.Extension Dim imgFile As New SFile With {.Path = Settings.Cache.RootDirectory.Path} @@ -478,6 +482,33 @@ Namespace DownloadObjects End Try End Sub #End Region +#Region "Copy, Move" + Private Sub BTT_COPY_MOVE_TO_Click(sender As Object, e As EventArgs) Handles BTT_COPY_TO.Click, BTT_MOVE_TO.Click + Const MsgTitle$ = "Copy/Move checked files" + Try + If Not File.IsEmptyString Then + Dim isCopy As Boolean = sender Is BTT_COPY_TO + Dim dest As SFile = Nothing + Dim ff As SFile = File + Using f As New FeedCopyToForm({File}, isCopy) + f.ShowDialog() + If f.DialogResult = DialogResult.OK Then dest = f.Destination + End Using + If Not dest.IsEmptyString Then + ff.Path = dest + If isCopy Then + File.Copy(ff) + Else + If SFile.Move(File, ff) Then RaiseEvent MediaDeleted(Me) + End If + MsgBoxE({$"File {IIf(isCopy, "copied", "moved")}{vbCr}Source: '{File}'{vbCr}Destination: '{ff}'", MsgTitle}) + End If + End If + Catch ex As Exception + ErrorsDescriber.Execute(EDP.LogMessageValue, ex, MsgTitle) + End Try + End Sub +#End Region #Region "Feed" Private Sub BTT_FEED_ADD_FAV_Click(sender As Object, e As EventArgs) Handles BTT_FEED_ADD_FAV.Click, BTT_FEED_ADD_FAV_REMOVE.Click With Settings.Feeds.Favorite diff --git a/SCrawler/My Project/Resources.Designer.vb b/SCrawler/My Project/Resources.Designer.vb index 60a588e..5eeb9d7 100644 --- a/SCrawler/My Project/Resources.Designer.vb +++ b/SCrawler/My Project/Resources.Designer.vb @@ -120,6 +120,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property CutPic_48() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("CutPic_48", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' diff --git a/SCrawler/My Project/Resources.resx b/SCrawler/My Project/Resources.resx index a3b77c7..9f63ed8 100644 --- a/SCrawler/My Project/Resources.resx +++ b/SCrawler/My Project/Resources.resx @@ -220,4 +220,7 @@ ..\Content\Pictures\BrushToolPic_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Content\Pictures\CutPic_48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/SCrawler/SCrawler.vbproj b/SCrawler/SCrawler.vbproj index 78d5314..237c423 100644 --- a/SCrawler/SCrawler.vbproj +++ b/SCrawler/SCrawler.vbproj @@ -267,6 +267,12 @@ Form + + FeedCopyToForm.vb + + + Form + FeedMedia.vb @@ -524,6 +530,9 @@ DownloadSavedPostsForm.vb + + FeedCopyToForm.vb + FeedMedia.vb @@ -732,6 +741,9 @@ + + + diff --git a/SCrawler/SettingsCLS.vb b/SCrawler/SettingsCLS.vb index 842c2e2..440f22d 100644 --- a/SCrawler/SettingsCLS.vb +++ b/SCrawler/SettingsCLS.vb @@ -320,6 +320,7 @@ Friend Class SettingsCLS : Implements IDownloaderSettings, IDisposable FeedLastModeSubscriptions = New XMLValue(Of Boolean)("LastModeSubscriptions", False, MyXML, n) FeedShowFriendlyNames = New XMLValue(Of Boolean)("ShowFriendlyNames", True, MyXML, n) FeedShowSpecialFeedsMediaItem = New XMLValue(Of Boolean)("ShowSpecialFeedsMediaItem", False, MyXML, n) + FeedLastCopyMoveLocation = New XMLValue(Of SFile)("LastCopyMoveLocation",, MyXML, n) n = {"Users"} FromChannelDownloadTop = New XMLValue(Of Integer)("FromChannelDownloadTop", 10, MyXML, n) @@ -954,6 +955,7 @@ Friend Class SettingsCLS : Implements IDownloaderSettings, IDisposable Friend ReadOnly Property FeedLastModeSubscriptions As XMLValue(Of Boolean) Friend ReadOnly Property FeedShowFriendlyNames As XMLValue(Of Boolean) Friend ReadOnly Property FeedShowSpecialFeedsMediaItem As XMLValue(Of Boolean) + Friend ReadOnly Property FeedLastCopyMoveLocation As XMLValue(Of SFile) #End Region #Region "New version properties" Friend ReadOnly Property CheckUpdatesAtStart As XMLValue(Of Boolean)