69 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import bpy
 | 
						|
from bpy.types import WorkSpaceTool
 | 
						|
from gpu_extras.presets import draw_circle_2d
 | 
						|
from time import time
 | 
						|
from .utils import get_addon_prefs
 | 
						|
 | 
						|
 | 
						|
class GPTB_WT_eraser(WorkSpaceTool):
 | 
						|
    bl_space_type = 'VIEW_3D'
 | 
						|
    bl_context_mode = 'PAINT_GREASE_PENCIL'
 | 
						|
 | 
						|
    # The prefix of the idname should be your add-on name.
 | 
						|
    bl_idname = "gp.eraser_tool"
 | 
						|
    bl_label = "Eraser"
 | 
						|
    bl_description = (
 | 
						|
        "This is a tooltip\n"
 | 
						|
        "with multiple lines"
 | 
						|
    )
 | 
						|
    bl_icon = "brush.paint_vertex.draw"
 | 
						|
    bl_widget = None
 | 
						|
    bl_keymap = (
 | 
						|
        ("gp.eraser", {"type": 'LEFTMOUSE', "value": 'PRESS'},
 | 
						|
         {"properties": []}),
 | 
						|
        ("wm.radial_control", {"type": 'F', "value": 'PRESS'},
 | 
						|
         {"properties": [("data_path_primary", 'scene.gptoolprops.eraser_radius')]}),
 | 
						|
    )
 | 
						|
    
 | 
						|
    bl_cursor = 'DOT'
 | 
						|
    
 | 
						|
    '''
 | 
						|
    def draw_cursor(context, tool, xy):
 | 
						|
        from gpu_extras.presets import draw_circle_2d
 | 
						|
 | 
						|
        radius = context.scene.gptoolprops.eraser_radius
 | 
						|
        draw_circle_2d(xy, (0.75, 0.25, 0.35, 0.85), radius, 32)
 | 
						|
    '''
 | 
						|
        
 | 
						|
    def draw_settings(context, layout, tool):
 | 
						|
        layout.prop(context.scene.gptoolprops, "eraser_radius")
 | 
						|
 | 
						|
### --- REGISTER ---
 | 
						|
 | 
						|
## --- KEYMAP
 | 
						|
addon_keymaps = []
 | 
						|
def register_keymaps():
 | 
						|
    addon = bpy.context.window_manager.keyconfigs.addon
 | 
						|
 | 
						|
    km = addon.keymaps.new(name="Grease Pencil Stroke Paint (Draw brush)", space_type="EMPTY", region_type='WINDOW')
 | 
						|
    kmi = km.keymap_items.new("gp.eraser", type='LEFTMOUSE', value="PRESS", ctrl=True)
 | 
						|
 | 
						|
    prefs = get_addon_prefs()
 | 
						|
    kmi.active = prefs.use_precise_eraser
 | 
						|
    addon_keymaps.append((km, kmi))
 | 
						|
 | 
						|
def unregister_keymaps():
 | 
						|
    for km, kmi in addon_keymaps:
 | 
						|
        km.keymap_items.remove(kmi)
 | 
						|
    addon_keymaps.clear()
 | 
						|
 | 
						|
def register():
 | 
						|
    bpy.utils.register_tool(GPTB_WT_eraser, after={"builtin.cursor"})
 | 
						|
    #bpy.context.window_manager.keyconfigs.default.keymaps['Grease Pencil Stroke Paint (Draw brush)'].keymap_items[3].idname = 'gp.eraser'
 | 
						|
 | 
						|
    register_keymaps()
 | 
						|
 | 
						|
def unregister():
 | 
						|
    bpy.utils.unregister_tool(GPTB_WT_eraser)
 | 
						|
    unregister_keymaps()
 |