summaryrefslogtreecommitdiff
path: root/gerbview/events_called_functions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gerbview/events_called_functions.cpp')
-rw-r--r--gerbview/events_called_functions.cpp390
1 files changed, 390 insertions, 0 deletions
diff --git a/gerbview/events_called_functions.cpp b/gerbview/events_called_functions.cpp
new file mode 100644
index 0000000..c5a5566
--- /dev/null
+++ b/gerbview/events_called_functions.cpp
@@ -0,0 +1,390 @@
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2011-2014 Jean-Pierre Charras jp.charras at wanadoo.fr
+ * Copyright (C) 1992-2014 KiCad Developers, see change_log.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/**
+ * @file events_called_functions.cpp
+ * @brief GerbView command event functions.
+ */
+
+#include <fctsys.h>
+#include <pgm_base.h>
+#include <class_drawpanel.h>
+#include <confirm.h>
+#include <common.h>
+#include <gestfich.h>
+
+#include <gerbview.h>
+#include <gerbview_frame.h>
+#include <kicad_device_context.h>
+#include <gerbview_id.h>
+#include <class_GERBER.h>
+#include <dialog_helpers.h>
+#include <class_DCodeSelectionbox.h>
+#include <class_gerbview_layer_widget.h>
+#include <dialog_show_page_borders.h>
+
+
+// Event table:
+
+BEGIN_EVENT_TABLE( GERBVIEW_FRAME, EDA_DRAW_FRAME )
+ EVT_CLOSE( GERBVIEW_FRAME::OnCloseWindow )
+ EVT_SIZE( GERBVIEW_FRAME::OnSize )
+
+ EVT_TOOL( wxID_FILE, GERBVIEW_FRAME::Files_io )
+ EVT_TOOL( ID_GERBVIEW_ERASE_ALL, GERBVIEW_FRAME::Files_io )
+ EVT_TOOL( ID_GERBVIEW_LOAD_DRILL_FILE, GERBVIEW_FRAME::Files_io )
+ EVT_TOOL( ID_NEW_BOARD, GERBVIEW_FRAME::Files_io )
+ EVT_TOOL( ID_GERBVIEW_SET_PAGE_BORDER, GERBVIEW_FRAME::Process_Special_Functions )
+
+ // Menu Files:
+ EVT_MENU( wxID_FILE, GERBVIEW_FRAME::Files_io )
+ EVT_MENU( ID_NEW_BOARD, GERBVIEW_FRAME::Files_io )
+ EVT_MENU( ID_GEN_PLOT, GERBVIEW_FRAME::ToPlotter )
+ EVT_MENU( ID_GERBVIEW_EXPORT_TO_PCBNEW, GERBVIEW_FRAME::ExportDataInPcbnewFormat )
+
+ EVT_MENU_RANGE( wxID_FILE1, wxID_FILE9, GERBVIEW_FRAME::OnGbrFileHistory )
+ EVT_MENU_RANGE( ID_GERBVIEW_DRILL_FILE1, ID_GERBVIEW_DRILL_FILE9,
+ GERBVIEW_FRAME::OnDrlFileHistory )
+
+ EVT_MENU( wxID_EXIT, GERBVIEW_FRAME::OnQuit )
+
+ // menu Preferences
+ EVT_MENU_RANGE( ID_PREFERENCES_HOTKEY_START, ID_PREFERENCES_HOTKEY_END,
+ GERBVIEW_FRAME::Process_Config )
+
+ EVT_MENU( ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
+ GERBVIEW_FRAME::OnSelectOptionToolbar )
+ EVT_MENU( wxID_PREFERENCES, GERBVIEW_FRAME::InstallGerberOptionsDialog )
+
+ // menu Postprocess
+ EVT_MENU( ID_GERBVIEW_SHOW_LIST_DCODES, GERBVIEW_FRAME::Process_Special_Functions )
+ EVT_MENU( ID_GERBVIEW_SHOW_SOURCE, GERBVIEW_FRAME::OnShowGerberSourceFile )
+ EVT_MENU( ID_MENU_GERBVIEW_SELECT_PREFERED_EDITOR,
+ EDA_BASE_FRAME::OnSelectPreferredEditor )
+
+ // menu Miscellaneous
+ EVT_MENU( ID_GERBVIEW_GLOBAL_DELETE, GERBVIEW_FRAME::Process_Special_Functions )
+
+ // Menu Help
+ EVT_MENU( wxID_HELP, EDA_DRAW_FRAME::GetKicadHelp )
+ EVT_MENU( wxID_INDEX, EDA_DRAW_FRAME::GetKicadHelp )
+ EVT_MENU( wxID_ABOUT, EDA_DRAW_FRAME::GetKicadAbout )
+
+ EVT_TOOL( wxID_UNDO, GERBVIEW_FRAME::Process_Special_Functions )
+ EVT_TOOL( wxID_PRINT, GERBVIEW_FRAME::ToPrinter )
+ EVT_COMBOBOX( ID_TOOLBARH_GERBVIEW_SELECT_ACTIVE_LAYER,
+ GERBVIEW_FRAME::OnSelectActiveLayer )
+
+ EVT_SELECT_DCODE( ID_TOOLBARH_GERBER_SELECT_ACTIVE_DCODE, GERBVIEW_FRAME::OnSelectActiveDCode )
+
+ // Vertical toolbar:
+ EVT_TOOL( ID_NO_TOOL_SELECTED, GERBVIEW_FRAME::Process_Special_Functions )
+
+ EVT_MENU_RANGE( ID_POPUP_GENERAL_START_RANGE, ID_POPUP_GENERAL_END_RANGE,
+ GERBVIEW_FRAME::Process_Special_Functions )
+
+ // Option toolbar
+ EVT_TOOL( ID_TB_OPTIONS_SHOW_POLAR_COORD, GERBVIEW_FRAME::OnSelectOptionToolbar )
+ EVT_TOOL( ID_TB_OPTIONS_SHOW_POLYGONS_SKETCH, GERBVIEW_FRAME::OnSelectOptionToolbar )
+ EVT_TOOL( ID_TB_OPTIONS_SHOW_FLASHED_ITEMS_SKETCH, GERBVIEW_FRAME::OnSelectOptionToolbar )
+ EVT_TOOL( ID_TB_OPTIONS_SHOW_LINES_SKETCH, GERBVIEW_FRAME::OnSelectOptionToolbar )
+ EVT_TOOL( ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR,
+ GERBVIEW_FRAME::OnSelectOptionToolbar )
+ EVT_TOOL( ID_TB_OPTIONS_SHOW_DCODES, GERBVIEW_FRAME::OnSelectOptionToolbar )
+ EVT_TOOL( ID_TB_OPTIONS_SHOW_NEGATIVE_ITEMS, GERBVIEW_FRAME::OnSelectOptionToolbar )
+ EVT_TOOL_RANGE( ID_TB_OPTIONS_SHOW_GBR_MODE_0, ID_TB_OPTIONS_SHOW_GBR_MODE_2,
+ GERBVIEW_FRAME::OnSelectDisplayMode )
+
+ EVT_UPDATE_UI( ID_TB_OPTIONS_SHOW_POLAR_COORD, GERBVIEW_FRAME::OnUpdateCoordType )
+ EVT_UPDATE_UI( ID_TB_OPTIONS_SHOW_FLASHED_ITEMS_SKETCH,
+ GERBVIEW_FRAME::OnUpdateFlashedItemsDrawMode )
+ EVT_UPDATE_UI( ID_TB_OPTIONS_SHOW_LINES_SKETCH, GERBVIEW_FRAME::OnUpdateLinesDrawMode )
+ EVT_UPDATE_UI( ID_TB_OPTIONS_SHOW_POLYGONS_SKETCH, GERBVIEW_FRAME::OnUpdatePolygonsDrawMode )
+ EVT_UPDATE_UI( ID_TB_OPTIONS_SHOW_DCODES, GERBVIEW_FRAME::OnUpdateShowDCodes )
+ EVT_UPDATE_UI( ID_TB_OPTIONS_SHOW_NEGATIVE_ITEMS, GERBVIEW_FRAME::OnUpdateShowNegativeItems )
+ EVT_UPDATE_UI( ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR,
+ GERBVIEW_FRAME::OnUpdateShowLayerManager )
+
+ EVT_UPDATE_UI( ID_TOOLBARH_GERBER_SELECT_ACTIVE_DCODE, GERBVIEW_FRAME::OnUpdateSelectDCode )
+ EVT_UPDATE_UI( ID_TOOLBARH_GERBVIEW_SELECT_ACTIVE_LAYER,
+ GERBVIEW_FRAME::OnUpdateLayerSelectBox )
+ EVT_UPDATE_UI_RANGE( ID_TB_OPTIONS_SHOW_GBR_MODE_0, ID_TB_OPTIONS_SHOW_GBR_MODE_2,
+ GERBVIEW_FRAME::OnUpdateDrawMode )
+
+END_EVENT_TABLE()
+
+
+/* Handles the selection of tools, menu, and popup menu commands.
+ */
+void GERBVIEW_FRAME::Process_Special_Functions( wxCommandEvent& event )
+{
+ int id = event.GetId();
+
+ switch( id )
+ {
+ case ID_POPUP_PLACE_BLOCK:
+ case ID_POPUP_ZOOM_BLOCK:
+ break;
+
+ case ID_POPUP_CANCEL_CURRENT_COMMAND:
+ m_canvas->EndMouseCapture();
+
+ if( GetScreen()->m_BlockLocate.GetCommand() != BLOCK_IDLE )
+ {
+ /* Should not be executed, except bug */
+ GetScreen()->m_BlockLocate.SetCommand( BLOCK_IDLE );
+ GetScreen()->m_BlockLocate.SetState( STATE_NO_BLOCK );
+ GetScreen()->m_BlockLocate.ClearItemsList();
+ }
+
+ if( GetToolId() == ID_NO_TOOL_SELECTED )
+ SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString );
+ else
+ m_canvas->SetCursor( (wxStockCursor) m_canvas->GetCurrentCursor() );
+ break;
+
+ default:
+ m_canvas->EndMouseCapture();
+ break;
+ }
+
+ INSTALL_UNBUFFERED_DC( dc, m_canvas );
+
+ switch( id )
+ {
+ case ID_GERBVIEW_SET_PAGE_BORDER:
+ {
+ DIALOG_PAGE_SHOW_PAGE_BORDERS dlg( this );
+
+ if( dlg.ShowModal() == wxID_OK )
+ m_canvas->Refresh();
+ }
+ break;
+
+ case ID_GERBVIEW_GLOBAL_DELETE:
+ Erase_Current_DrawLayer( true );
+ ClearMsgPanel();
+ break;
+
+ case ID_NO_TOOL_SELECTED:
+ SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString );
+ break;
+
+ case ID_POPUP_CLOSE_CURRENT_TOOL:
+ SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString );
+ break;
+
+ case ID_POPUP_CANCEL_CURRENT_COMMAND:
+ break;
+
+ case ID_GERBVIEW_SHOW_LIST_DCODES:
+ Liste_D_Codes();
+ break;
+
+ case ID_POPUP_PLACE_BLOCK:
+ GetScreen()->m_BlockLocate.SetCommand( BLOCK_MOVE );
+ m_canvas->SetAutoPanRequest( false );
+ HandleBlockPlace( &dc );
+ break;
+
+ case ID_POPUP_ZOOM_BLOCK:
+ GetScreen()->m_BlockLocate.SetCommand( BLOCK_ZOOM );
+ GetScreen()->m_BlockLocate.SetMessageBlock( this );
+ HandleBlockEnd( &dc );
+ break;
+
+ default:
+ wxFAIL_MSG( wxT( "GERBVIEW_FRAME::Process_Special_Functions error" ) );
+ break;
+ }
+}
+
+
+void GERBVIEW_FRAME::OnSelectActiveDCode( wxCommandEvent& event )
+{
+ GERBER_IMAGE* gerber_image = g_GERBER_List.GetGbrImage( getActiveLayer() );
+
+ if( gerber_image )
+ {
+ int tool = m_DCodeSelector->GetSelectedDCodeId();
+
+ if( tool != gerber_image->m_Selected_Tool )
+ {
+ gerber_image->m_Selected_Tool = tool;
+ m_canvas->Refresh();
+ }
+ }
+}
+
+
+void GERBVIEW_FRAME::OnSelectActiveLayer( wxCommandEvent& event )
+{
+ int layer = getActiveLayer();
+
+ setActiveLayer( event.GetSelection() );
+
+ if( layer != getActiveLayer() )
+ {
+ if( m_LayersManager->OnLayerSelected() )
+ m_canvas->Refresh();
+ }
+}
+
+
+void GERBVIEW_FRAME::OnShowGerberSourceFile( wxCommandEvent& event )
+{
+ int layer = getActiveLayer();
+ GERBER_IMAGE* gerber_layer = g_GERBER_List.GetGbrImage( layer );
+
+ if( gerber_layer )
+ {
+ wxString editorname = Pgm().GetEditorName();
+ if( !editorname.IsEmpty() )
+ {
+ wxFileName fn( gerber_layer->m_FileName );
+ ExecuteFile( this, editorname, QuoteFullPath( fn ) );
+ }
+ else
+ wxMessageBox( _( "No editor defined. Please select one" ) );
+ }
+
+ else
+ {
+ wxString msg;
+ msg.Printf( _( "No file loaded on the active layer %d" ), layer + 1 );
+ wxMessageBox( msg );
+ }
+}
+
+
+void GERBVIEW_FRAME::OnSelectDisplayMode( wxCommandEvent& event )
+{
+ int oldMode = GetDisplayMode();
+
+ switch( event.GetId() )
+ {
+ case ID_TB_OPTIONS_SHOW_GBR_MODE_0:
+ SetDisplayMode( 0 );
+ break;
+
+ case ID_TB_OPTIONS_SHOW_GBR_MODE_1:
+ SetDisplayMode( 1 );
+ break;
+
+ case ID_TB_OPTIONS_SHOW_GBR_MODE_2:
+ SetDisplayMode( 2 );
+ break;
+ }
+
+ if( GetDisplayMode() != oldMode )
+ m_canvas->Refresh();
+}
+
+
+void GERBVIEW_FRAME::OnQuit( wxCommandEvent& event )
+{
+ Close( true );
+}
+
+
+void GERBVIEW_FRAME::ShowChangedLanguage()
+{
+ // call my base class
+ EDA_DRAW_FRAME::ShowChangedLanguage();
+
+ m_LayersManager->SetLayersManagerTabsText();
+
+ wxAuiPaneInfo& pane_info = m_auimgr.GetPane( m_LayersManager );
+ pane_info.Caption( _( "Visibles" ) );
+ m_auimgr.Update();
+
+ ReFillLayerWidget();
+}
+
+
+void GERBVIEW_FRAME::OnSelectOptionToolbar( wxCommandEvent& event )
+{
+ int id = event.GetId();
+ bool state;
+
+ switch( id )
+ {
+ case ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG:
+ state = ! m_show_layer_manager_tools;
+ id = ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR;
+ break;
+
+ default:
+ state = m_optionsToolBar->GetToolToggled( id );
+ break;
+ }
+
+ switch( id )
+ {
+ case ID_TB_OPTIONS_SHOW_POLAR_COORD:
+ m_DisplayOptions.m_DisplayPolarCood = state;
+ break;
+
+ case ID_TB_OPTIONS_SHOW_FLASHED_ITEMS_SKETCH:
+ m_DisplayOptions.m_DisplayFlashedItemsFill = not state;
+ m_canvas->Refresh( true );
+ break;
+
+ case ID_TB_OPTIONS_SHOW_LINES_SKETCH:
+ m_DisplayOptions.m_DisplayLinesFill = not state;
+ m_canvas->Refresh( true );
+ break;
+
+ case ID_TB_OPTIONS_SHOW_POLYGONS_SKETCH:
+ m_DisplayOptions.m_DisplayPolygonsFill = not state;
+ m_canvas->Refresh( true );
+ break;
+
+ case ID_TB_OPTIONS_SHOW_DCODES:
+ SetElementVisibility( DCODES_VISIBLE, state );
+ m_canvas->Refresh( true );
+ break;
+
+ case ID_TB_OPTIONS_SHOW_NEGATIVE_ITEMS:
+ SetElementVisibility( NEGATIVE_OBJECTS_VISIBLE, state );
+ m_canvas->Refresh( true );
+ break;
+
+ case ID_TB_OPTIONS_SHOW_LAYERS_MANAGER_VERTICAL_TOOLBAR:
+
+ // show/hide auxiliary Vertical layers and visibility manager toolbar
+ m_show_layer_manager_tools = state;
+ m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( m_show_layer_manager_tools );
+ m_auimgr.Update();
+ GetMenuBar()->SetLabel( ID_MENU_GERBVIEW_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
+ m_show_layer_manager_tools ?
+ _("Hide &Layers Manager" ) : _("Show &Layers Manager" ));
+ break;
+
+ default:
+ wxMessageBox( wxT( "GERBVIEW_FRAME::OnSelectOptionToolbar error" ) );
+ break;
+ }
+}
+