@@ -2195,8 +2195,19 @@ def show_context_menu(self, pos):
21952195 stats_action .triggered .connect (lambda : self .show_folder_stats (item ))
21962196
21972197 menu .addSeparator ()
2198- pureref_action = menu .addAction (tr ("context_menu.open_pureref" ))
2199- pureref_action .triggered .connect (lambda : self .open_pureref (item ))
2198+
2199+ folder_path = item .data (0 , Qt .ItemDataRole .UserRole )
2200+ folder_root = item .data (0 , Qt .ItemDataRole .UserRole + 3 )
2201+ if folder_path and folder_root :
2202+ folder_full = Path (folder_root ) / folder_path
2203+ has_pur = self .pureref_manager .has_pur_file (folder_full )
2204+ pureref_text = tr ("context_menu.open_pureref" ) if has_pur else tr ("context_menu.create_pureref" )
2205+ pureref_action = menu .addAction (pureref_text )
2206+ pureref_action .triggered .connect (lambda : self .open_pureref (item ))
2207+
2208+ delete_pureref_action = menu .addAction (tr ("context_menu.delete_pureref" ))
2209+ delete_pureref_action .setEnabled (has_pur )
2210+ delete_pureref_action .triggered .connect (lambda : self .delete_pureref (item ))
22002211
22012212 menu .addSeparator ()
22022213
@@ -2723,6 +2734,42 @@ def open_pureref(self, item):
27232734 msg = tr ("pureref.launch_error" , error = err_detail )
27242735 QMessageBox .warning (self , tr ("error.title" ), msg )
27252736
2737+ def delete_pureref (self , item ):
2738+ """Delete PureRef file for the folder."""
2739+ path = item .data (0 , Qt .ItemDataRole .UserRole )
2740+ root_path = item .data (0 , Qt .ItemDataRole .UserRole + 3 )
2741+
2742+ if not path or not root_path :
2743+ return
2744+
2745+ folder = Path (root_path ) / path
2746+
2747+ if not self .pureref_manager .has_pur_file (folder ):
2748+ return
2749+
2750+ file_size = self .pureref_manager .get_file_size (folder )
2751+
2752+ if file_size > 0 :
2753+ reply = QMessageBox .question (
2754+ self ,
2755+ tr ("dialog.confirm" ),
2756+ tr ("pureref.confirm_delete_nonempty" ),
2757+ QMessageBox .StandardButton .Yes | QMessageBox .StandardButton .No ,
2758+ QMessageBox .StandardButton .No
2759+ )
2760+ if reply != QMessageBox .StandardButton .Yes :
2761+ return
2762+
2763+ success , error = self .pureref_manager .delete (folder )
2764+ if success :
2765+ self .info_label .setText (tr ("pureref.delete_success" ))
2766+ QTimer .singleShot (3000 , lambda : self .info_label .clear ())
2767+ else :
2768+ msg = tr ("pureref.delete_error" , error = error .split (":" , 1 )[1 ] if ":" in error else error )
2769+ QMessageBox .warning (self , tr ("error.title" ), msg )
2770+
2771+ self .load_courses ()
2772+
27262773 def open_video_directory (self , item ):
27272774 file_path = item .data (0 , Qt .ItemDataRole .UserRole )
27282775 if file_path and Path (file_path ).exists ():
0 commit comments