diff --git a/3d-viewer/3d_canvas.cpp b/3d-viewer/3d_canvas.cpp index 9868355554..fa03cf8d45 100644 --- a/3d-viewer/3d_canvas.cpp +++ b/3d-viewer/3d_canvas.cpp @@ -504,7 +504,6 @@ void Pcb3D_GLCanvas::OnSize( wxSizeEvent& event ) if( GetContext() ) #endif { - SetCurrent(); glViewport( 0, 0, (GLint) w, (GLint) h ); } @@ -536,8 +535,6 @@ void Pcb3D_GLCanvas::InitGL() ZBottom = 1.0; ZTop = 10.0; } - SetCurrent(); - /* set viewing projection */ double ratio_HV = (double) size.x / size.y; // Ratio largeur /hauteur de la fenetre d'affichage glMatrixMode( GL_PROJECTION ); @@ -595,8 +592,6 @@ void Pcb3D_GLCanvas::SetLights() double light; GLfloat light_color[4]; - SetCurrent(); - /* set viewing projection */ light_color[3] = 1.0; GLfloat Z_axis_pos[4] = { 0.0, 0.0, 3.0, 0.0 }; diff --git a/change_log.txt b/change_log.txt index cdb214a994..4c65887f3f 100644 --- a/change_log.txt +++ b/change_log.txt @@ -5,6 +5,19 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with email address. +2008-Dec-05 UPDATE Wayne Stambaugh +================================================================================ +++all + * Simplified and improved grid implementation. User grid will no longer + be displayed if it is the same as any of the default grid sizes. + * Removed unused grid code in BASE_SCREEN class. + * Source file share/drawpanel.cpp now compiled into common library. + * Declare WinEDA_Appl so you can use wxGetApp() instead of passing app + pointers all over the place. + * Fixed assertion in debug build of 3D viewer. + * Some general code beautification and redundant header file removal in files + changed by the grid implementation. + 2008-Dec-3 UPDATE Dick Hollenbeck ================================================================================ @@ -42,7 +55,6 @@ email address. results are same, but using segments can be better (faster redraw time) for polygons having a lot of segments (more than 10000) ->>>>>>> .r1441 2008-Dec-02 UPDATE Wayne Stambaugh ================================================================================ ++build fixes diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 9e897281fe..99f2cb2d77 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -17,6 +17,7 @@ set(COMMON_SRCS dcsvg.cpp displlst.cpp dlist.cpp + drawpanel.cpp drawtxt.cpp edaappl.cpp eda_dde.cpp diff --git a/common/base_screen.cpp b/common/base_screen.cpp index dda3c052e6..b2aceb5bd4 100644 --- a/common/base_screen.cpp +++ b/common/base_screen.cpp @@ -10,23 +10,34 @@ #include "common.h" +/* Implement wxSize array for grid list implementation. */ +#include +WX_DEFINE_OBJARRAY( GridArray ); + + /* defines locaux */ #define CURSOR_SIZE 12 /* taille de la croix du curseur PCB */ /*******************************************************/ /* Class BASE_SCREEN: classe de gestion d'un affichage */ /*******************************************************/ -BASE_SCREEN::BASE_SCREEN( int idscreen, KICAD_T aType ) : - EDA_BaseStruct( aType ) +BASE_SCREEN::BASE_SCREEN( KICAD_T aType ) : EDA_BaseStruct( aType ) { - EEDrawList = NULL; /* Schematic items list */ - m_Type = idscreen; - m_ZoomList = NULL; - m_GridList = NULL; - m_UndoList = NULL; - m_RedoList = NULL; + EEDrawList = NULL; /* Schematic items list */ + m_ZoomList = NULL; + m_UndoList = NULL; + m_RedoList = NULL; m_UndoRedoCountMax = 1; - m_FirstRedraw = TRUE; + m_FirstRedraw = TRUE; + m_ScreenNumber = 1; + m_NumberOfScreen = 1; /* Hierarchy: Root: ScreenNumber = 1 */ + m_Zoom = 32; + m_Grid = wxSize( 50, 50 ); /* Default grid size */ + m_UserGridIsON = FALSE; + m_Diviseur_Grille = 1; + m_Center = true; + m_CurrentSheetDesc = &g_Sheet_A4; + InitDatas(); } @@ -38,9 +49,6 @@ BASE_SCREEN::~BASE_SCREEN() if( m_ZoomList ) free( m_ZoomList ); - if( m_GridList ) - free( m_GridList ); - ClearUndoRedoList(); } @@ -49,35 +57,6 @@ BASE_SCREEN::~BASE_SCREEN() void BASE_SCREEN::InitDatas() /*******************************/ { - m_ScreenNumber = m_NumberOfScreen = 1; /* Hierarchy: Root: ScreenNumber = 1 */ - m_Zoom = 32; - m_Grid = wxSize( 50, 50 ); /* Default grid size */ - m_UserGrid = g_UserGrid; /* User Default grid size */ - m_UserGridIsON = FALSE; - m_UserGridUnit = g_UserGrid_Unit; - m_Diviseur_Grille = 1; - m_Center = TRUE; - - /* Init draw offset and default page size */ - switch( m_Type ) - { - case SCHEMATIC_FRAME: - m_Center = FALSE; - m_CurrentSheetDesc = &g_Sheet_A4; - break; - - default: - case CVPCB_DISPLAY_FRAME: - case MODULE_EDITOR_FRAME: - case PCB_FRAME: - m_CurrentSheetDesc = &g_Sheet_A4; - break; - - case GERBER_FRAME: - m_CurrentSheetDesc = &g_Sheet_GERBER; - break; - } - if( m_Center ) { m_Curseur.x = m_Curseur.y = 0; @@ -100,11 +79,30 @@ void BASE_SCREEN::InitDatas() SetCurItem( NULL ); /* indicateurs divers */ - m_FlagRefreshReq = 0; /* Redraw screen requste flag */ - m_FlagModified = 0; // Set when any change is made on borad - m_FlagSave = 1; // Used in auto save: set when an auto save is made + m_FlagRefreshReq = 0; /* Redraw screen requste flag */ + m_FlagModified = 0; // Set when any change is made on borad + m_FlagSave = 1; // Used in auto save: set when an auto save is made } +/* + * Get screen units scalar. + * + * Default implimentation returns scalar used for schematic screen. The + * internal units used by the schematic screen is 1 mil (0.001"). Override + * this in derived classes that require internal units other than 1 mil. + */ +int BASE_SCREEN::GetInternalUnits( void ) +{ + return EESCHEMA_INTERNAL_UNIT; +} + +wxSize BASE_SCREEN::ReturnPageSize( void ) +{ + int internal_units = GetInternalUnits(); + + return wxSize( m_CurrentSheetDesc->m_Size.x * (internal_units / 1000), + m_CurrentSheetDesc->m_Size.y * (internal_units / 1000) ); +} /******************************************************************/ wxPoint BASE_SCREEN::CursorRealPosition( const wxPoint& ScreenPos ) @@ -124,56 +122,6 @@ wxPoint BASE_SCREEN::CursorRealPosition( const wxPoint& ScreenPos ) } -/***************************************/ -int BASE_SCREEN::GetInternalUnits() -/***************************************/ -{ - switch( m_Type ) - { - default: - case SCHEMATIC_FRAME: - return EESCHEMA_INTERNAL_UNIT; - break; - - case GERBER_FRAME: - case CVPCB_DISPLAY_FRAME: - case MODULE_EDITOR_FRAME: - case PCB_FRAME: - return PCB_INTERNAL_UNIT; - } -} - - -/*****************************************/ -wxSize BASE_SCREEN::ReturnPageSize() -/*****************************************/ - -/* Return in internal units the page size - * Note: the page size is handled in 1/1000 ", not in internal units - */ -{ - wxSize PageSize; - - switch( m_Type ) - { - default: - case SCHEMATIC_FRAME: - PageSize = m_CurrentSheetDesc->m_Size; - break; - - case GERBER_FRAME: - case CVPCB_DISPLAY_FRAME: - case MODULE_EDITOR_FRAME: - case PCB_FRAME: - PageSize.x = m_CurrentSheetDesc->m_Size.x * (PCB_INTERNAL_UNIT / 1000); - PageSize.y = m_CurrentSheetDesc->m_Size.y * (PCB_INTERNAL_UNIT / 1000); - break; - } - - return PageSize; -} - - /**************************************************/ void BASE_SCREEN::SetZoomList( const int* zoomlist ) /**************************************************/ @@ -281,31 +229,16 @@ void BASE_SCREEN::SetLastZoom() /********************************************/ -void BASE_SCREEN::SetGridList( wxSize* gridlist ) +void BASE_SCREEN::SetGridList( GridArray& gridlist ) /********************************************/ /* init liste des zoom (NULL terminated) */ { - int ii, nbitems; - wxSize* grid; + if( !m_GridList.IsEmpty() ) + m_GridList.Clear(); - // Decompte des items - for( nbitems = 0, grid = gridlist; ; grid++, nbitems++ ) - { - if( (grid->x <= 0) || (grid->y <= 0) ) - break; - } - - // Init liste - if( m_GridList ) - free( m_GridList ); - m_GridList = (wxSize*) MyZMalloc( nbitems * sizeof(wxSize) ); - - for( ii = 0, grid = gridlist; ii < nbitems; grid++, ii++ ) - { - m_GridList[ii] = *grid; - } + m_GridList = gridlist; } @@ -313,125 +246,121 @@ void BASE_SCREEN::SetGridList( wxSize* gridlist ) void BASE_SCREEN::SetGrid( const wxSize& size ) /**********************************************/ { - if( m_GridList == NULL ) - return; + wxASSERT( !m_GridList.IsEmpty() ); - if( (size.x <= 0) || (size.y <= 0) ) + size_t i; + + for( i = 0; i < m_GridList.GetCount(); i++ ) { - m_UserGrid = g_UserGrid; - m_UserGridIsON = TRUE; + if( m_GridList[i].m_Size == size ) + { + m_Grid = m_GridList[i].m_Size; + return; + } + } + + m_Grid = m_GridList[0].m_Size; + + wxLogWarning( _( "Grid size( %d, %d ) not in grid list, falling back to " \ + "grid size( %d, %d )." ), + size.x, size.y, m_Grid.x, m_Grid.y ); +} + +/* Set grid size from command ID. */ +void BASE_SCREEN::SetGrid( int id ) +{ + wxASSERT( !m_GridList.IsEmpty() ); + + size_t i; + + for( i = 0; i < m_GridList.GetCount(); i++ ) + { + if( m_GridList[i].m_Id == id ) + { + m_Grid = m_GridList[i].m_Size; + return; + } + } + + m_Grid = m_GridList[0].m_Size; + + wxLogWarning( _( "Grid ID %d not in grid list, falling back to " \ + "grid size( %d, %d )." ), id, m_Grid.x, m_Grid.y ); +} + +void BASE_SCREEN::AddGrid( const GRID_TYPE& grid ) +{ + size_t i; + + for( i = 0; i < m_GridList.GetCount(); i++ ) + { + if( m_GridList[i].m_Size == grid.m_Size ) + { + wxLogDebug( wxT( "Discarding duplicate grid size( %d, %d )." ), + grid.m_Size.x, grid.m_Size.y ); + return; + } + if( m_GridList[i].m_Id == grid.m_Id ) + { + wxLogDebug( wxT( "Changing grid ID %d from size( %d, %d ) to " \ + "size( %d, %d )." ), + grid.m_Id, m_GridList[i].m_Size.x, + m_GridList[i].m_Size.y, grid.m_Size.x, grid.m_Size.y ); + m_GridList[i].m_Size = grid.m_Size; + return; + } + } + + wxLogDebug( wxT( "Adding grid ID %d size( %d, %d ) to grid list." ), + grid.m_Id, grid.m_Size.x, grid.m_Size.y ); + + m_GridList.Add( grid ); +} + +void BASE_SCREEN::AddGrid( const wxSize& size, int id ) +{ + GRID_TYPE grid; + + grid.m_Size = size; + grid.m_Id = id; + AddGrid( grid ); +} + +void BASE_SCREEN::AddGrid( const wxRealPoint& size, int units, int id ) +{ + double x, y; + wxSize new_size; + GRID_TYPE new_grid; + + if( units == MILLIMETRE ) + { + x = size.x / 25.4; + y = size.y / 25.4; + } + else if( units == CENTIMETRE ) + { + x = size.x / 2.54; + y = size.y / 2.54; } else { - m_Grid = size; - m_UserGridIsON = FALSE; + x = size.x; + y = size.y; } -} + new_size = wxSize( (int) round( x * (double) GetInternalUnits() ), + (int) round( y * (double) GetInternalUnits() ) ); + + new_grid.m_Id = id; + new_grid.m_Size = new_size; + AddGrid( new_grid ); +} /*********************************/ wxSize BASE_SCREEN::GetGrid() /*********************************/ { - wxSize grid = m_Grid; - double xx, scale; - - if( m_GridList == NULL ) - return wxSize( 1, 1 ); - - if( m_UserGridIsON || m_Grid.x < 0 || m_Grid.y < 0 ) - { - if( m_UserGridUnit == INCHES ) - scale = 10000; - else - scale = 10000 / 25.4; - xx = m_UserGrid.x * scale; - grid.x = (int) (xx + 0.5); - xx = m_UserGrid.y * scale; - grid.y = (int) (xx + 0.5); - } - return grid; -} - - -/*********************************/ -void BASE_SCREEN::SetNextGrid() -/*********************************/ - -/* Selectionne la prochaine grille - */ -{ - int ii; - - if( m_GridList == NULL ) - return; - - for( ii = 0; ; ii++ ) - { - if( m_GridList[ii].x <= 0 ) - break; - if( (m_Grid.x == m_GridList[ii].x) && (m_Grid.y == m_GridList[ii].y) ) - break; - } - - if( (m_GridList[ii].x > 0) && (ii > 0) ) - m_Grid = m_GridList[ii - 1]; -} - - -/*************************************/ -void BASE_SCREEN::SetPreviousGrid() -/*************************************/ - -/* Selectionne le precedent coeff de grille - */ -{ - int ii; - - if( m_GridList == NULL ) - return; - - for( ii = 0; ; ii++ ) - { - if( m_GridList[ii].x <= 0 ) - break; - if( (m_Grid.x == m_GridList[ii].x) && (m_Grid.y == m_GridList[ii].y) ) - break; - } - - if( (m_GridList[ii].x > 0) && (m_GridList[ii + 1].x > 0) ) - m_Grid = m_GridList[ii + 1]; -} - - -/**********************************/ -void BASE_SCREEN::SetFirstGrid() -/**********************************/ - -/* ajuste le coeff de grille a 1 - */ -{ - if( m_GridList == NULL ) - return; - - int ii = 0; - while( m_GridList[ii].x > 0 ) - ii++; - - m_Grid = m_GridList[ii - 1]; -} - - -/**********************************/ -void BASE_SCREEN::SetLastGrid() -/**********************************/ - -/* ajuste le coeff de grille au max - */ -{ - if( m_GridList == NULL ) - return; - m_Grid = m_GridList[0]; + return m_Grid; } diff --git a/share/drawpanel.cpp b/common/drawpanel.cpp similarity index 95% rename from share/drawpanel.cpp rename to common/drawpanel.cpp index d26e399183..45d0466d91 100644 --- a/share/drawpanel.cpp +++ b/common/drawpanel.cpp @@ -13,14 +13,6 @@ #include "macros.h" #include "id.h" -#ifdef PCBNEW -#include "pcbstruct.h" -#endif - -#ifdef EESCHEMA -#include "program.h" -#endif - // Local defines #define CURSOR_SIZE 12 // Cursor size in pixels @@ -36,18 +28,20 @@ static bool s_IgnoreNextLeftButtonRelease = false; // Events used by WinEDA_DrawPanel BEGIN_EVENT_TABLE( WinEDA_DrawPanel, wxScrolledWindow ) -EVT_LEAVE_WINDOW( WinEDA_DrawPanel::OnMouseLeaving ) -EVT_MOUSE_EVENTS( WinEDA_DrawPanel::OnMouseEvent ) -EVT_CHAR( WinEDA_DrawPanel::OnKeyEvent ) -EVT_CHAR_HOOK( WinEDA_DrawPanel::OnKeyEvent ) -EVT_PAINT( WinEDA_DrawPanel::OnPaint ) -EVT_SIZE( WinEDA_DrawPanel::OnSize ) -EVT_ERASE_BACKGROUND( WinEDA_DrawPanel::OnEraseBackground ) -EVT_SCROLLWIN( WinEDA_DrawPanel::OnScroll ) -EVT_ACTIVATE( WinEDA_DrawPanel::OnActivate ) + EVT_LEAVE_WINDOW( WinEDA_DrawPanel::OnMouseLeaving ) + EVT_MOUSE_EVENTS( WinEDA_DrawPanel::OnMouseEvent ) + EVT_CHAR( WinEDA_DrawPanel::OnKeyEvent ) + EVT_CHAR_HOOK( WinEDA_DrawPanel::OnKeyEvent ) + EVT_PAINT( WinEDA_DrawPanel::OnPaint ) + EVT_SIZE( WinEDA_DrawPanel::OnSize ) + EVT_ERASE_BACKGROUND( WinEDA_DrawPanel::OnEraseBackground ) + EVT_SCROLLWIN( WinEDA_DrawPanel::OnScroll ) + EVT_ACTIVATE( WinEDA_DrawPanel::OnActivate ) -EVT_MENU_RANGE( ID_POPUP_ZOOM_START_RANGE, ID_POPUP_ZOOM_END_RANGE, - WinEDA_DrawPanel::Process_Popup_Zoom ) + EVT_MENU_RANGE( ID_POPUP_ZOOM_START_RANGE, ID_POPUP_ZOOM_END_RANGE, + WinEDA_DrawPanel::Process_Popup_Zoom ) + EVT_MENU_RANGE( ID_POPUP_GRID_LEVEL_1000, ID_POPUP_GRID_USER, + WinEDA_DrawPanel::OnPopupGridSelect ) END_EVENT_TABLE() /************************************************************************/ @@ -80,8 +74,9 @@ WinEDA_DrawPanel::WinEDA_DrawPanel( WinEDA_DrawFrame* parent, int id, ManageCurseur = NULL; ForceCloseManageCurseur = NULL; - if( m_Parent->m_Parent->m_EDA_Config ) - m_AutoPAN_Enable = m_Parent->m_Parent->m_EDA_Config->Read( wxT( "AutoPAN" ), TRUE ); + if( wxGetApp().m_EDA_Config ) + m_AutoPAN_Enable = wxGetApp().m_EDA_Config->Read( wxT( "AutoPAN" ), + TRUE ); m_AutoPAN_Request = FALSE; m_Block_Enable = FALSE; @@ -666,7 +661,7 @@ void WinEDA_DrawPanel::ReDraw( wxDC* DC, bool erasebg ) if( Screen == NULL ) return; - if( (g_DrawBgColor != WHITE) && (g_DrawBgColor != BLACK) ) + if( ( g_DrawBgColor != WHITE ) && ( g_DrawBgColor != BLACK ) ) g_DrawBgColor = BLACK; if( g_DrawBgColor == WHITE ) @@ -773,14 +768,8 @@ void WinEDA_DrawPanel::DrawBackGround( wxDC* DC ) size.x *= zoom; size.y *= zoom; - pasx = screen->m_UserGrid.x * m_Parent->m_InternalUnits; - pasy = screen->m_UserGrid.y * m_Parent->m_InternalUnits; - - if( screen->m_UserGridUnit != INCHES ) - { - pasx /= 25.4; - pasy /= 25.4; - } + pasx = screen->m_Grid.x * m_Parent->m_InternalUnits; + pasy = screen->m_Grid.y * m_Parent->m_InternalUnits; if( drawgrid ) { @@ -789,15 +778,12 @@ void WinEDA_DrawPanel::DrawBackGround( wxDC* DC ) GRSetColorPen( DC, color ); for( ii = 0; ; ii++ ) { - xg = screen->m_UserGridIsON ? (int) ( (ii * pasx) + 0.5 ) - : ii * pas_grille_affichee.x; - + xg = ii * pas_grille_affichee.x; int xpos = org.x + xg; for( jj = 0; ; jj++ ) { - yg = screen->m_UserGridIsON ? (int) ( (jj * pasy) + 0.5 ) - : jj * pas_grille_affichee.y; + yg = jj * pas_grille_affichee.y; GRPutPixel( &m_ClipBox, DC, xpos, org.y + yg, color ); if( yg > size.y ) break; @@ -848,14 +834,18 @@ void WinEDA_DrawPanel::m_Draw_Auxiliary_Axis( wxDC* DC, int drawmode ) /* Draw the Y axis */ GRDashedLine( &m_ClipBox, DC, - m_Parent->m_Auxiliary_Axis_Position.x, -screen->ReturnPageSize().y, - m_Parent->m_Auxiliary_Axis_Position.x, screen->ReturnPageSize().y, + m_Parent->m_Auxiliary_Axis_Position.x, + -screen->ReturnPageSize().y, + m_Parent->m_Auxiliary_Axis_Position.x, + screen->ReturnPageSize().y, 0, Color ); /* Draw the X axis */ GRDashedLine( &m_ClipBox, DC, - -screen->ReturnPageSize().x, m_Parent->m_Auxiliary_Axis_Position.y, - screen->ReturnPageSize().x, m_Parent->m_Auxiliary_Axis_Position.y, + -screen->ReturnPageSize().x, + m_Parent->m_Auxiliary_Axis_Position.y, + screen->ReturnPageSize().x, + m_Parent->m_Auxiliary_Axis_Position.y, 0, Color ); } diff --git a/cvpcb/CMakeLists.txt b/cvpcb/CMakeLists.txt index f406981a98..0fe8e6160c 100644 --- a/cvpcb/CMakeLists.txt +++ b/cvpcb/CMakeLists.txt @@ -52,7 +52,6 @@ set(CVPCB_EXTRA_SRCS ../pcbnew/tracemod.cpp ../share/drawframe.cpp - ../share/drawpanel.cpp ../share/zoom.cpp) if(WIN32) diff --git a/cvpcb/displayframe.cpp b/cvpcb/displayframe.cpp index 4d6d7c0952..b08eea5c22 100644 --- a/cvpcb/displayframe.cpp +++ b/cvpcb/displayframe.cpp @@ -12,20 +12,19 @@ #include "protos.h" -#define BITMAP wxBitmap /*****************************************************************/ /* Construction de la table des evenements pour WinEDA_DrawFrame */ /*****************************************************************/ BEGIN_EVENT_TABLE( WinEDA_DisplayFrame, wxFrame ) - -COMMON_EVENTS_DRAWFRAME EVT_CLOSE( WinEDA_DisplayFrame::OnCloseWindow ) -EVT_SIZE( WinEDA_DrawFrame::OnSize ) -EVT_TOOL_RANGE( ID_ZOOM_IN_BUTT, ID_ZOOM_PAGE_BUTT, - WinEDA_DisplayFrame::Process_Zoom ) -EVT_TOOL( ID_OPTIONS_SETUP, WinEDA_DisplayFrame::InstallOptionsDisplay ) -EVT_TOOL( ID_CVPCB_SHOW3D_FRAME, WinEDA_BasePcbFrame::Show3D_Frame ) + COMMON_EVENTS_DRAWFRAME + EVT_CLOSE( WinEDA_DisplayFrame::OnCloseWindow ) + EVT_SIZE( WinEDA_DrawFrame::OnSize ) + EVT_TOOL_RANGE( ID_ZOOM_IN_BUTT, ID_ZOOM_PAGE_BUTT, + WinEDA_DisplayFrame::Process_Zoom ) + EVT_TOOL( ID_OPTIONS_SETUP, WinEDA_DisplayFrame::InstallOptionsDisplay ) + EVT_TOOL( ID_CVPCB_SHOW3D_FRAME, WinEDA_BasePcbFrame::Show3D_Frame ) END_EVENT_TABLE() @@ -35,13 +34,15 @@ END_EVENT_TABLE() WinEDA_DisplayFrame::WinEDA_DisplayFrame( wxWindow* father, WinEDA_App* parent, const wxString& title, - const wxPoint& pos, const wxSize& size, long style ) : - WinEDA_BasePcbFrame( father, parent, CVPCB_DISPLAY_FRAME, title, pos, size, style ) + const wxPoint& pos, + const wxSize& size, long style ) : + WinEDA_BasePcbFrame( father, parent, CVPCB_DISPLAY_FRAME, title, pos, + size, style ) { m_FrameName = wxT( "CmpFrame" ); - m_Draw_Axis = TRUE; // TRUE if we want the axis - m_Draw_Grid = TRUE; // TRUE if we want the grid - m_Draw_Sheet_Ref = FALSE; // TRUE if we want the sheet references + m_Draw_Axis = TRUE; // TRUE if we want the axis + m_Draw_Grid = TRUE; // TRUE if we want the grid + m_Draw_Sheet_Ref = FALSE; // TRUE if we want the sheet references // Give an icon #ifdef __WINDOWS__ @@ -53,7 +54,7 @@ WinEDA_DisplayFrame::WinEDA_DisplayFrame( wxWindow* father, WinEDA_App* parent, m_Pcb = new BOARD( NULL, this ); - SetBaseScreen( new PCB_SCREEN( CVPCB_DISPLAY_FRAME ) ); + SetBaseScreen( new PCB_SCREEN() ); GetSettings(); SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y ); @@ -114,26 +115,31 @@ void WinEDA_DisplayFrame::ReCreateHToolbar() SetToolBar( m_HToolBar ); m_HToolBar->AddTool( ID_OPTIONS_SETUP, wxEmptyString, - BITMAP( display_options_xpm ), - _( "Display Options" ) ); + wxBitmap( display_options_xpm ), + _( "Display Options" ) ); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( ID_ZOOM_IN_BUTT, wxEmptyString, BITMAP( zoom_in_xpm ), - _( "zoom + (F1)" ) ); + m_HToolBar->AddTool( ID_ZOOM_IN_BUTT, wxEmptyString, + wxBitmap( zoom_in_xpm ), + _( "zoom + (F1)" ) ); - m_HToolBar->AddTool( ID_ZOOM_OUT_BUTT, wxEmptyString, BITMAP( zoom_out_xpm ), - _( "zoom - (F2)" ) ); + m_HToolBar->AddTool( ID_ZOOM_OUT_BUTT, wxEmptyString, + wxBitmap( zoom_out_xpm ), + _( "zoom - (F2)" ) ); - m_HToolBar->AddTool( ID_ZOOM_REDRAW_BUTT, wxEmptyString, BITMAP( zoom_redraw_xpm ), - _( "redraw (F3)" ) ); + m_HToolBar->AddTool( ID_ZOOM_REDRAW_BUTT, wxEmptyString, + wxBitmap( zoom_redraw_xpm ), + _( "redraw (F3)" ) ); - m_HToolBar->AddTool( ID_ZOOM_PAGE_BUTT, wxEmptyString, BITMAP( zoom_auto_xpm ), - _( "1:1 zoom" ) ); + m_HToolBar->AddTool( ID_ZOOM_PAGE_BUTT, wxEmptyString, + wxBitmap( zoom_auto_xpm ), + _( "1:1 zoom" ) ); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( ID_CVPCB_SHOW3D_FRAME, wxEmptyString, BITMAP( show_3d_xpm ), - _( "1:1 zoom" ) ); + m_HToolBar->AddTool( ID_CVPCB_SHOW3D_FRAME, wxEmptyString, + wxBitmap( show_3d_xpm ), + _( "1:1 zoom" ) ); // after adding the buttons to the toolbar, must call Realize() to reflect // the changes @@ -260,8 +266,8 @@ void WinEDA_DisplayFrame::GeneralControle( wxDC* DC, wxPoint Mouse ) RedrawActiveWindow( DC, TRUE ); } - if( (oldpos.x != GetScreen()->m_Curseur.x) - || (oldpos.y != GetScreen()->m_Curseur.y) ) + if( ( oldpos.x != GetScreen()->m_Curseur.x ) + || ( oldpos.y != GetScreen()->m_Curseur.y ) ) { if( flagcurseur != 2 ) { diff --git a/eeschema/CMakeLists.txt b/eeschema/CMakeLists.txt index de1e78c7f9..b45c90541d 100644 --- a/eeschema/CMakeLists.txt +++ b/eeschema/CMakeLists.txt @@ -101,7 +101,6 @@ set(EESCHEMA_SRCS set(EESCHEMA_EXTRA_SRCS ../share/drawframe.cpp - ../share/drawpanel.cpp ../share/setpage.cpp ../share/svg_print.cpp ../share/wxprint.cpp diff --git a/eeschema/class_drawsheet.cpp b/eeschema/class_drawsheet.cpp index b19e2a02af..fb7b0d7c88 100644 --- a/eeschema/class_drawsheet.cpp +++ b/eeschema/class_drawsheet.cpp @@ -23,7 +23,6 @@ #endif #include "fctsys.h" -#include "gr_basic.h" #include "common.h" #include "program.h" @@ -104,7 +103,8 @@ bool DrawSheetStruct::Save( FILE* f ) const /* Generation de la liste des 2 textes (sheetname et filename) */ if( !m_SheetName.IsEmpty() ) { - if( fprintf( f, "F0 \"%s\" %d\n", CONV_TO_UTF8( m_SheetName ), m_SheetNameSize ) == EOF ) + if( fprintf( f, "F0 \"%s\" %d\n", CONV_TO_UTF8( m_SheetName ), + m_SheetNameSize ) == EOF ) { Success = false; return Success; } @@ -112,7 +112,8 @@ bool DrawSheetStruct::Save( FILE* f ) const if( !m_FileName.IsEmpty() ) { - if( fprintf( f, "F1 \"%s\" %d\n", CONV_TO_UTF8( m_FileName ), m_FileNameSize ) == EOF ) + if( fprintf( f, "F1 \"%s\" %d\n", CONV_TO_UTF8( m_FileName ), + m_FileNameSize ) == EOF ) { Success = false; return Success; } @@ -285,7 +286,8 @@ void DrawSheetStruct::CleanupSheet( WinEDA_SchematicFrame* aFrame, bool aRedraw /**************************************************************************************/ -void DrawSheetStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, +void DrawSheetStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, + const wxPoint& offset, int DrawMode, int Color ) /**************************************************************************************/ /* Draw the hierarchical sheet shape */ @@ -335,7 +337,7 @@ void DrawSheetStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& of SheetLabelStruct = m_Label; while( SheetLabelStruct != NULL ) { - if( !(SheetLabelStruct->m_Flags & IS_MOVED) ) + if( !( SheetLabelStruct->m_Flags & IS_MOVED ) ) SheetLabelStruct->Draw( panel, DC, offset, DrawMode, Color ); SheetLabelStruct = SheetLabelStruct->Next(); } @@ -426,7 +428,8 @@ bool DrawSheetStruct::SearchHierarchy( wxString filename, SCH_SCREEN** screen ) /*******************************************************************************/ -bool DrawSheetStruct::LocatePathOfScreen( SCH_SCREEN* screen, DrawSheetPath* list ) +bool DrawSheetStruct::LocatePathOfScreen( SCH_SCREEN* screen, + DrawSheetPath* list ) /*******************************************************************************/ { //search the existing hierarchy for an instance of screen "FileName". @@ -476,7 +479,7 @@ bool DrawSheetStruct::Load( WinEDA_SchematicFrame* frame ) } else { - m_AssociatedScreen = new SCH_SCREEN( SCHEMATIC_FRAME ); + m_AssociatedScreen = new SCH_SCREEN(); m_AssociatedScreen->m_RefCount++; success = frame->LoadOneEEFile( m_AssociatedScreen, m_FileName ); if( success ) @@ -544,7 +547,8 @@ void DrawSheetStruct::SetFileName( const wxString& aFilename ) * - if new filename is already used (a complex hierarchy) : reference the sheet. */ -bool DrawSheetStruct::ChangeFileName( WinEDA_SchematicFrame* aFrame, const wxString& aFileName ) +bool DrawSheetStruct::ChangeFileName( WinEDA_SchematicFrame* aFrame, + const wxString& aFileName ) { if( (GetFileName() == aFileName) && m_AssociatedScreen ) return true; @@ -629,7 +633,7 @@ bool DrawSheetStruct::ChangeFileName( WinEDA_SchematicFrame* aFrame, const wxStr //just make a new screen if needed. if( !m_AssociatedScreen ) { - m_AssociatedScreen = new SCH_SCREEN( SCHEMATIC_FRAME ); + m_AssociatedScreen = new SCH_SCREEN(); m_AssociatedScreen->m_RefCount++; //be careful with these } m_AssociatedScreen->m_FileName = aFileName; diff --git a/eeschema/class_screen.cpp b/eeschema/class_screen.cpp index 4c7c4c74c9..0b2a13f022 100644 --- a/eeschema/class_screen.cpp +++ b/eeschema/class_screen.cpp @@ -1,6 +1,5 @@ #include "fctsys.h" -#include "gr_basic.h" #include "common.h" #include "program.h" @@ -8,6 +7,7 @@ #include "general.h" #include "protos.h" +#include "id.h" /******************************************************************/ @@ -47,7 +47,8 @@ void SCH_ITEM::Place( WinEDA_SchematicFrame* frame, wxDC* DC ) /* place the struct in EEDrawList. * if it is a new item, it it also put in undo list - * for an "old" item, saving it in undo list must be done before editiing, and not here! + * for an "old" item, saving it in undo list must be done before editiing, + * and not here! */ { if( m_Flags & IS_NEW ) @@ -80,17 +81,37 @@ void SCH_ITEM::Place( WinEDA_SchematicFrame* frame, wxDC* DC ) /***********************************************************************/ static int table_zoom[] = { 1, 2, 4, 8, 16, 32, 64, 128, 0 }; /* Valeurs standards du zoom */ +/* Default grid sizes for the schematic editor. */ +static GRID_TYPE SchematicGridList[] = { + { ID_POPUP_GRID_LEVEL_50, wxSize( 50, 50 ) }, + { ID_POPUP_GRID_LEVEL_25, wxSize( 25, 25 ) }, + { ID_POPUP_GRID_LEVEL_10, wxSize( 10, 10 ) }, + { ID_POPUP_GRID_LEVEL_5, wxSize( 5, 5 ) }, + { ID_POPUP_GRID_LEVEL_2, wxSize( 2, 2 ) }, + { ID_POPUP_GRID_LEVEL_1, wxSize( 1, 1 ) } +}; + +#define SCHEMATIC_GRID_LIST_CNT ( sizeof( SchematicGridList ) / \ + sizeof( GRID_TYPE ) ) + + /* Constructeur de SCREEN */ -SCH_SCREEN::SCH_SCREEN( int screentype, KICAD_T aType ) : - BASE_SCREEN( screentype, aType ) +SCH_SCREEN::SCH_SCREEN( KICAD_T type ) : BASE_SCREEN( type ) { + size_t i; + EEDrawList = NULL; /* Schematic items list */ m_Zoom = 32; - m_Grid = wxSize( 50, 50 ); /* pas de la grille */ SetZoomList( table_zoom ); - SetGridList( g_GridList ); + + for( i = 0; i < SCHEMATIC_GRID_LIST_CNT; i++ ) + AddGrid( SchematicGridList[i] ); + + SetGrid( wxSize( 50, 50 ) ); /* pas de la grille */ m_UndoRedoCountMax = 10; - m_RefCount = 0; + m_RefCount = 0; + m_Center = false; + InitDatas(); } @@ -102,7 +123,6 @@ SCH_SCREEN::~SCH_SCREEN() FreeDrawList(); } - /***********************************/ void SCH_SCREEN::FreeDrawList() /***********************************/ @@ -236,8 +256,7 @@ void EDA_ScreenList::AddScreenToList( SCH_SCREEN* testscreen ) m_List.Add( testscreen ); #ifdef DEBUG printf( "EDA_ScreenList::AddScreenToList adding %s\n", - (const char*) testscreen->m_FileName.mb_str( - ) ); + (const char*) testscreen->m_FileName.mb_str() ); #endif } @@ -316,7 +335,8 @@ void EDA_SheetList::BuildSheetList( DrawSheetStruct* sheet ) m_count = count; m_index = 0; if( m_List ) - free( m_List );m_List = NULL; + free( m_List ); + m_List = NULL; count *= sizeof(DrawSheetPath); m_List = (DrawSheetPath*) MyZMalloc( count ); memset( (void*) m_List, 0, count ); @@ -340,4 +360,3 @@ void EDA_SheetList::BuildSheetList( DrawSheetStruct* sheet ) } m_currList.Pop(); } - diff --git a/eeschema/files-io.cpp b/eeschema/files-io.cpp index 98c3a4b2a2..143e941f6c 100644 --- a/eeschema/files-io.cpp +++ b/eeschema/files-io.cpp @@ -3,7 +3,6 @@ /****************************/ #include "fctsys.h" -#include "gr_basic.h" #include "common.h" #include "program.h" @@ -47,7 +46,8 @@ void WinEDA_SchematicFrame::Save_File( wxCommandEvent& event ) /************************************************************************************/ -int WinEDA_SchematicFrame::LoadOneEEProject( const wxString& FileName, bool IsNew ) +int WinEDA_SchematicFrame::LoadOneEEProject( const wxString& FileName, + bool IsNew ) /************************************************************************************/ { /* @@ -209,7 +209,7 @@ SCH_SCREEN* WinEDA_SchematicFrame::CreateNewScreen( { SCH_SCREEN* NewScreen; - NewScreen = new SCH_SCREEN( SCHEMATIC_FRAME ); + NewScreen = new SCH_SCREEN(); NewScreen->SetRefreshReq(); if( OldScreen ) diff --git a/eeschema/general.h b/eeschema/general.h index 91dd6e8a03..f8052ab5bc 100644 --- a/eeschema/general.h +++ b/eeschema/general.h @@ -104,17 +104,6 @@ typedef enum { FILE_SAVE_NEW } FileSaveType; -eda_global wxSize g_GridList[] -#ifdef MAIN -= { - wxSize( 50, 50 ), wxSize( 20, 20 ), wxSize( 10, 10 ), - wxSize( -1, -1 ), wxSize( 0, 0 ) -} - - -#endif -; - /* variables generales */ eda_global wxArrayString g_LibName_List; // library list (short filenames) to load diff --git a/eeschema/plot.cpp b/eeschema/plot.cpp index 963df88747..2da6d7ed2d 100644 --- a/eeschema/plot.cpp +++ b/eeschema/plot.cpp @@ -282,7 +282,7 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem ) LibDrawPin* Pin = (LibDrawPin*) DEntry; if( Pin->m_Attributs & PINNOTDRAW ) { - if( ActiveScreen->m_Type == SCHEMATIC_FRAME ) +// if( ActiveScreen->m_Type == SCHEMATIC_FRAME ) break; } diff --git a/eeschema/schframe.cpp b/eeschema/schframe.cpp index c22a5e5e1c..b42314cf1d 100644 --- a/eeschema/schframe.cpp +++ b/eeschema/schframe.cpp @@ -270,7 +270,7 @@ void WinEDA_SchematicFrame::CreateScreens() } if( g_RootSheet->m_AssociatedScreen == NULL ) { - g_RootSheet->m_AssociatedScreen = new SCH_SCREEN( SCHEMATIC_FRAME ); + g_RootSheet->m_AssociatedScreen = new SCH_SCREEN(); g_RootSheet->m_AssociatedScreen->m_RefCount++; } g_RootSheet->m_AssociatedScreen->m_FileName = g_DefaultSchematicFileName; @@ -279,7 +279,7 @@ void WinEDA_SchematicFrame::CreateScreens() m_CurrentSheet->Push( g_RootSheet ); if( g_ScreenLib == NULL ) - g_ScreenLib = new SCH_SCREEN( LIBEDITOR_FRAME ); + g_ScreenLib = new SCH_SCREEN(); g_ScreenLib->SetZoom( 4 ); g_ScreenLib->m_UndoRedoCountMax = 10; } diff --git a/eeschema/viewlib_frame.cpp b/eeschema/viewlib_frame.cpp index 37dcffcc82..e3f0ee25ef 100644 --- a/eeschema/viewlib_frame.cpp +++ b/eeschema/viewlib_frame.cpp @@ -23,25 +23,25 @@ /* class WinEDA_ViewlibFrame */ /*****************************/ BEGIN_EVENT_TABLE( WinEDA_ViewlibFrame, wxFrame ) -COMMON_EVENTS_DRAWFRAME EVT_CLOSE( WinEDA_ViewlibFrame::OnCloseWindow ) -EVT_SIZE( WinEDA_ViewlibFrame::OnSize ) -EVT_ACTIVATE( WinEDA_DrawFrame::OnActivate ) + COMMON_EVENTS_DRAWFRAME + EVT_CLOSE( WinEDA_ViewlibFrame::OnCloseWindow ) + EVT_SIZE( WinEDA_ViewlibFrame::OnSize ) + EVT_ACTIVATE( WinEDA_DrawFrame::OnActivate ) -EVT_TOOL_RANGE( ID_LIBVIEW_START_H_TOOL, ID_LIBVIEW_END_H_TOOL, - WinEDA_ViewlibFrame::Process_Special_Functions ) + EVT_TOOL_RANGE( ID_LIBVIEW_START_H_TOOL, ID_LIBVIEW_END_H_TOOL, + WinEDA_ViewlibFrame::Process_Special_Functions ) -EVT_TOOL_RANGE( ID_ZOOM_IN_BUTT, ID_ZOOM_PAGE_BUTT, - WinEDA_DrawFrame::Process_Zoom ) + EVT_TOOL_RANGE( ID_ZOOM_IN_BUTT, ID_ZOOM_PAGE_BUTT, + WinEDA_DrawFrame::Process_Zoom ) -EVT_TOOL( ID_LIBVIEW_CMP_EXPORT_TO_SCHEMATIC, - WinEDA_ViewlibFrame::ExportToSchematicLibraryPart ) + EVT_TOOL( ID_LIBVIEW_CMP_EXPORT_TO_SCHEMATIC, + WinEDA_ViewlibFrame::ExportToSchematicLibraryPart ) -EVT_KICAD_CHOICEBOX( ID_LIBVIEW_SELECT_PART_NUMBER, - WinEDA_ViewlibFrame::Process_Special_Functions ) - -EVT_LISTBOX( ID_LIBVIEW_LIB_LIST, WinEDA_ViewlibFrame::ClickOnLibList ) -EVT_LISTBOX( ID_LIBVIEW_CMP_LIST, WinEDA_ViewlibFrame::ClickOnCmpList ) + EVT_KICAD_CHOICEBOX( ID_LIBVIEW_SELECT_PART_NUMBER, + WinEDA_ViewlibFrame::Process_Special_Functions ) + EVT_LISTBOX( ID_LIBVIEW_LIB_LIST, WinEDA_ViewlibFrame::ClickOnLibList ) + EVT_LISTBOX( ID_LIBVIEW_CMP_LIST, WinEDA_ViewlibFrame::ClickOnCmpList ) END_EVENT_TABLE() @@ -49,7 +49,8 @@ END_EVENT_TABLE() /* Constructeur */ /****************/ WinEDA_ViewlibFrame::WinEDA_ViewlibFrame( wxWindow* father, WinEDA_App* parent, - LibraryStruct* Library, wxSemaphore* semaphore ) : + LibraryStruct* Library, + wxSemaphore* semaphore ) : WinEDA_DrawFrame( father, VIEWER_FRAME, parent, _( "Library browser" ), wxDefaultPosition, wxDefaultSize ) { @@ -67,7 +68,7 @@ WinEDA_ViewlibFrame::WinEDA_ViewlibFrame( wxWindow* father, WinEDA_App* parent, if( m_Semaphore ) SetWindowStyle( GetWindowStyle() | wxSTAY_ON_TOP ); - SetBaseScreen( new SCH_SCREEN( VIEWER_FRAME ) ); + SetBaseScreen( new SCH_SCREEN() ); GetScreen()->SetZoom( 16 ); if( Library == NULL ) diff --git a/gerbview/CMakeLists.txt b/gerbview/CMakeLists.txt index d0278cc88a..118513f201 100644 --- a/gerbview/CMakeLists.txt +++ b/gerbview/CMakeLists.txt @@ -57,7 +57,6 @@ set(GERBVIEW_EXTRA_SRCS ../pcbnew/sel_layer.cpp ../share/drawframe.cpp - ../share/drawpanel.cpp ../share/setpage.cpp ../share/wxprint.cpp ../share/zoom.cpp) diff --git a/gerbview/gerbview.cpp b/gerbview/gerbview.cpp index 1aea96a9d3..fa969546ae 100644 --- a/gerbview/gerbview.cpp +++ b/gerbview/gerbview.cpp @@ -29,7 +29,9 @@ bool WinEDA_App::OnInit() InitEDA_Appl( wxT( "gerbview" ) ); - ScreenPcb = new PCB_SCREEN( PCB_FRAME ); + ScreenPcb = new PCB_SCREEN(); + ScreenPcb->m_CurrentSheetDesc = &g_Sheet_GERBER; + ActiveScreen = ScreenPcb; GetSettings(); diff --git a/include/appl_wxstruct.h b/include/appl_wxstruct.h index 5743bbf04a..29cae68bf6 100644 --- a/include/appl_wxstruct.h +++ b/include/appl_wxstruct.h @@ -33,29 +33,29 @@ public: WinEDA_ViewlibFrame* m_ViewlibFrame; // Visualisation des composants WinEDA_CvpcbFrame* m_CvpcbFrame; - wxPoint m_HelpPos; - wxSize m_HelpSize; - wxHtmlHelpController* m_HtmlCtrl; - wxConfig* m_EDA_Config; // Config courante (tailles et positions fenetres ...*/ - wxConfig* m_EDA_CommonConfig; // common setup (language ...) */ - wxString m_HelpFileName; - wxString m_CurrentOptionFile; // dernier fichier .cnf utilisé - wxString m_CurrentOptionFileDateAndTime; + wxPoint m_HelpPos; + wxSize m_HelpSize; + wxHtmlHelpController* m_HtmlCtrl; + wxConfig* m_EDA_Config; // Config courante (tailles et positions fenetres ...*/ + wxConfig* m_EDA_CommonConfig; // common setup (language ...) */ + wxString m_HelpFileName; + wxString m_CurrentOptionFile; // dernier fichier .cnf utilisé + wxString m_CurrentOptionFileDateAndTime; - wxString m_BinDir; /* Chemin ou reside l'executable - * (utilisé si KICAD non défini)*/ - wxArrayString m_LastProject; /* liste des derniers projets chargés */ - unsigned int m_LastProjectMaxCount; /* Max histhory file length */ - wxString m_KicadEnv;/* Chemin de kicad défini dans la variable - * d'environnement KICAD, - * typiquement /usr/local/kicad ou c:\kicad */ - bool m_Env_Defined; // TRUE si variable d'environnement KICAD definie + wxString m_BinDir; /* Chemin ou reside l'executable + * (utilisé si KICAD non défini)*/ + wxArrayString m_LastProject; /* liste des derniers projets chargés */ + unsigned int m_LastProjectMaxCount; /* Max histhory file length */ + wxString m_KicadEnv; /* Chemin de kicad défini dans la variable + * d'environnement KICAD, + * typiquement /usr/local/kicad ou c:\kicad */ + bool m_Env_Defined; // TRUE si variable d'environnement KICAD definie - wxLocale* m_Locale; // Gestion de la localisation - int m_LanguageId; // indicateur de choix du langage ( 0 = defaut) - wxMenu* m_Language_Menu; // List menu for languages - wxString m_PdfBrowser; // Name of the selected browser, for browsing pdf datasheets - bool m_PdfBrowserIsDefault; // True if the pdf browser is the default (m_PdfBrowser not used) + wxLocale* m_Locale; // Gestion de la localisation + int m_LanguageId; // indicateur de choix du langage ( 0 = defaut) + wxMenu* m_Language_Menu; // List menu for languages + wxString m_PdfBrowser; // Name of the selected browser, for browsing pdf datasheets + bool m_PdfBrowserIsDefault; // True if the pdf browser is the default (m_PdfBrowser not used) public: WinEDA_App(); @@ -75,7 +75,8 @@ public: void SaveSettings(); void SetLastProject( const wxString& FullFileName ); void WriteProjectConfig( const wxString& local_config_filename, - const wxString& GroupName, PARAM_CFG_BASE** List ); + const wxString& GroupName, + PARAM_CFG_BASE** List ); bool ReadProjectConfig( const wxString& local_config_filename, const wxString& GroupName, PARAM_CFG_BASE** List, @@ -85,5 +86,11 @@ public: void WritePdfBrowserInfos(); }; +/* + * Use wxGetApp() to access WinEDA_App. It is not necessary to keep copies + * of the application pointer all over the place or worse yet in a global + * variable. + */ +DECLARE_APP(WinEDA_App); #endif /* APPL_WXSTRUCT_H */ diff --git a/include/class_screen.h b/include/class_screen.h index 581172bbbd..1973a9792d 100644 --- a/include/class_screen.h +++ b/include/class_screen.h @@ -21,7 +21,7 @@ class SCH_SCREEN : public BASE_SCREEN public: int m_RefCount; /*how many sheets reference this screen? * delete when it goes to zero. */ - SCH_SCREEN( int idtype, KICAD_T aType = SCREEN_STRUCT_TYPE ); + SCH_SCREEN( KICAD_T aType = SCREEN_STRUCT_TYPE ); ~SCH_SCREEN(); /** @@ -44,10 +44,9 @@ public: return wxT( "SCH_SCREEN" ); } - void FreeDrawList(); // Free EESchema drawing list (does not delete the sub hierarchies) - void Place( WinEDA_SchematicFrame* frame, wxDC* DC ) { }; + void Place( WinEDA_SchematicFrame* frame, wxDC* DC ) { }; void RemoveFromDrawList( SCH_ITEM* DrawStruct ); /* remove DrawStruct from EEDrawList. */ bool CheckIfOnDrawList( SCH_ITEM* st ); diff --git a/include/drawpanel_wxstruct.h b/include/drawpanel_wxstruct.h index c3a802eade..ca3323f446 100644 --- a/include/drawpanel_wxstruct.h +++ b/include/drawpanel_wxstruct.h @@ -19,6 +19,20 @@ class SCH_ITEM; +/* Simple class for handling grid arrays. */ +class GRID_TYPE +{ +public: + int m_Id; + wxSize m_Size; +}; + + +/* Declare array of wxSize for grid list implementation. */ +#include +WX_DECLARE_OBJARRAY( GRID_TYPE, GridArray ); + + /****************************************************/ /* classe representant un ecran graphique de dessin */ /****************************************************/ @@ -98,6 +112,7 @@ public: void AddMenuZoom( wxMenu* MasterMenu ); bool OnRightClick( wxMouseEvent& event ); void Process_Popup_Zoom( wxCommandEvent& event ); + void OnPopupGridSelect( wxCommandEvent& event ); void Process_Special_Functions( wxCommandEvent& event ); wxPoint CursorRealPosition( const wxPoint& ScreenPos ); wxPoint CursorScreenPosition(); @@ -206,7 +221,6 @@ public: class BASE_SCREEN : public EDA_BaseStruct { public: - int m_Type; /* indicateur: type d'ecran */ wxPoint m_DrawOrg; /* offsets pour tracer le circuit sur l'ecran */ wxPoint m_Curseur; /* Screen cursor coordinate (on grid) in user units. */ wxPoint m_MousePosition; /* Mouse cursor coordinate (off grid) in user units. */ @@ -235,8 +249,9 @@ public: /* Page description */ Ki_PageDescr* m_CurrentSheetDesc; - int m_ScreenNumber, m_NumberOfScreen;/* gestion hierarchie: numero de sousfeuille - * et nombre de feuilles. Root: SheetNumber = 1 */ + int m_ScreenNumber; + int m_NumberOfScreen; + wxString m_FileName; wxString m_Title; /* titre de la feuille */ wxString m_Date; /* date de mise a jour */ @@ -256,17 +271,16 @@ private: /* Valeurs du pas de grille et du zoom */ public: - wxSize m_Grid; /* pas de la grille (peut differer en X et Y) */ - wxSize* m_GridList; /* Liste des valeurs standard de grille */ - wxRealPoint m_UserGrid; /* pas de la grille utilisateur */ - int m_UserGridUnit; /* unit�grille utilisateur (0 = inch, 1 = mm */ - int m_Diviseur_Grille; - bool m_UserGridIsON; - int* m_ZoomList; /* Liste des coefficients standard de zoom */ - int m_Zoom; /* coeff de ZOOM */ + wxSize m_Grid; /* Current grid. */ + GridArray m_GridList; + bool m_UserGridIsON; + + int m_Diviseur_Grille; + int* m_ZoomList; /* Liste des coefficients standard de zoom */ + int m_Zoom; /* coeff de ZOOM */ public: - BASE_SCREEN( int idscreen, KICAD_T aType = SCREEN_STRUCT_TYPE ); + BASE_SCREEN( KICAD_T aType = SCREEN_STRUCT_TYPE ); ~BASE_SCREEN(); BASE_SCREEN* Next() const { return (BASE_SCREEN*) Pnext; } @@ -281,9 +295,10 @@ public: void SetCurItem( EDA_BaseStruct* current ) { m_CurrentItem = current; } EDA_BaseStruct* GetCurItem() const { return m_CurrentItem; } - void InitDatas(); /* Inits completes des variables */ - wxSize ReturnPageSize(); - int GetInternalUnits(); + void InitDatas(); /* Inits completes des variables */ + + wxSize ReturnPageSize( void ); + virtual int GetInternalUnits( void ); wxPoint CursorRealPosition( const wxPoint& ScreenPos ); @@ -334,11 +349,11 @@ public: //-------------------------------------------------------------- wxSize GetGrid(); /* retourne la grille */ void SetGrid( const wxSize& size ); - void SetGridList( wxSize* sizelist ); /* init liste des grilles (NULL terminated) */ - void SetNextGrid(); /* ajuste le prochain coeff de grille */ - void SetPreviousGrid(); /* ajuste le precedent coeff de grille */ - void SetFirstGrid(); /* ajuste la grille au mini*/ - void SetLastGrid(); /* ajuste la grille au max */ + void SetGrid( int ); + void SetGridList( GridArray& sizelist ); + void AddGrid( const GRID_TYPE& grid ); + void AddGrid( const wxSize& size, int id ); + void AddGrid( const wxRealPoint& size, int units, int id ); /** diff --git a/include/id.h b/include/id.h index cfc269fcd5..5f6e68ea13 100644 --- a/include/id.h +++ b/include/id.h @@ -217,7 +217,7 @@ enum main_id { ID_POPUP_ENTER_MENU, - ID_POPUP_ZOOM_START_RANGE, // first number + ID_POPUP_ZOOM_START_RANGE, // first zoom id ID_POPUP_CANCEL, ID_POPUP_ZOOM_IN, ID_POPUP_ZOOM_OUT, @@ -237,6 +237,10 @@ enum main_id { ID_POPUP_ZOOM_LEVEL_512, ID_POPUP_ZOOM_LEVEL_1024, ID_POPUP_ZOOM_LEVEL_2048, + ID_POPUP_ZOOM_UNUSED0, + ID_POPUP_ZOOM_UNUSED1, + ID_POPUP_ZOOM_END_RANGE, // last zoom id + ID_POPUP_GRID_PLUS, ID_POPUP_GRID_MOINS, ID_POPUP_GRID_SELECT, @@ -253,9 +257,6 @@ enum main_id { ID_POPUP_GRID_LEVEL_2, ID_POPUP_GRID_LEVEL_1, ID_POPUP_GRID_USER, - ID_POPUP_ZOOM_UNUSED0, - ID_POPUP_ZOOM_UNUSED1, - ID_POPUP_ZOOM_END_RANGE, // last number ID_POPUP_START_RANGE, // first number diff --git a/include/pcbstruct.h b/include/pcbstruct.h index 05ddd986c1..d26e193149 100644 --- a/include/pcbstruct.h +++ b/include/pcbstruct.h @@ -208,7 +208,7 @@ public: int m_Route_Layer_BOTTOM; /* pour placement vias et routage 2 couches */ public: - PCB_SCREEN( int idscreen ); + PCB_SCREEN(); ~PCB_SCREEN(); PCB_SCREEN* Next() { return (PCB_SCREEN*) Pnext; } @@ -217,6 +217,8 @@ public: void SetPreviousZoom(); void SetLastZoom(); + virtual int GetInternalUnits( void ); + /** * Function GetCurItem * returns the currently selected BOARD_ITEM, overriding BASE_SCREEN::GetCurItem(). diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt index 179826118a..5ec8e7220c 100644 --- a/pcbnew/CMakeLists.txt +++ b/pcbnew/CMakeLists.txt @@ -152,7 +152,6 @@ set(PCBNEW_SRCS set(PCBNEW_EXTRA_SRCS ../share/drawframe.cpp - ../share/drawpanel.cpp ../share/setpage.cpp ../share/wxprint.cpp ../share/zoom.cpp) diff --git a/pcbnew/classpcb.cpp b/pcbnew/classpcb.cpp index 89d46d172a..7b6364d77b 100644 --- a/pcbnew/classpcb.cpp +++ b/pcbnew/classpcb.cpp @@ -6,31 +6,49 @@ #include "fctsys.h" #include "wxstruct.h" -#include "gr_basic.h" - #include "common.h" #include "pcbnew.h" -#ifdef CVPCB -#include "cvpcb.h" -#endif - #include "trigo.h" +#include "id.h" + + +/* Default grid sizes for PCB editor screens. */ +static GRID_TYPE PcbGridList[] = { + { ID_POPUP_GRID_LEVEL_1000, wxSize( 1000, 1000 ) }, + { ID_POPUP_GRID_LEVEL_500, wxSize( 500, 500 ) }, + { ID_POPUP_GRID_LEVEL_250, wxSize( 250, 250 ) }, + { ID_POPUP_GRID_LEVEL_200, wxSize( 200, 200 ) }, + { ID_POPUP_GRID_LEVEL_100, wxSize( 100, 100 ) }, + { ID_POPUP_GRID_LEVEL_50, wxSize( 50, 50 ) }, + { ID_POPUP_GRID_LEVEL_25, wxSize( 25, 25 ) }, + { ID_POPUP_GRID_LEVEL_20, wxSize( 20, 20 ) }, + { ID_POPUP_GRID_LEVEL_10, wxSize( 10, 10 ) }, + { ID_POPUP_GRID_LEVEL_5, wxSize( 5, 5 ) }, + { ID_POPUP_GRID_LEVEL_2, wxSize( 2, 2 ) }, + { ID_POPUP_GRID_LEVEL_1, wxSize( 1, 1 ) } +}; + +#define PCB_GRID_LIST_CNT ( sizeof( PcbGridList ) / sizeof( GRID_TYPE ) ) /**************************************************/ /* Class SCREEN: classe de gestion d'un affichage */ /***************************************************/ /* Constructeur de SCREEN */ -PCB_SCREEN::PCB_SCREEN( int idscreen ) : BASE_SCREEN( TYPE_SCREEN ) +PCB_SCREEN::PCB_SCREEN( ) : BASE_SCREEN( TYPE_SCREEN ) { - // a zero terminated list - static const int zoom_list[] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 0 }; + size_t i; - m_Type = idscreen; - SetGridList( g_GridList ); + // a zero terminated list + static const int zoom_list[] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, + 512, 1024, 2048, 0 }; + + for( i = 0; i < PCB_GRID_LIST_CNT; i++ ) + AddGrid( PcbGridList[i] ); + + SetGrid( wxSize( 500, 500 ) ); /* pas de la grille en 1/10000 "*/ SetZoomList( zoom_list ); - m_Grid = wxSize( 500, 500 ); /* pas de la grille en 1/10000 "*/ Init(); } @@ -41,7 +59,6 @@ PCB_SCREEN::~PCB_SCREEN() { } - /*************************/ void PCB_SCREEN::Init() /*************************/ @@ -50,9 +67,13 @@ void PCB_SCREEN::Init() m_Active_Layer = COPPER_LAYER_N; /* ref couche active 0.. 31 */ m_Route_Layer_TOP = CMP_N; /* ref couches par defaut pour vias (Cu.. Cmp) */ m_Route_Layer_BOTTOM = COPPER_LAYER_N; - m_Zoom = 128; /* valeur */ + m_Zoom = 128; /* valeur */ } +int PCB_SCREEN::GetInternalUnits( void ) +{ + return PCB_INTERNAL_UNIT; +} /* Return true if a microvia can be put on board * A microvia ia a small via restricted to 2 near neighbour layers @@ -68,10 +89,10 @@ bool PCB_SCREEN::IsMicroViaAcceptable( void ) return false; // Obvious.. if( copperlayercnt < 4 ) return false; // Only on multilayer boards.. - if( (m_Active_Layer == COPPER_LAYER_N) - || (m_Active_Layer == LAYER_CMP_N) - || (m_Active_Layer == g_DesignSettings.m_CopperLayerCount - 2) - || (m_Active_Layer == LAYER_N_2) ) + if( ( m_Active_Layer == COPPER_LAYER_N ) + || ( m_Active_Layer == LAYER_CMP_N ) + || ( m_Active_Layer == g_DesignSettings.m_CopperLayerCount - 2 ) + || ( m_Active_Layer == LAYER_N_2 ) ) return true; return false; @@ -187,7 +208,7 @@ int EDA_BoardDesignSettings::GetVisibleLayers() const for( int i = 0, mask = 1; i< 32; ++i, mask <<= 1 ) { - if( !(m_LayerColor[i] & ITEM_NOT_SHOW) ) + if( !( m_LayerColor[i] & ITEM_NOT_SHOW ) ) layerMask |= mask; } diff --git a/pcbnew/ioascii.cpp b/pcbnew/ioascii.cpp index 4b1285eb16..e742e132e6 100644 --- a/pcbnew/ioascii.cpp +++ b/pcbnew/ioascii.cpp @@ -21,6 +21,9 @@ #include "cvpcb.h" #endif +#include "id.h" + + /* Format des structures de sauvegarde type ASCII : Structure PAD: @@ -378,7 +381,6 @@ int WinEDA_BasePcbFrame::ReadSetup( FILE* File, int* LineNum ) else g_UserGrid.y = g_UserGrid.x; - GetScreen()->m_UserGrid = g_UserGrid; data = strtok( NULL, " =\n\r" ); if( data ) { @@ -386,7 +388,8 @@ int WinEDA_BasePcbFrame::ReadSetup( FILE* File, int* LineNum ) g_UserGrid_Unit = MILLIMETRE; else g_UserGrid_Unit = INCHES; - GetScreen()->m_UserGridUnit = g_UserGrid_Unit; + GetScreen()->AddGrid( g_UserGrid, g_UserGrid_Unit, + ID_POPUP_GRID_USER ); } continue; } @@ -508,8 +511,7 @@ static int WriteSetup( FILE* aFile, WinEDA_BasePcbFrame* aFrame, BOARD* aBoard ) sprintf( text, "InternalUnit %f INCH\n", 1.0 / PCB_INTERNAL_UNIT ); fprintf( aFile, text ); - sprintf( text, "UserGridSize %lf %lf %s\n", - aFrame->GetScreen()->m_UserGrid.x, aFrame->GetScreen()->m_UserGrid.y, + sprintf( text, "UserGridSize %lf %lf %s\n", g_UserGrid.x, g_UserGrid.y, ( g_UserGrid_Unit == 0 ) ? "INCH" : "mm" ); fprintf( aFile, text ); diff --git a/pcbnew/moduleframe.cpp b/pcbnew/moduleframe.cpp index a0ec6fa8c7..11721e03c0 100644 --- a/pcbnew/moduleframe.cpp +++ b/pcbnew/moduleframe.cpp @@ -19,86 +19,125 @@ /* class WinEDA_ModuleEditFrame */ /********************************/ BEGIN_EVENT_TABLE( WinEDA_ModuleEditFrame, wxFrame ) -COMMON_EVENTS_DRAWFRAME -EVT_MENU_RANGE( ID_POPUP_PCB_ITEM_SELECTION_START, - ID_POPUP_PCB_ITEM_SELECTION_END, - WinEDA_BasePcbFrame::ProcessItemSelection ) -EVT_CLOSE( WinEDA_ModuleEditFrame::OnCloseWindow ) -EVT_SIZE( WinEDA_ModuleEditFrame::OnSize ) + COMMON_EVENTS_DRAWFRAME + EVT_MENU_RANGE( ID_POPUP_PCB_ITEM_SELECTION_START, + ID_POPUP_PCB_ITEM_SELECTION_END, + WinEDA_BasePcbFrame::ProcessItemSelection ) + EVT_CLOSE( WinEDA_ModuleEditFrame::OnCloseWindow ) + EVT_SIZE( WinEDA_ModuleEditFrame::OnSize ) -EVT_KICAD_CHOICEBOX( ID_ON_ZOOM_SELECT, WinEDA_PcbFrame::OnSelectZoom ) -EVT_KICAD_CHOICEBOX( ID_ON_GRID_SELECT, WinEDA_PcbFrame::OnSelectGrid ) + EVT_KICAD_CHOICEBOX( ID_ON_ZOOM_SELECT, WinEDA_PcbFrame::OnSelectZoom ) + EVT_KICAD_CHOICEBOX( ID_ON_GRID_SELECT, WinEDA_PcbFrame::OnSelectGrid ) -EVT_TOOL_RANGE( ID_ZOOM_IN_BUTT, ID_ZOOM_PAGE_BUTT, - WinEDA_ModuleEditFrame::Process_Zoom ) + EVT_TOOL_RANGE( ID_ZOOM_IN_BUTT, ID_ZOOM_PAGE_BUTT, + WinEDA_ModuleEditFrame::Process_Zoom ) -EVT_TOOL( ID_LIBEDIT_SELECT_CURRENT_LIB, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_SAVE_LIBMODULE, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_LIBEDIT_DELETE_PART, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_NEW_MODULE, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_LOAD_MODULE, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_LIBEDIT_IMPORT_PART, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_LIBEDIT_EXPORT_PART, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, - WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_SHEET_SET, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_GEN_PRINT, WinEDA_DrawFrame::ToPrinter ) -EVT_TOOL( ID_MODEDIT_LOAD_MODULE, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_CHECK, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_PAD_SETTINGS, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_LOAD_MODULE_FROM_BOARD, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_INSERT_MODULE_IN_BOARD, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_UPDATE_MODULE_IN_BOARD, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_EDIT_MODULE_PROPERTIES, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_UNDO, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_REDO, WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_LIBEDIT_SELECT_CURRENT_LIB, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_SAVE_LIBMODULE, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_LIBEDIT_DELETE_PART, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_NEW_MODULE, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_LOAD_MODULE, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_LIBEDIT_IMPORT_PART, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_LIBEDIT_EXPORT_PART, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_SHEET_SET, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_GEN_PRINT, WinEDA_DrawFrame::ToPrinter ) + EVT_TOOL( ID_MODEDIT_LOAD_MODULE, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_CHECK, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_PAD_SETTINGS, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_LOAD_MODULE_FROM_BOARD, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_INSERT_MODULE_IN_BOARD, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_UPDATE_MODULE_IN_BOARD, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_EDIT_MODULE_PROPERTIES, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_UNDO, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_REDO, + WinEDA_ModuleEditFrame::Process_Special_Functions ) // Vertical toolbar (left click): -EVT_TOOL( ID_NO_SELECT_BUTT, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_ADD_PAD, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_PCB_ARC_BUTT, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_PCB_CIRCLE_BUTT, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_TEXT_COMMENT_BUTT, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_LINE_COMMENT_BUTT, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_DELETE_ITEM_BUTT, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_TOOL( ID_MODEDIT_PLACE_ANCHOR, WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_NO_SELECT_BUTT, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_ADD_PAD, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_PCB_ARC_BUTT, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_PCB_CIRCLE_BUTT, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_TEXT_COMMENT_BUTT, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_LINE_COMMENT_BUTT, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_DELETE_ITEM_BUTT, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_TOOL( ID_MODEDIT_PLACE_ANCHOR, + WinEDA_ModuleEditFrame::Process_Special_Functions ) // Vertical toolbar (right click): -EVT_TOOL_RCLICKED( ID_MODEDIT_ADD_PAD, WinEDA_ModuleEditFrame::ToolOnRightClick ) -EVT_TOOL_RCLICKED( ID_TRACK_BUTT, WinEDA_ModuleEditFrame::ToolOnRightClick ) -EVT_TOOL_RCLICKED( ID_PCB_CIRCLE_BUTT, WinEDA_ModuleEditFrame::ToolOnRightClick ) -EVT_TOOL_RCLICKED( ID_PCB_ARC_BUTT, WinEDA_ModuleEditFrame::ToolOnRightClick ) -EVT_TOOL_RCLICKED( ID_TEXT_COMMENT_BUTT, WinEDA_ModuleEditFrame::ToolOnRightClick ) -EVT_TOOL_RCLICKED( ID_LINE_COMMENT_BUTT, WinEDA_ModuleEditFrame::ToolOnRightClick ) -EVT_TOOL_RCLICKED( ID_PCB_COTATION_BUTT, WinEDA_ModuleEditFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_MODEDIT_ADD_PAD, + WinEDA_ModuleEditFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_TRACK_BUTT, + WinEDA_ModuleEditFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_PCB_CIRCLE_BUTT, + WinEDA_ModuleEditFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_PCB_ARC_BUTT, + WinEDA_ModuleEditFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_TEXT_COMMENT_BUTT, + WinEDA_ModuleEditFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_LINE_COMMENT_BUTT, + WinEDA_ModuleEditFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_PCB_COTATION_BUTT, + WinEDA_ModuleEditFrame::ToolOnRightClick ) // Options Toolbar -EVT_TOOL_RANGE( ID_TB_OPTIONS_START, ID_TB_OPTIONS_END, - WinEDA_ModuleEditFrame::OnSelectOptionToolbar ) + EVT_TOOL_RANGE( ID_TB_OPTIONS_START, ID_TB_OPTIONS_END, + WinEDA_ModuleEditFrame::OnSelectOptionToolbar ) -EVT_MENU_RANGE( ID_POPUP_PCB_START_RANGE, ID_POPUP_PCB_END_RANGE, - WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_MENU_RANGE( ID_POPUP_PCB_START_RANGE, ID_POPUP_PCB_END_RANGE, + WinEDA_ModuleEditFrame::Process_Special_Functions ) // Annulation de commande en cours -EVT_MENU_RANGE( ID_POPUP_GENERAL_START_RANGE, ID_POPUP_GENERAL_END_RANGE, - WinEDA_PcbFrame::Process_Special_Functions ) + EVT_MENU_RANGE( ID_POPUP_GENERAL_START_RANGE, ID_POPUP_GENERAL_END_RANGE, + WinEDA_PcbFrame::Process_Special_Functions ) // Transformations du module -EVT_MENU( ID_MODEDIT_MODULE_ROTATE, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_MENU( ID_MODEDIT_MODULE_MIRROR, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_MENU( ID_MODEDIT_MODULE_SCALE, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_MENU( ID_MODEDIT_MODULE_SCALEX, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_MENU( ID_MODEDIT_MODULE_SCALEY, WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_MENU( ID_MODEDIT_MODULE_ROTATE, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_MENU( ID_MODEDIT_MODULE_MIRROR, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_MENU( ID_MODEDIT_MODULE_SCALE, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_MENU( ID_MODEDIT_MODULE_SCALEX, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_MENU( ID_MODEDIT_MODULE_SCALEY, + WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_MENU( ID_PCB_DRAWINGS_WIDTHS_SETUP, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_MENU( ID_PCB_PAD_SETUP, WinEDA_ModuleEditFrame::Process_Special_Functions ) -EVT_MENU( ID_PCB_USER_GRID_SETUP, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_MENU( ID_PCB_DRAWINGS_WIDTHS_SETUP, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_MENU( ID_PCB_PAD_SETUP, + WinEDA_ModuleEditFrame::Process_Special_Functions ) + EVT_MENU( ID_PCB_USER_GRID_SETUP, + WinEDA_PcbFrame::Process_Special_Functions ) // Menu 3D Frame -EVT_MENU( ID_MENU_PCB_SHOW_3D_FRAME, WinEDA_ModuleEditFrame::Show3D_Frame ) + EVT_MENU( ID_MENU_PCB_SHOW_3D_FRAME, WinEDA_ModuleEditFrame::Show3D_Frame ) // PopUp Menu Zoom trait�s dans drawpanel.cpp - END_EVENT_TABLE() @@ -106,11 +145,14 @@ END_EVENT_TABLE() /* Constructeur */ /****************/ -WinEDA_ModuleEditFrame::WinEDA_ModuleEditFrame( wxWindow* father, WinEDA_App* parent, +WinEDA_ModuleEditFrame::WinEDA_ModuleEditFrame( wxWindow* father, + WinEDA_App* parent, const wxString& title, - const wxPoint& pos, const wxSize& size, + const wxPoint& pos, + const wxSize& size, long style ) : - WinEDA_BasePcbFrame( father, parent, MODULE_EDITOR_FRAME, wxEmptyString, pos, size, style ) + WinEDA_BasePcbFrame( father, parent, MODULE_EDITOR_FRAME, + wxEmptyString, pos, size, style ) { m_FrameName = wxT( "ModEditFrame" ); m_Draw_Axis = TRUE; // TRUE pour avoir les axes dessines @@ -125,7 +167,7 @@ WinEDA_ModuleEditFrame::WinEDA_ModuleEditFrame( wxWindow* father, WinEDA_App* pa if( ScreenModule == NULL ) { - ScreenModule = new PCB_SCREEN( PCB_FRAME ); + ScreenModule = new PCB_SCREEN(); ActiveScreen = ScreenModule; } ScreenModule->m_UndoRedoCountMax = 10; @@ -190,8 +232,10 @@ void WinEDA_ModuleEditFrame::OnCloseWindow( wxCloseEvent& Event ) if( m_Parent && m_Parent->m_EDA_Config ) { wxSize GridSize = GetScreen()->GetGrid(); - m_Parent->m_EDA_Config->Write( wxT( "ModEditGrid_X" ), (long) GridSize.x ); - m_Parent->m_EDA_Config->Write( wxT( "ModEditGrid_Y" ), (long) GridSize.y ); + m_Parent->m_EDA_Config->Write( wxT( "ModEditGrid_X" ), + (long) GridSize.x ); + m_Parent->m_EDA_Config->Write( wxT( "ModEditGrid_Y" ), + (long) GridSize.y ); } Destroy(); } @@ -201,6 +245,7 @@ void WinEDA_ModuleEditFrame::OnCloseWindow( wxCloseEvent& Event ) void WinEDA_ModuleEditFrame::SetToolbars() /*********************************************/ { + size_t i; bool active, islib = TRUE; if( m_HToolBar == NULL ) @@ -218,7 +263,8 @@ void WinEDA_ModuleEditFrame::SetToolbars() active = TRUE; m_HToolBar->EnableTool( ID_LIBEDIT_EXPORT_PART, active ); - m_HToolBar->EnableTool( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, active ); + m_HToolBar->EnableTool( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, + active ); m_HToolBar->EnableTool( ID_MODEDIT_SAVE_LIBMODULE, active && islib ); MODULE* module_in_edit = m_Pcb->m_Modules; if( module_in_edit && module_in_edit->m_Link ) // this is not a new module ... @@ -300,7 +346,7 @@ void WinEDA_ModuleEditFrame::SetToolbars() if( m_AuxiliaryToolBar ) { - int ii, jj; + int jj; if( m_SelZoomBox ) { int old_choice = m_SelZoomBox->GetChoice(); @@ -320,21 +366,16 @@ void WinEDA_ModuleEditFrame::SetToolbars() if( m_SelGridBox && GetScreen() ) { int kk = m_SelGridBox->GetChoice(); - for( ii = 0; g_GridList[ii].x > 0; ii++ ) + for( i = 0; i < GetScreen()->m_GridList.GetCount(); i++ ) { - if( !GetScreen()->m_UserGridIsON - && (GetScreen()->GetGrid().x == g_GridList[ii].x) - && (GetScreen()->GetGrid().y == g_GridList[ii].y) ) + if( ( GetScreen()->GetGrid() == GetScreen()->m_GridList[i].m_Size ) ) { - if( kk != ii ) - m_SelGridBox->SetSelection( ii ); - kk = ii; + if( kk != ( int ) i ) + m_SelGridBox->SetSelection( ( int ) i ); + kk = ( int ) i; break; } } - - if( kk != ii ) - m_SelGridBox->SetSelection( ii );/* User Grid */ } } diff --git a/pcbnew/pcbcfg.cpp b/pcbnew/pcbcfg.cpp index 465dd4b50a..2f99b4b66f 100644 --- a/pcbnew/pcbcfg.cpp +++ b/pcbnew/pcbcfg.cpp @@ -174,8 +174,7 @@ bool Read_Config( const wxString& project_name ) if( ScreenPcb ) { ScreenPcb->m_Diviseur_Grille = Pcbdiv_grille; - ScreenPcb->m_UserGrid = g_UserGrid; - ScreenPcb->m_UserGridUnit = g_UserGrid_Unit; + ScreenPcb->AddGrid( g_UserGrid, g_UserGrid_Unit, ID_POPUP_GRID_USER ); } g_DesignSettings.m_TrackWidthHistory[0] = g_DesignSettings.m_CurrentTrackWidth; diff --git a/pcbnew/pcbframe.cpp b/pcbnew/pcbframe.cpp index 3b69ffe345..4307b2f556 100644 --- a/pcbnew/pcbframe.cpp +++ b/pcbnew/pcbframe.cpp @@ -19,157 +19,169 @@ /*******************************/ BEGIN_EVENT_TABLE( WinEDA_PcbFrame, WinEDA_BasePcbFrame ) + COMMON_EVENTS_DRAWFRAME + EVT_SOCKET( ID_EDA_SOCKET_EVENT_SERV, WinEDA_PcbFrame::OnSockRequestServer ) + EVT_SOCKET( ID_EDA_SOCKET_EVENT, WinEDA_PcbFrame::OnSockRequest ) -COMMON_EVENTS_DRAWFRAME EVT_SOCKET( ID_EDA_SOCKET_EVENT_SERV, WinEDA_PcbFrame::OnSockRequestServer ) -EVT_SOCKET( ID_EDA_SOCKET_EVENT, WinEDA_PcbFrame::OnSockRequest ) + EVT_KICAD_CHOICEBOX( ID_ON_ZOOM_SELECT, WinEDA_PcbFrame::OnSelectZoom ) + EVT_KICAD_CHOICEBOX( ID_ON_GRID_SELECT, WinEDA_PcbFrame::OnSelectGrid ) -EVT_KICAD_CHOICEBOX( ID_ON_ZOOM_SELECT, WinEDA_PcbFrame::OnSelectZoom ) -EVT_KICAD_CHOICEBOX( ID_ON_GRID_SELECT, WinEDA_PcbFrame::OnSelectGrid ) + EVT_CLOSE( WinEDA_PcbFrame::OnCloseWindow ) + EVT_SIZE( WinEDA_PcbFrame::OnSize ) -EVT_CLOSE( WinEDA_PcbFrame::OnCloseWindow ) -EVT_SIZE( WinEDA_PcbFrame::OnSize ) + EVT_TOOL_RANGE( ID_ZOOM_IN_BUTT, ID_ZOOM_PAGE_BUTT, + WinEDA_PcbFrame::Process_Zoom ) -EVT_TOOL_RANGE( ID_ZOOM_IN_BUTT, ID_ZOOM_PAGE_BUTT, - WinEDA_PcbFrame::Process_Zoom ) + EVT_TOOL( ID_LOAD_FILE, WinEDA_PcbFrame::Files_io ) + EVT_TOOL( ID_MENU_READ_LAST_SAVED_VERSION_BOARD, WinEDA_PcbFrame::Files_io ) + EVT_TOOL( ID_MENU_RECOVER_BOARD, WinEDA_PcbFrame::Files_io ) + EVT_TOOL( ID_NEW_BOARD, WinEDA_PcbFrame::Files_io ) + EVT_TOOL( ID_SAVE_BOARD, WinEDA_PcbFrame::Files_io ) + EVT_TOOL( ID_OPEN_MODULE_EDITOR, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_LOAD_FILE, WinEDA_PcbFrame::Files_io ) -EVT_TOOL( ID_MENU_READ_LAST_SAVED_VERSION_BOARD, WinEDA_PcbFrame::Files_io ) -EVT_TOOL( ID_MENU_RECOVER_BOARD, WinEDA_PcbFrame::Files_io ) -EVT_TOOL( ID_NEW_BOARD, WinEDA_PcbFrame::Files_io ) -EVT_TOOL( ID_SAVE_BOARD, WinEDA_PcbFrame::Files_io ) -EVT_TOOL( ID_OPEN_MODULE_EDITOR, WinEDA_PcbFrame::Process_Special_Functions ) - -EVT_MENU_RANGE( ID_PREFERENCES_FONT_INFOSCREEN, ID_PREFERENCES_FONT_END, - WinEDA_DrawFrame::ProcessFontPreferences ) + EVT_MENU_RANGE( ID_PREFERENCES_FONT_INFOSCREEN, ID_PREFERENCES_FONT_END, + WinEDA_DrawFrame::ProcessFontPreferences ) // Menu Files: + EVT_MENU( ID_MAIN_MENUBAR, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_MENU( ID_MAIN_MENUBAR, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_MENU( ID_MENU_LOAD_FILE, WinEDA_PcbFrame::Files_io ) + EVT_MENU( ID_MENU_NEW_BOARD, WinEDA_PcbFrame::Files_io ) + EVT_MENU( ID_MENU_SAVE_BOARD, WinEDA_PcbFrame::Files_io ) + EVT_MENU( ID_MENU_APPEND_FILE, WinEDA_PcbFrame::Files_io ) + EVT_MENU( ID_MENU_SAVE_BOARD_AS, WinEDA_PcbFrame::Files_io ) + EVT_MENU( ID_GEN_PLOT, WinEDA_PcbFrame::ToPlotter ) + EVT_MENU_RANGE( ID_LOAD_FILE_1, ID_LOAD_FILE_10, + WinEDA_PcbFrame::Files_io ) -EVT_MENU( ID_MENU_LOAD_FILE, WinEDA_PcbFrame::Files_io ) -EVT_MENU( ID_MENU_NEW_BOARD, WinEDA_PcbFrame::Files_io ) -EVT_MENU( ID_MENU_SAVE_BOARD, WinEDA_PcbFrame::Files_io ) -EVT_MENU( ID_MENU_APPEND_FILE, WinEDA_PcbFrame::Files_io ) -EVT_MENU( ID_MENU_SAVE_BOARD_AS, WinEDA_PcbFrame::Files_io ) -EVT_MENU( ID_GEN_PLOT, WinEDA_PcbFrame::ToPlotter ) -EVT_MENU_RANGE( ID_LOAD_FILE_1, ID_LOAD_FILE_10, - WinEDA_PcbFrame::Files_io ) + EVT_MENU( ID_GEN_EXPORT_SPECCTRA, WinEDA_PcbFrame::ExportToSpecctra ) + EVT_MENU( ID_GEN_EXPORT_FILE_GENCADFORMAT, WinEDA_PcbFrame::ExportToGenCAD ) + EVT_MENU( ID_GEN_EXPORT_FILE_MODULE_REPORT, + WinEDA_PcbFrame::GenModuleReport ) -EVT_MENU( ID_GEN_EXPORT_SPECCTRA, WinEDA_PcbFrame::ExportToSpecctra ) -EVT_MENU( ID_GEN_EXPORT_FILE_GENCADFORMAT, WinEDA_PcbFrame::ExportToGenCAD ) -EVT_MENU( ID_GEN_EXPORT_FILE_MODULE_REPORT, WinEDA_PcbFrame::GenModuleReport ) + EVT_MENU( ID_GEN_IMPORT_SPECCTRA_SESSION, + WinEDA_PcbFrame::ImportSpecctraSession ) + EVT_MENU( ID_GEN_IMPORT_SPECCTRA_DESIGN, + WinEDA_PcbFrame::ImportSpecctraDesign ) -EVT_MENU( ID_GEN_IMPORT_SPECCTRA_SESSION, WinEDA_PcbFrame::ImportSpecctraSession ) -EVT_MENU( ID_GEN_IMPORT_SPECCTRA_DESIGN, WinEDA_PcbFrame::ImportSpecctraDesign ) + EVT_MENU( ID_MENU_ARCHIVE_NEW_MODULES, + WinEDA_PcbFrame::Process_Special_Functions ) + EVT_MENU( ID_MENU_ARCHIVE_ALL_MODULES, + WinEDA_PcbFrame::Process_Special_Functions ) -EVT_MENU( ID_MENU_ARCHIVE_NEW_MODULES, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_MENU( ID_MENU_ARCHIVE_ALL_MODULES, WinEDA_PcbFrame::Process_Special_Functions ) - -EVT_MENU( ID_EXIT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_MENU( ID_EXIT, WinEDA_PcbFrame::Process_Special_Functions ) // menu Config -EVT_MENU_RANGE( ID_CONFIG_AND_PREFERENCES_START, ID_CONFIG_AND_PREFERENCES_END, - WinEDA_PcbFrame::Process_Config ) + EVT_MENU_RANGE( ID_CONFIG_AND_PREFERENCES_START, + ID_CONFIG_AND_PREFERENCES_END, + WinEDA_PcbFrame::Process_Config ) -EVT_MENU( ID_COLORS_SETUP, WinEDA_PcbFrame::Process_Config ) -EVT_MENU( ID_OPTIONS_SETUP, WinEDA_PcbFrame::Process_Config ) -EVT_MENU( ID_PCB_TRACK_SIZE_SETUP, WinEDA_PcbFrame::Process_Config ) -EVT_MENU( ID_PCB_DRAWINGS_WIDTHS_SETUP, WinEDA_PcbFrame::Process_Config ) -EVT_MENU( ID_PCB_PAD_SETUP, WinEDA_PcbFrame::Process_Config ) -EVT_MENU( ID_PCB_LOOK_SETUP, WinEDA_PcbFrame::Process_Config ) -EVT_MENU( ID_CONFIG_SAVE, WinEDA_PcbFrame::Process_Config ) -EVT_MENU( ID_CONFIG_READ, WinEDA_PcbFrame::Process_Config ) + EVT_MENU( ID_COLORS_SETUP, WinEDA_PcbFrame::Process_Config ) + EVT_MENU( ID_OPTIONS_SETUP, WinEDA_PcbFrame::Process_Config ) + EVT_MENU( ID_PCB_TRACK_SIZE_SETUP, WinEDA_PcbFrame::Process_Config ) + EVT_MENU( ID_PCB_DRAWINGS_WIDTHS_SETUP, WinEDA_PcbFrame::Process_Config ) + EVT_MENU( ID_PCB_PAD_SETUP, WinEDA_PcbFrame::Process_Config ) + EVT_MENU( ID_PCB_LOOK_SETUP, WinEDA_PcbFrame::Process_Config ) + EVT_MENU( ID_CONFIG_SAVE, WinEDA_PcbFrame::Process_Config ) + EVT_MENU( ID_CONFIG_READ, WinEDA_PcbFrame::Process_Config ) -EVT_MENU( ID_PCB_USER_GRID_SETUP, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_MENU( ID_PCB_USER_GRID_SETUP, + WinEDA_PcbFrame::Process_Special_Functions ) -EVT_MENU_RANGE( ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END, - WinEDA_DrawFrame::SetLanguage ) + EVT_MENU_RANGE( ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END, + WinEDA_DrawFrame::SetLanguage ) // menu Postprocess -EVT_MENU( ID_PCB_GEN_POS_MODULES_FILE, WinEDA_PcbFrame::GenModulesPosition ) -EVT_MENU( ID_PCB_GEN_DRILL_FILE, WinEDA_PcbFrame::InstallDrillFrame ) -EVT_MENU( ID_PCB_GEN_CMP_FILE, WinEDA_PcbFrame::Files_io ) + EVT_MENU( ID_PCB_GEN_POS_MODULES_FILE, WinEDA_PcbFrame::GenModulesPosition ) + EVT_MENU( ID_PCB_GEN_DRILL_FILE, WinEDA_PcbFrame::InstallDrillFrame ) + EVT_MENU( ID_PCB_GEN_CMP_FILE, WinEDA_PcbFrame::Files_io ) // menu Miscellaneous -EVT_MENU( ID_MENU_LIST_NETS, WinEDA_PcbFrame::Liste_Equipot ) -EVT_MENU( ID_PCB_GLOBAL_DELETE, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_MENU( ID_MENU_PCB_CLEAN, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_MENU( ID_MENU_PCB_SWAP_LAYERS, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_MENU( ID_MENU_LIST_NETS, WinEDA_PcbFrame::Liste_Equipot ) + EVT_MENU( ID_PCB_GLOBAL_DELETE, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_MENU( ID_MENU_PCB_CLEAN, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_MENU( ID_MENU_PCB_SWAP_LAYERS, + WinEDA_PcbFrame::Process_Special_Functions ) // Menu Help -EVT_MENU( ID_GENERAL_HELP, WinEDA_DrawFrame::GetKicadHelp ) -EVT_MENU( ID_KICAD_ABOUT, WinEDA_BasicFrame::GetKicadAbout ) + EVT_MENU( ID_GENERAL_HELP, WinEDA_DrawFrame::GetKicadHelp ) + EVT_MENU( ID_KICAD_ABOUT, WinEDA_BasicFrame::GetKicadAbout ) // Menu 3D Frame -EVT_MENU( ID_MENU_PCB_SHOW_3D_FRAME, WinEDA_PcbFrame::Show3D_Frame ) + EVT_MENU( ID_MENU_PCB_SHOW_3D_FRAME, WinEDA_PcbFrame::Show3D_Frame ) // Horizontal toolbar -EVT_TOOL( ID_TO_LIBRARY, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_SHEET_SET, WinEDA_DrawFrame::Process_PageSettings ) -EVT_TOOL( wxID_CUT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( wxID_COPY, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( wxID_PASTE, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_UNDO_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_GEN_PRINT, WinEDA_DrawFrame::ToPrinter ) -EVT_TOOL( ID_GEN_PLOT, WinEDA_DrawFrame::Process_Special_Functions ) -EVT_TOOL( ID_FIND_ITEMS, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_GET_NETLIST, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_DRC_CONTROL, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_AUX_TOOLBAR_PCB_SELECT_AUTO_WIDTH, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_KICAD_CHOICEBOX( ID_TOOLBARH_PCB_SELECT_LAYER, - WinEDA_PcbFrame::Process_Special_Functions ) -EVT_KICAD_CHOICEBOX( ID_AUX_TOOLBAR_PCB_TRACK_WIDTH, - WinEDA_PcbFrame::Process_Special_Functions ) -EVT_KICAD_CHOICEBOX( ID_AUX_TOOLBAR_PCB_VIA_SIZE, - WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_TOOLBARH_PCB_AUTOPLACE, WinEDA_PcbFrame::AutoPlace ) -EVT_TOOL( ID_TOOLBARH_PCB_AUTOROUTE, WinEDA_PcbFrame::AutoPlace ) -EVT_TOOL( ID_TOOLBARH_PCB_FREEROUTE_ACCESS, WinEDA_PcbFrame::Access_to_External_Tool ) + EVT_TOOL( ID_TO_LIBRARY, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_SHEET_SET, WinEDA_DrawFrame::Process_PageSettings ) + EVT_TOOL( wxID_CUT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( wxID_COPY, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( wxID_PASTE, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_UNDO_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_GEN_PRINT, WinEDA_DrawFrame::ToPrinter ) + EVT_TOOL( ID_GEN_PLOT, WinEDA_DrawFrame::Process_Special_Functions ) + EVT_TOOL( ID_FIND_ITEMS, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_GET_NETLIST, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_DRC_CONTROL, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR, + WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_AUX_TOOLBAR_PCB_SELECT_AUTO_WIDTH, + WinEDA_PcbFrame::Process_Special_Functions ) + EVT_KICAD_CHOICEBOX( ID_TOOLBARH_PCB_SELECT_LAYER, + WinEDA_PcbFrame::Process_Special_Functions ) + EVT_KICAD_CHOICEBOX( ID_AUX_TOOLBAR_PCB_TRACK_WIDTH, + WinEDA_PcbFrame::Process_Special_Functions ) + EVT_KICAD_CHOICEBOX( ID_AUX_TOOLBAR_PCB_VIA_SIZE, + WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_TOOLBARH_PCB_AUTOPLACE, WinEDA_PcbFrame::AutoPlace ) + EVT_TOOL( ID_TOOLBARH_PCB_AUTOROUTE, WinEDA_PcbFrame::AutoPlace ) + EVT_TOOL( ID_TOOLBARH_PCB_FREEROUTE_ACCESS, + WinEDA_PcbFrame::Access_to_External_Tool ) // Option toolbar -EVT_TOOL_RANGE( ID_TB_OPTIONS_START, ID_TB_OPTIONS_END, - WinEDA_PcbFrame::OnSelectOptionToolbar ) + EVT_TOOL_RANGE( ID_TB_OPTIONS_START, ID_TB_OPTIONS_END, + WinEDA_PcbFrame::OnSelectOptionToolbar ) // Vertical toolbar: -EVT_TOOL( ID_NO_SELECT_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_PCB_HIGHLIGHT_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_COMPONENT_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_TRACK_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_PCB_ZONES_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_PCB_MIRE_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_PCB_ARC_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_PCB_CIRCLE_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_TEXT_COMMENT_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_LINE_COMMENT_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_PCB_COTATION_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_PCB_DELETE_ITEM_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_PCB_SHOW_1_RATSNEST_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL( ID_PCB_PLACE_OFFSET_COORD_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_NO_SELECT_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_PCB_HIGHLIGHT_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_COMPONENT_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_TRACK_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_PCB_ZONES_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_PCB_MIRE_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_PCB_ARC_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_PCB_CIRCLE_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_TEXT_COMMENT_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_LINE_COMMENT_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_PCB_COTATION_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_PCB_DELETE_ITEM_BUTT, + WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_PCB_SHOW_1_RATSNEST_BUTT, + WinEDA_PcbFrame::Process_Special_Functions ) + EVT_TOOL( ID_PCB_PLACE_OFFSET_COORD_BUTT, + WinEDA_PcbFrame::Process_Special_Functions ) -EVT_TOOL_RANGE( ID_PCB_MUWAVE_START_CMD, ID_PCB_MUWAVE_END_CMD, - WinEDA_PcbFrame::ProcessMuWaveFunctions ) + EVT_TOOL_RANGE( ID_PCB_MUWAVE_START_CMD, ID_PCB_MUWAVE_END_CMD, + WinEDA_PcbFrame::ProcessMuWaveFunctions ) -EVT_TOOL_RCLICKED( ID_TRACK_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) -EVT_TOOL_RCLICKED( ID_PCB_CIRCLE_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) -EVT_TOOL_RCLICKED( ID_PCB_ARC_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) -EVT_TOOL_RCLICKED( ID_TEXT_COMMENT_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) -EVT_TOOL_RCLICKED( ID_LINE_COMMENT_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) -EVT_TOOL_RCLICKED( ID_PCB_COTATION_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_TRACK_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_PCB_CIRCLE_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_PCB_ARC_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_TEXT_COMMENT_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_LINE_COMMENT_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) + EVT_TOOL_RCLICKED( ID_PCB_COTATION_BUTT, WinEDA_PcbFrame::ToolOnRightClick ) -EVT_MENU_RANGE( ID_POPUP_PCB_AUTOPLACE_START_RANGE, - ID_POPUP_PCB_AUTOPLACE_END_RANGE, - WinEDA_PcbFrame::AutoPlace ) + EVT_MENU_RANGE( ID_POPUP_PCB_AUTOPLACE_START_RANGE, + ID_POPUP_PCB_AUTOPLACE_END_RANGE, + WinEDA_PcbFrame::AutoPlace ) -EVT_MENU_RANGE( ID_POPUP_PCB_START_RANGE, ID_POPUP_PCB_END_RANGE, - WinEDA_PcbFrame::Process_Special_Functions ) + EVT_MENU_RANGE( ID_POPUP_PCB_START_RANGE, ID_POPUP_PCB_END_RANGE, + WinEDA_PcbFrame::Process_Special_Functions ) // Annulation de commande en cours -EVT_MENU_RANGE( ID_POPUP_GENERAL_START_RANGE, ID_POPUP_GENERAL_END_RANGE, - WinEDA_PcbFrame::Process_Special_Functions ) + EVT_MENU_RANGE( ID_POPUP_GENERAL_START_RANGE, ID_POPUP_GENERAL_END_RANGE, + WinEDA_PcbFrame::Process_Special_Functions ) // PopUp Menus pour Zooms traites dans drawpanel.cpp - END_EVENT_TABLE() @@ -229,8 +241,10 @@ WinEDA_PcbFrame::WinEDA_PcbFrame( wxWindow* father, WinEDA_App* parent, GridSize.x = SizeX; GridSize.y = SizeY; } - m_Parent->m_EDA_Config->Read( wxT( "PcbMagPadOpt" ), &g_MagneticPadOption ); - m_Parent->m_EDA_Config->Read( wxT( "PcbMagTrackOpt" ), &g_MagneticTrackOption ); + m_Parent->m_EDA_Config->Read( wxT( "PcbMagPadOpt" ), + &g_MagneticPadOption ); + m_Parent->m_EDA_Config->Read( wxT( "PcbMagTrackOpt" ), + &g_MagneticTrackOption ); } GetScreen()->SetGrid( GridSize ); @@ -278,7 +292,8 @@ void WinEDA_PcbFrame::OnCloseWindow( wxCloseEvent& Event ) { unsigned ii; wxMessageDialog dialog( this, _( "Board modified, Save before exit ?" ), - _( "Confirmation" ), wxYES_NO | wxCANCEL | wxICON_EXCLAMATION | + _( "Confirmation" ), + wxYES_NO | wxCANCEL | wxICON_EXCLAMATION | wxYES_DEFAULT ); ii = dialog.ShowModal(); @@ -313,10 +328,14 @@ void WinEDA_PcbFrame::OnCloseWindow( wxCloseEvent& Event ) if( m_Parent && m_Parent->m_EDA_Config ) { wxSize GridSize = GetScreen()->GetGrid(); - m_Parent->m_EDA_Config->Write( wxT( "PcbEditGrid_X" ), (long) GridSize.x ); - m_Parent->m_EDA_Config->Write( wxT( "PcbEditGrid_Y" ), (long) GridSize.y ); - m_Parent->m_EDA_Config->Write( wxT( "PcbMagPadOpt" ), (long) g_MagneticPadOption ); - m_Parent->m_EDA_Config->Write( wxT( "PcbMagTrackOpt" ), (long) g_MagneticTrackOption ); + m_Parent->m_EDA_Config->Write( wxT( "PcbEditGrid_X" ), + (long) GridSize.x ); + m_Parent->m_EDA_Config->Write( wxT( "PcbEditGrid_Y" ), + (long) GridSize.y ); + m_Parent->m_EDA_Config->Write( wxT( "PcbMagPadOpt" ), + (long) g_MagneticPadOption ); + m_Parent->m_EDA_Config->Write( wxT( "PcbMagTrackOpt" ), + (long) g_MagneticTrackOption ); } Destroy(); } @@ -331,6 +350,7 @@ void WinEDA_PcbFrame::SetToolbars() * en cours */ { + size_t i; int ii, jj; if( m_ID_current_state == ID_TRACK_BUTT ) @@ -378,11 +398,10 @@ void WinEDA_PcbFrame::SetToolbars() { m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_DRC_OFF, !Drc_On ); - m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_DRC_OFF, Drc_On ? - _( - "DRC Off (Disable !!!), Currently: DRC is active" ) - : - _( "DRC On (Currently: DRC is inactive !!!)" ) ); + m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_DRC_OFF, + Drc_On ? + _( "DRC Off (Disable !!!), Currently: DRC is active" ) : + _( "DRC On (Currently: DRC is inactive !!!)" ) ); m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SELECT_UNIT_MM, g_UnitMetric == MILLIMETRE ? TRUE : FALSE ); @@ -392,14 +411,14 @@ void WinEDA_PcbFrame::SetToolbars() m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_POLAR_COORD, DisplayOpt.DisplayPolarCood ); m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_SHOW_POLAR_COORD, - DisplayOpt.DisplayPolarCood ? - _( "Polar Coords not show" ) : - _( "Display Polar Coords" ) ); + DisplayOpt.DisplayPolarCood ? + _( "Polar Coords not show" ) : + _( "Display Polar Coords" ) ); m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_GRID, m_Draw_Grid ); m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_SHOW_GRID, - m_Draw_Grid ? _( "Grid not show" ) : _( "Show Grid" ) ); + m_Draw_Grid ? _( "Grid not show" ) : _( "Show Grid" ) ); m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SELECT_CURSOR, g_CursorShape ); @@ -407,24 +426,24 @@ void WinEDA_PcbFrame::SetToolbars() m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_RATSNEST, g_Show_Ratsnest ); m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_SHOW_RATSNEST, - g_Show_Ratsnest ? - _( "Hide General ratsnest" ): - _( "Show General ratsnest" )); + g_Show_Ratsnest ? + _( "Hide General ratsnest" ) : + _( "Show General ratsnest" ) ); m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_MODULE_RATSNEST, g_Show_Module_Ratsnest ); m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_SHOW_MODULE_RATSNEST, - g_Show_Module_Ratsnest ? - _( "Hide Module ratsnest" ) : - _( "Show Module ratsnest" ) ); + g_Show_Module_Ratsnest ? + _( "Hide Module ratsnest" ) : + _( "Show Module ratsnest" ) ); m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_AUTO_DEL_TRACK, g_AutoDeleteOldTrack ); m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_AUTO_DEL_TRACK, - g_AutoDeleteOldTrack ? - _( "Disable Auto Delete old Track" ) : - _( "Enable Auto Delete old Track" ) ); + g_AutoDeleteOldTrack ? + _( "Disable Auto Delete old Track" ) : + _( "Enable Auto Delete old Track" ) ); m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_ZONES, DisplayOpt.DisplayZones ); @@ -436,23 +455,23 @@ void WinEDA_PcbFrame::SetToolbars() m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, !m_DisplayPadFill ); m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_SHOW_PADS_SKETCH, - m_DisplayPadFill ? - _( "Show Pads Sketch mode" ) : - _( "Show pads filled mode" ) ); + m_DisplayPadFill ? + _( "Show Pads Sketch mode" ) : + _( "Show pads filled mode" ) ); m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_TRACKS_SKETCH, !m_DisplayPcbTrackFill ); m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_SHOW_TRACKS_SKETCH, - m_DisplayPcbTrackFill ? - _( "Show Tracks Sketch mode" ) : - _( "Show Tracks filled mode" ) ); + m_DisplayPcbTrackFill ? + _( "Show Tracks Sketch mode" ) : + _( "Show Tracks filled mode" ) ); m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_HIGHT_CONTRAST_MODE, DisplayOpt.ContrastModeDisplay ); m_OptionsToolBar->SetToolShortHelp( ID_TB_OPTIONS_SHOW_HIGHT_CONTRAST_MODE, - DisplayOpt.ContrastModeDisplay ? - _( "Normal Contrast Mode Display" ) : - _( "Hight Contrast Mode Display" ) ); + DisplayOpt.ContrastModeDisplay ? + _( "Normal Contrast Mode Display" ) : + _( "Hight Contrast Mode Display" ) ); } if( m_AuxiliaryToolBar ) @@ -544,21 +563,16 @@ void WinEDA_PcbFrame::SetToolbars() { int kk = m_SelGridBox->GetChoice(); - for( ii = 0; g_GridList[ii].x > 0; ii++ ) + for( i = 0; i < GetScreen()->m_GridList.GetCount(); i++ ) { - if( !GetScreen()->m_UserGridIsON - && (GetScreen()->GetGrid().x == g_GridList[ii].x) - && (GetScreen()->GetGrid().y == g_GridList[ii].y) ) + if( GetScreen()->GetGrid() == GetScreen()->m_GridList[i].m_Size ) { - if( kk != ii ) - m_SelGridBox->SetSelection( ii ); - kk = ii; + if( kk != ( int ) i ) + m_SelGridBox->SetSelection( ( int ) i ); + kk = ( int ) i; break; } } - - if( kk != ii ) - m_SelGridBox->SetSelection( ii ); /* User Grid */ } } diff --git a/pcbnew/pcbnew.cpp b/pcbnew/pcbnew.cpp index 67f883176d..31b26cd6e5 100644 --- a/pcbnew/pcbnew.cpp +++ b/pcbnew/pcbnew.cpp @@ -45,7 +45,7 @@ bool WinEDA_App::OnInit() return false; } - ScreenPcb = new PCB_SCREEN( PCB_FRAME ); + ScreenPcb = new PCB_SCREEN(); GetSettings(); if( argc > 1 ) diff --git a/pcbnew/pcbnew.h b/pcbnew/pcbnew.h index 155afbaf4a..c03e8585a3 100644 --- a/pcbnew/pcbnew.h +++ b/pcbnew/pcbnew.h @@ -50,18 +50,6 @@ eda_global wxArrayString g_LibName_List; // library list to load -eda_global wxSize g_GridList[] -#ifdef MAIN -= { - wxSize( 1000, 1000 ), wxSize( 500, 500 ), wxSize( 250, 250 ), wxSize( 200, 200 ), - wxSize( 100, 100 ), wxSize( 50, 50 ), wxSize( 25, 25 ), wxSize( 20, 20 ), - wxSize( 10, 10 ), wxSize( 5, 5 ), wxSize( 2, 2 ), wxSize( 1, 1 ), - wxSize( -1, -1 ), wxSize( 0, 0 ) -} - - -#endif -; #define UNDELETE_STACK_SIZE 10 eda_global BOARD_ITEM* g_UnDeleteStack[UNDELETE_STACK_SIZE]; // Linked list of deleted items diff --git a/pcbnew/set_grid.cpp b/pcbnew/set_grid.cpp index 6fbfd3d19b..19923327e9 100644 --- a/pcbnew/set_grid.cpp +++ b/pcbnew/set_grid.cpp @@ -7,7 +7,6 @@ */ #include "fctsys.h" -#include "gr_basic.h" #include "common.h" #include "pcbnew.h" @@ -15,24 +14,28 @@ #include "protos.h" #include +#include "id.h" + #include "set_grid.h" /****************************************************************/ void WinEDA_PcbGridFrame::AcceptPcbOptions(wxCommandEvent& event) /****************************************************************/ { -double dtmp = 0; - - g_UserGrid_Unit = m_UnitGrid->GetSelection(); - m_OptGridSizeX->GetValue().ToDouble(&dtmp); g_UserGrid.x = dtmp; - m_OptGridSizeY->GetValue().ToDouble(&dtmp); g_UserGrid.y = dtmp; + double dtmp = 0; - m_Parent->GetScreen()->m_UserGrid = g_UserGrid; - m_Parent->GetScreen()->m_UserGridUnit = g_UserGrid_Unit; + g_UserGrid_Unit = m_UnitGrid->GetSelection(); + m_OptGridSizeX->GetValue().ToDouble( &dtmp ); + g_UserGrid.x = dtmp; + m_OptGridSizeY->GetValue().ToDouble( &dtmp ); + g_UserGrid.y = dtmp; + + m_Parent->GetScreen()->AddGrid( g_UserGrid, g_UserGrid_Unit, + ID_POPUP_GRID_USER ); EndModal(1); - - m_Parent->DrawPanel->Refresh(TRUE); + + m_Parent->DrawPanel->Refresh( TRUE ); } @@ -42,7 +45,7 @@ void WinEDA_BasePcbFrame::InstallGridFrame(const wxPoint & pos) /************************************************************/ { WinEDA_PcbGridFrame * GridFrame = - new WinEDA_PcbGridFrame(this, pos); + new WinEDA_PcbGridFrame( this, pos ); GridFrame->ShowModal(); GridFrame->Destroy(); } @@ -77,21 +80,20 @@ WinEDA_PcbGridFrame::WinEDA_PcbGridFrame( ) } WinEDA_PcbGridFrame::WinEDA_PcbGridFrame( WinEDA_BasePcbFrame* parent, - const wxPoint& pos, - wxWindowID id, const wxString& caption, const wxSize& size, long style ) + const wxPoint& pos, + wxWindowID id, + const wxString& caption, + const wxSize& size, long style ) { -wxString msg; -PCB_SCREEN * screen; - - m_Parent = parent; - screen = (PCB_SCREEN*)(m_Parent->GetScreen()); + wxString msg; + PCB_SCREEN * screen; - g_UserGrid = screen->m_UserGrid; - g_UserGrid_Unit = screen->m_UserGridUnit; + m_Parent = parent; + screen = (PCB_SCREEN*)(m_Parent->GetScreen()); Create(parent, id, caption, pos, size, style); - if ( screen->m_UserGridUnit != INCHES ) + if ( g_UserGrid_Unit != INCHES ) m_UnitGrid->SetSelection(1); msg.Printf( wxT("%.4f"), g_UserGrid.x ); @@ -130,7 +132,7 @@ bool WinEDA_PcbGridFrame::Create( wxWindow* parent, wxWindowID id, const wxStrin */ void WinEDA_PcbGridFrame::CreateControls() -{ +{ SetFont(*g_DialogFont); ////@begin WinEDA_PcbGridFrame content construction // Generated by DialogBlocks, 17/08/2006 09:27:19 (unregistered) @@ -232,7 +234,7 @@ void WinEDA_PcbGridFrame::OnCancelClick( wxCommandEvent& event ) ////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_PcbGridFrame. // Before editing this code, remove the block markers. event.Skip(); -////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_PcbGridFrame. +////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL in WinEDA_PcbGridFrame. } diff --git a/pcbnew/tool_modedit.cpp b/pcbnew/tool_modedit.cpp index 981802f602..1e55ee259a 100644 --- a/pcbnew/tool_modedit.cpp +++ b/pcbnew/tool_modedit.cpp @@ -3,15 +3,12 @@ /*****************************************************************/ #include "fctsys.h" -#include "gr_basic.h" #include "common.h" #include "pcbnew.h" #include "protos.h" -#define BITMAP wxBitmap - #include "bitmaps.h" #include "id.h" @@ -40,92 +37,99 @@ void WinEDA_ModuleEditFrame::ReCreateHToolbar() // Set up toolbar m_HToolBar->AddTool( ID_LIBEDIT_SELECT_CURRENT_LIB, wxEmptyString, - BITMAP( open_library_xpm ), - _( "Select working library" ) ); + wxBitmap( open_library_xpm ), + _( "Select working library" ) ); - m_HToolBar->AddTool( ID_MODEDIT_SAVE_LIBMODULE, wxEmptyString, BITMAP( save_library_xpm ), - _( "Save Module in working library" ) ); + m_HToolBar->AddTool( ID_MODEDIT_SAVE_LIBMODULE, wxEmptyString, + wxBitmap( save_library_xpm ), + _( "Save Module in working library" ) ); - m_HToolBar->AddTool( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, wxEmptyString, - BITMAP( new_library_xpm ), - _( "Create new library and save current module" ) ); + m_HToolBar->AddTool( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, + wxEmptyString, + wxBitmap( new_library_xpm ), + _( "Create new library and save current module" ) ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_LIBEDIT_DELETE_PART, wxEmptyString, - BITMAP( delete_xpm ), - _( "Delete part in current library" ) ); + wxBitmap( delete_xpm ), + _( "Delete part in current library" ) ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_MODEDIT_NEW_MODULE, wxEmptyString, - BITMAP( new_footprint_xpm ), - _( "New Module" ) ); + wxBitmap( new_footprint_xpm ), + _( "New Module" ) ); m_HToolBar->AddTool( ID_MODEDIT_LOAD_MODULE, wxEmptyString, - BITMAP( module_xpm ), - _( "Load module from lib" ) ); + wxBitmap( module_xpm ), + _( "Load module from lib" ) ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_MODEDIT_LOAD_MODULE_FROM_BOARD, wxEmptyString, - BITMAP( load_module_board_xpm ), - _( "Load module from current board" ) ); + wxBitmap( load_module_board_xpm ), + _( "Load module from current board" ) ); m_HToolBar->AddTool( ID_MODEDIT_UPDATE_MODULE_IN_BOARD, wxEmptyString, - BITMAP( update_module_board_xpm ), - _( "Update module in current board" ) ); + wxBitmap( update_module_board_xpm ), + _( "Update module in current board" ) ); m_HToolBar->AddTool( ID_MODEDIT_INSERT_MODULE_IN_BOARD, wxEmptyString, - BITMAP( insert_module_board_xpm ), - _( "Insert module into current board" ) ); + wxBitmap( insert_module_board_xpm ), + _( "Insert module into current board" ) ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_LIBEDIT_IMPORT_PART, wxEmptyString, - BITMAP( import_module_xpm ), - _( "import module" ) ); + wxBitmap( import_module_xpm ), + _( "import module" ) ); m_HToolBar->AddTool( ID_LIBEDIT_EXPORT_PART, wxEmptyString, - BITMAP( export_module_xpm ), - _( "export module" ) ); + wxBitmap( export_module_xpm ), + _( "export module" ) ); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( ID_MODEDIT_UNDO, wxEmptyString, BITMAP( undo_xpm ), - _( "Undo last edition" ) ); - m_HToolBar->AddTool( ID_MODEDIT_REDO, wxEmptyString, BITMAP( redo_xpm ), - _( "Redo the last undo command" ) ); + m_HToolBar->AddTool( ID_MODEDIT_UNDO, wxEmptyString, wxBitmap( undo_xpm ), + _( "Undo last edition" ) ); + m_HToolBar->AddTool( ID_MODEDIT_REDO, wxEmptyString, wxBitmap( redo_xpm ), + _( "Redo the last undo command" ) ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_MODEDIT_EDIT_MODULE_PROPERTIES, wxEmptyString, - BITMAP( module_options_xpm ), - _( "Module Properties" ) ); + wxBitmap( module_options_xpm ), + _( "Module Properties" ) ); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( ID_GEN_PRINT, wxEmptyString, BITMAP( print_button ), - _( "Print Module" ) ); + m_HToolBar->AddTool( ID_GEN_PRINT, wxEmptyString, wxBitmap( print_button ), + _( "Print Module" ) ); m_HToolBar->AddSeparator(); - msg = AddHotkeyName( _( "Zoom in" ), s_Module_Editor_Hokeys_Descr, HK_ZOOM_IN ); - m_HToolBar->AddTool( ID_ZOOM_IN_BUTT, wxEmptyString, BITMAP( zoom_in_xpm ), - msg ); + msg = AddHotkeyName( _( "Zoom in" ), s_Module_Editor_Hokeys_Descr, + HK_ZOOM_IN ); + m_HToolBar->AddTool( ID_ZOOM_IN_BUTT, wxEmptyString, + wxBitmap( zoom_in_xpm ), msg ); - msg = AddHotkeyName( _( "Zoom out" ), s_Module_Editor_Hokeys_Descr, HK_ZOOM_OUT ); - m_HToolBar->AddTool( ID_ZOOM_OUT_BUTT, wxEmptyString, BITMAP( zoom_out_xpm ), - msg ); + msg = AddHotkeyName( _( "Zoom out" ), s_Module_Editor_Hokeys_Descr, + HK_ZOOM_OUT ); + m_HToolBar->AddTool( ID_ZOOM_OUT_BUTT, wxEmptyString, + wxBitmap( zoom_out_xpm ), msg ); - msg = AddHotkeyName( _( "Redraw view" ), s_Module_Editor_Hokeys_Descr, HK_ZOOM_REDRAW ); - m_HToolBar->AddTool( ID_ZOOM_REDRAW_BUTT, wxEmptyString, BITMAP( zoom_redraw_xpm ), - msg ); + msg = AddHotkeyName( _( "Redraw view" ), s_Module_Editor_Hokeys_Descr, + HK_ZOOM_REDRAW ); + m_HToolBar->AddTool( ID_ZOOM_REDRAW_BUTT, wxEmptyString, + wxBitmap( zoom_redraw_xpm ), msg ); - m_HToolBar->AddTool( ID_ZOOM_PAGE_BUTT, wxEmptyString, BITMAP( zoom_auto_xpm ), - _( "Zoom auto" ) ); + m_HToolBar->AddTool( ID_ZOOM_PAGE_BUTT, wxEmptyString, + wxBitmap( zoom_auto_xpm ), + _( "Zoom auto" ) ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_MODEDIT_PAD_SETTINGS, wxEmptyString, - BITMAP( options_pad_xpm ), - _( "Pad Settings" ) ); + wxBitmap( options_pad_xpm ), + _( "Pad Settings" ) ); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( ID_MODEDIT_CHECK, wxEmptyString, BITMAP( module_check_xpm ), - _( "Module Check" ) ); + m_HToolBar->AddTool( ID_MODEDIT_CHECK, wxEmptyString, + wxBitmap( module_check_xpm ), + _( "Module Check" ) ); // after adding the buttons to the toolbar, must call Realize() to reflect // the changes @@ -145,39 +149,39 @@ void WinEDA_ModuleEditFrame::ReCreateVToolbar() // Set up toolbar m_VToolBar->AddTool( ID_NO_SELECT_BUTT, wxEmptyString, - BITMAP( cursor_xpm ), wxEmptyString, wxITEM_CHECK ); + wxBitmap( cursor_xpm ), wxEmptyString, wxITEM_CHECK ); m_VToolBar->ToggleTool( ID_NO_SELECT_BUTT, TRUE ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool( ID_MODEDIT_ADD_PAD, wxEmptyString, - BITMAP( pad_xpm ), + wxBitmap( pad_xpm ), _( "Add Pads" ), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool( ID_LINE_COMMENT_BUTT, wxEmptyString, - BITMAP( add_polygon_xpm ), + wxBitmap( add_polygon_xpm ), _( "Add graphic line or polygon" ), wxITEM_CHECK ); m_VToolBar->AddTool( ID_PCB_CIRCLE_BUTT, wxEmptyString, - BITMAP( add_circle_xpm ), + wxBitmap( add_circle_xpm ), _( "Add graphic circle" ), wxITEM_CHECK ); m_VToolBar->AddTool( ID_PCB_ARC_BUTT, wxEmptyString, - BITMAP( add_arc_xpm ), + wxBitmap( add_arc_xpm ), _( "Add graphic arc" ), wxITEM_CHECK ); m_VToolBar->AddTool( ID_TEXT_COMMENT_BUTT, wxEmptyString, - BITMAP( add_text_xpm ), + wxBitmap( add_text_xpm ), _( "Add Text" ), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool( ID_MODEDIT_PLACE_ANCHOR, wxEmptyString, - BITMAP( anchor_xpm ), + wxBitmap( anchor_xpm ), _( "Place anchor" ), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool( ID_MODEDIT_DELETE_ITEM_BUTT, wxEmptyString, - BITMAP( delete_body_xpm ), + wxBitmap( delete_body_xpm ), _( "Delete items" ), wxITEM_CHECK ); m_VToolBar->Realize(); @@ -194,53 +198,55 @@ void WinEDA_ModuleEditFrame::ReCreateOptToolbar() return; // creation du tool bar options - m_OptionsToolBar = new WinEDA_Toolbar( TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, FALSE ); + m_OptionsToolBar = new WinEDA_Toolbar( TOOLBAR_OPTION, this, + ID_OPT_TOOLBAR, FALSE ); - m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, BITMAP( grid_xpm ), - wxNullBitmap, - TRUE, - -1, -1, (wxObject*) NULL, - _( "Display Grid OFF" ) ); + m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxBitmap( grid_xpm ), + wxNullBitmap, + TRUE, + -1, -1, (wxObject*) NULL, + _( "Display Grid OFF" ) ); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_POLAR_COORD, wxEmptyString, - BITMAP( polar_coord_xpm ), + wxBitmap( polar_coord_xpm ), _( "Display Polar Coord ON" ), wxITEM_CHECK ); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString, - BITMAP( unit_inch_xpm ), + wxBitmap( unit_inch_xpm ), _( "Units in inches" ), wxITEM_CHECK ); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString, - BITMAP( unit_mm_xpm ), + wxBitmap( unit_mm_xpm ), _( "Units in millimeters" ), wxITEM_CHECK ); - m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_CURSOR, BITMAP( cursor_shape_xpm ), - wxNullBitmap, - TRUE, - -1, -1, (wxObject*) NULL, - _( "Change Cursor Shape" ) ); + m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_CURSOR, + wxBitmap( cursor_shape_xpm ), + wxNullBitmap, + TRUE, + -1, -1, (wxObject*) NULL, + _( "Change Cursor Shape" ) ); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, - BITMAP( pad_sketch_xpm ), - wxNullBitmap, - TRUE, - -1, -1, (wxObject*) NULL, - _( "Show Pads Sketch" ) ); + wxBitmap( pad_sketch_xpm ), + wxNullBitmap, + TRUE, + -1, -1, (wxObject*) NULL, + _( "Show Pads Sketch" ) ); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH, - BITMAP( text_sketch_xpm ), - wxNullBitmap, - TRUE, - -1, -1, (wxObject*) NULL, - _( "Show Texts Sketch" ) ); + wxBitmap( text_sketch_xpm ), + wxNullBitmap, + TRUE, + -1, -1, (wxObject*) NULL, + _( "Show Texts Sketch" ) ); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_MODULE_EDGE_SKETCH, - BITMAP( show_mod_edge_xpm ), - wxNullBitmap, - TRUE, - -1, -1, (wxObject*) NULL, - _( "Show Edges Sketch" ) ); + wxBitmap( show_mod_edge_xpm ), + wxNullBitmap, + TRUE, + -1, -1, (wxObject*) NULL, + _( "Show Edges Sketch" ) ); m_OptionsToolBar->Realize(); @@ -252,27 +258,30 @@ void WinEDA_ModuleEditFrame::ReCreateOptToolbar() void WinEDA_ModuleEditFrame::ReCreateAuxiliaryToolbar() /*********************************************************/ { - int ii; + size_t i; wxString msg; if( m_AuxiliaryToolBar == NULL ) { - m_AuxiliaryToolBar = new WinEDA_Toolbar( TOOLBAR_AUX, this, ID_AUX_TOOLBAR, TRUE ); + m_AuxiliaryToolBar = new WinEDA_Toolbar( TOOLBAR_AUX, this, + ID_AUX_TOOLBAR, TRUE ); // Set up toolbar m_AuxiliaryToolBar->AddSeparator(); // Boite de selection du pas de grille m_SelGridBox = new WinEDAChoiceBox( m_AuxiliaryToolBar, - ID_ON_GRID_SELECT, - wxPoint( -1, -1 ), wxSize( LISTBOX_WIDTH, -1 ) ); + ID_ON_GRID_SELECT, + wxPoint( -1, -1 ), + wxSize( LISTBOX_WIDTH, -1 ) ); m_AuxiliaryToolBar->AddControl( m_SelGridBox ); // Boite de selection du Zoom m_AuxiliaryToolBar->AddSeparator(); m_SelZoomBox = new WinEDAChoiceBox( m_AuxiliaryToolBar, - ID_ON_ZOOM_SELECT, - wxPoint( -1, -1 ), wxSize( LISTBOX_WIDTH, -1 ) ); + ID_ON_ZOOM_SELECT, + wxPoint( -1, -1 ), + wxSize( LISTBOX_WIDTH, -1 ) ); msg = _( "Auto" ); m_SelZoomBox->Append( msg ); for( int jj = 0, ii = 1; ii <= m_ZoomMaxValue; ii <<= 1, jj++ ) @@ -292,17 +301,25 @@ void WinEDA_ModuleEditFrame::ReCreateAuxiliaryToolbar() // mise a jour des affichages m_SelGridBox->Clear(); - for( ii = 0; g_GridList[ii].x > 0; ii++ ) + for( i = 0; i < GetScreen()->m_GridList.GetCount(); i++ ) { - double value = To_User_Unit( g_UnitMetric, g_GridList[ii].x, PCB_INTERNAL_UNIT ); - if( g_UnitMetric == INCHES ) - msg.Printf( _( "Grid %.1f" ), value * 1000 ); + double value = To_User_Unit( g_UnitMetric, + GetScreen()->m_GridList[i].m_Size.x, + PCB_INTERNAL_UNIT ); + if( GetScreen()->m_GridList[i].m_Id != ID_POPUP_GRID_USER ) + { + if( g_UnitMetric == INCHES ) + msg.Printf( _( "Grid %.1f" ), value * 1000 ); + else + msg.Printf( _( "Grid %.3f" ), value ); + } else - msg.Printf( _( "Grid %.3f" ), value ); + { + msg = _( "User Grid" ); + } + m_SelGridBox->Append( msg ); } - m_SelGridBox->Append( _( "User Grid" ) ); - SetToolbars(); } diff --git a/pcbnew/tool_pcb.cpp b/pcbnew/tool_pcb.cpp index cd61256d69..390e58ef55 100644 --- a/pcbnew/tool_pcb.cpp +++ b/pcbnew/tool_pcb.cpp @@ -3,7 +3,6 @@ /*********************************************/ #include "fctsys.h" -#include "gr_basic.h" #include "common.h" #include "pcbnew.h" @@ -14,8 +13,6 @@ #include "id.h" -#define BITMAP wxBitmap - #ifdef __UNIX__ #define LISTBOX_WIDTH 140 #else @@ -164,14 +161,16 @@ void WinEDA_PcbFrame::PrepareLayerIndicator() if( m_HToolBar ) { #if wxCHECK_VERSION( 2, 8, 3 ) & !defined(__WXX11__) - m_HToolBar->SetToolNormalBitmap( ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR, *LayerPairBitmap ); + m_HToolBar->SetToolNormalBitmap( ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR, + *LayerPairBitmap ); #else int pos = m_HToolBar->GetToolPos( ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR ); if( pos != wxNOT_FOUND ) { m_HToolBar->DeleteTool( ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR ); - m_HToolBar->InsertTool( pos, ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR, *LayerPairBitmap, - wxNullBitmap, false, NULL, SEL_LAYER_HELP ); + m_HToolBar->InsertTool( pos, ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR, + *LayerPairBitmap, wxNullBitmap, false, + NULL, SEL_LAYER_HELP ); m_HToolBar->Realize(); } #endif @@ -221,91 +220,104 @@ void WinEDA_PcbFrame::ReCreateHToolbar() SetToolBar( m_HToolBar ); // Set up toolbar - m_HToolBar->AddTool( ID_NEW_BOARD, wxEmptyString, BITMAP( new_xpm ), _( "New board" ) ); - m_HToolBar->AddTool( ID_LOAD_FILE, wxEmptyString, BITMAP( open_xpm ), - _( "Open existing board" ) ); - m_HToolBar->AddTool( ID_SAVE_BOARD, wxEmptyString, BITMAP( save_xpm ), _( "Save board" ) ); + m_HToolBar->AddTool( ID_NEW_BOARD, wxEmptyString, wxBitmap( new_xpm ), + _( "New board" ) ); + m_HToolBar->AddTool( ID_LOAD_FILE, wxEmptyString, wxBitmap( open_xpm ), + _( "Open existing board" ) ); + m_HToolBar->AddTool( ID_SAVE_BOARD, wxEmptyString, wxBitmap( save_xpm ), + _( "Save board" ) ); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( ID_SHEET_SET, wxEmptyString, BITMAP( sheetset_xpm ), - _( "Page settings (size, texts)" ) ); + m_HToolBar->AddTool( ID_SHEET_SET, wxEmptyString, wxBitmap( sheetset_xpm ), + _( "Page settings (size, texts)" ) ); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( ID_OPEN_MODULE_EDITOR, wxEmptyString, BITMAP( modedit_xpm ), - _( "Open module editor" ) ); + m_HToolBar->AddTool( ID_OPEN_MODULE_EDITOR, wxEmptyString, + wxBitmap( modedit_xpm ), + _( "Open module editor" ) ); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( wxID_CUT, wxEmptyString, BITMAP( cut_button ), _( "Cut selected item" ) ); + m_HToolBar->AddTool( wxID_CUT, wxEmptyString, wxBitmap( cut_button ), + _( "Cut selected item" ) ); #if 0 - m_HToolBar->AddTool( wxID_COPY, wxEmptyString, BITMAP( copy_button ), - _( "Copy selected item" ) ); + m_HToolBar->AddTool( wxID_COPY, wxEmptyString, wxBitmap( copy_button ), + _( "Copy selected item" ) ); - m_HToolBar->AddTool( wxID_PASTE, wxEmptyString, BITMAP( paste_xpm ), _( "Paste" ) ); + m_HToolBar->AddTool( wxID_PASTE, wxEmptyString, wxBitmap( paste_xpm ), + _( "Paste" ) ); #endif - m_HToolBar->AddTool( ID_UNDO_BUTT, wxEmptyString, BITMAP( undelete_xpm ), _( "Undelete" ) ); + m_HToolBar->AddTool( ID_UNDO_BUTT, wxEmptyString, wxBitmap( undelete_xpm ), + _( "Undelete" ) ); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( ID_GEN_PRINT, wxEmptyString, BITMAP( print_button ), _( "Print board" ) ); - m_HToolBar->AddTool( ID_GEN_PLOT, wxEmptyString, BITMAP( plot_xpm ), - _( "Plot (HPGL, PostScript, or GERBER format)" ) ); + m_HToolBar->AddTool( ID_GEN_PRINT, wxEmptyString, wxBitmap( print_button ), + _( "Print board" ) ); + m_HToolBar->AddTool( ID_GEN_PLOT, wxEmptyString, wxBitmap( plot_xpm ), + _( "Plot (HPGL, PostScript, or GERBER format)" ) ); m_HToolBar->AddSeparator(); - msg = AddHotkeyName( _( "Zoom in" ), s_Board_Editor_Hokeys_Descr, HK_ZOOM_IN ); - m_HToolBar->AddTool( ID_ZOOM_IN_BUTT, wxEmptyString, BITMAP( zoom_in_xpm ), + msg = AddHotkeyName( _( "Zoom in" ), s_Board_Editor_Hokeys_Descr, + HK_ZOOM_IN ); + m_HToolBar->AddTool( ID_ZOOM_IN_BUTT, wxEmptyString, wxBitmap( zoom_in_xpm ), msg ); - msg = AddHotkeyName( _( "Zoom out" ), s_Board_Editor_Hokeys_Descr, HK_ZOOM_OUT ); - m_HToolBar->AddTool( ID_ZOOM_OUT_BUTT, wxEmptyString, BITMAP( zoom_out_xpm ), - msg ); + msg = AddHotkeyName( _( "Zoom out" ), s_Board_Editor_Hokeys_Descr, + HK_ZOOM_OUT ); + m_HToolBar->AddTool( ID_ZOOM_OUT_BUTT, wxEmptyString, + wxBitmap( zoom_out_xpm ), msg ); - msg = AddHotkeyName( _( "Redraw view" ), s_Board_Editor_Hokeys_Descr, HK_ZOOM_REDRAW ); - m_HToolBar->AddTool( ID_ZOOM_REDRAW_BUTT, wxEmptyString, BITMAP( zoom_redraw_xpm ), - msg ); + msg = AddHotkeyName( _( "Redraw view" ), s_Board_Editor_Hokeys_Descr, + HK_ZOOM_REDRAW ); + m_HToolBar->AddTool( ID_ZOOM_REDRAW_BUTT, wxEmptyString, + wxBitmap( zoom_redraw_xpm ), msg ); - m_HToolBar->AddTool( ID_ZOOM_PAGE_BUTT, wxEmptyString, BITMAP( zoom_auto_xpm ), - _( "Zoom auto" ) ); + m_HToolBar->AddTool( ID_ZOOM_PAGE_BUTT, wxEmptyString, + wxBitmap( zoom_auto_xpm ), + _( "Zoom auto" ) ); m_HToolBar->AddSeparator(); - msg = AddHotkeyName( _( - "Find components and texts" ), s_Board_Editor_Hokeys_Descr, + msg = AddHotkeyName( _( "Find components and texts" ), + s_Board_Editor_Hokeys_Descr, HK_FIND_ITEM ); - m_HToolBar->AddTool( ID_FIND_ITEMS, wxEmptyString, BITMAP( find_xpm ), + m_HToolBar->AddTool( ID_FIND_ITEMS, wxEmptyString, wxBitmap( find_xpm ), msg ); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( ID_GET_NETLIST, wxEmptyString, BITMAP( netlist_xpm ), + m_HToolBar->AddTool( ID_GET_NETLIST, wxEmptyString, wxBitmap( netlist_xpm ), _( "Read netlist" ) ); - m_HToolBar->AddTool( ID_DRC_CONTROL, wxEmptyString, BITMAP( erc_xpm ), + m_HToolBar->AddTool( ID_DRC_CONTROL, wxEmptyString, wxBitmap( erc_xpm ), _( "Pcb Design Rules Check" ) ); m_HToolBar->AddSeparator(); ReCreateLayerBox( m_HToolBar ); PrepareLayerIndicator(); // Initialise the bitmap with current active layer colors for the next tool - m_HToolBar->AddTool( ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR, wxEmptyString, *LayerPairBitmap, - SEL_LAYER_HELP ); + m_HToolBar->AddTool( ID_AUX_TOOLBAR_PCB_SELECT_LAYER_PAIR, wxEmptyString, + *LayerPairBitmap, SEL_LAYER_HELP ); m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( ID_TOOLBARH_PCB_AUTOPLACE, wxEmptyString, BITMAP( mode_module_xpm ), - _( - "Mode Module: Manual and Automatic Move or Place for modules" ), + m_HToolBar->AddTool( ID_TOOLBARH_PCB_AUTOPLACE, wxEmptyString, + wxBitmap( mode_module_xpm ), + _( "Mode Module: Manual and Automatic Move or Place for modules" ), wxITEM_CHECK ); - m_HToolBar->AddTool( ID_TOOLBARH_PCB_AUTOROUTE, wxEmptyString, BITMAP( mode_track_xpm ), + m_HToolBar->AddTool( ID_TOOLBARH_PCB_AUTOROUTE, wxEmptyString, + wxBitmap( mode_track_xpm ), _( "Mode Track and Autorouting" ), wxITEM_CHECK ); // Fast call to FreeROUTE Web Bases router m_HToolBar->AddSeparator(); - m_HToolBar->AddTool( ID_TOOLBARH_PCB_FREEROUTE_ACCESS, wxEmptyString, BITMAP( web_support_xpm ), - _( "Fast access to theWeb Based FreeROUTE advanced router" )); + m_HToolBar->AddTool( ID_TOOLBARH_PCB_FREEROUTE_ACCESS, wxEmptyString, + wxBitmap( web_support_xpm ), + _( "Fast access to theWeb Based FreeROUTE advanced router" ) ); // after adding the buttons to the toolbar, must call Realize() to reflect // the changes m_HToolBar->Realize(); - D(printf("ReCreateHToolbar\n");) + D( printf( "ReCreateHToolbar\n" ); ) SetToolbars(); } @@ -320,61 +332,70 @@ void WinEDA_PcbFrame::ReCreateOptToolbar() return; // creation du tool bar options - m_OptionsToolBar = new WinEDA_Toolbar( TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, FALSE ); + m_OptionsToolBar = new WinEDA_Toolbar( TOOLBAR_OPTION, this, + ID_OPT_TOOLBAR, FALSE ); - m_OptionsToolBar->AddTool( ID_TB_OPTIONS_DRC_OFF, wxEmptyString, BITMAP( drc_off_xpm ), + m_OptionsToolBar->AddTool( ID_TB_OPTIONS_DRC_OFF, wxEmptyString, + wxBitmap( drc_off_xpm ), _( "Drc OFF" ), wxITEM_CHECK ); - m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, BITMAP( grid_xpm ), + m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, + wxBitmap( grid_xpm ), _( "Display Grid OFF" ), wxITEM_CHECK ); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_POLAR_COORD, wxEmptyString, - BITMAP( polar_coord_xpm ), _( - "Display Polar Coord ON" ), wxITEM_CHECK ); + wxBitmap( polar_coord_xpm ), + _( "Display Polar Coord ON" ), wxITEM_CHECK ); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString, - BITMAP( unit_inch_xpm ), _( "Units in inches" ), wxITEM_CHECK ); + wxBitmap( unit_inch_xpm ), + _( "Units in inches" ), wxITEM_CHECK ); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString, - BITMAP( unit_mm_xpm ), _( "Units in millimeters" ), wxITEM_CHECK ); + wxBitmap( unit_mm_xpm ), + _( "Units in millimeters" ), wxITEM_CHECK ); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_CURSOR, wxEmptyString, - BITMAP( cursor_shape_xpm ), + wxBitmap( cursor_shape_xpm ), _( "Change Cursor Shape" ), wxITEM_CHECK ); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_RATSNEST, wxEmptyString, - BITMAP( general_ratsnet_xpm ), + wxBitmap( general_ratsnet_xpm ), _( "Show General Ratsnest" ), wxITEM_CHECK ); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_MODULE_RATSNEST, wxEmptyString, - BITMAP( local_ratsnet_xpm ), - _( "Show Module Ratsnest when moving" ), wxITEM_CHECK ); + wxBitmap( local_ratsnet_xpm ), + _( "Show Module Ratsnest when moving" ), + wxITEM_CHECK ); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_AUTO_DEL_TRACK, wxEmptyString, - BITMAP( auto_delete_track_xpm ), + wxBitmap( auto_delete_track_xpm ), _( "Enable Auto Del Track" ), wxITEM_CHECK ); m_OptionsToolBar->AddSeparator(); - m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_ZONES, wxEmptyString, BITMAP( show_zone_xpm ), + m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_ZONES, wxEmptyString, + wxBitmap( show_zone_xpm ), _( "Show Zones" ), wxITEM_CHECK ); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, wxEmptyString, - BITMAP( pad_sketch_xpm ), + wxBitmap( pad_sketch_xpm ), _( "Show Pads Sketch" ), wxITEM_CHECK ); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_TRACKS_SKETCH, wxEmptyString, - BITMAP( showtrack_xpm ), + wxBitmap( showtrack_xpm ), _( "Show Tracks Sketch" ), wxITEM_CHECK ); - m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_HIGHT_CONTRAST_MODE, wxEmptyString, - BITMAP( palette_xpm ), - _( "Hight Contrast Mode Display" ), wxITEM_CHECK ); + m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_HIGHT_CONTRAST_MODE, + wxEmptyString, + wxBitmap( palette_xpm ), + _( "Hight Contrast Mode Display" ), + wxITEM_CHECK ); m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_HIGHT_CONTRAST_MODE, DisplayOpt.ContrastModeDisplay ); #ifdef MUWAVE_ENBL m_OptionsToolBar->AddSeparator(); - m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1, wxEmptyString, - BITMAP( mw_toolbar_xpm ), - _( - "Display auxiliary vertical toolbar (tools for micro wave applications)\n This is a very experimental feature (under development)" ), + m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1, + wxEmptyString, + wxBitmap( mw_toolbar_xpm ), + _( "Display auxiliary vertical toolbar (tools for micro wave applications)\n This is a very experimental feature (under development)" ), wxITEM_CHECK ); #endif @@ -399,65 +420,68 @@ void WinEDA_PcbFrame::ReCreateVToolbar() // Set up toolbar m_VToolBar->AddTool( ID_NO_SELECT_BUTT, wxEmptyString, - BITMAP( cursor_xpm ), wxEmptyString, wxITEM_CHECK ); + wxBitmap( cursor_xpm ), wxEmptyString, wxITEM_CHECK ); m_VToolBar->ToggleTool( ID_NO_SELECT_BUTT, TRUE ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool( ID_PCB_HIGHLIGHT_BUTT, wxEmptyString, - BITMAP( net_hightlight_xpm ), _( "Net highlight" ), wxITEM_CHECK ); + wxBitmap( net_hightlight_xpm ), _( "Net highlight" ), + wxITEM_CHECK ); m_VToolBar->AddTool( ID_PCB_SHOW_1_RATSNEST_BUTT, wxEmptyString, - BITMAP( tool_ratsnet_xpm ), - _( "Display local ratsnest (pad or module)" ), wxITEM_CHECK ); + wxBitmap( tool_ratsnet_xpm ), + _( "Display local ratsnest (pad or module)" ), + wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool( ID_COMPONENT_BUTT, wxEmptyString, - BITMAP( module_xpm ), + wxBitmap( module_xpm ), _( "Add modules" ), wxITEM_CHECK ); m_VToolBar->AddTool( ID_TRACK_BUTT, wxEmptyString, - BITMAP( add_tracks_xpm ), + wxBitmap( add_tracks_xpm ), _( "Add tracks and vias" ), wxITEM_CHECK ); m_VToolBar->AddTool( ID_PCB_ZONES_BUTT, wxEmptyString, - BITMAP( add_zone_xpm ), + wxBitmap( add_zone_xpm ), _( "Add zones" ), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool( ID_LINE_COMMENT_BUTT, wxEmptyString, - BITMAP( add_dashed_line_xpm ), + wxBitmap( add_dashed_line_xpm ), _( "Add graphic line or polygon" ), wxITEM_CHECK ); m_VToolBar->AddTool( ID_PCB_CIRCLE_BUTT, wxEmptyString, - BITMAP( add_circle_xpm ), + wxBitmap( add_circle_xpm ), _( "Add graphic circle" ), wxITEM_CHECK ); m_VToolBar->AddTool( ID_PCB_ARC_BUTT, wxEmptyString, - BITMAP( add_arc_xpm ), + wxBitmap( add_arc_xpm ), _( "Add graphic arc" ), wxITEM_CHECK ); m_VToolBar->AddTool( ID_TEXT_COMMENT_BUTT, wxEmptyString, - BITMAP( add_text_xpm ), + wxBitmap( add_text_xpm ), _( "Add text" ), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool( ID_PCB_COTATION_BUTT, wxEmptyString, - BITMAP( add_cotation_xpm ), + wxBitmap( add_cotation_xpm ), _( "Add dimension" ), wxITEM_CHECK ); m_VToolBar->AddTool( ID_PCB_MIRE_BUTT, wxEmptyString, - BITMAP( add_mires_xpm ), + wxBitmap( add_mires_xpm ), _( "Add layer alignment target" ), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool( ID_PCB_DELETE_ITEM_BUTT, wxEmptyString, - BITMAP( delete_body_xpm ), + wxBitmap( delete_body_xpm ), _( "Delete items" ), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool( ID_PCB_PLACE_OFFSET_COORD_BUTT, wxEmptyString, - BITMAP( pcb_offset_xpm ), - _( "Offset adjust for drill and place files" ), wxITEM_CHECK ); + wxBitmap( pcb_offset_xpm ), + _( "Offset adjust for drill and place files" ), + wxITEM_CHECK ); m_VToolBar->Realize(); @@ -476,41 +500,42 @@ void WinEDA_PcbFrame::ReCreateAuxVToolbar() if( m_AuxVToolBar ) return; - m_AuxVToolBar = new WinEDA_Toolbar( TOOLBAR_TOOL, this, ID_AUX_V_TOOLBAR, FALSE ); + m_AuxVToolBar = new WinEDA_Toolbar( TOOLBAR_TOOL, this, + ID_AUX_V_TOOLBAR, FALSE ); // Set up toolbar m_AuxVToolBar->AddTool( ID_PCB_MUWAVE_TOOL_SELF_CMD, - BITMAP( mw_Add_Line_xpm ), - wxNullBitmap, TRUE, - -1, -1, (wxObject*) NULL, - _( "Create line of specified length for microwave applications" ) ); + wxBitmap( mw_Add_Line_xpm ), + wxNullBitmap, TRUE, + -1, -1, (wxObject*) NULL, + _( "Create line of specified length for microwave applications" ) ); m_AuxVToolBar->AddTool( ID_PCB_MUWAVE_TOOL_GAP_CMD, - BITMAP( mw_Add_Gap_xpm ), - wxNullBitmap, TRUE, - -1, -1, (wxObject*) NULL, - _( "Create gap of specified length for microwave applications" ) ); + wxBitmap( mw_Add_Gap_xpm ), + wxNullBitmap, TRUE, + -1, -1, (wxObject*) NULL, + _( "Create gap of specified length for microwave applications" ) ); m_AuxVToolBar->AddSeparator(); m_AuxVToolBar->AddTool( ID_PCB_MUWAVE_TOOL_STUB_CMD, - BITMAP( mw_Add_Stub_xpm ), - wxNullBitmap, TRUE, - -1, -1, (wxObject*) NULL, - _( "Create stub of specified length for microwave applications" ) ); + wxBitmap( mw_Add_Stub_xpm ), + wxNullBitmap, TRUE, + -1, -1, (wxObject*) NULL, + _( "Create stub of specified length for microwave applications" ) ); m_AuxVToolBar->AddTool( ID_PCB_MUWAVE_TOOL_STUB_ARC_CMD, - BITMAP( mw_Add_stub_arc_xpm ), + wxBitmap( mw_Add_stub_arc_xpm ), wxNullBitmap, TRUE, -1, -1, (wxObject*) NULL, _( "Create stub (arc) of specified length for microwave applications" ) ); m_AuxVToolBar->AddTool( ID_PCB_MUWAVE_TOOL_FUNCTION_SHAPE_CMD, - BITMAP( mw_Add_Shape_xpm ), - wxNullBitmap, TRUE, - -1, -1, (wxObject*) NULL, - _( "Create a polynomial shape for microwave applications" ) ); + wxBitmap( mw_Add_Shape_xpm ), + wxNullBitmap, TRUE, + -1, -1, (wxObject*) NULL, + _( "Create a polynomial shape for microwave applications" ) ); m_AuxVToolBar->Realize(); @@ -532,48 +557,51 @@ void WinEDA_PcbFrame::ReCreateAuxiliaryToolbar() * zoom level choice */ { - int ii; + size_t i; wxString msg; if( m_AuxiliaryToolBar == NULL ) { - m_AuxiliaryToolBar = new WinEDA_Toolbar( TOOLBAR_AUX, this, ID_AUX_TOOLBAR, TRUE ); + m_AuxiliaryToolBar = new WinEDA_Toolbar( TOOLBAR_AUX, this, + ID_AUX_TOOLBAR, TRUE ); // Set up toolbar m_AuxiliaryToolBar->AddSeparator(); m_SelTrackWidthBox = new WinEDAChoiceBox( m_AuxiliaryToolBar, ID_AUX_TOOLBAR_PCB_TRACK_WIDTH, - wxPoint( -1, - -1 ), wxSize( LISTBOX_WIDTH + 20, -1 ) ); + wxPoint( -1, -1 ), + wxSize( LISTBOX_WIDTH + 20, -1 ) ); m_AuxiliaryToolBar->AddControl( m_SelTrackWidthBox ); m_SelTrackWidthBox_Changed = TRUE; m_AuxiliaryToolBar->AddTool( ID_AUX_TOOLBAR_PCB_SELECT_AUTO_WIDTH, wxEmptyString, - BITMAP( auto_track_width_xpm ), - _( - "Auto track width: when starting on an existing track use its width\notherwise, use current width setting" ), + wxBitmap( auto_track_width_xpm ), + _( "Auto track width: when starting on an existing track use its width\notherwise, use current width setting" ), wxITEM_CHECK ); m_AuxiliaryToolBar->AddSeparator(); m_SelViaSizeBox = new WinEDAChoiceBox( m_AuxiliaryToolBar, - ID_AUX_TOOLBAR_PCB_VIA_SIZE, - wxPoint( -1, -1 ), wxSize( LISTBOX_WIDTH + 10, -1 ) ); + ID_AUX_TOOLBAR_PCB_VIA_SIZE, + wxPoint( -1, -1 ), + wxSize( LISTBOX_WIDTH + 10, -1 ) ); m_AuxiliaryToolBar->AddControl( m_SelViaSizeBox ); m_AuxiliaryToolBar->AddSeparator(); // Boite de selection du pas de grille m_SelGridBox = new WinEDAChoiceBox( m_AuxiliaryToolBar, - ID_ON_GRID_SELECT, - wxPoint( -1, -1 ), wxSize( LISTBOX_WIDTH, -1 ) ); + ID_ON_GRID_SELECT, + wxPoint( -1, -1 ), + wxSize( LISTBOX_WIDTH, -1 ) ); m_AuxiliaryToolBar->AddControl( m_SelGridBox ); // Boite de selection du Zoom m_AuxiliaryToolBar->AddSeparator(); m_SelZoomBox = new WinEDAChoiceBox( m_AuxiliaryToolBar, - ID_ON_ZOOM_SELECT, - wxPoint( -1, -1 ), wxSize( LISTBOX_WIDTH, -1 ) ); + ID_ON_ZOOM_SELECT, + wxPoint( -1, -1 ), + wxSize( LISTBOX_WIDTH, -1 ) ); msg = _( "Auto" ); m_SelZoomBox->Append( msg ); for( int jj = 0, ii = 1; ii <= m_ZoomMaxValue; ii <<= 1, jj++ ) @@ -598,18 +626,28 @@ void WinEDA_PcbFrame::ReCreateAuxiliaryToolbar() else format += wxT( " %.3f" ); - for( ii = 0; g_GridList[ii].x > 0; ii++ ) + for( i = 0; i < GetScreen()->m_GridList.GetCount(); i++ ) { - double value = To_User_Unit( g_UnitMetric, g_GridList[ii].x, PCB_INTERNAL_UNIT ); - if( g_UnitMetric == INCHES ) - msg.Printf( format.GetData(), value * 1000 ); + GRID_TYPE grid = GetScreen()->m_GridList[i]; + double value = To_User_Unit( g_UnitMetric, + grid.m_Size.x, + PCB_INTERNAL_UNIT ); + if( grid.m_Id != ID_POPUP_GRID_USER ) + { + if( g_UnitMetric == INCHES ) + msg.Printf( format.GetData(), value * 1000 ); + else + msg.Printf( format.GetData(), value ); + } else - msg.Printf( format.GetData(), value ); + { + msg = _( "User Grid" ); + } + + m_SelGridBox->Append( msg ); } - m_SelGridBox->Append( _( "User Grid" ) ); - m_SelViaSizeBox_Changed = TRUE; m_SelTrackWidthBox_Changed = TRUE; @@ -657,8 +695,8 @@ WinEDAChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent ) if( parent == NULL ) return NULL; - m_SelLayerBox = new WinEDAChoiceBox( parent, ID_TOOLBARH_PCB_SELECT_LAYER, - + m_SelLayerBox = new WinEDAChoiceBox( parent, + ID_TOOLBARH_PCB_SELECT_LAYER, wxPoint( -1, -1 ), #if defined (__UNIX__) @@ -707,7 +745,8 @@ WinEDAChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent ) if( g_TabOneLayerMask[layer] & layer_mask ) { wxString msg = m_Pcb->GetLayerName( layer ); - msg = AddHotkeyName( msg, s_Board_Editor_Hokeys_Descr, HK_SwitchLayer[layer] ); + msg = AddHotkeyName( msg, s_Board_Editor_Hokeys_Descr, + HK_SwitchLayer[layer] ); m_SelLayerBox->Append( msg ); //D(printf("appending layername=%s, ndx=%d, layer=%d\n", CONV_TO_UTF8(msg), listNdx, layer );) diff --git a/share/drawframe.cpp b/share/drawframe.cpp index 0f8a5a889b..f21b1e936a 100644 --- a/share/drawframe.cpp +++ b/share/drawframe.cpp @@ -40,7 +40,8 @@ WinEDA_DrawFrame::WinEDA_DrawFrame( wxWindow* father, int idtype, WinEDA_App* parent, const wxString& title, - const wxPoint& pos, const wxSize& size, long style ) : + const wxPoint& pos, const wxSize& size, + long style ) : WinEDA_BasicFrame( father, idtype, parent, title, pos, size, style ) { wxSize minsize; @@ -118,7 +119,8 @@ WinEDA_DrawFrame::~WinEDA_DrawFrame() /****************************************/ { if( DrawPanel ) // Required: in WinEDA3D_DrawFrame, DrawPanel == NULL ! - m_Parent->m_EDA_Config->Write( wxT( "AutoPAN" ), DrawPanel->m_AutoPAN_Enable ); + m_Parent->m_EDA_Config->Write( wxT( "AutoPAN" ), + DrawPanel->m_AutoPAN_Enable ); } @@ -135,7 +137,7 @@ void WinEDA_DrawFrame::AddFontSelectionMenu( wxMenu* main_menu ) ID_PREFERENCES_FONT_DIALOG, _( "Dialog boxes" ), fonts_xpm ); - + ADD_MENUITEM( fontmenu, ID_PREFERENCES_FONT_INFOSCREEN, _( "Lists" ), @@ -150,8 +152,7 @@ void WinEDA_DrawFrame::AddFontSelectionMenu( wxMenu* main_menu ) fontmenu, ID_PREFERENCES_FONT, _( "&Font" ), - _( - "Choose font type and size for dialogs, infos and status box" ), + _( "Choose font type and size for dialogs, infos and status box" ), fonts_xpm ); } @@ -273,17 +274,14 @@ void WinEDA_DrawFrame::OnSelectGrid( wxCommandEvent& event ) if( m_SelGridBox == NULL ) return; // Should not occurs - int id = m_SelGridBox->GetChoice(); - if( id < 0 ) - return; - - BASE_SCREEN* screen = GetBaseScreen(); + BASE_SCREEN* screen = GetBaseScreen(); screen->m_Curseur = DrawPanel->GetScreenCenterRealPosition(); - wxSize grid = screen->GetGrid(); - screen->SetGrid( g_GridList[id] ); - wxSize newgrid = screen->GetGrid(); - if( newgrid.x != grid.x || newgrid.y != grid.y ) + wxSize current_grid = screen->GetGrid(); + screen->SetGrid( event.GetSelection() + ID_POPUP_GRID_LEVEL_1000 ); + wxSize selected_grid = screen->GetGrid(); + + if( selected_grid != current_grid ) Recadre_Trace( FALSE ); } @@ -464,19 +462,22 @@ void WinEDA_DrawFrame::OnSize( wxSizeEvent& SizeEv ) { opt_size.x = 0; opt_size.y = m_OptionsToolBar->GetSize().y; - m_OptionsToolBar->SetSize( Auxtoolbar_size.x, 0, size.x, opt_size.y ); + m_OptionsToolBar->SetSize( Auxtoolbar_size.x, 0, + size.x, opt_size.y ); } else { opt_size.x = m_OptionsToolBar->GetSize().x; opt_size.y = 0; - m_OptionsToolBar->SetSize( 0, Auxtoolbar_size.y, opt_size.x, size.y ); + m_OptionsToolBar->SetSize( 0, Auxtoolbar_size.y, + opt_size.x, size.y ); } } if( DrawPanel ) { - DrawPanel->SetSize( size.x - Vtoolbar_size.x - opt_size.x, size.y - opt_size.y - 1 ); + DrawPanel->SetSize( size.x - Vtoolbar_size.x - opt_size.x, + size.y - opt_size.y - 1 ); DrawPanel->Move( opt_size.x, opt_size.y + Auxtoolbar_size.y + 1 ); } @@ -515,8 +516,8 @@ void WinEDA_DrawFrame::SetToolID( int id, int new_cursor_id, #ifdef PCBNEW // handle color changes for transitions in and out of ID_TRACK_BUTT - if( (m_ID_current_state==ID_TRACK_BUTT && id!=ID_TRACK_BUTT) - || (m_ID_current_state!=ID_TRACK_BUTT && id==ID_TRACK_BUTT) ) + if( ( m_ID_current_state==ID_TRACK_BUTT && id!=ID_TRACK_BUTT ) + || ( m_ID_current_state!=ID_TRACK_BUTT && id==ID_TRACK_BUTT ) ) { if( DisplayOpt.ContrastModeDisplay ) redraw = true; @@ -826,9 +827,9 @@ void WinEDA_DrawFrame::AdjustScrollBars() DrawPanel->SetScrollbars( DrawPanel->m_Scroll_unit, DrawPanel->m_Scroll_unit, screen->m_ScrollbarNumber.x, - screen->m_ScrollbarNumber.y, - screen->m_ScrollbarPos.x, - screen->m_ScrollbarPos.y, TRUE ); + screen->m_ScrollbarNumber.y, + screen->m_ScrollbarPos.x, + screen->m_ScrollbarPos.y, TRUE ); } diff --git a/share/zoom.cpp b/share/zoom.cpp index 4ee0588dcc..784e394ff2 100644 --- a/share/zoom.cpp +++ b/share/zoom.cpp @@ -8,29 +8,12 @@ */ #include "fctsys.h" -#include "gr_basic.h" #include "common.h" #include "macros.h" -#ifdef EESCHEMA -#include "program.h" -#include "libcmp.h" -#include "general.h" -#endif - -#ifdef PCBNEW -#include "pcbnew.h" -#endif - -#ifdef CVPCB -#include "cvpcb.h" -#endif - #include "bitmaps.h" -#include "protos.h" - #include "id.h" @@ -67,34 +50,24 @@ void WinEDA_DrawFrame::PutOnGrid( wxPoint* coord ) * @param coord = coordinate to adjust */ { - double ftmp; + double tmp; + wxSize grid_size = GetBaseScreen()->GetGrid(); if( !GetBaseScreen()->m_UserGridIsON ) { - wxSize grid_size = GetBaseScreen()->GetGrid(); + tmp = (double) coord->x / (double) grid_size.x; + coord->x = ( (int) round( tmp ) ) * grid_size.x; - ftmp = (double) coord->x / grid_size.x; - coord->x = ( (int) round( ftmp ) ) * grid_size.x; - - ftmp = (double) coord->y / grid_size.y; - coord->y = ( (int) round( ftmp ) ) * grid_size.y; + tmp = (double) coord->y / (double) grid_size.y; + coord->y = ( (int) round( tmp ) ) * grid_size.y; } else { - double pasx = GetBaseScreen()->m_UserGrid.x * m_InternalUnits; - double pasy = GetBaseScreen()->m_UserGrid.y * m_InternalUnits; + double pasx = (double) ( grid_size.x * m_InternalUnits ); + double pasy = (double) ( grid_size.y * m_InternalUnits ); - if( GetBaseScreen()->m_UserGridUnit != INCHES ) - { - pasx /= 25.4; - pasy /= 25.4; - } - - int nn = (int) round( coord->x / pasx ); - coord->x = (int) round( pasx * nn ); - - nn = (int) round( coord->y / pasy ); - coord->y = (int) round( pasy * nn ); + coord->x = (int) round( pasx * ( (double) coord->x / pasx ) ); + coord->y = (int) round( pasy * ( (double) coord->y / pasy ) ); } } @@ -230,87 +203,20 @@ void WinEDA_DrawPanel::Process_Popup_Zoom( wxCommandEvent& event ) m_Parent->Recadre_Trace( TRUE ); break; - case ID_POPUP_GRID_LEVEL_1: - GetScreen()->SetGrid( wxSize( 1, 1 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_LEVEL_2: - GetScreen()->SetGrid( wxSize( 2, 2 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_LEVEL_5: - GetScreen()->SetGrid( wxSize( 5, 5 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_LEVEL_10: - GetScreen()->SetGrid( wxSize( 10, 10 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_LEVEL_20: - GetScreen()->SetGrid( wxSize( 20, 20 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_LEVEL_25: - GetScreen()->SetGrid( wxSize( 25, 25 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_LEVEL_50: - GetScreen()->SetGrid( wxSize( 50, 50 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_LEVEL_100: - GetScreen()->SetGrid( wxSize( 100, 100 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_LEVEL_200: - GetScreen()->SetGrid( wxSize( 200, 200 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_LEVEL_250: - GetScreen()->SetGrid( wxSize( 250, 250 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_LEVEL_500: - GetScreen()->SetGrid( wxSize( 500, 500 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_LEVEL_1000: - GetScreen()->SetGrid( wxSize( 1000, 1000 ) ); - m_Parent->ReDrawPanel(); - break; - - case ID_POPUP_GRID_USER: - GetScreen()->SetGrid( wxSize( -1, -1 ) ); - m_Parent->ReDrawPanel(); - break; - default: - DisplayError( this, wxT( "WinEDA_DrawPanel::Process_Popup_Zoom() ID error" ) ); + DisplayError( this, + wxT( "WinEDA_DrawPanel::Process_Popup_Zoom() ID error" ) ); break; } m_Parent->Affiche_Status_Box(); } - -class grid_list_struct +void WinEDA_DrawPanel::OnPopupGridSelect( wxCommandEvent& event ) { -public: - int m_Value; - int m_Id; -}; - + GetScreen()->SetGrid( event.GetId() ); + m_Parent->ReDrawPanel(); +} /*************************************************************/ void WinEDA_DrawPanel::AddMenuZoom( wxMenu* MasterMenu ) @@ -320,53 +226,29 @@ void WinEDA_DrawPanel::AddMenuZoom( wxMenu* MasterMenu ) * used in OnRightClick(wxMouseEvent& event) */ { + size_t i; int zoom; wxSize grid; int zoom_value; - wxString zoom_msg = _( "Zoom: " ); - wxString grid_msg = _( "Grid: " ), msg; + wxString msg; int ii; wxString line; + GRID_TYPE tmp; - static const grid_list_struct grid_list_pcb[] = - { - { 1000, ID_POPUP_GRID_LEVEL_1000 }, - { 500, ID_POPUP_GRID_LEVEL_500 }, - { 250, ID_POPUP_GRID_LEVEL_250 }, - { 200, ID_POPUP_GRID_LEVEL_200 }, - { 100, ID_POPUP_GRID_LEVEL_100 }, - { 50, ID_POPUP_GRID_LEVEL_50 }, - { 25, ID_POPUP_GRID_LEVEL_25 }, - { 20, ID_POPUP_GRID_LEVEL_20 }, - { 10, ID_POPUP_GRID_LEVEL_10 }, - { 5, ID_POPUP_GRID_LEVEL_5 }, - { 2, ID_POPUP_GRID_LEVEL_2 }, - { 1, ID_POPUP_GRID_LEVEL_1 }, - { 0, ID_POPUP_GRID_USER } - }; - - static const grid_list_struct grid_list_schematic[] = - { - { 50, ID_POPUP_GRID_LEVEL_50 }, - { 25, ID_POPUP_GRID_LEVEL_25 }, - { 10, ID_POPUP_GRID_LEVEL_10 }, - { 5, ID_POPUP_GRID_LEVEL_5 }, - { 2, ID_POPUP_GRID_LEVEL_2 }, - { 1, ID_POPUP_GRID_LEVEL_1 }, - { 0, ID_POPUP_GRID_USER } - }; - - - ADD_MENUITEM( MasterMenu, ID_POPUP_ZOOM_CENTER, _( "Center" ), zoom_center_xpm ); + ADD_MENUITEM( MasterMenu, ID_POPUP_ZOOM_CENTER, _( "Center" ), + zoom_center_xpm ); ADD_MENUITEM( MasterMenu, ID_POPUP_ZOOM_IN, _( "Zoom in" ), zoom_in_xpm ); ADD_MENUITEM( MasterMenu, ID_POPUP_ZOOM_OUT, _( "Zoom out" ), zoom_out_xpm ); - ADD_MENUITEM( MasterMenu, ID_POPUP_ZOOM_AUTO, _( "Zoom auto" ), zoom_auto_xpm ); + ADD_MENUITEM( MasterMenu, ID_POPUP_ZOOM_AUTO, _( "Zoom auto" ), + zoom_auto_xpm ); wxMenu* zoom_choice = new wxMenu; ADD_MENUITEM_WITH_SUBMENU( MasterMenu, zoom_choice, - ID_POPUP_ZOOM_SELECT, _( "Zoom select" ), zoom_select_xpm ); + ID_POPUP_ZOOM_SELECT, _( "Zoom select" ), + zoom_select_xpm ); - ADD_MENUITEM( MasterMenu, ID_POPUP_ZOOM_REDRAW, _( "Redraw view" ), zoom_redraw_xpm ); + ADD_MENUITEM( MasterMenu, ID_POPUP_ZOOM_REDRAW, _( "Redraw view" ), + zoom_redraw_xpm ); /* Create the basic zoom list: */ zoom = GetScreen()->GetZoom(); @@ -375,74 +257,43 @@ void WinEDA_DrawPanel::AddMenuZoom( wxMenu* MasterMenu ) { line.Printf( wxT( "%u" ), zoom_value ); zoom_choice->Append( ID_POPUP_ZOOM_LEVEL_1 + ii, - zoom_msg + line, wxEmptyString, TRUE ); + _( "Zoom: " ) + line, wxEmptyString, TRUE ); if( zoom == zoom_value ) zoom_choice->Check( ID_POPUP_ZOOM_LEVEL_1 + ii, TRUE ); } - wxMenu* grid_choice = new wxMenu; - ADD_MENUITEM_WITH_SUBMENU( MasterMenu, grid_choice, - ID_POPUP_GRID_SELECT, _( "Grid Select" ), grid_select_xpm ); - - grid = GetScreen()->GetGrid(); - - // Create grid list - switch( m_Parent->m_Ident ) + /* Create grid submenu as required. */ + if( !GetScreen()->m_GridList.IsEmpty() ) { - case MODULE_EDITOR_FRAME: - case GERBER_FRAME: - case PCB_FRAME: - case CVPCB_DISPLAY_FRAME: - for( ii = 0; ; ii++ ) - { - if ( grid_list_pcb[ii].m_Value ) - { - double grid_value = To_User_Unit(g_UnitMetric, grid_list_pcb[ii].m_Value, - ((WinEDA_DrawFrame*)m_Parent)->m_InternalUnits); - if ( g_UnitMetric == 0) // inches - line.Printf(wxT("%g mils"), grid_value*1000); - else - line.Printf(wxT("%g mm"), grid_value); - } - else line = _("grid user"); - msg = grid_msg + line; - grid_choice->Append( grid_list_pcb[ii].m_Id, msg, wxEmptyString, TRUE ); - if( grid_list_pcb[ii].m_Value <= 0 ) - { - if( GetScreen()->m_UserGridIsON ) - grid_choice->Check( grid_list_pcb[ii].m_Id, TRUE ); - break; - } - if( grid.x == grid_list_pcb[ii].m_Value ) - grid_choice->Check( grid_list_pcb[ii].m_Id, TRUE ); - } + wxMenu* grid_choice = new wxMenu; + ADD_MENUITEM_WITH_SUBMENU( MasterMenu, grid_choice, + ID_POPUP_GRID_SELECT, _( "Grid Select" ), + grid_select_xpm ); - break; + grid = GetScreen()->GetGrid(); - case SCHEMATIC_FRAME: - case LIBEDITOR_FRAME: - for( ii = 0; ; ii++ ) + for( i = 0; i < GetScreen()->m_GridList.GetCount(); i++ ) { - if( grid_list_schematic[ii].m_Value <= 0 ) - break; - double grid_value = To_User_Unit(g_UnitMetric, grid_list_schematic[ii].m_Value, - ((WinEDA_DrawFrame*)m_Parent)->m_InternalUnits); - if ( g_UnitMetric == 0) // inches - line.Printf(wxT("%g mils"), grid_value*1000); + tmp = GetScreen()->m_GridList[i]; + double grid_value = To_User_Unit( g_UnitMetric, + tmp.m_Size.x, + ( (WinEDA_DrawFrame*)m_Parent )->m_InternalUnits ); + if( tmp.m_Id == ID_POPUP_GRID_USER ) + { + msg = _( "User Grid" ); + } else - line.Printf(wxT("%g mm"), grid_value); - - msg = grid_msg + line; - grid_choice->Append( grid_list_schematic[ii].m_Id, - msg, wxEmptyString, TRUE ); - if( grid.x == grid_list_schematic[ii].m_Value ) - grid_choice->Check( grid_list_schematic[ii].m_Id, TRUE ); + { + if ( g_UnitMetric == 0 ) // inches + line.Printf( wxT( "%g mils" ), grid_value*1000 ); + else + line.Printf( wxT( "%g mm" ), grid_value ); + msg = _( "Grid: " ) + line; + } + grid_choice->Append( tmp.m_Id, msg, wxEmptyString, true ); + if( grid == tmp.m_Size ) + grid_choice->Check( tmp.m_Id, true ); } - - break; - - case VIEWER_FRAME: - break; } MasterMenu->AppendSeparator();