diff --git a/bitmaps_png/CMakeLists.txt b/bitmaps_png/CMakeLists.txt index 56c260662c..9ff06927c5 100644 --- a/bitmaps_png/CMakeLists.txt +++ b/bitmaps_png/CMakeLists.txt @@ -126,7 +126,7 @@ set( BMAPS_MID add_line2bus add_line_label add_line - add_mires + add_pcb_target add_polygon add_power add_rectangle @@ -326,7 +326,7 @@ set( BMAPS_MID locked measurement minus - mirepcb + pcb_target mirror_h mirror_v mode_module diff --git a/bitmaps_png/cpp_26/add_mires.cpp b/bitmaps_png/cpp_26/add_pcb_target.cpp similarity index 97% rename from bitmaps_png/cpp_26/add_mires.cpp rename to bitmaps_png/cpp_26/add_pcb_target.cpp index 9ab857e86b..833a4f0cb3 100644 --- a/bitmaps_png/cpp_26/add_mires.cpp +++ b/bitmaps_png/cpp_26/add_pcb_target.cpp @@ -47,6 +47,6 @@ static const unsigned char png[] = { 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, }; -const BITMAP_OPAQUE add_mires_xpm[1] = {{ png, sizeof( png ), "add_mires_xpm" }}; +const BITMAP_OPAQUE add_pcb_target_xpm[1] = {{ png, sizeof( png ), "add_pcb_target_xpm" }}; //EOF diff --git a/bitmaps_png/cpp_26/mirepcb.cpp b/bitmaps_png/cpp_26/pcb_target.cpp similarity index 97% rename from bitmaps_png/cpp_26/mirepcb.cpp rename to bitmaps_png/cpp_26/pcb_target.cpp index 5cf2ef9bb9..9012e527eb 100644 --- a/bitmaps_png/cpp_26/mirepcb.cpp +++ b/bitmaps_png/cpp_26/pcb_target.cpp @@ -40,6 +40,6 @@ static const unsigned char png[] = { 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, }; -const BITMAP_OPAQUE mirepcb_xpm[1] = {{ png, sizeof( png ), "mirepcb_xpm" }}; +const BITMAP_OPAQUE pcb_target_xpm[1] = {{ png, sizeof( png ), "pcb_target_xpm" }}; //EOF diff --git a/bitmaps_png/sources/add_mires.svg b/bitmaps_png/sources/add_pcb_target.svg similarity index 100% rename from bitmaps_png/sources/add_mires.svg rename to bitmaps_png/sources/add_pcb_target.svg diff --git a/bitmaps_png/sources/mirepcb.svg b/bitmaps_png/sources/pcb_target.svg similarity index 100% rename from bitmaps_png/sources/mirepcb.svg rename to bitmaps_png/sources/pcb_target.svg diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 11229a1045..90cadc6058 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -379,7 +379,7 @@ set( PCB_COMMON_SRCS ../pcbnew/class_netinfo_item.cpp ../pcbnew/class_netinfolist.cpp ../pcbnew/class_marker_pcb.cpp - ../pcbnew/class_mire.cpp + ../pcbnew/class_pcb_target.cpp ../pcbnew/class_module.cpp ../pcbnew/class_pad.cpp ../pcbnew/class_pad_custom_shape_functions.cpp diff --git a/eeschema/sim/sim_plot_frame.cpp b/eeschema/sim/sim_plot_frame.cpp index 5dec678973..a2ab19d0e1 100644 --- a/eeschema/sim/sim_plot_frame.cpp +++ b/eeschema/sim/sim_plot_frame.cpp @@ -1221,10 +1221,10 @@ SIM_PLOT_FRAME::SIGNAL_CONTEXT_MENU::SIGNAL_CONTEXT_MENU( const wxString& aSigna if( trace->HasCursor() ) AddMenuItem( this, HIDE_CURSOR, _( "Hide cursor" ), - wxEmptyString, KiBitmap( mirepcb_xpm ) ); + wxEmptyString, KiBitmap( pcb_target_xpm ) ); else AddMenuItem( this, SHOW_CURSOR, _( "Show cursor" ), - wxEmptyString, KiBitmap( mirepcb_xpm ) ); + wxEmptyString, KiBitmap( pcb_target_xpm ) ); Connect( wxEVT_COMMAND_MENU_SELECTED, wxMenuEventHandler( SIGNAL_CONTEXT_MENU::onMenuEvent ), NULL, this ); } diff --git a/include/bitmaps.h b/include/bitmaps.h index f5f2870f54..848dc5c596 100644 --- a/include/bitmaps.h +++ b/include/bitmaps.h @@ -51,7 +51,7 @@ EXTERN_BITMAP( add_keepout_area_xpm ) EXTERN_BITMAP( add_line2bus_xpm ) EXTERN_BITMAP( add_line_label_xpm ) EXTERN_BITMAP( add_line_xpm ) -EXTERN_BITMAP( add_mires_xpm ) +EXTERN_BITMAP( add_pcb_target_xpm ) EXTERN_BITMAP( add_polygon_xpm ) EXTERN_BITMAP( add_power_xpm ) EXTERN_BITMAP( add_rectangle_xpm ) @@ -268,7 +268,6 @@ EXTERN_BITMAP( local_ratsnest_xpm ) EXTERN_BITMAP( locked_xpm ) EXTERN_BITMAP( measurement_xpm ) EXTERN_BITMAP( minus_xpm ) -EXTERN_BITMAP( mirepcb_xpm ) EXTERN_BITMAP( mirror_h_xpm ) EXTERN_BITMAP( mirror_v_xpm ) EXTERN_BITMAP( mode_module_xpm ) @@ -353,6 +352,7 @@ EXTERN_BITMAP( palette_xpm ) EXTERN_BITMAP( part_properties_xpm ) EXTERN_BITMAP( paste_xpm ) EXTERN_BITMAP( path_xpm ) +EXTERN_BITMAP( pcb_target_xpm ) EXTERN_BITMAP( pcbnew_xpm ) EXTERN_BITMAP( pcbcalculator_xpm ) EXTERN_BITMAP( pcb_offset_xpm ) diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt index fb187bac3f..795c7ed667 100644 --- a/pcbnew/CMakeLists.txt +++ b/pcbnew/CMakeLists.txt @@ -442,7 +442,7 @@ if( KICAD_SCRIPTING ) # Generate pcbnew.py and pcbnew_wrap.cxx using swig DEPENDS swig/drawsegment.i DEPENDS swig/edge_mod.i DEPENDS swig/marker_pcb.i - DEPENDS swig/mire.i + DEPENDS swig/pcb_target.i DEPENDS swig/module.i DEPENDS swig/netclass.i DEPENDS swig/netinfo.i diff --git a/pcbnew/block.cpp b/pcbnew/block.cpp index 3dbdacfa89..ce6f465a7f 100644 --- a/pcbnew/block.cpp +++ b/pcbnew/block.cpp @@ -40,7 +40,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/pcbnew/block_module_editor.cpp b/pcbnew/block_module_editor.cpp index c3ffb29132..e1f1c0577b 100644 --- a/pcbnew/block_module_editor.cpp +++ b/pcbnew/block_module_editor.cpp @@ -48,7 +48,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/pcbnew/class_board.cpp b/pcbnew/class_board.cpp index 8f2ccb8317..eb4c9c484a 100644 --- a/pcbnew/class_board.cpp +++ b/pcbnew/class_board.cpp @@ -56,7 +56,7 @@ #include #include #include -#include +#include #include #include diff --git a/pcbnew/class_mire.cpp b/pcbnew/class_pcb_target.cpp similarity index 96% rename from pcbnew/class_mire.cpp rename to pcbnew/class_pcb_target.cpp index f99252088f..e95eae8397 100644 --- a/pcbnew/class_mire.cpp +++ b/pcbnew/class_pcb_target.cpp @@ -25,8 +25,8 @@ */ /** - * @file class_mire.cpp - * MIRE class definition (targets for photo plots) + * @file class_pcb_target.cpp + * PCB_TARGET class definition - targets for photo plots, formerly called MIRE (from French 'mire optique') */ #include @@ -41,7 +41,7 @@ #include #include -#include +#include #include @@ -199,7 +199,7 @@ wxString PCB_TARGET::GetSelectMenuText() const BITMAP_DEF PCB_TARGET::GetMenuImage() const { - return add_mires_xpm; + return add_pcb_target_xpm; } EDA_ITEM* PCB_TARGET::Clone() const diff --git a/pcbnew/class_mire.h b/pcbnew/class_pcb_target.h similarity index 97% rename from pcbnew/class_mire.h rename to pcbnew/class_pcb_target.h index 7621d11bfe..368c85d6a1 100644 --- a/pcbnew/class_mire.h +++ b/pcbnew/class_pcb_target.h @@ -23,13 +23,12 @@ */ /** - * @file class_mire.h + * @file class_pcb_target.h * @brief PCB_TARGET class definition. (targets for photo plots). */ -#ifndef MIRE_H -#define MIRE_H - +#ifndef PCB_TARGET_H_ +#define PCB_TARGET_H_ #include @@ -112,4 +111,4 @@ public: }; -#endif // #define MIRE_H +#endif diff --git a/pcbnew/edit.cpp b/pcbnew/edit.cpp index afd59eb490..eb1b0d1f1d 100644 --- a/pcbnew/edit.cpp +++ b/pcbnew/edit.cpp @@ -83,7 +83,7 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) case ID_POPUP_PCB_FLIP_TEXTEPCB: case ID_POPUP_PCB_COPY_TEXTEPCB: case ID_POPUP_PCB_EDIT_TEXTEPCB: - case ID_POPUP_PCB_EDIT_MIRE: + case ID_POPUP_PCB_EDIT_PCB_TARGET: case ID_POPUP_PCB_ROTATE_TEXTMODULE: case ID_POPUP_PCB_ROTATE_MODULE_CLOCKWISE: case ID_POPUP_PCB_ROTATE_MODULE_COUNTERCLOCKWISE: @@ -154,7 +154,7 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) case ID_POPUP_PCB_DRAG_MODULE_REQUEST: case ID_POPUP_PCB_MOVE_MODULE_REQUEST: case ID_POPUP_PCB_MOVE_TEXTMODULE_REQUEST: - case ID_POPUP_PCB_MOVE_MIRE_REQUEST: + case ID_POPUP_PCB_MOVE_PCB_TARGET_REQUEST: break; case ID_POPUP_CANCEL_CURRENT_COMMAND: @@ -1069,17 +1069,17 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) m_canvas->MoveCursorToCrossHair(); break; - case ID_POPUP_PCB_MOVE_MIRE_REQUEST: + case ID_POPUP_PCB_MOVE_PCB_TARGET_REQUEST: BeginMoveTarget( (PCB_TARGET*) GetCurItem(), &dc ); m_canvas->MoveCursorToCrossHair(); break; - case ID_POPUP_PCB_EDIT_MIRE: + case ID_POPUP_PCB_EDIT_PCB_TARGET: ShowTargetOptionsDialog( (PCB_TARGET*) GetCurItem(), &dc ); m_canvas->MoveCursorToCrossHair(); break; - case ID_POPUP_PCB_DELETE_MIRE: + case ID_POPUP_PCB_DELETE_PCB_TARGET: m_canvas->MoveCursorToCrossHair(); DeleteTarget( (PCB_TARGET*) GetCurItem(), &dc ); SetCurItem( NULL ); @@ -1474,7 +1474,7 @@ void PCB_EDIT_FRAME::OnSelectTool( wxCommandEvent& aEvent ) SetToolID( id, wxCURSOR_PENCIL, _( "Add keepout" ) ); break; - case ID_PCB_MIRE_BUTT: + case ID_PCB_TARGET_BUTT: SetToolID( id, wxCURSOR_PENCIL, _( "Add layer alignment target" ) ); break; diff --git a/pcbnew/hotkeys_board_editor.cpp b/pcbnew/hotkeys_board_editor.cpp index 56bf38bb7c..4b0668d2d6 100644 --- a/pcbnew/hotkeys_board_editor.cpp +++ b/pcbnew/hotkeys_board_editor.cpp @@ -35,7 +35,7 @@ #include #include #include -#include +#include #include #include @@ -642,7 +642,7 @@ bool PCB_EDIT_FRAME::OnHotkeyEditItem( int aIdCommand ) case PCB_TARGET_T: if( aIdCommand == HK_EDIT_ITEM ) - evt_type = ID_POPUP_PCB_EDIT_MIRE; + evt_type = ID_POPUP_PCB_EDIT_PCB_TARGET; break; @@ -781,7 +781,7 @@ bool PCB_EDIT_FRAME::OnHotkeyMoveItem( int aIdCommand ) case PCB_TARGET_T: if( aIdCommand == HK_MOVE_ITEM ) - evt_type = ID_POPUP_PCB_MOVE_MIRE_REQUEST; + evt_type = ID_POPUP_PCB_MOVE_PCB_TARGET_REQUEST; break; diff --git a/pcbnew/kicad_plugin.cpp b/pcbnew/kicad_plugin.cpp index dd52699ee1..7d76413e5a 100644 --- a/pcbnew/kicad_plugin.cpp +++ b/pcbnew/kicad_plugin.cpp @@ -37,7 +37,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/pcbnew/legacy_plugin.cpp b/pcbnew/legacy_plugin.cpp index 8eab2bd9b9..7275627377 100644 --- a/pcbnew/legacy_plugin.cpp +++ b/pcbnew/legacy_plugin.cpp @@ -78,7 +78,7 @@ #include #include #include -#include +#include #include #include <3d_cache/3d_info.h> #include diff --git a/pcbnew/menubar_pcbframe.cpp b/pcbnew/menubar_pcbframe.cpp index 570d633231..a3f9635582 100644 --- a/pcbnew/menubar_pcbframe.cpp +++ b/pcbnew/menubar_pcbframe.cpp @@ -350,9 +350,9 @@ void preparePlaceMenu( wxMenu* aParentMenu ) _( "&Dimension" ), _( "Add dimension" ), KiBitmap( add_dimension_xpm ) ); - AddMenuItem( aParentMenu, ID_PCB_MIRE_BUTT, + AddMenuItem( aParentMenu, ID_PCB_TARGET_BUTT, _( "La&yer Alignment Target" ), _( "Add layer alignment target" ), - KiBitmap( add_mires_xpm ) ); + KiBitmap( add_pcb_target_xpm ) ); aParentMenu->AppendSeparator(); diff --git a/pcbnew/onleftclick.cpp b/pcbnew/onleftclick.cpp index 217b71bbe2..ad5e363463 100644 --- a/pcbnew/onleftclick.cpp +++ b/pcbnew/onleftclick.cpp @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include @@ -225,7 +225,7 @@ void PCB_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition ) break; - case ID_PCB_MIRE_BUTT: + case ID_PCB_TARGET_BUTT: if( (curr_item == NULL) || (curr_item->GetFlags() == 0) ) { SetCurItem( (BOARD_ITEM*) CreateTarget( aDC ) ); diff --git a/pcbnew/onrightclick.cpp b/pcbnew/onrightclick.cpp index 7a5d2744eb..6b6dd00f4c 100644 --- a/pcbnew/onrightclick.cpp +++ b/pcbnew/onrightclick.cpp @@ -296,7 +296,7 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu ) { msg = AddHotkeyName( _( "Move" ), g_Board_Editor_Hokeys_Descr, HK_MOVE_ITEM ); - AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_MIRE_REQUEST, + AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_PCB_TARGET_REQUEST, msg, KiBitmap( move_target_xpm ) ); msg = AddHotkeyName( _("Move Exactly" ), g_Board_Editor_Hokeys_Descr, @@ -311,10 +311,10 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu ) msg = AddHotkeyName( _( "Edit" ), g_Board_Editor_Hokeys_Descr, HK_EDIT_ITEM ); - AddMenuItem( aPopMenu, ID_POPUP_PCB_EDIT_MIRE, msg, KiBitmap( edit_xpm ) ); + AddMenuItem( aPopMenu, ID_POPUP_PCB_EDIT_PCB_TARGET, msg, KiBitmap( edit_xpm ) ); msg = AddHotkeyName( _( "Delete" ), g_Board_Editor_Hokeys_Descr, HK_DELETE ); - AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_MIRE, + AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_PCB_TARGET, msg, KiBitmap( delete_xpm ) ); } diff --git a/pcbnew/pcb_painter.cpp b/pcbnew/pcb_painter.cpp index 9850a993de..d4a86c3321 100644 --- a/pcbnew/pcb_painter.cpp +++ b/pcbnew/pcb_painter.cpp @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include #include diff --git a/pcbnew/pcb_parser.cpp b/pcbnew/pcb_parser.cpp index 36f1e9ccaf..ded32c6de8 100644 --- a/pcbnew/pcb_parser.cpp +++ b/pcbnew/pcb_parser.cpp @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/pcbnew/pcbnew_id.h b/pcbnew/pcbnew_id.h index b4c25ff62e..8c1bf27c8f 100644 --- a/pcbnew/pcbnew_id.h +++ b/pcbnew/pcbnew_id.h @@ -38,7 +38,7 @@ enum pcbnew_ids ID_PCB_ARC_BUTT, ID_PCB_ADD_TEXT_BUTT, ID_PCB_DIMENSION_BUTT, - ID_PCB_MIRE_BUTT, + ID_PCB_TARGET_BUTT, ID_PCB_DELETE_ITEM_BUTT, ID_PCB_PLACE_OFFSET_COORD_BUTT, ID_PCB_PLACE_GRID_COORD_BUTT, @@ -135,9 +135,9 @@ enum pcbnew_ids ID_POPUP_PCB_DELETE_DIMENSION, ID_POPUP_PCB_MOVE_TEXT_DIMENSION_REQUEST, - ID_POPUP_PCB_MOVE_MIRE_REQUEST, - ID_POPUP_PCB_DELETE_MIRE, - ID_POPUP_PCB_EDIT_MIRE, + ID_POPUP_PCB_MOVE_PCB_TARGET_REQUEST, + ID_POPUP_PCB_DELETE_PCB_TARGET, + ID_POPUP_PCB_EDIT_PCB_TARGET, ID_POPUP_PCB_STOP_CURRENT_DRAWING, diff --git a/pcbnew/plot_board_layers.cpp b/pcbnew/plot_board_layers.cpp index a8b81c3dd1..8a9957a4e6 100644 --- a/pcbnew/plot_board_layers.cpp +++ b/pcbnew/plot_board_layers.cpp @@ -45,7 +45,7 @@ #include #include #include -#include +#include #include #include diff --git a/pcbnew/plot_brditems_plotter.cpp b/pcbnew/plot_brditems_plotter.cpp index 8358e69204..bff82b5fc0 100644 --- a/pcbnew/plot_brditems_plotter.cpp +++ b/pcbnew/plot_brditems_plotter.cpp @@ -43,7 +43,7 @@ #include #include #include -#include +#include #include #include diff --git a/pcbnew/swig/board.i b/pcbnew/swig/board.i index 05d04d5169..15041403bc 100644 --- a/pcbnew/swig/board.i +++ b/pcbnew/swig/board.i @@ -56,7 +56,7 @@ HANDLE_EXCEPTIONS(BOARD::TracksInNetBetweenPoints) %include dimension.i %include drawsegment.i %include marker_pcb.i -%include mire.i +%include pcb_target.i %include text_mod.i %include edge_mod.i %include netinfo.i diff --git a/pcbnew/swig/mire.i b/pcbnew/swig/mire.i index 361cfccfa2..a6d76fa4ee 100644 --- a/pcbnew/swig/mire.i +++ b/pcbnew/swig/mire.i @@ -1,6 +1,5 @@ -%include class_mire.h +%include class_pcb_target.h %{ -#include +#include %} - diff --git a/pcbnew/target_edit.cpp b/pcbnew/target_edit.cpp index d570ad74aa..a34ff25b82 100644 --- a/pcbnew/target_edit.cpp +++ b/pcbnew/target_edit.cpp @@ -37,7 +37,7 @@ #include #include -#include +#include #include #include diff --git a/pcbnew/tool_pcb.cpp b/pcbnew/tool_pcb.cpp index 376123b68a..c6d8e12964 100644 --- a/pcbnew/tool_pcb.cpp +++ b/pcbnew/tool_pcb.cpp @@ -472,7 +472,7 @@ void PCB_EDIT_FRAME::ReCreateVToolbar() m_drawToolBar->AddTool( ID_PCB_DIMENSION_BUTT, wxEmptyString, KiBitmap( add_dimension_xpm ), _( "Add dimension" ), wxITEM_CHECK ); - m_drawToolBar->AddTool( ID_PCB_MIRE_BUTT, wxEmptyString, KiBitmap( add_mires_xpm ), + m_drawToolBar->AddTool( ID_PCB_TARGET_BUTT, wxEmptyString, KiBitmap( add_pcb_target_xpm ), _( "Add layer alignment target" ), wxITEM_CHECK ); m_drawToolBar->AddSeparator(); diff --git a/pcbnew/tools/pcb_actions.cpp b/pcbnew/tools/pcb_actions.cpp index 842b99daa9..52a4177d0d 100644 --- a/pcbnew/tools/pcb_actions.cpp +++ b/pcbnew/tools/pcb_actions.cpp @@ -87,7 +87,7 @@ boost::optional PCB_ACTIONS::TranslateLegacyId( int aId ) case ID_PCB_DIMENSION_BUTT: return PCB_ACTIONS::drawDimension.MakeEvent(); - case ID_PCB_MIRE_BUTT: + case ID_PCB_TARGET_BUTT: return PCB_ACTIONS::placeTarget.MakeEvent(); case ID_MODEDIT_PAD_TOOL: diff --git a/pcbnew/tools/pcb_editor_control.cpp b/pcbnew/tools/pcb_editor_control.cpp index b6617dd7c2..301de97c9e 100644 --- a/pcbnew/tools/pcb_editor_control.cpp +++ b/pcbnew/tools/pcb_editor_control.cpp @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include #include @@ -595,7 +595,7 @@ int PCB_EDITOR_CONTROL::PlaceTarget( const TOOL_EVENT& aEvent ) controls->SetSnapping( true ); Activate(); - m_frame->SetToolID( ID_PCB_MIRE_BUTT, wxCURSOR_PENCIL, _( "Add layer alignment target" ) ); + m_frame->SetToolID( ID_PCB_TARGET_BUTT, wxCURSOR_PENCIL, _( "Add layer alignment target" ) ); // Main loop: keep receiving events while( OPT_TOOL_EVENT evt = Wait() ) diff --git a/pcbnew/undo_redo.cpp b/pcbnew/undo_redo.cpp index ed877f1792..db17fc66a5 100644 --- a/pcbnew/undo_redo.cpp +++ b/pcbnew/undo_redo.cpp @@ -39,7 +39,7 @@ using namespace std::placeholders; #include #include #include -#include +#include #include #include #include diff --git a/qa/CMakeLists.txt b/qa/CMakeLists.txt index 330a2c81f7..71310a99b6 100644 --- a/qa/CMakeLists.txt +++ b/qa/CMakeLists.txt @@ -11,3 +11,4 @@ if( KICAD_SCRIPTING_MODULES ) endif() add_subdirectory( geometry ) +add_subdirectory( pcb_test_window ) \ No newline at end of file