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

Telnet服务器

开发平台:

C#

  1. /*
  2.  Copyright (c) 2005 Poderosa Project, All Rights Reserved.
  3.  $Id: ConfigColorAttr.cs,v 1.2 2005/04/20 09:06:04 okajima Exp $
  4. */
  5. using System;
  6. using System.Diagnostics;
  7. using System.Reflection;
  8. using System.Drawing;
  9. namespace Poderosa.Config
  10. {
  11. //Color傪捈愙Attribute偺掕媊偵巊偆偙偲偼偱偒側偄両
  12. public enum LateBindColors {
  13. Empty,
  14. Window,
  15. WindowText
  16. }
  17. [AttributeUsage(AttributeTargets.Field, AllowMultiple=false)]
  18. public class ConfigColorElementAttribute : ConfigElementAttribute {
  19. private LateBindColors _initial;
  20. public LateBindColors Initial {
  21. get {
  22. return _initial;
  23. }
  24. set {
  25. _initial = value;
  26. }
  27. }
  28. private static Color ToColor(LateBindColors value) {
  29. switch(value) {
  30. case LateBindColors.Empty:
  31. return Color.Empty;
  32. case LateBindColors.Window:
  33. return SystemColors.Window;
  34. case LateBindColors.WindowText:
  35. return SystemColors.WindowText;
  36. }
  37. Debug.Assert(false, "should not reach here");
  38. return Color.Empty;
  39. }
  40. public override void ExportTo(object holder, ConfigNode node) {
  41. Color value = (Color)_fieldInfo.GetValue(holder);
  42. if(value!=ToColor(_initial))
  43. node[_externalName] = value.Name;
  44. }
  45. public override void ImportFrom(object holder, ConfigNode node) {
  46. _fieldInfo.SetValue(holder, GUtil.ParseColor(node[_externalName], ToColor(_initial)));
  47. }
  48. public override void Reset(object holder) {
  49. _fieldInfo.SetValue(holder, ToColor(_initial));
  50. }
  51. }
  52. }