Author: cwittich Date: Wed Aug 20 13:10:51 2008 New Revision: 35483
URL: http://svn.reactos.org/svn/reactos?rev=35483&view=rev Log: add support for edit->copy menu
Modified: trunk/tools/reactosdbg/RosDBG/MainWindow.Designer.cs trunk/tools/reactosdbg/RosDBG/MainWindow.cs trunk/tools/reactosdbg/RosDBG/RawTraffic.Designer.cs trunk/tools/reactosdbg/RosDBG/RawTraffic.cs trunk/tools/reactosdbg/RosDBG/ReactOSWeb.cs trunk/tools/reactosdbg/RosDBG/SourceView.Designer.cs trunk/tools/reactosdbg/RosDBG/SourceView.cs trunk/tools/reactosdbg/RosDBG/SourceView.resx
Modified: trunk/tools/reactosdbg/RosDBG/MainWindow.Designer.cs URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/MainWindow.... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/MainWindow.Designer.cs [iso-8859-1] (original) +++ trunk/tools/reactosdbg/RosDBG/MainWindow.Designer.cs [iso-8859-1] Wed Aug 20 13:10:51 2008 @@ -200,6 +200,7 @@ this.copyToolStripMenuItem.Name = "copyToolStripMenuItem"; this.copyToolStripMenuItem.Size = new System.Drawing.Size(187, 22); this.copyToolStripMenuItem.Text = "Copy"; + this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click); // // pasteToInteractionToolStripMenuItem //
Modified: trunk/tools/reactosdbg/RosDBG/MainWindow.cs URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/MainWindow.... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/MainWindow.cs [iso-8859-1] (original) +++ trunk/tools/reactosdbg/RosDBG/MainWindow.cs [iso-8859-1] Wed Aug 20 13:10:51 2008 @@ -28,7 +28,8 @@ SymbolContext mSymbolContext; Dictionary<uint, Module> mModules = new Dictionary<uint, Module>(); Dictionary<string, SourceView> mSourceFiles = new Dictionary<string, SourceView>(); - + public event CopyEventHandler CopyEvent; + public DebugConnection DebugConnection { get { return mConnection; } @@ -96,6 +97,11 @@ mConnection.DebugModuleChangedEvent += DebugModuleChangedEvent; ComposeTitleString(); mSymbolContext.ReactosOutputPath = Settings.OutputDirectory; + } + + void CanCopyChanged(object sender, CanCopyChangedEventArgs args) + { + copyToolStripMenuItem.Enabled = args.Enabled; }
void DebugModuleChangedEvent(object sender, DebugModuleChangedEventArgs args) @@ -169,6 +175,12 @@ tp.Text = ctrl.Tag != null ? ctrl.Tag.ToString() : ctrl.GetType().Name; ctrl.Dock = DockStyle.Fill; WorkTabs.Controls.Add(tp); + + if (ctrl.GetType() == typeof(SourceView)) + ((SourceView)ctrl).CanCopyChangedEvent += CanCopyChanged; + else if (ctrl.GetType() == typeof(RawTraffic)) + ((RawTraffic)ctrl).CanCopyChangedEvent += CanCopyChanged; + ResumeLayout(); }
@@ -331,6 +343,13 @@ mConnection.Start(targetSelect.PipeName); } } + + private void copyToolStripMenuItem_Click(object sender, EventArgs e) + { + if (CopyEvent != null) + CopyEvent(this, new CopyEventArgs(WorkTabs.SelectedTab.Controls[0])); + } + }
public class InteractiveInputEventArgs : EventArgs @@ -339,4 +358,25 @@ public string Command { get { return mCommand; } } public InteractiveInputEventArgs(object sender, string cmd) { mCommand = cmd; } } + + public class CanCopyChangedEventArgs : EventArgs + { + public readonly bool Enabled; + public CanCopyChangedEventArgs(bool enabled) + { + Enabled = enabled; + } + } + + public class CopyEventArgs : EventArgs + { + public readonly object Obj; + public CopyEventArgs(object obj) + { + Obj = obj; + } + } + + public delegate void CanCopyChangedEventHandler(object sender, CanCopyChangedEventArgs args); + public delegate void CopyEventHandler(object sender, CopyEventArgs args); }
Modified: trunk/tools/reactosdbg/RosDBG/RawTraffic.Designer.cs URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/RawTraffic.... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/RawTraffic.Designer.cs [iso-8859-1] (original) +++ trunk/tools/reactosdbg/RosDBG/RawTraffic.Designer.cs [iso-8859-1] Wed Aug 20 13:10:51 2008 @@ -43,6 +43,7 @@ this.RawTrafficText.Size = new System.Drawing.Size(150, 150); this.RawTrafficText.TabIndex = 0; this.RawTrafficText.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.RawTrafficText_KeyPress); + this.RawTrafficText.MouseUp += new System.Windows.Forms.MouseEventHandler(this.RawTrafficText_MouseUp); // // RawTraffic //
Modified: trunk/tools/reactosdbg/RosDBG/RawTraffic.cs URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/RawTraffic.... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/RawTraffic.cs [iso-8859-1] (original) +++ trunk/tools/reactosdbg/RosDBG/RawTraffic.cs [iso-8859-1] Wed Aug 20 13:10:51 2008 @@ -15,6 +15,13 @@ { DebugConnection mConnection; List<string> textToAdd = new List<string>(); + public event CanCopyChangedEventHandler CanCopyChangedEvent; + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + ((MainWindow)this.ParentForm).CopyEvent += CopyEvent; + }
public void SetDebugConnection(DebugConnection conn) { @@ -43,6 +50,12 @@ Invoke(Delegate.CreateDelegate(typeof(NoParamsDelegate), this, "UpdateText")); }
+ void CopyEvent(object sender, CopyEventArgs args) + { + if (args.Obj == this) + Clipboard.SetText(RawTrafficText.SelectedText); + } + public RawTraffic() { InitializeComponent(); @@ -53,5 +66,11 @@ { mConnection.Debugger.Write("" + e.KeyChar); } + + private void RawTrafficText_MouseUp(object sender, MouseEventArgs e) + { + if (CanCopyChangedEvent != null) + CanCopyChangedEvent(this, new CanCopyChangedEventArgs(RawTrafficText.SelectionLength != 0)); + } } }
Modified: trunk/tools/reactosdbg/RosDBG/ReactOSWeb.cs URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/ReactOSWeb.... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/ReactOSWeb.cs [iso-8859-1] (original) +++ trunk/tools/reactosdbg/RosDBG/ReactOSWeb.cs [iso-8859-1] Wed Aug 20 13:10:51 2008 @@ -69,8 +69,7 @@ { navForward.Enabled = BrowserView.CanGoForward; } - - + private void AddressInput_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Return)
Modified: trunk/tools/reactosdbg/RosDBG/SourceView.Designer.cs URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/SourceView.... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/SourceView.Designer.cs [iso-8859-1] (original) +++ trunk/tools/reactosdbg/RosDBG/SourceView.Designer.cs [iso-8859-1] Wed Aug 20 13:10:51 2008 @@ -30,10 +30,10 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SourceView)); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); - this.SourceCode = new System.Windows.Forms.RichTextBox(); this.toolStrip1 = new System.Windows.Forms.ToolStrip(); this.btnCopy = new System.Windows.Forms.ToolStripButton(); this.btnBreakpoint = new System.Windows.Forms.ToolStripButton(); + this.SourceCode = new System.Windows.Forms.RichTextBox(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.SuspendLayout(); @@ -58,17 +58,6 @@ this.splitContainer1.Size = new System.Drawing.Size(497, 308); this.splitContainer1.SplitterDistance = 25; this.splitContainer1.TabIndex = 2; - // - // SourceCode - // - this.SourceCode.Dock = System.Windows.Forms.DockStyle.Fill; - this.SourceCode.Location = new System.Drawing.Point(0, 0); - this.SourceCode.Name = "SourceCode"; - this.SourceCode.ReadOnly = true; - this.SourceCode.Size = new System.Drawing.Size(497, 279); - this.SourceCode.TabIndex = 3; - this.SourceCode.Text = ""; - this.SourceCode.SelectionChanged += new System.EventHandler(this.SourceCode_SelectionChanged); // // toolStrip1 // @@ -102,6 +91,17 @@ this.btnBreakpoint.Size = new System.Drawing.Size(23, 22); this.btnBreakpoint.ToolTipText = "Set Breakpoint"; // + // SourceCode + // + this.SourceCode.Dock = System.Windows.Forms.DockStyle.Fill; + this.SourceCode.Location = new System.Drawing.Point(0, 0); + this.SourceCode.Name = "SourceCode"; + this.SourceCode.ReadOnly = true; + this.SourceCode.Size = new System.Drawing.Size(497, 279); + this.SourceCode.TabIndex = 3; + this.SourceCode.Text = ""; + this.SourceCode.SelectionChanged += new System.EventHandler(this.SourceCode_SelectionChanged); + // // SourceView // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -123,9 +123,9 @@
private System.Windows.Forms.SplitContainer splitContainer1; private System.Windows.Forms.ToolStrip toolStrip1; - private System.Windows.Forms.RichTextBox SourceCode; private System.Windows.Forms.ToolStripButton btnCopy; private System.Windows.Forms.ToolStripButton btnBreakpoint; + private System.Windows.Forms.RichTextBox SourceCode;
} }
Modified: trunk/tools/reactosdbg/RosDBG/SourceView.cs URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/SourceView.... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/SourceView.cs [iso-8859-1] (original) +++ trunk/tools/reactosdbg/RosDBG/SourceView.cs [iso-8859-1] Wed Aug 20 13:10:51 2008 @@ -10,9 +10,12 @@
namespace RosDBG { + public partial class SourceView : UserControl { string mSourceFile; + public event CanCopyChangedEventHandler CanCopyChangedEvent; + public string SourceFile { get { return mSourceFile; } @@ -27,6 +30,7 @@ { base.OnLoad(e); SourceCode.BackColor = Color.FromKnownColor(KnownColor.Window); + ((MainWindow)this.ParentForm).CopyEvent += CopyEvent; }
public void ScrollTo(int line) @@ -81,14 +85,25 @@ } }
+ void CopyEvent(object sender, CopyEventArgs args) + { + if (args.Obj == this) + Clipboard.SetText(SourceCode.SelectedText); + } + private void SourceCode_SelectionChanged(object sender, EventArgs e) { btnCopy.Enabled = (SourceCode.SelectionLength > 0); - } + + if (CanCopyChangedEvent != null) + CanCopyChangedEvent(this, new CanCopyChangedEventArgs(btnCopy.Enabled)); + }
private void btnCopy_Click(object sender, EventArgs e) { - Clipboard.SetText(SourceCode.SelectedText); + CopyEvent(this, new CopyEventArgs(this)); } + } + }
Modified: trunk/tools/reactosdbg/RosDBG/SourceView.resx URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/SourceView.... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/SourceView.resx [iso-8859-1] (original) +++ trunk/tools/reactosdbg/RosDBG/SourceView.resx [iso-8859-1] Wed Aug 20 13:10:51 2008 @@ -139,18 +139,18 @@ <data name="btnBreakpoint.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAlNJREFUOE+10l9I - U1EcB3Bfe/MhCHzqoYeKIpD+WJi0kolUuAos2EgykjGa5eya0839uc47zf2rrc1tbW5NclKsQRIKKj4E - abFypW1amKvG1Mq5TMnyfrvXIJBs2kMHzsOPc36f3+F3fhkZ/2sNPuraccuhEfgcWkglF7f2BQKZ667V - rCGO+N0Ubtspem5cTbdayHF/K4Vgu0O6LsTb0kDPT5Bgq2PKCI+NxMKEZjkODfYcWBNxmZVz9KSBSaB+ - ARY12Nhra4BNJ4PHri9KizhNdUyCHl6rCpg0wmWSg2Ygt0WFr29JWHXSnrSAUS1erui6LgWdMMLWdAVL - DGhtJLAY06K+6lx0BeA2K+Uuswrsfhj0XKOIEiZRD7uhAovvmnBTI8Ti+0Y011zA/EQ9JKXHR34Dfp1u - g9emQfI1yRyS6HApIRPy8CPehO72y0hF5ei/K8aXNwq03yhDKlILEZ8bXvECn51SS/iHMD2ixOyYDFYl - DwsxCjNjaiRHZZiJSPE5QiAZlSIeEuH8idwnf/Sgzd5ILCPhSkw9K8fMKyVSo2rMRhT4OFyLxNBVJEKX - EO06DcHRff2rNtFhkt9hkQ8DQsQHyzHFJH0arsH0i2rEHpfh+b0C9Dnz6DOFu3tXBQIBQ2ZVCZdkkaEH - pxAK8OiXnSfp8P1jeOo/jAFfLrTi3G+Ss1zrX7+xrVmxkWmigkU6dPl0dwuH7nflodOcs1Rdmv298OB2 - EKX5WWnnQCHibqkrL64UFO0P5uzMWtizbRM4ezeP8AuynRXFnF1rjvK/XPgJ7YdwWhzybo4AAAAASUVO - RK5CYII= + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAlRJREFUOE+10l9I + U1EcB3Bfe/MhiHrqoYeKIorEiiVZtooKR4EFG8mKZImunN1sunm33a5X16ZbzXbbdLoxaYtqCkYYaOwh + yFUrFW3T/mk1/FPNP+XI8n67d0EgmdpDB87Dj3N+n9/hd34pKf9rhR62bah30jKvsxJqVcHaB4FA6pJr + mWhij7+Bged6BTf1Ws812qg3/kYGLT6nekmIm6W56UEKQnWMWuBmKSQG6WQcDrXvWBSpt5FfuJEaPoH5 + BdQaIMQetgKsWQO3ozp7QaTOWs4nVMNj1wMjFrisWnA81FCrx9e3FOxmdfuCgMVQmKzouqIGN2wBazyP + WR60VxGYGaoERcijc4AGm07rsukh7HvN7ssMkcsnVsNRU4SZd0ZcoxWYeV8FU+lpTA9egkp+uO834Deb + l3lYGuMvKf6Qwk2XDhqFBD9iRtz3ncNkVIvgrUJMvSLhu5qHyUgZzkjF3XNe4HUwBpV0F8b6dJgY0MCu + kyAxxCA+YMB4vwbxiBqfIwTGo2rEwvk4JRE9/qMHTY4qIol0F2P0mRLxFzpM9hswESHxsbcMw10lGA6f + RbTtGGQH04PzNtFp1d4QkA+dCsRCSozySZ96SzHWcxFDj/Lw/PY+dDgzuOP7t3bMCwQCNakXcsWUgHS1 + HsXTOxKup/UI1918CE/8u9HpFaGyQPRNdWKv/a/f2GQil/NNJAXEb8ri2thMLujKwF3bttkS+ebvB3au + B3Eya9WCc0Dmi9eUK3OKZdnbW9I3rkykrVuBzLTVfVLxlrqinMxNi47yv1z4CauDcDT2mV8JAAAAAElF + TkSuQmCC </value> </data> </root>