Advertisement
Guest User

Untitled

a guest
Jan 5th, 2024
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. import os
  2. import tkinter as tk
  3. from tkinter import messagebox, Label, Entry, Button, Checkbutton, IntVar
  4. import pygetwindow as gw
  5.  
  6. def get_window_title(drive, folder_path):
  7. return f"{drive} - {folder_path}"
  8.  
  9. def focus_or_open_folder(folder_path, drive):
  10. global j_window, n_window
  11.  
  12. target_title = get_window_title(drive, folder_path)
  13. windows = gw.getWindowsWithTitle(target_title)
  14.  
  15. if windows:
  16. windows[0].activate()
  17. else:
  18. os.startfile(folder_path)
  19. if drive == 'J':
  20. j_window = target_title
  21. elif drive == 'N':
  22. n_window = target_title
  23.  
  24. def open_folder_j(folder_number, single_window_mode):
  25. if 1 <= folder_number <= 999:
  26. parent_dir = "001-999"
  27. else:
  28. parent_dir = f"{folder_number // 1000:02}000"
  29. folder_path = f"J:/{parent_dir}/{folder_number}"
  30. open_folder(folder_path, "J", single_window_mode)
  31.  
  32. def open_folder_n(folder_number, single_window_mode):
  33. parent_num = folder_number // 1000 * 1000
  34. if folder_number % 1000 <= 249:
  35. sub_folder = "a"
  36. elif folder_number % 1000 <= 499:
  37. sub_folder = "b"
  38. elif folder_number % 1000 <= 749:
  39. sub_folder = "c"
  40. else:
  41. sub_folder = "d"
  42. folder_path = f"N:/Land Projects {parent_num}{sub_folder}/{folder_number}"
  43. open_folder(folder_path, "N", single_window_mode)
  44.  
  45. def open_folder(folder_path, drive, single_window_mode):
  46. if single_window_mode:
  47. focus_or_open_folder(folder_path, drive)
  48. else:
  49. os.startfile(folder_path)
  50.  
  51. def process_input(event=None):
  52. input_str = folder_input.get().strip().lower()
  53. parts = input_str.split()
  54. single_window_mode = single_window_var.get() == 1
  55.  
  56. if len(parts) == 1 and parts[0].isdigit():
  57. folder_number = int(parts[0])
  58. open_folder_j(folder_number, single_window_mode)
  59. open_folder_n(folder_number, single_window_mode)
  60. elif len(parts) == 2 and parts[0] in ['j', 'n'] and parts[1].isdigit():
  61. folder_number = int(parts[1])
  62. if parts[0] == 'j':
  63. open_folder_j(folder_number, single_window_mode)
  64. elif parts[0] == 'n':
  65. open_folder_n(folder_number, single_window_mode)
  66. else:
  67. messagebox.showerror("Error", "Invalid input format. Use format 'Drive Letter Space FolderNumber'")
  68.  
  69. def update_checkboxes():
  70. if single_window_var.get() == 1:
  71. multiple_windows_var.set(0)
  72. elif multiple_windows_var.get() == 1:
  73. single_window_var.set(0)
  74.  
  75. if __name__ == "__main__":
  76. root = tk.Tk()
  77. root.title("Folder Opener")
  78. root.geometry("400x300")
  79.  
  80. instruction_text = "Enter drive letter (j/n) followed by the folder number (e.g., j 22500). Typing just the folder number will open both."
  81. instruction_label = Label(root, text=instruction_text, wraplength=380, justify="left")
  82. instruction_label.pack(pady=(10,0))
  83.  
  84. folder_input = Entry(root)
  85. folder_input.pack(pady=(5,5))
  86. folder_input.bind("<Return>", process_input)
  87. folder_input.focus_set()
  88.  
  89. single_window_var = IntVar()
  90. single_window_check = Checkbutton(root, text="Two Single Windows", variable=single_window_var, command=update_checkboxes)
  91. single_window_check.pack()
  92.  
  93. multiple_windows_var = IntVar()
  94. multiple_windows_check = Checkbutton(root, text="Multiple Windows", variable=multiple_windows_var, command=update_checkboxes)
  95. multiple_windows_check.pack()
  96.  
  97. open_button = Button(root, text="Open Folder", command=process_input)
  98. open_button.pack(pady=(5,10))
  99.  
  100. root.mainloop()
  101.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement