diff --git a/src/behavior_senpai/file_inout.py b/src/behavior_senpai/file_inout.py index ea59982..8b60d30 100644 --- a/src/behavior_senpai/file_inout.py +++ b/src/behavior_senpai/file_inout.py @@ -139,21 +139,3 @@ def save_pkl(org_pkl_path, dst_df, proc_history=None): dst_df.to_pickle(file_name) called_in = os.path.basename(inspect.stack()[1].filename) print(f"{called_in} > {os.path.basename(os.path.basename(file_name))}") - - -def pkl_to_csv(init_dir="~"): - """ - pklファイルをcsvファイルに変換する - ダイアログを開きファイルを選択させ、同じディレクトリにcsvファイルを保存する - """ - pkl_path = open_pkl(init_dir) - if pkl_path == "" or pkl_path is None: - print("pkl_to_csv() canceled.") - return - csv_path = os.path.splitext(pkl_path)[0] + ".csv" - df = load_track_file(pkl_path, allow_calculated_track_file=True) - if df is None: - return - df.to_csv(csv_path) - csv_name = os.path.basename(csv_path) - return csv_name diff --git a/src/launcher.py b/src/launcher.py index 7613b51..549a520 100644 --- a/src/launcher.py +++ b/src/launcher.py @@ -42,9 +42,7 @@ def __init__(self, master): detect_label = ttk.Label(buttons_frame, text="Preparation") detect_label.pack(side=tk.TOP) - v2k_button = ttk.Button( - buttons_frame, text="Detect", command=lambda: self.launch_detect_window() - ) + v2k_button = ttk.Button(buttons_frame, text="Detect", command=lambda: self.launch_detect_window()) v2k_button.pack(side=tk.TOP, fill=tk.X, pady=4) self.tl_button = ttk.Button( buttons_frame, @@ -58,36 +56,28 @@ def __init__(self, master): self.member_edit_button = ttk.Button( buttons_frame, text="Member", - command=lambda: self.launch_window( - app_member_edit.App, dialog_size="1000x750", edit_df=True, grab=True - ), + command=lambda: self.launch_window(app_member_edit.App, dialog_size="1000x750", edit_df=True, grab=True), state=tk.DISABLED, ) self.member_edit_button.pack(side=tk.TOP, fill=tk.X, pady=4) self.area_filter_button = ttk.Button( buttons_frame, text="Area", - command=lambda: self.launch_window( - app_area_filter.App, edit_df=True, grab=True - ), + command=lambda: self.launch_window(app_area_filter.App, edit_df=True, grab=True), state=tk.DISABLED, ) self.area_filter_button.pack(side=tk.TOP, fill=tk.X, pady=4) self.smooth_button = ttk.Button( buttons_frame, text="Smooth", - command=lambda: self.launch_window( - app_smoothing.App, dialog_size="1000x750", edit_df=True, grab=True - ), + command=lambda: self.launch_window(app_smoothing.App, dialog_size="1000x750", edit_df=True, grab=True), state=tk.DISABLED, ) self.smooth_button.pack(side=tk.TOP, fill=tk.X, pady=4) self.scene_table_button = ttk.Button( buttons_frame, text="Scene table", - command=lambda: self.launch_window( - app_scene_table.App, edit_df=True, grab=True - ), + command=lambda: self.launch_window(app_scene_table.App, edit_df=True, grab=True), state=tk.DISABLED, ) self.scene_table_button.pack(side=tk.TOP, fill=tk.X, pady=4) @@ -104,18 +94,14 @@ def __init__(self, master): self.multi_point_button = ttk.Button( buttons_frame, text="Multiple points", - command=lambda: self.launch_window( - app_points_calc.App, dialog_size="1200x800" - ), + command=lambda: self.launch_window(app_points_calc.App, dialog_size="1200x800"), state=tk.DISABLED, ) self.multi_point_button.pack(side=tk.TOP, fill=tk.X, pady=4) self.feat_mix_button = ttk.Button( buttons_frame, text="Mix/Norm", - command=lambda: self.launch_window( - app_feat_mix.App, dialog_size="1200x800" - ), + command=lambda: self.launch_window(app_feat_mix.App, dialog_size="1200x800"), state=tk.DISABLED, ) self.feat_mix_button.pack(side=tk.TOP, fill=tk.X, pady=4) @@ -135,10 +121,6 @@ def __init__(self, master): command=lambda: self.launch_window(pref_list.App), ) pref_list_button.pack(side=tk.TOP, fill=tk.X, pady=4) - pkl_to_csv_button = ttk.Button( - buttons_frame, text="PKL to CSV tool", command=self.pkl_to_csv - ) - pkl_to_csv_button.pack(side=tk.TOP, fill=tk.X, pady=4) # srcにlicense.jsonがある場合はボタンを表示 license_path = "./src/license.json" @@ -171,17 +153,13 @@ def __init__(self, master): self.go_to_folder_btn = ttk.Button( calc_case_frame, text="Open calc folder", - command=lambda: windows_and_mac.go_to_folder( - os.path.dirname(os.path.dirname(self.pkl_path)), "calc" - ), + command=lambda: windows_and_mac.go_to_folder(os.path.dirname(os.path.dirname(self.pkl_path)), "calc"), ) self.go_to_folder_btn.pack(padx=(4, 0)) save_frame = ttk.Frame(head_frame) save_frame.pack(anchor=tk.E) - self.save_button = ttk.Button( - save_frame, text="Overwrite", command=self.overwrite, width=10 - ) + self.save_button = ttk.Button(save_frame, text="Overwrite", command=self.overwrite, width=10) self.save_button.pack() self.save_button["state"] = tk.DISABLED compare_button = ttk.Button( @@ -202,14 +180,10 @@ def __init__(self, master): attrs_frame = ttk.Frame(view_frame) attrs_frame.pack(side=tk.RIGHT, anchor=tk.N) - self.attrs_textbox = tk.Text( - attrs_frame, relief=tk.FLAT, width=40, padx=10, pady=10 - ) + self.attrs_textbox = tk.Text(attrs_frame, relief=tk.FLAT, width=40, padx=10, pady=10) self.attrs_textbox.pack(fill=tk.BOTH, expand=True, padx=(10, 0)) - keypoints_btn = ttk.Button( - attrs_frame, text="Keypoint samples", command=self.open_kp_samples - ) + keypoints_btn = ttk.Button(attrs_frame, text="Keypoint samples", command=self.open_kp_samples) keypoints_btn.pack(padx=(10, 0), pady=(5, 0), expand=True, fill=tk.X) self.vcap = vcap.VideoCap() @@ -255,16 +229,11 @@ def load(self, event=None): self.pkl_dir = os.path.dirname(self.pkl_path) self.vcap.set_frame_size(src_attrs.attrs["frame_size"]) if isinstance(src_attrs.attrs["video_name"], list): - video_list = [ - os.path.abspath(os.path.join(self.pkl_dir, os.pardir, video)) - for video in src_attrs.attrs["video_name"] - ] + video_list = [os.path.abspath(os.path.join(self.pkl_dir, os.pardir, video)) for video in src_attrs.attrs["video_name"]] self.cap = vcap.MultiVcap(self.vcap) self.cap.open_files(video_list) else: - self.vcap.open_file( - os.path.join(self.pkl_dir, os.pardir, src_attrs.attrs["video_name"]) - ) + self.vcap.open_file(os.path.join(self.pkl_dir, os.pardir, src_attrs.attrs["video_name"])) self.cap = self.vcap # UIの更新 @@ -348,10 +317,7 @@ def launch_window(self, app, dialog_size="", edit_df=False, grab=False): return if self.a.dst_df is None: return - if ( - self.src_df.equals(self.a.dst_df) is True - and self.src_df.attrs == self.a.dst_df.attrs - ): + if self.src_df.equals(self.a.dst_df) is True and self.src_df.attrs == self.a.dst_df.attrs: return print("DataFrame Updated") @@ -371,7 +337,9 @@ def launch_window(self, app, dialog_size="", edit_df=False, grab=False): print(f"member_num = {member_count}") def launch_dlc_to_trk(self, h5_path): + window_pos = self.master.geometry().split("+")[1:] dlg_modal = tk.Toplevel(self) + dlg_modal.geometry(f"+{window_pos[0]}+{window_pos[1]}") dlg_modal.focus_set() dlg_modal.grab_set() dlg_modal.transient(self.master) @@ -385,15 +353,6 @@ def open_kp_samples(self): kp_sample_dialog = app_keypoint_samples.App(self, dataset_name) self.wait_window(kp_sample_dialog) - def pkl_to_csv(self): - dir_path = os.path.dirname(self.pkl_path) - csv_name = file_inout.pkl_to_csv(dir_path) - if csv_name is None: - return - messagebox.showinfo( - "PKL to CSV", f"Conversion finished.\nfile name: {csv_name}" - ) - def overwrite(self): pkl_name = file_inout.overwrite_track_file(self.pkl_path, self.src_df) messagebox.showinfo("Overwrite", f"Overwritten.\nfile name: {pkl_name}")