← Back to team overview

kicad-developers team mailing list archive

[PATCH 14/14] wxFormBuilder: pure virtual event handlers

 

This removes the empty base handlers.
---
 .../3d_cache/dialogs/dlg_3d_pathconfig_base.fbp    |  2 +-
 .../3d_cache/dialogs/dlg_3d_pathconfig_base.h      | 12 ++---
 .../dialogs/dialog_3D_view_option_base.fbp         |  2 +-
 .../3d_viewer/dialogs/dialog_3D_view_option_base.h |  6 +--
 bitmap2component/bitmap2cmp_gui_base.fbp           |  2 +-
 bitmap2component/bitmap2cmp_gui_base.h             | 14 +++---
 common/dialog_about/dialog_about_base.fbp          |  2 +-
 common/dialogs/dialog_display_info_HTML_base.fbp   |  2 +-
 common/dialogs/dialog_display_info_HTML_base.h     |  2 +-
 common/dialogs/dialog_env_var_config_base.fbp      |  2 +-
 common/dialogs/dialog_env_var_config_base.h        |  6 +--
 common/dialogs/dialog_exit_base.fbp                |  2 +-
 common/dialogs/dialog_exit_base.h                  |  4 +-
 common/dialogs/dialog_get_component_base.fbp       |  2 +-
 common/dialogs/dialog_get_component_base.h         |  6 +--
 common/dialogs/dialog_hotkeys_editor_base.fbp      |  2 +-
 common/dialogs/dialog_hotkeys_editor_base.h        |  4 +-
 common/dialogs/dialog_image_editor.fbp             |  2 +-
 common/dialogs/dialog_image_editor_base.h          | 18 ++++----
 common/dialogs/dialog_page_settings_base.fbp       |  2 +-
 common/dialogs/dialog_page_settings_base.h         | 30 ++++++-------
 common/dialogs/wx_html_report_panel_base.fbp       |  2 +-
 common/dialogs/wx_html_report_panel_base.h         | 12 ++---
 cvpcb/dialogs/dialog_config_equfiles_base.fbp      |  2 +-
 cvpcb/dialogs/dialog_config_equfiles_base.h        | 14 +++---
 cvpcb/dialogs/dialog_display_options_base.fbp      |  2 +-
 cvpcb/dialogs/dialog_display_options_base.h        |  6 +--
 .../fp_conflict_assignment_selector_base.fbp       |  2 +-
 .../dialogs/fp_conflict_assignment_selector_base.h | 10 ++---
 eeschema/dialogs/dialog_annotate_base.fbp          |  2 +-
 eeschema/dialogs/dialog_annotate_base.h            |  6 +--
 eeschema/dialogs/dialog_bom_base.fbp               |  2 +-
 eeschema/dialogs/dialog_bom_base.h                 | 20 ++++-----
 eeschema/dialogs/dialog_choose_component_base.fbp  |  2 +-
 eeschema/dialogs/dialog_choose_component_base.h    | 18 ++++----
 .../dialogs/dialog_edit_component_in_lib_base.fbp  |  2 +-
 .../dialogs/dialog_edit_component_in_lib_base.h    | 22 ++++-----
 .../dialog_edit_component_in_schematic_fbp.fbp     |  2 +-
 .../dialog_edit_component_in_schematic_fbp.h       | 28 ++++++------
 eeschema/dialogs/dialog_edit_label_base.fbp        |  2 +-
 eeschema/dialogs/dialog_edit_label_base.h          |  6 +--
 .../dialog_edit_libentry_fields_in_lib_base.fbp    |  2 +-
 .../dialog_edit_libentry_fields_in_lib_base.h      | 20 ++++-----
 eeschema/dialogs/dialog_eeschema_config_fbp.fbp    |  2 +-
 eeschema/dialogs/dialog_eeschema_config_fbp.h      | 18 ++++----
 eeschema/dialogs/dialog_eeschema_options_base.fbp  |  2 +-
 eeschema/dialogs/dialog_eeschema_options_base.h    |  4 +-
 eeschema/dialogs/dialog_erc_base.fbp               |  2 +-
 eeschema/dialogs/dialog_erc_base.h                 | 14 +++---
 eeschema/dialogs/dialog_lib_edit_draw_item.fbp     |  2 +-
 eeschema/dialogs/dialog_lib_edit_pin_base.fbp      |  2 +-
 eeschema/dialogs/dialog_lib_edit_pin_base.h        | 12 ++---
 eeschema/dialogs/dialog_lib_edit_text_base.fbp     |  2 +-
 eeschema/dialogs/dialog_lib_edit_text_base.h       |  8 ++--
 eeschema/dialogs/dialog_lib_new_component.fbp      |  2 +-
 eeschema/dialogs/dialog_libedit_options_base.fbp   |  2 +-
 eeschema/dialogs/dialog_netlist_base.fbp           |  4 +-
 eeschema/dialogs/dialog_netlist_base.h             | 12 ++---
 eeschema/dialogs/dialog_plot_schematic_base.fbp    |  2 +-
 eeschema/dialogs/dialog_plot_schematic_base.h      | 10 ++---
 .../dialogs/dialog_print_using_printer_base.fbp    |  2 +-
 eeschema/dialogs/dialog_print_using_printer_base.h | 10 ++---
 eeschema/dialogs/dialog_rescue_each_base.fbp       |  2 +-
 eeschema/dialogs/dialog_rescue_each_base.h         | 10 ++---
 .../dialogs/dialog_sch_edit_sheet_pin_base.fbp     |  2 +-
 eeschema/dialogs/dialog_sch_sheet_props.fbp        |  2 +-
 eeschema/dialogs/dialog_schematic_find_base.fbp    |  2 +-
 eeschema/dialogs/dialog_schematic_find_base.h      | 18 ++++----
 eeschema/dialogs/dialog_signal_list_base.fbp       |  2 +-
 eeschema/dialogs/dialog_signal_list_base.h         |  2 +-
 eeschema/dialogs/dialog_sim_settings_base.fbp      |  2 +-
 eeschema/dialogs/dialog_sim_settings_base.h        |  4 +-
 eeschema/dialogs/dialog_spice_model_base.fbp       |  2 +-
 eeschema/dialogs/dialog_spice_model_base.h         | 10 ++---
 eeschema/sim/sim_plot_frame_base.fbp               |  2 +-
 eeschema/sim/sim_plot_frame_base.h                 | 34 +++++++-------
 eeschema/widgets/tuner_slider_base.fbp             |  2 +-
 eeschema/widgets/tuner_slider_base.h               | 12 ++---
 .../dialogs/dialog_layers_select_to_pcb_base.fbp   |  2 +-
 .../dialogs/dialog_layers_select_to_pcb_base.h     | 10 ++---
 .../dialogs/dialog_print_using_printer_base.fbp    |  2 +-
 gerbview/dialogs/dialog_print_using_printer_base.h | 12 ++---
 gerbview/dialogs/dialog_show_page_borders_base.fbp |  2 +-
 gerbview/dialogs/dialog_show_page_borders_base.h   |  4 +-
 .../gerbview_dialog_display_options_frame_base.fbp |  2 +-
 .../gerbview_dialog_display_options_frame_base.h   |  4 +-
 kicad/dialogs/dialog_template_selector.fbp         |  6 +--
 kicad/dialogs/dialog_template_selector_base.h      |  8 ++--
 .../dialogs/dialog_new_dataitem_base.fbp           |  2 +-
 .../dialogs/dialog_new_dataitem_base.h             |  4 +-
 .../dialogs/properties_frame_base.fbp              |  2 +-
 pagelayout_editor/dialogs/properties_frame_base.h  |  4 +-
 pcb_calculator/dialogs/dialog_regulator_data.fbp   |  2 +-
 .../dialogs/dialog_regulator_data_base.h           |  4 +-
 .../dialogs/pcb_calculator_frame_base.fbp          |  2 +-
 pcb_calculator/dialogs/pcb_calculator_frame_base.h | 52 +++++++++++-----------
 pcbnew/dialogs/dialog_SVG_print_base.fbp           |  2 +-
 pcbnew/dialogs/dialog_SVG_print_base.h             |  8 ++--
 pcbnew/dialogs/dialog_block_options_base.fbp       |  2 +-
 pcbnew/dialogs/dialog_block_options_base.h         |  6 +--
 pcbnew/dialogs/dialog_cleaning_options_base.fbp    |  2 +-
 pcbnew/dialogs/dialog_copper_zones_base.fbp        |  2 +-
 pcbnew/dialogs/dialog_copper_zones_base.h          | 16 +++----
 pcbnew/dialogs/dialog_create_array_base.fbp        |  2 +-
 pcbnew/dialogs/dialog_create_array_base.h          |  4 +-
 pcbnew/dialogs/dialog_design_rules_base.fbp        |  2 +-
 pcbnew/dialogs/dialog_design_rules_base.h          | 24 +++++-----
 pcbnew/dialogs/dialog_dimension_editor_base.fbp    |  2 +-
 pcbnew/dialogs/dialog_dimension_editor_base.h      |  2 +-
 pcbnew/dialogs/dialog_display_options_base.fbp     |  2 +-
 pcbnew/dialogs/dialog_display_options_base.h       |  4 +-
 pcbnew/dialogs/dialog_drc_base.fbp                 |  2 +-
 pcbnew/dialogs/dialog_drc_base.h                   | 32 ++++++-------
 .../dialog_edit_module_for_BoardEditor_base.fbp    |  2 +-
 .../dialog_edit_module_for_BoardEditor_base.h      | 22 ++++-----
 .../dialog_edit_module_for_Modedit_base.fbp        |  2 +-
 .../dialogs/dialog_edit_module_for_Modedit_base.h  | 20 ++++-----
 pcbnew/dialogs/dialog_edit_module_text_base.fbp    |  2 +-
 pcbnew/dialogs/dialog_edit_module_text_base.h      |  4 +-
 pcbnew/dialogs/dialog_enum_pads_base.fbp           |  2 +-
 pcbnew/dialogs/dialog_exchange_modules_base.fbp    |  2 +-
 pcbnew/dialogs/dialog_exchange_modules_base.h      | 12 ++---
 pcbnew/dialogs/dialog_export_idf_base.fbp          |  2 +-
 pcbnew/dialogs/dialog_export_step_base.fbp         |  2 +-
 pcbnew/dialogs/dialog_export_vrml_base.fbp         |  2 +-
 pcbnew/dialogs/dialog_export_vrml_base.h           |  2 +-
 pcbnew/dialogs/dialog_find_base.fbp                |  2 +-
 pcbnew/dialogs/dialog_find_base.h                  |  8 ++--
 .../dialogs/dialog_footprint_wizard_list_base.fbp  |  2 +-
 pcbnew/dialogs/dialog_footprint_wizard_list_base.h |  2 +-
 pcbnew/dialogs/dialog_freeroute_exchange_base.fbp  |  2 +-
 pcbnew/dialogs/dialog_freeroute_exchange_base.h    |  8 ++--
 .../dialog_gen_module_position_file_base.fbp       |  2 +-
 .../dialogs/dialog_gen_module_position_file_base.h |  4 +-
 pcbnew/dialogs/dialog_gendrill_base.fbp            |  2 +-
 pcbnew/dialogs/dialog_gendrill_base.h              | 14 +++---
 .../dialog_general_options_BoardEditor_base.fbp    |  2 +-
 .../dialog_general_options_BoardEditor_base.h      |  4 +-
 .../dialogs/dialog_get_footprint_by_name_base.fbp  |  2 +-
 pcbnew/dialogs/dialog_get_footprint_by_name_base.h |  2 +-
 pcbnew/dialogs/dialog_global_deletion_base.fbp     |  2 +-
 pcbnew/dialogs/dialog_global_deletion_base.h       |  8 ++--
 .../dialog_global_edit_tracks_and_vias_base.fbp    |  2 +-
 .../dialog_global_edit_tracks_and_vias_base.h      |  6 +--
 .../dialog_global_modules_fields_edition_base.fbp  |  2 +-
 .../dialog_global_modules_fields_edition_base.h    |  4 +-
 pcbnew/dialogs/dialog_global_pads_edition_base.fbp |  2 +-
 pcbnew/dialogs/dialog_global_pads_edition_base.h   |  6 +--
 .../dialog_graphic_item_properties_base.fbp        |  2 +-
 .../dialogs/dialog_graphic_item_properties_base.h  |  2 +-
 .../dialogs/dialog_graphic_items_options_base.fbp  |  2 +-
 pcbnew/dialogs/dialog_graphic_items_options_base.h |  6 +--
 .../dialog_keepout_area_properties_base.fbp        |  2 +-
 .../dialogs/dialog_keepout_area_properties_base.h  |  2 +-
 pcbnew/dialogs/dialog_layer_selection_base.fbp     |  4 +-
 pcbnew/dialogs/dialog_layer_selection_base.h       | 14 +++---
 pcbnew/dialogs/dialog_layers_setup_base.fbp        |  2 +-
 pcbnew/dialogs/dialog_layers_setup_base.h          | 14 +++---
 pcbnew/dialogs/dialog_mask_clearance_base.fbp      |  2 +-
 pcbnew/dialogs/dialog_mask_clearance_base.h        |  4 +-
 pcbnew/dialogs/dialog_modedit_options_base.fbp     |  2 +-
 pcbnew/dialogs/dialog_modedit_options_base.h       |  4 +-
 pcbnew/dialogs/dialog_move_exact.fbp               |  2 +-
 pcbnew/dialogs/dialog_move_exact_base.h            |  8 ++--
 pcbnew/dialogs/dialog_netlist_fbp.fbp              |  2 +-
 pcbnew/dialogs/dialog_netlist_fbp.h                | 18 ++++----
 .../dialog_non_copper_zones_properties_base.fbp    |  2 +-
 .../dialog_non_copper_zones_properties_base.h      |  4 +-
 pcbnew/dialogs/dialog_pad_properties_base.fbp      |  2 +-
 pcbnew/dialogs/dialog_pad_properties_base.h        | 16 +++----
 pcbnew/dialogs/dialog_pcb_text_properties_base.fbp |  2 +-
 pcbnew/dialogs/dialog_pcb_text_properties_base.h   |  2 +-
 pcbnew/dialogs/dialog_plot_base.fbp                |  2 +-
 pcbnew/dialogs/dialog_plot_base.h                  | 20 ++++-----
 .../dialog_pns_diff_pair_dimensions_base.fbp       |  2 +-
 .../dialogs/dialog_pns_diff_pair_dimensions_base.h |  4 +-
 .../dialog_pns_length_tuning_settings_base.fbp     |  2 +-
 .../dialog_pns_length_tuning_settings_base.h       |  2 +-
 pcbnew/dialogs/dialog_pns_settings_base.fbp        |  2 +-
 pcbnew/dialogs/dialog_pns_settings_base.h          |  2 +-
 pcbnew/dialogs/dialog_print_for_modedit_base.fbp   |  2 +-
 pcbnew/dialogs/dialog_print_for_modedit_base.h     | 10 ++---
 pcbnew/dialogs/dialog_print_using_printer_base.fbp |  2 +-
 pcbnew/dialogs/dialog_print_using_printer_base.h   | 14 +++---
 pcbnew/dialogs/dialog_scripting_base.fbp           |  2 +-
 pcbnew/dialogs/dialog_scripting_base.h             |  2 +-
 .../dialogs/dialog_select_net_from_list_base.fbp   |  2 +-
 pcbnew/dialogs/dialog_select_net_from_list_base.h  |  4 +-
 pcbnew/dialogs/dialog_select_pretty_lib_base.fbp   |  2 +-
 pcbnew/dialogs/dialog_select_pretty_lib_base.h     |  4 +-
 pcbnew/dialogs/dialog_set_grid_base.fbp            |  2 +-
 pcbnew/dialogs/dialog_set_grid_base.h              |  4 +-
 pcbnew/dialogs/dialog_target_properties_base.fbp   |  2 +-
 pcbnew/dialogs/dialog_target_properties_base.h     |  4 +-
 .../dialogs/dialog_track_via_properties_base.fbp   |  2 +-
 pcbnew/dialogs/dialog_track_via_properties_base.h  | 12 ++---
 pcbnew/dialogs/dialog_track_via_size_base.fbp      |  2 +-
 pcbnew/dialogs/dialog_track_via_size_base.h        |  6 +--
 pcbnew/dialogs/dialog_update_pcb.fbp               |  2 +-
 pcbnew/dialogs/dialog_update_pcb_base.h            |  6 +--
 .../wizard_3DShape_Libs_downloader_base.fbp        |  2 +-
 .../dialogs/wizard_3DShape_Libs_downloader_base.h  | 18 ++++----
 pcbnew/dialogs/wizard_add_fplib_base.fbp           |  2 +-
 pcbnew/dialogs/wizard_add_fplib_base.h             | 14 +++---
 pcbnew/import_dxf/dialog_dxf_import.fbp            |  2 +-
 pcbnew/import_dxf/dialog_dxf_import_base.h         |  8 ++--
 206 files changed, 609 insertions(+), 609 deletions(-)

diff --git a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.fbp b/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.fbp
index 530fc7b..80c7e15 100644
--- a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.fbp
+++ b/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.h b/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.h
index 26ac84c..4a81d1c 100644
--- a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.h
+++ b/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.h
@@ -51,12 +51,12 @@ class DLG_3D_PATH_CONFIG_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer2Help;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnConfigEnvVar( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnAddAlias( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDelAlias( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnAliasMoveUp( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnAliasMoveDown( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnHelp( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnConfigEnvVar( wxCommandEvent& event ) = 0;
+		virtual void OnAddAlias( wxCommandEvent& event ) = 0;
+		virtual void OnDelAlias( wxCommandEvent& event ) = 0;
+		virtual void OnAliasMoveUp( wxCommandEvent& event ) = 0;
+		virtual void OnAliasMoveDown( wxCommandEvent& event ) = 0;
+		virtual void OnHelp( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.fbp b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.fbp
index a3e6f03..9faae31 100644
--- a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.fbp
+++ b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.h b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.h
index e875afc..547284c 100644
--- a/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.h
+++ b/3d-viewer/3d_viewer/dialogs/dialog_3D_view_option_base.h
@@ -68,9 +68,9 @@ class DIALOG_3D_VIEW_OPTIONS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnShowAllClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnShowNoneClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnShowAllClick( wxCommandEvent& event ) = 0;
+		virtual void OnShowNoneClick( wxCommandEvent& event ) = 0;
+		virtual void OnOKClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/bitmap2component/bitmap2cmp_gui_base.fbp b/bitmap2component/bitmap2cmp_gui_base.fbp
index 58ad2dc..d86b90b 100644
--- a/bitmap2component/bitmap2cmp_gui_base.fbp
+++ b/bitmap2component/bitmap2cmp_gui_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/bitmap2component/bitmap2cmp_gui_base.h b/bitmap2component/bitmap2cmp_gui_base.h
index e67e224..7ee39e1 100644
--- a/bitmap2component/bitmap2cmp_gui_base.h
+++ b/bitmap2component/bitmap2cmp_gui_base.h
@@ -76,13 +76,13 @@ class BM2CMP_FRAME_BASE : public KIWAY_PLAYER
 		wxStatusBar* m_statusBar;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnPaint( wxPaintEvent& event ) { event.Skip(); }
-		virtual void OnResolutionChange( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnLoadFile( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnExport( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnFormatChange( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOptionsSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnThresholdChange( wxScrollEvent& event ) { event.Skip(); }
+		virtual void OnPaint( wxPaintEvent& event ) = 0;
+		virtual void OnResolutionChange( wxCommandEvent& event ) = 0;
+		virtual void OnLoadFile( wxCommandEvent& event ) = 0;
+		virtual void OnExport( wxCommandEvent& event ) = 0;
+		virtual void OnFormatChange( wxCommandEvent& event ) = 0;
+		virtual void OnOptionsSelection( wxCommandEvent& event ) = 0;
+		virtual void OnThresholdChange( wxScrollEvent& event ) = 0;
 		
 	
 	public:
diff --git a/common/dialog_about/dialog_about_base.fbp b/common/dialog_about/dialog_about_base.fbp
index 1338970..d2cdedf 100644
--- a/common/dialog_about/dialog_about_base.fbp
+++ b/common/dialog_about/dialog_about_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/common/dialogs/dialog_display_info_HTML_base.fbp b/common/dialogs/dialog_display_info_HTML_base.fbp
index 423197e..aa2651c 100644
--- a/common/dialogs/dialog_display_info_HTML_base.fbp
+++ b/common/dialogs/dialog_display_info_HTML_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/common/dialogs/dialog_display_info_HTML_base.h b/common/dialogs/dialog_display_info_HTML_base.h
index 28f8da5..1dc1830 100644
--- a/common/dialogs/dialog_display_info_HTML_base.h
+++ b/common/dialogs/dialog_display_info_HTML_base.h
@@ -38,7 +38,7 @@ class DIALOG_DISPLAY_HTML_TEXT_BASE : public DIALOG_SHIM
 		wxButton* m_buttonClose;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseButtonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseButtonClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/common/dialogs/dialog_env_var_config_base.fbp b/common/dialogs/dialog_env_var_config_base.fbp
index 8c86db4..c7165fc 100644
--- a/common/dialogs/dialog_env_var_config_base.fbp
+++ b/common/dialogs/dialog_env_var_config_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/common/dialogs/dialog_env_var_config_base.h b/common/dialogs/dialog_env_var_config_base.h
index 56d3b58..d19a16d 100644
--- a/common/dialogs/dialog_env_var_config_base.h
+++ b/common/dialogs/dialog_env_var_config_base.h
@@ -46,9 +46,9 @@ class DIALOG_ENV_VAR_CONFIG_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerHelp;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnAddRow( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDeleteSelectedRows( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnHelpRequest( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnAddRow( wxCommandEvent& event ) = 0;
+		virtual void OnDeleteSelectedRows( wxCommandEvent& event ) = 0;
+		virtual void OnHelpRequest( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/common/dialogs/dialog_exit_base.fbp b/common/dialogs/dialog_exit_base.fbp
index 665156e..b21ea77 100644
--- a/common/dialogs/dialog_exit_base.fbp
+++ b/common/dialogs/dialog_exit_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/common/dialogs/dialog_exit_base.h b/common/dialogs/dialog_exit_base.h
index 1e9762d..790aeb0 100644
--- a/common/dialogs/dialog_exit_base.h
+++ b/common/dialogs/dialog_exit_base.h
@@ -49,8 +49,8 @@ class DIALOG_EXIT_BASE : public DIALOG_SHIM
 		wxButton* m_buttonCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnSaveAndExit( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnExitNoSave( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnSaveAndExit( wxCommandEvent& event ) = 0;
+		virtual void OnExitNoSave( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/common/dialogs/dialog_get_component_base.fbp b/common/dialogs/dialog_get_component_base.fbp
index 51733f0..e1b3de0 100644
--- a/common/dialogs/dialog_get_component_base.fbp
+++ b/common/dialogs/dialog_get_component_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/common/dialogs/dialog_get_component_base.h b/common/dialogs/dialog_get_component_base.h
index 7dd4888..e5d7b16 100644
--- a/common/dialogs/dialog_get_component_base.h
+++ b/common/dialogs/dialog_get_component_base.h
@@ -55,9 +55,9 @@ class DIALOG_GET_COMPONENT_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void Accept( wxCommandEvent& event ) { event.Skip(); }
-		virtual void GetExtraSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); }
+		virtual void Accept( wxCommandEvent& event ) = 0;
+		virtual void GetExtraSelection( wxCommandEvent& event ) = 0;
+		virtual void OnCancel( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/common/dialogs/dialog_hotkeys_editor_base.fbp b/common/dialogs/dialog_hotkeys_editor_base.fbp
index 3c66e1b..14b14a8 100644
--- a/common/dialogs/dialog_hotkeys_editor_base.fbp
+++ b/common/dialogs/dialog_hotkeys_editor_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/common/dialogs/dialog_hotkeys_editor_base.h b/common/dialogs/dialog_hotkeys_editor_base.h
index 9ecb73d..b54c4e0 100644
--- a/common/dialogs/dialog_hotkeys_editor_base.h
+++ b/common/dialogs/dialog_hotkeys_editor_base.h
@@ -46,8 +46,8 @@ class HOTKEYS_EDITOR_DIALOG_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void ResetClicked( wxCommandEvent& event ) { event.Skip(); }
-		virtual void DefaultsClicked( wxCommandEvent& event ) { event.Skip(); }
+		virtual void ResetClicked( wxCommandEvent& event ) = 0;
+		virtual void DefaultsClicked( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/common/dialogs/dialog_image_editor.fbp b/common/dialogs/dialog_image_editor.fbp
index e9e08e1..4e8352d 100644
--- a/common/dialogs/dialog_image_editor.fbp
+++ b/common/dialogs/dialog_image_editor.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/common/dialogs/dialog_image_editor_base.h b/common/dialogs/dialog_image_editor_base.h
index c9746d9..87a38f6 100644
--- a/common/dialogs/dialog_image_editor_base.h
+++ b/common/dialogs/dialog_image_editor_base.h
@@ -48,15 +48,15 @@ class DIALOG_IMAGE_EDITOR_BASE : public wxDialog
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnRedrawPanel( wxPaintEvent& event ) { event.Skip(); }
-		virtual void OnMirrorX_click( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnMirrorY_click( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRotateClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnGreyScaleConvert( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnHalfSize( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnUndoLastChange( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancel_Button( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOK_Button( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnRedrawPanel( wxPaintEvent& event ) = 0;
+		virtual void OnMirrorX_click( wxCommandEvent& event ) = 0;
+		virtual void OnMirrorY_click( wxCommandEvent& event ) = 0;
+		virtual void OnRotateClick( wxCommandEvent& event ) = 0;
+		virtual void OnGreyScaleConvert( wxCommandEvent& event ) = 0;
+		virtual void OnHalfSize( wxCommandEvent& event ) = 0;
+		virtual void OnUndoLastChange( wxCommandEvent& event ) = 0;
+		virtual void OnCancel_Button( wxCommandEvent& event ) = 0;
+		virtual void OnOK_Button( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/common/dialogs/dialog_page_settings_base.fbp b/common/dialogs/dialog_page_settings_base.fbp
index 9e82ef3..fb94df4 100644
--- a/common/dialogs/dialog_page_settings_base.fbp
+++ b/common/dialogs/dialog_page_settings_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/common/dialogs/dialog_page_settings_base.h b/common/dialogs/dialog_page_settings_base.h
index 9ca0c85..3fb85fd 100644
--- a/common/dialogs/dialog_page_settings_base.h
+++ b/common/dialogs/dialog_page_settings_base.h
@@ -98,21 +98,21 @@ class DIALOG_PAGES_SETTINGS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnPaperSizeChoice( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPageOrientationChoice( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnUserPageSizeYTextUpdated( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnUserPageSizeXTextUpdated( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDateTextUpdated( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDateApplyClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRevisionTextUpdated( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTitleTextUpdated( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCompanyTextUpdated( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnComment1TextUpdated( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnComment2TextUpdated( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnComment3TextUpdated( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnComment4TextUpdated( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnWksFileSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnPaperSizeChoice( wxCommandEvent& event ) = 0;
+		virtual void OnPageOrientationChoice( wxCommandEvent& event ) = 0;
+		virtual void OnUserPageSizeYTextUpdated( wxCommandEvent& event ) = 0;
+		virtual void OnUserPageSizeXTextUpdated( wxCommandEvent& event ) = 0;
+		virtual void OnDateTextUpdated( wxCommandEvent& event ) = 0;
+		virtual void OnDateApplyClick( wxCommandEvent& event ) = 0;
+		virtual void OnRevisionTextUpdated( wxCommandEvent& event ) = 0;
+		virtual void OnTitleTextUpdated( wxCommandEvent& event ) = 0;
+		virtual void OnCompanyTextUpdated( wxCommandEvent& event ) = 0;
+		virtual void OnComment1TextUpdated( wxCommandEvent& event ) = 0;
+		virtual void OnComment2TextUpdated( wxCommandEvent& event ) = 0;
+		virtual void OnComment3TextUpdated( wxCommandEvent& event ) = 0;
+		virtual void OnComment4TextUpdated( wxCommandEvent& event ) = 0;
+		virtual void OnWksFileSelection( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/common/dialogs/wx_html_report_panel_base.fbp b/common/dialogs/wx_html_report_panel_base.fbp
index 97ae7e8..2b76710 100644
--- a/common/dialogs/wx_html_report_panel_base.fbp
+++ b/common/dialogs/wx_html_report_panel_base.fbp
@@ -33,7 +33,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="fg"></property>
             <property name="font"></property>
             <property name="hidden">0</property>
diff --git a/common/dialogs/wx_html_report_panel_base.h b/common/dialogs/wx_html_report_panel_base.h
index 392df98..8506dcf 100644
--- a/common/dialogs/wx_html_report_panel_base.h
+++ b/common/dialogs/wx_html_report_panel_base.h
@@ -46,12 +46,12 @@ class WX_HTML_REPORT_PANEL_BASE : public wxPanel
 		wxButton* m_btnSaveReportToFile;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void onCheckBoxShowAll( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onCheckBoxShowWarnings( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onCheckBoxShowErrors( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onCheckBoxShowInfos( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onCheckBoxShowActions( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onBtnSaveToFile( wxCommandEvent& event ) { event.Skip(); }
+		virtual void onCheckBoxShowAll( wxCommandEvent& event ) = 0;
+		virtual void onCheckBoxShowWarnings( wxCommandEvent& event ) = 0;
+		virtual void onCheckBoxShowErrors( wxCommandEvent& event ) = 0;
+		virtual void onCheckBoxShowInfos( wxCommandEvent& event ) = 0;
+		virtual void onCheckBoxShowActions( wxCommandEvent& event ) = 0;
+		virtual void onBtnSaveToFile( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/cvpcb/dialogs/dialog_config_equfiles_base.fbp b/cvpcb/dialogs/dialog_config_equfiles_base.fbp
index bf12b5a..8d589a3 100644
--- a/cvpcb/dialogs/dialog_config_equfiles_base.fbp
+++ b/cvpcb/dialogs/dialog_config_equfiles_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/cvpcb/dialogs/dialog_config_equfiles_base.h b/cvpcb/dialogs/dialog_config_equfiles_base.h
index dc0107e..93501af 100644
--- a/cvpcb/dialogs/dialog_config_equfiles_base.h
+++ b/cvpcb/dialogs/dialog_config_equfiles_base.h
@@ -62,13 +62,13 @@ class DIALOG_CONFIG_EQUFILES_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseWindow( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnAddFiles( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRemoveFiles( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonMoveUp( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonMoveDown( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnEditEquFile( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseWindow( wxCloseEvent& event ) = 0;
+		virtual void OnAddFiles( wxCommandEvent& event ) = 0;
+		virtual void OnRemoveFiles( wxCommandEvent& event ) = 0;
+		virtual void OnButtonMoveUp( wxCommandEvent& event ) = 0;
+		virtual void OnButtonMoveDown( wxCommandEvent& event ) = 0;
+		virtual void OnEditEquFile( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/cvpcb/dialogs/dialog_display_options_base.fbp b/cvpcb/dialogs/dialog_display_options_base.fbp
index fe693a6..fbc0146 100644
--- a/cvpcb/dialogs/dialog_display_options_base.fbp
+++ b/cvpcb/dialogs/dialog_display_options_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/cvpcb/dialogs/dialog_display_options_base.h b/cvpcb/dialogs/dialog_display_options_base.h
index 88edd0e..05b2425 100644
--- a/cvpcb/dialogs/dialog_display_options_base.h
+++ b/cvpcb/dialogs/dialog_display_options_base.h
@@ -50,9 +50,9 @@ class DIALOG_FOOTPRINTS_DISPLAY_OPTIONS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnApplyClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnApplyClick( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/cvpcb/dialogs/fp_conflict_assignment_selector_base.fbp b/cvpcb/dialogs/fp_conflict_assignment_selector_base.fbp
index fb57694..2fdb420 100644
--- a/cvpcb/dialogs/fp_conflict_assignment_selector_base.fbp
+++ b/cvpcb/dialogs/fp_conflict_assignment_selector_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/cvpcb/dialogs/fp_conflict_assignment_selector_base.h b/cvpcb/dialogs/fp_conflict_assignment_selector_base.h
index 220055f..c3cce0b 100644
--- a/cvpcb/dialogs/fp_conflict_assignment_selector_base.h
+++ b/cvpcb/dialogs/fp_conflict_assignment_selector_base.h
@@ -42,11 +42,11 @@ class DIALOG_FP_CONFLICT_ASSIGNMENT_SELECTOR_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnSize( wxSizeEvent& event ) { event.Skip(); }
-		virtual void OnItemClicked( wxMouseEvent& event ) { event.Skip(); }
-		virtual void OnColumnClick( wxListEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnSize( wxSizeEvent& event ) = 0;
+		virtual void OnItemClicked( wxMouseEvent& event ) = 0;
+		virtual void OnColumnClick( wxListEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOKClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_annotate_base.fbp b/eeschema/dialogs/dialog_annotate_base.fbp
index bc759c0..9c34d16 100644
--- a/eeschema/dialogs/dialog_annotate_base.fbp
+++ b/eeschema/dialogs/dialog_annotate_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_annotate_base.h b/eeschema/dialogs/dialog_annotate_base.h
index acb25d9..b114b67 100644
--- a/eeschema/dialogs/dialog_annotate_base.h
+++ b/eeschema/dialogs/dialog_annotate_base.h
@@ -79,9 +79,9 @@ class DIALOG_ANNOTATE_BASE : public DIALOG_SHIM
 		wxButton* m_btnApply;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnClearAnnotationCmpClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnApplyClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnClearAnnotationCmpClick( wxCommandEvent& event ) = 0;
+		virtual void OnApplyClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_bom_base.fbp b/eeschema/dialogs/dialog_bom_base.fbp
index 4a7064b..81a839e 100644
--- a/eeschema/dialogs/dialog_bom_base.fbp
+++ b/eeschema/dialogs/dialog_bom_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_bom_base.h b/eeschema/dialogs/dialog_bom_base.h
index d81b456..3284246 100644
--- a/eeschema/dialogs/dialog_bom_base.h
+++ b/eeschema/dialogs/dialog_bom_base.h
@@ -80,16 +80,16 @@ class DIALOG_BOM_BASE : public DIALOG_SHIM
 		wxTextCtrl* m_Messages;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnPluginSelected( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnNameEdited( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRunPlugin( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnHelp( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnAddPlugin( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRemovePlugin( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnEditPlugin( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCommandLineEdited( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnShowConsoleChanged( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnPluginSelected( wxCommandEvent& event ) = 0;
+		virtual void OnNameEdited( wxCommandEvent& event ) = 0;
+		virtual void OnRunPlugin( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnHelp( wxCommandEvent& event ) = 0;
+		virtual void OnAddPlugin( wxCommandEvent& event ) = 0;
+		virtual void OnRemovePlugin( wxCommandEvent& event ) = 0;
+		virtual void OnEditPlugin( wxCommandEvent& event ) = 0;
+		virtual void OnCommandLineEdited( wxCommandEvent& event ) = 0;
+		virtual void OnShowConsoleChanged( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_choose_component_base.fbp b/eeschema/dialogs/dialog_choose_component_base.fbp
index 5774001..38b5df2 100644
--- a/eeschema/dialogs/dialog_choose_component_base.fbp
+++ b/eeschema/dialogs/dialog_choose_component_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_choose_component_base.h b/eeschema/dialogs/dialog_choose_component_base.h
index d43f872..b781729 100644
--- a/eeschema/dialogs/dialog_choose_component_base.h
+++ b/eeschema/dialogs/dialog_choose_component_base.h
@@ -48,15 +48,15 @@ class DIALOG_CHOOSE_COMPONENT_BASE : public DIALOG_SHIM
 		wxButton* m_stdButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnInterceptSearchBoxKey( wxKeyEvent& event ) { event.Skip(); }
-		virtual void OnSearchBoxChange( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnSearchBoxEnter( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnInterceptTreeEnter( wxKeyEvent& event ) { event.Skip(); }
-		virtual void OnTreeMouseUp( wxMouseEvent& event ) { event.Skip(); }
-		virtual void OnDoubleClickTreeActivation( wxTreeEvent& event ) { event.Skip(); }
-		virtual void OnTreeSelect( wxTreeEvent& event ) { event.Skip(); }
-		virtual void OnStartComponentBrowser( wxMouseEvent& event ) { event.Skip(); }
-		virtual void OnHandlePreviewRepaint( wxPaintEvent& event ) { event.Skip(); }
+		virtual void OnInterceptSearchBoxKey( wxKeyEvent& event ) = 0;
+		virtual void OnSearchBoxChange( wxCommandEvent& event ) = 0;
+		virtual void OnSearchBoxEnter( wxCommandEvent& event ) = 0;
+		virtual void OnInterceptTreeEnter( wxKeyEvent& event ) = 0;
+		virtual void OnTreeMouseUp( wxMouseEvent& event ) = 0;
+		virtual void OnDoubleClickTreeActivation( wxTreeEvent& event ) = 0;
+		virtual void OnTreeSelect( wxTreeEvent& event ) = 0;
+		virtual void OnStartComponentBrowser( wxMouseEvent& event ) = 0;
+		virtual void OnHandlePreviewRepaint( wxPaintEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_edit_component_in_lib_base.fbp b/eeschema/dialogs/dialog_edit_component_in_lib_base.fbp
index 9253971..bb55e00 100644
--- a/eeschema/dialogs/dialog_edit_component_in_lib_base.fbp
+++ b/eeschema/dialogs/dialog_edit_component_in_lib_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_edit_component_in_lib_base.h b/eeschema/dialogs/dialog_edit_component_in_lib_base.h
index 8222b19..d7c9351 100644
--- a/eeschema/dialogs/dialog_edit_component_in_lib_base.h
+++ b/eeschema/dialogs/dialog_edit_component_in_lib_base.h
@@ -96,17 +96,17 @@ class DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE : public DIALOG_SHIM
 		wxButton* m_stdSizerButtonCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void CopyDocFromRootToAlias( wxCommandEvent& event ) { event.Skip(); }
-		virtual void BrowseAndSelectDocFile( wxCommandEvent& event ) { event.Skip(); }
-		virtual void AddAliasOfPart( wxCommandEvent& event ) { event.Skip(); }
-		virtual void DeleteAliasOfPart( wxCommandEvent& event ) { event.Skip(); }
-		virtual void DeleteAllAliasOfPart( wxCommandEvent& event ) { event.Skip(); }
-		virtual void AddFootprintFilter( wxCommandEvent& event ) { event.Skip(); }
-		virtual void EditOneFootprintFilter( wxCommandEvent& event ) { event.Skip(); }
-		virtual void DeleteOneFootprintFilter( wxCommandEvent& event ) { event.Skip(); }
-		virtual void DeleteAllFootprintFilter( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void CopyDocFromRootToAlias( wxCommandEvent& event ) = 0;
+		virtual void BrowseAndSelectDocFile( wxCommandEvent& event ) = 0;
+		virtual void AddAliasOfPart( wxCommandEvent& event ) = 0;
+		virtual void DeleteAliasOfPart( wxCommandEvent& event ) = 0;
+		virtual void DeleteAllAliasOfPart( wxCommandEvent& event ) = 0;
+		virtual void AddFootprintFilter( wxCommandEvent& event ) = 0;
+		virtual void EditOneFootprintFilter( wxCommandEvent& event ) = 0;
+		virtual void DeleteOneFootprintFilter( wxCommandEvent& event ) = 0;
+		virtual void DeleteAllFootprintFilter( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_edit_component_in_schematic_fbp.fbp b/eeschema/dialogs/dialog_edit_component_in_schematic_fbp.fbp
index 767623c..985ed5c 100644
--- a/eeschema/dialogs/dialog_edit_component_in_schematic_fbp.fbp
+++ b/eeschema/dialogs/dialog_edit_component_in_schematic_fbp.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_edit_component_in_schematic_fbp.h b/eeschema/dialogs/dialog_edit_component_in_schematic_fbp.h
index fe9746e..91fad87 100644
--- a/eeschema/dialogs/dialog_edit_component_in_schematic_fbp.h
+++ b/eeschema/dialogs/dialog_edit_component_in_schematic_fbp.h
@@ -85,20 +85,20 @@ class DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP : public DIALOG_SHIM
 		wxButton* stdDialogButtonSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseDialog( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void OnTestChipName( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnSelectChipName( wxCommandEvent& event ) { event.Skip(); }
-		virtual void EditSpiceModel( wxCommandEvent& event ) { event.Skip(); }
-		virtual void SetInitCmp( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnListItemDeselected( wxListEvent& event ) { event.Skip(); }
-		virtual void OnListItemSelected( wxListEvent& event ) { event.Skip(); }
-		virtual void addFieldButtonHandler( wxCommandEvent& event ) { event.Skip(); }
-		virtual void deleteFieldButtonHandler( wxCommandEvent& event ) { event.Skip(); }
-		virtual void moveUpButtonHandler( wxCommandEvent& event ) { event.Skip(); }
-		virtual void showButtonHandler( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseDialog( wxCloseEvent& event ) = 0;
+		virtual void OnInitDlg( wxInitDialogEvent& event ) = 0;
+		virtual void OnTestChipName( wxCommandEvent& event ) = 0;
+		virtual void OnSelectChipName( wxCommandEvent& event ) = 0;
+		virtual void EditSpiceModel( wxCommandEvent& event ) = 0;
+		virtual void SetInitCmp( wxCommandEvent& event ) = 0;
+		virtual void OnListItemDeselected( wxListEvent& event ) = 0;
+		virtual void OnListItemSelected( wxListEvent& event ) = 0;
+		virtual void addFieldButtonHandler( wxCommandEvent& event ) = 0;
+		virtual void deleteFieldButtonHandler( wxCommandEvent& event ) = 0;
+		virtual void moveUpButtonHandler( wxCommandEvent& event ) = 0;
+		virtual void showButtonHandler( wxCommandEvent& event ) = 0;
+		virtual void OnCancelButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnOKButtonClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_edit_label_base.fbp b/eeschema/dialogs/dialog_edit_label_base.fbp
index 609c484..2e67be8 100644
--- a/eeschema/dialogs/dialog_edit_label_base.fbp
+++ b/eeschema/dialogs/dialog_edit_label_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_edit_label_base.h b/eeschema/dialogs/dialog_edit_label_base.h
index 4b9decf..7d99e52 100644
--- a/eeschema/dialogs/dialog_edit_label_base.h
+++ b/eeschema/dialogs/dialog_edit_label_base.h
@@ -59,9 +59,9 @@ class DIALOG_LABEL_EDITOR_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnEnterKey( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnEnterKey( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_edit_libentry_fields_in_lib_base.fbp b/eeschema/dialogs/dialog_edit_libentry_fields_in_lib_base.fbp
index 42a647e..02e45cb 100644
--- a/eeschema/dialogs/dialog_edit_libentry_fields_in_lib_base.fbp
+++ b/eeschema/dialogs/dialog_edit_libentry_fields_in_lib_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_edit_libentry_fields_in_lib_base.h b/eeschema/dialogs/dialog_edit_libentry_fields_in_lib_base.h
index 3911e71..7eccf00 100644
--- a/eeschema/dialogs/dialog_edit_libentry_fields_in_lib_base.h
+++ b/eeschema/dialogs/dialog_edit_libentry_fields_in_lib_base.h
@@ -70,16 +70,16 @@ class DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB_BASE : public DIALOG_SHIM
 		wxButton* stdDialogButtonSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseDialog( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void OnListItemDeselected( wxListEvent& event ) { event.Skip(); }
-		virtual void OnListItemSelected( wxListEvent& event ) { event.Skip(); }
-		virtual void addFieldButtonHandler( wxCommandEvent& event ) { event.Skip(); }
-		virtual void deleteFieldButtonHandler( wxCommandEvent& event ) { event.Skip(); }
-		virtual void moveUpButtonHandler( wxCommandEvent& event ) { event.Skip(); }
-		virtual void showButtonHandler( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseDialog( wxCloseEvent& event ) = 0;
+		virtual void OnInitDialog( wxInitDialogEvent& event ) = 0;
+		virtual void OnListItemDeselected( wxListEvent& event ) = 0;
+		virtual void OnListItemSelected( wxListEvent& event ) = 0;
+		virtual void addFieldButtonHandler( wxCommandEvent& event ) = 0;
+		virtual void deleteFieldButtonHandler( wxCommandEvent& event ) = 0;
+		virtual void moveUpButtonHandler( wxCommandEvent& event ) = 0;
+		virtual void showButtonHandler( wxCommandEvent& event ) = 0;
+		virtual void OnCancelButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnOKButtonClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_eeschema_config_fbp.fbp b/eeschema/dialogs/dialog_eeschema_config_fbp.fbp
index 6049ed3..45a50a1 100644
--- a/eeschema/dialogs/dialog_eeschema_config_fbp.fbp
+++ b/eeschema/dialogs/dialog_eeschema_config_fbp.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_eeschema_config_fbp.h b/eeschema/dialogs/dialog_eeschema_config_fbp.h
index 78ff8df..8e11480 100644
--- a/eeschema/dialogs/dialog_eeschema_config_fbp.h
+++ b/eeschema/dialogs/dialog_eeschema_config_fbp.h
@@ -64,15 +64,15 @@ class DIALOG_EESCHEMA_CONFIG_FBP : public DIALOG_SHIM
 		wxStaticLine* m_staticline3;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseWindow( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnAddOrInsertLibClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRemoveLibClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonUpClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonDownClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnAddOrInsertPath( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRemoveUserPath( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseWindow( wxCloseEvent& event ) = 0;
+		virtual void OnAddOrInsertLibClick( wxCommandEvent& event ) = 0;
+		virtual void OnRemoveLibClick( wxCommandEvent& event ) = 0;
+		virtual void OnButtonUpClick( wxCommandEvent& event ) = 0;
+		virtual void OnButtonDownClick( wxCommandEvent& event ) = 0;
+		virtual void OnAddOrInsertPath( wxCommandEvent& event ) = 0;
+		virtual void OnRemoveUserPath( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_eeschema_options_base.fbp b/eeschema/dialogs/dialog_eeschema_options_base.fbp
index f438706..169d2ec 100644
--- a/eeschema/dialogs/dialog_eeschema_options_base.fbp
+++ b/eeschema/dialogs/dialog_eeschema_options_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_eeschema_options_base.h b/eeschema/dialogs/dialog_eeschema_options_base.h
index 0cba34c..be61bc3 100644
--- a/eeschema/dialogs/dialog_eeschema_options_base.h
+++ b/eeschema/dialogs/dialog_eeschema_options_base.h
@@ -116,8 +116,8 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnAddButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDeleteButtonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnAddButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnDeleteButtonClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_erc_base.fbp b/eeschema/dialogs/dialog_erc_base.fbp
index 72d4c4b..f555f11 100644
--- a/eeschema/dialogs/dialog_erc_base.fbp
+++ b/eeschema/dialogs/dialog_erc_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_erc_base.h b/eeschema/dialogs/dialog_erc_base.h
index b07ea68..7c17060 100644
--- a/eeschema/dialogs/dialog_erc_base.h
+++ b/eeschema/dialogs/dialog_erc_base.h
@@ -76,13 +76,13 @@ class DIALOG_ERC_BASE : public DIALOG_SHIM
 		wxCheckBox* m_cbTestUniqueGlbLabels;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseErcDialog( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnLeftClickMarkersList( wxHtmlLinkEvent& event ) { event.Skip(); }
-		virtual void OnLeftDblClickMarkersList( wxMouseEvent& event ) { event.Skip(); }
-		virtual void OnEraseDrcMarkersClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnErcCmpClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonCloseClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnResetMatrixClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseErcDialog( wxCloseEvent& event ) = 0;
+		virtual void OnLeftClickMarkersList( wxHtmlLinkEvent& event ) = 0;
+		virtual void OnLeftDblClickMarkersList( wxMouseEvent& event ) = 0;
+		virtual void OnEraseDrcMarkersClick( wxCommandEvent& event ) = 0;
+		virtual void OnErcCmpClick( wxCommandEvent& event ) = 0;
+		virtual void OnButtonCloseClick( wxCommandEvent& event ) = 0;
+		virtual void OnResetMatrixClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_lib_edit_draw_item.fbp b/eeschema/dialogs/dialog_lib_edit_draw_item.fbp
index b7854d6..6bec592 100644
--- a/eeschema/dialogs/dialog_lib_edit_draw_item.fbp
+++ b/eeschema/dialogs/dialog_lib_edit_draw_item.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_lib_edit_pin_base.fbp b/eeschema/dialogs/dialog_lib_edit_pin_base.fbp
index 43b1deb..3504cc0 100644
--- a/eeschema/dialogs/dialog_lib_edit_pin_base.fbp
+++ b/eeschema/dialogs/dialog_lib_edit_pin_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_lib_edit_pin_base.h b/eeschema/dialogs/dialog_lib_edit_pin_base.h
index b437630..b001d9f 100644
--- a/eeschema/dialogs/dialog_lib_edit_pin_base.h
+++ b/eeschema/dialogs/dialog_lib_edit_pin_base.h
@@ -88,12 +88,12 @@ class DIALOG_LIB_EDIT_PIN_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseDialog( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void OnPropertiesChange( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPaintShowPanel( wxPaintEvent& event ) { event.Skip(); }
-		virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKButtonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseDialog( wxCloseEvent& event ) = 0;
+		virtual void OnInitDialog( wxInitDialogEvent& event ) = 0;
+		virtual void OnPropertiesChange( wxCommandEvent& event ) = 0;
+		virtual void OnPaintShowPanel( wxPaintEvent& event ) = 0;
+		virtual void OnCancelButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnOKButtonClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_lib_edit_text_base.fbp b/eeschema/dialogs/dialog_lib_edit_text_base.fbp
index 1edc589..bc02bde 100644
--- a/eeschema/dialogs/dialog_lib_edit_text_base.fbp
+++ b/eeschema/dialogs/dialog_lib_edit_text_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_lib_edit_text_base.h b/eeschema/dialogs/dialog_lib_edit_text_base.h
index 82e11ac..4722821 100644
--- a/eeschema/dialogs/dialog_lib_edit_text_base.h
+++ b/eeschema/dialogs/dialog_lib_edit_text_base.h
@@ -58,10 +58,10 @@ class DIALOG_LIB_EDIT_TEXT_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseDialog( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnTextValueSelectButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseDialog( wxCloseEvent& event ) = 0;
+		virtual void OnTextValueSelectButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_lib_new_component.fbp b/eeschema/dialogs/dialog_lib_new_component.fbp
index d88db4e..036fb92 100644
--- a/eeschema/dialogs/dialog_lib_new_component.fbp
+++ b/eeschema/dialogs/dialog_lib_new_component.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_libedit_options_base.fbp b/eeschema/dialogs/dialog_libedit_options_base.fbp
index edd5061..dbcabc1 100644
--- a/eeschema/dialogs/dialog_libedit_options_base.fbp
+++ b/eeschema/dialogs/dialog_libedit_options_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_netlist_base.fbp b/eeschema/dialogs/dialog_netlist_base.fbp
index a37d9e8..9d1b683 100644
--- a/eeschema/dialogs/dialog_netlist_base.fbp
+++ b/eeschema/dialogs/dialog_netlist_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
@@ -925,7 +925,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_netlist_base.h b/eeschema/dialogs/dialog_netlist_base.h
index f669da8..29bff9a 100644
--- a/eeschema/dialogs/dialog_netlist_base.h
+++ b/eeschema/dialogs/dialog_netlist_base.h
@@ -65,10 +65,10 @@ class NETLIST_DIALOG_BASE : public DIALOG_SHIM
 		wxTextCtrl* m_textCtrlDefaultFileName;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnNetlistTypeSelection( wxNotebookEvent& event ) { event.Skip(); }
-		virtual void GenNetlist( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnAddPlugin( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDelPlugin( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnNetlistTypeSelection( wxNotebookEvent& event ) = 0;
+		virtual void GenNetlist( wxCommandEvent& event ) = 0;
+		virtual void OnAddPlugin( wxCommandEvent& event ) = 0;
+		virtual void OnDelPlugin( wxCommandEvent& event ) = 0;
 		
 	
 	public:
@@ -106,8 +106,8 @@ class NETLIST_DIALOG_ADD_PLUGIN_BASE : public DIALOG_SHIM
 		wxButton* m_buttonPlugin;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnBrowsePlugins( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnOKClick( wxCommandEvent& event ) = 0;
+		virtual void OnBrowsePlugins( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_plot_schematic_base.fbp b/eeschema/dialogs/dialog_plot_schematic_base.fbp
index 6012de0..520ad59 100644
--- a/eeschema/dialogs/dialog_plot_schematic_base.fbp
+++ b/eeschema/dialogs/dialog_plot_schematic_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_plot_schematic_base.h b/eeschema/dialogs/dialog_plot_schematic_base.h
index b2a00f4..c78368e 100644
--- a/eeschema/dialogs/dialog_plot_schematic_base.h
+++ b/eeschema/dialogs/dialog_plot_schematic_base.h
@@ -71,11 +71,11 @@ class DIALOG_PLOT_SCHEMATIC_BASE : public DIALOG_SHIM
 		WX_HTML_REPORT_PANEL* m_MessagesBox;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPlotFormatSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonPlotCurrentClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonPlotAllClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonCancelClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) = 0;
+		virtual void OnPlotFormatSelection( wxCommandEvent& event ) = 0;
+		virtual void OnButtonPlotCurrentClick( wxCommandEvent& event ) = 0;
+		virtual void OnButtonPlotAllClick( wxCommandEvent& event ) = 0;
+		virtual void OnButtonCancelClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_print_using_printer_base.fbp b/eeschema/dialogs/dialog_print_using_printer_base.fbp
index cf785e1..ddc4b73 100644
--- a/eeschema/dialogs/dialog_print_using_printer_base.fbp
+++ b/eeschema/dialogs/dialog_print_using_printer_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_print_using_printer_base.h b/eeschema/dialogs/dialog_print_using_printer_base.h
index 4557e0e..8e66782 100644
--- a/eeschema/dialogs/dialog_print_using_printer_base.h
+++ b/eeschema/dialogs/dialog_print_using_printer_base.h
@@ -44,11 +44,11 @@ class DIALOG_PRINT_USING_PRINTER_BASE : public DIALOG_SHIM
 		wxButton* m_buttonQuit;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseWindow( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnPageSetup( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPrintPreview( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPrintButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonCancelClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseWindow( wxCloseEvent& event ) = 0;
+		virtual void OnPageSetup( wxCommandEvent& event ) = 0;
+		virtual void OnPrintPreview( wxCommandEvent& event ) = 0;
+		virtual void OnPrintButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnButtonCancelClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_rescue_each_base.fbp b/eeschema/dialogs/dialog_rescue_each_base.fbp
index c1a11a3..74644e4 100644
--- a/eeschema/dialogs/dialog_rescue_each_base.fbp
+++ b/eeschema/dialogs/dialog_rescue_each_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_rescue_each_base.h b/eeschema/dialogs/dialog_rescue_each_base.h
index 9bbf284..fc0bc49 100644
--- a/eeschema/dialogs/dialog_rescue_each_base.h
+++ b/eeschema/dialogs/dialog_rescue_each_base.h
@@ -52,11 +52,11 @@ class DIALOG_RESCUE_EACH_BASE : public DIALOG_SHIM
 		wxButton* m_stdButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnConflictSelect( wxDataViewEvent& event ) { event.Skip(); }
-		virtual void OnHandleCachePreviewRepaint( wxPaintEvent& event ) { event.Skip(); }
-		virtual void OnHandleLibraryPreviewRepaint( wxPaintEvent& event ) { event.Skip(); }
-		virtual void OnNeverShowClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnConflictSelect( wxDataViewEvent& event ) = 0;
+		virtual void OnHandleCachePreviewRepaint( wxPaintEvent& event ) = 0;
+		virtual void OnHandleLibraryPreviewRepaint( wxPaintEvent& event ) = 0;
+		virtual void OnNeverShowClick( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_sch_edit_sheet_pin_base.fbp b/eeschema/dialogs/dialog_sch_edit_sheet_pin_base.fbp
index 919a609..e17df91 100644
--- a/eeschema/dialogs/dialog_sch_edit_sheet_pin_base.fbp
+++ b/eeschema/dialogs/dialog_sch_edit_sheet_pin_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_sch_sheet_props.fbp b/eeschema/dialogs/dialog_sch_sheet_props.fbp
index 93347cc..b18ed45 100644
--- a/eeschema/dialogs/dialog_sch_sheet_props.fbp
+++ b/eeschema/dialogs/dialog_sch_sheet_props.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_schematic_find_base.fbp b/eeschema/dialogs/dialog_schematic_find_base.fbp
index b1d4a90..7d3911c 100644
--- a/eeschema/dialogs/dialog_schematic_find_base.fbp
+++ b/eeschema/dialogs/dialog_schematic_find_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_schematic_find_base.h b/eeschema/dialogs/dialog_schematic_find_base.h
index 260b1b7..c9b9d52 100644
--- a/eeschema/dialogs/dialog_schematic_find_base.h
+++ b/eeschema/dialogs/dialog_schematic_find_base.h
@@ -60,15 +60,15 @@ class DIALOG_SCH_FIND_BASE : public DIALOG_SHIM
 		wxButton* m_buttonCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnUpdateWholeWordUI( wxUpdateUIEvent& event ) { event.Skip(); }
-		virtual void OnUpdateWildcardUI( wxUpdateUIEvent& event ) { event.Skip(); }
-		virtual void OnFind( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnUpdateFindUI( wxUpdateUIEvent& event ) { event.Skip(); }
-		virtual void OnReplace( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnUpdateReplaceUI( wxUpdateUIEvent& event ) { event.Skip(); }
-		virtual void OnUpdateReplaceAllUI( wxUpdateUIEvent& event ) { event.Skip(); }
-		virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnClose( wxCloseEvent& event ) = 0;
+		virtual void OnUpdateWholeWordUI( wxUpdateUIEvent& event ) = 0;
+		virtual void OnUpdateWildcardUI( wxUpdateUIEvent& event ) = 0;
+		virtual void OnFind( wxCommandEvent& event ) = 0;
+		virtual void OnUpdateFindUI( wxUpdateUIEvent& event ) = 0;
+		virtual void OnReplace( wxCommandEvent& event ) = 0;
+		virtual void OnUpdateReplaceUI( wxUpdateUIEvent& event ) = 0;
+		virtual void OnUpdateReplaceAllUI( wxUpdateUIEvent& event ) = 0;
+		virtual void OnCancel( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_signal_list_base.fbp b/eeschema/dialogs/dialog_signal_list_base.fbp
index 3169140..16c037e 100644
--- a/eeschema/dialogs/dialog_signal_list_base.fbp
+++ b/eeschema/dialogs/dialog_signal_list_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_signal_list_base.h b/eeschema/dialogs/dialog_signal_list_base.h
index 6f1eecb..b9da421 100644
--- a/eeschema/dialogs/dialog_signal_list_base.h
+++ b/eeschema/dialogs/dialog_signal_list_base.h
@@ -41,7 +41,7 @@ class DIALOG_SIGNAL_LIST_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void onSignalAdd( wxCommandEvent& event ) { event.Skip(); }
+		virtual void onSignalAdd( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_sim_settings_base.fbp b/eeschema/dialogs/dialog_sim_settings_base.fbp
index 5f5c2ae..f99bcf6 100644
--- a/eeschema/dialogs/dialog_sim_settings_base.fbp
+++ b/eeschema/dialogs/dialog_sim_settings_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_sim_settings_base.h b/eeschema/dialogs/dialog_sim_settings_base.h
index 3d8bfba..e50be4d 100644
--- a/eeschema/dialogs/dialog_sim_settings_base.h
+++ b/eeschema/dialogs/dialog_sim_settings_base.h
@@ -114,8 +114,8 @@ class DIALOG_SIM_SETTINGS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void onInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void onLoadDirectives( wxCommandEvent& event ) { event.Skip(); }
+		virtual void onInitDlg( wxInitDialogEvent& event ) = 0;
+		virtual void onLoadDirectives( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/dialogs/dialog_spice_model_base.fbp b/eeschema/dialogs/dialog_spice_model_base.fbp
index ea9cdf1..bb60406 100644
--- a/eeschema/dialogs/dialog_spice_model_base.fbp
+++ b/eeschema/dialogs/dialog_spice_model_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/dialogs/dialog_spice_model_base.h b/eeschema/dialogs/dialog_spice_model_base.h
index 82b51fd..40baf6f 100644
--- a/eeschema/dialogs/dialog_spice_model_base.h
+++ b/eeschema/dialogs/dialog_spice_model_base.h
@@ -170,11 +170,11 @@ class DIALOG_SPICE_MODEL_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void onInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void onSemiSelectLib( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onSelectIcLib( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onPwlAdd( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onPwlRemove( wxCommandEvent& event ) { event.Skip(); }
+		virtual void onInitDlg( wxInitDialogEvent& event ) = 0;
+		virtual void onSemiSelectLib( wxCommandEvent& event ) = 0;
+		virtual void onSelectIcLib( wxCommandEvent& event ) = 0;
+		virtual void onPwlAdd( wxCommandEvent& event ) = 0;
+		virtual void onPwlRemove( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/sim/sim_plot_frame_base.fbp b/eeschema/sim/sim_plot_frame_base.fbp
index 69104ed..68fac49 100644
--- a/eeschema/sim/sim_plot_frame_base.fbp
+++ b/eeschema/sim/sim_plot_frame_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/eeschema/sim/sim_plot_frame_base.h b/eeschema/sim/sim_plot_frame_base.h
index 72c9f6c..37a653f 100644
--- a/eeschema/sim/sim_plot_frame_base.h
+++ b/eeschema/sim/sim_plot_frame_base.h
@@ -78,23 +78,23 @@ class SIM_PLOT_FRAME_BASE : public KIWAY_PLAYER
 		wxBoxSizer* m_tuneSizer;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void menuNewPlot( wxCommandEvent& event ) { event.Skip(); }
-		virtual void menuOpenWorkbook( wxCommandEvent& event ) { event.Skip(); }
-		virtual void menuSaveWorkbook( wxCommandEvent& event ) { event.Skip(); }
-		virtual void menuSaveImage( wxCommandEvent& event ) { event.Skip(); }
-		virtual void menuSaveCsv( wxCommandEvent& event ) { event.Skip(); }
-		virtual void menuExit( wxCommandEvent& event ) { event.Skip(); }
-		virtual void menuZoomIn( wxCommandEvent& event ) { event.Skip(); }
-		virtual void menuZoomOut( wxCommandEvent& event ) { event.Skip(); }
-		virtual void menuZoomFit( wxCommandEvent& event ) { event.Skip(); }
-		virtual void menuShowGrid( wxCommandEvent& event ) { event.Skip(); }
-		virtual void menuShowGridUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
-		virtual void menuShowLegend( wxCommandEvent& event ) { event.Skip(); }
-		virtual void menuShowLegendUpdate( wxUpdateUIEvent& event ) { event.Skip(); }
-		virtual void onPlotChanged( wxAuiNotebookEvent& event ) { event.Skip(); }
-		virtual void onPlotClose( wxAuiNotebookEvent& event ) { event.Skip(); }
-		virtual void onSignalDblClick( wxMouseEvent& event ) { event.Skip(); }
-		virtual void onSignalRClick( wxListEvent& event ) { event.Skip(); }
+		virtual void menuNewPlot( wxCommandEvent& event ) = 0;
+		virtual void menuOpenWorkbook( wxCommandEvent& event ) = 0;
+		virtual void menuSaveWorkbook( wxCommandEvent& event ) = 0;
+		virtual void menuSaveImage( wxCommandEvent& event ) = 0;
+		virtual void menuSaveCsv( wxCommandEvent& event ) = 0;
+		virtual void menuExit( wxCommandEvent& event ) = 0;
+		virtual void menuZoomIn( wxCommandEvent& event ) = 0;
+		virtual void menuZoomOut( wxCommandEvent& event ) = 0;
+		virtual void menuZoomFit( wxCommandEvent& event ) = 0;
+		virtual void menuShowGrid( wxCommandEvent& event ) = 0;
+		virtual void menuShowGridUpdate( wxUpdateUIEvent& event ) = 0;
+		virtual void menuShowLegend( wxCommandEvent& event ) = 0;
+		virtual void menuShowLegendUpdate( wxUpdateUIEvent& event ) = 0;
+		virtual void onPlotChanged( wxAuiNotebookEvent& event ) = 0;
+		virtual void onPlotClose( wxAuiNotebookEvent& event ) = 0;
+		virtual void onSignalDblClick( wxMouseEvent& event ) = 0;
+		virtual void onSignalRClick( wxListEvent& event ) = 0;
 		
 	
 	public:
diff --git a/eeschema/widgets/tuner_slider_base.fbp b/eeschema/widgets/tuner_slider_base.fbp
index 8c9df7f..023d4c3 100644
--- a/eeschema/widgets/tuner_slider_base.fbp
+++ b/eeschema/widgets/tuner_slider_base.fbp
@@ -33,7 +33,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="fg"></property>
             <property name="font"></property>
             <property name="hidden">0</property>
diff --git a/eeschema/widgets/tuner_slider_base.h b/eeschema/widgets/tuner_slider_base.h
index 5eaf4a2..579b5c3 100644
--- a/eeschema/widgets/tuner_slider_base.h
+++ b/eeschema/widgets/tuner_slider_base.h
@@ -43,12 +43,12 @@ class TUNER_SLIDER_BASE : public wxPanel
 		wxButton* m_saveBtn;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void onClose( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onSliderChanged( wxScrollEvent& event ) { event.Skip(); }
-		virtual void onMaxTextEnter( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onValueTextEnter( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onMinTextEnter( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onSave( wxCommandEvent& event ) { event.Skip(); }
+		virtual void onClose( wxCommandEvent& event ) = 0;
+		virtual void onSliderChanged( wxScrollEvent& event ) = 0;
+		virtual void onMaxTextEnter( wxCommandEvent& event ) = 0;
+		virtual void onValueTextEnter( wxCommandEvent& event ) = 0;
+		virtual void onMinTextEnter( wxCommandEvent& event ) = 0;
+		virtual void onSave( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/gerbview/dialogs/dialog_layers_select_to_pcb_base.fbp b/gerbview/dialogs/dialog_layers_select_to_pcb_base.fbp
index e43855a..1aecb00 100644
--- a/gerbview/dialogs/dialog_layers_select_to_pcb_base.fbp
+++ b/gerbview/dialogs/dialog_layers_select_to_pcb_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/gerbview/dialogs/dialog_layers_select_to_pcb_base.h b/gerbview/dialogs/dialog_layers_select_to_pcb_base.h
index 516d72c..4c3e726 100644
--- a/gerbview/dialogs/dialog_layers_select_to_pcb_base.h
+++ b/gerbview/dialogs/dialog_layers_select_to_pcb_base.h
@@ -71,11 +71,11 @@ class LAYERS_MAP_DIALOG_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnBrdLayersCountSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnStoreSetup( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnGetSetup( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnResetClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnBrdLayersCountSelection( wxCommandEvent& event ) = 0;
+		virtual void OnStoreSetup( wxCommandEvent& event ) = 0;
+		virtual void OnGetSetup( wxCommandEvent& event ) = 0;
+		virtual void OnResetClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/gerbview/dialogs/dialog_print_using_printer_base.fbp b/gerbview/dialogs/dialog_print_using_printer_base.fbp
index ef4f134..0842fbd 100644
--- a/gerbview/dialogs/dialog_print_using_printer_base.fbp
+++ b/gerbview/dialogs/dialog_print_using_printer_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/gerbview/dialogs/dialog_print_using_printer_base.h b/gerbview/dialogs/dialog_print_using_printer_base.h
index 9bd5709..c358e90 100644
--- a/gerbview/dialogs/dialog_print_using_printer_base.h
+++ b/gerbview/dialogs/dialog_print_using_printer_base.h
@@ -60,12 +60,12 @@ class DIALOG_PRINT_USING_PRINTER_BASE : public DIALOG_SHIM
 		wxButton* m_buttonQuit;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseWindow( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnScaleSelectionClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPageSetup( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPrintPreview( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPrintButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonCloseClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseWindow( wxCloseEvent& event ) = 0;
+		virtual void OnScaleSelectionClick( wxCommandEvent& event ) = 0;
+		virtual void OnPageSetup( wxCommandEvent& event ) = 0;
+		virtual void OnPrintPreview( wxCommandEvent& event ) = 0;
+		virtual void OnPrintButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnButtonCloseClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/gerbview/dialogs/dialog_show_page_borders_base.fbp b/gerbview/dialogs/dialog_show_page_borders_base.fbp
index fd7b45b..b24fb1a 100644
--- a/gerbview/dialogs/dialog_show_page_borders_base.fbp
+++ b/gerbview/dialogs/dialog_show_page_borders_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/gerbview/dialogs/dialog_show_page_borders_base.h b/gerbview/dialogs/dialog_show_page_borders_base.h
index b687c36..d65836a 100644
--- a/gerbview/dialogs/dialog_show_page_borders_base.h
+++ b/gerbview/dialogs/dialog_show_page_borders_base.h
@@ -43,8 +43,8 @@ class DIALOG_PAGE_SHOW_PAGE_BORDERS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKBUttonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCancelButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnOKBUttonClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/gerbview/dialogs/gerbview_dialog_display_options_frame_base.fbp b/gerbview/dialogs/gerbview_dialog_display_options_frame_base.fbp
index 1eafe8b..7205278 100644
--- a/gerbview/dialogs/gerbview_dialog_display_options_frame_base.fbp
+++ b/gerbview/dialogs/gerbview_dialog_display_options_frame_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/gerbview/dialogs/gerbview_dialog_display_options_frame_base.h b/gerbview/dialogs/gerbview_dialog_display_options_frame_base.h
index bdd9eb5..9cee422 100644
--- a/gerbview/dialogs/gerbview_dialog_display_options_frame_base.h
+++ b/gerbview/dialogs/gerbview_dialog_display_options_frame_base.h
@@ -54,8 +54,8 @@ class DIALOG_DISPLAY_OPTIONS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKBUttonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCancelButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnOKBUttonClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/kicad/dialogs/dialog_template_selector.fbp b/kicad/dialogs/dialog_template_selector.fbp
index 687a923..145b4e3 100644
--- a/kicad/dialogs/dialog_template_selector.fbp
+++ b/kicad/dialogs/dialog_template_selector.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
@@ -738,7 +738,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="fg"></property>
             <property name="font"></property>
             <property name="hidden">0</property>
@@ -885,7 +885,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="fg"></property>
             <property name="font"></property>
             <property name="hidden">0</property>
diff --git a/kicad/dialogs/dialog_template_selector_base.h b/kicad/dialogs/dialog_template_selector_base.h
index 04b2de4..dad5605 100644
--- a/kicad/dialogs/dialog_template_selector_base.h
+++ b/kicad/dialogs/dialog_template_selector_base.h
@@ -57,10 +57,10 @@ class DIALOG_TEMPLATE_SELECTOR_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnPageChange( wxNotebookEvent& event ) { event.Skip(); }
-		virtual void OnHtmlLinkActivated( wxHtmlLinkEvent& event ) { event.Skip(); }
-		virtual void onDirectoryBrowseClicked( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onValidatePath( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnPageChange( wxNotebookEvent& event ) = 0;
+		virtual void OnHtmlLinkActivated( wxHtmlLinkEvent& event ) = 0;
+		virtual void onDirectoryBrowseClicked( wxCommandEvent& event ) = 0;
+		virtual void onValidatePath( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pagelayout_editor/dialogs/dialog_new_dataitem_base.fbp b/pagelayout_editor/dialogs/dialog_new_dataitem_base.fbp
index efe0a56..3e422ae 100644
--- a/pagelayout_editor/dialogs/dialog_new_dataitem_base.fbp
+++ b/pagelayout_editor/dialogs/dialog_new_dataitem_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pagelayout_editor/dialogs/dialog_new_dataitem_base.h b/pagelayout_editor/dialogs/dialog_new_dataitem_base.h
index 323de9d..b8ddc4c 100644
--- a/pagelayout_editor/dialogs/dialog_new_dataitem_base.h
+++ b/pagelayout_editor/dialogs/dialog_new_dataitem_base.h
@@ -62,8 +62,8 @@ class DIALOG_NEW_DATAITEM_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOKClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pagelayout_editor/dialogs/properties_frame_base.fbp b/pagelayout_editor/dialogs/properties_frame_base.fbp
index d911103..b9e50c9 100644
--- a/pagelayout_editor/dialogs/properties_frame_base.fbp
+++ b/pagelayout_editor/dialogs/properties_frame_base.fbp
@@ -33,7 +33,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="fg"></property>
             <property name="font"></property>
             <property name="hidden">0</property>
diff --git a/pagelayout_editor/dialogs/properties_frame_base.h b/pagelayout_editor/dialogs/properties_frame_base.h
index f20a17e..64c8d4b 100644
--- a/pagelayout_editor/dialogs/properties_frame_base.h
+++ b/pagelayout_editor/dialogs/properties_frame_base.h
@@ -131,8 +131,8 @@ class PANEL_PROPERTIES_BASE : public wxPanel
 		wxButton* m_buttonGeneralOptsOK;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnAcceptPrms( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnSetDefaultValues( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnAcceptPrms( wxCommandEvent& event ) = 0;
+		virtual void OnSetDefaultValues( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcb_calculator/dialogs/dialog_regulator_data.fbp b/pcb_calculator/dialogs/dialog_regulator_data.fbp
index b3051a1..a290f64 100644
--- a/pcb_calculator/dialogs/dialog_regulator_data.fbp
+++ b/pcb_calculator/dialogs/dialog_regulator_data.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcb_calculator/dialogs/dialog_regulator_data_base.h b/pcb_calculator/dialogs/dialog_regulator_data_base.h
index 74b546e..1e1cd4e 100644
--- a/pcb_calculator/dialogs/dialog_regulator_data_base.h
+++ b/pcb_calculator/dialogs/dialog_regulator_data_base.h
@@ -54,8 +54,8 @@ class DIALOG_EDITOR_DATA_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnRegTypeSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnRegTypeSelection( wxCommandEvent& event ) = 0;
+		virtual void OnOKClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcb_calculator/dialogs/pcb_calculator_frame_base.fbp b/pcb_calculator/dialogs/pcb_calculator_frame_base.fbp
index 2ae0516..2819b58 100644
--- a/pcb_calculator/dialogs/pcb_calculator_frame_base.fbp
+++ b/pcb_calculator/dialogs/pcb_calculator_frame_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcb_calculator/dialogs/pcb_calculator_frame_base.h b/pcb_calculator/dialogs/pcb_calculator_frame_base.h
index 424a5ec..8b8ab58 100644
--- a/pcb_calculator/dialogs/pcb_calculator_frame_base.h
+++ b/pcb_calculator/dialogs/pcb_calculator_frame_base.h
@@ -275,32 +275,32 @@ class PCB_CALCULATOR_FRAME_BASE : public KIWAY_PLAYER
 		wxPanel* m_panelShowClassPrms;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnClosePcbCalc( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnRegulTypeSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRegulatorCalcButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRegulatorSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDataFileSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnEditRegulator( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnAddRegulator( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRemoveRegulator( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTWCalculateFromCurrent( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTWParametersChanged( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTWCalculateFromExtWidth( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTWCalculateFromIntWidth( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnElectricalSpacingUnitsSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnElectricalSpacingRefresh( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTranslineSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPaintTranslinePanel( wxPaintEvent& event ) { event.Skip(); }
-		virtual void OnTranslineEpsilonR_Button( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTranslineTanD_Button( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTranslineRho_Button( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTranslineAnalyse( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTranslineSynthetize( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnAttenuatorSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPaintAttenuatorPanel( wxPaintEvent& event ) { event.Skip(); }
-		virtual void OnCalculateAttenuator( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnToleranceSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnBoardClassesUnitsSelection( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnClosePcbCalc( wxCloseEvent& event ) = 0;
+		virtual void OnRegulTypeSelection( wxCommandEvent& event ) = 0;
+		virtual void OnRegulatorCalcButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnRegulatorSelection( wxCommandEvent& event ) = 0;
+		virtual void OnDataFileSelection( wxCommandEvent& event ) = 0;
+		virtual void OnEditRegulator( wxCommandEvent& event ) = 0;
+		virtual void OnAddRegulator( wxCommandEvent& event ) = 0;
+		virtual void OnRemoveRegulator( wxCommandEvent& event ) = 0;
+		virtual void OnTWCalculateFromCurrent( wxCommandEvent& event ) = 0;
+		virtual void OnTWParametersChanged( wxCommandEvent& event ) = 0;
+		virtual void OnTWCalculateFromExtWidth( wxCommandEvent& event ) = 0;
+		virtual void OnTWCalculateFromIntWidth( wxCommandEvent& event ) = 0;
+		virtual void OnElectricalSpacingUnitsSelection( wxCommandEvent& event ) = 0;
+		virtual void OnElectricalSpacingRefresh( wxCommandEvent& event ) = 0;
+		virtual void OnTranslineSelection( wxCommandEvent& event ) = 0;
+		virtual void OnPaintTranslinePanel( wxPaintEvent& event ) = 0;
+		virtual void OnTranslineEpsilonR_Button( wxCommandEvent& event ) = 0;
+		virtual void OnTranslineTanD_Button( wxCommandEvent& event ) = 0;
+		virtual void OnTranslineRho_Button( wxCommandEvent& event ) = 0;
+		virtual void OnTranslineAnalyse( wxCommandEvent& event ) = 0;
+		virtual void OnTranslineSynthetize( wxCommandEvent& event ) = 0;
+		virtual void OnAttenuatorSelection( wxCommandEvent& event ) = 0;
+		virtual void OnPaintAttenuatorPanel( wxPaintEvent& event ) = 0;
+		virtual void OnCalculateAttenuator( wxCommandEvent& event ) = 0;
+		virtual void OnToleranceSelection( wxCommandEvent& event ) = 0;
+		virtual void OnBoardClassesUnitsSelection( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_SVG_print_base.fbp b/pcbnew/dialogs/dialog_SVG_print_base.fbp
index 9c8aeae..952be3e 100644
--- a/pcbnew/dialogs/dialog_SVG_print_base.fbp
+++ b/pcbnew/dialogs/dialog_SVG_print_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_SVG_print_base.h b/pcbnew/dialogs/dialog_SVG_print_base.h
index 422947d..d084a5e 100644
--- a/pcbnew/dialogs/dialog_SVG_print_base.h
+++ b/pcbnew/dialogs/dialog_SVG_print_base.h
@@ -65,10 +65,10 @@ class DIALOG_SVG_PRINT_base : public DIALOG_SHIM
 		WX_HTML_REPORT_PANEL* m_messagesPanel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseWindow( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonPlot( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonCloseClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseWindow( wxCloseEvent& event ) = 0;
+		virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) = 0;
+		virtual void OnButtonPlot( wxCommandEvent& event ) = 0;
+		virtual void OnButtonCloseClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_block_options_base.fbp b/pcbnew/dialogs/dialog_block_options_base.fbp
index 41c422d..248b86c 100644
--- a/pcbnew/dialogs/dialog_block_options_base.fbp
+++ b/pcbnew/dialogs/dialog_block_options_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_block_options_base.h b/pcbnew/dialogs/dialog_block_options_base.h
index e51c830..d680b37 100644
--- a/pcbnew/dialogs/dialog_block_options_base.h
+++ b/pcbnew/dialogs/dialog_block_options_base.h
@@ -52,9 +52,9 @@ class DIALOG_BLOCK_OPTIONS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void checkBoxClicked( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); }
-		virtual void ExecuteCommand( wxCommandEvent& event ) { event.Skip(); }
+		virtual void checkBoxClicked( wxCommandEvent& event ) = 0;
+		virtual void OnCancel( wxCommandEvent& event ) = 0;
+		virtual void ExecuteCommand( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_cleaning_options_base.fbp b/pcbnew/dialogs/dialog_cleaning_options_base.fbp
index 97ba7da..b35ed66 100644
--- a/pcbnew/dialogs/dialog_cleaning_options_base.fbp
+++ b/pcbnew/dialogs/dialog_cleaning_options_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_copper_zones_base.fbp b/pcbnew/dialogs/dialog_copper_zones_base.fbp
index 78ae83b..3ae1c0a 100644
--- a/pcbnew/dialogs/dialog_copper_zones_base.fbp
+++ b/pcbnew/dialogs/dialog_copper_zones_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_copper_zones_base.h b/pcbnew/dialogs/dialog_copper_zones_base.h
index a41a987..385dd37 100644
--- a/pcbnew/dialogs/dialog_copper_zones_base.h
+++ b/pcbnew/dialogs/dialog_copper_zones_base.h
@@ -115,14 +115,14 @@ class DIALOG_COPPER_ZONE_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnNetSortingOptionSelected( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRunFiltersButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCornerSmoothingModeChoice( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPadsInZoneClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void ExportSetupToOtherCopperZones( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnClose( wxCloseEvent& event ) = 0;
+		virtual void OnNetSortingOptionSelected( wxCommandEvent& event ) = 0;
+		virtual void OnRunFiltersButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnCornerSmoothingModeChoice( wxCommandEvent& event ) = 0;
+		virtual void OnPadsInZoneClick( wxCommandEvent& event ) = 0;
+		virtual void ExportSetupToOtherCopperZones( wxCommandEvent& event ) = 0;
+		virtual void OnButtonCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnButtonOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_create_array_base.fbp b/pcbnew/dialogs/dialog_create_array_base.fbp
index 2430d17..ef984ae 100644
--- a/pcbnew/dialogs/dialog_create_array_base.fbp
+++ b/pcbnew/dialogs/dialog_create_array_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_create_array_base.h b/pcbnew/dialogs/dialog_create_array_base.h
index 0ee0ac5..61eed1d 100644
--- a/pcbnew/dialogs/dialog_create_array_base.h
+++ b/pcbnew/dialogs/dialog_create_array_base.h
@@ -105,8 +105,8 @@ class DIALOG_CREATE_ARRAY_BASE : public DIALOG_SHIM
 		wxButton* m_stdButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnParameterChanged( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnParameterChanged( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_design_rules_base.fbp b/pcbnew/dialogs/dialog_design_rules_base.fbp
index 01c1b27..a9bbc96 100644
--- a/pcbnew/dialogs/dialog_design_rules_base.fbp
+++ b/pcbnew/dialogs/dialog_design_rules_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_design_rules_base.h b/pcbnew/dialogs/dialog_design_rules_base.h
index 320fdf6..d902a5f 100644
--- a/pcbnew/dialogs/dialog_design_rules_base.h
+++ b/pcbnew/dialogs/dialog_design_rules_base.h
@@ -93,18 +93,18 @@ class DIALOG_DESIGN_RULES_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnNotebookPageChanged( wxNotebookEvent& event ) { event.Skip(); }
-		virtual void OnNetClassesNameLeftClick( wxGridEvent& event ) { event.Skip(); }
-		virtual void OnNetClassesNameRightClick( wxGridEvent& event ) { event.Skip(); }
-		virtual void OnAddNetclassClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRemoveNetclassClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnMoveUpSelectedNetClass( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnLeftCBSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRightToLeftCopyButton( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnLeftToRightCopyButton( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnLeftSelectAllButton( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRightSelectAllButton( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRightCBSelection( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnNotebookPageChanged( wxNotebookEvent& event ) = 0;
+		virtual void OnNetClassesNameLeftClick( wxGridEvent& event ) = 0;
+		virtual void OnNetClassesNameRightClick( wxGridEvent& event ) = 0;
+		virtual void OnAddNetclassClick( wxCommandEvent& event ) = 0;
+		virtual void OnRemoveNetclassClick( wxCommandEvent& event ) = 0;
+		virtual void OnMoveUpSelectedNetClass( wxCommandEvent& event ) = 0;
+		virtual void OnLeftCBSelection( wxCommandEvent& event ) = 0;
+		virtual void OnRightToLeftCopyButton( wxCommandEvent& event ) = 0;
+		virtual void OnLeftToRightCopyButton( wxCommandEvent& event ) = 0;
+		virtual void OnLeftSelectAllButton( wxCommandEvent& event ) = 0;
+		virtual void OnRightSelectAllButton( wxCommandEvent& event ) = 0;
+		virtual void OnRightCBSelection( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_dimension_editor_base.fbp b/pcbnew/dialogs/dialog_dimension_editor_base.fbp
index 4324b7d..0e68178 100644
--- a/pcbnew/dialogs/dialog_dimension_editor_base.fbp
+++ b/pcbnew/dialogs/dialog_dimension_editor_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_dimension_editor_base.h b/pcbnew/dialogs/dialog_dimension_editor_base.h
index c5a56dc..f35d59e 100644
--- a/pcbnew/dialogs/dialog_dimension_editor_base.h
+++ b/pcbnew/dialogs/dialog_dimension_editor_base.h
@@ -61,7 +61,7 @@ class DIALOG_DIMENSION_EDITOR_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerBtsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnOKClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_display_options_base.fbp b/pcbnew/dialogs/dialog_display_options_base.fbp
index 89a814b..906b247 100644
--- a/pcbnew/dialogs/dialog_display_options_base.fbp
+++ b/pcbnew/dialogs/dialog_display_options_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_display_options_base.h b/pcbnew/dialogs/dialog_display_options_base.h
index 2b13c88..c246c05 100644
--- a/pcbnew/dialogs/dialog_display_options_base.h
+++ b/pcbnew/dialogs/dialog_display_options_base.h
@@ -61,8 +61,8 @@ class DIALOG_DISPLAY_OPTIONS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_drc_base.fbp b/pcbnew/dialogs/dialog_drc_base.fbp
index a04ae0b..efd5bd4 100644
--- a/pcbnew/dialogs/dialog_drc_base.fbp
+++ b/pcbnew/dialogs/dialog_drc_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_drc_base.h b/pcbnew/dialogs/dialog_drc_base.h
index 8abf658..fafaa12 100644
--- a/pcbnew/dialogs/dialog_drc_base.h
+++ b/pcbnew/dialogs/dialog_drc_base.h
@@ -81,22 +81,22 @@ class DIALOG_DRC_CONTROL_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnActivateDlg( wxActivateEvent& event ) { event.Skip(); }
-		virtual void OnReportCheckBoxClicked( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonBrowseRptFileClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnStartdrcClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnListUnconnectedClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDeleteAllClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDeleteOneClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnChangingMarkerList( wxNotebookEvent& event ) { event.Skip(); }
-		virtual void OnLeftDClickClearance( wxMouseEvent& event ) { event.Skip(); }
-		virtual void OnMarkerSelectionEvent( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRightUpClearance( wxMouseEvent& event ) { event.Skip(); }
-		virtual void OnLeftDClickUnconnected( wxMouseEvent& event ) { event.Skip(); }
-		virtual void OnUnconnectedSelectionEvent( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRightUpUnconnected( wxMouseEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnActivateDlg( wxActivateEvent& event ) = 0;
+		virtual void OnReportCheckBoxClicked( wxCommandEvent& event ) = 0;
+		virtual void OnButtonBrowseRptFileClick( wxCommandEvent& event ) = 0;
+		virtual void OnStartdrcClick( wxCommandEvent& event ) = 0;
+		virtual void OnListUnconnectedClick( wxCommandEvent& event ) = 0;
+		virtual void OnDeleteAllClick( wxCommandEvent& event ) = 0;
+		virtual void OnDeleteOneClick( wxCommandEvent& event ) = 0;
+		virtual void OnChangingMarkerList( wxNotebookEvent& event ) = 0;
+		virtual void OnLeftDClickClearance( wxMouseEvent& event ) = 0;
+		virtual void OnMarkerSelectionEvent( wxCommandEvent& event ) = 0;
+		virtual void OnRightUpClearance( wxMouseEvent& event ) = 0;
+		virtual void OnLeftDClickUnconnected( wxMouseEvent& event ) = 0;
+		virtual void OnUnconnectedSelectionEvent( wxCommandEvent& event ) = 0;
+		virtual void OnRightUpUnconnected( wxMouseEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp
index 40143bf..7b8aba6 100644
--- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp
+++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h
index a2415a5..e3a2d45 100644
--- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h
+++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h
@@ -115,17 +115,17 @@ class DIALOG_MODULE_BOARD_EDITOR_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerStdButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void OnEditReference( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnEditValue( wxCommandEvent& event ) { event.Skip(); }
-		virtual void ModuleOrientEvent( wxCommandEvent& event ) { event.Skip(); }
-		virtual void ExchangeModule( wxCommandEvent& event ) { event.Skip(); }
-		virtual void GotoModuleEditor( wxCommandEvent& event ) { event.Skip(); }
-		virtual void On3DShapeNameSelected( wxCommandEvent& event ) { event.Skip(); }
-		virtual void Edit3DShapeFilename( wxCommandEvent& event ) { event.Skip(); }
-		virtual void Add3DShape( wxCommandEvent& event ) { event.Skip(); }
-		virtual void Remove3DShape( wxCommandEvent& event ) { event.Skip(); }
-		virtual void Cfg3DPath( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnInitDlg( wxInitDialogEvent& event ) = 0;
+		virtual void OnEditReference( wxCommandEvent& event ) = 0;
+		virtual void OnEditValue( wxCommandEvent& event ) = 0;
+		virtual void ModuleOrientEvent( wxCommandEvent& event ) = 0;
+		virtual void ExchangeModule( wxCommandEvent& event ) = 0;
+		virtual void GotoModuleEditor( wxCommandEvent& event ) = 0;
+		virtual void On3DShapeNameSelected( wxCommandEvent& event ) = 0;
+		virtual void Edit3DShapeFilename( wxCommandEvent& event ) = 0;
+		virtual void Add3DShape( wxCommandEvent& event ) = 0;
+		virtual void Remove3DShape( wxCommandEvent& event ) = 0;
+		virtual void Cfg3DPath( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp
index e92f9c4..3e421e0 100644
--- a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp
+++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h
index e5809ae..fb0227c 100644
--- a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h
+++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h
@@ -99,16 +99,16 @@ class DIALOG_MODULE_MODULE_EDITOR_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerStdButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void OnEditReference( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnEditValue( wxCommandEvent& event ) { event.Skip(); }
-		virtual void On3DShapeNameSelected( wxCommandEvent& event ) { event.Skip(); }
-		virtual void Edit3DShapeFilename( wxCommandEvent& event ) { event.Skip(); }
-		virtual void Add3DShape( wxCommandEvent& event ) { event.Skip(); }
-		virtual void Remove3DShape( wxCommandEvent& event ) { event.Skip(); }
-		virtual void Cfg3DPath( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnInitDlg( wxInitDialogEvent& event ) = 0;
+		virtual void OnEditReference( wxCommandEvent& event ) = 0;
+		virtual void OnEditValue( wxCommandEvent& event ) = 0;
+		virtual void On3DShapeNameSelected( wxCommandEvent& event ) = 0;
+		virtual void Edit3DShapeFilename( wxCommandEvent& event ) = 0;
+		virtual void Add3DShape( wxCommandEvent& event ) = 0;
+		virtual void Remove3DShape( wxCommandEvent& event ) = 0;
+		virtual void Cfg3DPath( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_edit_module_text_base.fbp b/pcbnew/dialogs/dialog_edit_module_text_base.fbp
index 3227198..e508419 100644
--- a/pcbnew/dialogs/dialog_edit_module_text_base.fbp
+++ b/pcbnew/dialogs/dialog_edit_module_text_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_edit_module_text_base.h b/pcbnew/dialogs/dialog_edit_module_text_base.h
index 4698971..8ced11b 100644
--- a/pcbnew/dialogs/dialog_edit_module_text_base.h
+++ b/pcbnew/dialogs/dialog_edit_module_text_base.h
@@ -66,8 +66,8 @@ class DialogEditModuleText_base : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void ModuleOrientEvent( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnInitDlg( wxInitDialogEvent& event ) = 0;
+		virtual void ModuleOrientEvent( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_enum_pads_base.fbp b/pcbnew/dialogs/dialog_enum_pads_base.fbp
index 9816e70..76ca2d1 100644
--- a/pcbnew/dialogs/dialog_enum_pads_base.fbp
+++ b/pcbnew/dialogs/dialog_enum_pads_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_exchange_modules_base.fbp b/pcbnew/dialogs/dialog_exchange_modules_base.fbp
index a624bd5..86a63b6 100644
--- a/pcbnew/dialogs/dialog_exchange_modules_base.fbp
+++ b/pcbnew/dialogs/dialog_exchange_modules_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_exchange_modules_base.h b/pcbnew/dialogs/dialog_exchange_modules_base.h
index dbfb7b9..88fa151 100644
--- a/pcbnew/dialogs/dialog_exchange_modules_base.h
+++ b/pcbnew/dialogs/dialog_exchange_modules_base.h
@@ -58,12 +58,12 @@ class DIALOG_EXCHANGE_MODULE_BASE : public DIALOG_SHIM
 		wxButton* m_Quitbutton;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnSelectionClicked( wxCommandEvent& event ) { event.Skip(); }
-		virtual void RebuildCmpList( wxCommandEvent& event ) { event.Skip(); }
-		virtual void BrowseAndSelectFootprint( wxCommandEvent& event ) { event.Skip(); }
-		virtual void ViewAndSelectFootprint( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnQuit( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnSelectionClicked( wxCommandEvent& event ) = 0;
+		virtual void RebuildCmpList( wxCommandEvent& event ) = 0;
+		virtual void BrowseAndSelectFootprint( wxCommandEvent& event ) = 0;
+		virtual void ViewAndSelectFootprint( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
+		virtual void OnQuit( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_export_idf_base.fbp b/pcbnew/dialogs/dialog_export_idf_base.fbp
index 1dee900..575a34f 100644
--- a/pcbnew/dialogs/dialog_export_idf_base.fbp
+++ b/pcbnew/dialogs/dialog_export_idf_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_export_step_base.fbp b/pcbnew/dialogs/dialog_export_step_base.fbp
index d46d219..13047f2 100644
--- a/pcbnew/dialogs/dialog_export_step_base.fbp
+++ b/pcbnew/dialogs/dialog_export_step_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_export_vrml_base.fbp b/pcbnew/dialogs/dialog_export_vrml_base.fbp
index b9a987e..0a0c732 100644
--- a/pcbnew/dialogs/dialog_export_vrml_base.fbp
+++ b/pcbnew/dialogs/dialog_export_vrml_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_export_vrml_base.h b/pcbnew/dialogs/dialog_export_vrml_base.h
index a7dc8c0..1e17ef8 100644
--- a/pcbnew/dialogs/dialog_export_vrml_base.h
+++ b/pcbnew/dialogs/dialog_export_vrml_base.h
@@ -68,7 +68,7 @@ class DIALOG_EXPORT_3DFILE_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnFileChanged( wxFileDirPickerEvent& event ) { event.Skip(); }
+		virtual void OnFileChanged( wxFileDirPickerEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_find_base.fbp b/pcbnew/dialogs/dialog_find_base.fbp
index 24ce2dd..7092ede 100644
--- a/pcbnew/dialogs/dialog_find_base.fbp
+++ b/pcbnew/dialogs/dialog_find_base.fbp
@@ -32,7 +32,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_find_base.h b/pcbnew/dialogs/dialog_find_base.h
index 4604064..c3c7848 100644
--- a/pcbnew/dialogs/dialog_find_base.h
+++ b/pcbnew/dialogs/dialog_find_base.h
@@ -45,10 +45,10 @@ class DIALOG_FIND_BASE : public DIALOG_SHIM
 		wxButton* m_button3;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void onClose( wxCloseEvent& event ) { event.Skip(); }
-		virtual void onButtonFindItemClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onButtonFindMarkerClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onButtonCloseClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void onClose( wxCloseEvent& event ) = 0;
+		virtual void onButtonFindItemClick( wxCommandEvent& event ) = 0;
+		virtual void onButtonFindMarkerClick( wxCommandEvent& event ) = 0;
+		virtual void onButtonCloseClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_footprint_wizard_list_base.fbp b/pcbnew/dialogs/dialog_footprint_wizard_list_base.fbp
index 02901a7..f80d98c 100644
--- a/pcbnew/dialogs/dialog_footprint_wizard_list_base.fbp
+++ b/pcbnew/dialogs/dialog_footprint_wizard_list_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_footprint_wizard_list_base.h b/pcbnew/dialogs/dialog_footprint_wizard_list_base.h
index 1869e8c..57f6c7f 100644
--- a/pcbnew/dialogs/dialog_footprint_wizard_list_base.h
+++ b/pcbnew/dialogs/dialog_footprint_wizard_list_base.h
@@ -43,7 +43,7 @@ class DIALOG_FOOTPRINT_WIZARD_LIST_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCellFpGeneratorClick( wxGridEvent& event ) { event.Skip(); }
+		virtual void OnCellFpGeneratorClick( wxGridEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_freeroute_exchange_base.fbp b/pcbnew/dialogs/dialog_freeroute_exchange_base.fbp
index d1d7913..2e8c2cc 100644
--- a/pcbnew/dialogs/dialog_freeroute_exchange_base.fbp
+++ b/pcbnew/dialogs/dialog_freeroute_exchange_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_freeroute_exchange_base.h b/pcbnew/dialogs/dialog_freeroute_exchange_base.h
index 5fb067d..6bd6046 100644
--- a/pcbnew/dialogs/dialog_freeroute_exchange_base.h
+++ b/pcbnew/dialogs/dialog_freeroute_exchange_base.h
@@ -47,10 +47,10 @@ class DIALOG_FREEROUTE_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerHelp;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnExportButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnLaunchButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnImportButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnHelpButtonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnExportButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnLaunchButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnImportButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnHelpButtonClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_gen_module_position_file_base.fbp b/pcbnew/dialogs/dialog_gen_module_position_file_base.fbp
index efbc343..2dccc5f 100644
--- a/pcbnew/dialogs/dialog_gen_module_position_file_base.fbp
+++ b/pcbnew/dialogs/dialog_gen_module_position_file_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_gen_module_position_file_base.h b/pcbnew/dialogs/dialog_gen_module_position_file_base.h
index 6be668e..f1fc209 100644
--- a/pcbnew/dialogs/dialog_gen_module_position_file_base.h
+++ b/pcbnew/dialogs/dialog_gen_module_position_file_base.h
@@ -52,8 +52,8 @@ class DIALOG_GEN_MODULE_POSITION_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKButton( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) = 0;
+		virtual void OnOKButton( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_gendrill_base.fbp b/pcbnew/dialogs/dialog_gendrill_base.fbp
index 47ae370..db44ad3 100644
--- a/pcbnew/dialogs/dialog_gendrill_base.fbp
+++ b/pcbnew/dialogs/dialog_gendrill_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_gendrill_base.h b/pcbnew/dialogs/dialog_gendrill_base.h
index cfeee28..07aba83 100644
--- a/pcbnew/dialogs/dialog_gendrill_base.h
+++ b/pcbnew/dialogs/dialog_gendrill_base.h
@@ -66,13 +66,13 @@ class DIALOG_GENDRILL_BASE : public DIALOG_SHIM
 		wxTextCtrl* m_messagesBox;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnSelDrillUnitsSelected( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnSelZerosFmtSelected( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnGenDrillFile( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnGenMapFile( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnGenReportFile( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) = 0;
+		virtual void OnSelDrillUnitsSelected( wxCommandEvent& event ) = 0;
+		virtual void OnSelZerosFmtSelected( wxCommandEvent& event ) = 0;
+		virtual void OnGenDrillFile( wxCommandEvent& event ) = 0;
+		virtual void OnGenMapFile( wxCommandEvent& event ) = 0;
+		virtual void OnGenReportFile( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_general_options_BoardEditor_base.fbp b/pcbnew/dialogs/dialog_general_options_BoardEditor_base.fbp
index 30d86e6..61dab8d 100644
--- a/pcbnew/dialogs/dialog_general_options_BoardEditor_base.fbp
+++ b/pcbnew/dialogs/dialog_general_options_BoardEditor_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_general_options_BoardEditor_base.h b/pcbnew/dialogs/dialog_general_options_BoardEditor_base.h
index c63e3c5..5e6e28c 100644
--- a/pcbnew/dialogs/dialog_general_options_BoardEditor_base.h
+++ b/pcbnew/dialogs/dialog_general_options_BoardEditor_base.h
@@ -80,8 +80,8 @@ class DIALOG_GENERALOPTIONS_BOARDEDITOR_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_get_footprint_by_name_base.fbp b/pcbnew/dialogs/dialog_get_footprint_by_name_base.fbp
index c0c7f36..5318a75 100644
--- a/pcbnew/dialogs/dialog_get_footprint_by_name_base.fbp
+++ b/pcbnew/dialogs/dialog_get_footprint_by_name_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_get_footprint_by_name_base.h b/pcbnew/dialogs/dialog_get_footprint_by_name_base.h
index 473d6d2..73e2395 100644
--- a/pcbnew/dialogs/dialog_get_footprint_by_name_base.h
+++ b/pcbnew/dialogs/dialog_get_footprint_by_name_base.h
@@ -48,7 +48,7 @@ class DIALOG_GET_FOOTPRINT_BY_NAME_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnSelectFootprint( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnSelectFootprint( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_global_deletion_base.fbp b/pcbnew/dialogs/dialog_global_deletion_base.fbp
index 98ee3b1..321d790 100644
--- a/pcbnew/dialogs/dialog_global_deletion_base.fbp
+++ b/pcbnew/dialogs/dialog_global_deletion_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_global_deletion_base.h b/pcbnew/dialogs/dialog_global_deletion_base.h
index e4f6818..07ab8a1 100644
--- a/pcbnew/dialogs/dialog_global_deletion_base.h
+++ b/pcbnew/dialogs/dialog_global_deletion_base.h
@@ -64,10 +64,10 @@ class DIALOG_GLOBAL_DELETION_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCheckDeleteModules( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCheckDeleteTracks( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCheckDeleteModules( wxCommandEvent& event ) = 0;
+		virtual void OnCheckDeleteTracks( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_global_edit_tracks_and_vias_base.fbp b/pcbnew/dialogs/dialog_global_edit_tracks_and_vias_base.fbp
index 38b4765..c13844e 100644
--- a/pcbnew/dialogs/dialog_global_edit_tracks_and_vias_base.fbp
+++ b/pcbnew/dialogs/dialog_global_edit_tracks_and_vias_base.fbp
@@ -32,7 +32,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_global_edit_tracks_and_vias_base.h b/pcbnew/dialogs/dialog_global_edit_tracks_and_vias_base.h
index 559628f..1a324ba 100644
--- a/pcbnew/dialogs/dialog_global_edit_tracks_and_vias_base.h
+++ b/pcbnew/dialogs/dialog_global_edit_tracks_and_vias_base.h
@@ -61,9 +61,9 @@ class DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnSelectionClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnSelectionClick( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_global_modules_fields_edition_base.fbp b/pcbnew/dialogs/dialog_global_modules_fields_edition_base.fbp
index ee0727c..6884f50 100644
--- a/pcbnew/dialogs/dialog_global_modules_fields_edition_base.fbp
+++ b/pcbnew/dialogs/dialog_global_modules_fields_edition_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_global_modules_fields_edition_base.h b/pcbnew/dialogs/dialog_global_modules_fields_edition_base.h
index 160764a..2c18a84 100644
--- a/pcbnew/dialogs/dialog_global_modules_fields_edition_base.h
+++ b/pcbnew/dialogs/dialog_global_modules_fields_edition_base.h
@@ -59,8 +59,8 @@ class DIALOG_GLOBAL_MODULES_FIELDS_EDITION_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOKClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_global_pads_edition_base.fbp b/pcbnew/dialogs/dialog_global_pads_edition_base.fbp
index 3e6abef..9178eff 100644
--- a/pcbnew/dialogs/dialog_global_pads_edition_base.fbp
+++ b/pcbnew/dialogs/dialog_global_pads_edition_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_global_pads_edition_base.h b/pcbnew/dialogs/dialog_global_pads_edition_base.h
index e63dc76..0e63cea 100644
--- a/pcbnew/dialogs/dialog_global_pads_edition_base.h
+++ b/pcbnew/dialogs/dialog_global_pads_edition_base.h
@@ -47,9 +47,9 @@ class DIALOG_GLOBAL_PADS_EDITION_BASE : public DIALOG_SHIM
 		wxButton* m_buttonCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void InstallPadEditor( wxCommandEvent& event ) { event.Skip(); }
-		virtual void PadPropertiesAccept( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void InstallPadEditor( wxCommandEvent& event ) = 0;
+		virtual void PadPropertiesAccept( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_graphic_item_properties_base.fbp b/pcbnew/dialogs/dialog_graphic_item_properties_base.fbp
index 00e0f45..e5f13dd 100644
--- a/pcbnew/dialogs/dialog_graphic_item_properties_base.fbp
+++ b/pcbnew/dialogs/dialog_graphic_item_properties_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_graphic_item_properties_base.h b/pcbnew/dialogs/dialog_graphic_item_properties_base.h
index 51705f1..0ef75c0 100644
--- a/pcbnew/dialogs/dialog_graphic_item_properties_base.h
+++ b/pcbnew/dialogs/dialog_graphic_item_properties_base.h
@@ -69,7 +69,7 @@ class DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE : public DIALOG_SHIM
 		wxButton* m_StandardButtonsSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
+		virtual void OnInitDlg( wxInitDialogEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_graphic_items_options_base.fbp b/pcbnew/dialogs/dialog_graphic_items_options_base.fbp
index 2856df1..48ca649 100644
--- a/pcbnew/dialogs/dialog_graphic_items_options_base.fbp
+++ b/pcbnew/dialogs/dialog_graphic_items_options_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_graphic_items_options_base.h b/pcbnew/dialogs/dialog_graphic_items_options_base.h
index 5914d65..04f2cdf 100644
--- a/pcbnew/dialogs/dialog_graphic_items_options_base.h
+++ b/pcbnew/dialogs/dialog_graphic_items_options_base.h
@@ -62,9 +62,9 @@ class DIALOG_GRAPHIC_ITEMS_OPTIONS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnInitDlg( wxInitDialogEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_keepout_area_properties_base.fbp b/pcbnew/dialogs/dialog_keepout_area_properties_base.fbp
index e6a1a2f..c8f61c8 100644
--- a/pcbnew/dialogs/dialog_keepout_area_properties_base.fbp
+++ b/pcbnew/dialogs/dialog_keepout_area_properties_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_keepout_area_properties_base.h b/pcbnew/dialogs/dialog_keepout_area_properties_base.h
index c318c15..03b0657 100644
--- a/pcbnew/dialogs/dialog_keepout_area_properties_base.h
+++ b/pcbnew/dialogs/dialog_keepout_area_properties_base.h
@@ -60,7 +60,7 @@ class DIALOG_KEEPOUT_AREA_PROPERTIES_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_layer_selection_base.fbp b/pcbnew/dialogs/dialog_layer_selection_base.fbp
index b4821b6..4c9701e 100644
--- a/pcbnew/dialogs/dialog_layer_selection_base.fbp
+++ b/pcbnew/dialogs/dialog_layer_selection_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
@@ -400,7 +400,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_layer_selection_base.h b/pcbnew/dialogs/dialog_layer_selection_base.h
index deb8752..4db4a65 100644
--- a/pcbnew/dialogs/dialog_layer_selection_base.h
+++ b/pcbnew/dialogs/dialog_layer_selection_base.h
@@ -40,9 +40,9 @@ class DIALOG_LAYER_SELECTION_BASE : public wxDialog
 		wxGrid* m_rightGridLayers;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnLeftGridCellClick( wxGridEvent& event ) { event.Skip(); }
-		virtual void OnLeftButtonReleased( wxMouseEvent& event ) { event.Skip(); }
-		virtual void OnRightGridCellClick( wxGridEvent& event ) { event.Skip(); }
+		virtual void OnLeftGridCellClick( wxGridEvent& event ) = 0;
+		virtual void OnLeftButtonReleased( wxMouseEvent& event ) = 0;
+		virtual void OnRightGridCellClick( wxGridEvent& event ) = 0;
 		
 	
 	public:
@@ -70,10 +70,10 @@ class DIALOG_COPPER_LAYER_PAIR_SELECTION_BASE : public wxDialog
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnLeftGridCellClick( wxGridEvent& event ) { event.Skip(); }
-		virtual void OnRightGridCellClick( wxGridEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnLeftGridCellClick( wxGridEvent& event ) = 0;
+		virtual void OnRightGridCellClick( wxGridEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOKClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_layers_setup_base.fbp b/pcbnew/dialogs/dialog_layers_setup_base.fbp
index 3be3422..bf6fc37 100644
--- a/pcbnew/dialogs/dialog_layers_setup_base.fbp
+++ b/pcbnew/dialogs/dialog_layers_setup_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_layers_setup_base.h b/pcbnew/dialogs/dialog_layers_setup_base.h
index b4715f7..83a9a02 100644
--- a/pcbnew/dialogs/dialog_layers_setup_base.h
+++ b/pcbnew/dialogs/dialog_layers_setup_base.h
@@ -404,13 +404,13 @@ class DIALOG_LAYERS_SETUP_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnSize( wxSizeEvent& event ) { event.Skip(); }
-		virtual void OnPresetsChoice( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCopperLayersChoice( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCheckBox( wxCommandEvent& event ) { event.Skip(); }
-		virtual void DenyChangeCheckBox( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkButtonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnSize( wxSizeEvent& event ) = 0;
+		virtual void OnPresetsChoice( wxCommandEvent& event ) = 0;
+		virtual void OnCopperLayersChoice( wxCommandEvent& event ) = 0;
+		virtual void OnCheckBox( wxCommandEvent& event ) = 0;
+		virtual void DenyChangeCheckBox( wxCommandEvent& event ) = 0;
+		virtual void OnCancelButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkButtonClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_mask_clearance_base.fbp b/pcbnew/dialogs/dialog_mask_clearance_base.fbp
index bb99b7d..7d51f59 100644
--- a/pcbnew/dialogs/dialog_mask_clearance_base.fbp
+++ b/pcbnew/dialogs/dialog_mask_clearance_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_mask_clearance_base.h b/pcbnew/dialogs/dialog_mask_clearance_base.h
index 89588fd..4f6e2a5 100644
--- a/pcbnew/dialogs/dialog_mask_clearance_base.h
+++ b/pcbnew/dialogs/dialog_mask_clearance_base.h
@@ -65,8 +65,8 @@ class DIALOG_PADS_MASK_CLEARANCE_BASE : public DIALOG_SHIM
 		wxButton* m_sdbButtonsSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnButtonCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnButtonCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnButtonOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_modedit_options_base.fbp b/pcbnew/dialogs/dialog_modedit_options_base.fbp
index 4705342..daf5878 100644
--- a/pcbnew/dialogs/dialog_modedit_options_base.fbp
+++ b/pcbnew/dialogs/dialog_modedit_options_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_modedit_options_base.h b/pcbnew/dialogs/dialog_modedit_options_base.h
index eaefbdf..e17d61e 100644
--- a/pcbnew/dialogs/dialog_modedit_options_base.h
+++ b/pcbnew/dialogs/dialog_modedit_options_base.h
@@ -71,8 +71,8 @@ class DIALOG_MODEDIT_OPTIONS_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_move_exact.fbp b/pcbnew/dialogs/dialog_move_exact.fbp
index cb9c965..958d36b 100644
--- a/pcbnew/dialogs/dialog_move_exact.fbp
+++ b/pcbnew/dialogs/dialog_move_exact.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_move_exact_base.h b/pcbnew/dialogs/dialog_move_exact_base.h
index b60dcb1..7f89a60 100644
--- a/pcbnew/dialogs/dialog_move_exact_base.h
+++ b/pcbnew/dialogs/dialog_move_exact_base.h
@@ -57,10 +57,10 @@ class DIALOG_MOVE_EXACT_BASE : public DIALOG_SHIM
 		wxButton* m_stdButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnPolarChanged( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTextFocusLost( wxFocusEvent& event ) { event.Skip(); }
-		virtual void OnClear( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnPolarChanged( wxCommandEvent& event ) = 0;
+		virtual void OnTextFocusLost( wxFocusEvent& event ) = 0;
+		virtual void OnClear( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_netlist_fbp.fbp b/pcbnew/dialogs/dialog_netlist_fbp.fbp
index deb2c43..76ecc0c 100644
--- a/pcbnew/dialogs/dialog_netlist_fbp.fbp
+++ b/pcbnew/dialogs/dialog_netlist_fbp.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_netlist_fbp.h b/pcbnew/dialogs/dialog_netlist_fbp.h
index d2a91c1..e28a14d 100644
--- a/pcbnew/dialogs/dialog_netlist_fbp.h
+++ b/pcbnew/dialogs/dialog_netlist_fbp.h
@@ -68,15 +68,15 @@ class DIALOG_NETLIST_FBP : public DIALOG_SHIM
 		WX_HTML_REPORT_PANEL* m_MessageWindow;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnReadNetlistFileClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnUpdateUIValidNetlistFile( wxUpdateUIEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnTestFootprintsClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCompileRatsnestClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnSaveMessagesToFile( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnUpdateUISaveMessagesToFile( wxUpdateUIEvent& event ) { event.Skip(); }
-		virtual void OnClickSilentMode( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOpenNetlistClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnReadNetlistFileClick( wxCommandEvent& event ) = 0;
+		virtual void OnUpdateUIValidNetlistFile( wxUpdateUIEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnTestFootprintsClick( wxCommandEvent& event ) = 0;
+		virtual void OnCompileRatsnestClick( wxCommandEvent& event ) = 0;
+		virtual void OnSaveMessagesToFile( wxCommandEvent& event ) = 0;
+		virtual void OnUpdateUISaveMessagesToFile( wxUpdateUIEvent& event ) = 0;
+		virtual void OnClickSilentMode( wxCommandEvent& event ) = 0;
+		virtual void OnOpenNetlistClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_non_copper_zones_properties_base.fbp b/pcbnew/dialogs/dialog_non_copper_zones_properties_base.fbp
index 20f6296..0d14258 100644
--- a/pcbnew/dialogs/dialog_non_copper_zones_properties_base.fbp
+++ b/pcbnew/dialogs/dialog_non_copper_zones_properties_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_non_copper_zones_properties_base.h b/pcbnew/dialogs/dialog_non_copper_zones_properties_base.h
index b53fa80..4c2843a 100644
--- a/pcbnew/dialogs/dialog_non_copper_zones_properties_base.h
+++ b/pcbnew/dialogs/dialog_non_copper_zones_properties_base.h
@@ -58,8 +58,8 @@ class DIALOG_NONCOPPER_ZONES_PROPERTIES_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_pad_properties_base.fbp b/pcbnew/dialogs/dialog_pad_properties_base.fbp
index 71a6999..f860d85 100644
--- a/pcbnew/dialogs/dialog_pad_properties_base.fbp
+++ b/pcbnew/dialogs/dialog_pad_properties_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_pad_properties_base.h b/pcbnew/dialogs/dialog_pad_properties_base.h
index a0f71b4..f1a5f1e 100644
--- a/pcbnew/dialogs/dialog_pad_properties_base.h
+++ b/pcbnew/dialogs/dialog_pad_properties_base.h
@@ -162,14 +162,14 @@ class DIALOG_PAD_PROPERTIES_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnValuesChanged( wxCommandEvent& event ) { event.Skip(); }
-		virtual void PadTypeSelected( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPadShapeSelection( wxCommandEvent& event ) { event.Skip(); }
-		virtual void PadOrientEvent( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnSetLayers( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onCornerSizePercentChange( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDrillShapeSelected( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPaintShowPanel( wxPaintEvent& event ) { event.Skip(); }
+		virtual void OnValuesChanged( wxCommandEvent& event ) = 0;
+		virtual void PadTypeSelected( wxCommandEvent& event ) = 0;
+		virtual void OnPadShapeSelection( wxCommandEvent& event ) = 0;
+		virtual void PadOrientEvent( wxCommandEvent& event ) = 0;
+		virtual void OnSetLayers( wxCommandEvent& event ) = 0;
+		virtual void onCornerSizePercentChange( wxCommandEvent& event ) = 0;
+		virtual void OnDrillShapeSelected( wxCommandEvent& event ) = 0;
+		virtual void OnPaintShowPanel( wxPaintEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_pcb_text_properties_base.fbp b/pcbnew/dialogs/dialog_pcb_text_properties_base.fbp
index 40e9be1..f5a40eb 100644
--- a/pcbnew/dialogs/dialog_pcb_text_properties_base.fbp
+++ b/pcbnew/dialogs/dialog_pcb_text_properties_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_pcb_text_properties_base.h b/pcbnew/dialogs/dialog_pcb_text_properties_base.h
index 0630e6f..5bf8632 100644
--- a/pcbnew/dialogs/dialog_pcb_text_properties_base.h
+++ b/pcbnew/dialogs/dialog_pcb_text_properties_base.h
@@ -68,7 +68,7 @@ class DIALOG_PCB_TEXT_PROPERTIES_BASE : public DIALOG_SHIM
 		wxButton* m_StandardSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
+		virtual void OnInitDlg( wxInitDialogEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_plot_base.fbp b/pcbnew/dialogs/dialog_plot_base.fbp
index 6b392ee..750cbbe 100644
--- a/pcbnew/dialogs/dialog_plot_base.fbp
+++ b/pcbnew/dialogs/dialog_plot_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_plot_base.h b/pcbnew/dialogs/dialog_plot_base.h
index 58033d2..cb7c5c6 100644
--- a/pcbnew/dialogs/dialog_plot_base.h
+++ b/pcbnew/dialogs/dialog_plot_base.h
@@ -115,16 +115,16 @@ class DIALOG_PLOT_BASE : public DIALOG_SHIM
 		wxMenu* m_popMenu;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnRightClick( wxMouseEvent& event ) { event.Skip(); }
-		virtual void SetPlotFormat( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnSetScaleOpt( wxCommandEvent& event ) { event.Skip(); }
-		virtual void Plot( wxCommandEvent& event ) { event.Skip(); }
-		virtual void CreateDrillFile( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onRunDRC( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnQuit( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPopUpLayers( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnClose( wxCloseEvent& event ) = 0;
+		virtual void OnRightClick( wxMouseEvent& event ) = 0;
+		virtual void SetPlotFormat( wxCommandEvent& event ) = 0;
+		virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) = 0;
+		virtual void OnSetScaleOpt( wxCommandEvent& event ) = 0;
+		virtual void Plot( wxCommandEvent& event ) = 0;
+		virtual void CreateDrillFile( wxCommandEvent& event ) = 0;
+		virtual void onRunDRC( wxCommandEvent& event ) = 0;
+		virtual void OnQuit( wxCommandEvent& event ) = 0;
+		virtual void OnPopUpLayers( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_pns_diff_pair_dimensions_base.fbp b/pcbnew/dialogs/dialog_pns_diff_pair_dimensions_base.fbp
index d93cbc3..90986b1 100644
--- a/pcbnew/dialogs/dialog_pns_diff_pair_dimensions_base.fbp
+++ b/pcbnew/dialogs/dialog_pns_diff_pair_dimensions_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_pns_diff_pair_dimensions_base.h b/pcbnew/dialogs/dialog_pns_diff_pair_dimensions_base.h
index da2862d..5b8d3fe 100644
--- a/pcbnew/dialogs/dialog_pns_diff_pair_dimensions_base.h
+++ b/pcbnew/dialogs/dialog_pns_diff_pair_dimensions_base.h
@@ -54,8 +54,8 @@ class DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE : public DIALOG_SHIM
 		wxButton* m_stdButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnViaTraceGapEqualCheck( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnViaTraceGapEqualCheck( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_pns_length_tuning_settings_base.fbp b/pcbnew/dialogs/dialog_pns_length_tuning_settings_base.fbp
index 367f0ed..2f6f31f 100644
--- a/pcbnew/dialogs/dialog_pns_length_tuning_settings_base.fbp
+++ b/pcbnew/dialogs/dialog_pns_length_tuning_settings_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_pns_length_tuning_settings_base.h b/pcbnew/dialogs/dialog_pns_length_tuning_settings_base.h
index aad4697..f1ca08c 100644
--- a/pcbnew/dialogs/dialog_pns_length_tuning_settings_base.h
+++ b/pcbnew/dialogs/dialog_pns_length_tuning_settings_base.h
@@ -71,7 +71,7 @@ class DIALOG_PNS_LENGTH_TUNING_SETTINGS_BASE : public DIALOG_SHIM
 		wxButton* m_stdButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_pns_settings_base.fbp b/pcbnew/dialogs/dialog_pns_settings_base.fbp
index 1fb94c0..3b46909 100644
--- a/pcbnew/dialogs/dialog_pns_settings_base.fbp
+++ b/pcbnew/dialogs/dialog_pns_settings_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_pns_settings_base.h b/pcbnew/dialogs/dialog_pns_settings_base.h
index 2871c30..8cb7328 100644
--- a/pcbnew/dialogs/dialog_pns_settings_base.h
+++ b/pcbnew/dialogs/dialog_pns_settings_base.h
@@ -62,7 +62,7 @@ class DIALOG_PNS_SETTINGS_BASE : public DIALOG_SHIM
 		wxButton* m_stdButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_print_for_modedit_base.fbp b/pcbnew/dialogs/dialog_print_for_modedit_base.fbp
index c0a65be..64d0287 100644
--- a/pcbnew/dialogs/dialog_print_for_modedit_base.fbp
+++ b/pcbnew/dialogs/dialog_print_for_modedit_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_print_for_modedit_base.h b/pcbnew/dialogs/dialog_print_for_modedit_base.h
index da9b5d9..aa360af 100644
--- a/pcbnew/dialogs/dialog_print_for_modedit_base.h
+++ b/pcbnew/dialogs/dialog_print_for_modedit_base.h
@@ -49,11 +49,11 @@ class DIALOG_PRINT_FOR_MODEDIT_BASE : public DIALOG_SHIM
 		wxButton* m_buttonQuit;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseWindow( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnPageSetup( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPrintPreview( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPrintButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonCancelClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseWindow( wxCloseEvent& event ) = 0;
+		virtual void OnPageSetup( wxCommandEvent& event ) = 0;
+		virtual void OnPrintPreview( wxCommandEvent& event ) = 0;
+		virtual void OnPrintButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnButtonCancelClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_print_using_printer_base.fbp b/pcbnew/dialogs/dialog_print_using_printer_base.fbp
index 7aab94e..8917b5b 100644
--- a/pcbnew/dialogs/dialog_print_using_printer_base.fbp
+++ b/pcbnew/dialogs/dialog_print_using_printer_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_print_using_printer_base.h b/pcbnew/dialogs/dialog_print_using_printer_base.h
index 7b473fc..eeeae4a 100644
--- a/pcbnew/dialogs/dialog_print_using_printer_base.h
+++ b/pcbnew/dialogs/dialog_print_using_printer_base.h
@@ -71,13 +71,13 @@ class DIALOG_PRINT_USING_PRINTER_BASE : public DIALOG_SHIM
 		wxButton* m_buttonQuit;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCloseWindow( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void OnScaleSelectionClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPageSetup( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPrintPreview( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnPrintButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnButtonCancelClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCloseWindow( wxCloseEvent& event ) = 0;
+		virtual void OnInitDlg( wxInitDialogEvent& event ) = 0;
+		virtual void OnScaleSelectionClick( wxCommandEvent& event ) = 0;
+		virtual void OnPageSetup( wxCommandEvent& event ) = 0;
+		virtual void OnPrintPreview( wxCommandEvent& event ) = 0;
+		virtual void OnPrintButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnButtonCancelClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_scripting_base.fbp b/pcbnew/dialogs/dialog_scripting_base.fbp
index d9b5e98..21d7858 100644
--- a/pcbnew/dialogs/dialog_scripting_base.fbp
+++ b/pcbnew/dialogs/dialog_scripting_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_scripting_base.h b/pcbnew/dialogs/dialog_scripting_base.h
index 74c78e4..3938098 100644
--- a/pcbnew/dialogs/dialog_scripting_base.h
+++ b/pcbnew/dialogs/dialog_scripting_base.h
@@ -35,7 +35,7 @@ class DIALOG_SCRIPTING_BASE : public wxFrame
 		wxButton* m_btRun;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnRunButtonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnRunButtonClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_select_net_from_list_base.fbp b/pcbnew/dialogs/dialog_select_net_from_list_base.fbp
index d3784f8..d64cab6 100644
--- a/pcbnew/dialogs/dialog_select_net_from_list_base.fbp
+++ b/pcbnew/dialogs/dialog_select_net_from_list_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_select_net_from_list_base.h b/pcbnew/dialogs/dialog_select_net_from_list_base.h
index c338fd5..f8ec2db 100644
--- a/pcbnew/dialogs/dialog_select_net_from_list_base.h
+++ b/pcbnew/dialogs/dialog_select_net_from_list_base.h
@@ -49,8 +49,8 @@ class DIALOG_SELECT_NET_FROM_LIST_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void onFilterChange( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onCellClick( wxGridEvent& event ) { event.Skip(); }
+		virtual void onFilterChange( wxCommandEvent& event ) = 0;
+		virtual void onCellClick( wxGridEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_select_pretty_lib_base.fbp b/pcbnew/dialogs/dialog_select_pretty_lib_base.fbp
index 3cc9bb4..41d51e5 100644
--- a/pcbnew/dialogs/dialog_select_pretty_lib_base.fbp
+++ b/pcbnew/dialogs/dialog_select_pretty_lib_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_select_pretty_lib_base.h b/pcbnew/dialogs/dialog_select_pretty_lib_base.h
index 2848b50..42e8cb8 100644
--- a/pcbnew/dialogs/dialog_select_pretty_lib_base.h
+++ b/pcbnew/dialogs/dialog_select_pretty_lib_base.h
@@ -50,8 +50,8 @@ class DIALOG_SELECT_PRETTY_LIB_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnSelectFolder( wxFileDirPickerEvent& event ) { event.Skip(); }
-		virtual void OnOKButton( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnSelectFolder( wxFileDirPickerEvent& event ) = 0;
+		virtual void OnOKButton( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_set_grid_base.fbp b/pcbnew/dialogs/dialog_set_grid_base.fbp
index 9a9a982..155961b 100644
--- a/pcbnew/dialogs/dialog_set_grid_base.fbp
+++ b/pcbnew/dialogs/dialog_set_grid_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_set_grid_base.h b/pcbnew/dialogs/dialog_set_grid_base.h
index 25542ed..f97fe8e 100644
--- a/pcbnew/dialogs/dialog_set_grid_base.h
+++ b/pcbnew/dialogs/dialog_set_grid_base.h
@@ -61,8 +61,8 @@ class DIALOG_SET_GRID_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void OnResetGridOrgClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnInitDlg( wxInitDialogEvent& event ) = 0;
+		virtual void OnResetGridOrgClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_target_properties_base.fbp b/pcbnew/dialogs/dialog_target_properties_base.fbp
index ec4795c..b6fc334 100644
--- a/pcbnew/dialogs/dialog_target_properties_base.fbp
+++ b/pcbnew/dialogs/dialog_target_properties_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_target_properties_base.h b/pcbnew/dialogs/dialog_target_properties_base.h
index 546301f..33a8a43 100644
--- a/pcbnew/dialogs/dialog_target_properties_base.h
+++ b/pcbnew/dialogs/dialog_target_properties_base.h
@@ -52,8 +52,8 @@ class TARGET_PROPERTIES_DIALOG_EDITOR_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizerButtsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_track_via_properties_base.fbp b/pcbnew/dialogs/dialog_track_via_properties_base.fbp
index 4b16658..e8bc81a 100644
--- a/pcbnew/dialogs/dialog_track_via_properties_base.fbp
+++ b/pcbnew/dialogs/dialog_track_via_properties_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_track_via_properties_base.h b/pcbnew/dialogs/dialog_track_via_properties_base.h
index 6373950..2f7f021 100644
--- a/pcbnew/dialogs/dialog_track_via_properties_base.h
+++ b/pcbnew/dialogs/dialog_track_via_properties_base.h
@@ -84,12 +84,12 @@ class DIALOG_TRACK_VIA_PROPERTIES_BASE : public DIALOG_SHIM
 		wxButton* m_StdButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void onClose( wxCloseEvent& event ) { event.Skip(); }
-		virtual void OnInitDlg( wxInitDialogEvent& event ) { event.Skip(); }
-		virtual void onTrackNetclassCheck( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onViaNetclassCheck( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void onClose( wxCloseEvent& event ) = 0;
+		virtual void OnInitDlg( wxInitDialogEvent& event ) = 0;
+		virtual void onTrackNetclassCheck( wxCommandEvent& event ) = 0;
+		virtual void onViaNetclassCheck( wxCommandEvent& event ) = 0;
+		virtual void onCancelClick( wxCommandEvent& event ) = 0;
+		virtual void onOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_track_via_size_base.fbp b/pcbnew/dialogs/dialog_track_via_size_base.fbp
index 5bb2927..3a4bccb 100644
--- a/pcbnew/dialogs/dialog_track_via_size_base.fbp
+++ b/pcbnew/dialogs/dialog_track_via_size_base.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_track_via_size_base.h b/pcbnew/dialogs/dialog_track_via_size_base.h
index bb26736..d1d092e 100644
--- a/pcbnew/dialogs/dialog_track_via_size_base.h
+++ b/pcbnew/dialogs/dialog_track_via_size_base.h
@@ -52,9 +52,9 @@ class DIALOG_TRACK_VIA_SIZE_BASE : public DIALOG_SHIM
 		wxButton* m_stdButtonsCancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void onClose( wxCloseEvent& event ) { event.Skip(); }
-		virtual void onCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onOkClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void onClose( wxCloseEvent& event ) = 0;
+		virtual void onCancelClick( wxCommandEvent& event ) = 0;
+		virtual void onOkClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/dialog_update_pcb.fbp b/pcbnew/dialogs/dialog_update_pcb.fbp
index 69b6cbc..1f961ca 100644
--- a/pcbnew/dialogs/dialog_update_pcb.fbp
+++ b/pcbnew/dialogs/dialog_update_pcb.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/dialog_update_pcb_base.h b/pcbnew/dialogs/dialog_update_pcb_base.h
index 75d63fc..7dfdae3 100644
--- a/pcbnew/dialogs/dialog_update_pcb_base.h
+++ b/pcbnew/dialogs/dialog_update_pcb_base.h
@@ -45,9 +45,9 @@ class DIALOG_UPDATE_PCB_BASE : public DIALOG_SHIM
 		wxButton* m_btnPerformUpdate;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnMatchChange( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnUpdateClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnMatchChange( wxCommandEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnUpdateClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.fbp b/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.fbp
index 95bc55a..d11f027 100644
--- a/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.fbp
+++ b/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.fbp
@@ -33,7 +33,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.h b/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.h
index 50c1a88..5cd68f9 100644
--- a/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.h
+++ b/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.h
@@ -65,15 +65,15 @@ class WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE : public wxWizard
 		wxGrid* m_gridLibReview;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnWizardFinished( wxWizardEvent& event ) { event.Skip(); }
-		virtual void OnPageChanged( wxWizardEvent& event ) { event.Skip(); }
-		virtual void OnLocalFolderChange( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnBrowseButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDefault3DPathButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnSelectAll3Dlibs( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnUnselectAll3Dlibs( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnChangeSearch( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnGridLibReviewSize( wxSizeEvent& event ) { event.Skip(); }
+		virtual void OnWizardFinished( wxWizardEvent& event ) = 0;
+		virtual void OnPageChanged( wxWizardEvent& event ) = 0;
+		virtual void OnLocalFolderChange( wxCommandEvent& event ) = 0;
+		virtual void OnBrowseButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnDefault3DPathButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnSelectAll3Dlibs( wxCommandEvent& event ) = 0;
+		virtual void OnUnselectAll3Dlibs( wxCommandEvent& event ) = 0;
+		virtual void OnChangeSearch( wxCommandEvent& event ) = 0;
+		virtual void OnGridLibReviewSize( wxSizeEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/dialogs/wizard_add_fplib_base.fbp b/pcbnew/dialogs/wizard_add_fplib_base.fbp
index b97b53e..c3e077d 100644
--- a/pcbnew/dialogs/wizard_add_fplib_base.fbp
+++ b/pcbnew/dialogs/wizard_add_fplib_base.fbp
@@ -33,7 +33,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/dialogs/wizard_add_fplib_base.h b/pcbnew/dialogs/wizard_add_fplib_base.h
index 8fcc788..e4acfe7 100644
--- a/pcbnew/dialogs/wizard_add_fplib_base.h
+++ b/pcbnew/dialogs/wizard_add_fplib_base.h
@@ -73,13 +73,13 @@ class WIZARD_FPLIB_TABLE_BASE : public wxWizard
 		wxRadioButton* m_radioProject;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnWizardFinished( wxWizardEvent& event ) { event.Skip(); }
-		virtual void OnPageChanged( wxWizardEvent& event ) { event.Skip(); }
-		virtual void OnCheckSaveCopy( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnBrowseButtonClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnSelectAllGH( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnUnselectAllGH( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnChangeSearch( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnWizardFinished( wxWizardEvent& event ) = 0;
+		virtual void OnPageChanged( wxWizardEvent& event ) = 0;
+		virtual void OnCheckSaveCopy( wxCommandEvent& event ) = 0;
+		virtual void OnBrowseButtonClick( wxCommandEvent& event ) = 0;
+		virtual void OnSelectAllGH( wxCommandEvent& event ) = 0;
+		virtual void OnUnselectAllGH( wxCommandEvent& event ) = 0;
+		virtual void OnChangeSearch( wxCommandEvent& event ) = 0;
 		
 	
 	public:
diff --git a/pcbnew/import_dxf/dialog_dxf_import.fbp b/pcbnew/import_dxf/dialog_dxf_import.fbp
index f2f699d..76aed73 100644
--- a/pcbnew/import_dxf/dialog_dxf_import.fbp
+++ b/pcbnew/import_dxf/dialog_dxf_import.fbp
@@ -34,7 +34,7 @@
             <property name="context_help"></property>
             <property name="context_menu">1</property>
             <property name="enabled">1</property>
-            <property name="event_handler">impl_virtual</property>
+            <property name="event_handler">decl_pure_virtual</property>
             <property name="extra_style"></property>
             <property name="fg"></property>
             <property name="font"></property>
diff --git a/pcbnew/import_dxf/dialog_dxf_import_base.h b/pcbnew/import_dxf/dialog_dxf_import_base.h
index 075664f..f677652 100644
--- a/pcbnew/import_dxf/dialog_dxf_import_base.h
+++ b/pcbnew/import_dxf/dialog_dxf_import_base.h
@@ -61,10 +61,10 @@ class DIALOG_DXF_IMPORT_BASE : public DIALOG_SHIM
 		wxButton* m_sdbSizer1Cancel;
 		
 		// Virtual event handlers, overide them in your derived class
-		virtual void OnBrowseDxfFiles( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OriginOptionOnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); }
-		virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnBrowseDxfFiles( wxCommandEvent& event ) = 0;
+		virtual void OriginOptionOnUpdateUI( wxUpdateUIEvent& event ) = 0;
+		virtual void OnCancelClick( wxCommandEvent& event ) = 0;
+		virtual void OnOKClick( wxCommandEvent& event ) = 0;
 		
 	
 	public:

References