* MIDIイベント毎の詳細出力情報を大幅に改善。なおNoteOn/Offの音階表示は国際式で表示しているが、内部的にはYAMAHA方式にも対応。(YAMAHA方式だとオクターブ表記が一段小さくなるだけだが)
* Fileメニューに、Save As(ファイルの保存)を追加。plaint textまたはrich textでの保存が可能。
* 右クリックメニューを追加(copy, select all)。同じものをメインメニューのEditにも追加。
* 改行コードを \r\nから System.Environment.NewLine に変更。
* なんとなく、ほぼすべてのコメントを英語化。
ちなみに日本語版の開発予定はありませんが、問題ないですよね?
/// </summary>\r
private void InitializeComponent()\r
{\r
+ this.components = new System.ComponentModel.Container();\r
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form_Main));\r
this.menuStrip1 = new System.Windows.Forms.MenuStrip();\r
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();\r
this.exitToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.copyToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();\r
+ this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
this.buttonOK = new System.Windows.Forms.Button();\r
this.RichLogTextBox = new System.Windows.Forms.RichTextBox();\r
+ this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);\r
+ this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.pasteVToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
+ this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();\r
this.menuStrip1.SuspendLayout();\r
+ this.contextMenuStrip1.SuspendLayout();\r
this.SuspendLayout();\r
// \r
// menuStrip1\r
// \r
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
- this.exitToolStripMenuItem});\r
+ this.exitToolStripMenuItem,\r
+ this.editToolStripMenuItem});\r
resources.ApplyResources(this.menuStrip1, "menuStrip1");\r
this.menuStrip1.Name = "menuStrip1";\r
// \r
// exitToolStripMenuItem\r
// \r
this.exitToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
+ this.saveAsToolStripMenuItem,\r
+ this.toolStripSeparator1,\r
this.exitToolStripMenuItem1});\r
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";\r
resources.ApplyResources(this.exitToolStripMenuItem, "exitToolStripMenuItem");\r
// \r
+ // saveAsToolStripMenuItem\r
+ // \r
+ this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";\r
+ resources.ApplyResources(this.saveAsToolStripMenuItem, "saveAsToolStripMenuItem");\r
+ this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click);\r
+ // \r
+ // toolStripSeparator1\r
+ // \r
+ this.toolStripSeparator1.Name = "toolStripSeparator1";\r
+ resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");\r
+ // \r
// exitToolStripMenuItem1\r
// \r
this.exitToolStripMenuItem1.Name = "exitToolStripMenuItem1";\r
resources.ApplyResources(this.exitToolStripMenuItem1, "exitToolStripMenuItem1");\r
this.exitToolStripMenuItem1.Click += new System.EventHandler(this.exitToolStripMenuItem1_Click);\r
// \r
+ // editToolStripMenuItem\r
+ // \r
+ this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
+ this.copyToolStripMenuItem1,\r
+ this.toolStripSeparator2,\r
+ this.selectAllToolStripMenuItem});\r
+ this.editToolStripMenuItem.Name = "editToolStripMenuItem";\r
+ resources.ApplyResources(this.editToolStripMenuItem, "editToolStripMenuItem");\r
+ // \r
+ // copyToolStripMenuItem1\r
+ // \r
+ this.copyToolStripMenuItem1.Name = "copyToolStripMenuItem1";\r
+ resources.ApplyResources(this.copyToolStripMenuItem1, "copyToolStripMenuItem1");\r
+ this.copyToolStripMenuItem1.Click += new System.EventHandler(this.copyToolStripMenuItem1_Click);\r
+ // \r
+ // toolStripSeparator2\r
+ // \r
+ this.toolStripSeparator2.Name = "toolStripSeparator2";\r
+ resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");\r
+ // \r
+ // selectAllToolStripMenuItem\r
+ // \r
+ this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem";\r
+ resources.ApplyResources(this.selectAllToolStripMenuItem, "selectAllToolStripMenuItem");\r
+ this.selectAllToolStripMenuItem.Click += new System.EventHandler(this.selectAllToolStripMenuItem_Click);\r
+ // \r
// buttonOK\r
// \r
resources.ApplyResources(this.buttonOK, "buttonOK");\r
this.buttonOK.Name = "buttonOK";\r
this.buttonOK.UseVisualStyleBackColor = true;\r
- this.buttonOK.Click += new System.EventHandler(this.button1_Click);\r
+ this.buttonOK.Click += new System.EventHandler(this.button_OK_Click);\r
// \r
// RichLogTextBox\r
// \r
resources.ApplyResources(this.RichLogTextBox, "RichLogTextBox");\r
+ this.RichLogTextBox.ContextMenuStrip = this.contextMenuStrip1;\r
+ this.RichLogTextBox.HideSelection = false;\r
this.RichLogTextBox.Name = "RichLogTextBox";\r
// \r
+ // contextMenuStrip1\r
+ // \r
+ this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
+ this.copyToolStripMenuItem,\r
+ this.pasteVToolStripMenuItem});\r
+ this.contextMenuStrip1.Name = "contextMenuStrip1";\r
+ resources.ApplyResources(this.contextMenuStrip1, "contextMenuStrip1");\r
+ // \r
+ // copyToolStripMenuItem\r
+ // \r
+ this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";\r
+ resources.ApplyResources(this.copyToolStripMenuItem, "copyToolStripMenuItem");\r
+ this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click);\r
+ // \r
+ // pasteVToolStripMenuItem\r
+ // \r
+ this.pasteVToolStripMenuItem.Name = "pasteVToolStripMenuItem";\r
+ resources.ApplyResources(this.pasteVToolStripMenuItem, "pasteVToolStripMenuItem");\r
+ this.pasteVToolStripMenuItem.Click += new System.EventHandler(this.pasteVToolStripMenuItem_Click);\r
+ // \r
+ // saveFileDialog1\r
+ // \r
+ resources.ApplyResources(this.saveFileDialog1, "saveFileDialog1");\r
+ this.saveFileDialog1.RestoreDirectory = true;\r
+ this.saveFileDialog1.SupportMultiDottedExtensions = true;\r
+ // \r
// Form_Main\r
// \r
resources.ApplyResources(this, "$this");\r
this.Shown += new System.EventHandler(this.Form_Main_Shown);\r
this.menuStrip1.ResumeLayout(false);\r
this.menuStrip1.PerformLayout();\r
+ this.contextMenuStrip1.ResumeLayout(false);\r
this.ResumeLayout(false);\r
this.PerformLayout();\r
\r
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem1;\r
private System.Windows.Forms.Button buttonOK;\r
private System.Windows.Forms.RichTextBox RichLogTextBox;\r
+ private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem;\r
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;\r
+ private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;\r
+ private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem1;\r
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;\r
+ private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem;\r
+ private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;\r
+ private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;\r
+ private System.Windows.Forms.ToolStripMenuItem pasteVToolStripMenuItem;\r
+ private System.Windows.Forms.SaveFileDialog saveFileDialog1;\r
}\r
}\r
\r
using System.Windows.Forms;\r
using System.Diagnostics;\r
using System.Threading;\r
+using System.IO;\r
\r
namespace MidiInChecker2\r
{\r
CInputManager InputManager;\r
System.Threading.Timer timer;\r
object lockobj = new object();\r
- int looptimes = 11;\r
+ int looptimes = 16;\r
+ bool bYAMAHA_way_note = false;\r
\r
private void Form_Main_Shown(object sender, EventArgs e)\r
{\r
- #region [ タイトルバーの設定 ]\r
+ #region [ Title bar configuration (append version info) ]\r
System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();\r
int ver_asm_major = asm.GetName().Version.Major;\r
this.Text = "MidiInChecker2 Rel" + ver_asm_major.ToString("D3");\r
#endregion\r
+ RichLogTextBox.LanguageOption = RichTextBoxLanguageOptions.UIFonts;\r
}\r
\r
+ /// <summary>\r
+ /// Initializations\r
+ /// </summary>\r
public Form_Main()\r
{\r
InitializeComponent();\r
InputManager = new CInputManager();\r
\r
- RichLogTextBox.AppendText( "Number of MIDI devices: " + InputManager.nInputMidiDevices + "\r\n" );\r
+ RichLogTextBox.AppendText( "Number of MIDI devices: " + InputManager.nInputMidiDevices + System.Environment.NewLine );\r
foreach ( string s in InputManager.listStrMidiDevices )\r
{\r
- RichLogTextBox.AppendText( s + "\r\n" );\r
+ RichLogTextBox.AppendText( s + System.Environment.NewLine );\r
}\r
- RichLogTextBox.AppendText( "\r\nHit any MIDI Pad to show the signal info.\r\n\r\n\n" );\r
+ RichLogTextBox.AppendText(\r
+ System.Environment.NewLine +\r
+ "Hit any MIDI Pad to show the signal info." +\r
+ System.Environment.NewLine +\r
+ System.Environment.NewLine +\r
+ System.Environment.NewLine\r
+ );\r
\r
- #region [タイマーで0.1秒ごとにログ画面を更新するように初期化する]\r
+ #region [ Set callback to update log area (richtextbox) every 0.1sec ]\r
TimerCallback timerDelegate = new TimerCallback(mainloop);\r
timer = new System.Threading.Timer(timerDelegate, null , 0, 100);\r
#endregion\r
InputManager.tポーリング( true, true );\r
List<STInputEvent> list = new List<STInputEvent>();\r
\r
- // すべての入力デバイスについて…\r
+ // For all MIDI input devices...\r
foreach ( IInputDevice device in InputManager.list入力デバイス )\r
{\r
if ( ( device.list入力イベント != null ) && ( device.list入力イベント.Count != 0 ) && ( device.e入力デバイス種別 == E入力デバイス種別.MidiIn ) )\r
{\r
+ // if MIDI-input exists, invoke all of them, then push them to the RichTextBox\r
foreach ( STInputEvent ev in device.list入力イベント )\r
{\r
Invoke( new AppendTextDelegate( appendLogText ), device.ID, ev);\r
}\r
}\r
}\r
- if (looptimes++ == 10) // 10回ループ(1秒間)の間に入力がなければ、空行を挿入する。\r
+ if (looptimes++ == 15) // Insert horizontal rule if no inputs in 15times-loop (1.5sec)\r
{\r
Invoke(new AppendTextDelegate( appendLogText ), -1, new STInputEvent() );\r
}\r
{\r
string text;\r
\r
- if (id == -1)\r
+ if (id == -1) // Insert Horizontal Rule\r
{\r
RichLogTextBox.SelectionColor = Color.Black; // reset color\r
text = "------------------------------------------------------------\r\n";\r
else\r
{\r
int nMIDIevent = ev.nKey & 0xFF;\r
- int nNote = (ev.nKey >> 8) & 0xFF; // note#\r
- // int nVelo = ( ev.nKey >> 16 ) & 0xFF; // velocity\r
+ int nNote = (ev.nKey >> 8) & 0xFF;\r
+ string[] strNote =\r
+ {\r
+ "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"\r
+ };\r
+\r
+ #region [ At first, put time, and MIDI event info ]\r
+ text = string.Format(\r
+ "{0}: Device={1}, MidiEvent=0x{2}",\r
+ new DateTime(ev.nTimeStamp).ToString("HH:mm:ss.fff"),\r
+ id,\r
+ nMIDIevent.ToString("X2")\r
+ );\r
+ #endregion\r
+ #region [ Then, Append MIDI event detail descriptions ]\r
+ switch (nMIDIevent & 0xF0)\r
+ {\r
+ case 0x80: // Note off\r
+ case 0x90: // Note off/on\r
+ text += string.Format(\r
+ ", Note#=0x{0} (Key={1}{2}) {3}, Velocity={4}",\r
+ nNote.ToString("X2"),\r
+ strNote[nNote % 12],\r
+ (nNote / 12) - 1 - (bYAMAHA_way_note ? 1 : 0),\r
+ ((nMIDIevent & 0xF0) == 0x80 || ev.nVelocity == 0x00) ? "Off" : "On ",\r
+ ev.nVelocity.ToString("D3")\r
+ );\r
+ break;\r
+\r
+ case 0xA0: // Polyphonic Key Pressure\r
+ text += string.Format(\r
+ ", Note#=0x{0} (Key={1}{2}), PolyphonicKeyPresssure={3}",\r
+ nNote.ToString("X2"),\r
+ strNote[nNote % 12],\r
+ (nNote / 12) - 1 - (bYAMAHA_way_note ? 1 : 0),\r
+ ev.nVelocity.ToString("D3")\r
+ );\r
+ break;\r
+\r
+ case 0xB0: // Control Change\r
+ text += strCtrlChangeText(nNote, ev.nVelocity);\r
+ break;\r
\r
- DateTime dt = new DateTime(ev.nTimeStamp);\r
+ case 0xC0: // Program Change\r
+ text += string.Format(\r
+ ", ChangeProgram to {0}",\r
+ nNote.ToString("X2")\r
+ );\r
+ break;\r
\r
- text = dt.ToString("hh:mm:ss.fff") +\r
- ": Device=" + id +\r
- ", MidiEvent=0x" + nMIDIevent.ToString("X2") +\r
- ", Note#=0x" + nNote.ToString("X2") +\r
- ", Velocity=" + ev.nVelocity.ToString("D3") +\r
- "\r\n";\r
+ case 0xD0: // Channel Pressure\r
+ text += string.Format(\r
+ ", ChannelPresssure={0}",\r
+ nNote\r
+ );\r
+ break;\r
\r
+ case 0xE0: // Pitch Wheel Change\r
+ text += string.Format(\r
+ ", PitchWheelChange to {0}",\r
+ ((nNote + (ev.nVelocity * 128)) - 8192)\r
+ );\r
+ break;\r
+\r
+ case 0xF0: // System Common Message\r
+ text += string.Format(\r
+ ", SystemCommonMessage {0}",\r
+ nNote.ToString("X2")\r
+ );\r
+ break;\r
+ }\r
+ #endregion\r
+ #region [ Configure text color ]\r
Color[] cMidiEvent =\r
{\r
- Color.Gray, // 0x8x Note Off\r
- Color.Black, // 0x9x Note On\r
- Color.Black, // 0xAx\r
- Color.Green, // 0xBx Control change\r
- Color.Black, // 0xCx\r
- Color.Black, // 0xDx\r
- Color.Blue, // 0xEx Pitch bend\r
- Color.Black, // 0xFx\r
+ Color.Gray, // 0x8x: Note Off\r
+ Color.Black, // 0x9x: Note On\r
+ Color.Black, // 0xAx: Poliphonic Key Pressure\r
+ Color.Green, // 0xBx: Control change / Channel Mode Message\r
+ Color.Black, // 0xCx: Program Change\r
+ Color.Black, // 0xDx: Channel Pressure\r
+ Color.Blue, // 0xEx: Pitch Wheel Change\r
+ Color.Purple, // 0xFx: System Common Message\r
};\r
Color c = cMidiEvent[(nMIDIevent >> 4) - 8];\r
if ( (nMIDIevent & 0xF0) == 0x90 && (ev.nVelocity == 0) )\r
c = cMidiEvent[0]; // Note off color\r
}\r
RichLogTextBox.SelectionColor = c;\r
+ #endregion\r
}\r
RichLogTextBox.Focus();\r
- RichLogTextBox.AppendText( text );\r
+ RichLogTextBox.AppendText( text + System.Environment.NewLine );\r
RichLogTextBox.SelectionColor = Color.Black; // reset color\r
}\r
\r
- // ダサい。後日改善予定。\r
+ // Need improvement...\r
private void Form_Main_FormClosing( object sender, FormClosingEventArgs e )\r
{\r
// mainloop処理中なら、待つ\r
InputManager = null;\r
}\r
\r
- private void button1_Click( object sender, EventArgs e )\r
+ private void button_OK_Click( object sender, EventArgs e )\r
{\r
Application.Exit();\r
}\r
}\r
\r
/// <summary>\r
- /// textboxで、Ctrl-Aでの全選択ができるようにする\r
+ /// [Ctrl-A] => SelectAll\r
/// </summary>\r
/// <param name="sender"></param>\r
/// <param name="e"></param>\r
- private void LogTextBox_KeyDown( object sender, KeyEventArgs e )\r
+ private void RichLogTextBox_KeyDown( object sender, KeyEventArgs e )\r
{\r
if ( e.KeyCode == System.Windows.Forms.Keys.A & e.Control == true )\r
{\r
RichLogTextBox.SelectAll();\r
} \r
}\r
+\r
+ /// <summary>\r
+ /// Output logs about control change\r
+ /// </summary>\r
+ /// <param name="ctrl"></param>\r
+ /// <param name="data"></param>\r
+ /// <returns></returns>\r
+ private string strCtrlChangeText(int ctrl, int data)\r
+ {\r
+ #region [ Control Change Number => strings ]\r
+ string[] strCtrlChgName =\r
+ {\r
+ "BankSelect<MSB>", // 0x00\r
+ "Modulation",\r
+ "BreathController",\r
+ "",\r
+ "FootController",\r
+ "PortamentTime",\r
+ "DataEntry",\r
+ "ChannelVolume",\r
+ "Balance", // 0x08\r
+ "",\r
+ "Pan",\r
+ "Expression",\r
+ "EffectControl1",\r
+ "EffectControl2",\r
+ "",\r
+ "",\r
+ "GeneralPurposeControler1", // 0x10\r
+ "GeneralPurposeControler2", // 0x11\r
+ "GeneralPurposeControler3", // 0x12\r
+ "GeneralPurposeControler4", // 0x13\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "BankSelect<LSB>", // 0x20\r
+ "Modulation<LSB>",\r
+ "BreathContoller<LSB>",\r
+ "",\r
+ "FootController<LSB>",\r
+ "PortamentTime<LSB>",\r
+ "DataEntry<LSB>",\r
+ "ChannelVOlume<LSB>",\r
+ "Balance<LSB>",\r
+ "",\r
+ "Expression<LSB>",\r
+ "Pan<LSB>",\r
+ "Expression<LSB>",\r
+ "EffectControl1<LSB>",\r
+ "EffectControl1<LSB>",\r
+ "",\r
+ "",\r
+ "GeneralPurposeContoller1<LSB>", // 0x30\r
+ "GeneralPurposeContoller2<LSB>", // 0x31\r
+ "GeneralPurposeContoller3<LSB>", // 0x32\r
+ "GeneralPurposeContoller4<LSB>", // 0x34\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "Hold1", // 0x40\r
+ "Portament",\r
+ "Sostenuto",\r
+ "SoftPedal",\r
+ "LegatoFootswitch",\r
+ "Hold2",\r
+ "SoundVariation",\r
+ "Timbre/HarmonicIntensity",\r
+ "ReleaseTime",\r
+ "AttackTime",\r
+ "Brightness",\r
+ "DecayTime",\r
+ "VibratoTime",\r
+ "VibratoDepth",\r
+ "VibratoDelay",\r
+ "",\r
+ "GeneralPurposeController5", // 0x50\r
+ "GeneralPurposeController6", // 0x51\r
+ "GeneralPurposeController7", // 0x52\r
+ "GeneralPurposeController8", // 0x53\r
+ "PortamentContol",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "Effect1Depth(ReverbSendLevel)",\r
+ "Effect2Depth(TremoloDepth)",\r
+ "Effect3Depth(ChorusSendLevel)",\r
+ "Effect4Depth(CelesteDepth)",\r
+ "Effect5Depth(PhaserDepth)",\r
+ "DataIncrement", // 0x60\r
+ "DataDecrement",\r
+ "NRPN(LSB)",\r
+ "NRPN(MSB)",\r
+ "RPN(LSB)",\r
+ "RPN(MSB",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "", // 0x70\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "",\r
+ "AllSoundOff", // 0x78\r
+ "ResetAllControllers",\r
+ "LocalControl",\r
+ "AllNoteOff",\r
+ "OmniOff",\r
+ "OmniOn",\r
+ "Mono",\r
+ "Poly", // 0x7F\r
+ };\r
+ #endregion\r
+\r
+ string ret = string.Format(\r
+ ", CtrlChgNo=0x{0} ({1}), data={2}",\r
+ ctrl.ToString("D2"),\r
+ strCtrlChgName[ctrl],\r
+ data\r
+ );\r
+ \r
+ return ret;\r
+ }\r
+\r
+ /// <summary>\r
+ /// Save Logs to the file (txt / rtf)\r
+ /// </summary>\r
+ /// <param name="sender"></param>\r
+ /// <param name="e"></param>\r
+ private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)\r
+ {\r
+ if (saveFileDialog1.ShowDialog() == DialogResult.OK)\r
+ {\r
+ string filename = saveFileDialog1.FileName;\r
+ bool bRTF = (Path.GetExtension(filename).ToLower() == ".rtf");\r
+\r
+ RichLogTextBox.SaveFile(\r
+ filename,\r
+ bRTF ? RichTextBoxStreamType.RichText : RichTextBoxStreamType.PlainText\r
+ );\r
+ }\r
+ }\r
+\r
+ #region [ Copy/SelectAll support ]\r
+ private void copyToolStripMenuItem_Click(object sender, EventArgs e)\r
+ {\r
+ RichLogTextBox.Copy();\r
+ }\r
+\r
+ private void pasteVToolStripMenuItem_Click(object sender, EventArgs e)\r
+ {\r
+ RichLogTextBox.SelectAll();\r
+ }\r
+\r
+ private void copyToolStripMenuItem1_Click(object sender, EventArgs e)\r
+ {\r
+ RichLogTextBox.Copy();\r
+ }\r
+\r
+ private void selectAllToolStripMenuItem_Click(object sender, EventArgs e)\r
+ {\r
+ RichLogTextBox.SelectAll();\r
+ }\r
+ #endregion\r
}\r
}\r
<value>0, 0</value>\r
</metadata>\r
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />\r
- <data name="exitToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">\r
- <value>37, 20</value>\r
- </data>\r
- <data name="exitToolStripMenuItem.Text" xml:space="preserve">\r
- <value>&File</value>\r
- </data>\r
<data name="menuStrip1.Location" type="System.Drawing.Point, System.Drawing">\r
<value>0, 0</value>\r
</data>\r
<value>$this</value>\r
</data>\r
<data name=">>menuStrip1.ZOrder" xml:space="preserve">\r
- <value>2</value>\r
+ <value>3</value>\r
+ </data>\r
+ <data name="exitToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">\r
+ <value>37, 20</value>\r
+ </data>\r
+ <data name="exitToolStripMenuItem.Text" xml:space="preserve">\r
+ <value>&File</value>\r
+ </data>\r
+ <data name="saveAsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">\r
+ <value>123, 22</value>\r
+ </data>\r
+ <data name="saveAsToolStripMenuItem.Text" xml:space="preserve">\r
+ <value>Save &As...</value>\r
+ </data>\r
+ <data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">\r
+ <value>120, 6</value>\r
</data>\r
<data name="exitToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">\r
- <value>152, 22</value>\r
+ <value>123, 22</value>\r
</data>\r
<data name="exitToolStripMenuItem1.Text" xml:space="preserve">\r
<value>E&xit</value>\r
</data>\r
+ <data name="editToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">\r
+ <value>39, 20</value>\r
+ </data>\r
+ <data name="editToolStripMenuItem.Text" xml:space="preserve">\r
+ <value>&Edit</value>\r
+ </data>\r
+ <data name="copyToolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">\r
+ <value>152, 22</value>\r
+ </data>\r
+ <data name="copyToolStripMenuItem1.Text" xml:space="preserve">\r
+ <value>&Copy</value>\r
+ </data>\r
+ <data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">\r
+ <value>119, 6</value>\r
+ </data>\r
+ <data name="selectAllToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">\r
+ <value>152, 22</value>\r
+ </data>\r
+ <data name="selectAllToolStripMenuItem.Text" xml:space="preserve">\r
+ <value>Select &All</value>\r
+ </data>\r
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />\r
<data name="buttonOK.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">\r
<value>Bottom, Right</value>\r
<value>3</value>\r
</data>\r
<data name="buttonOK.Text" xml:space="preserve">\r
- <value>OK</value>\r
+ <value>Exit</value>\r
</data>\r
<data name=">>buttonOK.Name" xml:space="preserve">\r
<value>buttonOK</value>\r
<value>$this</value>\r
</data>\r
<data name=">>buttonOK.ZOrder" xml:space="preserve">\r
- <value>1</value>\r
+ <value>2</value>\r
</data>\r
<data name="RichLogTextBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">\r
<value>Top, Bottom, Left, Right</value>\r
</data>\r
+ <metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
+ <value>115, 0</value>\r
+ </metadata>\r
+ <data name="contextMenuStrip1.Size" type="System.Drawing.Size, System.Drawing">\r
+ <value>123, 48</value>\r
+ </data>\r
+ <data name=">>contextMenuStrip1.Name" xml:space="preserve">\r
+ <value>contextMenuStrip1</value>\r
+ </data>\r
+ <data name=">>contextMenuStrip1.Type" xml:space="preserve">\r
+ <value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ </data>\r
<data name="RichLogTextBox.Location" type="System.Drawing.Point, System.Drawing">\r
<value>0, 27</value>\r
</data>\r
<value>$this</value>\r
</data>\r
<data name=">>RichLogTextBox.ZOrder" xml:space="preserve">\r
- <value>0</value>\r
+ <value>1</value>\r
+ </data>\r
+ <data name="copyToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">\r
+ <value>152, 22</value>\r
+ </data>\r
+ <data name="copyToolStripMenuItem.Text" xml:space="preserve">\r
+ <value>&Copy</value>\r
+ </data>\r
+ <data name="pasteVToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">\r
+ <value>152, 22</value>\r
+ </data>\r
+ <data name="pasteVToolStripMenuItem.Text" xml:space="preserve">\r
+ <value>Select &All</value>\r
+ </data>\r
+ <metadata name="saveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
+ <value>270, 0</value>\r
+ </metadata>\r
+ <data name="saveFileDialog1.Filter" xml:space="preserve">\r
+ <value>Text file (*.txt) | *.txt | Rich text file (*.rtf) | *.rtf | All files (*.*) | *.*</value>\r
</data>\r
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">\r
<value>True</value>\r
<data name=">>exitToolStripMenuItem.Type" xml:space="preserve">\r
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
</data>\r
+ <data name=">>saveAsToolStripMenuItem.Name" xml:space="preserve">\r
+ <value>saveAsToolStripMenuItem</value>\r
+ </data>\r
+ <data name=">>saveAsToolStripMenuItem.Type" xml:space="preserve">\r
+ <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ </data>\r
+ <data name=">>toolStripSeparator1.Name" xml:space="preserve">\r
+ <value>toolStripSeparator1</value>\r
+ </data>\r
+ <data name=">>toolStripSeparator1.Type" xml:space="preserve">\r
+ <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ </data>\r
<data name=">>exitToolStripMenuItem1.Name" xml:space="preserve">\r
<value>exitToolStripMenuItem1</value>\r
</data>\r
<data name=">>exitToolStripMenuItem1.Type" xml:space="preserve">\r
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
</data>\r
+ <data name=">>editToolStripMenuItem.Name" xml:space="preserve">\r
+ <value>editToolStripMenuItem</value>\r
+ </data>\r
+ <data name=">>editToolStripMenuItem.Type" xml:space="preserve">\r
+ <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ </data>\r
+ <data name=">>copyToolStripMenuItem1.Name" xml:space="preserve">\r
+ <value>copyToolStripMenuItem1</value>\r
+ </data>\r
+ <data name=">>copyToolStripMenuItem1.Type" xml:space="preserve">\r
+ <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ </data>\r
+ <data name=">>toolStripSeparator2.Name" xml:space="preserve">\r
+ <value>toolStripSeparator2</value>\r
+ </data>\r
+ <data name=">>toolStripSeparator2.Type" xml:space="preserve">\r
+ <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ </data>\r
+ <data name=">>selectAllToolStripMenuItem.Name" xml:space="preserve">\r
+ <value>selectAllToolStripMenuItem</value>\r
+ </data>\r
+ <data name=">>selectAllToolStripMenuItem.Type" xml:space="preserve">\r
+ <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ </data>\r
+ <data name=">>copyToolStripMenuItem.Name" xml:space="preserve">\r
+ <value>copyToolStripMenuItem</value>\r
+ </data>\r
+ <data name=">>copyToolStripMenuItem.Type" xml:space="preserve">\r
+ <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ </data>\r
+ <data name=">>pasteVToolStripMenuItem.Name" xml:space="preserve">\r
+ <value>pasteVToolStripMenuItem</value>\r
+ </data>\r
+ <data name=">>pasteVToolStripMenuItem.Type" xml:space="preserve">\r
+ <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ </data>\r
+ <data name=">>saveFileDialog1.Name" xml:space="preserve">\r
+ <value>saveFileDialog1</value>\r
+ </data>\r
+ <data name=">>saveFileDialog1.Type" xml:space="preserve">\r
+ <value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+ </data>\r
<data name=">>$this.Name" xml:space="preserve">\r
<value>Form_Main</value>\r
</data>\r