Index: trunk/src/action_helper.c =================================================================== --- trunk/src/action_helper.c (revision 12680) +++ trunk/src/action_helper.c (revision 12681) @@ -62,23 +62,8 @@ #include "obj_poly_draw.h" #include "tool.h" -#include "tool_arc.h" -#include "tool_arrow.h" -#include "tool_buffer.h" -#include "tool_copy.h" -#include "tool_insert.h" -#include "tool_line.h" -#include "tool_lock.h" -#include "tool_move.h" -#include "tool_poly.h" -#include "tool_polyhole.h" -#include "tool_rectangle.h" -#include "tool_remove.h" -#include "tool_rotate.h" -#include "tool_text.h" -#include "tool_thermal.h" -#include "tool_via.h" + static void GetGridLockCoordinates(int type, void *ptr1, void *ptr2, void *ptr3, pcb_coord_t * x, pcb_coord_t * y) { switch (type) { @@ -381,39 +366,7 @@ void pcb_adjust_attached_objects(void) { - switch (conf_core.editor.mode) { - /* update at least an attached block (selection) */ - case PCB_MODE_NO: - case PCB_MODE_ARROW: - pcb_tool_arrow_adjust_attached_objects(); - break; - - /* rectangle creation mode */ - case PCB_MODE_RECTANGLE: - pcb_tool_rectangle_adjust_attached_objects(); - break; - case PCB_MODE_ARC: - pcb_tool_arc_adjust_attached_objects(); - break; - - /* polygon creation mode */ - case PCB_MODE_POLYGON: - pcb_tool_poly_adjust_attached_objects(); - break; - case PCB_MODE_POLYGON_HOLE: - pcb_tool_polyhole_adjust_attached_objects(); - break; - /* line creation mode */ - case PCB_MODE_LINE: - pcb_tool_line_adjust_attached_objects(); - break; - /* point insertion mode */ - case PCB_MODE_INSERT_POINT: - pcb_tool_insert_adjust_attached_objects(); - break; - case PCB_MODE_ROTATE: - break; - } + pcb_tool_adjust_attached_objects(); } void pcb_notify_line(void) @@ -490,86 +443,7 @@ { if (conf_core.temp.rat_warn) pcb_clear_warnings(); - switch (conf_core.editor.mode) { - case PCB_MODE_ARROW: - { - pcb_tool_arrow_notify_mode(); - break; - } - - case PCB_MODE_VIA: - { - pcb_tool_via_notify_mode(); - break; - } - - case PCB_MODE_ARC: - { - pcb_tool_arc_notify_mode(); - break; - } - case PCB_MODE_LOCK: - { - pcb_tool_lock_notify_mode(); - break; - } - case PCB_MODE_THERMAL: - { - pcb_tool_thermal_notify_mode(); - break; - } - - case PCB_MODE_LINE: - pcb_tool_line_notify_mode(); - break; - - case PCB_MODE_RECTANGLE: - pcb_tool_rectangle_notify_mode(); - break; - - case PCB_MODE_TEXT: - { - pcb_tool_text_notify_mode(); - break; - } - - case PCB_MODE_POLYGON: - { - pcb_tool_poly_notify_mode(); - break; - } - - case PCB_MODE_POLYGON_HOLE: - { - pcb_tool_polyhole_notify_mode(); - break; - } - - case PCB_MODE_PASTE_BUFFER: - pcb_tool_buffer_notify_mode(); - break; - - case PCB_MODE_REMOVE: - pcb_tool_remove_notify_mode(); - break; - - case PCB_MODE_ROTATE: - pcb_tool_rotate_notify_mode(); - break; - - case PCB_MODE_COPY: - pcb_tool_copy_notify_mode(); - break; - - case PCB_MODE_MOVE: - pcb_tool_move_notify_mode(); - break; - - /* insert a point into a polygon/line/... */ - case PCB_MODE_INSERT_POINT: - pcb_tool_insert_notify_mode(); - break; - } + pcb_tool_notify_mode(); } void pcb_event_move_crosshair(int ev_x, int ev_y) Index: trunk/src/crosshair.c =================================================================== --- trunk/src/crosshair.c (revision 12680) +++ trunk/src/crosshair.c (revision 12681) @@ -54,12 +54,6 @@ #include "obj_all_op.h" #include "tool.h" -#include "tool_arc.h" -#include "tool_buffer.h" -#include "tool_line.h" -#include "tool_poly.h" -#include "tool_polyhole.h" -#include "tool_via.h" typedef struct { int x, y; @@ -828,45 +822,8 @@ pcb_gui->set_drawing_mode(PCB_HID_COMP_RESET, 1, NULL); pcb_gui->set_drawing_mode(PCB_HID_COMP_POSITIVE, 1, NULL); - switch (conf_core.editor.mode) { - case PCB_MODE_VIA: - { - pcb_tool_via_draw_attached(); - } - break; + pcb_tool_draw_attached(); - /* the attached line is used by both LINEMODE, PCB_MODE_POLYGON and PCB_MODE_POLYGON_HOLE */ - case PCB_MODE_POLYGON: - pcb_tool_poly_draw_attached(); - break; - case PCB_MODE_POLYGON_HOLE: - pcb_tool_polyhole_draw_attached(); - break; - - case PCB_MODE_ARC: - pcb_tool_arc_draw_attached(); - break; - - case PCB_MODE_LINE: - pcb_tool_line_draw_attached(); - break; - - case PCB_MODE_PASTE_BUFFER: - pcb_tool_buffer_draw_attached(); - break; - - case PCB_MODE_COPY: - pcb_tool_copy_draw_attached(); - break; - case PCB_MODE_MOVE: - pcb_tool_move_draw_attached(); - break; - - case PCB_MODE_INSERT_POINT: - pcb_tool_insert_draw_attached(); - break; - } - /* an attached box does not depend on a special mode */ if (pcb_crosshair.AttachedBox.State == PCB_CH_STATE_SECOND || pcb_crosshair.AttachedBox.State == PCB_CH_STATE_THIRD) { pcb_coord_t x1, y1, x2, y2; Index: trunk/src/tool.c =================================================================== --- trunk/src/tool.c (revision 12680) +++ trunk/src/tool.c (revision 12681) @@ -143,7 +143,7 @@ void pcb_tool_draw_attached(void) { - wrap_void(adjust_attached_objects, ()); + wrap_void(draw_attached, ()); } pcb_bool pcb_tool_undo_act(void) Index: trunk/src/undo_act.c =================================================================== --- trunk/src/undo_act.c (revision 12680) +++ trunk/src/undo_act.c (revision 12681) @@ -41,14 +41,6 @@ #include "obj_line_draw.h" #include "tool.h" -#include "tool_arc.h" -#include "tool_copy.h" -#include "tool_insert.h" -#include "tool_line.h" -#include "tool_move.h" -#include "tool_poly.h" -#include "tool_polyhole.h" -#include "tool_rectangle.h" /* --------------------------------------------------------------------------- */ @@ -138,33 +130,8 @@ { const char *function = PCB_ACTION_ARG(0); if (!function || !*function) { - pcb_bool undo = pcb_true; - /* undo the last operation */ - pcb_notify_crosshair_change(pcb_false); - if (conf_core.editor.mode == PCB_MODE_POLYGON) { - undo = pcb_tool_poly_undo_act(); - } - if (conf_core.editor.mode == PCB_MODE_POLYGON_HOLE) { - undo = pcb_tool_polyhole_undo_act(); - } - /* move anchor point if undoing during line creation */ - if (conf_core.editor.mode == PCB_MODE_LINE) { - undo = pcb_tool_line_undo_act(); - } - if (conf_core.editor.mode == PCB_MODE_ARC) { - undo = pcb_tool_arc_undo_act(); - } - if (conf_core.editor.mode == PCB_MODE_COPY) - undo = pcb_tool_copy_undo_act(); - if (conf_core.editor.mode == PCB_MODE_MOVE) - undo = pcb_tool_move_undo_act(); - if (conf_core.editor.mode == PCB_MODE_RECTANGLE) - undo = pcb_tool_rectangle_undo_act(); - if (conf_core.editor.mode == PCB_MODE_INSERT_POINT) - undo = pcb_tool_insert_undo_act(); - /* undo the last destructive operation */ - if (undo) + if (pcb_tool_undo_act()) if (pcb_undo(pcb_true)) pcb_board_set_changed_flag(pcb_true); } @@ -203,17 +170,8 @@ int pcb_act_Redo(int argc, const char **argv, pcb_coord_t x, pcb_coord_t y) { - pcb_bool redo = pcb_true; - pcb_notify_crosshair_change(pcb_false); - if (conf_core.editor.mode == PCB_MODE_POLYGON) - redo = pcb_tool_poly_redo_act(); - if (conf_core.editor.mode == PCB_MODE_POLYGON_HOLE) - redo = pcb_tool_polyhole_redo_act(); - if (conf_core.editor.mode == PCB_MODE_LINE) - redo = pcb_tool_line_redo_act(); - - if (redo) + if (pcb_tool_redo_act()) if (pcb_redo(pcb_true)) pcb_board_set_changed_flag(pcb_true); pcb_notify_crosshair_change(pcb_true);