mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 14:07:46 +08:00
Merge branch 'develop' into remove_components_check
This commit is contained in:
@@ -15,6 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
- #1850: Minify config xml
|
||||
### Changed
|
||||
- #2013: Removed components check
|
||||
- #2011: Removed screenshot manager
|
||||
- #2010: Redesigned menus
|
||||
- #2005: Removed in-app documentation
|
||||
- #1777: Cleaned up VisualStudio project structure
|
||||
|
||||
@@ -10,7 +10,6 @@ namespace mRemoteNG.App
|
||||
private static ActiveDirectoryImportWindow _adimportForm;
|
||||
private static ExternalToolsWindow _externalappsForm;
|
||||
private static PortScanWindow _portscanForm;
|
||||
private static ScreenshotManagerWindow _screenshotmanagerForm;
|
||||
private static UltraVNCWindow _ultravncscForm;
|
||||
private static ConnectionTreeWindow _treeForm;
|
||||
|
||||
@@ -22,7 +21,6 @@ namespace mRemoteNG.App
|
||||
|
||||
internal static ConfigWindow ConfigForm { get; set; } = new ConfigWindow();
|
||||
internal static ErrorAndInfoWindow ErrorsForm { get; set; } = new ErrorAndInfoWindow();
|
||||
internal static ScreenshotManagerWindow ScreenshotForm { get; set; } = new ScreenshotManagerWindow();
|
||||
private static UpdateWindow UpdateForm { get; set; } = new UpdateWindow();
|
||||
internal static SSHTransferWindow SshtransferForm { get; private set; } = new SSHTransferWindow();
|
||||
|
||||
@@ -66,10 +64,6 @@ namespace mRemoteNG.App
|
||||
_portscanForm = new PortScanWindow();
|
||||
_portscanForm.Show(dockPanel);
|
||||
break;
|
||||
case WindowType.ScreenshotManager:
|
||||
_screenshotmanagerForm = new ScreenshotManagerWindow();
|
||||
_screenshotmanagerForm.Show(dockPanel);
|
||||
break;
|
||||
case WindowType.UltraVNCSC:
|
||||
if (_ultravncscForm == null || _ultravncscForm.IsDisposed)
|
||||
_ultravncscForm = new UltraVNCWindow();
|
||||
|
||||
@@ -77,9 +77,6 @@ namespace mRemoteNG.Config.Settings
|
||||
|
||||
if (persistString == typeof(ErrorAndInfoWindow).ToString())
|
||||
return Windows.ErrorsForm;
|
||||
|
||||
if (persistString == typeof(ScreenshotManagerWindow).ToString())
|
||||
return Windows.ScreenshotForm;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -12,7 +12,6 @@ namespace mRemoteNG.UI.Menu
|
||||
private ToolStripMenuItem _mMenToolsExternalApps;
|
||||
private ToolStripMenuItem _mMenToolsPortScan;
|
||||
private ToolStripMenuItem _mMenToolsUvncsc;
|
||||
private ToolStripMenuItem _mMenViewScreenshotManager;
|
||||
|
||||
public Form MainForm { get; set; }
|
||||
public ICredentialRepositoryList CredentialProviderCatalog { get; set; }
|
||||
@@ -28,7 +27,6 @@ namespace mRemoteNG.UI.Menu
|
||||
_mMenToolsUvncsc = new ToolStripMenuItem();
|
||||
_mMenToolsExternalApps = new ToolStripMenuItem();
|
||||
_mMenToolsPortScan = new ToolStripMenuItem();
|
||||
_mMenViewScreenshotManager = new ToolStripMenuItem();
|
||||
//
|
||||
// mMenTools
|
||||
//
|
||||
@@ -37,8 +35,7 @@ namespace mRemoteNG.UI.Menu
|
||||
_mMenToolsSshTransfer,
|
||||
_mMenToolsUvncsc,
|
||||
_mMenToolsExternalApps,
|
||||
_mMenToolsPortScan,
|
||||
_mMenViewScreenshotManager
|
||||
_mMenToolsPortScan
|
||||
});
|
||||
Name = "mMenTools";
|
||||
Size = new System.Drawing.Size(48, 20);
|
||||
@@ -76,14 +73,6 @@ namespace mRemoteNG.UI.Menu
|
||||
_mMenToolsPortScan.Size = new System.Drawing.Size(184, 22);
|
||||
_mMenToolsPortScan.Text = Language.PortScan;
|
||||
_mMenToolsPortScan.Click += mMenToolsPortScan_Click;
|
||||
//
|
||||
// mMenViewScreenshotManager
|
||||
//
|
||||
_mMenViewScreenshotManager.Image = Properties.Resources.Screenshot;
|
||||
_mMenViewScreenshotManager.Name = "mMenViewScreenshotManager";
|
||||
_mMenViewScreenshotManager.Size = new System.Drawing.Size(228, 22);
|
||||
_mMenViewScreenshotManager.Text = Language.Screenshots;
|
||||
_mMenViewScreenshotManager.Click += mMenViewScreenshotManager_Click;
|
||||
}
|
||||
|
||||
public void ApplyLanguage()
|
||||
@@ -92,7 +81,6 @@ namespace mRemoteNG.UI.Menu
|
||||
_mMenToolsSshTransfer.Text = Language.SshFileTransfer;
|
||||
_mMenToolsExternalApps.Text = Language.ExternalTool;
|
||||
_mMenToolsPortScan.Text = Language.PortScan;
|
||||
_mMenViewScreenshotManager.Text = Language.Screenshots;
|
||||
}
|
||||
|
||||
#region Tools
|
||||
@@ -117,9 +105,9 @@ namespace mRemoteNG.UI.Menu
|
||||
Windows.Show(WindowType.PortScan);
|
||||
}
|
||||
|
||||
private void mMenViewScreenshotManager_Click(object sender, EventArgs e)
|
||||
private void mMenToolsOptions_Click(object sender, EventArgs e)
|
||||
{
|
||||
Windows.Show(WindowType.ScreenshotManager);
|
||||
Windows.Show(WindowType.Options);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
10
mRemoteNG/UI/Window/ConnectionWindow.Designer.cs
generated
10
mRemoteNG/UI/Window/ConnectionWindow.Designer.cs
generated
@@ -9,7 +9,6 @@ namespace mRemoteNG.UI.Window
|
||||
{
|
||||
internal ContextMenuStrip cmenTab;
|
||||
private ToolStripMenuItem cmenTabFullscreen;
|
||||
private ToolStripMenuItem cmenTabScreenshot;
|
||||
private ToolStripMenuItem cmenTabTransferFile;
|
||||
private ToolStripMenuItem cmenTabSendSpecialKeys;
|
||||
private ToolStripSeparator cmenTabSep1;
|
||||
@@ -53,7 +52,6 @@ namespace mRemoteNG.UI.Window
|
||||
this.cmenTabSendSpecialKeysCtrlAltDel = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.cmenTabSendSpecialKeysCtrlEsc = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.cmenTabSep2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.cmenTabScreenshot = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.cmenTabPuttySettings = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.cmenTabExternalApps = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.cmenTab.SuspendLayout();
|
||||
@@ -88,7 +86,6 @@ namespace mRemoteNG.UI.Window
|
||||
this.cmenTabTransferFile,
|
||||
this.cmenTabSendSpecialKeys,
|
||||
this.cmenTabSep2,
|
||||
this.cmenTabScreenshot,
|
||||
this.cmenTabPuttySettings,
|
||||
this.cmenTabExternalApps});
|
||||
this.cmenTab.Name = "cmenTab";
|
||||
@@ -212,13 +209,6 @@ namespace mRemoteNG.UI.Window
|
||||
this.cmenTabSep2.Name = "cmenTabSep2";
|
||||
this.cmenTabSep2.Size = new System.Drawing.Size(227, 6);
|
||||
//
|
||||
// cmenTabScreenshot
|
||||
//
|
||||
this.cmenTabScreenshot.Image = global::mRemoteNG.Properties.Resources.Screenshot_Add;
|
||||
this.cmenTabScreenshot.Name = "cmenTabScreenshot";
|
||||
this.cmenTabScreenshot.Size = new System.Drawing.Size(230, 22);
|
||||
this.cmenTabScreenshot.Text = "Screenshot";
|
||||
//
|
||||
// cmenTabPuttySettings
|
||||
//
|
||||
this.cmenTabPuttySettings.Image = global::mRemoteNG.Properties.Resources.PuttyConfig;
|
||||
|
||||
@@ -77,7 +77,6 @@ namespace mRemoteNG.UI.Window
|
||||
cmenTabFullscreen.Click += (sender, args) => ToggleFullscreen();
|
||||
cmenTabSmartSize.Click += (sender, args) => ToggleSmartSize();
|
||||
cmenTabViewOnly.Click += (sender, args) => ToggleViewOnly();
|
||||
cmenTabScreenshot.Click += (sender, args) => CreateScreenshot();
|
||||
cmenTabStartChat.Click += (sender, args) => StartChat();
|
||||
cmenTabTransferFile.Click += (sender, args) => TransferFile();
|
||||
cmenTabRefreshScreen.Click += (sender, args) => RefreshScreen();
|
||||
@@ -268,7 +267,6 @@ namespace mRemoteNG.UI.Window
|
||||
cmenTabFullscreen.Text = Language.Fullscreen;
|
||||
cmenTabSmartSize.Text = Language.SmartSize;
|
||||
cmenTabViewOnly.Text = Language.ViewOnly;
|
||||
cmenTabScreenshot.Text = Language.Screenshot;
|
||||
cmenTabStartChat.Text = Language.StartChat;
|
||||
cmenTabTransferFile.Text = Language.TransferFile;
|
||||
cmenTabRefreshScreen.Text = Language.RefreshScreen;
|
||||
@@ -781,15 +779,6 @@ namespace mRemoteNG.UI.Window
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateScreenshot()
|
||||
{
|
||||
cmenTab.Close();
|
||||
Application.DoEvents();
|
||||
//var selectedTab = (ConnectionTab)GetInterfaceControl()?.Parent;
|
||||
if (TabHelper.Instance.CurrentTab == null) return;
|
||||
Windows.ScreenshotForm.AddScreenshot(MiscTools.TakeScreenshot(TabHelper.Instance.CurrentTab));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Protocols
|
||||
|
||||
@@ -1,458 +0,0 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using mRemoteNG.App;
|
||||
using System.IO;
|
||||
using mRemoteNG.Resources.Language;
|
||||
using mRemoteNG.UI.Forms;
|
||||
using mRemoteNG.Themes;
|
||||
|
||||
namespace mRemoteNG.UI.Window
|
||||
{
|
||||
public class ScreenshotManagerWindow : BaseWindow
|
||||
{
|
||||
#region Form Init
|
||||
|
||||
internal MenuStrip msMain;
|
||||
private ToolStripMenuItem mMenFile;
|
||||
private ToolStripMenuItem mMenFileSaveAll;
|
||||
private ToolStripMenuItem mMenFileRemoveAll;
|
||||
internal ContextMenuStrip cMenScreenshot;
|
||||
private System.ComponentModel.IContainer components;
|
||||
private ToolStripMenuItem cMenScreenshotCopy;
|
||||
private ToolStripMenuItem cMenScreenshotSave;
|
||||
internal SaveFileDialog dlgSaveSingleImage;
|
||||
internal FolderBrowserDialog dlgSaveAllImages;
|
||||
|
||||
private FlowLayoutPanel flpScreenshots;
|
||||
private VisualStudioToolStripExtender vsToolStripExtender;
|
||||
private readonly ToolStripRenderer _toolStripProfessionalRenderer = new ToolStripProfessionalRenderer();
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
flpScreenshots = new FlowLayoutPanel();
|
||||
msMain = new MenuStrip();
|
||||
mMenFile = new ToolStripMenuItem();
|
||||
mMenFileSaveAll = new ToolStripMenuItem();
|
||||
mMenFileRemoveAll = new ToolStripMenuItem();
|
||||
cMenScreenshot = new ContextMenuStrip(components);
|
||||
cMenScreenshotCopy = new ToolStripMenuItem();
|
||||
cMenScreenshotSave = new ToolStripMenuItem();
|
||||
dlgSaveSingleImage = new SaveFileDialog();
|
||||
dlgSaveAllImages = new FolderBrowserDialog();
|
||||
msMain.SuspendLayout();
|
||||
cMenScreenshot.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// flpScreenshots
|
||||
//
|
||||
flpScreenshots.Anchor = AnchorStyles.Top | AnchorStyles.Bottom
|
||||
| AnchorStyles.Left
|
||||
| AnchorStyles.Right;
|
||||
flpScreenshots.AutoScroll = true;
|
||||
flpScreenshots.Location = new Point(0, 26);
|
||||
flpScreenshots.Name = "flpScreenshots";
|
||||
flpScreenshots.Size = new Size(542, 296);
|
||||
flpScreenshots.TabIndex = 0;
|
||||
//
|
||||
// msMain
|
||||
//
|
||||
msMain.Font = new Font("Segoe UI", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0);
|
||||
msMain.Items.AddRange(new ToolStripItem[]
|
||||
{
|
||||
mMenFile
|
||||
});
|
||||
msMain.Location = new Point(0, 0);
|
||||
msMain.Name = "msMain";
|
||||
msMain.RenderMode = ToolStripRenderMode.Professional;
|
||||
msMain.Size = new Size(542, 24);
|
||||
msMain.TabIndex = 1;
|
||||
msMain.Text = "MenuStrip1";
|
||||
//
|
||||
// mMenFile
|
||||
//
|
||||
mMenFile.DropDownItems.AddRange(new ToolStripItem[]
|
||||
{
|
||||
mMenFileSaveAll,
|
||||
mMenFileRemoveAll
|
||||
});
|
||||
mMenFile.Image = Properties.Resources.File;
|
||||
mMenFile.Name = "mMenFile";
|
||||
mMenFile.Size = new Size(53, 20);
|
||||
mMenFile.Text = "&File";
|
||||
mMenFile.DropDownOpening += mMenFile_DropDownOpening;
|
||||
//
|
||||
// mMenFileSaveAll
|
||||
//
|
||||
mMenFileSaveAll.Image = Properties.Resources.Screenshot_Save;
|
||||
mMenFileSaveAll.Name = "mMenFileSaveAll";
|
||||
mMenFileSaveAll.Size = new Size(130, 22);
|
||||
mMenFileSaveAll.Text = "Save All";
|
||||
mMenFileSaveAll.Click += mMenFileSaveAll_Click;
|
||||
//
|
||||
// mMenFileRemoveAll
|
||||
//
|
||||
mMenFileRemoveAll.Image = Properties.Resources.Screenshot_Delete;
|
||||
mMenFileRemoveAll.Name = "mMenFileRemoveAll";
|
||||
mMenFileRemoveAll.Size = new Size(130, 22);
|
||||
mMenFileRemoveAll.Text = "Remove All";
|
||||
mMenFileRemoveAll.Click += mMenFileRemoveAll_Click;
|
||||
//
|
||||
// cMenScreenshot
|
||||
//
|
||||
cMenScreenshot.Items.AddRange(new ToolStripItem[]
|
||||
{
|
||||
cMenScreenshotCopy,
|
||||
cMenScreenshotSave
|
||||
});
|
||||
cMenScreenshot.Name = "cMenScreenshot";
|
||||
cMenScreenshot.Size = new Size(103, 48);
|
||||
//
|
||||
// cMenScreenshotCopy
|
||||
//
|
||||
cMenScreenshotCopy.Image = Properties.Resources.Screenshot_Copy;
|
||||
cMenScreenshotCopy.Name = "cMenScreenshotCopy";
|
||||
cMenScreenshotCopy.Size = new Size(102, 22);
|
||||
cMenScreenshotCopy.Text = "Copy";
|
||||
cMenScreenshotCopy.Click += cMenScreenshotCopy_Click;
|
||||
//
|
||||
// cMenScreenshotSave
|
||||
//
|
||||
cMenScreenshotSave.Image = Properties.Resources.Screenshot_Save;
|
||||
cMenScreenshotSave.Name = "cMenScreenshotSave";
|
||||
cMenScreenshotSave.Size = new Size(102, 22);
|
||||
cMenScreenshotSave.Text = "Save";
|
||||
cMenScreenshotSave.Click += cMenScreenshotSave_Click;
|
||||
//
|
||||
// dlgSaveSingleImage
|
||||
//
|
||||
dlgSaveSingleImage.Filter =
|
||||
"Graphics Interchange Format File (.gif)|*.gif|Joint Photographic Experts Group Fi" +
|
||||
"le (.jpeg)|*.jpeg|Joint Photographic Experts Group File (.jpg)|*.jpg|Portable Ne" +
|
||||
"twork Graphics File (.png)|*.png";
|
||||
dlgSaveSingleImage.FilterIndex = 4;
|
||||
//
|
||||
// ScreenshotManagerWindow
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(96F, 96F);
|
||||
AutoScaleMode = AutoScaleMode.Dpi;
|
||||
ClientSize = new Size(542, 323);
|
||||
Controls.Add(flpScreenshots);
|
||||
Controls.Add(msMain);
|
||||
Font = new Font("Segoe UI", 8.25F, FontStyle.Regular, GraphicsUnit.Point, 0);
|
||||
HideOnClose = true;
|
||||
Icon = Properties.Resources.Screenshot_Icon;
|
||||
MainMenuStrip = msMain;
|
||||
Name = "ScreenshotManagerWindow";
|
||||
TabText = "Screenshots";
|
||||
Text = "Screenshots";
|
||||
Load += ScreenshotManager_Load;
|
||||
msMain.ResumeLayout(false);
|
||||
msMain.PerformLayout();
|
||||
cMenScreenshot.ResumeLayout(false);
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Form Stuff
|
||||
|
||||
private void ScreenshotManager_Load(object sender, EventArgs e)
|
||||
{
|
||||
ApplyTheme();
|
||||
ThemeManager.getInstance().ThemeChanged += ApplyTheme;
|
||||
ApplyLanguage();
|
||||
}
|
||||
|
||||
private new void ApplyTheme()
|
||||
{
|
||||
if (!ThemeManager.getInstance().ThemingActive) return;
|
||||
base.ApplyTheme();
|
||||
vsToolStripExtender = new VisualStudioToolStripExtender(components)
|
||||
{
|
||||
DefaultRenderer = _toolStripProfessionalRenderer
|
||||
};
|
||||
vsToolStripExtender.SetStyle(cMenScreenshot, ThemeManager.getInstance().ActiveTheme.Version,
|
||||
ThemeManager.getInstance().ActiveTheme.Theme);
|
||||
}
|
||||
|
||||
private void ApplyLanguage()
|
||||
{
|
||||
mMenFile.Text = Language._File;
|
||||
mMenFileSaveAll.Text = Language.SaveAll;
|
||||
mMenFileRemoveAll.Text = Language.RemoveAll;
|
||||
cMenScreenshotCopy.Text = Language.Copy;
|
||||
cMenScreenshotSave.Text = Language.Save;
|
||||
dlgSaveSingleImage.Filter = Language.SaveImageFilter;
|
||||
TabText = Language.Screenshots;
|
||||
Text = Language.Screenshots;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public ScreenshotManagerWindow() : this(new DockContent())
|
||||
{
|
||||
}
|
||||
|
||||
internal ScreenshotManagerWindow(DockContent panel)
|
||||
{
|
||||
WindowType = WindowType.ScreenshotManager;
|
||||
DockPnl = panel;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void AddScreenshot(Image Screenshot)
|
||||
{
|
||||
try
|
||||
{
|
||||
var nPB = new PictureBox();
|
||||
nPB.MouseDown += pbScreenshot_MouseDown;
|
||||
|
||||
nPB.Parent = flpScreenshots;
|
||||
nPB.SizeMode = PictureBoxSizeMode.StretchImage;
|
||||
nPB.BorderStyle = BorderStyle.FixedSingle;
|
||||
nPB.ContextMenuStrip = cMenScreenshot;
|
||||
nPB.Image = Screenshot;
|
||||
nPB.Size = new Size(100, 100); //New Size((Screenshot.Width / 100) * 20, (Screenshot.Height / 100) * 20)
|
||||
nPB.Show();
|
||||
|
||||
var nBtn = new Button();
|
||||
nBtn.Click += btnCloseScreenshot_Click;
|
||||
|
||||
nBtn.Parent = nPB;
|
||||
nBtn.FlatStyle = FlatStyle.Flat;
|
||||
nBtn.Text = "×";
|
||||
nBtn.Size = new Size(22, 22);
|
||||
nBtn.Location = new Point(nPB.Width - nBtn.Width, -1);
|
||||
nBtn.Show();
|
||||
|
||||
Show(FrmMain.Default.pnlDock);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg,
|
||||
"AddScreenshot (UI.Window.ScreenshotManager) failed" +
|
||||
Environment.NewLine + ex.Message, true);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private void pbScreenshot_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
cMenScreenshot.Tag = sender;
|
||||
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
OpenScreenshot((PictureBox)sender);
|
||||
}
|
||||
}
|
||||
|
||||
private void pbScreenshotOpen_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
CloseOpenedScreenshot((Form)((PictureBox)sender).Parent);
|
||||
}
|
||||
}
|
||||
|
||||
private void CloseOpenedScreenshot(Form form)
|
||||
{
|
||||
form.Close();
|
||||
}
|
||||
|
||||
private void OpenScreenshot(PictureBox sender)
|
||||
{
|
||||
try
|
||||
{
|
||||
var mImage = sender.Image;
|
||||
|
||||
var nForm = new Form
|
||||
{
|
||||
StartPosition = FormStartPosition.CenterParent,
|
||||
ShowInTaskbar = false,
|
||||
ShowIcon = false,
|
||||
MaximizeBox = false,
|
||||
MinimizeBox = false,
|
||||
Width = mImage.Width + 2,
|
||||
Height = mImage.Height + 2,
|
||||
FormBorderStyle = FormBorderStyle.None
|
||||
};
|
||||
|
||||
var nPB = new PictureBox
|
||||
{
|
||||
Parent = nForm,
|
||||
BorderStyle = BorderStyle.FixedSingle,
|
||||
Location = new Point(0, 0),
|
||||
SizeMode = PictureBoxSizeMode.AutoSize,
|
||||
Anchor = AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right | AnchorStyles.Top,
|
||||
Image = mImage,
|
||||
ContextMenuStrip = cMenScreenshot
|
||||
};
|
||||
nPB.Show();
|
||||
|
||||
nPB.MouseDown += pbScreenshotOpen_MouseDown;
|
||||
|
||||
nForm.ShowDialog();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg,
|
||||
"OpenScreenshot (UI.Window.ScreenshotManager) failed" +
|
||||
Environment.NewLine + ex.Message, true);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnCloseScreenshot_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
((PictureBox)((Button)sender).Parent).Dispose();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg,
|
||||
"btnCloseScreenshot_Click (UI.Window.ScreenshotManager) failed" +
|
||||
Environment.NewLine + ex.Message,
|
||||
true);
|
||||
}
|
||||
}
|
||||
|
||||
private void mMenFileRemoveAll_Click(object sender, EventArgs e)
|
||||
{
|
||||
RemoveAllImages();
|
||||
}
|
||||
|
||||
private void RemoveAllImages()
|
||||
{
|
||||
flpScreenshots.Controls.Clear();
|
||||
}
|
||||
|
||||
private void mMenFileSaveAll_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveAllImages();
|
||||
}
|
||||
|
||||
private void SaveAllImages()
|
||||
{
|
||||
try
|
||||
{
|
||||
var pCount = 1;
|
||||
|
||||
if (dlgSaveAllImages.ShowDialog() != DialogResult.OK) return;
|
||||
foreach (var fPath in Directory.GetFiles(dlgSaveAllImages.SelectedPath, "Screenshot_*",
|
||||
SearchOption.TopDirectoryOnly))
|
||||
{
|
||||
var f = new FileInfo(fPath);
|
||||
|
||||
var fCount = f.Name;
|
||||
fCount = fCount.Replace(f.Extension, "");
|
||||
fCount = fCount.Replace("Screenshot_", "");
|
||||
|
||||
pCount = (int)(double.Parse(fCount) + 1);
|
||||
}
|
||||
|
||||
foreach (Control ctrl in flpScreenshots.Controls)
|
||||
{
|
||||
if (!(ctrl is PictureBox)) continue;
|
||||
(ctrl as PictureBox).Image.Save(
|
||||
dlgSaveAllImages.SelectedPath + "\\Screenshot_" +
|
||||
Tools.MiscTools.LeadingZero(Convert.ToString(pCount)) + ".png",
|
||||
System.Drawing.Imaging.ImageFormat.Png);
|
||||
pCount++;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg,
|
||||
"SaveAllImages (UI.Window.ScreenshotManager) failed" +
|
||||
Environment.NewLine + ex.Message, true);
|
||||
}
|
||||
}
|
||||
|
||||
private void cMenScreenshotCopy_Click(object sender, EventArgs e)
|
||||
{
|
||||
CopyImageToClipboard();
|
||||
}
|
||||
|
||||
private void CopyImageToClipboard()
|
||||
{
|
||||
try
|
||||
{
|
||||
Clipboard.SetImage(((PictureBox)cMenScreenshot.Tag).Image);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg,
|
||||
"CopyImageToClipboard (UI.Window.ScreenshotManager) failed" +
|
||||
Environment.NewLine + ex.Message,
|
||||
true);
|
||||
}
|
||||
}
|
||||
|
||||
private void cMenScreenshotSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveSingleImage();
|
||||
}
|
||||
|
||||
private void SaveSingleImage()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (dlgSaveSingleImage.ShowDialog() != DialogResult.OK) return;
|
||||
// ReSharper disable once SwitchStatementMissingSomeCases
|
||||
switch (dlgSaveSingleImage.FileName
|
||||
.Substring(dlgSaveSingleImage
|
||||
.FileName.LastIndexOf(".", StringComparison.Ordinal) + 1)
|
||||
.ToLower())
|
||||
{
|
||||
case "gif":
|
||||
((PictureBox)cMenScreenshot.Tag).Image.Save(dlgSaveSingleImage.FileName,
|
||||
System.Drawing.Imaging.ImageFormat.Gif);
|
||||
break;
|
||||
case "jpeg":
|
||||
((PictureBox)cMenScreenshot.Tag).Image.Save(dlgSaveSingleImage.FileName,
|
||||
System.Drawing.Imaging.ImageFormat.Jpeg);
|
||||
break;
|
||||
case "jpg":
|
||||
((PictureBox)cMenScreenshot.Tag).Image.Save(dlgSaveSingleImage.FileName,
|
||||
System.Drawing.Imaging.ImageFormat.Jpeg);
|
||||
break;
|
||||
case "png":
|
||||
((PictureBox)cMenScreenshot.Tag).Image.Save(dlgSaveSingleImage.FileName,
|
||||
System.Drawing.Imaging.ImageFormat.Png);
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg,
|
||||
"SaveSingleImage (UI.Window.ScreenshotManager) failed" +
|
||||
Environment.NewLine + ex.Message, true);
|
||||
}
|
||||
}
|
||||
|
||||
private void mMenFile_DropDownOpening(object sender, EventArgs e)
|
||||
{
|
||||
if (flpScreenshots.Controls.Count < 1)
|
||||
{
|
||||
mMenFileSaveAll.Enabled = false;
|
||||
mMenFileRemoveAll.Enabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
mMenFileSaveAll.Enabled = true;
|
||||
mMenFileRemoveAll.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="msMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="cMenScreenshot.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>19, 45</value>
|
||||
</metadata>
|
||||
<metadata name="dlgSaveSingleImage.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>146, 16</value>
|
||||
</metadata>
|
||||
<metadata name="dlgSaveAllImages.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>146, 45</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -6,7 +6,6 @@
|
||||
Connection = 1,
|
||||
Config = 2,
|
||||
ErrorsAndInfos = 4,
|
||||
ScreenshotManager = 5,
|
||||
Options = 6,
|
||||
Update = 9,
|
||||
SSHTransfer = 10,
|
||||
|
||||
@@ -745,9 +745,6 @@
|
||||
<Compile Include="UI\Forms\FrmExport.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\Window\ScreenshotManagerWindow.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\Window\SSHTransferWindow.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -1025,10 +1022,6 @@
|
||||
<DependentUpon>FrmExport.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\Window\ScreenshotManagerWindow.resx">
|
||||
<DependentUpon>ScreenshotManagerWindow.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\Window\SSHTransferWindow.resx">
|
||||
<DependentUpon>SSHTransferWindow.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
|
||||
Reference in New Issue
Block a user