Author: cwittich Date: Sat Aug 9 10:36:24 2008 New Revision: 35237
URL: http://svn.reactos.org/svn/reactos?rev=35237&view=rev Log: -implement opening source files -implement Firefox like Tab handling (closing with middle mouse button, context menu on right button)
Modified: trunk/tools/reactosdbg/RosDBG/MainWindow.Designer.cs trunk/tools/reactosdbg/RosDBG/MainWindow.cs trunk/tools/reactosdbg/RosDBG/MainWindow.resx 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] Sat Aug 9 10:36:24 2008 @@ -28,6 +28,7 @@ /// </summary> private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -36,6 +37,7 @@ this.connectSerialToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.connectPipeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.connectTCPIPToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); this.symbolDirectoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -59,7 +61,8 @@ this.WorkTabs = new System.Windows.Forms.TabControl(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.RunStatus = new System.Windows.Forms.ToolStripStatusLabel(); - this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.contextMenuTabStrip = new System.Windows.Forms.ContextMenuStrip(this.components); + this.closeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.SuspendLayout(); @@ -68,6 +71,7 @@ this.splitContainer2.Panel2.SuspendLayout(); this.splitContainer2.SuspendLayout(); this.statusStrip1.SuspendLayout(); + this.contextMenuTabStrip.SuspendLayout(); this.SuspendLayout(); // // splitContainer1 @@ -121,7 +125,6 @@ // // openSourceFileToolStripMenuItem // - this.openSourceFileToolStripMenuItem.Enabled = false; this.openSourceFileToolStripMenuItem.Name = "openSourceFileToolStripMenuItem"; this.openSourceFileToolStripMenuItem.Size = new System.Drawing.Size(175, 22); this.openSourceFileToolStripMenuItem.Text = "Open Source File ..."; @@ -152,6 +155,11 @@ this.connectTCPIPToolStripMenuItem.Size = new System.Drawing.Size(175, 22); this.connectTCPIPToolStripMenuItem.Text = "Connect TCP/IP ..."; this.connectTCPIPToolStripMenuItem.Click += new System.EventHandler(this.connectTCPIPToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(172, 6); // // symbolDirectoryToolStripMenuItem // @@ -324,6 +332,7 @@ this.WorkTabs.SelectedIndex = 0; this.WorkTabs.Size = new System.Drawing.Size(529, 357); this.WorkTabs.TabIndex = 1; + this.WorkTabs.MouseClick += new System.Windows.Forms.MouseEventHandler(this.WorkTabs_MouseClick); // // statusStrip1 // @@ -340,10 +349,19 @@ this.RunStatus.Name = "RunStatus"; this.RunStatus.Size = new System.Drawing.Size(0, 17); // - // toolStripMenuItem1 - // - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(172, 6); + // contextMenuTabStrip + // + this.contextMenuTabStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.closeToolStripMenuItem}); + this.contextMenuTabStrip.Name = "contextMenuTabStrip"; + this.contextMenuTabStrip.Size = new System.Drawing.Size(153, 48); + // + // closeToolStripMenuItem + // + this.closeToolStripMenuItem.Name = "closeToolStripMenuItem"; + this.closeToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.closeToolStripMenuItem.Text = "&Close"; + this.closeToolStripMenuItem.Click += new System.EventHandler(this.closeToolStripMenuItem_Click); // // MainWindow // @@ -366,6 +384,7 @@ this.splitContainer2.ResumeLayout(false); this.statusStrip1.ResumeLayout(false); this.statusStrip1.PerformLayout(); + this.contextMenuTabStrip.ResumeLayout(false); this.ResumeLayout(false);
} @@ -404,6 +423,8 @@ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ContextMenuStrip contextMenuTabStrip; + private System.Windows.Forms.ToolStripMenuItem closeToolStripMenuItem;
} }
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] Sat Aug 9 10:36:24 2008 @@ -18,6 +18,7 @@
public partial class MainWindow : Form, IShell { + Point mMousePosition; bool mRunning; DebugConnection.Mode mConnectionMode; ulong mCurrentEip; @@ -50,18 +51,22 @@ void TryToDisplaySource() { if (mCurrentFile == null || mCurrentFile == "unknown") return; - string finalFileName = Path.Combine(mSourceRoot, mCurrentFile); + OpenSourceFile(Path.Combine(mSourceRoot, mCurrentFile)); + } + + private void OpenSourceFile(string FileName) + { SourceView theSourceView; - if (File.Exists(finalFileName)) - { - if (mSourceFiles.TryGetValue(finalFileName, out theSourceView)) + if (File.Exists(FileName)) + { + if (mSourceFiles.TryGetValue(FileName, out theSourceView)) Rehighlight(theSourceView); else { - theSourceView = new SourceView(); - mSourceFiles[finalFileName] = theSourceView; + theSourceView = new SourceView(Path.GetFileName(FileName)); + mSourceFiles[FileName] = theSourceView; AddTab(theSourceView); - theSourceView.SourceFile = finalFileName; + theSourceView.SourceFile = FileName; Rehighlight(theSourceView); } } @@ -268,10 +273,44 @@ OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.Filter = "Sourcefiles (*.c;*.cpp)|*.c;*.cpp"; if (fileDialog.ShowDialog() == DialogResult.OK) - { - Console.WriteLine("open sourcefile"); - } - } + OpenSourceFile(fileDialog.FileName); + } + + private void WorkTabs_MouseClick(object sender, MouseEventArgs e) + { + switch (e.Button) + { + case MouseButtons.Right: + contextMenuTabStrip.Show(WorkTabs.PointToScreen(e.Location)); + mMousePosition = e.Location; + break; + case MouseButtons.Middle: + SelectTabFromPosition(e.Location); + closeCurrentTabToolStripMenuItem_Click(this, null); + break; + default: + break; + } + } + + private void SelectTabFromPosition(Point Position) + { + for (int i = 0; i < WorkTabs.TabCount; i++) + { + if (WorkTabs.GetTabRect(i).Contains(Position)) + { + if (WorkTabs.SelectedIndex != i) + WorkTabs.SelectTab(i); + break; + } + } + } + + private void closeToolStripMenuItem_Click(object sender, EventArgs e) + { + SelectTabFromPosition(mMousePosition); + closeCurrentTabToolStripMenuItem_Click(this, null); + }
}
Modified: trunk/tools/reactosdbg/RosDBG/MainWindow.resx URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/MainWindow.... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/MainWindow.resx [iso-8859-1] (original) +++ trunk/tools/reactosdbg/RosDBG/MainWindow.resx [iso-8859-1] Sat Aug 9 10:36:24 2008 @@ -123,4 +123,7 @@ <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>132, 17</value> </metadata> + <metadata name="contextMenuTabStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>248, 17</value> + </metadata> </root>
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] Sat Aug 9 10:36:24 2008 @@ -28,8 +28,36 @@ /// </summary> private void InitializeComponent() { + 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.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.toolStrip1.SuspendLayout(); this.SuspendLayout(); + // + // splitContainer1 + // + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer1.Location = new System.Drawing.Point(0, 0); + this.splitContainer1.Name = "splitContainer1"; + this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.toolStrip1); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.SourceCode); + this.splitContainer1.Size = new System.Drawing.Size(497, 308); + this.splitContainer1.SplitterDistance = 25; + this.splitContainer1.TabIndex = 2; // // SourceCode // @@ -37,23 +65,67 @@ 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, 308); - this.SourceCode.TabIndex = 0; + 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 + // + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btnCopy, + this.btnBreakpoint}); + this.toolStrip1.Location = new System.Drawing.Point(0, 0); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(497, 25); + this.toolStrip1.TabIndex = 0; + this.toolStrip1.Text = "toolStrip1"; + // + // btnCopy + // + this.btnCopy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btnCopy.Enabled = false; + this.btnCopy.Image = ((System.Drawing.Image)(resources.GetObject("btnCopy.Image"))); + this.btnCopy.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnCopy.Name = "btnCopy"; + this.btnCopy.Size = new System.Drawing.Size(23, 22); + this.btnCopy.ToolTipText = "Copy"; + this.btnCopy.Click += new System.EventHandler(this.btnCopy_Click); + // + // btnBreakpoint + // + this.btnBreakpoint.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btnBreakpoint.Enabled = false; + this.btnBreakpoint.Image = ((System.Drawing.Image)(resources.GetObject("btnBreakpoint.Image"))); + this.btnBreakpoint.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnBreakpoint.Name = "btnBreakpoint"; + this.btnBreakpoint.Size = new System.Drawing.Size(23, 22); + this.btnBreakpoint.ToolTipText = "Set Breakpoint"; // // SourceView // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.SourceCode); + this.Controls.Add(this.splitContainer1); this.Name = "SourceView"; this.Size = new System.Drawing.Size(497, 308); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel1.PerformLayout(); + this.splitContainer1.Panel2.ResumeLayout(false); + this.splitContainer1.ResumeLayout(false); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); this.ResumeLayout(false);
}
#endregion
+ 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; + } }
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] Sat Aug 9 10:36:24 2008 @@ -59,6 +59,12 @@ InitializeComponent(); }
+ public SourceView(string FileName) + { + InitializeComponent(); + this.Tag = FileName; + } + public void UpdateSourceCode() { SourceCode.Clear(); @@ -74,5 +80,15 @@ SourceCode.Text = "Could not load " + mSourceFile + ": " + ex.Message + "\n"; } } + + private void SourceCode_SelectionChanged(object sender, EventArgs e) + { + btnCopy.Enabled = (SourceCode.SelectionLength > 0); + } + + private void btnCopy_Click(object sender, EventArgs e) + { + Clipboard.SetText(SourceCode.SelectedText); + } } }
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] Sat Aug 9 10:36:24 2008 @@ -117,4 +117,40 @@ <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> + <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> + <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <data name="btnCopy.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAehJREFUOE+t099L + U3EYx3H/lFKGZDdB7K6biDKlwCDxooJAk652oVddRYZBJjMWOJ0La5ayzc70RKSLlKlraTJzrl+TlkFu + MJUdnc7pZu92viPXFm1BPfC5+z6v7/N8D6ek5F9LnviIGmncL2Id8dInv+ZOt1z1V7banF+WYQ+NLY/R + VjccKYo4xvw5/am973T2v8Dp9nOhqaM4Yh2dE4AzANJb8AUV7lmeI00p2Cei2FxRHoxGMQytiVxqXz6W + M1Wf7NmfYGc3hbKRIBSJCSC/WgdW0F5xc7RxMouY7S5xrte9i35E4Ya0TPPDIP0vV38DmkwR5GmFw3XD + VNTKGcSY3lfdeyueZCUaZym0zvvgKuZnYQG0SSkR3+I6l/VhKuqecuj8IOU1jxCAuu92Irl/s84c4Krx + HXdtSzkTKJtJFr9t417YwCTNojl7PwsosQQfvkSY+xTC4/vK+JvPtPRmPu/1gRg6Y5iL7QHO3ZwXMUkz + aKq7soC2qp78NBvmBZBMrxeJJlkIbjHmVXBMrtE96KGs0pAB/lQNrdMC+PXmnxN02V9RelJfGKi95iK+ + s4d5yEuPYxbTkxlxs9pstE5x8MTtwkClzpl+bZtIeY0FzZkeyk53UnqqI93cxoHjtwoDRf+B/3XgB/HZ + 2qt308hsAAAAAElFTkSuQmCC +</value> + </data> + <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= +</value> + </data> </root>