Index: trunk/src/tool.h =================================================================== --- trunk/src/tool.h (revision 25413) +++ trunk/src/tool.h (revision 25414) @@ -64,6 +64,10 @@ #define PCB_TOOL_CURSOR_NAMED(name) { name, NULL, NULL } #define PCB_TOOL_CURSOR_XBM(pixel, mask) { NULL, pixel, mask } +typedef enum pcb_tool_flags_e { + PCB_TLF_AUTO_TOOLBAR /* automatically insert in the toolbar if the menu file didn't do it */ +} pcb_tool_flags_t; + typedef struct pcb_tool_s { const char *name; /* textual name of the tool */ const char *cookie; /* plugin cookie _pointer_ of the registrar (comparision is pointer based, not strcmp) */ @@ -70,6 +74,7 @@ unsigned int priority; /* lower values are higher priorities; escaping mode will try to select the highest prio tool */ const char **icon; /* XPM for the tool buttons */ pcb_tool_cursor_t cursor; /* name of the mouse cursor to switch to when the tool is activated */ + pcb_tool_flags_t flags; /* tool implementation */ void (*init)(void); Index: trunk/src/tool_arc.c =================================================================== --- trunk/src/tool_arc.c (revision 25413) +++ trunk/src/tool_arc.c (revision 25414) @@ -222,7 +222,7 @@ }; pcb_tool_t pcb_tool_arc = { - "arc", NULL, 100, arc_icon, PCB_TOOL_CURSOR_NAMED("question_arrow"), + "arc", NULL, 100, arc_icon, PCB_TOOL_CURSOR_NAMED("question_arrow"), 0, pcb_tool_arc_init, pcb_tool_arc_uninit, pcb_tool_arc_notify_mode, Index: trunk/src/tool_arrow.c =================================================================== --- trunk/src/tool_arrow.c (revision 25413) +++ trunk/src/tool_arrow.c (revision 25414) @@ -248,7 +248,7 @@ }; pcb_tool_t pcb_tool_arrow = { - "arrow", NULL, 10, arrow_icon, PCB_TOOL_CURSOR_NAMED("left_ptr"), + "arrow", NULL, 10, arrow_icon, PCB_TOOL_CURSOR_NAMED("left_ptr"), 0, NULL, pcb_tool_arrow_uninit, pcb_tool_arrow_notify_mode, Index: trunk/src/tool_buffer.c =================================================================== --- trunk/src/tool_buffer.c (revision 25413) +++ trunk/src/tool_buffer.c (revision 25414) @@ -124,7 +124,7 @@ }; pcb_tool_t pcb_tool_buffer = { - "buffer", NULL, 100, buf_icon, PCB_TOOL_CURSOR_NAMED("hand"), + "buffer", NULL, 100, buf_icon, PCB_TOOL_CURSOR_NAMED("hand"), 0, pcb_tool_buffer_init, pcb_tool_buffer_uninit, pcb_tool_buffer_notify_mode, Index: trunk/src/tool_copy.c =================================================================== --- trunk/src/tool_copy.c (revision 25413) +++ trunk/src/tool_copy.c (revision 25414) @@ -115,7 +115,7 @@ } pcb_tool_t pcb_tool_copy = { - "copy", NULL, 100, NULL, PCB_TOOL_CURSOR_NAMED("crosshair"), + "copy", NULL, 100, NULL, PCB_TOOL_CURSOR_NAMED("crosshair"), 0, NULL, pcb_tool_copy_uninit, pcb_tool_copy_notify_mode, Index: trunk/src/tool_insert.c =================================================================== --- trunk/src/tool_insert.c (revision 25413) +++ trunk/src/tool_insert.c (revision 25414) @@ -164,7 +164,7 @@ }; pcb_tool_t pcb_tool_insert = { - "insert", NULL, 100, ins_icon, PCB_TOOL_CURSOR_NAMED("dotbox"), + "insert", NULL, 100, ins_icon, PCB_TOOL_CURSOR_NAMED("dotbox"), 0, NULL, pcb_tool_insert_uninit, pcb_tool_insert_notify_mode, Index: trunk/src/tool_line.c =================================================================== --- trunk/src/tool_line.c (revision 25413) +++ trunk/src/tool_line.c (revision 25414) @@ -497,7 +497,7 @@ pcb_tool_t pcb_tool_line = { - "line", NULL, 100, line_icon, PCB_TOOL_CURSOR_NAMED("pencil"), + "line", NULL, 100, line_icon, PCB_TOOL_CURSOR_NAMED("pencil"), 0, pcb_tool_line_init, pcb_tool_line_uninit, pcb_tool_line_notify_mode, Index: trunk/src/tool_lock.c =================================================================== --- trunk/src/tool_lock.c (revision 25413) +++ trunk/src/tool_lock.c (revision 25414) @@ -119,7 +119,7 @@ 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x7f}; pcb_tool_t pcb_tool_lock = { - "lock", NULL, 100, lock_icon, PCB_TOOL_CURSOR_XBM(lockIcon_bits, lockMask_bits), + "lock", NULL, 100, lock_icon, PCB_TOOL_CURSOR_XBM(lockIcon_bits, lockMask_bits), 0, NULL, NULL, pcb_tool_lock_notify_mode, Index: trunk/src/tool_move.c =================================================================== --- trunk/src/tool_move.c (revision 25413) +++ trunk/src/tool_move.c (revision 25414) @@ -121,7 +121,7 @@ } pcb_tool_t pcb_tool_move = { - "move", NULL, 100, NULL, PCB_TOOL_CURSOR_NAMED("crosshair"), + "move", NULL, 100, NULL, PCB_TOOL_CURSOR_NAMED("crosshair"), 0, NULL, pcb_tool_move_uninit, pcb_tool_move_notify_mode, Index: trunk/src/tool_poly.c =================================================================== --- trunk/src/tool_poly.c (revision 25413) +++ trunk/src/tool_poly.c (revision 25414) @@ -178,7 +178,7 @@ }; pcb_tool_t pcb_tool_poly = { - "poly", NULL, 100, poly_icon, PCB_TOOL_CURSOR_NAMED("up_arrow"), + "poly", NULL, 100, poly_icon, PCB_TOOL_CURSOR_NAMED("up_arrow"), 0, NULL, pcb_tool_poly_uninit, pcb_tool_poly_notify_mode, Index: trunk/src/tool_polyhole.c =================================================================== --- trunk/src/tool_polyhole.c (revision 25413) +++ trunk/src/tool_polyhole.c (revision 25414) @@ -205,7 +205,7 @@ pcb_tool_t pcb_tool_polyhole = { - "polyhole", NULL, 100, polyhole_icon, PCB_TOOL_CURSOR_NAMED("up_arrow"), + "polyhole", NULL, 100, polyhole_icon, PCB_TOOL_CURSOR_NAMED("up_arrow"), 0, NULL, pcb_tool_polyhole_uninit, pcb_tool_polyhole_notify_mode, Index: trunk/src/tool_rectangle.c =================================================================== --- trunk/src/tool_rectangle.c (revision 25413) +++ trunk/src/tool_rectangle.c (revision 25414) @@ -146,7 +146,7 @@ pcb_tool_t pcb_tool_rectangle = { - "rectangle", NULL, 100, rect_icon, PCB_TOOL_CURSOR_NAMED("ul_angle"), + "rectangle", NULL, 100, rect_icon, PCB_TOOL_CURSOR_NAMED("ul_angle"), 0, NULL, pcb_tool_rectangle_uninit, pcb_tool_rectangle_notify_mode, Index: trunk/src/tool_remove.c =================================================================== --- trunk/src/tool_remove.c (revision 25413) +++ trunk/src/tool_remove.c (revision 25414) @@ -114,7 +114,7 @@ }; pcb_tool_t pcb_tool_remove = { - "remove", NULL, 100, del_icon, PCB_TOOL_CURSOR_NAMED("pirate"), + "remove", NULL, 100, del_icon, PCB_TOOL_CURSOR_NAMED("pirate"), 0, NULL, NULL, pcb_tool_remove_notify_mode, Index: trunk/src/tool_rotate.c =================================================================== --- trunk/src/tool_rotate.c (revision 25413) +++ trunk/src/tool_rotate.c (revision 25414) @@ -95,7 +95,7 @@ 0x1f, 0x60, 0x3b, 0x30, 0xe1, 0x3f, 0xc0, 0x0f}; pcb_tool_t pcb_tool_rotate = { - "rotate", NULL, 100, rot_icon, PCB_TOOL_CURSOR_XBM(rotateIcon_bits, rotateMask_bits), + "rotate", NULL, 100, rot_icon, PCB_TOOL_CURSOR_XBM(rotateIcon_bits, rotateMask_bits), 0, NULL, NULL, pcb_tool_rotate_notify_mode, Index: trunk/src/tool_text.c =================================================================== --- trunk/src/tool_text.c (revision 25413) +++ trunk/src/tool_text.c (revision 25414) @@ -124,7 +124,7 @@ }; pcb_tool_t pcb_tool_text = { - "text", NULL, 100, text_icon, PCB_TOOL_CURSOR_NAMED("xterm"), + "text", NULL, 100, text_icon, PCB_TOOL_CURSOR_NAMED("xterm"), 0, NULL, NULL, pcb_tool_text_notify_mode, Index: trunk/src/tool_thermal.c =================================================================== --- trunk/src/tool_thermal.c (revision 25413) +++ trunk/src/tool_thermal.c (revision 25414) @@ -134,7 +134,7 @@ }; pcb_tool_t pcb_tool_thermal = { - "thermal", NULL, 100, thrm_icon, PCB_TOOL_CURSOR_NAMED("iron_cross"), + "thermal", NULL, 100, thrm_icon, PCB_TOOL_CURSOR_NAMED("iron_cross"), 0, NULL, NULL, pcb_tool_thermal_notify_mode, Index: trunk/src/tool_via.c =================================================================== --- trunk/src/tool_via.c (revision 25413) +++ trunk/src/tool_via.c (revision 25414) @@ -136,7 +136,7 @@ }; pcb_tool_t pcb_tool_via = { - "via", NULL, 100, via_icon, PCB_TOOL_CURSOR_NAMED(NULL), + "via", NULL, 100, via_icon, PCB_TOOL_CURSOR_NAMED(NULL), 0, NULL, NULL, pcb_tool_via_notify_mode, Index: trunk/src_plugins/ddraft/ddraft.c =================================================================== --- trunk/src_plugins/ddraft/ddraft.c (revision 25413) +++ trunk/src_plugins/ddraft/ddraft.c (revision 25414) @@ -435,7 +435,7 @@ " "}; static pcb_tool_t tool_ddraft = { - "ddraft", NULL, 1000, ddraft_xpm, PCB_TOOL_CURSOR_NAMED(NULL), + "ddraft", NULL, 1000, ddraft_xpm, PCB_TOOL_CURSOR_NAMED(NULL), PCB_TLF_AUTO_TOOLBAR, NULL, NULL, NULL, Index: trunk/src_plugins/serpentine/serpentine.c =================================================================== --- trunk/src_plugins/serpentine/serpentine.c (revision 25413) +++ trunk/src_plugins/serpentine/serpentine.c (revision 25414) @@ -408,7 +408,7 @@ } static pcb_tool_t tool_serpentine = { - "serpentine", NULL, 100, NULL, PCB_TOOL_CURSOR_NAMED(NULL), + "serpentine", NULL, 100, NULL, PCB_TOOL_CURSOR_NAMED(NULL), 0, tool_serpentine_init, tool_serpentine_uninit, tool_serpentine_notify_mode, Index: trunk/src_plugins/sketch_route/sketch_route.c =================================================================== --- trunk/src_plugins/sketch_route/sketch_route.c (revision 25413) +++ trunk/src_plugins/sketch_route/sketch_route.c (revision 25414) @@ -1095,7 +1095,7 @@ } static pcb_tool_t tool_skline = { - "skline", NULL, 100, NULL, PCB_TOOL_CURSOR_NAMED(NULL), + "skline", NULL, 100, NULL, PCB_TOOL_CURSOR_NAMED(NULL), 0, tool_skline_init, tool_skline_uninit, tool_skline_notify_mode,