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

Telnet服务器

开发平台:

C#

  1. /*
  2. * Copyright (c) 2005 Poderosa Project, All Rights Reserved.
  3. * $Id: EditRenderProfile.cs,v 1.2 2005/04/20 08:45:45 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.ConnectionParam;
  13. using Poderosa.Text;
  14. using Poderosa.UI;
  15. using EnumDescAttributeT = Poderosa.Toolkit.EnumDescAttribute;
  16. namespace Poderosa.Forms
  17. {
  18. /// <summary>
  19. /// EditRenderProfile 偺奣梫偺愢柧偱偡丅
  20. /// </summary>
  21. public class EditRenderProfile : System.Windows.Forms.Form
  22. {
  23. private RenderProfile _profile;
  24.         private System.Windows.Forms.Button _okButton;
  25.         private System.Windows.Forms.Button _cancelButton;
  26.         private System.Windows.Forms.Label _bgColorLabel;
  27.         private ColorButton _bgColorBox;
  28.         private System.Windows.Forms.Label _textColorLabel;
  29.         private ColorButton _textColorBox;
  30.         private Button _editColorEscapeSequence;
  31.         private System.Windows.Forms.Label _fontLabel;
  32.         private System.Windows.Forms.Label _fontDescription;
  33.         private System.Windows.Forms.Button _fontSelectButton;
  34.         private ClearTypeAwareLabel _fontSample;
  35.         private Label _backgroundImageLabel;
  36.         private TextBox _backgroundImageBox;
  37.         private Button _backgroundImageSelectButton;
  38.         private Label _imageStyleLabel;
  39.         private ComboBox _imageStyleBox;
  40. /// <summary>
  41. /// 昁梫側僨僓僀僫曄悢偱偡丅
  42. /// </summary>
  43. private System.ComponentModel.Container components = null;
  44. public EditRenderProfile(RenderProfile prof)
  45. {
  46. //
  47. // Windows 僼僅乕儉 僨僓僀僫 僒億乕僩偵昁梫偱偡丅
  48. //
  49. InitializeComponent();
  50. _imageStyleBox.Items.AddRange(EnumDescAttributeT.For(typeof(ImageStyle)).DescriptionCollection());
  51. this._bgColorLabel.Text = GApp.Strings.GetString("Form.EditRenderProfile._bgColorLabel");
  52. this._textColorLabel.Text = GApp.Strings.GetString("Form.EditRenderProfile._textColorLabel");
  53. this._fontSelectButton.Text = GApp.Strings.GetString("Form.EditRenderProfile._fontSelectButton");
  54. this._fontLabel.Text = GApp.Strings.GetString("Form.EditRenderProfile._fontLabel");
  55. this._backgroundImageLabel.Text = GApp.Strings.GetString("Form.EditRenderProfile._backgroungImageLabel");
  56. this._imageStyleLabel.Text = GApp.Strings.GetString("Form.EditRenderProfile._imageStyleLabel");
  57. this._cancelButton.Text = GApp.Strings.GetString("Common.Cancel");
  58. this._okButton.Text = GApp.Strings.GetString("Common.OK");
  59. this._fontSample.Text = GApp.Strings.GetString("Common.FontSample");
  60. this._editColorEscapeSequence.Text = GApp.Strings.GetString("Form.EditRenderProfile._editEscapeSequenceColorBox");
  61. this.Text = GApp.Strings.GetString("Form.EditRenderProfile.Text");
  62. //
  63. // TODO: InitializeComponent 屇傃弌偟偺屻偵丄僐儞僗僩儔僋僞 僐乕僪傪捛壛偟偰偔偩偝偄丅
  64. //
  65. _profile = new RenderProfile(prof==null? GEnv.DefaultRenderProfile : prof);
  66. InitUI();
  67. }
  68. /// <summary>
  69. /// 巊梡偝傟偰偄傞儕僜乕僗偵屻張棟傪幚峴偟傑偡丅
  70. /// </summary>
  71. protected override void Dispose( bool disposing )
  72. {
  73. if( disposing )
  74. {
  75. if(components != null)
  76. {
  77. components.Dispose();
  78. }
  79. }
  80. base.Dispose( disposing );
  81. }
  82. #region Windows 僼僅乕儉 僨僓僀僫偱惗惉偝傟偨僐乕僪 
  83. /// <summary>
  84. /// 僨僓僀僫 僒億乕僩偵昁梫側儊僜僢僪偱偡丅偙偺儊僜僢僪偺撪梕傪
  85. /// 僐乕僪 僄僨傿僞偱曄峏偟側偄偱偔偩偝偄丅
  86. /// </summary>
  87. protected void InitializeComponent()
  88. {
  89. this._okButton = new System.Windows.Forms.Button();
  90. this._cancelButton = new System.Windows.Forms.Button();
  91. this._bgColorLabel = new System.Windows.Forms.Label();
  92. this._bgColorBox = new ColorButton();
  93. this._textColorLabel = new System.Windows.Forms.Label();
  94. this._textColorBox = new ColorButton();
  95. this._editColorEscapeSequence = new Button();
  96. this._fontLabel = new System.Windows.Forms.Label();
  97. this._fontDescription = new System.Windows.Forms.Label();
  98. this._fontSelectButton = new System.Windows.Forms.Button();
  99. this._fontSample = new Poderosa.Forms.ClearTypeAwareLabel();
  100. this._backgroundImageLabel = new Label();
  101. this._backgroundImageBox = new TextBox();
  102. this._backgroundImageSelectButton = new Button();
  103. this._imageStyleLabel = new Label();
  104. this._imageStyleBox = new ComboBox();
  105. this.SuspendLayout();
  106. // 
  107. // _bgColorLabel
  108. // 
  109. this._bgColorLabel.Location = new System.Drawing.Point(16, 16);
  110. this._bgColorLabel.Name = "_bgColorLabel";
  111. this._bgColorLabel.Size = new System.Drawing.Size(72, 24);
  112. this._bgColorLabel.TabIndex = 0;
  113. this._bgColorLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
  114. // 
  115. // _bgColorBox
  116. // 
  117. this._bgColorBox.Location = new System.Drawing.Point(120, 16);
  118. this._bgColorBox.Name = "_bgColorBox";
  119. this._bgColorBox.Size = new System.Drawing.Size(112, 20);
  120. this._bgColorBox.TabIndex = 1;
  121. _bgColorBox.ColorChanged += new ColorButton.NewColorEventHandler(this.OnBGColorChanged);
  122. // 
  123. // _textColorLabel
  124. // 
  125. this._textColorLabel.Location = new System.Drawing.Point(16, 40);
  126. this._textColorLabel.Name = "_textColorLabel";
  127. this._textColorLabel.Size = new System.Drawing.Size(72, 24);
  128. this._textColorLabel.TabIndex = 2;
  129. this._textColorLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
  130. // 
  131. // _textColorBox
  132. // 
  133. this._textColorBox.Location = new System.Drawing.Point(120, 40);
  134. this._textColorBox.Name = "_textColorBox";
  135. this._textColorBox.Size = new System.Drawing.Size(112, 20);
  136. this._textColorBox.TabIndex = 3;
  137. this._textColorBox.ColorChanged += new ColorButton.NewColorEventHandler(this.OnTextColorChanged);
  138. //
  139. // _editColorEscapeSequence
  140. //
  141. this._editColorEscapeSequence.Location = new Point(120, 72);
  142. this._editColorEscapeSequence.Size = new Size(216, 24);
  143. this._editColorEscapeSequence.TabIndex = 4;
  144. this._editColorEscapeSequence.Click += new EventHandler(OnEditColorEscapeSequence);
  145. this._editColorEscapeSequence.FlatStyle = FlatStyle.System;
  146. // 
  147. // _fontLabel
  148. // 
  149. this._fontLabel.Location = new System.Drawing.Point(16, 96);
  150. this._fontLabel.Name = "_fontLabel";
  151. this._fontLabel.Size = new System.Drawing.Size(72, 16);
  152. this._fontLabel.TabIndex = 5;
  153. this._fontLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
  154. // 
  155. // _fontDescription
  156. // 
  157. this._fontDescription.Location = new System.Drawing.Point(120, 100);
  158. this._fontDescription.Name = "_fontDescription";
  159. this._fontDescription.Size = new System.Drawing.Size(168, 24);
  160. this._fontDescription.TabIndex = 6;
  161. this._fontDescription.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
  162. // 
  163. // _fontSelectButton
  164. // 
  165. this._fontSelectButton.Location = new System.Drawing.Point(296, 100);
  166. this._fontSelectButton.Name = "_fontSelectButton";
  167. this._fontSelectButton.FlatStyle = FlatStyle.System;
  168. this._fontSelectButton.Size = new System.Drawing.Size(64, 23);
  169. this._fontSelectButton.TabIndex = 7;
  170. this._fontSelectButton.Click += new System.EventHandler(this.OnFontSelect);
  171. // 
  172. // _fontSample
  173. // 
  174. this._fontSample.BackColor = System.Drawing.Color.White;
  175. this._fontSample.ClearType = false;
  176. this._fontSample.Location = new System.Drawing.Point(240, 16);
  177. this._fontSample.Name = "_fontSample";
  178. this._fontSample.Size = new System.Drawing.Size(120, 46);
  179. this._fontSample.TabIndex = 8;
  180. this._fontSample.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
  181. // 
  182. // _backgroundImageLabel
  183. // 
  184. this._backgroundImageLabel.Location = new System.Drawing.Point(16, 128);
  185. this._backgroundImageLabel.Name = "_backgroundImageLabel";
  186. this._backgroundImageLabel.Size = new System.Drawing.Size(72, 16);
  187. this._backgroundImageLabel.TabIndex = 9;
  188. this._backgroundImageLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
  189. // 
  190. // _backgroundImageBox
  191. // 
  192. this._backgroundImageBox.Location = new System.Drawing.Point(120, 128);
  193. this._backgroundImageBox.Name = "_backgroundImageBox";
  194. this._backgroundImageBox.Size = new System.Drawing.Size(220, 19);
  195. this._backgroundImageBox.TabIndex = 10;
  196. // 
  197. // _backgroundImageSelectButton
  198. // 
  199. this._backgroundImageSelectButton.Location = new System.Drawing.Point(340, 128);
  200. this._backgroundImageSelectButton.Name = "_backgroundImageSelectButton";
  201. this._backgroundImageSelectButton.FlatStyle = FlatStyle.System;
  202. this._backgroundImageSelectButton.Size = new System.Drawing.Size(19, 19);
  203. this._backgroundImageSelectButton.TabIndex = 11;
  204. this._backgroundImageSelectButton.Text = "...";
  205. this._backgroundImageSelectButton.Click += new EventHandler(OnSelectBackgroundImage);
  206. // 
  207. // _imageStyleLabel
  208. // 
  209. this._imageStyleLabel.Location = new System.Drawing.Point(16, 152);
  210. this._imageStyleLabel.Name = "_imageStyleLabel";
  211. this._imageStyleLabel.Size = new System.Drawing.Size(96, 16);
  212. this._imageStyleLabel.TabIndex = 12;
  213. this._imageStyleLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
  214. // 
  215. // _imageStyleBox
  216. // 
  217. this._imageStyleBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
  218. this._imageStyleBox.Location = new System.Drawing.Point(120, 152);
  219. this._imageStyleBox.Name = "_imageStyleBox";
  220. this._imageStyleBox.Size = new System.Drawing.Size(112, 19);
  221. this._imageStyleBox.TabIndex = 13;
  222. // 
  223. // _okButton
  224. // 
  225. this._okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
  226. this._okButton.Location = new System.Drawing.Point(208, 180);
  227. this._okButton.Name = "_okButton";
  228. this._okButton.FlatStyle = FlatStyle.System;
  229. this._okButton.TabIndex = 14;
  230. this._okButton.Click += new EventHandler(OnOK);
  231. // 
  232. // _cancelButton
  233. // 
  234. this._cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
  235. this._cancelButton.Location = new System.Drawing.Point(288, 180);
  236. this._cancelButton.Name = "_cancelButton";
  237. this._cancelButton.FlatStyle = FlatStyle.System;
  238. this._cancelButton.TabIndex = 15;
  239. // 
  240. // EditRenderProfile
  241. // 
  242. this.AcceptButton = this._okButton;
  243. this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
  244. this.CancelButton = this._cancelButton;
  245. this.ClientSize = new System.Drawing.Size(368, 208);
  246. this.Controls.Add(this._cancelButton);
  247. this.Controls.Add(this._okButton);
  248. this.Controls.Add(this._bgColorLabel);
  249. this.Controls.Add(this._bgColorBox);
  250. this.Controls.Add(this._textColorLabel);
  251. this.Controls.Add(this._textColorBox);
  252. this.Controls.Add(this._editColorEscapeSequence);
  253. this.Controls.Add(this._fontLabel);
  254. this.Controls.Add(this._fontDescription);
  255. this.Controls.Add(this._fontSelectButton);
  256. this.Controls.Add(this._fontSample);
  257. this.Controls.Add(this._backgroundImageLabel);
  258. this.Controls.Add(this._backgroundImageBox);
  259. this.Controls.Add(this._backgroundImageSelectButton);
  260. this.Controls.Add(this._imageStyleLabel);
  261. this.Controls.Add(this._imageStyleBox);
  262. this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
  263. this.MaximizeBox = false;
  264. this.MinimizeBox = false;
  265. this.Name = "EditRenderProfile";
  266. this.ShowInTaskbar = false;
  267. this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
  268. this.ResumeLayout(false);
  269. }
  270. #endregion
  271. private void OnBGColorChanged(object sender, Color e) {
  272. _fontSample.BackColor = e;
  273. _profile.BackColor = e;
  274. }
  275. private void OnTextColorChanged(object sender, Color e) {
  276. _fontSample.ForeColor = e;
  277. _profile.ForeColor = e;
  278. }
  279. private void OnEditColorEscapeSequence(object sender, EventArgs args) {
  280. EditEscapeSequenceColor dlg = new EditEscapeSequenceColor(_fontSample.BackColor, _fontSample.ForeColor, _profile.ESColorSet);
  281. if(GCUtil.ShowModalDialog(this, dlg)==DialogResult.OK) {
  282. _profile.ESColorSet = dlg.Result;
  283. _profile.ForeColor = dlg.GForeColor;
  284. _profile.BackColor = dlg.GBackColor;
  285. _bgColorBox.SelectedColor = dlg.GBackColor;
  286. _textColorBox.SelectedColor = dlg.GForeColor;
  287. _fontSample.ForeColor = dlg.GForeColor;
  288. _fontSample.BackColor = dlg.GBackColor;
  289. _fontSample.Invalidate();
  290. _bgColorBox.Invalidate();
  291. _textColorBox.Invalidate();
  292. }
  293. }
  294. private void OnFontSelect(object sender, EventArgs args) {
  295. GFontDialog gd = new GFontDialog();
  296. Font nf = GUtil.CreateFont(_profile.FontName, _profile.FontSize);
  297. Font jf = GUtil.CreateFont(_profile.JapaneseFontName, _profile.FontSize);
  298. gd.SetFont(_profile.UseClearType, nf, jf);
  299. if(GCUtil.ShowModalDialog(this, gd)==DialogResult.OK) {
  300. Font f = gd.ASCIIFont;
  301. _profile.FontName = f.Name;
  302. _profile.JapaneseFontName = gd.JapaneseFont.Name;
  303. _profile.FontSize = f.Size;
  304. _profile.UseClearType = gd.UseClearType;
  305. _fontSample.Font = f;
  306. AdjustFontDescription(f.Name, gd.JapaneseFont.Name, f.Size);
  307. }
  308. }
  309. private void OnSelectBackgroundImage(object sender, EventArgs args) {
  310. string t = GCUtil.SelectPictureFileByDialog(this);
  311. if(t!=null) {
  312. _backgroundImageBox.Text = t;
  313. _profile.BackgroundImageFileName = t;
  314. }
  315. }
  316. private void AdjustFontDescription(string ascii, string japanese, float fsz) {
  317. int sz = (int)(fsz+0.5);
  318. if(GApp.Options.Language==Language.English || ascii==japanese)
  319. _fontDescription.Text = String.Format("{0},{1}pt", ascii, sz); //Single傪int偵僉儍僗僩偡傞偲愗傝幪偰偩偑丄巐幪屲擖偵偟偰傎偟偄偺偱0.5傪懌偟偰偐傜愗傝幪偰傞
  320. else
  321. _fontDescription.Text = String.Format("{0}/{1},{2}pt", ascii, japanese, sz); 
  322. }
  323.         private void InitUI()
  324.         {
  325. AdjustFontDescription(_profile.FontName, _profile.JapaneseFontName, _profile.FontSize);
  326. _fontSample.Font = GUtil.CreateFont(_profile.FontName, _profile.FontSize);
  327. _fontSample.BackColor = _profile.BackColor;
  328. _fontSample.ForeColor = _profile.ForeColor;
  329. _fontSample.ClearType = _profile.UseClearType;
  330. _fontSample.Invalidate(true);
  331. _backgroundImageBox.Text = _profile.BackgroundImageFileName;
  332. _bgColorBox.SelectedColor = _profile.BackColor;
  333. _textColorBox.SelectedColor = _profile.ForeColor;
  334. _imageStyleBox.SelectedIndex = (int)_profile.ImageStyle;
  335. }
  336. private void OnOK(object sender, EventArgs args) {
  337. if(_backgroundImageBox.Text.Length>0) {
  338. try {
  339. Image.FromFile(_backgroundImageBox.Text);
  340. }
  341. catch(Exception) {
  342. GUtil.Warning(this, String.Format(GApp.Strings.GetString("Message.EditRenderProfile.InvalidPicture"), _backgroundImageBox.Text));
  343. this.DialogResult = DialogResult.None;
  344. return;
  345. }
  346. }
  347. _profile.BackgroundImageFileName = _backgroundImageBox.Text;
  348. _profile.ImageStyle = (ImageStyle)_imageStyleBox.SelectedIndex;
  349. }
  350. public RenderProfile Result {
  351. get {
  352. return _profile;
  353. }
  354. }
  355.  
  356. }
  357. }