def remove(self) -> bool: """Remove a macro and all its related files Returns True if the macro was removed correctly. """ if not self.is_installed(): # Macro not installed, nothing to do. return True macro_dir = FreeCAD.getUserMacroDir(True) macro_path = os.path.join(macro_dir, self.filename) macro_path_with_macro_prefix = os.path.join(macro_dir, "Macro_" + self.filename) if os.path.exists(macro_path): os.remove(macro_path) elif os.path.exists(macro_path_with_macro_prefix): os.remove(macro_path_with_macro_prefix) # Remove related files, which are supposed to be given relative to # self.src_filename. for other_file in self.other_files: dst_file = os.path.join(macro_dir, other_file) try: os.remove(dst_file) remove_directory_if_empty(os.path.dirname(dst_file)) except Exception: FreeCAD.Console.PrintWarning( translate( "AddonsInstaller", "Failed to remove macro file '{}': it might not exist, or its permissions changed", ).format(dst_file) + "\n" ) return True
def remove(self) -> bool: """Remove a macro and all its related files Returns True if the macro was removed correctly. """ if not self.is_installed(): # Macro not installed, nothing to do. return True macro_dir = FreeCAD.getUserMacroDir(True) macro_path = os.path.join(macro_dir, self.filename) macro_path_with_macro_prefix = os.path.join(macro_dir, "Macro_" + self.filename) if os.path.exists(macro_path): os.remove(macro_path) elif os.path.exists(macro_path_with_macro_prefix): os.remove(macro_path_with_macro_prefix) # Remove related files, which are supposed to be given relative to # self.src_filename. if self.xpm: xpm_file = os.path.join(macro_dir, self.name + "_icon.xpm") if os.path.exists(xpm_file): os.remove(xpm_file) for other_file in self.other_files: if not other_file: continue FreeCAD.Console.PrintMessage(f"{other_file}...") dst_file = os.path.join(macro_dir, other_file) if not dst_file or not os.path.exists(dst_file): FreeCAD.Console.PrintMessage(f"X\n") continue try: os.remove(dst_file) remove_directory_if_empty(os.path.dirname(dst_file)) FreeCAD.Console.PrintMessage("✓\n") except Exception: FreeCAD.Console.PrintMessage(f"?\n") if os.path.isabs(self.icon): dst_file = os.path.normpath( os.path.join(macro_dir, os.path.basename(self.icon))) if os.path.exists(dst_file): try: FreeCAD.Console.PrintMessage( f"{os.path.basename(self.icon)}...") os.remove(dst_file) FreeCAD.Console.PrintMessage("✓\n") except Exception: FreeCAD.Console.PrintMessage(f"?\n") return True