Pcbnew: fix bug 804780.
All: use double instead of int to store zoom values.
This commit is contained in:
parent
bcfac4b477
commit
f00696e835
|
@ -222,9 +222,9 @@ void WinEDA3D_DrawFrame::OnRightClick( const wxPoint& MousePos,
|
|||
}
|
||||
|
||||
|
||||
int WinEDA3D_DrawFrame::BestZoom()
|
||||
double WinEDA3D_DrawFrame::BestZoom()
|
||||
{
|
||||
return 1;
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -246,7 +246,7 @@ public:
|
|||
void OnLeftClick( wxDC* DC, const wxPoint& MousePos );
|
||||
void OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu );
|
||||
void OnKeyEvent( wxKeyEvent& event );
|
||||
int BestZoom();
|
||||
double BestZoom();
|
||||
void RedrawActiveWindow( wxDC* DC, bool EraseBg );
|
||||
void Process_Special_Functions( wxCommandEvent& event );
|
||||
void Process_Zoom( wxCommandEvent& event );
|
||||
|
|
|
@ -24,8 +24,7 @@ BASE_SCREEN::BASE_SCREEN( KICAD_T aType ) : EDA_ITEM( aType )
|
|||
m_FirstRedraw = TRUE;
|
||||
m_ScreenNumber = 1;
|
||||
m_NumberOfScreen = 1; /* Hierarchy: Root: ScreenNumber = 1 */
|
||||
m_ZoomScalar = 10;
|
||||
m_Zoom = 32 * m_ZoomScalar;
|
||||
m_Zoom = 32.0;
|
||||
m_Grid.m_Size = wxRealPoint( 50, 50 ); /* Default grid size */
|
||||
m_Grid.m_Id = ID_POPUP_GRID_LEVEL_50;
|
||||
m_Center = true;
|
||||
|
@ -106,7 +105,7 @@ void BASE_SCREEN::SetPageSize( wxSize& aPageSize )
|
|||
*/
|
||||
double BASE_SCREEN::GetScalingFactor() const
|
||||
{
|
||||
double scale = (double) m_ZoomScalar / (double) GetZoom();
|
||||
double scale = 1.0 / GetZoom();
|
||||
return scale;
|
||||
}
|
||||
|
||||
|
@ -118,7 +117,7 @@ double BASE_SCREEN::GetScalingFactor() const
|
|||
*/
|
||||
void BASE_SCREEN::SetScalingFactor(double aScale )
|
||||
{
|
||||
int zoom = static_cast<int>( ceil(aScale * m_ZoomScalar) );
|
||||
double zoom = aScale;
|
||||
|
||||
// Limit zoom to max and min allowed values:
|
||||
if (zoom < m_ZoomList[0])
|
||||
|
@ -132,7 +131,7 @@ void BASE_SCREEN::SetScalingFactor(double aScale )
|
|||
SetZoom( zoom );
|
||||
}
|
||||
|
||||
void BASE_SCREEN::SetZoomList( const wxArrayInt& zoomlist )
|
||||
void BASE_SCREEN::SetZoomList( const wxArrayDouble& zoomlist )
|
||||
{
|
||||
if( !m_ZoomList.IsEmpty() )
|
||||
m_ZoomList.Empty();
|
||||
|
@ -145,9 +144,9 @@ bool BASE_SCREEN::SetFirstZoom()
|
|||
{
|
||||
if( m_ZoomList.IsEmpty() )
|
||||
{
|
||||
if( m_Zoom != m_ZoomScalar )
|
||||
if( m_Zoom != 1.0 )
|
||||
{
|
||||
m_Zoom = m_ZoomScalar;
|
||||
m_Zoom = 1.0;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -161,22 +160,19 @@ bool BASE_SCREEN::SetFirstZoom()
|
|||
}
|
||||
|
||||
|
||||
int BASE_SCREEN::GetZoom() const
|
||||
double BASE_SCREEN::GetZoom() const
|
||||
{
|
||||
return m_Zoom;
|
||||
}
|
||||
|
||||
|
||||
bool BASE_SCREEN::SetZoom( int coeff )
|
||||
bool BASE_SCREEN::SetZoom( double coeff )
|
||||
{
|
||||
if( coeff == m_Zoom )
|
||||
return false;
|
||||
|
||||
m_Zoom = coeff;
|
||||
|
||||
if( m_Zoom < 1 )
|
||||
m_Zoom = 1;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#endif
|
||||
|
||||
#ifndef KICAD_BUILD_VERSION
|
||||
#define KICAD_BUILD_VERSION "(2011-07-03)"
|
||||
#define KICAD_BUILD_VERSION "(2011-07-04)"
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -384,7 +384,7 @@ void EDA_DRAW_FRAME::OnSelectZoom( wxCommandEvent& event )
|
|||
|
||||
|
||||
/* Return the current zoom level */
|
||||
int EDA_DRAW_FRAME::GetZoom( void )
|
||||
double EDA_DRAW_FRAME::GetZoom( void )
|
||||
{
|
||||
return GetScreen()->GetZoom();
|
||||
}
|
||||
|
@ -658,10 +658,7 @@ void EDA_DRAW_FRAME::UpdateStatusBar()
|
|||
return;
|
||||
|
||||
/* Display Zoom level: zoom = zoom_coeff/ZoomScalar */
|
||||
if ( (screen->GetZoom() % screen->m_ZoomScalar) == 0 )
|
||||
Line.Printf( wxT( "Z %d" ), screen->GetZoom() / screen->m_ZoomScalar );
|
||||
else
|
||||
Line.Printf( wxT( "Z %.1f" ), (float)screen->GetZoom() / screen->m_ZoomScalar );
|
||||
Line.Printf( wxT( "Z %g" ), screen->GetZoom() );
|
||||
|
||||
SetStatusText( Line, 1 );
|
||||
|
||||
|
|
|
@ -177,12 +177,7 @@ void EDA_DRAW_FRAME::AddMenuZoomAndGrid( wxMenu* MasterMenu )
|
|||
/* Populate zoom submenu. */
|
||||
for( int i = 0; i < maxZoomIds; i++ )
|
||||
{
|
||||
if( ( screen->m_ZoomList[i] % screen->m_ZoomScalar ) == 0 )
|
||||
msg.Printf( wxT( "%u" ),
|
||||
screen->m_ZoomList[i] / screen->m_ZoomScalar );
|
||||
else
|
||||
msg.Printf( wxT( "%.1f" ),
|
||||
(float) screen->m_ZoomList[i] / screen->m_ZoomScalar );
|
||||
msg.Printf( wxT( "%g" ), screen->m_ZoomList[i] );
|
||||
|
||||
zoom_choice->Append( ID_POPUP_ZOOM_LEVEL_START + i, _( "Zoom: " ) + msg,
|
||||
wxEmptyString, wxITEM_CHECK );
|
||||
|
|
|
@ -346,7 +346,7 @@ void LIB_EDIT_FRAME::OnCloseWindow( wxCloseEvent& Event )
|
|||
}
|
||||
|
||||
|
||||
int LIB_EDIT_FRAME::BestZoom()
|
||||
double LIB_EDIT_FRAME::BestZoom()
|
||||
{
|
||||
/* Please, note: wxMSW before version 2.9 seems have
|
||||
* problems with zoom values < 1 ( i.e. userscale > 1) and needs to be patched:
|
||||
|
@ -377,12 +377,10 @@ int LIB_EDIT_FRAME::BestZoom()
|
|||
|
||||
// Reserve a 10% margin around component bounding box.
|
||||
double margin_scale_factor = 0.8;
|
||||
double zx =(double) dx / ( margin_scale_factor * (double)size.x ) *
|
||||
(double) GetScreen()->m_ZoomScalar;
|
||||
double zy = (double) dy / ( margin_scale_factor * (double)size.y) *
|
||||
(double) GetScreen()->m_ZoomScalar;
|
||||
double zx =(double) dx / (margin_scale_factor * (double)size.x );
|
||||
double zy = (double) dy / ( margin_scale_factor * (double)size.y );
|
||||
|
||||
int bestzoom = wxRound( MAX( zx, zy ) );
|
||||
double bestzoom = MAX( zx, zy );
|
||||
|
||||
// keep it >= minimal existing zoom (can happen for very small components
|
||||
// for instance when starting a new component
|
||||
|
|
|
@ -103,7 +103,7 @@ public:
|
|||
void CreateOptionToolbar();
|
||||
void OnLeftClick( wxDC* DC, const wxPoint& MousePos );
|
||||
bool OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu );
|
||||
int BestZoom(); // Returns the best zoom
|
||||
double BestZoom(); // Returns the best zoom
|
||||
void OnLeftDClick( wxDC* DC, const wxPoint& MousePos );
|
||||
|
||||
SCH_SCREEN* GetScreen() { return (SCH_SCREEN*) EDA_DRAW_FRAME::GetScreen(); }
|
||||
|
|
|
@ -39,12 +39,13 @@
|
|||
* see http://trac.wxwidgets.org/ticket/9554
|
||||
* This is a workaround that is not a full fix, but remaining artifacts are acceptable
|
||||
*/
|
||||
static int SchematicZoomList[] =
|
||||
static double SchematicZoomList[] =
|
||||
{
|
||||
5, 7, 10, 15, 20, 30, 40, 60, 80, 120, 160, 230, 320, 480, 640, 800, 1280
|
||||
0.5, 0.7, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0, 8.0,
|
||||
12.0, 16.0, 23.0, 32.0, 48.0, 64.0, 80.0, 128.0
|
||||
};
|
||||
|
||||
#define SCHEMATIC_ZOOM_LIST_CNT ( sizeof( SchematicZoomList ) / sizeof( int ) )
|
||||
#define SCHEMATIC_ZOOM_LIST_CNT ( sizeof( SchematicZoomList ) / sizeof( SchematicZoomList[0] ) )
|
||||
#define MM_TO_SCH_UNITS 1000.0 / 25.4 //schematic internal unites are mils
|
||||
|
||||
|
||||
|
|
|
@ -246,7 +246,7 @@ SCH_EDIT_FRAME::SCH_EDIT_FRAME( wxWindow* father,
|
|||
m_auimgr.Update();
|
||||
|
||||
// Now Drawpanel is sized, we can use BestZoom to show the component (if any)
|
||||
BestZoom();
|
||||
GetScreen()->SetZoom( BestZoom() );
|
||||
}
|
||||
|
||||
|
||||
|
@ -345,7 +345,7 @@ void SCH_EDIT_FRAME::CreateScreens()
|
|||
if( GetScreen() == NULL )
|
||||
SetScreen( new SCH_SCREEN() );
|
||||
|
||||
GetScreen()->SetZoom( 4 * GetScreen()->m_ZoomScalar );
|
||||
GetScreen()->SetZoom( 32.0 );
|
||||
GetScreen()->m_UndoRedoCountMax = 10;
|
||||
}
|
||||
|
||||
|
@ -432,7 +432,7 @@ void SCH_EDIT_FRAME::OnCloseWindow( wxCloseEvent& Event )
|
|||
}
|
||||
|
||||
|
||||
int SCH_EDIT_FRAME::BestZoom()
|
||||
double SCH_EDIT_FRAME::BestZoom()
|
||||
{
|
||||
int dx, dy;
|
||||
wxSize size;
|
||||
|
@ -445,12 +445,10 @@ int SCH_EDIT_FRAME::BestZoom()
|
|||
// Reserve no margin because best zoom shows the full page
|
||||
// and margins are already included in function that draws the sheet refernces
|
||||
double margin_scale_factor = 1.0;
|
||||
double zx =(double) dx / ( margin_scale_factor * (double)size.x ) *
|
||||
(double) GetScreen()->m_ZoomScalar;
|
||||
double zy = (double) dy / ( margin_scale_factor * (double)size.y) *
|
||||
(double) GetScreen()->m_ZoomScalar;
|
||||
double zx =(double) dx / ( margin_scale_factor * (double)size.x );
|
||||
double zy = (double) dy / ( margin_scale_factor * (double)size.y );
|
||||
|
||||
int bestzoom = wxRound( MAX( zx, zy ) );
|
||||
double bestzoom = MAX( zx, zy );
|
||||
|
||||
GetScreen()->SetScrollCenterPosition( wxPoint( dx / 2, dy / 2 ) );
|
||||
|
||||
|
|
|
@ -309,7 +309,7 @@ void LIB_VIEW_FRAME::OnSetRelativeOffset( wxCommandEvent& event )
|
|||
}
|
||||
|
||||
|
||||
int LIB_VIEW_FRAME::BestZoom()
|
||||
double LIB_VIEW_FRAME::BestZoom()
|
||||
{
|
||||
/* Please, note: wxMSW before version 2.9 seems have
|
||||
* problems with zoom values < 1 ( i.e. userscale > 1) and needs to be patched:
|
||||
|
@ -319,7 +319,7 @@ int LIB_VIEW_FRAME::BestZoom()
|
|||
*/
|
||||
LIB_COMPONENT* component = NULL;
|
||||
CMP_LIBRARY* lib;
|
||||
int bestzoom = 16; // default value for bestzoom
|
||||
double bestzoom = 16.0; // default value for bestzoom
|
||||
|
||||
lib = CMP_LIBRARY::FindLibrary( m_libraryName );
|
||||
|
||||
|
@ -339,14 +339,12 @@ int LIB_VIEW_FRAME::BestZoom()
|
|||
// Reserve a 10% margin around component bounding box.
|
||||
double margin_scale_factor = 0.8;
|
||||
double zx =(double) BoundaryBox.GetWidth() /
|
||||
( margin_scale_factor * (double)size.x ) *
|
||||
(double) GetScreen()->m_ZoomScalar;
|
||||
( margin_scale_factor * (double)size.x );
|
||||
double zy = (double) BoundaryBox.GetHeight() /
|
||||
( margin_scale_factor * (double)size.y) *
|
||||
(double) GetScreen()->m_ZoomScalar;
|
||||
( margin_scale_factor * (double)size.y);
|
||||
|
||||
// Calculates the best zoom
|
||||
bestzoom = wxRound( MAX( zx, zy ) );
|
||||
bestzoom = MAX( zx, zy );
|
||||
|
||||
// keep it >= minimal existing zoom (can happen for very small components
|
||||
// like small power symbols
|
||||
|
|
|
@ -60,7 +60,7 @@ public:
|
|||
void ReCreateHToolbar();
|
||||
void ReCreateVToolbar();
|
||||
void OnLeftClick( wxDC* DC, const wxPoint& MousePos );
|
||||
int BestZoom();
|
||||
double BestZoom();
|
||||
void ClickOnLibList( wxCommandEvent& event );
|
||||
void ClickOnCmpList( wxCommandEvent& event );
|
||||
void OnSetRelativeOffset( wxCommandEvent& event );
|
||||
|
|
|
@ -148,13 +148,12 @@ void GERBVIEW_FRAME::OnCloseWindow( wxCloseEvent& Event )
|
|||
}
|
||||
|
||||
|
||||
int GERBVIEW_FRAME::BestZoom()
|
||||
double GERBVIEW_FRAME::BestZoom()
|
||||
{
|
||||
// gives a minimal value to zoom, if no item in list
|
||||
if( GetBoard()->m_Drawings == NULL )
|
||||
return 16 * GetScreen()->m_ZoomScalar;
|
||||
return 160.0;
|
||||
|
||||
double x, y;
|
||||
EDA_RECT bbox;
|
||||
BOARD_ITEM* item = GetBoard()->m_Drawings;
|
||||
|
||||
|
@ -168,11 +167,11 @@ int GERBVIEW_FRAME::BestZoom()
|
|||
|
||||
wxSize size = DrawPanel->GetClientSize();
|
||||
|
||||
x = (double) bbox.GetWidth() / (double) size.x;
|
||||
y = (double) bbox.GetHeight() / (double) size.y;
|
||||
double x = (double) bbox.GetWidth() / (double) size.x;
|
||||
double y = (double) bbox.GetHeight() / (double) size.y;
|
||||
GetScreen()->SetScrollCenterPosition( bbox.Centre() );
|
||||
|
||||
int best_zoom = wxRound( MAX( x, y ) * (double) GetScreen()->m_ZoomScalar );
|
||||
double best_zoom = MAX( x, y );
|
||||
return best_zoom;
|
||||
}
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ public: GERBVIEW_FRAME( wxWindow* father, const wxString& title,
|
|||
void OnLeftClick( wxDC* DC, const wxPoint& MousePos );
|
||||
void OnLeftDClick( wxDC* DC, const wxPoint& MousePos );
|
||||
bool OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu );
|
||||
int BestZoom();
|
||||
double BestZoom();
|
||||
|
||||
/**
|
||||
* Function ReportMessage
|
||||
|
|
|
@ -122,9 +122,8 @@ public:
|
|||
/* Grid and zoom values. */
|
||||
wxPoint m_GridOrigin;
|
||||
|
||||
wxArrayInt m_ZoomList; /* Array of standard zoom coefficients. */
|
||||
int m_Zoom; /* Current zoom coefficient. */
|
||||
int m_ZoomScalar; /* Allow zooming to non-integer increments. */
|
||||
wxArrayDouble m_ZoomList; /* Array of standard zoom (i.e. scale) coefficients. */
|
||||
double m_Zoom; /* Current zoom coefficient. */
|
||||
bool m_IsPrinting;
|
||||
|
||||
public:
|
||||
|
@ -278,21 +277,21 @@ public:
|
|||
* Note: the zoom factor is NOT the scaling factor
|
||||
* the scaling factor is m_ZoomScalar * GetZoom()
|
||||
*/
|
||||
int GetZoom() const;
|
||||
double GetZoom() const;
|
||||
|
||||
/**
|
||||
* Function SetZoom
|
||||
* adjusts the current zoom factor
|
||||
* @param coeff - Zoom coefficient.
|
||||
*/
|
||||
bool SetZoom( int coeff );
|
||||
bool SetZoom( double coeff );
|
||||
|
||||
/**
|
||||
* Function SetZoomList
|
||||
* sets the list of zoom factors.
|
||||
* @param aZoomList An array of zoom factors in ascending order, zero terminated
|
||||
*/
|
||||
void SetZoomList( const wxArrayInt& aZoomList );
|
||||
void SetZoomList( const wxArrayDouble& aZoomList );
|
||||
|
||||
bool SetNextZoom();
|
||||
bool SetPreviousZoom();
|
||||
|
|
|
@ -114,7 +114,7 @@ public:
|
|||
return (PCB_SCREEN*) EDA_DRAW_FRAME::GetScreen();
|
||||
}
|
||||
|
||||
int BestZoom();
|
||||
virtual double BestZoom();
|
||||
|
||||
virtual void Show3D_Frame( wxCommandEvent& event );
|
||||
|
||||
|
|
|
@ -225,7 +225,7 @@ public:
|
|||
void OnLeftDClick( wxDC* aDC, const wxPoint& aPosition );
|
||||
bool OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu );
|
||||
void OnSelectOptionToolbar( wxCommandEvent& event );
|
||||
int BestZoom();
|
||||
double BestZoom();
|
||||
|
||||
/**
|
||||
* Function LocateAndShowItem
|
||||
|
|
|
@ -468,10 +468,10 @@ public:
|
|||
void Window_Zoom( EDA_RECT& Rect );
|
||||
|
||||
/* Return the zoom level which displays the full page on screen */
|
||||
virtual int BestZoom() = 0;
|
||||
virtual double BestZoom() = 0;
|
||||
|
||||
/* Return the current zoom level */
|
||||
int GetZoom( void );
|
||||
double GetZoom( void );
|
||||
|
||||
void TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_width );
|
||||
void PlotWorkSheet( PLOTTER *plotter, BASE_SCREEN* screen );
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
; General Product Description Definitions
|
||||
!define PRODUCT_NAME "KiCad"
|
||||
!define PRODUCT_VERSION "2011.07.03"
|
||||
!define PRODUCT_VERSION "2011.07.04"
|
||||
!define PRODUCT_WEB_SITE "http://iut-tice.ujf-grenoble.fr/kicad/"
|
||||
!define SOURCEFORGE_WEB_SITE "http://kicad.sourceforge.net/"
|
||||
!define COMPANY_NAME ""
|
||||
|
|
|
@ -99,14 +99,14 @@ void PCB_BASE_FRAME::SetBoard( BOARD* aBoard )
|
|||
/**
|
||||
* Return the "best" zoom, i.e. the zoom which shows the entire board on screen
|
||||
*/
|
||||
int PCB_BASE_FRAME::BestZoom( void )
|
||||
double PCB_BASE_FRAME::BestZoom( void )
|
||||
{
|
||||
int dx, dy, ii, jj;
|
||||
int bestzoom;
|
||||
int dx, dy;
|
||||
double ii, jj;
|
||||
wxSize size;
|
||||
|
||||
if( m_Pcb == NULL )
|
||||
return 32 * GetScreen()->m_ZoomScalar;
|
||||
return 32.0;
|
||||
|
||||
m_Pcb->ComputeBoundingBox();
|
||||
|
||||
|
@ -115,19 +115,19 @@ int PCB_BASE_FRAME::BestZoom( void )
|
|||
size = DrawPanel->GetClientSize();
|
||||
|
||||
if( size.x )
|
||||
ii = wxRound( ( (double) dx + ((double) size.x / 2.0) ) / (double) size.x );
|
||||
ii = (double)(dx + ( size.x / 2) ) / (double) size.x;
|
||||
else
|
||||
ii = 31;
|
||||
ii = 32.0;
|
||||
|
||||
if ( size.y )
|
||||
jj = wxRound( ( (double) dy + ((double) size.y / 2.0) ) / (double) size.y );
|
||||
jj = (double)( dy + (size.y / 2) ) / (double) size.y;
|
||||
else
|
||||
jj = 31;
|
||||
jj = 32.0;
|
||||
|
||||
bestzoom = MAX( ii, jj ) + 1;
|
||||
double bestzoom = MAX( ii, jj );
|
||||
GetScreen()->SetScrollCenterPosition( m_Pcb->m_BoundaryBox.Centre() );
|
||||
|
||||
return bestzoom * GetScreen()->m_ZoomScalar;
|
||||
return bestzoom ;
|
||||
}
|
||||
|
||||
|
||||
|
@ -614,15 +614,9 @@ void PCB_BASE_FRAME::updateZoomSelectBox()
|
|||
{
|
||||
msg = _( "Zoom " );
|
||||
|
||||
if ( ( GetScreen()->m_ZoomList[i] % GetScreen()->m_ZoomScalar ) == 0 )
|
||||
msg << GetScreen()->m_ZoomList[i] / GetScreen()->m_ZoomScalar;
|
||||
else
|
||||
{
|
||||
wxString value;
|
||||
value.Printf( wxT( "%.1f" ),
|
||||
(float)GetScreen()->m_ZoomList[i] / GetScreen()->m_ZoomScalar );
|
||||
msg += value;
|
||||
}
|
||||
wxString value;
|
||||
value.Printf( wxT( "%g" ), GetScreen()->m_ZoomList[i]);
|
||||
msg += value;
|
||||
|
||||
m_SelZoomBox->Append( msg );
|
||||
|
||||
|
|
|
@ -22,13 +22,14 @@
|
|||
* Also useful in Gerbview for this reason.
|
||||
* Zoom 5 and 10 can create artefacts when drawing (integer overflow in low level graphic functions )
|
||||
*/
|
||||
static const int PcbZoomList[] =
|
||||
static const double PcbZoomList[] =
|
||||
{
|
||||
5, 10, 15, 20, 30, 45, 70, 100, 150, 220, 350, 500, 800, 1200,
|
||||
2000, 3500, 5000, 10000, 20000
|
||||
0.5, 1.0, 1.5, 2.0, 3.0, 4.5, 7.0,
|
||||
10.0, 15.0, 22.0, 35.0, 50.0, 80.0, 120.0,
|
||||
200.0, 350.0, 500.0, 1000.0, 2000.0
|
||||
};
|
||||
|
||||
#define PCB_ZOOM_LIST_CNT ( sizeof( PcbZoomList ) / sizeof( int ) )
|
||||
#define PCB_ZOOM_LIST_CNT ( sizeof( PcbZoomList ) / sizeof( PcbZoomList[0] ) )
|
||||
#define MM_TO_PCB_UNITS 10000.0 / 25.4
|
||||
|
||||
|
||||
|
|
|
@ -506,6 +506,9 @@ bool PCB_BASE_FRAME::Save_Module_In_Library( const wxString& aLibName,
|
|||
FILE* lib_module, * dest;
|
||||
bool added = true;
|
||||
|
||||
if( aModule == NULL )
|
||||
return false;
|
||||
|
||||
aModule->DisplayInfo( this );
|
||||
|
||||
if( !wxFileExists( aLibName ) )
|
||||
|
|
|
@ -260,6 +260,8 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
}
|
||||
|
||||
case ID_MODEDIT_SAVE_LIBMODULE:
|
||||
if( GetBoard()->m_Modules == NULL )
|
||||
break;
|
||||
{
|
||||
wxFileName fn;
|
||||
fn = wxFileName( wxEmptyString, m_CurrentLib, ModuleFileExtension );
|
||||
|
|
|
@ -93,7 +93,6 @@ BEGIN_EVENT_TABLE( WinEDA_ModuleEditFrame, PCB_BASE_FRAME )
|
|||
// Menu 3D Frame
|
||||
EVT_MENU( ID_MENU_PCB_SHOW_3D_FRAME, WinEDA_ModuleEditFrame::Show3D_Frame )
|
||||
|
||||
EVT_UPDATE_UI( ID_MODEDIT_SAVE_LIBMODULE, WinEDA_ModuleEditFrame::OnUpdateLibSelected )
|
||||
EVT_UPDATE_UI( ID_MODEDIT_DELETE_PART, WinEDA_ModuleEditFrame::OnUpdateLibSelected )
|
||||
EVT_UPDATE_UI( ID_MODEDIT_EXPORT_PART, WinEDA_ModuleEditFrame::OnUpdateModuleSelected )
|
||||
EVT_UPDATE_UI( ID_MODEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
release version:
|
||||
2011 jul 03
|
||||
2011 jul 04
|
||||
files (.zip,.tgz):
|
||||
kicad-2011-07-03
|
||||
kicad-2011-07-04
|
||||
|
|
Loading…
Reference in New Issue