Author: arty Date: Fri Aug 1 02:19:49 2008 New Revision: 34990
URL: http://svn.reactos.org/svn/reactos?rev=34990&view=rev Log: Simple settings window with directory chooser. Avoids some embarassment.
Added: trunk/tools/reactosdbg/RosDBG/DirectoryChooser.Designer.cs trunk/tools/reactosdbg/RosDBG/DirectoryChooser.cs trunk/tools/reactosdbg/RosDBG/DirectoryChooser.resx trunk/tools/reactosdbg/RosDBG/Settings.Designer.cs trunk/tools/reactosdbg/RosDBG/Settings.cs trunk/tools/reactosdbg/RosDBG/Settings.resx Modified: trunk/tools/reactosdbg/RosDBG/MainWindow.Designer.cs trunk/tools/reactosdbg/RosDBG/MainWindow.cs trunk/tools/reactosdbg/RosDBG/RosDBG.csproj
Added: trunk/tools/reactosdbg/RosDBG/DirectoryChooser.Designer.cs URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/DirectoryCh... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/DirectoryChooser.Designer.cs (added) +++ trunk/tools/reactosdbg/RosDBG/DirectoryChooser.Designer.cs [iso-8859-1] Fri Aug 1 02:19:49 2008 @@ -1,0 +1,115 @@ +namespace RosDBG +{ + partial class DirectoryChooser + { + /// <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() + { + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.DirectoryTree = new System.Windows.Forms.TreeView(); + this.OKButton = new System.Windows.Forms.Button(); + this.CancelButton = new System.Windows.Forms.Button(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.SuspendLayout(); + // + // splitContainer1 + // + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; + this.splitContainer1.IsSplitterFixed = true; + 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.DirectoryTree); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.OKButton); + this.splitContainer1.Panel2.Controls.Add(this.CancelButton); + this.splitContainer1.Size = new System.Drawing.Size(292, 269); + this.splitContainer1.SplitterDistance = 235; + this.splitContainer1.TabIndex = 0; + // + // DirectoryTree + // + this.DirectoryTree.Dock = System.Windows.Forms.DockStyle.Fill; + this.DirectoryTree.Location = new System.Drawing.Point(0, 0); + this.DirectoryTree.Name = "DirectoryTree"; + this.DirectoryTree.Size = new System.Drawing.Size(292, 235); + this.DirectoryTree.TabIndex = 0; + this.DirectoryTree.AfterCollapse += new System.Windows.Forms.TreeViewEventHandler(this.DirectoryTree_AfterCollapse); + this.DirectoryTree.AfterExpand += new System.Windows.Forms.TreeViewEventHandler(this.DirectoryTree_AfterExpand); + // + // OKButton + // + this.OKButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.OKButton.Location = new System.Drawing.Point(133, 3); + this.OKButton.Name = "OKButton"; + this.OKButton.Size = new System.Drawing.Size(75, 23); + this.OKButton.TabIndex = 1; + this.OKButton.Text = "OK"; + this.OKButton.UseVisualStyleBackColor = true; + this.OKButton.Click += new System.EventHandler(this.OKButton_Click); + // + // CancelButton + // + this.CancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.CancelButton.Location = new System.Drawing.Point(214, 3); + this.CancelButton.Name = "CancelButton"; + this.CancelButton.Size = new System.Drawing.Size(75, 23); + this.CancelButton.TabIndex = 0; + this.CancelButton.Text = "Cancel"; + this.CancelButton.UseVisualStyleBackColor = true; + this.CancelButton.Click += new System.EventHandler(this.CancelButton_Click); + // + // DirectoryChooser + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(292, 269); + this.Controls.Add(this.splitContainer1); + this.Name = "DirectoryChooser"; + this.Text = "DirectoryChooser"; + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + this.splitContainer1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.TreeView DirectoryTree; + private System.Windows.Forms.Button OKButton; + private System.Windows.Forms.Button CancelButton; + } +}
Added: trunk/tools/reactosdbg/RosDBG/DirectoryChooser.cs URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/DirectoryCh... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/DirectoryChooser.cs (added) +++ trunk/tools/reactosdbg/RosDBG/DirectoryChooser.cs [iso-8859-1] Fri Aug 1 02:19:49 2008 @@ -1,0 +1,139 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.Design; +using System.Drawing.Design; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.IO; + +namespace RosDBG +{ + public partial class DirectoryChooser : Form + { + Dictionary<string, TreeNode> mDirectories = new Dictionary<string, TreeNode>(); + + public string Value + { + get + { + TreeNode selected = DirectoryTree.SelectedNode; + if (selected == null) + return Path.GetDirectoryName(Application.ExecutablePath); + else + return (string)selected.Tag; + } + set + { + TreeNode tn = ShowNode(value); + DirectoryTree.SelectedNode = tn; + tn.EnsureVisible(); + } + } + + public DirectoryChooser() + { + InitializeComponent(); + DirectoryTree.Nodes.Clear(); + foreach (DriveInfo drive in DriveInfo.GetDrives()) + { + ShowNode(drive.RootDirectory.FullName); + } + } + + private void OKButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.OK; + Close(); + } + + private void CancelButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); + } + + void ExpandNode(TreeNode node, string dir) + { + try + { + if (node.Nodes.Count == 1 && node.Nodes[0].Text == "...") + { + node.Nodes.Clear(); + + foreach (string subdir in Directory.GetDirectories(dir)) + { + TreeNode newNode = new TreeNode(Path.GetFileName(subdir)); + newNode.Tag = subdir; + newNode.Nodes.Add("..."); + mDirectories[subdir.ToLower()] = newNode; + node.Nodes.Add(newNode); + } + } + } + catch (IOException) + { + } + } + + TreeNode ShowNode(string dir) + { + string parentDir = Path.GetDirectoryName(dir); + TreeNode theNode; + // We reached a root + if (mDirectories.TryGetValue(dir.ToLower(), out theNode)) + { + return theNode; + } + else if (parentDir == null) + { + theNode = new TreeNode(dir); + theNode.Tag = dir; + theNode.Nodes.Add("..."); + mDirectories[dir.ToLower()] = theNode; + DirectoryTree.Nodes.Add(theNode); + return theNode; + } + else + { + theNode = ShowNode(parentDir); + ExpandNode(theNode, parentDir); + } + return ShowNode(dir); + } + + private void DirectoryTree_AfterExpand(object sender, TreeViewEventArgs e) + { + string dir = (string)e.Node.Tag; + ExpandNode(e.Node, dir); + } + + private void DirectoryTree_AfterCollapse(object sender, TreeViewEventArgs e) + { + e.Node.Nodes.Clear(); + e.Node.Nodes.Add("..."); + } + } + + public class DirectoryEditor : UITypeEditor + { + public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) + { + return UITypeEditorEditStyle.Modal; + } + + public override object EditValue(ITypeDescriptorContext typedesc, IServiceProvider provider, object value) + { + DirectoryChooser chooser = new DirectoryChooser(); + chooser.Value = (string)value; + if (chooser.ShowDialog() == DialogResult.OK) + return chooser.Value; + else + return value; + } + } + +}
Added: trunk/tools/reactosdbg/RosDBG/DirectoryChooser.resx URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/DirectoryCh... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/DirectoryChooser.resx (added) +++ trunk/tools/reactosdbg/RosDBG/DirectoryChooser.resx [iso-8859-1] Fri Aug 1 02:19:49 2008 @@ -1,0 +1,120 @@ +<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root>
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] Fri Aug 1 02:19:49 2008 @@ -32,7 +32,6 @@ this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openSourceFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.addSymbolFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.symbolDirectoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.connectSerialToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.connectPipeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -105,7 +104,6 @@ // this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.openSourceFileToolStripMenuItem, - this.addSymbolFileToolStripMenuItem, this.symbolDirectoryToolStripMenuItem, this.connectSerialToolStripMenuItem, this.connectPipeToolStripMenuItem, @@ -121,17 +119,12 @@ this.openSourceFileToolStripMenuItem.Size = new System.Drawing.Size(175, 22); this.openSourceFileToolStripMenuItem.Text = "Open Source File ..."; // - // addSymbolFileToolStripMenuItem - // - this.addSymbolFileToolStripMenuItem.Name = "addSymbolFileToolStripMenuItem"; - this.addSymbolFileToolStripMenuItem.Size = new System.Drawing.Size(175, 22); - this.addSymbolFileToolStripMenuItem.Text = "Add Symbol File ..."; - // // symbolDirectoryToolStripMenuItem // this.symbolDirectoryToolStripMenuItem.Name = "symbolDirectoryToolStripMenuItem"; this.symbolDirectoryToolStripMenuItem.Size = new System.Drawing.Size(175, 22); - this.symbolDirectoryToolStripMenuItem.Text = "Symbol Path ..."; + this.symbolDirectoryToolStripMenuItem.Text = "Settings ..."; + this.symbolDirectoryToolStripMenuItem.Click += new System.EventHandler(this.symbolDirectoryToolStripMenuItem_Click); // // connectSerialToolStripMenuItem // @@ -360,7 +353,6 @@ private System.Windows.Forms.ToolStripMenuItem continueToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem bugcheckToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem openSourceFileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem addSymbolFileToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem symbolDirectoryToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem connectSerialToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem connectPipeToolStripMenuItem;
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] Fri Aug 1 02:19:49 2008 @@ -21,7 +21,7 @@ bool mRunning; DebugConnection.Mode mConnectionMode; ulong mCurrentEip; - string mSourceRoot = ".", mCurrentFile; + string mSourceRoot = Settings.SourceDirectory, mCurrentFile; int mCurrentLine; DebugConnection mConnection = new DebugConnection(); SymbolContext mSymbolContext; @@ -90,7 +90,7 @@ mConnection.DebugRegisterChangeEvent += DebugRegisterChangeEvent; mConnection.DebugModuleChangedEvent += DebugModuleChangedEvent; ComposeTitleString(); - mSymbolContext.ReactosOutputPath = ".\output-i386"; + mSymbolContext.ReactosOutputPath = Settings.OutputDirectory; }
void DebugModuleChangedEvent(object sender, DebugModuleChangedEventArgs args) @@ -244,6 +244,13 @@ { mConnection.Go(); } + + private void symbolDirectoryToolStripMenuItem_Click(object sender, EventArgs e) + { + Settings.ShowSettings(); + mSourceRoot = Settings.SourceDirectory; + mSymbolContext.ReactosOutputPath = Settings.OutputDirectory; + } }
public class InteractiveInputEventArgs : EventArgs
Modified: trunk/tools/reactosdbg/RosDBG/RosDBG.csproj URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/RosDBG.cspr... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/RosDBG.csproj [iso-8859-1] (original) +++ trunk/tools/reactosdbg/RosDBG/RosDBG.csproj [iso-8859-1] Fri Aug 1 02:19:49 2008 @@ -73,6 +73,12 @@ <SubType>Code</SubType> </Compile> <Compile Include="DebugInfoFile.cs" /> + <Compile Include="DirectoryChooser.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="DirectoryChooser.Designer.cs"> + <DependentUpon>DirectoryChooser.cs</DependentUpon> + </Compile> <Compile Include="HighLevelInteraction.cs" /> <Compile Include="HostWindow.cs"> <SubType>Form</SubType> @@ -115,6 +121,10 @@ <DependentUpon>BackTrace.cs</DependentUpon> <SubType>Designer</SubType> </EmbeddedResource> + <EmbeddedResource Include="DirectoryChooser.resx"> + <DependentUpon>DirectoryChooser.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> <EmbeddedResource Include="HostWindow.resx"> <DependentUpon>HostWindow.cs</DependentUpon> <SubType>Designer</SubType> @@ -150,6 +160,10 @@ </EmbeddedResource> <EmbeddedResource Include="RegisterView.resx"> <DependentUpon>RegisterView.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="Settings.resx"> + <DependentUpon>Settings.cs</DependentUpon> <SubType>Designer</SubType> </EmbeddedResource> <EmbeddedResource Include="SourceView.resx"> @@ -191,6 +205,12 @@ </Compile> <Compile Include="RegisterView.Designer.cs"> <DependentUpon>RegisterView.cs</DependentUpon> + </Compile> + <Compile Include="Settings.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Settings.Designer.cs"> + <DependentUpon>Settings.cs</DependentUpon> </Compile> <Compile Include="SourceView.cs"> <SubType>UserControl</SubType>
Added: trunk/tools/reactosdbg/RosDBG/Settings.Designer.cs URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/Settings.De... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/Settings.Designer.cs (added) +++ trunk/tools/reactosdbg/RosDBG/Settings.Designer.cs [iso-8859-1] Fri Aug 1 02:19:49 2008 @@ -1,0 +1,114 @@ +namespace RosDBG +{ + partial class Settings + { + /// <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() + { + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.SettingsGrid = new System.Windows.Forms.PropertyGrid(); + this.OKButton = new System.Windows.Forms.Button(); + this.CancelButton = new System.Windows.Forms.Button(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.SuspendLayout(); + // + // splitContainer1 + // + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; + this.splitContainer1.IsSplitterFixed = true; + 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.SettingsGrid); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.OKButton); + this.splitContainer1.Panel2.Controls.Add(this.CancelButton); + this.splitContainer1.Size = new System.Drawing.Size(415, 317); + this.splitContainer1.SplitterDistance = 284; + this.splitContainer1.TabIndex = 0; + // + // SettingsGrid + // + this.SettingsGrid.Dock = System.Windows.Forms.DockStyle.Fill; + this.SettingsGrid.Location = new System.Drawing.Point(0, 0); + this.SettingsGrid.Name = "SettingsGrid"; + this.SettingsGrid.Size = new System.Drawing.Size(415, 284); + this.SettingsGrid.TabIndex = 0; + // + // OKButton + // + this.OKButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.OKButton.Location = new System.Drawing.Point(256, 3); + this.OKButton.Name = "OKButton"; + this.OKButton.Size = new System.Drawing.Size(75, 23); + this.OKButton.TabIndex = 1; + this.OKButton.Text = "OK"; + this.OKButton.UseVisualStyleBackColor = true; + this.OKButton.Click += new System.EventHandler(this.OKButton_Click); + // + // CancelButton + // + this.CancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.CancelButton.Location = new System.Drawing.Point(337, 3); + this.CancelButton.Name = "CancelButton"; + this.CancelButton.Size = new System.Drawing.Size(75, 23); + this.CancelButton.TabIndex = 0; + this.CancelButton.Text = "Cancel"; + this.CancelButton.UseVisualStyleBackColor = true; + this.CancelButton.Click += new System.EventHandler(this.CancelButton_Click); + // + // Settings + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(415, 317); + this.Controls.Add(this.splitContainer1); + this.Name = "Settings"; + this.Text = "Settings"; + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + this.splitContainer1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.PropertyGrid SettingsGrid; + private System.Windows.Forms.Button OKButton; + private System.Windows.Forms.Button CancelButton; + + } +}
Added: trunk/tools/reactosdbg/RosDBG/Settings.cs URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/Settings.cs... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/Settings.cs (added) +++ trunk/tools/reactosdbg/RosDBG/Settings.cs [iso-8859-1] Fri Aug 1 02:19:49 2008 @@ -1,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Configuration; +using System.Windows.Forms; +using System.ComponentModel; +using System.Drawing.Design; + +namespace RosDBG +{ + public partial class Settings : Form + { + public class SettingsPropertyValues : ApplicationSettingsBase + { + [UserScopedSetting, DefaultSettingValue("."), Editor(typeof(DirectoryEditor), typeof(UITypeEditor))] + public string SourceDirectory + { + get { return this["SourceDirectory"].ToString(); } + set { this["SourceDirectory"] = value; } + } + + [UserScopedSetting,DefaultSettingValue(".\output-i386"),Editor(typeof(DirectoryEditor), typeof(UITypeEditor))] + public string OutputDirectory + { + get { return this["OutputDirectory"].ToString(); } + set { this["OutputDirectory"] = value; } + } + + public SettingsPropertyValues() + { + Reload(); + } + } + + static SettingsPropertyValues mProperties = new SettingsPropertyValues(); + + public static string SourceDirectory { get { return mProperties.SourceDirectory; } } + public static string OutputDirectory { get { return mProperties.OutputDirectory; } } + + Settings() + { + InitializeComponent(); + mProperties.Reload(); + SettingsGrid.SelectedObject = mProperties; + } + + public static void ShowSettings() + { + Settings s = new Settings(); + if (s.ShowDialog() == DialogResult.OK) + { + mProperties.Save(); + } + } + + private void OKButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.OK; + Close(); + } + + private void CancelButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); + } + } +}
Added: trunk/tools/reactosdbg/RosDBG/Settings.resx URL: http://svn.reactos.org/svn/reactos/trunk/tools/reactosdbg/RosDBG/Settings.re... ============================================================================== --- trunk/tools/reactosdbg/RosDBG/Settings.resx (added) +++ trunk/tools/reactosdbg/RosDBG/Settings.resx [iso-8859-1] Fri Aug 1 02:19:49 2008 @@ -1,0 +1,120 @@ +<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root>