Provide context menu on tree view and list view for EXE sections to improve usability
This commit is contained in:
parent
e71a683f96
commit
c0f0297c71
@ -31,27 +31,28 @@
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.tv = new System.Windows.Forms.TreeView();
|
||||
this.mnuContextSections = new AwesomeControls.CommandBars.CBContextMenu(this.components);
|
||||
this.mnuContextSectionsDelete = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuContextSectionsSep1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuContextSectionsImport = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuContextSectionsExport = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.pnlSections = new System.Windows.Forms.Panel();
|
||||
this.lvSections = new System.Windows.Forms.ListView();
|
||||
this.chSectionName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chSectionOffset = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.chSectionLength = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.mnuContextListViewSections = new AwesomeControls.CommandBars.CBContextMenu(this.components);
|
||||
this.mnuContextListViewSectionsDelete = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuContextListViewSectionsSep1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuContextListViewSectionsImport = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuContextListViewSectionsExport = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.pnlSection = new System.Windows.Forms.Panel();
|
||||
this.lblSectionName = new System.Windows.Forms.Label();
|
||||
this.txtSectionName = new System.Windows.Forms.TextBox();
|
||||
this.fraSectionCharacteristics = new System.Windows.Forms.GroupBox();
|
||||
this.lvSectionCharacteristics = new System.Windows.Forms.ListView();
|
||||
this.chTitle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.txtSectionName = new System.Windows.Forms.TextBox();
|
||||
this.lblSectionName = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.mnuContextSections.SuspendLayout();
|
||||
this.pnlSections.SuspendLayout();
|
||||
this.mnuContextListViewSections.SuspendLayout();
|
||||
this.pnlSection.SuspendLayout();
|
||||
this.fraSectionCharacteristics.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
@ -69,21 +70,61 @@
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.pnlSection);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.pnlSections);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(502, 247);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.pnlSection);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(590, 332);
|
||||
this.splitContainer1.SplitterDistance = 167;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// tv
|
||||
//
|
||||
this.tv.ContextMenuStrip = this.mnuContextSections;
|
||||
this.tv.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tv.HideSelection = false;
|
||||
this.tv.Location = new System.Drawing.Point(0, 0);
|
||||
this.tv.Name = "tv";
|
||||
this.tv.Size = new System.Drawing.Size(167, 247);
|
||||
this.tv.Size = new System.Drawing.Size(167, 332);
|
||||
this.tv.TabIndex = 0;
|
||||
this.tv.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tv_AfterSelect);
|
||||
this.tv.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tv_MouseDown);
|
||||
//
|
||||
// mnuContextSections
|
||||
//
|
||||
this.mnuContextSections.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuContextSectionsDelete,
|
||||
this.mnuContextSectionsSep1,
|
||||
this.mnuContextSectionsImport,
|
||||
this.mnuContextSectionsExport});
|
||||
this.mnuContextSections.Name = "mnuContextListViewSections";
|
||||
this.mnuContextSections.Size = new System.Drawing.Size(119, 76);
|
||||
this.mnuContextSections.Opening += new System.ComponentModel.CancelEventHandler(this.mnuContextListViewSections_Opening);
|
||||
//
|
||||
// mnuContextSectionsDelete
|
||||
//
|
||||
this.mnuContextSectionsDelete.Name = "mnuContextSectionsDelete";
|
||||
this.mnuContextSectionsDelete.Size = new System.Drawing.Size(118, 22);
|
||||
this.mnuContextSectionsDelete.Text = "&Delete";
|
||||
this.mnuContextSectionsDelete.Click += new System.EventHandler(this.mnuContextListViewSectionsDelete_Click);
|
||||
//
|
||||
// mnuContextSectionsSep1
|
||||
//
|
||||
this.mnuContextSectionsSep1.Name = "mnuContextSectionsSep1";
|
||||
this.mnuContextSectionsSep1.Size = new System.Drawing.Size(115, 6);
|
||||
//
|
||||
// mnuContextSectionsImport
|
||||
//
|
||||
this.mnuContextSectionsImport.Name = "mnuContextSectionsImport";
|
||||
this.mnuContextSectionsImport.Size = new System.Drawing.Size(118, 22);
|
||||
this.mnuContextSectionsImport.Text = "&Import...";
|
||||
this.mnuContextSectionsImport.Click += new System.EventHandler(this.mnuContextListViewSectionsImport_Click);
|
||||
//
|
||||
// mnuContextSectionsExport
|
||||
//
|
||||
this.mnuContextSectionsExport.Enabled = false;
|
||||
this.mnuContextSectionsExport.Name = "mnuContextSectionsExport";
|
||||
this.mnuContextSectionsExport.Size = new System.Drawing.Size(118, 22);
|
||||
this.mnuContextSectionsExport.Text = "&Export...";
|
||||
this.mnuContextSectionsExport.Click += new System.EventHandler(this.mnuContextListViewSectionsExport_Click);
|
||||
//
|
||||
// pnlSections
|
||||
//
|
||||
@ -91,7 +132,7 @@
|
||||
this.pnlSections.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlSections.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlSections.Name = "pnlSections";
|
||||
this.pnlSections.Size = new System.Drawing.Size(331, 247);
|
||||
this.pnlSections.Size = new System.Drawing.Size(419, 332);
|
||||
this.pnlSections.TabIndex = 0;
|
||||
//
|
||||
// lvSections
|
||||
@ -100,14 +141,14 @@
|
||||
this.chSectionName,
|
||||
this.chSectionOffset,
|
||||
this.chSectionLength});
|
||||
this.lvSections.ContextMenuStrip = this.mnuContextListViewSections;
|
||||
this.lvSections.ContextMenuStrip = this.mnuContextSections;
|
||||
this.lvSections.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lvSections.FullRowSelect = true;
|
||||
this.lvSections.GridLines = true;
|
||||
this.lvSections.HideSelection = false;
|
||||
this.lvSections.Location = new System.Drawing.Point(0, 0);
|
||||
this.lvSections.Name = "lvSections";
|
||||
this.lvSections.Size = new System.Drawing.Size(331, 247);
|
||||
this.lvSections.Size = new System.Drawing.Size(419, 332);
|
||||
this.lvSections.TabIndex = 0;
|
||||
this.lvSections.UseCompatibleStateImageBehavior = false;
|
||||
this.lvSections.View = System.Windows.Forms.View.Details;
|
||||
@ -125,44 +166,6 @@
|
||||
//
|
||||
this.chSectionLength.Text = "Length";
|
||||
//
|
||||
// mnuContextListViewSections
|
||||
//
|
||||
this.mnuContextListViewSections.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuContextListViewSectionsDelete,
|
||||
this.mnuContextListViewSectionsSep1,
|
||||
this.mnuContextListViewSectionsImport,
|
||||
this.mnuContextListViewSectionsExport});
|
||||
this.mnuContextListViewSections.Name = "mnuContextListViewSections";
|
||||
this.mnuContextListViewSections.Size = new System.Drawing.Size(119, 76);
|
||||
this.mnuContextListViewSections.Opening += new System.ComponentModel.CancelEventHandler(this.mnuContextListViewSections_Opening);
|
||||
//
|
||||
// mnuContextListViewSectionsDelete
|
||||
//
|
||||
this.mnuContextListViewSectionsDelete.Name = "mnuContextListViewSectionsDelete";
|
||||
this.mnuContextListViewSectionsDelete.Size = new System.Drawing.Size(118, 22);
|
||||
this.mnuContextListViewSectionsDelete.Text = "&Delete";
|
||||
this.mnuContextListViewSectionsDelete.Click += new System.EventHandler(this.mnuContextListViewSectionsDelete_Click);
|
||||
//
|
||||
// mnuContextListViewSectionsSep1
|
||||
//
|
||||
this.mnuContextListViewSectionsSep1.Name = "mnuContextListViewSectionsSep1";
|
||||
this.mnuContextListViewSectionsSep1.Size = new System.Drawing.Size(115, 6);
|
||||
//
|
||||
// mnuContextListViewSectionsImport
|
||||
//
|
||||
this.mnuContextListViewSectionsImport.Name = "mnuContextListViewSectionsImport";
|
||||
this.mnuContextListViewSectionsImport.Size = new System.Drawing.Size(118, 22);
|
||||
this.mnuContextListViewSectionsImport.Text = "&Import...";
|
||||
this.mnuContextListViewSectionsImport.Click += new System.EventHandler(this.mnuContextListViewSectionsImport_Click);
|
||||
//
|
||||
// mnuContextListViewSectionsExport
|
||||
//
|
||||
this.mnuContextListViewSectionsExport.Enabled = false;
|
||||
this.mnuContextListViewSectionsExport.Name = "mnuContextListViewSectionsExport";
|
||||
this.mnuContextListViewSectionsExport.Size = new System.Drawing.Size(118, 22);
|
||||
this.mnuContextListViewSectionsExport.Text = "&Export...";
|
||||
this.mnuContextListViewSectionsExport.Click += new System.EventHandler(this.mnuContextListViewSectionsExport_Click);
|
||||
//
|
||||
// pnlSection
|
||||
//
|
||||
this.pnlSection.Controls.Add(this.fraSectionCharacteristics);
|
||||
@ -171,27 +174,9 @@
|
||||
this.pnlSection.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlSection.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlSection.Name = "pnlSection";
|
||||
this.pnlSection.Size = new System.Drawing.Size(331, 247);
|
||||
this.pnlSection.Size = new System.Drawing.Size(419, 332);
|
||||
this.pnlSection.TabIndex = 1;
|
||||
//
|
||||
// lblSectionName
|
||||
//
|
||||
this.lblSectionName.AutoSize = true;
|
||||
this.lblSectionName.Location = new System.Drawing.Point(3, 6);
|
||||
this.lblSectionName.Name = "lblSectionName";
|
||||
this.lblSectionName.Size = new System.Drawing.Size(75, 13);
|
||||
this.lblSectionName.TabIndex = 0;
|
||||
this.lblSectionName.Text = "Section &name:";
|
||||
//
|
||||
// txtSectionName
|
||||
//
|
||||
this.txtSectionName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtSectionName.Location = new System.Drawing.Point(84, 3);
|
||||
this.txtSectionName.Name = "txtSectionName";
|
||||
this.txtSectionName.Size = new System.Drawing.Size(244, 20);
|
||||
this.txtSectionName.TabIndex = 1;
|
||||
//
|
||||
// fraSectionCharacteristics
|
||||
//
|
||||
this.fraSectionCharacteristics.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
@ -200,7 +185,7 @@
|
||||
this.fraSectionCharacteristics.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||
this.fraSectionCharacteristics.Location = new System.Drawing.Point(3, 29);
|
||||
this.fraSectionCharacteristics.Name = "fraSectionCharacteristics";
|
||||
this.fraSectionCharacteristics.Size = new System.Drawing.Size(325, 161);
|
||||
this.fraSectionCharacteristics.Size = new System.Drawing.Size(413, 161);
|
||||
this.fraSectionCharacteristics.TabIndex = 2;
|
||||
this.fraSectionCharacteristics.TabStop = false;
|
||||
this.fraSectionCharacteristics.Text = "Characteristics";
|
||||
@ -218,7 +203,7 @@
|
||||
this.lvSectionCharacteristics.HideSelection = false;
|
||||
this.lvSectionCharacteristics.Location = new System.Drawing.Point(6, 19);
|
||||
this.lvSectionCharacteristics.Name = "lvSectionCharacteristics";
|
||||
this.lvSectionCharacteristics.Size = new System.Drawing.Size(313, 136);
|
||||
this.lvSectionCharacteristics.Size = new System.Drawing.Size(401, 136);
|
||||
this.lvSectionCharacteristics.TabIndex = 0;
|
||||
this.lvSectionCharacteristics.UseCompatibleStateImageBehavior = false;
|
||||
this.lvSectionCharacteristics.View = System.Windows.Forms.View.Details;
|
||||
@ -228,18 +213,37 @@
|
||||
this.chTitle.Text = "Characteristic";
|
||||
this.chTitle.Width = 300;
|
||||
//
|
||||
// txtSectionName
|
||||
//
|
||||
this.txtSectionName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtSectionName.Location = new System.Drawing.Point(84, 3);
|
||||
this.txtSectionName.Name = "txtSectionName";
|
||||
this.txtSectionName.Size = new System.Drawing.Size(332, 20);
|
||||
this.txtSectionName.TabIndex = 1;
|
||||
//
|
||||
// lblSectionName
|
||||
//
|
||||
this.lblSectionName.AutoSize = true;
|
||||
this.lblSectionName.Location = new System.Drawing.Point(3, 6);
|
||||
this.lblSectionName.Name = "lblSectionName";
|
||||
this.lblSectionName.Size = new System.Drawing.Size(75, 13);
|
||||
this.lblSectionName.TabIndex = 0;
|
||||
this.lblSectionName.Text = "Section &name:";
|
||||
//
|
||||
// ExecutableEditor
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Name = "ExecutableEditor";
|
||||
this.Size = new System.Drawing.Size(502, 247);
|
||||
this.Size = new System.Drawing.Size(590, 332);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.mnuContextSections.ResumeLayout(false);
|
||||
this.pnlSections.ResumeLayout(false);
|
||||
this.mnuContextListViewSections.ResumeLayout(false);
|
||||
this.pnlSection.ResumeLayout(false);
|
||||
this.pnlSection.PerformLayout();
|
||||
this.fraSectionCharacteristics.ResumeLayout(false);
|
||||
@ -256,11 +260,11 @@
|
||||
private System.Windows.Forms.ColumnHeader chSectionName;
|
||||
private System.Windows.Forms.ColumnHeader chSectionOffset;
|
||||
private System.Windows.Forms.ColumnHeader chSectionLength;
|
||||
private AwesomeControls.CommandBars.CBContextMenu mnuContextListViewSections;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuContextListViewSectionsExport;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuContextListViewSectionsImport;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuContextListViewSectionsDelete;
|
||||
private System.Windows.Forms.ToolStripSeparator mnuContextListViewSectionsSep1;
|
||||
private AwesomeControls.CommandBars.CBContextMenu mnuContextSections;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuContextSectionsExport;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuContextSectionsImport;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuContextSectionsDelete;
|
||||
private System.Windows.Forms.ToolStripSeparator mnuContextSectionsSep1;
|
||||
private System.Windows.Forms.Panel pnlSection;
|
||||
private System.Windows.Forms.TextBox txtSectionName;
|
||||
private System.Windows.Forms.Label lblSectionName;
|
||||
|
||||
@ -120,23 +120,50 @@ namespace UniversalEditor.Editors.Executable
|
||||
|
||||
private void mnuContextListViewSections_Opening(object sender, CancelEventArgs e)
|
||||
{
|
||||
mnuContextListViewSectionsDelete.Enabled = (lvSections.SelectedItems.Count > 0);
|
||||
mnuContextListViewSectionsExport.Enabled = (lvSections.SelectedItems.Count > 0);
|
||||
if (lvSections.Focused)
|
||||
{
|
||||
mnuContextSectionsDelete.Enabled = (lvSections.SelectedItems.Count > 0);
|
||||
mnuContextSectionsExport.Enabled = (lvSections.SelectedItems.Count > 0);
|
||||
}
|
||||
else if (tv.Focused)
|
||||
{
|
||||
mnuContextSectionsDelete.Enabled = (tv.SelectedNode != null && tv.SelectedNode.Tag is ExecutableSection);
|
||||
mnuContextSectionsExport.Enabled = (tv.SelectedNode != null && tv.SelectedNode.Tag is ExecutableSection);
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuContextListViewSectionsExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (ListViewItem lvi in lvSections.SelectedItems)
|
||||
if (lvSections.Focused)
|
||||
{
|
||||
ExecutableSection section = (lvi.Tag as ExecutableSection);
|
||||
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.FileName = section.Name;
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
foreach (ListViewItem lvi in lvSections.SelectedItems)
|
||||
{
|
||||
section.Save(sfd.FileName);
|
||||
ExecutableSection section = (lvi.Tag as ExecutableSection);
|
||||
UISaveSection(section);
|
||||
}
|
||||
}
|
||||
else if (tv.Focused)
|
||||
{
|
||||
ExecutableSection section = (tv.SelectedNode.Tag as ExecutableSection);
|
||||
UISaveSection(section);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Displays the Save file dialog and saves the specified section if the user clicks the Save button.
|
||||
/// </summary>
|
||||
/// <param name="section">The section to save.</param>
|
||||
/// <returns>True if the user clicks the Save button and saves the section; false otherwise.</returns>
|
||||
private bool UISaveSection(ExecutableSection section)
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.FileName = section.Name;
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
section.Save(sfd.FileName);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void mnuContextListViewSectionsImport_Click(object sender, EventArgs e)
|
||||
@ -199,5 +226,13 @@ namespace UniversalEditor.Editors.Executable
|
||||
SwitchTo(null);
|
||||
}
|
||||
}
|
||||
|
||||
private void tv_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == System.Windows.Forms.MouseButtons.Right)
|
||||
{
|
||||
tv.SelectedNode = tv.HitTest(e.Location).Node;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -112,12 +112,12 @@
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<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=2.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>
|
||||
<metadata name="mnuContextListViewSections.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<metadata name="mnuContextSections.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
Loading…
x
Reference in New Issue
Block a user