hotel.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import tkinter as tk
  2. from tkinter import ttk
  3. from utils.config import config
  4. from select_combobox import SelectCombobox
  5. import updates.fofa.fofa_map as fofa_map
  6. class HotelUI:
  7. def init_ui(self, root):
  8. """
  9. Init hotel UI
  10. """
  11. frame_hotel_open_hotel = tk.Frame(root)
  12. frame_hotel_open_hotel.pack(fill=tk.X)
  13. self.open_hotel_label = tk.Label(
  14. frame_hotel_open_hotel, text="开启酒店源:", width=9
  15. )
  16. self.open_hotel_label.pack(side=tk.LEFT, padx=4, pady=8)
  17. self.open_hotel_var = tk.BooleanVar(
  18. value=config.getboolean("Settings", "open_hotel", fallback=True)
  19. )
  20. self.open_hotel_checkbutton = ttk.Checkbutton(
  21. frame_hotel_open_hotel,
  22. variable=self.open_hotel_var,
  23. onvalue=True,
  24. offvalue=False,
  25. command=self.update_open_hotel,
  26. )
  27. self.open_hotel_checkbutton.pack(side=tk.LEFT, padx=4, pady=8)
  28. frame_hotel_mode = tk.Frame(root)
  29. frame_hotel_mode.pack(fill=tk.X)
  30. self.open_hotel_mode_label = tk.Label(
  31. frame_hotel_mode, text="工作模式:", width=9
  32. )
  33. self.open_hotel_mode_label.pack(side=tk.LEFT, padx=4, pady=8)
  34. self.open_hotel_tonkiang_var = tk.BooleanVar(
  35. value=config.getboolean("Settings", "open_hotel_tonkiang", fallback=False)
  36. )
  37. self.open_hotel_tonkiang_checkbutton = ttk.Checkbutton(
  38. frame_hotel_mode,
  39. variable=self.open_hotel_tonkiang_var,
  40. onvalue=True,
  41. offvalue=False,
  42. command=self.update_open_hotel_tonkiang,
  43. text="Tonkiang",
  44. )
  45. self.open_hotel_tonkiang_checkbutton.pack(side=tk.LEFT, padx=4, pady=8)
  46. self.open_hotel_fofa_var = tk.BooleanVar(
  47. value=config.getboolean("Settings", "open_hotel_fofa", fallback=True)
  48. )
  49. self.open_hotel_fofa_checkbutton = ttk.Checkbutton(
  50. frame_hotel_mode,
  51. variable=self.open_hotel_fofa_var,
  52. onvalue=True,
  53. offvalue=False,
  54. command=self.update_open_hotel_fofa,
  55. text="FOFA",
  56. )
  57. self.open_hotel_fofa_checkbutton.pack(side=tk.LEFT, padx=4, pady=8)
  58. frame_hotel_region_list = tk.Frame(root)
  59. frame_hotel_region_list.pack(fill=tk.X)
  60. self.region_list_label = tk.Label(
  61. frame_hotel_region_list, text="酒店地区:", width=9
  62. )
  63. self.region_list_label.pack(side=tk.LEFT, padx=4, pady=8)
  64. regions = ["全部"] + list(getattr(fofa_map, "region_url").keys())
  65. region_selected_values = [
  66. value.strip()
  67. for value in config.get(
  68. "Settings", "hotel_region_list", fallback="全部"
  69. ).split(",")
  70. if value.strip()
  71. ]
  72. self.region_list_combo = SelectCombobox(
  73. frame_hotel_region_list,
  74. values=regions,
  75. selected_values=region_selected_values,
  76. height=10,
  77. command=self.update_region_list,
  78. )
  79. self.region_list_combo.pack(
  80. side=tk.LEFT, padx=4, pady=8, expand=True, fill=tk.BOTH
  81. )
  82. frame_hotel_page_num = tk.Frame(root)
  83. frame_hotel_page_num.pack(fill=tk.X)
  84. self.page_num_label = tk.Label(frame_hotel_page_num, text="获取页数:", width=9)
  85. self.page_num_label.pack(side=tk.LEFT, padx=4, pady=8)
  86. self.page_num_entry = tk.Entry(frame_hotel_page_num)
  87. self.page_num_entry.pack(side=tk.LEFT, padx=4, pady=8)
  88. self.page_num_entry.insert(
  89. 0, config.getint("Settings", "hotel_page_num", fallback=3)
  90. )
  91. self.page_num_entry.bind("<KeyRelease>", self.update_page_num)
  92. def update_open_hotel(self):
  93. config.set("Settings", "open_hotel", str(self.open_hotel_var.get()))
  94. def update_open_hotel_tonkiang(self):
  95. config.set(
  96. "Settings", "open_hotel_tonkiang", str(self.open_hotel_tonkiang_var.get())
  97. )
  98. def update_open_hotel_fofa(self):
  99. config.set("Settings", "open_hotel_fofa", str(self.open_hotel_fofa_var.get()))
  100. def update_region_list(self, event):
  101. config.set(
  102. "Settings",
  103. "hotel_region_list",
  104. ",".join(self.region_list_combo.selected_values),
  105. )
  106. def update_page_num(self, event):
  107. config.set("Settings", "hotel_page_num", self.page_num_entry.get())
  108. def change_entry_state(self, state):
  109. for entry in [
  110. "open_hotel_checkbutton",
  111. "open_hotel_tonkiang_checkbutton",
  112. "open_hotel_fofa_checkbutton",
  113. "region_list_combo",
  114. "page_num_entry",
  115. ]:
  116. getattr(self, entry).config(state=state)