EditEscapeSequenceColor.cs
上传用户:szltgg
上传日期:2019-05-16
资源大小:604k
文件大小:8k
源码类别:

Telnet服务器

开发平台:

C#

  1. /*
  2. * Copyright (c) 2005 Poderosa Project, All Rights Reserved.
  3. * $Id: EditEscapeSequenceColor.cs,v 1.2 2005/04/20 08:45:44 okajima Exp $
  4. */
  5. using System;
  6. using System.Drawing;
  7. using System.Collections;
  8. using System.ComponentModel;
  9. using System.Windows.Forms;
  10. using Poderosa.Terminal;
  11. using Poderosa.Config;
  12. using Poderosa.UI;
  13. namespace Poderosa.Forms
  14. {
  15. /// <summary>
  16. /// EditEscapeSequenceColor 偺奣梫偺愢柧偱偡丅
  17. /// </summary>
  18. internal class EditEscapeSequenceColor : System.Windows.Forms.Form
  19. {
  20. private Color _backColor;
  21. private Color _foreColor;
  22. private ColorButton _backColorBox;
  23. private ColorButton _foreColorBox;
  24. private EscapesequenceColorSet _esColorSet;
  25. private ColorButton[] _colorBoxes;
  26. private Button _setDefaultButton;
  27. private System.Windows.Forms.Button _okButton;
  28. private System.Windows.Forms.Button _cancelButton;
  29. /// <summary>
  30. /// 昁梫側僨僓僀僫曄悢偱偡丅
  31. /// </summary>
  32. private System.ComponentModel.Container components = null;
  33. public EscapesequenceColorSet Result {
  34. get {
  35. return _esColorSet;
  36. }
  37. }
  38. public Color GForeColor {
  39. get {
  40. return _foreColor;
  41. }
  42. set {
  43. _foreColor = value;
  44. }
  45. }
  46. public Color GBackColor {
  47. get {
  48. return _backColor;
  49. }
  50. set {
  51. _backColor = value;
  52. }
  53. }
  54. public EditEscapeSequenceColor(Color back, Color fore, EscapesequenceColorSet cs)
  55. {
  56. //
  57. // Windows 僼僅乕儉 僨僓僀僫 僒億乕僩偵昁梫偱偡丅
  58. //
  59. InitializeComponent();
  60. //
  61. // TODO: InitializeComponent 屇傃弌偟偺屻偵丄僐儞僗僩儔僋僞 僐乕僪傪捛壛偟偰偔偩偝偄丅
  62. //
  63. _colorBoxes = new ColorButton[8];
  64. _backColor = back;
  65. _foreColor = fore;
  66. _esColorSet = (EscapesequenceColorSet)cs.Clone();
  67. int ti = 0;
  68. int y = 8;
  69. AddBackColorUI(y, ref ti);
  70. y += 24;
  71. for(int i=-1; i<8; i++) {
  72. AddUI(i, y, ref ti); //-1偼僨僼僅儖僩怓愝掕
  73. y += 24;
  74. }
  75. y += 8;
  76. _setDefaultButton = new Button();
  77. _setDefaultButton.Left = 106;
  78. _setDefaultButton.Width = 144;
  79. _setDefaultButton.Click += new EventHandler(OnSetDefault);
  80. _setDefaultButton.Text = GApp.Strings.GetString("Form.EditEscapesequenceColor._setDefaultButton");
  81. _setDefaultButton.Top = y;
  82. _setDefaultButton.TabIndex = ti++;
  83. _setDefaultButton.FlatStyle = FlatStyle.System;
  84. this.Controls.Add(_setDefaultButton);
  85. y += 32;
  86. _okButton.Text = GApp.Strings.GetString("Common.OK");
  87. _okButton.Top = y;
  88. _cancelButton.Text = GApp.Strings.GetString("Common.Cancel");
  89. _cancelButton.Top = y;
  90. this.Text = GApp.Strings.GetString("Form.EditEscapesequenceColor.Text");
  91. this.ClientSize = new Size(this.ClientSize.Width, y + 32);
  92. }
  93. /// <summary>
  94. /// 巊梡偝傟偰偄傞儕僜乕僗偵屻張棟傪幚峴偟傑偡丅
  95. /// </summary>
  96. protected override void Dispose( bool disposing )
  97. {
  98. if( disposing )
  99. {
  100. if(components != null)
  101. {
  102. components.Dispose();
  103. }
  104. }
  105. base.Dispose( disposing );
  106. }
  107. #region Windows 僼僅乕儉 僨僓僀僫偱惗惉偝傟偨僐乕僪 
  108. /// <summary>
  109. /// 僨僓僀僫 僒億乕僩偵昁梫側儊僜僢僪偱偡丅偙偺儊僜僢僪偺撪梕傪
  110. /// 僐乕僪 僄僨傿僞偱曄峏偟側偄偱偔偩偝偄丅
  111. /// </summary>
  112. private void InitializeComponent()
  113. {
  114. this._okButton = new System.Windows.Forms.Button();
  115. this._cancelButton = new System.Windows.Forms.Button();
  116. this.SuspendLayout();
  117. // 
  118. // _okButton
  119. // 
  120. this._okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
  121. this._okButton.FlatStyle = System.Windows.Forms.FlatStyle.System;
  122. this._okButton.Location = new System.Drawing.Point(88, 232);
  123. this._okButton.Name = "_okButton";
  124. this._okButton.Click += new EventHandler(OnOK);
  125. this._okButton.TabIndex = 0;
  126. // 
  127. // _cancelButton
  128. // 
  129. this._cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
  130. this._cancelButton.FlatStyle = System.Windows.Forms.FlatStyle.System;
  131. this._cancelButton.Location = new System.Drawing.Point(176, 232);
  132. this._cancelButton.Name = "_cancelButton";
  133. this._cancelButton.TabIndex = 1;
  134. // 
  135. // EditEscapeSequenceColor
  136. // 
  137. this.AcceptButton = this._okButton;
  138. this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
  139. this.CancelButton = this._cancelButton;
  140. this.ClientSize = new System.Drawing.Size(258, 266);
  141. this.Controls.Add(this._cancelButton);
  142. this.Controls.Add(this._okButton);
  143. this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
  144. this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
  145. this.MaximizeBox = false;
  146. this.MinimizeBox = false;
  147. this.Name = "EditEscapeSequenceColor";
  148. this.ShowInTaskbar = false;
  149. this.ResumeLayout(false);
  150. }
  151. #endregion
  152. private void AddBackColorUI(int y, ref int tabindex) {
  153. Label num = new Label();
  154. num.TextAlign = ContentAlignment.MiddleCenter;
  155. num.Text = GApp.Strings.GetString("Caption.EditEscapesequenceColor.BackColor");
  156. num.Left = 8;
  157. num.Width = 48;
  158. num.Top = y;
  159. num.Height = 24;
  160. num.TabIndex = tabindex++;
  161. ColorButton col = new ColorButton();
  162. col.SelectedColor = _backColor;
  163. col.Left = 122;
  164. col.Width = 128;
  165. col.Top = y+2;
  166. col.ColorChanged += new ColorButton.NewColorEventHandler(OnNewBackColor);
  167. col.TabIndex = tabindex++;
  168. _backColorBox = col;
  169. this.Controls.Add(num);
  170. this.Controls.Add(col);
  171. }
  172. private void AddUI(int index, int y, ref int tabindex) {
  173. Label num = new Label();
  174. num.TextAlign = ContentAlignment.MiddleCenter;
  175. num.Text = index==-1? GApp.Strings.GetString("Caption.EditEscapesequenceColor.DefaultColor") : index.ToString();
  176. num.Left = 8;
  177. num.Width = 48;
  178. num.Top = y;
  179. num.Height = 24;
  180. num.TabIndex = tabindex++;
  181. Label sample = new Label();
  182. sample.TextAlign = ContentAlignment.MiddleCenter;
  183. sample.Text = GetIndexDesc(index);
  184. sample.Left = 64;
  185. sample.Width = 48;
  186. sample.Top = y;
  187. sample.Height = 24;
  188. sample.BorderStyle = BorderStyle.FixedSingle;
  189. sample.BackColor = _backColor;
  190. sample.ForeColor = index==-1? _foreColor : _esColorSet[index];
  191. sample.TabIndex = tabindex++;
  192. ColorButton col = new ColorButton();
  193. col.SelectedColor = index==-1? _foreColor : _esColorSet[index];
  194. col.Left = 122;
  195. col.Width = 128;
  196. col.Top = y+2;
  197. col.ColorChanged += new ColorButton.NewColorEventHandler(OnNewColor);
  198. col.Tag = sample;
  199. col.TabIndex = tabindex++;
  200. if(index==-1)
  201. _foreColorBox = col;
  202. else
  203. _colorBoxes[index] = col;
  204. this.Controls.Add(num);
  205. this.Controls.Add(sample);
  206. this.Controls.Add(col);
  207. }
  208. private void OnNewColor(object sender, Color arg) {
  209. Control col = (Control)sender;
  210. ((Label)col.Tag).ForeColor = arg;
  211. }
  212. private void OnNewBackColor(object sender, Color arg) {
  213. ((Label)_foreColorBox.Tag).BackColor = arg;
  214. for(int i=0; i<_colorBoxes.Length; i++) {
  215. ((Label)_colorBoxes[i].Tag).BackColor = arg;
  216. }
  217. this.Invalidate(true);
  218. }
  219. private void OnSetDefault(object sender, EventArgs args) {
  220. for(int i=0; i<_colorBoxes.Length; i++) {
  221. Color c = EscapesequenceColorSet.GetDefaultColor(i);
  222. _colorBoxes[i].SelectedColor = c;
  223. _colorBoxes[i].Invalidate();
  224. ((Label)_colorBoxes[i].Tag).ForeColor = c;
  225. }
  226. }
  227. private void OnOK(object sender, EventArgs args) {
  228. _backColor = _backColorBox.SelectedColor;
  229. _foreColor = _foreColorBox.SelectedColor;
  230. for(int i=0; i<_colorBoxes.Length; i++) {
  231. Color c = _colorBoxes[i].SelectedColor;
  232. _esColorSet[i] = c;
  233. }
  234. }
  235. private static string GetIndexDesc(int index) {
  236. char[] t = new char[3];
  237. t[0] = (index & 4)!=0? '1' : '0';
  238. t[1] = (index & 2)!=0? '1' : '0';
  239. t[2] = (index & 1)!=0? '1' : '0';
  240. return new string(t);
  241. }
  242. }
  243. }