green.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import os
  2. import gradio as gr
  3. from toolbox import get_conf
  4. CODE_HIGHLIGHT, ADD_WAIFU, LAYOUT = get_conf("CODE_HIGHLIGHT", "ADD_WAIFU", "LAYOUT")
  5. theme_dir = os.path.dirname(__file__)
  6. def adjust_theme():
  7. try:
  8. set_theme = gr.themes.Soft(
  9. primary_hue=gr.themes.Color(
  10. c50="#EBFAF2",
  11. c100="#CFF3E1",
  12. c200="#A8EAC8",
  13. c300="#77DEA9",
  14. c400="#3FD086",
  15. c500="#02C160",
  16. c600="#06AE56",
  17. c700="#05974E",
  18. c800="#057F45",
  19. c900="#04673D",
  20. c950="#2E5541",
  21. name="small_and_beautiful",
  22. ),
  23. secondary_hue=gr.themes.Color(
  24. c50="#576b95",
  25. c100="#576b95",
  26. c200="#576b95",
  27. c300="#576b95",
  28. c400="#576b95",
  29. c500="#576b95",
  30. c600="#576b95",
  31. c700="#576b95",
  32. c800="#576b95",
  33. c900="#576b95",
  34. c950="#576b95",
  35. ),
  36. neutral_hue=gr.themes.Color(
  37. name="gray",
  38. c50="#f6f7f8",
  39. # c100="#f3f4f6",
  40. c100="#F2F2F2",
  41. c200="#e5e7eb",
  42. c300="#d1d5db",
  43. c400="#B2B2B2",
  44. c500="#808080",
  45. c600="#636363",
  46. c700="#515151",
  47. c800="#393939",
  48. # c900="#272727",
  49. c900="#2B2B2B",
  50. c950="#171717",
  51. ),
  52. radius_size=gr.themes.sizes.radius_sm,
  53. ).set(
  54. button_primary_background_fill="*primary_500",
  55. button_primary_background_fill_dark="*primary_600",
  56. button_primary_background_fill_hover="*primary_400",
  57. button_primary_border_color="*primary_500",
  58. button_primary_border_color_dark="*primary_600",
  59. button_primary_text_color="white",
  60. button_primary_text_color_dark="white",
  61. button_secondary_background_fill="*neutral_100",
  62. button_secondary_background_fill_hover="*neutral_50",
  63. button_secondary_background_fill_dark="*neutral_900",
  64. button_secondary_text_color="*neutral_800",
  65. button_secondary_text_color_dark="white",
  66. background_fill_primary="*neutral_50",
  67. background_fill_primary_dark="#1F1F1F",
  68. block_title_text_color="*primary_500",
  69. block_title_background_fill_dark="*primary_900",
  70. block_label_background_fill_dark="*primary_900",
  71. input_background_fill="#F6F6F6",
  72. chatbot_code_background_color="*neutral_950",
  73. chatbot_code_background_color_dark="*neutral_950",
  74. )
  75. with open(os.path.join(theme_dir, "common.js"), "r", encoding="utf8") as f:
  76. js = f"<script>{f.read()}</script>"
  77. # 添加一个萌萌的看板娘
  78. if ADD_WAIFU:
  79. js += """
  80. <script src="file=docs/waifu_plugin/jquery.min.js"></script>
  81. <script src="file=docs/waifu_plugin/jquery-ui.min.js"></script>
  82. <script src="file=docs/waifu_plugin/autoload.js"></script>
  83. """
  84. with open(os.path.join(theme_dir, "green.js"), "r", encoding="utf8") as f:
  85. js += f"<script>{f.read()}</script>"
  86. if not hasattr(gr, "RawTemplateResponse"):
  87. gr.RawTemplateResponse = gr.routes.templates.TemplateResponse
  88. gradio_original_template_fn = gr.RawTemplateResponse
  89. def gradio_new_template_fn(*args, **kwargs):
  90. res = gradio_original_template_fn(*args, **kwargs)
  91. res.body = res.body.replace(b"</html>", f"{js}</html>".encode("utf8"))
  92. res.init_headers()
  93. return res
  94. gr.routes.templates.TemplateResponse = (
  95. gradio_new_template_fn # override gradio template
  96. )
  97. except:
  98. set_theme = None
  99. print("gradio版本较旧, 不能自定义字体和颜色")
  100. return set_theme
  101. with open(os.path.join(theme_dir, "green.css"), "r", encoding="utf-8") as f:
  102. advanced_css = f.read()
  103. with open(os.path.join(theme_dir, "common.css"), "r", encoding="utf-8") as f:
  104. advanced_css += f.read()