Expand remote host selection for attaching to handle remote servers

* Also remove some of the old remote-replay single-shot code handling.
This commit is contained in:
baldurk
2016-08-19 17:26:07 +02:00
parent 8bd25559a4
commit 4fde9b065f
12 changed files with 694 additions and 978 deletions
+8 -20
View File
@@ -36,6 +36,13 @@ using System.Windows.Forms;
namespace renderdocui.Code
{
[Serializable]
public class RemoteHost
{
public string Hostname = "";
public string RunCommand = "";
}
[Serializable]
public class PersistantConfig
{
@@ -52,16 +59,10 @@ namespace renderdocui.Code
public bool TextureViewer_PerTexSettings = true;
public bool ShaderViewer_FriendlyNaming = true;
public List<string> RecentHosts = new List<string>();
public List<RemoteHost> RemoteHosts = new List<RemoteHost>();
public int LocalProxy = 0;
[XmlIgnore] // not directly serializable
public Dictionary<string, string> ReplayHosts = new Dictionary<string, string>();
public List<SerializableKeyValuePair<string, string>> ReplayHostKeyValues = new List<SerializableKeyValuePair<string, string>>();
public List<SerializableKeyValuePair<string, string>> PreviouslyUsedHosts = new List<SerializableKeyValuePair<string, string>>();
[XmlIgnore] // not directly serializable
public Dictionary<string, string> ConfigSettings = new Dictionary<string, string>();
private List<SerializableKeyValuePair<string, string>> ConfigSettingsValues = new List<SerializableKeyValuePair<string, string>>();
@@ -175,10 +176,6 @@ namespace renderdocui.Code
try
{
ReplayHostKeyValues.Clear();
foreach (var kv in ReplayHosts)
ReplayHostKeyValues.Add(new SerializableKeyValuePair<string, string>(kv.Key, kv.Value));
ConfigSettingsValues.Clear();
foreach (var kv in ConfigSettings)
ConfigSettingsValues.Add(new SerializableKeyValuePair<string, string>(kv.Key, kv.Value));
@@ -203,15 +200,6 @@ namespace renderdocui.Code
PersistantConfig c = (PersistantConfig)xs.Deserialize(reader);
reader.Close();
foreach (var kv in c.ReplayHostKeyValues)
{
if (kv.Key != null && kv.Key.Length > 0 &&
kv.Value != null)
{
c.ReplayHosts.Add(kv.Key, kv.Value);
}
}
foreach (var kv in c.ConfigSettingsValues)
{
if (kv.Key != null && kv.Key.Length > 0 &&
+3 -30
View File
@@ -161,42 +161,16 @@ namespace renderdocui.Code
////////////////////////////////////////////
// Internals
private void CreateReplayRenderer(ref ReplayRenderer renderer, ref RemoteServer remote)
private void CreateReplayRenderer(ref ReplayRenderer renderer)
{
if (m_ProxyRenderer < 0)
{
renderer = StaticExports.CreateReplayRenderer(m_Logfile, ref LoadProgress);
return;
}
remote = StaticExports.CreateRemoteReplayConnection(m_ReplayHost, 0);
if(remote == null)
{
var e = new System.ApplicationException("Failed to connect to remote replay host");
e.Data.Add("status", ReplayCreateStatus.UnknownError);
throw e;
}
renderer = remote.OpenCapture(m_ProxyRenderer, m_Logfile, ref LoadProgress);
if(renderer == null)
{
remote.Shutdown();
var e = new System.ApplicationException("Failed to connect to remote replay host");
e.Data.Add("status", ReplayCreateStatus.UnknownError);
throw e;
}
renderer = StaticExports.CreateReplayRenderer(m_Logfile, ref LoadProgress);
}
private void RunThread()
{
try
{
ReplayRenderer renderer = null;
RemoteServer remote = null;
CreateReplayRenderer(ref renderer, ref remote);
ReplayRenderer renderer = StaticExports.CreateReplayRenderer(m_Logfile, ref LoadProgress);
if(renderer != null)
{
System.Diagnostics.Debug.WriteLine("Renderer created");
@@ -250,7 +224,6 @@ namespace renderdocui.Code
}
renderer.Shutdown();
if (remote != null) remote.Shutdown();
}
}
catch (ApplicationException ex)
-165
View File
@@ -1,165 +0,0 @@
namespace renderdocui.Windows.Dialogs
{
partial class RemoteHostSelect
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
TreelistView.TreeListColumn treeListColumn1 = new TreelistView.TreeListColumn("Hostname", "Hostname");
TreelistView.TreeListColumn treeListColumn2 = new TreelistView.TreeListColumn("API", "API");
TreelistView.TreeListColumn treeListColumn3 = new TreelistView.TreeListColumn("User", "Connected User");
this.hosts = new TreelistView.TreeListView();
this.connect = new System.Windows.Forms.Button();
this.addhost = new System.Windows.Forms.Button();
this.hostname = new System.Windows.Forms.TextBox();
this.refresh = new System.Windows.Forms.Button();
tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.hosts)).BeginInit();
this.SuspendLayout();
//
// tableLayoutPanel1
//
tableLayoutPanel1.ColumnCount = 4;
tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
tableLayoutPanel1.Controls.Add(this.hosts, 0, 0);
tableLayoutPanel1.Controls.Add(this.connect, 3, 1);
tableLayoutPanel1.Controls.Add(this.addhost, 1, 1);
tableLayoutPanel1.Controls.Add(this.hostname, 0, 1);
tableLayoutPanel1.Controls.Add(this.refresh, 2, 1);
tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.RowCount = 2;
tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
tableLayoutPanel1.Size = new System.Drawing.Size(488, 297);
tableLayoutPanel1.TabIndex = 2;
//
// hosts
//
this.hosts.AlwaysDisplayVScroll = true;
treeListColumn1.AutoSize = true;
treeListColumn1.AutoSizeMinSize = 15;
treeListColumn1.Width = 48;
treeListColumn2.AutoSizeMinSize = 15;
treeListColumn2.Width = 80;
treeListColumn3.AutoSizeMinSize = 15;
treeListColumn3.Width = 125;
this.hosts.Columns.AddRange(new TreelistView.TreeListColumn[] {
treeListColumn1,
treeListColumn2,
treeListColumn3});
tableLayoutPanel1.SetColumnSpan(this.hosts, 4);
this.hosts.Cursor = System.Windows.Forms.Cursors.Arrow;
this.hosts.Dock = System.Windows.Forms.DockStyle.Fill;
this.hosts.Location = new System.Drawing.Point(3, 3);
this.hosts.MultiSelect = false;
this.hosts.Name = "hosts";
this.hosts.RowOptions.ShowHeader = false;
this.hosts.Size = new System.Drawing.Size(482, 262);
this.hosts.TabIndex = 1;
this.hosts.ViewOptions.HoverHandTreeColumn = false;
this.hosts.ViewOptions.Indent = 12;
this.hosts.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.hosts_AfterSelect);
this.hosts.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.hosts_NodeDoubleClicked);
this.hosts.KeyDown += new System.Windows.Forms.KeyEventHandler(this.hosts_KeyDown);
//
// connect
//
this.connect.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.connect.Enabled = false;
this.connect.Location = new System.Drawing.Point(410, 271);
this.connect.Margin = new System.Windows.Forms.Padding(32, 3, 3, 3);
this.connect.Name = "connect";
this.connect.Size = new System.Drawing.Size(75, 23);
this.connect.TabIndex = 5;
this.connect.Text = "Connect";
this.connect.UseVisualStyleBackColor = true;
this.connect.Click += new System.EventHandler(this.connect_Click);
//
// addhost
//
this.addhost.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.addhost.Location = new System.Drawing.Point(219, 271);
this.addhost.Name = "addhost";
this.addhost.Size = new System.Drawing.Size(75, 23);
this.addhost.TabIndex = 3;
this.addhost.Text = "Add Host";
this.addhost.UseVisualStyleBackColor = true;
this.addhost.Click += new System.EventHandler(this.addhost_Click);
//
// hostname
//
this.hostname.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.hostname.Location = new System.Drawing.Point(3, 271);
this.hostname.Name = "hostname";
this.hostname.Size = new System.Drawing.Size(210, 20);
this.hostname.TabIndex = 2;
this.hostname.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.hostname_KeyPress);
//
// refresh
//
this.refresh.Location = new System.Drawing.Point(300, 271);
this.refresh.Name = "refresh";
this.refresh.Size = new System.Drawing.Size(75, 23);
this.refresh.TabIndex = 4;
this.refresh.Text = "Refresh";
this.refresh.UseVisualStyleBackColor = true;
this.refresh.Click += new System.EventHandler(this.refresh_Click);
//
// RemoteHostSelect
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(488, 297);
this.Controls.Add(tableLayoutPanel1);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "RemoteHostSelect";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Attach to running instance";
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.hosts)).EndInit();
this.ResumeLayout(false);
}
#endregion
private TreelistView.TreeListView hosts;
private System.Windows.Forms.Button connect;
private System.Windows.Forms.Button addhost;
private System.Windows.Forms.TextBox hostname;
private System.Windows.Forms.Button refresh;
}
}
@@ -1,123 +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="tableLayoutPanel1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
</root>
+326
View File
@@ -0,0 +1,326 @@
namespace renderdocui.Windows.Dialogs
{
partial class RemoteManager
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
TreelistView.TreeListColumn treeListColumn3 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("hostname", "Hostname")));
TreelistView.TreeListColumn treeListColumn4 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("running", "Running")));
System.Windows.Forms.GroupBox basicConfigBox;
System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
System.Windows.Forms.Label label1;
System.Windows.Forms.Label label2;
System.Windows.Forms.Label label3;
System.Windows.Forms.Label label4;
this.hosts = new TreelistView.TreeListView();
this.connect = new System.Windows.Forms.Button();
this.addhost = new System.Windows.Forms.Button();
this.hostname = new System.Windows.Forms.TextBox();
this.refresh = new System.Windows.Forms.Button();
this.configure = new System.Windows.Forms.Button();
this.configHostname = new System.Windows.Forms.TextBox();
this.configRunCommand = new System.Windows.Forms.TextBox();
this.setHostname = new System.Windows.Forms.Button();
this.setRunCommand = new System.Windows.Forms.Button();
tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
basicConfigBox = new System.Windows.Forms.GroupBox();
tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
label1 = new System.Windows.Forms.Label();
label2 = new System.Windows.Forms.Label();
label3 = new System.Windows.Forms.Label();
label4 = new System.Windows.Forms.Label();
tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.hosts)).BeginInit();
basicConfigBox.SuspendLayout();
tableLayoutPanel2.SuspendLayout();
this.SuspendLayout();
//
// tableLayoutPanel1
//
tableLayoutPanel1.ColumnCount = 6;
tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
tableLayoutPanel1.Controls.Add(this.hosts, 0, 0);
tableLayoutPanel1.Controls.Add(this.connect, 5, 1);
tableLayoutPanel1.Controls.Add(this.addhost, 1, 1);
tableLayoutPanel1.Controls.Add(this.hostname, 0, 1);
tableLayoutPanel1.Controls.Add(this.refresh, 2, 1);
tableLayoutPanel1.Controls.Add(this.configure, 4, 1);
tableLayoutPanel1.Controls.Add(basicConfigBox, 0, 2);
tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.RowCount = 3;
tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
tableLayoutPanel1.Size = new System.Drawing.Size(632, 438);
tableLayoutPanel1.TabIndex = 2;
//
// hosts
//
this.hosts.AlwaysDisplayVScroll = true;
treeListColumn3.AutoSize = true;
treeListColumn3.AutoSizeMinSize = 15;
treeListColumn3.Width = 48;
treeListColumn4.AutoSizeMinSize = 0;
treeListColumn4.Width = 250;
this.hosts.Columns.AddRange(new TreelistView.TreeListColumn[] {
treeListColumn3,
treeListColumn4});
tableLayoutPanel1.SetColumnSpan(this.hosts, 6);
this.hosts.Cursor = System.Windows.Forms.Cursors.Arrow;
this.hosts.Dock = System.Windows.Forms.DockStyle.Fill;
this.hosts.Location = new System.Drawing.Point(3, 3);
this.hosts.MultiSelect = false;
this.hosts.Name = "hosts";
this.hosts.RowOptions.ShowHeader = false;
this.hosts.Size = new System.Drawing.Size(626, 259);
this.hosts.TabIndex = 1;
this.hosts.ViewOptions.HoverHandTreeColumn = false;
this.hosts.ViewOptions.Indent = 12;
this.hosts.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.hosts_AfterSelect);
this.hosts.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.hosts_NodeDoubleClicked);
this.hosts.KeyDown += new System.Windows.Forms.KeyEventHandler(this.hosts_KeyDown);
//
// connect
//
this.connect.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.connect.Enabled = false;
this.connect.Location = new System.Drawing.Point(554, 268);
this.connect.Name = "connect";
this.connect.Size = new System.Drawing.Size(75, 23);
this.connect.TabIndex = 5;
this.connect.Text = "Connect";
this.connect.UseVisualStyleBackColor = true;
this.connect.Click += new System.EventHandler(this.connect_Click);
//
// addhost
//
this.addhost.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.addhost.Location = new System.Drawing.Point(291, 268);
this.addhost.Name = "addhost";
this.addhost.Size = new System.Drawing.Size(75, 23);
this.addhost.TabIndex = 3;
this.addhost.Text = "Add Host";
this.addhost.UseVisualStyleBackColor = true;
this.addhost.Click += new System.EventHandler(this.addhost_Click);
//
// hostname
//
this.hostname.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.hostname.Location = new System.Drawing.Point(3, 268);
this.hostname.Name = "hostname";
this.hostname.Size = new System.Drawing.Size(282, 20);
this.hostname.TabIndex = 2;
this.hostname.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textbox_KeyPress);
//
// refresh
//
this.refresh.Location = new System.Drawing.Point(372, 268);
this.refresh.Name = "refresh";
this.refresh.Size = new System.Drawing.Size(75, 23);
this.refresh.TabIndex = 4;
this.refresh.Text = "Refresh";
this.refresh.UseVisualStyleBackColor = true;
this.refresh.Click += new System.EventHandler(this.refresh_Click);
//
// configure
//
this.configure.Location = new System.Drawing.Point(473, 268);
this.configure.Name = "configure";
this.configure.Size = new System.Drawing.Size(75, 23);
this.configure.TabIndex = 6;
this.configure.Text = "Configure";
this.configure.UseVisualStyleBackColor = true;
//
// basicConfigBox
//
basicConfigBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
tableLayoutPanel1.SetColumnSpan(basicConfigBox, 6);
basicConfigBox.Controls.Add(tableLayoutPanel2);
basicConfigBox.Location = new System.Drawing.Point(3, 297);
basicConfigBox.Name = "basicConfigBox";
basicConfigBox.Size = new System.Drawing.Size(626, 138);
basicConfigBox.TabIndex = 7;
basicConfigBox.TabStop = false;
basicConfigBox.Text = "Basic configuration";
//
// tableLayoutPanel2
//
tableLayoutPanel2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
tableLayoutPanel2.AutoSize = true;
tableLayoutPanel2.ColumnCount = 3;
tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F));
tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 80F));
tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
tableLayoutPanel2.Controls.Add(label1, 0, 1);
tableLayoutPanel2.Controls.Add(this.configHostname, 1, 1);
tableLayoutPanel2.Controls.Add(this.configRunCommand, 1, 3);
tableLayoutPanel2.Controls.Add(label2, 0, 3);
tableLayoutPanel2.Controls.Add(label3, 1, 2);
tableLayoutPanel2.Controls.Add(label4, 1, 0);
tableLayoutPanel2.Controls.Add(this.setHostname, 2, 1);
tableLayoutPanel2.Controls.Add(this.setRunCommand, 2, 3);
tableLayoutPanel2.Location = new System.Drawing.Point(6, 19);
tableLayoutPanel2.Name = "tableLayoutPanel2";
tableLayoutPanel2.RowCount = 4;
tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
tableLayoutPanel2.Size = new System.Drawing.Size(614, 112);
tableLayoutPanel2.TabIndex = 0;
//
// label1
//
label1.Anchor = System.Windows.Forms.AnchorStyles.Right;
label1.AutoSize = true;
label1.Location = new System.Drawing.Point(53, 34);
label1.Name = "label1";
label1.Size = new System.Drawing.Size(58, 13);
label1.TabIndex = 0;
label1.Text = "Hostname:";
//
// configHostname
//
this.configHostname.Dock = System.Windows.Forms.DockStyle.Fill;
this.configHostname.Location = new System.Drawing.Point(117, 29);
this.configHostname.Name = "configHostname";
this.configHostname.Size = new System.Drawing.Size(453, 20);
this.configHostname.TabIndex = 1;
this.configHostname.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textbox_KeyPress);
//
// configRunCommand
//
this.configRunCommand.Dock = System.Windows.Forms.DockStyle.Fill;
this.configRunCommand.Location = new System.Drawing.Point(117, 85);
this.configRunCommand.Name = "configRunCommand";
this.configRunCommand.Size = new System.Drawing.Size(453, 20);
this.configRunCommand.TabIndex = 4;
this.configRunCommand.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textbox_KeyPress);
//
// label2
//
label2.Anchor = System.Windows.Forms.AnchorStyles.Right;
label2.AutoSize = true;
label2.Location = new System.Drawing.Point(3, 90);
label2.Name = "label2";
label2.Size = new System.Drawing.Size(108, 13);
label2.TabIndex = 2;
label2.Text = "Server run command:";
//
// label3
//
label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
label3.AutoSize = true;
label3.Location = new System.Drawing.Point(117, 66);
label3.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
label3.Name = "label3";
label3.Size = new System.Drawing.Size(413, 13);
label3.TabIndex = 3;
label3.Text = "This lets you configure a command to run that launches the remote server on this " +
"host.";
//
// label4
//
label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
label4.AutoSize = true;
label4.Location = new System.Drawing.Point(117, 10);
label4.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3);
label4.Name = "label4";
label4.Size = new System.Drawing.Size(261, 13);
label4.TabIndex = 5;
label4.Text = "Configure the network hostname for this remote server";
//
// setHostname
//
this.setHostname.Location = new System.Drawing.Point(576, 29);
this.setHostname.Name = "setHostname";
this.setHostname.Size = new System.Drawing.Size(34, 23);
this.setHostname.TabIndex = 6;
this.setHostname.Text = "Set";
this.setHostname.UseVisualStyleBackColor = true;
this.setHostname.Click += new System.EventHandler(this.setConfig_Click);
//
// setRunCommand
//
this.setRunCommand.Location = new System.Drawing.Point(576, 85);
this.setRunCommand.Name = "setRunCommand";
this.setRunCommand.Size = new System.Drawing.Size(34, 23);
this.setRunCommand.TabIndex = 7;
this.setRunCommand.Text = "Set";
this.setRunCommand.UseVisualStyleBackColor = true;
this.setRunCommand.Click += new System.EventHandler(this.setConfig_Click);
//
// RemoteManager
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(632, 438);
this.Controls.Add(tableLayoutPanel1);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "RemoteManager";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Remote manager";
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.hosts)).EndInit();
basicConfigBox.ResumeLayout(false);
basicConfigBox.PerformLayout();
tableLayoutPanel2.ResumeLayout(false);
tableLayoutPanel2.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private TreelistView.TreeListView hosts;
private System.Windows.Forms.Button connect;
private System.Windows.Forms.Button addhost;
private System.Windows.Forms.TextBox hostname;
private System.Windows.Forms.Button refresh;
private System.Windows.Forms.Button configure;
private System.Windows.Forms.TextBox configHostname;
private System.Windows.Forms.TextBox configRunCommand;
private System.Windows.Forms.Button setHostname;
private System.Windows.Forms.Button setRunCommand;
}
}
@@ -29,6 +29,7 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Text;
@@ -40,7 +41,7 @@ namespace renderdocui.Windows.Dialogs
{
// this window lists the remote hosts the user has configured, and queries for any open connections
// on any of them that indicate an application with renderdoc hooks that's running.
public partial class RemoteHostSelect : Form
public partial class RemoteManager : Form
{
MainWindow m_Main;
Core m_Core;
@@ -52,7 +53,30 @@ namespace renderdocui.Windows.Dialogs
public UInt32 ident;
};
public RemoteHostSelect(Core core, MainWindow main)
private static string RemoteServerLiveText
{
get { return "Remote server running"; }
}
private static string RemoteServerDeadText
{
get { return "No remote server"; }
}
private static void SetRemoteServerLive(TreelistView.Node node, bool live)
{
node["running"] = live ? RemoteServerLiveText : RemoteServerDeadText;
node.Image = live
? global::renderdocui.Properties.Resources.connect
: global::renderdocui.Properties.Resources.disconnect;
}
private static bool IsRemoteServerLive(TreelistView.Node node)
{
return node["running"].ToString() == RemoteServerLiveText;
}
public RemoteManager(Core core, MainWindow main)
{
InitializeComponent();
@@ -68,25 +92,39 @@ namespace renderdocui.Windows.Dialogs
hosts.BeginInit();
// localhost should always be available
if (!m_Core.Config.RecentHosts.Contains("localhost"))
m_Core.Config.RecentHosts.Add("localhost");
bool foundLocalhost = false;
foreach (var h in m_Core.Config.RecentHosts)
for (int i = 0; i < m_Core.Config.RemoteHosts.Count; i++)
{
AddHost(h);
if (m_Core.Config.RemoteHosts[i].Hostname == "localhost")
{
foundLocalhost = true;
break;
}
}
if (!foundLocalhost)
{
RemoteHost host = new RemoteHost();
host.Hostname = "localhost";
m_Core.Config.RemoteHosts.Add(host);
}
foreach (var h in m_Core.Config.RemoteHosts)
AddHost(h);
hosts.EndInit();
}
// we kick off a thread per host to query for any open connections. The
// interfaces on the C++ side should be thread-safe to cope with this
private void AddHost(String host)
private void AddHost(RemoteHost host)
{
TreelistView.Node node = new TreelistView.Node(new object[] { host, "" });
TreelistView.Node node = new TreelistView.Node(new object[] { host.Hostname, "..." });
node.Italic = true;
node.Image = global::renderdocui.Properties.Resources.hourglass;
node.Tag = host;
hosts.Nodes.Add(node);
@@ -99,6 +137,34 @@ namespace renderdocui.Windows.Dialogs
private static int lookupsInProgress = 0;
private static Mutex lookupMutex = new Mutex();
private static void RunRemoteServer(object o)
{
TreelistView.Node node = o as TreelistView.Node;
RemoteHost host = node.Tag as RemoteHost;
try
{
ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "/C " + host.RunCommand;
Process cmd = Process.Start(startInfo);
// wait up to 2s for the command to exit
cmd.WaitForExit(2000);
// now refresh this host
Thread th = Helpers.NewThread(new ParameterizedThreadStart(LookupHostConnections));
th.Start(node);
}
catch (Exception)
{
MessageBox.Show(String.Format("Error running command to launch remote server:\n{0}", host.RunCommand),
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// this function looks up the remote connections and for each one open
// queries it for the API, target (usually executable name) and if any user is already connected
private static void LookupHostConnections(object o)
@@ -115,12 +181,23 @@ namespace renderdocui.Windows.Dialogs
while (p.Parent != null)
p = p.Parent;
RemoteHostSelect rhs = p as RemoteHostSelect;
RemoteManager rhs = p as RemoteManager;
string hostname = node["Hostname"] as string;
string hostname = node["hostname"] as string;
string username = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
try
{
RemoteServer server = StaticExports.CreateRemoteServer(hostname, 0);
SetRemoteServerLive(node, true);
server.ShutdownConnection();
}
catch (ApplicationException)
{
SetRemoteServerLive(node, false);
}
StaticExports.EnumerateRemoteTargets(hostname, (UInt32 i) => {
try
{
@@ -132,10 +209,17 @@ namespace renderdocui.Windows.Dialogs
string api = conn.API;
string busy = conn.BusyClient;
string running;
if (busy != "")
running = String.Format("Running {0}, {1} is connected", api, busy);
else
running = String.Format("Running {0}", api);
node.OwnerView.BeginInvoke((MethodInvoker)delegate
{
node.OwnerView.BeginUpdate();
node.Nodes.Add(new TreelistView.Node(new object[] { target, api, busy })).Tag = new RemoteConnect(hostname, i);
node.Nodes.Add(new TreelistView.Node(new object[] { target, running })).Tag = new RemoteConnect(hostname, i);
node.OwnerView.EndUpdate();
node.Expand();
});
@@ -154,7 +238,6 @@ namespace renderdocui.Windows.Dialogs
{
node.OwnerView.BeginUpdate();
node.Italic = false;
node.Image = null;
node.OwnerView.EndUpdate();
});
}
@@ -173,6 +256,9 @@ namespace renderdocui.Windows.Dialogs
// (to stop flooding)
private void LookupComplete()
{
if(hosts.SelectedNode != null)
hosts_AfterSelect(hosts, new TreeViewEventArgs(null));
if (lookupsInProgress == 0)
{
refresh.Enabled = true;
@@ -181,10 +267,35 @@ namespace renderdocui.Windows.Dialogs
private void hosts_AfterSelect(object sender, TreeViewEventArgs e)
{
configHostname.Enabled = configRunCommand.Enabled = false;
configHostname.Text = configRunCommand.Text = "";
if (hosts.SelectedNode != null &&
hosts.SelectedNode.Tag != null)
{
connect.Enabled = true;
connect.Text = "Connect";
RemoteHost host = hosts.SelectedNode.Tag as RemoteHost;
if (host != null)
{
configHostname.Enabled = configRunCommand.Enabled = true;
configHostname.Text = host.Hostname;
configRunCommand.Text = host.RunCommand;
if(IsRemoteServerLive(hosts.SelectedNode))
{
connect.Text = "Shutdown";
}
else
{
connect.Text = "Run Server";
if(host.RunCommand == "")
connect.Enabled = false;
}
}
}
else
{
@@ -206,26 +317,88 @@ namespace renderdocui.Windows.Dialogs
private void AddNewHost()
{
if (hostname.Text.Trim().Length > 0 && !m_Core.Config.RecentHosts.Contains(hostname.Text, StringComparer.OrdinalIgnoreCase))
string host = hostname.Text.Trim();
if (host.Length > 0)
{
m_Core.Config.RecentHosts.Add(hostname.Text);
m_Core.Config.Serialize(Core.ConfigFilename);
bool found = false;
hosts.BeginUpdate();
AddHost(hostname.Text);
hosts.EndUpdate();
StringComparer comp = StringComparer.Create(System.Globalization.CultureInfo.CurrentCulture, true);
for (int i = 0; i < m_Core.Config.RemoteHosts.Count; i++)
{
if (comp.Compare(m_Core.Config.RemoteHosts[i].Hostname, host.Trim()) == 0)
{
found = true;
break;
}
}
if (!found)
{
RemoteHost h = new RemoteHost();
h.Hostname = host;
m_Core.Config.RemoteHosts.Add(h);
m_Core.Config.Serialize(Core.ConfigFilename);
hosts.BeginUpdate();
AddHost(h);
hosts.EndUpdate();
}
}
hostname.Text = "";
}
private void connect_Click(object sender, EventArgs e)
{
ConnectToHost(hosts.SelectedNode);
TreelistView.Node node = hosts.SelectedNode;
if (node.Tag is RemoteConnect)
{
ConnectToHost(node);
}
else if (node.Tag is RemoteHost)
{
RemoteHost host = node.Tag as RemoteHost;
if (IsRemoteServerLive(node))
{
DialogResult res = MessageBox.Show(String.Format("Are you sure you wish to shut down running remote server on {0}?", host.Hostname),
"Remote server shutdown", MessageBoxButtons.YesNoCancel);
if (res == DialogResult.Cancel || res == DialogResult.No)
return;
// shut down
try
{
RemoteServer server = StaticExports.CreateRemoteServer(host.Hostname, 0);
server.ShutdownServerAndConnection();
hosts.BeginUpdate();
SetRemoteServerLive(node, false);
hosts.EndUpdate();
}
catch (Exception)
{
MessageBox.Show("Error shutting down remote server", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
hosts_AfterSelect(hosts, new TreeViewEventArgs(null));
}
else
{
// try to run
refresh.Enabled = false;
Thread th = Helpers.NewThread(new ParameterizedThreadStart(RunRemoteServer));
th.Start(node);
}
}
}
private void hosts_NodeDoubleClicked(TreelistView.Node node)
{
ConnectToHost(node);
if(node.Tag is RemoteConnect)
ConnectToHost(node);
}
private void addhost_Click(object sender, EventArgs e)
@@ -233,12 +406,6 @@ namespace renderdocui.Windows.Dialogs
AddNewHost();
}
private void hostname_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\n' || e.KeyChar == '\r')
AddNewHost();
}
private void refresh_Click(object sender, EventArgs e)
{
if (lookupsInProgress > 0)
@@ -265,11 +432,13 @@ namespace renderdocui.Windows.Dialogs
if (e.KeyData == Keys.Return || e.KeyData == Keys.Enter)
{
if (connect.Enabled)
ConnectToHost(hosts.SelectedNode);
{
connect_Click(sender, new EventArgs());
}
}
if (e.KeyData == Keys.Delete && hosts.SelectedNode != null && hosts.SelectedNode.Parent == null)
{
string hostname = hosts.SelectedNode["Hostname"] as string;
string hostname = hosts.SelectedNode["hostname"] as string;
if(hostname == "localhost")
return;
@@ -282,7 +451,7 @@ namespace renderdocui.Windows.Dialogs
if (res == DialogResult.Yes)
{
m_Core.Config.RecentHosts.Remove(hosts.SelectedNode["Hostname"] as String);
m_Core.Config.RemoteHosts.Remove(hosts.SelectedNode.Tag as RemoteHost);
m_Core.Config.Serialize(Core.ConfigFilename);
hosts.BeginUpdate();
hosts.Nodes.Remove(hosts.SelectedNode);
@@ -290,5 +459,37 @@ namespace renderdocui.Windows.Dialogs
}
}
}
private void textbox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\n' || e.KeyChar == '\r')
{
if(sender == hostname)
addhost_Click(sender, new EventArgs());
if(sender == configHostname)
setConfig_Click(setHostname, new EventArgs());
if(sender == configRunCommand)
setConfig_Click(setRunCommand, new EventArgs());
}
}
private void setConfig_Click(object sender, EventArgs e)
{
int idx = m_Core.Config.RemoteHosts.IndexOf(hosts.SelectedNode.Tag as RemoteHost);
if(idx >= 0)
{
if (sender == setHostname)
m_Core.Config.RemoteHosts[idx].Hostname = configHostname.Text.Trim();
if (sender == setRunCommand)
m_Core.Config.RemoteHosts[idx].RunCommand = configRunCommand.Text.Trim();
m_Core.Config.Serialize(Core.ConfigFilename);
hosts.BeginUpdate();
hosts.SelectedNode["hostname"] = m_Core.Config.RemoteHosts[idx].Hostname;
hosts.SelectedNode.Tag = m_Core.Config.RemoteHosts[idx];
hosts.EndUpdate();
}
}
}
}
@@ -120,10 +120,22 @@
<metadata name="tableLayoutPanel1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="basicConfigBox.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="tableLayoutPanel2.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label2.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label3.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label4.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
</root>
-150
View File
@@ -1,150 +0,0 @@
namespace renderdocui.Windows.Dialogs
{
partial class ReplayHostManager
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
System.Windows.Forms.Label label1;
System.Windows.Forms.Label label2;
this.OK = new System.Windows.Forms.Button();
this.driversBox = new System.Windows.Forms.GroupBox();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.localProxy = new System.Windows.Forms.ComboBox();
tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
label1 = new System.Windows.Forms.Label();
label2 = new System.Windows.Forms.Label();
tableLayoutPanel1.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// tableLayoutPanel1
//
tableLayoutPanel1.ColumnCount = 1;
tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
tableLayoutPanel1.Controls.Add(this.OK, 0, 3);
tableLayoutPanel1.Controls.Add(this.driversBox, 0, 2);
tableLayoutPanel1.Controls.Add(label1, 0, 0);
tableLayoutPanel1.Controls.Add(this.flowLayoutPanel1, 0, 1);
tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.RowCount = 4;
tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
tableLayoutPanel1.Size = new System.Drawing.Size(420, 400);
tableLayoutPanel1.TabIndex = 0;
//
// OK
//
this.OK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.OK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.OK.Location = new System.Drawing.Point(342, 374);
this.OK.Name = "OK";
this.OK.Size = new System.Drawing.Size(75, 23);
this.OK.TabIndex = 0;
this.OK.Text = "OK";
this.OK.UseVisualStyleBackColor = true;
//
// driversBox
//
this.driversBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.driversBox.Location = new System.Drawing.Point(3, 75);
this.driversBox.Name = "driversBox";
this.driversBox.Size = new System.Drawing.Size(414, 293);
this.driversBox.TabIndex = 2;
this.driversBox.TabStop = false;
this.driversBox.Text = "Remote Replay Hosts";
//
// label1
//
label1.AutoSize = true;
label1.Location = new System.Drawing.Point(3, 0);
label1.Name = "label1";
label1.Size = new System.Drawing.Size(301, 39);
label1.TabIndex = 1;
label1.Text = "Select Replay Host for each known driver.\r\n\r\nLeave blank to indicate local replay" +
" should be used if possible.";
//
// flowLayoutPanel1
//
this.flowLayoutPanel1.AutoSize = true;
this.flowLayoutPanel1.Controls.Add(label2);
this.flowLayoutPanel1.Controls.Add(this.localProxy);
this.flowLayoutPanel1.Location = new System.Drawing.Point(3, 42);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Size = new System.Drawing.Size(278, 27);
this.flowLayoutPanel1.TabIndex = 3;
//
// label2
//
label2.Anchor = System.Windows.Forms.AnchorStyles.Right;
label2.AutoSize = true;
label2.Location = new System.Drawing.Point(3, 7);
label2.Name = "label2";
label2.Size = new System.Drawing.Size(145, 13);
label2.TabIndex = 0;
label2.Text = "Choose local API for proxying";
//
// localProxy
//
this.localProxy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.localProxy.FormattingEnabled = true;
this.localProxy.Location = new System.Drawing.Point(154, 3);
this.localProxy.Name = "localProxy";
this.localProxy.Size = new System.Drawing.Size(121, 21);
this.localProxy.TabIndex = 1;
this.localProxy.SelectedIndexChanged += new System.EventHandler(this.localProxy_SelectedIndexChanged);
//
// ReplayHostManager
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(420, 400);
this.Controls.Add(tableLayoutPanel1);
this.Name = "ReplayHostManager";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "ReplayHostManager";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.ReplayHostManager_FormClosed);
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel1.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.flowLayoutPanel1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button OK;
private System.Windows.Forms.GroupBox driversBox;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.ComboBox localProxy;
}
}
@@ -1,213 +0,0 @@
/******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015-2016 Baldur Karlsson
* Copyright (c) 2014 Crytek
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
******************************************************************************/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using renderdocui.Code;
using renderdoc;
namespace renderdocui.Windows.Dialogs
{
// currently not used until the implementation is completed, but this allows the user
// to choose which host they'll use by default to replay on when they try and load a log
// that uses an API not implemented in their build of renderdoc.
//
// It can also be used force remote replay even for an API that is locally supported -
// this can be used if e.g. you want to run on a remote machine that has a different IHV's
// GPU in it to check for bugs or access different hardware profiling counters
public partial class ReplayHostManager : Form
{
Core m_Core;
List<ComboBox> m_Hosts = new List<ComboBox>();
public ReplayHostManager(Core core, MainWindow main)
{
InitializeComponent();
localProxy.Font = core.Config.PreferredFont;
Icon = global::renderdocui.Properties.Resources.icon;
m_Core = core;
string[] proxies = new string[0];
try
{
var dummy = StaticExports.CreateRemoteReplayConnection("-", 0);
proxies = dummy.LocalProxies();
dummy.Shutdown();
}
catch (ApplicationException ex)
{
string errmsg = "Unknown error message";
if (ex.Data.Contains("status"))
errmsg = ((ReplayCreateStatus)ex.Data["status"]).Str();
MessageBox.Show(String.Format("Failed to fetch local proxy drivers: {0}.\n\nCheck diagnostic log in Help menu for more details.", errmsg),
"Error getting driver list", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
localProxy.Items.AddRange(proxies);
m_Core.Config.LocalProxy = Helpers.Clamp(m_Core.Config.LocalProxy, 0, proxies.Length - 1);
localProxy.SelectedIndex = m_Core.Config.LocalProxy;
var driversTable = new TableLayoutPanel();
driversTable.SuspendLayout();
driversBox.Controls.Clear();
driversBox.Controls.Add(driversTable);
driversTable.ColumnCount = 2;
driversTable.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 30F));
driversTable.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 70F));
driversTable.Dock = System.Windows.Forms.DockStyle.Fill;
driversTable.RowCount = m_Core.Config.ReplayHosts.Count + 1;
int row = 0;
List<string> hosts = new List<string>();
foreach (var kv in m_Core.Config.ReplayHosts)
{
var driver = kv.Key;
var lab = new Label();
lab.Anchor = AnchorStyles.Right;
lab.AutoSize = true;
lab.Text = driver;
var host = new ComboBox();
host.Dock = DockStyle.Fill;
host.FormattingEnabled = true;
host.TabIndex = row + 1;
host.Font = m_Core.Config.PreferredFont;
hosts.Clear();
if (kv.Value.Length > 0)
hosts.Add(kv.Value);
var plugins = renderdocplugin.PluginHelpers.GetPlugins();
// search plugins for to find other targets for this driver
foreach (var plugin in plugins)
{
var replayman = renderdocplugin.PluginHelpers.GetPluginInterface<renderdocplugin.ReplayManagerPlugin>(plugin);
if (replayman != null && replayman.GetTargetType() == driver)
{
var targets = replayman.GetOnlineTargets();
foreach (var t in targets)
{
if (!hosts.Contains(t))
hosts.Add(t);
}
}
}
// fill the combo box with previously used hosts
foreach (var prev in m_Core.Config.PreviouslyUsedHosts)
{
if (prev.Key == driver && !hosts.Contains(prev.Value))
hosts.Add(prev.Value);
}
driversTable.Controls.Add(lab, 0, row);
driversTable.Controls.Add(host, 1, row);
driversTable.RowStyles.Add(new RowStyle());
hosts.Remove("");
host.Items.AddRange(hosts.ToArray());
if (kv.Value.Length > 0)
host.SelectedIndex = 0;
host.Tag = driver;
host.SelectedValueChanged += new EventHandler(host_SelectedValueChanged);
host.KeyUp += new KeyEventHandler(host_KeyUp);
m_Hosts.Add(host);
row++;
}
driversTable.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
driversTable.ResumeLayout(false);
driversTable.PerformLayout();
}
void host_KeyUp(object sender, KeyEventArgs e)
{
host_SelectedValueChanged(sender, null);
}
void host_SelectedValueChanged(object sender, EventArgs e)
{
var host = sender as ComboBox;
string driver = host.Tag as string;
if (driver.Length > 0 && m_Core.Config.ReplayHosts.ContainsKey(driver))
m_Core.Config.ReplayHosts[driver] = host.Text;
}
private void localProxy_SelectedIndexChanged(object sender, EventArgs e)
{
m_Core.Config.LocalProxy = localProxy.SelectedIndex;
}
private void ReplayHostManager_FormClosed(object sender, FormClosedEventArgs e)
{
foreach (var host in m_Hosts)
{
string driver = host.Tag as string;
if (host.Text.Length == 0)
continue;
bool found = false;
foreach (var prev in m_Core.Config.PreviouslyUsedHosts)
if (prev.Key == driver && prev.Value == host.Text)
found = true;
if (!found)
m_Core.Config.PreviouslyUsedHosts.Add(new SerializableKeyValuePair<string, string>(driver, host.Text));
}
}
}
}
+101 -69
View File
@@ -94,7 +94,7 @@
this.resolveSymbolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.manageReplayDevicesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.manageRemote = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.viewDocsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.viewLogFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -116,6 +116,9 @@
this.statusProgress = new System.Windows.Forms.ToolStripProgressBar();
this.dockPanel = new WeifenLuo.WinFormsUI.Docking.DockPanel();
this.saveDialog = new System.Windows.Forms.SaveFileDialog();
this.contextChooser = new System.Windows.Forms.ToolStripDropDownButton();
this.foohostToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.barhostToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.toolStripContainer1.BottomToolStripPanel.SuspendLayout();
this.toolStripContainer1.ContentPanel.SuspendLayout();
@@ -154,41 +157,41 @@
this.toolStripSeparator5,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 20);
this.fileToolStripMenuItem.Text = "&File";
//
// captureLogToolStripMenuItem
//
this.captureLogToolStripMenuItem.Name = "captureLogToolStripMenuItem";
this.captureLogToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
this.captureLogToolStripMenuItem.Size = new System.Drawing.Size(218, 22);
this.captureLogToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.captureLogToolStripMenuItem.Text = "&Capture Log";
this.captureLogToolStripMenuItem.Click += new System.EventHandler(this.captureLogToolStripMenuItem_Click);
//
// attachToInstanceToolStripMenuItem
//
this.attachToInstanceToolStripMenuItem.Name = "attachToInstanceToolStripMenuItem";
this.attachToInstanceToolStripMenuItem.Size = new System.Drawing.Size(218, 22);
this.attachToInstanceToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.attachToInstanceToolStripMenuItem.Text = "&Attach to Running Instance";
this.attachToInstanceToolStripMenuItem.Click += new System.EventHandler(this.attachToInstanceToolStripMenuItem_Click);
//
// injectIntoProcessToolStripMenuItem
//
this.injectIntoProcessToolStripMenuItem.Name = "injectIntoProcessToolStripMenuItem";
this.injectIntoProcessToolStripMenuItem.Size = new System.Drawing.Size(218, 22);
this.injectIntoProcessToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.injectIntoProcessToolStripMenuItem.Text = "&Inject into Process";
this.injectIntoProcessToolStripMenuItem.Click += new System.EventHandler(this.injectIntoProcessToolStripMenuItem_Click);
//
// toolStripSeparator10
//
this.toolStripSeparator10.Name = "toolStripSeparator10";
this.toolStripSeparator10.Size = new System.Drawing.Size(215, 6);
this.toolStripSeparator10.Size = new System.Drawing.Size(203, 6);
//
// openLogToolStripMenuItem
//
this.openLogToolStripMenuItem.Name = "openLogToolStripMenuItem";
this.openLogToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
this.openLogToolStripMenuItem.Size = new System.Drawing.Size(218, 22);
this.openLogToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.openLogToolStripMenuItem.Text = "&Open Log";
this.openLogToolStripMenuItem.Click += new System.EventHandler(this.openLogToolStripMenuItem_Click);
//
@@ -197,7 +200,7 @@
this.saveLogToolStripMenuItem.Enabled = false;
this.saveLogToolStripMenuItem.Name = "saveLogToolStripMenuItem";
this.saveLogToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.saveLogToolStripMenuItem.Size = new System.Drawing.Size(218, 22);
this.saveLogToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.saveLogToolStripMenuItem.Text = "&Save Log";
this.saveLogToolStripMenuItem.Click += new System.EventHandler(this.saveLogToolStripMenuItem_Click);
//
@@ -205,14 +208,14 @@
//
this.closeLogToolStripMenuItem.Name = "closeLogToolStripMenuItem";
this.closeLogToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W)));
this.closeLogToolStripMenuItem.Size = new System.Drawing.Size(218, 22);
this.closeLogToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.closeLogToolStripMenuItem.Text = "C&lose Log";
this.closeLogToolStripMenuItem.Click += new System.EventHandler(this.closeLogToolStripMenuItem_Click);
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(215, 6);
this.toolStripSeparator4.Size = new System.Drawing.Size(203, 6);
//
// recentFilesToolStripMenuItem
//
@@ -220,18 +223,18 @@
this.toolStripSeparator6,
this.clearHistoryToolStripMenuItem});
this.recentFilesToolStripMenuItem.Name = "recentFilesToolStripMenuItem";
this.recentFilesToolStripMenuItem.Size = new System.Drawing.Size(218, 22);
this.recentFilesToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.recentFilesToolStripMenuItem.Text = "&Recent Logs";
//
// toolStripSeparator6
//
this.toolStripSeparator6.Name = "toolStripSeparator6";
this.toolStripSeparator6.Size = new System.Drawing.Size(139, 6);
this.toolStripSeparator6.Size = new System.Drawing.Size(133, 6);
//
// clearHistoryToolStripMenuItem
//
this.clearHistoryToolStripMenuItem.Name = "clearHistoryToolStripMenuItem";
this.clearHistoryToolStripMenuItem.Size = new System.Drawing.Size(142, 22);
this.clearHistoryToolStripMenuItem.Size = new System.Drawing.Size(136, 22);
this.clearHistoryToolStripMenuItem.Text = "&Clear History";
this.clearHistoryToolStripMenuItem.Click += new System.EventHandler(this.clearHistoryToolStripMenuItem_Click);
//
@@ -241,31 +244,31 @@
this.toolStripSeparator7,
this.clearHistoryToolStripMenuItem1});
this.recentCapturesToolStripMenuItem.Name = "recentCapturesToolStripMenuItem";
this.recentCapturesToolStripMenuItem.Size = new System.Drawing.Size(218, 22);
this.recentCapturesToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.recentCapturesToolStripMenuItem.Text = "R&ecent Capture Settings";
//
// toolStripSeparator7
//
this.toolStripSeparator7.Name = "toolStripSeparator7";
this.toolStripSeparator7.Size = new System.Drawing.Size(139, 6);
this.toolStripSeparator7.Size = new System.Drawing.Size(133, 6);
//
// clearHistoryToolStripMenuItem1
//
this.clearHistoryToolStripMenuItem1.Name = "clearHistoryToolStripMenuItem1";
this.clearHistoryToolStripMenuItem1.Size = new System.Drawing.Size(142, 22);
this.clearHistoryToolStripMenuItem1.Size = new System.Drawing.Size(136, 22);
this.clearHistoryToolStripMenuItem1.Text = "&Clear History";
this.clearHistoryToolStripMenuItem1.Click += new System.EventHandler(this.clearHistoryToolStripMenuItem1_Click);
//
// toolStripSeparator5
//
this.toolStripSeparator5.Name = "toolStripSeparator5";
this.toolStripSeparator5.Size = new System.Drawing.Size(215, 6);
this.toolStripSeparator5.Size = new System.Drawing.Size(203, 6);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4)));
this.exitToolStripMenuItem.Size = new System.Drawing.Size(218, 22);
this.exitToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
this.exitToolStripMenuItem.Text = "E&xit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
//
@@ -285,7 +288,7 @@
this.timelineToolStripMenuItem,
this.statisticsViewerToolStripMenuItem});
this.windowToolStripMenuItem.Name = "windowToolStripMenuItem";
this.windowToolStripMenuItem.Size = new System.Drawing.Size(63, 20);
this.windowToolStripMenuItem.Size = new System.Drawing.Size(57, 20);
this.windowToolStripMenuItem.Text = "&Window";
//
// toolStripMenuItem1
@@ -300,13 +303,13 @@
this.layoutSave5,
this.layoutSave6});
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(203, 22);
this.toolStripMenuItem1.Size = new System.Drawing.Size(192, 22);
this.toolStripMenuItem1.Text = "&Save Layout";
//
// layoutSaveDefault
//
this.layoutSaveDefault.Name = "layoutSaveDefault";
this.layoutSaveDefault.Size = new System.Drawing.Size(151, 22);
this.layoutSaveDefault.Size = new System.Drawing.Size(145, 22);
this.layoutSaveDefault.Tag = "0";
this.layoutSaveDefault.Text = "&Default Layout";
this.layoutSaveDefault.Click += new System.EventHandler(this.saveLayout_Click);
@@ -314,12 +317,12 @@
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(148, 6);
this.toolStripSeparator3.Size = new System.Drawing.Size(142, 6);
//
// layoutSave1
//
this.layoutSave1.Name = "layoutSave1";
this.layoutSave1.Size = new System.Drawing.Size(151, 22);
this.layoutSave1.Size = new System.Drawing.Size(145, 22);
this.layoutSave1.Tag = "1";
this.layoutSave1.Text = "Layout &1";
this.layoutSave1.Click += new System.EventHandler(this.saveLayout_Click);
@@ -327,7 +330,7 @@
// layoutSave2
//
this.layoutSave2.Name = "layoutSave2";
this.layoutSave2.Size = new System.Drawing.Size(151, 22);
this.layoutSave2.Size = new System.Drawing.Size(145, 22);
this.layoutSave2.Tag = "2";
this.layoutSave2.Text = "Layout &2";
this.layoutSave2.Click += new System.EventHandler(this.saveLayout_Click);
@@ -335,7 +338,7 @@
// layoutSave3
//
this.layoutSave3.Name = "layoutSave3";
this.layoutSave3.Size = new System.Drawing.Size(151, 22);
this.layoutSave3.Size = new System.Drawing.Size(145, 22);
this.layoutSave3.Tag = "3";
this.layoutSave3.Text = "Layout &3";
this.layoutSave3.Click += new System.EventHandler(this.saveLayout_Click);
@@ -343,7 +346,7 @@
// layoutSave4
//
this.layoutSave4.Name = "layoutSave4";
this.layoutSave4.Size = new System.Drawing.Size(151, 22);
this.layoutSave4.Size = new System.Drawing.Size(145, 22);
this.layoutSave4.Tag = "4";
this.layoutSave4.Text = "Layout &4";
this.layoutSave4.Click += new System.EventHandler(this.saveLayout_Click);
@@ -351,7 +354,7 @@
// layoutSave5
//
this.layoutSave5.Name = "layoutSave5";
this.layoutSave5.Size = new System.Drawing.Size(151, 22);
this.layoutSave5.Size = new System.Drawing.Size(145, 22);
this.layoutSave5.Tag = "5";
this.layoutSave5.Text = "Layout &5";
this.layoutSave5.Click += new System.EventHandler(this.saveLayout_Click);
@@ -359,7 +362,7 @@
// layoutSave6
//
this.layoutSave6.Name = "layoutSave6";
this.layoutSave6.Size = new System.Drawing.Size(151, 22);
this.layoutSave6.Size = new System.Drawing.Size(145, 22);
this.layoutSave6.Tag = "6";
this.layoutSave6.Text = "Layout &6";
this.layoutSave6.Click += new System.EventHandler(this.saveLayout_Click);
@@ -376,13 +379,13 @@
this.layoutLoad5,
this.layoutLoad6});
this.saveLayoutToolStripMenuItem.Name = "saveLayoutToolStripMenuItem";
this.saveLayoutToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.saveLayoutToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.saveLayoutToolStripMenuItem.Text = "&Load Layout";
//
// layoutLoadDefault
//
this.layoutLoadDefault.Name = "layoutLoadDefault";
this.layoutLoadDefault.Size = new System.Drawing.Size(151, 22);
this.layoutLoadDefault.Size = new System.Drawing.Size(145, 22);
this.layoutLoadDefault.Tag = "0";
this.layoutLoadDefault.Text = "&Default Layout";
this.layoutLoadDefault.Click += new System.EventHandler(this.loadLayout_Click);
@@ -390,12 +393,12 @@
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(148, 6);
this.toolStripSeparator2.Size = new System.Drawing.Size(142, 6);
//
// layoutLoad1
//
this.layoutLoad1.Name = "layoutLoad1";
this.layoutLoad1.Size = new System.Drawing.Size(151, 22);
this.layoutLoad1.Size = new System.Drawing.Size(145, 22);
this.layoutLoad1.Tag = "1";
this.layoutLoad1.Text = "Layout &1";
this.layoutLoad1.Click += new System.EventHandler(this.loadLayout_Click);
@@ -403,7 +406,7 @@
// layoutLoad2
//
this.layoutLoad2.Name = "layoutLoad2";
this.layoutLoad2.Size = new System.Drawing.Size(151, 22);
this.layoutLoad2.Size = new System.Drawing.Size(145, 22);
this.layoutLoad2.Tag = "2";
this.layoutLoad2.Text = "Layout &2";
this.layoutLoad2.Click += new System.EventHandler(this.loadLayout_Click);
@@ -411,7 +414,7 @@
// layoutLoad3
//
this.layoutLoad3.Name = "layoutLoad3";
this.layoutLoad3.Size = new System.Drawing.Size(151, 22);
this.layoutLoad3.Size = new System.Drawing.Size(145, 22);
this.layoutLoad3.Tag = "3";
this.layoutLoad3.Text = "Layout &3";
this.layoutLoad3.Click += new System.EventHandler(this.loadLayout_Click);
@@ -419,7 +422,7 @@
// layoutLoad4
//
this.layoutLoad4.Name = "layoutLoad4";
this.layoutLoad4.Size = new System.Drawing.Size(151, 22);
this.layoutLoad4.Size = new System.Drawing.Size(145, 22);
this.layoutLoad4.Tag = "4";
this.layoutLoad4.Text = "Layout &4";
this.layoutLoad4.Click += new System.EventHandler(this.loadLayout_Click);
@@ -427,7 +430,7 @@
// layoutLoad5
//
this.layoutLoad5.Name = "layoutLoad5";
this.layoutLoad5.Size = new System.Drawing.Size(151, 22);
this.layoutLoad5.Size = new System.Drawing.Size(145, 22);
this.layoutLoad5.Tag = "5";
this.layoutLoad5.Text = "Layout &5";
this.layoutLoad5.Click += new System.EventHandler(this.loadLayout_Click);
@@ -435,7 +438,7 @@
// layoutLoad6
//
this.layoutLoad6.Name = "layoutLoad6";
this.layoutLoad6.Size = new System.Drawing.Size(151, 22);
this.layoutLoad6.Size = new System.Drawing.Size(145, 22);
this.layoutLoad6.Tag = "6";
this.layoutLoad6.Text = "Layout &6";
this.layoutLoad6.Click += new System.EventHandler(this.loadLayout_Click);
@@ -443,68 +446,68 @@
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(200, 6);
this.toolStripSeparator1.Size = new System.Drawing.Size(189, 6);
//
// pythonShellToolStripMenuItem
//
this.pythonShellToolStripMenuItem.Name = "pythonShellToolStripMenuItem";
this.pythonShellToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.pythonShellToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.pythonShellToolStripMenuItem.Text = "P&ython Shell";
this.pythonShellToolStripMenuItem.Click += new System.EventHandler(this.pythonShellToolStripMenuItem_Click);
//
// eventViewerToolStripMenuItem
//
this.eventViewerToolStripMenuItem.Name = "eventViewerToolStripMenuItem";
this.eventViewerToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.eventViewerToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.eventViewerToolStripMenuItem.Text = "&Event Viewer";
this.eventViewerToolStripMenuItem.Click += new System.EventHandler(this.eventViewerToolStripMenuItem_Click);
//
// textureToolStripMenuItem
//
this.textureToolStripMenuItem.Name = "textureToolStripMenuItem";
this.textureToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.textureToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.textureToolStripMenuItem.Text = "&Texture Viewer";
this.textureToolStripMenuItem.Click += new System.EventHandler(this.textureToolStripMenuItem_Click);
//
// D3D11PipelineStateToolStripMenuItem
//
this.D3D11PipelineStateToolStripMenuItem.Name = "D3D11PipelineStateToolStripMenuItem";
this.D3D11PipelineStateToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.D3D11PipelineStateToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.D3D11PipelineStateToolStripMenuItem.Text = "&Pipeline State";
this.D3D11PipelineStateToolStripMenuItem.Click += new System.EventHandler(this.PipelineStateToolStripMenuItem_Click);
//
// aPIInspectorToolStripMenuItem
//
this.aPIInspectorToolStripMenuItem.Name = "aPIInspectorToolStripMenuItem";
this.aPIInspectorToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.aPIInspectorToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.aPIInspectorToolStripMenuItem.Text = "&API Inspector";
this.aPIInspectorToolStripMenuItem.Click += new System.EventHandler(this.APIInspectorToolStripMenuItem_Click);
//
// meshOutputToolStripMenuItem
//
this.meshOutputToolStripMenuItem.Name = "meshOutputToolStripMenuItem";
this.meshOutputToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.meshOutputToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.meshOutputToolStripMenuItem.Text = "&Mesh Output";
this.meshOutputToolStripMenuItem.Click += new System.EventHandler(this.meshOutputToolStripMenuItem_Click);
//
// debugMessagesToolStripMenuItem
//
this.debugMessagesToolStripMenuItem.Name = "debugMessagesToolStripMenuItem";
this.debugMessagesToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.debugMessagesToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.debugMessagesToolStripMenuItem.Text = "Log Errors and &Warnings";
this.debugMessagesToolStripMenuItem.Click += new System.EventHandler(this.debugMessagesToolStripMenuItem_Click);
//
// timelineToolStripMenuItem
//
this.timelineToolStripMenuItem.Name = "timelineToolStripMenuItem";
this.timelineToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.timelineToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.timelineToolStripMenuItem.Text = "T&imeline";
this.timelineToolStripMenuItem.Click += new System.EventHandler(this.timelineToolStripMenuItem_Click);
//
// statisticsViewerToolStripMenuItem
//
this.statisticsViewerToolStripMenuItem.Name = "statisticsViewerToolStripMenuItem";
this.statisticsViewerToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.statisticsViewerToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.statisticsViewerToolStripMenuItem.Text = "Statisti&cs Viewer";
this.statisticsViewerToolStripMenuItem.Click += new System.EventHandler(this.statisticsViewerToolStripMenuItem_Click);
//
@@ -514,36 +517,36 @@
this.resolveSymbolsToolStripMenuItem,
this.toolStripSeparator11,
this.optionsToolStripMenuItem,
this.manageReplayDevicesToolStripMenuItem});
this.manageRemote});
this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
this.toolsToolStripMenuItem.Size = new System.Drawing.Size(48, 20);
this.toolsToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.toolsToolStripMenuItem.Text = "&Tools";
//
// resolveSymbolsToolStripMenuItem
//
this.resolveSymbolsToolStripMenuItem.Name = "resolveSymbolsToolStripMenuItem";
this.resolveSymbolsToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
this.resolveSymbolsToolStripMenuItem.Size = new System.Drawing.Size(188, 22);
this.resolveSymbolsToolStripMenuItem.Text = "&Resolve Symbols";
this.resolveSymbolsToolStripMenuItem.Click += new System.EventHandler(this.resolveSymbolsToolStripMenuItem_Click);
//
// toolStripSeparator11
//
this.toolStripSeparator11.Name = "toolStripSeparator11";
this.toolStripSeparator11.Size = new System.Drawing.Size(195, 6);
this.toolStripSeparator11.Size = new System.Drawing.Size(185, 6);
//
// optionsToolStripMenuItem
//
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(188, 22);
this.optionsToolStripMenuItem.Text = "&Options";
this.optionsToolStripMenuItem.Click += new System.EventHandler(this.optionsToolStripMenuItem_Click);
//
// manageReplayDevicesToolStripMenuItem
//
this.manageReplayDevicesToolStripMenuItem.Name = "manageReplayDevicesToolStripMenuItem";
this.manageReplayDevicesToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
this.manageReplayDevicesToolStripMenuItem.Text = "&Manage Replay Devices";
this.manageReplayDevicesToolStripMenuItem.Click += new System.EventHandler(this.manageReplayDevicesToolStripMenuItem_Click);
this.manageRemote.Name = "manageRemote";
this.manageRemote.Size = new System.Drawing.Size(188, 22);
this.manageRemote.Text = "&Manage Remote Servers";
this.manageRemote.Click += new System.EventHandler(this.manageRemote_Click);
//
// helpToolStripMenuItem
//
@@ -581,6 +584,18 @@
this.viewLogFileToolStripMenuItem.Text = "View Diagnostic &Log File";
this.viewLogFileToolStripMenuItem.Click += new System.EventHandler(this.viewLogFileToolStripMenuItem_Click);
//
// showTipsToolStripMenuItem
//
this.showTipsToolStripMenuItem.Name = "showTipsToolStripMenuItem";
this.showTipsToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.showTipsToolStripMenuItem.Text = "Show &Tips";
this.showTipsToolStripMenuItem.Click += new System.EventHandler(this.showTipsToolStripMenuItem_Click);
//
// toolStripSeparator12
//
this.toolStripSeparator12.Name = "toolStripSeparator12";
this.toolStripSeparator12.Size = new System.Drawing.Size(189, 6);
//
// sendErrorReportToolStripMenuItem
//
this.sendErrorReportToolStripMenuItem.Name = "sendErrorReportToolStripMenuItem";
@@ -640,8 +655,8 @@
// openDialog
//
this.openDialog.DefaultExt = "rdc";
this.openDialog.Filter = "Capture Files (*.rdc, *.cap)|*.rdc;*.cap|Image Files|*.dds;*.hdr;*.exr;*.bmp;*.jpg;*.jpeg;*.png;*." +
"tga;*.gif;*.psd|All Files (*.*)|*.*";
this.openDialog.Filter = "Capture Files (*.rdc, *.cap)|*.rdc;*.cap|Image Files|*.dds;*.hdr;*.exr;*.bmp;*.jp" +
"g;*.jpeg;*.png;*.tga;*.gif;*.psd|All Files (*.*)|*.*";
this.openDialog.Title = "Select file to open";
//
// toolStripContainer1
@@ -674,7 +689,8 @@
this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.statusIcon,
this.statusText,
this.statusProgress});
this.statusProgress,
this.contextChooser});
this.statusStrip.Location = new System.Drawing.Point(0, 0);
this.statusStrip.Name = "statusStrip";
this.statusStrip.Size = new System.Drawing.Size(1272, 22);
@@ -693,7 +709,7 @@
//
this.statusText.DoubleClickEnabled = true;
this.statusText.Name = "statusText";
this.statusText.Size = new System.Drawing.Size(64, 17);
this.statusText.Size = new System.Drawing.Size(63, 17);
this.statusText.Text = "Status Text";
this.statusText.DoubleClick += new System.EventHandler(this.status_DoubleClick);
//
@@ -770,17 +786,30 @@
this.saveDialog.Filter = "Log Files (*.rdc)|*.rdc";
this.saveDialog.Title = "Save Log As";
//
// toolStripSeparator12
// contextChooser
//
this.toolStripSeparator12.Name = "toolStripSeparator12";
this.toolStripSeparator12.Size = new System.Drawing.Size(189, 6);
this.contextChooser.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.barhostToolStripMenuItem,
this.foohostToolStripMenuItem});
this.contextChooser.Image = global::renderdocui.Properties.Resources.disconnect;
this.contextChooser.ImageTransparentColor = System.Drawing.Color.Magenta;
this.contextChooser.Name = "contextChooser";
this.contextChooser.Size = new System.Drawing.Size(142, 20);
this.contextChooser.Text = "Replay Context: Local";
//
// showTipsToolStripMenuItem
// foohostToolStripMenuItem
//
this.showTipsToolStripMenuItem.Name = "showTipsToolStripMenuItem";
this.showTipsToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.showTipsToolStripMenuItem.Text = "Show &Tips";
this.showTipsToolStripMenuItem.Click += new System.EventHandler(this.showTipsToolStripMenuItem_Click);
this.foohostToolStripMenuItem.Image = global::renderdocui.Properties.Resources.cross;
this.foohostToolStripMenuItem.Name = "foohostToolStripMenuItem";
this.foohostToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
this.foohostToolStripMenuItem.Text = "foohost (Offline)";
//
// barhostToolStripMenuItem
//
this.barhostToolStripMenuItem.Image = global::renderdocui.Properties.Resources.tick;
this.barhostToolStripMenuItem.Name = "barhostToolStripMenuItem";
this.barhostToolStripMenuItem.Size = new System.Drawing.Size(154, 22);
this.barhostToolStripMenuItem.Text = "barhost (Online)";
//
// MainWindow
//
@@ -884,10 +913,13 @@
private System.Windows.Forms.ToolStripMenuItem sourceOnGithubToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem pythonShellToolStripMenuItem;
private System.Windows.Forms.ToolStripStatusLabel statusIcon;
private System.Windows.Forms.ToolStripMenuItem manageReplayDevicesToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem manageRemote;
private System.Windows.Forms.ToolStripMenuItem checkForUpdatesToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem showTipsToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator12;
private System.Windows.Forms.ToolStripMenuItem statisticsViewerToolStripMenuItem;
private System.Windows.Forms.ToolStripDropDownButton contextChooser;
private System.Windows.Forms.ToolStripMenuItem barhostToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem foohostToolStripMenuItem;
}
}
+9 -165
View File
@@ -74,9 +74,6 @@ namespace renderdocui.Windows
private List<LiveCapture> m_LiveCaptures = new List<LiveCapture>();
private renderdocplugin.ReplayManagerPlugin m_ReplayHost = null;
private string m_RemoteReplay = "";
private string InformationalVersion
{
get
@@ -268,12 +265,6 @@ namespace renderdocui.Windows
resolveSymbolsToolStripMenuItem.Enabled = false;
resolveSymbolsToolStripMenuItem.Text = "Resolve Symbols";
if (m_ReplayHost != null)
m_ReplayHost.CloseReplay();
m_ReplayHost = null;
m_RemoteReplay = "";
SetTitle();
}
@@ -588,8 +579,6 @@ namespace renderdocui.Windows
prefix = Path.GetFileName(filename);
if (m_Core.APIProps.degraded)
prefix += " !DEGRADED PERFORMANCE!";
if (m_RemoteReplay.Length > 0)
prefix += String.Format(" (Remote replay on {0})", m_RemoteReplay);
prefix += " - ";
}
@@ -623,144 +612,16 @@ namespace renderdocui.Windows
Thread thread = null;
if (!m_Core.Config.ReplayHosts.ContainsKey(driver) && driver.Trim().Length > 0)
m_Core.Config.ReplayHosts.Add(driver, "");
// if driver is empty something went wrong loading the log, let it be handled as usual
// below. Otherwise prompt to replay remotely.
if (driver.Length > 0 && (!support || m_Core.Config.ReplayHosts[driver].Length > 0))
// below. Otherwise indicate that support is missing.
if (driver.Length > 0 && !support)
{
string remoteMessage = String.Format("This log was captured with {0}", driver);
string remoteMessage = String.Format("This log was captured with {0} and cannot be replayed locally.\n\n", driver);
if(!support)
remoteMessage += " and cannot be replayed locally.\n";
else
remoteMessage += " and your settings say to replay this remotely.\n";
remoteMessage += "Try selecting a remote context in the status bar.";
if (m_Core.Config.ReplayHosts[driver].Length == 0)
remoteMessage += "Do you wish to select a remote host to replay on?\n\n" +
"You can set up a default host for this driver on the next screen.";
else
remoteMessage += String.Format("Would you like to launch replay on remote host {0}?\n\n" +
"You can change this default via Tools -> Manage Replay Devices.", m_Core.Config.ReplayHosts[driver]);
DialogResult res = MessageBox.Show(remoteMessage, "Launch remote replay?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
if (res == DialogResult.Yes)
{
if (m_Core.Config.ReplayHosts[driver].Length == 0)
{
(new Dialogs.ReplayHostManager(m_Core, this)).ShowDialog();
if (m_Core.Config.ReplayHosts[driver].Length == 0)
return;
}
m_RemoteReplay = m_Core.Config.ReplayHosts[driver];
var plugins = renderdocplugin.PluginHelpers.GetPlugins();
// search plugins for to find manager for this driver and launch replay
foreach (var plugin in plugins)
{
var replayman = renderdocplugin.PluginHelpers.GetPluginInterface<renderdocplugin.ReplayManagerPlugin>(plugin);
if (replayman != null && replayman.GetTargetType() == driver)
{
var targets = replayman.GetOnlineTargets();
if (targets.Contains(m_RemoteReplay))
{
replayman.RunReplay(m_RemoteReplay);
// save replay connection so we can close replay
m_ReplayHost = replayman;
break;
}
}
}
thread = Helpers.NewThread(new ThreadStart(() =>
{
string[] drivers = new string[0];
try
{
var dummy = StaticExports.CreateRemoteReplayConnection(m_RemoteReplay, 0);
drivers = dummy.RemoteSupportedReplays();
dummy.Shutdown();
}
catch (ApplicationException ex)
{
string errmsg = "Unknown error message";
if (ex.Data.Contains("status"))
errmsg = ((ReplayCreateStatus)ex.Data["status"]).Str();
MessageBox.Show(String.Format("Failed to fetch supported drivers on host {0}: {1}.\n\nCheck diagnostic log in Help menu for more details.", m_RemoteReplay, errmsg),
"Error getting driver list", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
// no drivers means we didn't connect
if (drivers.Length == 0)
{
}
else
{
bool found = false;
foreach (var d in drivers)
if (d == driver)
found = true;
if (!found)
{
MessageBox.Show(String.Format("Remote host {0} doesn't support {1}.", m_RemoteReplay, driver),
"Unsupported remote replay", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
string[] proxies = new string[0];
try
{
var dummy = StaticExports.CreateRemoteReplayConnection("-", 0);
proxies = dummy.LocalProxies();
dummy.Shutdown();
}
catch (ApplicationException ex)
{
string errmsg = "Unknown error message";
if (ex.Data.Contains("status"))
errmsg = ((ReplayCreateStatus)ex.Data["status"]).Str();
MessageBox.Show(String.Format("Failed to fetch local proxy drivers: {0}.\n\nCheck diagnostic log in Help menu for more details.", errmsg),
"Error getting driver list", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
if (proxies.Length > 0)
{
m_Core.Config.LocalProxy = Helpers.Clamp(m_Core.Config.LocalProxy, 0, proxies.Length - 1);
m_Core.LoadLogfile(m_Core.Config.LocalProxy, m_RemoteReplay, filename, temporary);
if (m_Core.LogLoaded)
return;
}
}
}
// clean up.
if (m_ReplayHost != null)
m_ReplayHost.CloseReplay();
m_RemoteReplay = "";
BeginInvoke(new Action(() =>
{
statusText.Text = "";
statusIcon.Image = null;
statusProgress.Visible = false;
}));
}));
}
else
{
return;
}
MessageBox.Show(remoteMessage, "Unsupported logfile type", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
else
{
@@ -969,7 +830,7 @@ namespace renderdocui.Windows
private void attachToInstanceToolStripMenuItem_Click(object sender, EventArgs e)
{
(new Dialogs.RemoteHostSelect(m_Core, this)).ShowDialog();
(new Dialogs.RemoteManager(m_Core, this)).ShowDialog();
}
private void injectIntoProcessToolStripMenuItem_Click(object sender, EventArgs e)
@@ -1499,26 +1360,9 @@ namespace renderdocui.Windows
StaticExports.TriggerExceptionHandler(IntPtr.Zero, false);
}
private void manageReplayDevicesToolStripMenuItem_Click(object sender, EventArgs e)
private void manageRemote_Click(object sender, EventArgs e)
{
(new Dialogs.ReplayHostManager(m_Core, this)).ShowDialog();
}
private void launchReplayHostToolStripMenuItem_Click(object sender, EventArgs e)
{
bool killReplay = false;
Thread thread = Helpers.NewThread(new ThreadStart(() =>
{
StaticExports.BecomeRemoteServer("", 0, ref killReplay);
}));
thread.Start();
MessageBox.Show("Remote Replay is now running. Click OK to close.", "Remote replay",
MessageBoxButtons.OK, MessageBoxIcon.Information);
killReplay = true;
(new Dialogs.RemoteManager(m_Core, this)).ShowDialog();
}
private void viewDocsToolStripMenuItem_Click(object sender, EventArgs e)
+5 -14
View File
@@ -235,11 +235,11 @@
<Compile Include="Windows\Dialogs\PythonShell.Designer.cs">
<DependentUpon>PythonShell.cs</DependentUpon>
</Compile>
<Compile Include="Windows\Dialogs\RemoteHostSelect.cs">
<Compile Include="Windows\Dialogs\RemoteManager.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\Dialogs\RemoteHostSelect.Designer.cs">
<DependentUpon>RemoteHostSelect.cs</DependentUpon>
<Compile Include="Windows\Dialogs\RemoteManager.Designer.cs">
<DependentUpon>RemoteManager.cs</DependentUpon>
</Compile>
<Compile Include="Windows\Dialogs\OrderedListEditor.cs">
<SubType>Form</SubType>
@@ -247,12 +247,6 @@
<Compile Include="Windows\Dialogs\OrderedListEditor.Designer.cs">
<DependentUpon>OrderedListEditor.cs</DependentUpon>
</Compile>
<Compile Include="Windows\Dialogs\ReplayHostManager.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\Dialogs\ReplayHostManager.Designer.cs">
<DependentUpon>ReplayHostManager.cs</DependentUpon>
</Compile>
<Compile Include="Windows\Dialogs\SettingsDialog.cs">
<SubType>Form</SubType>
</Compile>
@@ -409,11 +403,8 @@
<EmbeddedResource Include="Windows\Dialogs\OrderedListEditor.resx">
<DependentUpon>OrderedListEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\Dialogs\RemoteHostSelect.resx">
<DependentUpon>RemoteHostSelect.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\Dialogs\ReplayHostManager.resx">
<DependentUpon>ReplayHostManager.cs</DependentUpon>
<EmbeddedResource Include="Windows\Dialogs\RemoteManager.resx">
<DependentUpon>RemoteManager.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\Dialogs\SettingsDialog.resx">
<DependentUpon>SettingsDialog.cs</DependentUpon>