diff --git a/mRemoteV1/App/Import.cs b/mRemoteV1/App/Import.cs index 119b9826..c700e3e0 100644 --- a/mRemoteV1/App/Import.cs +++ b/mRemoteV1/App/Import.cs @@ -6,6 +6,7 @@ using mRemoteNG.Config.Import; using mRemoteNG.Connection.Protocol; using mRemoteNG.Container; using mRemoteNG.Tools; +using mRemoteNG.UI.Forms; namespace mRemoteNG.App { diff --git a/mRemoteV1/Config/Import/MRemoteNGCsvImporter.cs b/mRemoteV1/Config/Import/MRemoteNGCsvImporter.cs index 9695d9a4..a9831b78 100644 --- a/mRemoteV1/Config/Import/MRemoteNGCsvImporter.cs +++ b/mRemoteV1/Config/Import/MRemoteNGCsvImporter.cs @@ -4,6 +4,8 @@ using mRemoteNG.Config.Serializers.Csv; using mRemoteNG.Container; using mRemoteNG.Messages; using System.IO; +using System.Linq; +using mRemoteNG.UI.Forms; namespace mRemoteNG.Config.Import { @@ -25,6 +27,12 @@ namespace mRemoteNG.Config.Import var xmlConnectionsDeserializer = new CsvConnectionsDeserializerMremotengFormat(); var serializationResult = xmlConnectionsDeserializer.Deserialize(xmlString); + var credentialImportForm = new CredentialImportForm + { + CredentialRecords = serializationResult.ConnectionToCredentialMap.DistinctCredentialRecords.ToList() + }; + credentialImportForm.ShowDialog(); + var rootImportContainer = new ContainerInfo { Name = Path.GetFileNameWithoutExtension(filePath) }; rootImportContainer.AddChildRange(serializationResult.ConnectionRecords); destinationContainer.AddChild(rootImportContainer); diff --git a/mRemoteV1/UI/Forms/CredentialImportForm.Designer.cs b/mRemoteV1/UI/Forms/CredentialImportForm.Designer.cs new file mode 100644 index 00000000..c2065ae6 --- /dev/null +++ b/mRemoteV1/UI/Forms/CredentialImportForm.Designer.cs @@ -0,0 +1,126 @@ +namespace mRemoteNG.UI.Forms +{ + partial class CredentialImportForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.olvCredentials = new BrightIdeasSoftware.ObjectListView(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.colUsername = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); + this.colDomain = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); + this.colRepo = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); + this.buttonAccept = new mRemoteNG.UI.Controls.Base.NGButton(); + ((System.ComponentModel.ISupportInitialize)(this.olvCredentials)).BeginInit(); + this.tableLayoutPanel1.SuspendLayout(); + this.SuspendLayout(); + // + // olvCredentials + // + this.olvCredentials.AllColumns.Add(this.colUsername); + this.olvCredentials.AllColumns.Add(this.colDomain); + this.olvCredentials.AllColumns.Add(this.colRepo); + this.olvCredentials.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.colUsername, + this.colDomain, + this.colRepo}); + this.tableLayoutPanel1.SetColumnSpan(this.olvCredentials, 2); + this.olvCredentials.Cursor = System.Windows.Forms.Cursors.Default; + this.olvCredentials.Dock = System.Windows.Forms.DockStyle.Fill; + this.olvCredentials.FullRowSelect = true; + this.olvCredentials.Location = new System.Drawing.Point(3, 3); + this.olvCredentials.Name = "olvCredentials"; + this.olvCredentials.ShowGroups = false; + this.olvCredentials.Size = new System.Drawing.Size(794, 399); + this.olvCredentials.TabIndex = 0; + this.olvCredentials.UseCompatibleStateImageBehavior = false; + this.olvCredentials.View = System.Windows.Forms.View.Details; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 80F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.Controls.Add(this.olvCredentials, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.buttonAccept, 1, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 90F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(800, 450); + this.tableLayoutPanel1.TabIndex = 1; + // + // colUsername + // + this.colUsername.Text = "Username"; + // + // colDomain + // + this.colDomain.Text = "Domain"; + // + // colRepo + // + this.colRepo.FillsFreeSpace = true; + this.colRepo.Text = "Repository"; + // + // buttonAccept + // + this.buttonAccept._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.HOVER; + this.buttonAccept.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonAccept.Location = new System.Drawing.Point(722, 424); + this.buttonAccept.Name = "buttonAccept"; + this.buttonAccept.Size = new System.Drawing.Size(75, 23); + this.buttonAccept.TabIndex = 1; + this.buttonAccept.Text = "Accept"; + this.buttonAccept.UseVisualStyleBackColor = true; + this.buttonAccept.Click += new System.EventHandler(this.buttonAccept_Click); + // + // CredentialImportForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.tableLayoutPanel1); + this.Name = "CredentialImportForm"; + this.Text = "CredentialImportForm"; + ((System.ComponentModel.ISupportInitialize)(this.olvCredentials)).EndInit(); + this.tableLayoutPanel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private BrightIdeasSoftware.ObjectListView olvCredentials; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private BrightIdeasSoftware.OLVColumn colUsername; + private BrightIdeasSoftware.OLVColumn colDomain; + private BrightIdeasSoftware.OLVColumn colRepo; + private Controls.Base.NGButton buttonAccept; + } +} \ No newline at end of file diff --git a/mRemoteV1/UI/Forms/CredentialImportForm.cs b/mRemoteV1/UI/Forms/CredentialImportForm.cs new file mode 100644 index 00000000..f4ed3f81 --- /dev/null +++ b/mRemoteV1/UI/Forms/CredentialImportForm.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using System.Windows.Forms; +using mRemoteNG.Credential; + +namespace mRemoteNG.UI.Forms +{ + public partial class CredentialImportForm : Form + { + private List _credentialRecords; + + public List CredentialRecords + { + get => _credentialRecords; + set + { + _credentialRecords = value; + olvCredentials.SetObjects(_credentialRecords); + } + } + + public CredentialImportForm() + { + InitializeComponent(); + + colUsername.AspectName = nameof(ICredentialRecord.Username); + colDomain.AspectName = nameof(ICredentialRecord.Domain); + } + + private void buttonAccept_Click(object sender, System.EventArgs e) + { + + } + } +} diff --git a/mRemoteV1/UI/Forms/CredentialImportForm.resx b/mRemoteV1/UI/Forms/CredentialImportForm.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/mRemoteV1/UI/Forms/CredentialImportForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index 026c1632..3ec2861b 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -505,6 +505,12 @@ CompositeCredentialRepoUnlockerForm.cs + + Form + + + CredentialImportForm.cs + Form @@ -911,6 +917,9 @@ CompositeCredentialRepoUnlockerForm.cs + + CredentialImportForm.cs + CredentialManagerForm.cs