Updated to 2015.03.21 snapshot

This commit is contained in:
Denis Silakov 2015-04-02 16:22:59 +03:00
parent 41e24a2cd0
commit c93e3d9911
15 changed files with 323 additions and 1607 deletions

View file

@ -1,4 +1,10 @@
sources:
"kicad-doc-bzr303.tar.bz2": 3503587bd091f8c15f2633f168c90514f63b8a50
"kicad-library-bzr114.tar.bz2": 19662fef6745d49f959290b50b7f7d9bea29e104
"kicad-sources-bzr3256.tar.bz2": 742cb2b99c7e99fabfe50397c0573743dc013542
Epcos-MKT-1.0.tar.bz2: 99dd9e99814a8c2664c76bc6376f2121e21058ae
kicad-2015.03.21.tar.xz: ddfa3b1c20c847b930458cc43e1a4dafeac14e87
kicad-doc-2015.03.21.tar.xz: c5d4aa5f689e20d5931fd81c31ba36b02b7917ee
kicad-doc-bzr303.tar.bz2: 3503587bd091f8c15f2633f168c90514f63b8a50
kicad-footprints-2015.03.21.tar.xz: 1145acbc7364afa47fd1dc7cab928c4294fd981f
kicad-libraries-2015.03.21.tar.xz: d4cbf42cea39166c23320312d05e85210e6b2c4b
kicad-library-bzr114.tar.bz2: 19662fef6745d49f959290b50b7f7d9bea29e104
kicad-sources-bzr3256.tar.bz2: 742cb2b99c7e99fabfe50397c0573743dc013542
kicad-walter-libraries-2015.03.21.tar.xz: c34c7c18a858923e8cd327a6b7b27d9ae6949e85

View file

@ -1,11 +0,0 @@
--- include/boost/polygon/polygon.hpp.orig 2011-07-12 19:16:41.000000000 +0200
+++ include/boost/polygon/polygon.hpp 2012-01-25 19:34:06.000000000 +0100
@@ -24,6 +24,8 @@
#include "transform.hpp"
#include "detail/transform_detail.hpp"
+#include "detail/polygon_sort_adaptor.hpp"
+
//interval
#include "interval_data.hpp"
#include "interval_traits.hpp"

View file

@ -1,10 +0,0 @@
--- common/CMakeLists.txt.orig 2011-06-17 18:15:55.000000000 +0200
+++ common/CMakeLists.txt 2011-07-12 19:26:20.000000000 +0200
@@ -67,6 +67,7 @@
wxwineda.cpp
xnode.cpp
zoom.cpp
+ ../pcbnew/class_drc_item.cpp
)
add_library(common ${COMMON_SRCS})

View file

@ -1,152 +0,0 @@
diff -ru kicad-2012.01.19-3.rev3256/cvpcb/cvframe.cpp kicad-2012.01.19-4.rev3256/cvpcb/cvframe.cpp
--- kicad-2012.01.19-3.rev3256/cvpcb/cvframe.cpp 2012-01-22 17:23:37.000000000 +0100
+++ kicad-2012.01.19-4.rev3256/cvpcb/cvframe.cpp 2012-01-27 17:41:38.000000000 +0100
@@ -525,6 +525,25 @@
}
m_FootprintList->SetFootprintFilteredList( &m_components[ selection ], m_footprints );
+
+ // Preview of the already assigned footprint.
+ // Find the footprint that was already choosen for this component and select it.
+ wxString module = *(&m_components[ selection ].m_Module);
+
+ for( int ii = 0; ii < m_FootprintList->GetCount(); ii++ )
+ {
+ wxString footprintName;
+ wxString msg = (*m_FootprintList->m_ActiveFootprintList)[ii];
+ msg.Trim( true );
+ msg.Trim( false );
+ footprintName = msg.AfterFirst( wxChar( ' ' ) );
+
+ if( module.Cmp( footprintName ) == 0 )
+ m_FootprintList->SetSelection( ii, true );
+ else
+ m_FootprintList->SetSelection( ii, false );
+ }
+
SendMessageToEESCHEMA();
DisplayStatus();
}
@@ -660,13 +679,13 @@
selection = m_ListCmp->GetSelection();
- if ( selection < 0 )
- selection = 0;
+ if ( selection < 0 )
+ selection = 0;
if( &m_components[ selection ] == NULL )
- return;
+ return;
- Component = &m_components[ selection ];
+ Component = &m_components[ selection ];
sprintf( cmd, "$PART: \"%s\"", TO_UTF8( Component->m_Reference ) );
diff -ru kicad-2012.01.19-3.rev3256/pcbnew/basepcbframe.cpp kicad-2012.01.19-4.rev3256/pcbnew/basepcbframe.cpp
--- kicad-2012.01.19-3.rev3256/pcbnew/basepcbframe.cpp 2012-01-22 17:23:38.000000000 +0100
+++ kicad-2012.01.19-4.rev3256/pcbnew/basepcbframe.cpp 2012-01-27 17:44:46.000000000 +0100
@@ -390,6 +390,8 @@
guide.SetIgnoreModulesOnCmp( ! m_Pcb->IsElementVisible( MOD_FR_VISIBLE ) );
guide.SetIgnorePadsOnBack( ! m_Pcb->IsElementVisible( PAD_BK_VISIBLE ) );
guide.SetIgnorePadsOnFront( ! m_Pcb->IsElementVisible( PAD_FR_VISIBLE ) );
+ guide.SetIgnoreModulesVals( ! m_Pcb->IsElementVisible( MOD_VALUES_VISIBLE ) );
+ guide.SetIgnoreModulesRefs( ! m_Pcb->IsElementVisible( MOD_REFERENCES_VISIBLE ) );
return guide;
}
diff -ru kicad-2012.01.19-3.rev3256/pcbnew/collectors.cpp kicad-2012.01.19-4.rev3256/pcbnew/collectors.cpp
--- kicad-2012.01.19-3.rev3256/pcbnew/collectors.cpp 2012-01-22 17:23:38.000000000 +0100
+++ kicad-2012.01.19-4.rev3256/pcbnew/collectors.cpp 2012-01-27 17:45:33.000000000 +0100
@@ -280,6 +280,12 @@
if( m_Guide->IgnoreMTextsOnCmp() && module->GetLayer()==LAYER_N_FRONT )
goto exit;
+
+ if( m_Guide->IgnoreModulesVals() && item == module->m_Value )
+ goto exit;
+
+ if( m_Guide->IgnoreModulesRefs() && item == module->m_Reference )
+ goto exit;
}
break;
diff -ru kicad-2012.01.19-3.rev3256/pcbnew/collectors.h kicad-2012.01.19-4.rev3256/pcbnew/collectors.h
--- kicad-2012.01.19-3.rev3256/pcbnew/collectors.h 2012-01-22 17:23:38.000000000 +0100
+++ kicad-2012.01.19-4.rev3256/pcbnew/collectors.h 2012-01-27 17:47:12.000000000 +0100
@@ -176,6 +176,18 @@
}
/**
+ * Function IgnoreModulesVals
+ * @return bool - true if should ignore modules values.
+ */
+ virtual bool IgnoreModulesVals() const = 0;
+
+ /**
+ * Function IgnoreModulesRefs
+ * @return bool - true if should ignore module references.
+ */
+ virtual bool IgnoreModulesRefs() const = 0;
+
+ /**
* Function UseHitTesting
* @return bool - true if Inspect() should use BOARD_ITEM::HitTest()
* or false if Inspect() should use BOARD_ITEM::BoundsTest().
@@ -383,6 +395,8 @@
bool m_IgnoreModulesOnCmp;
bool m_IgnorePadsOnFront;
bool m_IgnorePadsOnBack;
+ bool m_IgnoreModulesVals;
+ bool m_IgnoreModulesRefs;
public:
@@ -419,6 +433,9 @@
m_IgnorePadsOnFront = false;
m_IgnorePadsOnBack = false;
+
+ m_IgnoreModulesVals = false;
+ m_IgnoreModulesRefs = false;
}
@@ -550,6 +567,20 @@
*/
bool IgnorePadsOnFront() const { return m_IgnorePadsOnFront; }
void SetIgnorePadsOnFront(bool ignore) { m_IgnorePadsOnFront = ignore; }
+
+ /**
+ * Function IgnoreModulesVals
+ * @return bool - true if should ignore modules values.
+ */
+ bool IgnoreModulesVals() const { return m_IgnoreModulesVals; }
+ void SetIgnoreModulesVals(bool ignore) { m_IgnoreModulesVals = ignore; }
+
+ /**
+ * Function IgnoreModulesRefs
+ * @return bool - true if should ignore modules references.
+ */
+ bool IgnoreModulesRefs() const { return m_IgnoreModulesRefs; }
+ void SetIgnoreModulesRefs(bool ignore) { m_IgnoreModulesRefs = ignore; }
};
diff -ru kicad-2012.01.19-3.rev3256/TODO.txt kicad-2012.01.19-4.rev3256/TODO.txt
--- kicad-2012.01.19-3.rev3256/TODO.txt 2012-01-22 17:23:38.000000000 +0100
+++ kicad-2012.01.19-4.rev3256/TODO.txt 2012-01-27 17:39:15.000000000 +0100
@@ -26,11 +26,6 @@
but is now in scripts/python/ky temporarily.
-CvPCB
------
-* Preview of the already assigned footprint.
-
-
EESchema
--------
* Drag and drop between two EESchema windows.

View file

@ -1,17 +0,0 @@
diff -r -u old/scripts/bom-in-python/ky/ky.py new/scripts/bom-in-python/ky/ky.py
--- old/scripts/bom-in-python/ky/ky.py 2012-01-21 19:01:36.000000000 +0100
+++ new/scripts/bom-in-python/ky/ky.py 2012-01-21 21:43:23.464126596 +0100
@@ -298,11 +298,11 @@
self.libparts.append(part(self._curr_element))
# If this element is a net, add it to the nets list
- if self._curr_element.name = "net"
+ if self._curr_element.name == "net":
self.nets.append(self._curr_element)
# If this element is a library, add it to the libraries list
- if self._curr_element.name = "library"
+ if self._curr_element.name == "library":
self.libraries.append(self._curr_element)
return self._curr_element

View file

@ -1,11 +0,0 @@
--- pcb_calculator/CMakeLists.txt.orig 2012-01-22 17:23:40.000000000 +0100
+++ pcb_calculator/CMakeLists.txt 2012-01-23 20:52:58.000000000 +0100
@@ -62,7 +62,7 @@
${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
endif(APPLE)
-target_link_libraries( pcb_calculator common polygon bitmaps
+target_link_libraries( pcb_calculator common polygon kbool bitmaps
${wxWidgets_LIBRARIES}
)

View file

@ -1,11 +0,0 @@
--- pcbnew/plotps.cpp.orig 2012-01-22 17:23:38.000000000 +0100
+++ pcbnew/plotps.cpp 2012-01-23 22:00:58.000000000 +0100
@@ -100,7 +100,7 @@
PS_PLOTTER* plotter = new PS_PLOTTER();
plotter->set_paper_size( SheetPS );
plotter->set_scale_adjust( g_PcbPlotOptions.m_FineScaleAdjustX,
- g_PcbPlotOptions.m_FineScaleAdjustX );
+ g_PcbPlotOptions.m_FineScaleAdjustY );
plotter->set_viewport( offset, scale, g_PcbPlotOptions.m_PlotMirror );
plotter->set_default_line_width( g_PcbPlotOptions.m_PlotLineWidth );
plotter->set_creator( wxT( "PCBNEW-PS" ) );

View file

@ -1,21 +0,0 @@
--- eeschema/tool_sch.cpp~ 2012-01-26 23:08:12.000000000 +0100
+++ eeschema/tool_sch.cpp 2012-01-26 23:08:12.000000000 +0100
@@ -187,15 +187,15 @@
m_VToolBar->AddTool( ID_NOCONN_BUTT, wxEmptyString, KiBitmap( noconn_xpm ),
HELP_PLACE_NC_FLAG, wxITEM_CHECK );
+ m_VToolBar->AddTool( ID_JUNCTION_BUTT, wxEmptyString, KiBitmap( add_junction_xpm ),
+ HELP_PLACE_JUNCTION, wxITEM_CHECK );
+
m_VToolBar->AddTool( ID_LABEL_BUTT, wxEmptyString, KiBitmap( add_line_label_xpm ),
HELP_PLACE_NETLABEL, wxITEM_CHECK );
m_VToolBar->AddTool( ID_GLABEL_BUTT, wxEmptyString, KiBitmap( add_glabel_xpm ),
HELP_PLACE_GLOBALLABEL, wxITEM_CHECK );
- m_VToolBar->AddTool( ID_JUNCTION_BUTT, wxEmptyString, KiBitmap( add_junction_xpm ),
- HELP_PLACE_JUNCTION, wxITEM_CHECK );
-
m_VToolBar->AddTool( ID_HIERLABEL_BUTT, wxEmptyString, KiBitmap( add_hierarchical_label_xpm ),
HELP_PLACE_HIER_LABEL, wxITEM_CHECK );

View file

@ -1,11 +0,0 @@
--- pcbnew/class_board.cpp.orig 2012-01-22 17:23:38.000000000 +0100
+++ pcbnew/class_board.cpp 2012-01-27 18:49:34.000000000 +0100
@@ -1684,8 +1684,6 @@
int idxmax = aPadList.size()-1;
int delta = aPadList.size();
- if( delta & 1 && delta > 1 )
- delta += 1;
int idx = 0; // Starting index is the beginning of list
while( delta )

View file

@ -1,740 +0,0 @@
diff -ru kicad-2012.01.19-4.rev3256/common/common_plotPS_functions.cpp kicad-2012.01.19-5.rev3256/common/common_plotPS_functions.cpp
--- kicad-2012.01.19-4.rev3256/common/common_plotPS_functions.cpp 2012-01-22 17:23:37.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/common/common_plotPS_functions.cpp 2012-01-27 20:21:51.000000000 +0100
@@ -489,16 +489,18 @@
void PS_PLOTTER::flash_pad_circle( wxPoint pos, int diametre,
GRTraceMode modetrace )
{
+ int current_line_width;
wxASSERT( output_file );
set_current_line_width( -1 );
- if( current_pen_width >= diametre )
- set_current_line_width( diametre );
+ current_line_width = get_current_line_width();
+ if( current_line_width > diametre )
+ current_line_width = diametre;
if( modetrace == FILLED )
- circle( pos, diametre - current_pen_width, FILLED_SHAPE );
+ circle( pos, diametre - current_pen_width, FILLED_SHAPE, current_line_width );
else
- circle( pos, diametre - current_pen_width, NO_FILL );
+ circle( pos, diametre - current_pen_width, NO_FILL, current_line_width );
set_current_line_width( -1 );
}
diff -ru kicad-2012.01.19-4.rev3256/include/plot_common.h kicad-2012.01.19-5.rev3256/include/plot_common.h
--- kicad-2012.01.19-4.rev3256/include/plot_common.h 2012-01-22 17:23:38.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/include/plot_common.h 2012-01-27 20:59:30.000000000 +0100
@@ -77,6 +77,20 @@
virtual void set_color( int color ) = 0;
virtual void set_dash( bool dashed ) = 0;
+ virtual int get_current_line_width()
+ {
+ return current_pen_width;
+ }
+
+ virtual void set_plot_width_adj( double width )
+ {
+ }
+
+ virtual double get_plot_width_adj()
+ {
+ return 0.;
+ }
+
virtual void set_creator( const wxString& _creator )
{
creator = _creator;
@@ -350,6 +364,16 @@
plot_scale_adjX = scaleX;
plot_scale_adjY = scaleY;
}
+
+ virtual void set_plot_width_adj( double width )
+ {
+ plot_width_adj = width;
+ }
+
+ virtual double get_plot_width_adj()
+ {
+ return plot_width_adj;
+ }
virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror );
@@ -393,6 +417,7 @@
protected:
double plot_scale_adjX, plot_scale_adjY;
+ double plot_width_adj;
};
/* Class to handle a D_CODE when plotting a board : */
diff -ru kicad-2012.01.19-4.rev3256/pcbnew/class_board.cpp kicad-2012.01.19-5.rev3256/pcbnew/class_board.cpp
--- kicad-2012.01.19-4.rev3256/pcbnew/class_board.cpp 2012-01-22 17:23:38.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/pcbnew/class_board.cpp 2012-01-27 20:25:02.000000000 +0100
@@ -278,6 +278,21 @@
}
+int BOARD::GetSmallestClearanceValue()
+{
+ int clearance = m_NetClasses.GetDefault()->GetClearance();
+
+ //Read list of Net Classes
+ for( NETCLASSES::const_iterator nc = m_NetClasses.begin(); nc != m_NetClasses.end(); nc++ )
+ {
+ NETCLASS* netclass = nc->second;
+ clearance = MIN( clearance, netclass->GetClearance() );
+ }
+
+ return clearance;
+}
+
+
int BOARD::GetCurrentMicroViaSize()
{
NETCLASS* netclass = m_NetClasses.Find( m_CurrentNetClassName );
diff -ru kicad-2012.01.19-4.rev3256/pcbnew/class_board.h kicad-2012.01.19-5.rev3256/pcbnew/class_board.h
--- kicad-2012.01.19-4.rev3256/pcbnew/class_board.h 2012-01-22 17:23:39.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/pcbnew/class_board.h 2012-01-27 20:26:22.000000000 +0100
@@ -761,6 +761,12 @@
int GetBiggestClearanceValue();
/**
+ * Function GetSmallestClearanceValue
+ * @return the smallest clearance value found in NetClasses list
+ */
+ int GetSmallestClearanceValue();
+
+ /**
* Function GetCurrentTrackWidth
* @return the current track width, according to the selected options
* ( using the default netclass value or a preset value )
diff -ru kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.cpp kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.cpp
--- kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.cpp 2012-01-22 17:23:35.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.cpp 2012-01-27 20:31:44.000000000 +0100
@@ -179,7 +179,6 @@
m_GerberOptionsSizer->Add( m_excludeEdgeLayerOpt, 0, wxTOP|wxRIGHT|wxLEFT, 2 );
m_subtractMaskFromSilk = new wxCheckBox( this, wxID_ANY, _("Subtract soldermask from silkscreen"), wxDefaultPosition, wxDefaultSize, 0 );
- m_subtractMaskFromSilk->SetValue(true);
m_subtractMaskFromSilk->SetToolTip( _("Remove silkscreen from areas without soldermask") );
m_GerberOptionsSizer->Add( m_subtractMaskFromSilk, 0, wxTOP|wxRIGHT|wxLEFT, 2 );
@@ -268,6 +267,20 @@
bSizer17->Add( bSizer19, 1, wxEXPAND, 5 );
+ wxBoxSizer* bSizer191;
+ bSizer191 = new wxBoxSizer( wxVERTICAL );
+
+ m_textPSFineAdjustWidth = new wxStaticText( this, wxID_ANY, _("Width correction"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_textPSFineAdjustWidth->Wrap( -1 );
+ bSizer191->Add( m_textPSFineAdjustWidth, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
+
+ m_PSFineAdjustWidthOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+ m_PSFineAdjustWidthOpt->SetToolTip( _("Set global width correction for exact width postscript output.\nThese width correction is intended to compensate tracks width and also pads and vias size errors.\nThe reasonable width correction value must be in a range of [-(MinTrackWidth-1), +(MinClearanceValue-1)] in decimils.") );
+
+ bSizer191->Add( m_PSFineAdjustWidthOpt, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
+
+ bSizer17->Add( bSizer191, 1, wxEXPAND, 5 );
+
m_PSOptionsSizer->Add( bSizer17, 1, wxEXPAND, 5 );
m_plotPSNegativeOpt = new wxCheckBox( this, wxID_ANY, _("Negative plot"), wxDefaultPosition, wxDefaultSize, 0 );
diff -ru kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.fbp kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.fbp
--- kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.fbp 2012-01-22 17:23:35.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.fbp 2012-01-27 20:42:20.000000000 +0100
@@ -3416,6 +3416,189 @@
</object>
</object>
</object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxEXPAND</property>
+ <property name="proportion">1</property>
+ <object class="wxBoxSizer" expanded="1">
+ <property name="minimum_size"></property>
+ <property name="name">bSizer191</property>
+ <property name="orient">wxVERTICAL</property>
+ <property name="permission">none</property>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxLEFT|wxRIGHT|wxTOP</property>
+ <property name="proportion">0</property>
+ <object class="wxStaticText" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_name"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="label">Width correction</property>
+ <property name="layer"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_textPSFineAdjustWidth</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="position"></property>
+ <property name="resize">Resizable</property>
+ <property name="row"></property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip"></property>
+ <property name="validator_data_type"></property>
+ <property name="validator_style">wxFILTER_NONE</property>
+ <property name="validator_type">wxDefaultValidator</property>
+ <property name="validator_variable"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <property name="wrap">-1</property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT</property>
+ <property name="proportion">0</property>
+ <object class="wxTextCtrl" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_name"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="layer"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="maxlength">0</property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_PSFineAdjustWidthOpt</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="position"></property>
+ <property name="resize">Resizable</property>
+ <property name="row"></property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip">Set global width correction for exact width postscript output.&#x0A;These width correction is intended to compensate tracks width and also pads and vias size errors.&#x0A;The reasonable width correction value must be in a range of [-(MinTrackWidth-1), +(MinClearanceValue-1)] in decimils.</property>
+ <property name="validator_data_type"></property>
+ <property name="validator_style">wxFILTER_NONE</property>
+ <property name="validator_type">wxDefaultValidator</property>
+ <property name="validator_variable"></property>
+ <property name="value"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnText"></event>
+ <event name="OnTextEnter"></event>
+ <event name="OnTextMaxLen"></event>
+ <event name="OnTextURL"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ </object>
+ </object>
</object>
</object>
<object class="sizeritem" expanded="0">
diff -ru kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.h kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.h
--- kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.h 2012-01-22 17:23:35.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.h 2012-01-27 20:43:04.000000000 +0100
@@ -85,6 +85,8 @@
wxTextCtrl* m_fineAdjustXscaleOpt;
wxStaticText* m_staticText8;
wxTextCtrl* m_fineAdjustYscaleOpt;
+ wxStaticText* m_textPSFineAdjustWidth;
+ wxTextCtrl* m_PSFineAdjustWidthOpt;
wxCheckBox* m_plotPSNegativeOpt;
wxCheckBox* m_forcePSA4OutputOpt;
wxTextCtrl* m_messagesBox;
diff -ru kicad-2012.01.19-4.rev3256/pcbnew/pcbplot.cpp kicad-2012.01.19-5.rev3256/pcbnew/pcbplot.cpp
--- kicad-2012.01.19-4.rev3256/pcbnew/pcbplot.cpp 2012-01-22 17:23:38.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/pcbnew/pcbplot.cpp 2012-01-28 15:27:08.000000000 +0100
@@ -24,6 +24,7 @@
/* Keywords to r/w options in m_Config */
#define CONFIG_XFINESCALE_ADJ wxT( "PlotXFineScaleAdj" )
#define CONFIG_YFINESCALE_ADJ wxT( "PlotYFineScaleAdj" )
+#define CONFIG_PS_FINEWIDTH_ADJ wxT( "PSPlotFineWidthAdj" )
// Define min and max reasonable values for print scale
#define MIN_SCALE 0.01
@@ -59,10 +60,13 @@
private:
PCB_EDIT_FRAME* m_Parent;
wxConfig* m_Config;
- std::vector<int> layerList; // List to hold CheckListBox layer numbers
+ std::vector<int> layerList; // List to hold CheckListBox layer numbers
double m_XScaleAdjust;
double m_YScaleAdjust;
- static wxPoint prevPosition; // Dialog position & size
+ double m_PSWidthAdjust; // Global width correction for exact width postscript output.
+ double m_WidthAdjustMinValue; // Global width correction
+ double m_WidthAdjustMaxValue; // margins.
+ static wxPoint prevPosition; // Dialog position & size
static wxSize prevSize;
public:
@@ -114,6 +118,12 @@
m_Config->Read( CONFIG_XFINESCALE_ADJ, &m_XScaleAdjust );
m_Config->Read( CONFIG_YFINESCALE_ADJ, &m_YScaleAdjust );
+ m_Config->Read( CONFIG_PS_FINEWIDTH_ADJ, &m_PSWidthAdjust);
+
+ // The reasonable width correction value must be in a range of
+ // [-(MinTrackWidth-1), +(MinClearanceValue-1)] decimils.
+ m_WidthAdjustMinValue = -(board->GetBoardDesignSettings()->m_TrackMinWidth - 1);
+ m_WidthAdjustMaxValue = board->GetSmallestClearanceValue() - 1;
m_plotFormatOpt->SetSelection( g_PcbPlotOptions.GetPlotFormat() );
@@ -135,6 +145,12 @@
msg = ReturnStringFromValue( g_UserUnit, g_PcbPlotOptions.GetPlotLineWidth(),
PCB_INTERNAL_UNIT );
m_linesWidth->AppendText( msg );
+
+ // Set units for PS global width correction.
+ AddUnitSymbol( *m_textPSFineAdjustWidth, g_UserUnit );
+
+ // Set units for PS global width correction.
+ AddUnitSymbol( *m_textPSFineAdjustWidth, g_UserUnit );
m_useAuxOriginCheckBox->SetValue( g_PcbPlotOptions.GetUseAuxOrigin() );
@@ -148,6 +164,13 @@
msg.Printf( wxT( "%f" ), m_YScaleAdjust );
m_fineAdjustYscaleOpt->AppendText( msg );
+
+ // Test for a reasonable PS width correction value. Set to 0 if problem.
+ if( m_PSWidthAdjust < m_WidthAdjustMinValue || m_PSWidthAdjust > m_WidthAdjustMaxValue )
+ m_PSWidthAdjust = 0.;
+
+ msg.Printf( wxT( "%f" ), To_User_Unit( g_UserUnit, m_PSWidthAdjust, PCB_INTERNAL_UNIT ) );
+ m_PSFineAdjustWidthOpt->AppendText( msg );
m_plotPSNegativeOpt->SetValue( g_PcbPlotOptions.m_PlotPSNegative );
m_forcePSA4OutputOpt->SetValue( g_PcbPlotOptions.GetPsA4Output() );
@@ -282,16 +305,16 @@
wxFileName dirName = wxFileName::DirName( dirDialog.GetPath() );
- wxMessageDialog dialog( this, wxT( "Use a relative path? "),
- wxT( "Plot Output Directory" ),
+ wxMessageDialog dialog( this, _( "Use a relative path? "),
+ _( "Plot Output Directory" ),
wxYES_NO | wxICON_QUESTION | wxYES_DEFAULT );
if( dialog.ShowModal() == wxID_YES ) {
wxString boardFilePath = ( (wxFileName) m_Parent->GetScreen()->GetFileName()).GetPath();
if( !dirName.MakeRelativeTo( boardFilePath ) )
- wxMessageBox( wxT( "Cannot make path relative (target volume different from board file volume)!" ),
- wxT( "Plot Output Directory" ), wxICON_ERROR );
+ wxMessageBox( _( "Cannot make path relative (target volume different from board file volume)!" ),
+ _( "Plot Output Directory" ), wxOK | wxICON_ERROR );
}
m_outputDirectoryName->SetValue( dirName.GetFullPath() );
@@ -319,6 +342,7 @@
m_scaleOpt->Enable( true );
m_fineAdjustXscaleOpt->Enable( true );
m_fineAdjustYscaleOpt->Enable( true );
+ m_PSFineAdjustWidthOpt->Enable( true );
m_plotPSNegativeOpt->Enable( true );
m_PlotOptionsSizer->Hide( m_GerberOptionsSizer );
m_PlotOptionsSizer->Hide( m_HPGLOptionsSizer );
@@ -345,6 +369,7 @@
m_scaleOpt->Enable( false );
m_fineAdjustXscaleOpt->Enable( false );
m_fineAdjustYscaleOpt->Enable( false );
+ m_PSFineAdjustWidthOpt->Enable( false );
m_plotPSNegativeOpt->SetValue( false );
m_plotPSNegativeOpt->Enable( false );
m_PlotOptionsSizer->Show( m_GerberOptionsSizer );
@@ -370,6 +395,7 @@
m_scaleOpt->Enable( true );
m_fineAdjustXscaleOpt->Enable( false );
m_fineAdjustYscaleOpt->Enable( false );
+ m_PSFineAdjustWidthOpt->Enable( false );
m_plotPSNegativeOpt->SetValue( false );
m_plotPSNegativeOpt->Enable( false );
m_PlotOptionsSizer->Hide( m_GerberOptionsSizer );
@@ -397,6 +423,7 @@
m_scaleOpt->SetSelection( 1 );
m_fineAdjustXscaleOpt->Enable( false );
m_fineAdjustYscaleOpt->Enable( false );
+ m_PSFineAdjustWidthOpt->Enable( false );
m_plotPSNegativeOpt->SetValue( false );
m_plotPSNegativeOpt->Enable( false );
m_PlotOptionsSizer->Hide( m_GerberOptionsSizer );
@@ -447,7 +474,7 @@
{
msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetHpglPenDiameter(), UNITS_MILS );
m_HPGLPenSizeOpt->SetValue( msg );
- msg.Printf( wxT( "HPGL pen size constrained!\n" ) );
+ msg.Printf( _( "HPGL pen size constrained!\n" ) );
m_messagesBox->AppendText( msg );
}
@@ -459,7 +486,7 @@
{
msg = ReturnStringFromValue( UNSCALED_UNITS, tempOptions.GetHpglPenSpeed(), 1 );
m_HPGLPenSpeedOpt->SetValue( msg );
- msg.Printf( wxT( "HPGL pen speed constrained!\n" ) );
+ msg.Printf( _( "HPGL pen speed constrained!\n" ) );
m_messagesBox->AppendText( msg );
}
@@ -471,7 +498,7 @@
{
msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetHpglPenOverlay(), UNITS_MILS );
m_HPGLPenOverlayOpt->SetValue( msg );
- msg.Printf( wxT( "HPGL pen overlay constrained!\n" ) );
+ msg.Printf( _( "HPGL pen overlay constrained!\n" ) );
m_messagesBox->AppendText( msg );
}
@@ -484,7 +511,7 @@
msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetPlotLineWidth(),
PCB_INTERNAL_UNIT );
m_linesWidth->SetValue( msg );
- msg.Printf( wxT( "Default linewidth constrained!\n" ) );
+ msg.Printf( _( "Default linewidth constrained!\n" ) );
m_messagesBox->AppendText( msg );
}
@@ -497,7 +524,7 @@
{
msg.Printf( wxT( "%f" ), m_XScaleAdjust );
m_fineAdjustXscaleOpt->SetValue( msg );
- msg.Printf( wxT( "X scale constrained!\n" ) );
+ msg.Printf( _( "X scale constrained!\n" ) );
m_messagesBox->AppendText( msg );
}
@@ -511,10 +538,28 @@
{
msg.Printf( wxT( "%f" ), m_YScaleAdjust );
m_fineAdjustYscaleOpt->SetValue( msg );
- msg.Printf( wxT( "Y scale constrained!\n" ) );
+ msg.Printf( _( "Y scale constrained!\n" ) );
+ m_messagesBox->AppendText( msg );
+ }
+
+ // PS Width correction
+ msg = m_PSFineAdjustWidthOpt->GetValue();
+ tmpDouble = ReturnValueFromString( g_UserUnit, msg, PCB_INTERNAL_UNIT );
+
+ if( !setDouble( &m_PSWidthAdjust, tmpDouble, m_WidthAdjustMinValue, m_WidthAdjustMaxValue ) )
+ {
+ msg = ReturnStringFromValue( g_UserUnit, m_PSWidthAdjust, PCB_INTERNAL_UNIT );
+ m_PSFineAdjustWidthOpt->SetValue( msg );
+ msg.Printf( _( "Width correction constrained!\nThe reasonable width correction value must be in a range of [%+f; %+f]" ),
+ To_User_Unit( g_UserUnit, m_WidthAdjustMinValue, PCB_INTERNAL_UNIT ),
+ To_User_Unit( g_UserUnit, m_WidthAdjustMaxValue, PCB_INTERNAL_UNIT ) );
+ msg += ( g_UserUnit == INCHES )? _(" (\")") : _(" (mm)");
+ msg += _( " for current design rules!\n" );
m_messagesBox->AppendText( msg );
}
+ m_Config->Write( CONFIG_PS_FINEWIDTH_ADJ, m_PSWidthAdjust );
+
m_Config->Write( CONFIG_YFINESCALE_ADJ, m_YScaleAdjust );
tempOptions.SetUseGerberExtensions( m_useGerberExtensions->GetValue() );
@@ -565,10 +610,10 @@
if( !outputDir.MakeAbsolute( boardFilePath ) )
{
wxString msg;
- msg.Printf( wxT( " Cannot make %s absolute with respect to %s!" ),
+ msg.Printf( _( " Cannot make %s absolute with respect to %s!" ),
GetChars( outputDir.GetPath() ),
GetChars( boardFilePath ) );
- wxMessageBox( msg, wxT( "Plot" ), wxICON_ERROR );
+ wxMessageBox( msg, _( "Plot" ), wxOK | wxICON_ERROR );
return;
}
@@ -577,12 +622,13 @@
if( wxMkdir( outputDir.GetPath() ) )
{
wxString msg;
- msg.Printf( wxT( "Directory %s created.\n" ), GetChars( outputDir.GetPath() ) );
+ msg.Printf( _( "Directory %s created.\n" ), GetChars( outputDir.GetPath() ) );
m_messagesBox->AppendText( msg );
}
else
{
- wxMessageBox( wxT( "Cannot create output directory!" ), wxT( "Plot" ), wxICON_ERROR );
+ wxMessageBox( _( "Cannot create output directory!" ),
+ _( "Plot" ), wxOK | wxICON_ERROR );
return;
}
}
@@ -623,6 +669,9 @@
if( m_fineAdjustYscaleOpt->IsEnabled() && m_YScaleAdjust != 0.0 )
g_PcbPlotOptions.m_FineScaleAdjustY = m_YScaleAdjust;
+ if( m_PSFineAdjustWidthOpt->IsEnabled() )
+ g_PcbPlotOptions.m_FineWidthAdjust = m_PSWidthAdjust;
+
switch( g_PcbPlotOptions.GetPlotFormat() )
{
case PLOT_FORMAT_POST:
diff -ru kicad-2012.01.19-4.rev3256/pcbnew/pcb_plot_params.cpp kicad-2012.01.19-5.rev3256/pcbnew/pcb_plot_params.cpp
--- kicad-2012.01.19-4.rev3256/pcbnew/pcb_plot_params.cpp 2012-01-22 17:23:42.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/pcbnew/pcb_plot_params.cpp 2012-01-27 20:44:50.000000000 +0100
@@ -102,6 +102,7 @@
scaleSelection = 1;
m_FineScaleAdjustX = 1.0;
m_FineScaleAdjustY = 1.0;
+ m_FineWidthAdjust = 0.;
outputDirectory = wxT( "" );
}
diff -ru kicad-2012.01.19-4.rev3256/pcbnew/pcb_plot_params.h kicad-2012.01.19-5.rev3256/pcbnew/pcb_plot_params.h
--- kicad-2012.01.19-4.rev3256/pcbnew/pcb_plot_params.h 2012-01-22 17:23:42.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/pcbnew/pcb_plot_params.h 2012-01-27 20:45:42.000000000 +0100
@@ -86,6 +86,8 @@
// Only X and Y dimensions are adjusted: circles are plotted as circle, even if X and Y fine scale differ.
double m_FineScaleAdjustX; // fine scale adjust X axis
double m_FineScaleAdjustY; // dine scale adjust Y axis
+ // These width factor is intended to compensate plotters (and mainly printers) line width error.
+ double m_FineWidthAdjust;
private:
long layerSelection;
diff -ru kicad-2012.01.19-4.rev3256/pcbnew/plotps.cpp kicad-2012.01.19-5.rev3256/pcbnew/plotps.cpp
--- kicad-2012.01.19-4.rev3256/pcbnew/plotps.cpp 2012-01-27 14:42:34.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/pcbnew/plotps.cpp 2012-01-27 20:58:11.000000000 +0100
@@ -101,6 +101,7 @@
plotter->set_paper_size( SheetPS );
plotter->set_scale_adjust( g_PcbPlotOptions.m_FineScaleAdjustX,
g_PcbPlotOptions.m_FineScaleAdjustY );
+ plotter->set_plot_width_adj( g_PcbPlotOptions.m_FineWidthAdjust );
plotter->set_viewport( offset, scale, g_PcbPlotOptions.m_PlotMirror );
plotter->set_default_line_width( g_PcbPlotOptions.m_PlotLineWidth );
plotter->set_creator( wxT( "PCBNEW-PS" ) );
diff -ru kicad-2012.01.19-4.rev3256/pcbnew/plot_rtn.cpp kicad-2012.01.19-5.rev3256/pcbnew/plot_rtn.cpp
--- kicad-2012.01.19-4.rev3256/pcbnew/plot_rtn.cpp 2012-01-22 17:23:38.000000000 +0100
+++ kicad-2012.01.19-5.rev3256/pcbnew/plot_rtn.cpp 2012-01-27 20:57:10.000000000 +0100
@@ -32,6 +32,12 @@
static void PlotTextModule( PLOTTER* plotter, TEXTE_MODULE* pt_texte,
GRTraceMode trace_mode );
+static int doIntValueFitToBand( int aInt, int aMin, int aMax )
+{
+ if( aInt < aMin ) return aMin;
+ if( aInt > aMax ) return aMax;
+ return aInt;
+}
/* Creates the plot for silkscreen layers
*/
@@ -826,6 +832,12 @@
shape_pos = pad->ReturnShapePos();
pos = shape_pos;
wxSize margin;
+ double width_adj = 0;
+
+ if( aLayerMask & ALL_CU_LAYERS )
+ {
+ width_adj = aPlotter->get_plot_width_adj();
+ }
switch( aLayerMask &
( SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT |
@@ -845,8 +857,8 @@
break;
}
- size.x = pad->m_Size.x + ( 2 * margin.x );
- size.y = pad->m_Size.y + ( 2 * margin.y );
+ size.x = pad->m_Size.x + ( 2 * margin.x ) + width_adj;
+ size.y = pad->m_Size.y + ( 2 * margin.y ) + width_adj;
/* Don't draw a null size item : */
if( size.x <= 0 || size.y <= 0 )
@@ -913,14 +925,20 @@
continue;
int via_margin = 0;
+ double width_adj = 0;
// If the current layer is a solder mask, use the global mask
// clearance for vias
if( ( aLayerMask & ( SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT ) ) )
via_margin = GetBoard()->GetBoardDesignSettings()->m_SolderMaskMargin;
+
+ if( aLayerMask & ALL_CU_LAYERS )
+ {
+ width_adj = aPlotter->get_plot_width_adj();
+ }
pos = Via->m_Start;
- size.x = size.y = Via->m_Width + 2 * via_margin;
+ size.x = size.y = Via->m_Width + 2 * via_margin + width_adj;
/* Don't draw a null size item : */
if( size.x <= 0 )
@@ -941,7 +959,7 @@
if( (g_TabOneLayerMask[track->GetLayer()] & aLayerMask) == 0 )
continue;
- size.x = size.y = track->m_Width;
+ size.x = size.y = track->m_Width + aPlotter->get_plot_width_adj();
pos = track->m_Start;
end = track->m_End;
@@ -956,7 +974,7 @@
if( (g_TabOneLayerMask[track->GetLayer()] & aLayerMask) == 0 )
continue;
- size.x = size.y = track->m_Width;
+ size.x = size.y = track->m_Width + aPlotter->get_plot_width_adj();
pos = track->m_Start;
end = track->m_End;
@@ -1008,12 +1026,15 @@
continue;
pos = pts->m_Start;
-
+
+ // It is quite possible that the real drill value is less then small drill value.
if( g_PcbPlotOptions.m_DrillShapeOpt == PCB_PLOT_PARAMS::SMALL_DRILL_SHAPE )
- diam.x = diam.y = SMALL_DRILL;
+ diam.x = diam.y = MIN( SMALL_DRILL, pts->GetDrillValue() );
else
diam.x = diam.y = pts->GetDrillValue();
-
+
+ diam.x -= aPlotter->get_plot_width_adj();
+ diam.x = doIntValueFitToBand( diam.x, 1, pts->m_Width - 1 );
aPlotter->flash_pad_circle( pos, diam.x, aTraceMode );
}
@@ -1030,11 +1051,19 @@
if( PtPad->m_DrillShape == PAD_OVAL )
{
diam = PtPad->m_Drill;
+ diam.x -= aPlotter->get_plot_width_adj();
+ diam.x = doIntValueFitToBand( diam.x, 1, PtPad->m_Size.x - 1 );
+ diam.y -= aPlotter->get_plot_width_adj();
+ diam.y = doIntValueFitToBand( diam.y, 1, PtPad->m_Size.y - 1 );
aPlotter->flash_pad_oval( pos, diam, PtPad->m_Orient, aTraceMode );
}
else
{
diam.x = aSmallDrillShape ? SMALL_DRILL : PtPad->m_Drill.x;
+ // It is quite possible that the real pad drill value is less then small drill value.
+ diam.x = aSmallDrillShape ? MIN( SMALL_DRILL, PtPad->m_Drill.x ) : PtPad->m_Drill.x;
+ diam.x -= aPlotter->get_plot_width_adj();
+ diam.x = doIntValueFitToBand( diam.x, 1, PtPad->m_Size.x - 1 );
aPlotter->flash_pad_circle( pos, diam.x, aTraceMode );
}
}

View file

@ -1,13 +0,0 @@
--- pcbnew/board_items_to_polygon_shape_transform.cpp.orig 2012-01-26 23:50:21.000000000 +0100
+++ pcbnew/board_items_to_polygon_shape_transform.cpp 2012-01-27 00:50:23.000000000 +0100
@@ -615,8 +615,8 @@
// The pattern roughtly is a 90 deg arc pie
std::vector <wxPoint> corners_buffer;
- // Radius of outer arcs of the shape:
- int outer_radius = dx + aThermalGap; // The radius of the outer arc is pad radius + aThermalGap
+ // Radius of outer arcs of the shape corrected for arc approximation by lines
+ int outer_radius = (int) ( (dx + aThermalGap) * aCorrectionFactor );
// Crosspoint of thermal spoke sides, the first point of polygon buffer
corners_buffer.push_back( wxPoint( copper_thickness.x / 2, copper_thickness.y / 2 ) );

View file

@ -1,177 +0,0 @@
diff -ru kicad-2012.01.19-2.rev3256/pcbnew/automove.cpp kicad-2012.01.19-3.rev3256/pcbnew/automove.cpp
--- kicad-2012.01.19-2.rev3256/pcbnew/automove.cpp 2012-01-22 17:23:38.000000000 +0100
+++ kicad-2012.01.19-3.rev3256/pcbnew/automove.cpp 2012-01-27 15:38:42.000000000 +0100
@@ -17,7 +17,8 @@
#include "pcbnew_id.h"
#include "class_board.h"
#include "class_module.h"
-
+
+extern BOARD_ITEM* DuplicateStruct( BOARD_ITEM* aItem );
typedef enum {
FIXE_MODULE,
@@ -185,6 +186,11 @@
bool edgesExists;
double surface;
+ // Undo: init list
+ PICKED_ITEMS_LIST newList;
+ newList.m_Status = UR_CHANGED;
+ ITEM_PICKER picker( NULL, UR_CHANGED );
+
if( GetBoard()->m_Modules == NULL )
{
DisplayError( this, _( "No modules found!" ) );
@@ -262,6 +268,10 @@
continue;
}
+ // Undo: add copy of old Module to undo
+ picker.m_Link = DuplicateStruct( Module );
+ picker.m_PickedItemType = Module->Type();
+
if( current.x > (Xsize_allowed + start.x) )
{
current.x = start.x;
@@ -276,9 +286,17 @@
PlaceModule( Module, NULL, true );
+ // Undo: add new Module to undo
+ picker.m_PickedItem = Module;
+ newList.PushItem( picker );
+
current.x += Module->m_BoundaryBox.GetWidth() + pas_grille;
}
+ // Undo: commit
+ if( newList.GetCount() )
+ SaveCopyInUndoList( newList, UR_CHANGED );
+
DrawPanel->Refresh();
}
diff -ru kicad-2012.01.19-2.rev3256/pcbnew/autoplac.cpp kicad-2012.01.19-3.rev3256/pcbnew/autoplac.cpp
--- kicad-2012.01.19-2.rev3256/pcbnew/autoplac.cpp 2012-01-22 17:23:38.000000000 +0100
+++ kicad-2012.01.19-3.rev3256/pcbnew/autoplac.cpp 2012-01-27 15:49:37.000000000 +0100
@@ -106,6 +106,11 @@
float Pas;
int lay_tmp_TOP, lay_tmp_BOTTOM;
+ // Undo: init list
+ PICKED_ITEMS_LIST newList;
+ newList.m_Status = UR_CHANGED;
+ ITEM_PICKER picker( NULL, UR_CHANGED );
+
if( GetBoard()->m_Modules == NULL )
return;
@@ -172,7 +177,14 @@
{
case PLACE_1_MODULE:
if( ThisModule == Module )
+ {
+ // Module will be placed, add to undo.
+ picker.m_PickedItem = ThisModule;
+ picker.m_PickedItemType = ThisModule->Type();
+ newList.PushItem( picker );
+
Module->m_ModuleStatus |= MODULE_to_PLACE;
+ }
break;
@@ -183,7 +195,14 @@
break;
if( !GetBoard()->m_BoundaryBox.Contains( Module->m_Pos ) )
+ {
+ // Module will be placed, add to undo.
+ picker.m_PickedItem = Module;
+ picker.m_PickedItemType = Module->Type();
+ newList.PushItem( picker );
+
Module->m_ModuleStatus |= MODULE_to_PLACE;
+ }
break;
@@ -193,6 +212,11 @@
if( Module->m_ModuleStatus & MODULE_is_LOCKED )
break;
+ // Module will be placed, add to undo.
+ picker.m_PickedItem = Module;
+ picker.m_PickedItemType = Module->Type();
+ newList.PushItem( picker );
+
Module->m_ModuleStatus |= MODULE_to_PLACE;
break;
@@ -204,7 +228,14 @@
}
if( !(Module->m_ModuleStatus & MODULE_is_PLACED) )
+ {
+ // Module will be placed, add to undo.
+ picker.m_PickedItem = Module;
+ picker.m_PickedItemType = Module->Type();
+ newList.PushItem( picker );
+
Module->m_ModuleStatus |= MODULE_to_PLACE;
+ }
break;
}
@@ -221,6 +252,10 @@
}
}
+ // Undo: commit
+ if( newList.GetCount() )
+ SaveCopyInUndoList( newList, UR_CHANGED );
+
activ = 0;
Pas = 100.0;
diff -ru kicad-2012.01.19-2.rev3256/pcbnew/solve.cpp kicad-2012.01.19-3.rev3256/pcbnew/solve.cpp
--- kicad-2012.01.19-2.rev3256/pcbnew/solve.cpp 2012-01-22 17:23:38.000000000 +0100
+++ kicad-2012.01.19-3.rev3256/pcbnew/solve.cpp 2012-01-27 16:08:23.000000000 +0100
@@ -79,6 +79,7 @@
static int Ncurrent; /* measures of progress */
static int s_Clearance; // Clearance value used in autorouter
+static PICKED_ITEMS_LIST s_ItemsListPicker;
#define NOSUCCESS 0
#define STOP_FROM_ESC -1
@@ -272,6 +273,9 @@
Ncurrent = 0;
+ // Prepare the undo command info
+ s_ItemsListPicker.ClearListAndDeleteItems(); // Should not be necessary, but...
+
/* go until no more work to do */
GetWork( &row_source, &col_source, &current_net_code,
&row_target, &col_target, &pt_cur_ch ); // First net to route.
@@ -375,6 +379,9 @@
DrawPanel->m_AbortEnable = false;
+ SaveCopyInUndoList( s_ItemsListPicker, UR_UNSPECIFIED );
+ s_ItemsListPicker.ClearItemsList(); // s_ItemsListPicker is no more owner of picked items
+
return SUCCESS;
}
@@ -1324,6 +1331,8 @@
while( ( track = g_CurrentTrackList.PopFront() ) != NULL )
{
+ ITEM_PICKER picker( track, UR_NEW );
+ s_ItemsListPicker.PushItem( picker );
pcbframe->GetBoard()->m_Track.Insert( track, insertBeforeMe );
}

View file

@ -0,0 +1,52 @@
From f81cb9527e29c6a6ef21d9040162b42e31c40e44 Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lkundrak@v3.sk>
Date: Wed, 24 Dec 2014 09:53:49 +0100
Subject: [PATCH] Try to run freerouting by its JPackage launcher script
It's a sin to touch the Java tool by its JAR file in Fedora.
---
pcbnew/dialogs/dialog_freeroute_exchange.cpp | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff -urp kicad-2015.01.02/pcbnew/dialogs/dialog_freeroute_exchange.cpp kicad-2015.01.02.good/pcbnew/dialogs/dialog_freeroute_exchange.cpp
--- kicad-2015.01.02/pcbnew/dialogs/dialog_freeroute_exchange.cpp 2015-01-02 22:15:35.000000000 +0100
+++ kicad-2015.01.02.good/pcbnew/dialogs/dialog_freeroute_exchange.cpp 2015-01-03 11:25:55.393054653 +0100
@@ -80,7 +80,12 @@ void DIALOG_FREEROUTE::MyInit()
wxConfigBase* cfg = Kiface().KifaceSettings();
cfg->Read( FREEROUTE_RUN_KEY, &msg );
*/
- wxFileName fileName( FindKicadFile( wxT( "freeroute.jar" ) ), wxPATH_UNIX );
+ wxFileName fileName( FindKicadFile( wxT( "freerouting" ) ), wxPATH_UNIX );
+
+ if( !fileName.FileExists() )
+ {
+ fileName.Assign ( FindKicadFile( wxT( "freeroute.jar" ) ), wxPATH_UNIX );
+ }
if( fileName.FileExists() )
{
@@ -144,8 +149,22 @@ void DIALOG_FREEROUTE::OnLaunchButtonCli
return;
}
- wxFileName jarfileName( FindKicadFile( wxT( "freeroute.jar" ) ), wxPATH_UNIX );
- wxString command;
+ wxFileName jarfileName( FindKicadFile( wxT( "freerouting" ) ), wxPATH_UNIX );
+ wxString command = wxT( "" );
+
+ if( jarfileName.FileExists() )
+ {
+ command << wxChar( '"' ) << jarfileName.GetFullPath() << wxChar( '"' );
+ // add option to load the .dsn file
+ command << wxT( " -de " );
+ // add *.dsn full filename (quoted):
+ command << wxChar( '"' ) << dsnFile << wxChar( '"' );
+
+ ProcessExecute( command );
+ return;
+ } else {
+ jarfileName.Assign ( FindKicadFile( wxT( "freeroute.jar" ) ), wxPATH_UNIX );
+ }
// Find the Java application on Windows.
// Colud be no more needed since we now have to run only java, not java web start

View file

@ -0,0 +1,21 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index af87f4b..f002416 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -186,7 +186,6 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
endif()
if( MINGW )
- set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" )
# _UNICODE definition seems needed under mingw/gcc 4.8
# (Kicad uses unicode, and on Windows, wxWidgets >= 2.9.4 is mandatory
@@ -223,8 +222,6 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
set( CMAKE_SHARED_LINKER_FLAGS "${TO_LINKER},--no-undefined" )
set( CMAKE_MODULE_LINKER_FLAGS "${TO_LINKER},--no-undefined" )
- set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" )
-
# Defeat ELF's ability to use the GOT to replace locally implemented functions
# with ones from another module.
# https://bugs.launchpad.net/kicad/+bug/1322354

View file

@ -1,529 +1,340 @@
%define Werror_cflags %nil
%define revision 5528
# Generated debug package is empty and rpmlint rejects build
%define _enable_debug_packages %{nil}
%define debug_package %{nil}
# To create source package:
# bzr branch lp:kicad/stable
#
# You can get the date by querying:
# $ bzr log -r-1 --line stable/
# 3009: jean-pierre charras 2011-05-25 Libedit: actual line thickness taken in account by collector. Thick lines are now more easy t...
#
# $ bzr export --format=tbz2 --root=kicad kicad-sources-bzr$(bzr revno stable/).tar.bz2 stable/
# For library,
# See http://iut-tice.ujf-grenoble.fr/cao/how_to_download_sources.txt
# bzr branch lp:~kicad-lib-committers/kicad/library
#
# You can get the date by querying:
# $ bzr log -r-1 --line library/
# 109: xtony 2010-12-08 Add various modules.
#
# $ bzr export --format=tbz2 --root=kicad-library kicad-library-bzr$(bzr revno library/).tar.bz2 library/
# For doc,
# See http://iut-tice.ujf-grenoble.fr/cao/how_to_download_sources.txt
# bzr branch lp:~kicad-developers/kicad/doc
#
# You can get the date by querying:
# $ bzr log -r-1 --line doc/
# 216: Andrey Fedorushkov 2011-06-02 update russian GUI
%define date 20120119
%define revision 3256
%define docname kicad-doc
%define docdate 20111221
%define docrevision 303
%define docversion %{docdate}.bzr%{docrevision}
%define libname kicad-library
%define libdate 20120119
%define librevision 114
%define libversion %{libdate}.bzr%{librevision}
Summary: An open source software for the creation of electronic schematic diagrams
Name: kicad
Version: %{date}.bzr%{revision}
Release: 4
License: GPLv2+
Version: 2015.03.21
Release: 0.rev%{revision}.1
Summary: EDA software suite for creation of schematic diagrams and PCBs
Group: Sciences/Computer science
Url: http://www.lis.inpg.fr/realise_au_lis/kicad/
Source0: %{name}-sources-bzr%{revision}.tar.bz2
Source1: %{docname}-bzr%{docrevision}.tar.bz2
Source2: %{libname}-bzr%{librevision}.tar.bz2
License: GPLv2+
Url: http://www.kicad-pcb.org
# URL2: https://launchpad.net/kicad
# URL3: http://orson.net.pl/pub/kicad/
# Additional librairies from Walter Lain
# URL4: http://smisioto.no-ip.org/elettronica/kicad/kicad-en.htm
# Fedora & upstream patches
Patch11: %{name}-2011.07.12-fix-linking.patch
Patch12: %{name}-2011.07.12-boost-polygon-declare-gtlsort-earlier.patch
Patch13: %{name}-2012.01.19-fix-linking.patch
Patch14: %{name}-2012.01.19-fix-bom-in-python.patch
Patch20: %{name}-2012.01.19-fix-plotting-scale.patch
Patch21: %{name}-2012.01.19-move-up-junction-button.rev3371.patch
Patch22: %{name}-2012.01.19-thermal-relief.rev3281.patch
Patch23: %{name}-2012.01.19-undo-redo-auto.rev3297.patch
Patch24: %{name}-2012.01.19-cvpcb-preview.rev3303.patch
Patch25: %{name}-2012.01.19-pcb-calculation.rev3328.patch
Patch26: %{name}-2012.01.19-ps-plotting-width-correction.rev3342.patch
# Source files created with the following scripts ...
# kicad-clone.sh ... clone BZR repositories of main, libraries, doc
# kicad-update.sh ... update BZR repositories
# kicad-export.sh ... export BZR repositories and create tarballs
# kicad-walter-libs.sh ... download, unpack and prepare tarball with walter libs
Source: %{name}-%{version}.tar.xz
Source1: %{name}-doc-%{version}.tar.xz
Source2: %{name}-libraries-%{version}.tar.xz
Source3: %{name}-footprints-%{version}.tar.xz
Source7: Epcos-MKT-1.0.tar.bz2
Source8: %{name}-walter-libraries-%{version}.tar.xz
Patch1: kicad-2015.01.02-nostrip.patch
Patch2: kicad-2015.01.02-freerouting.patch
BuildRequires: cmake
BuildRequires: desktop-file-utils
BuildRequires: imagemagick
BuildRequires: wxgtku3.0-devel
BuildRequires: boost-devel
BuildRequires: wxgtku2.8-devel
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(glu)
Requires: %{libname} = %{libversion}
Requires: %{docname} = %{docversion}
Suggests: %{name}-locale
BuildRequires: cmake
BuildRequires: doxygen
BuildRequires: glew-devel
BuildRequires: openssl-devel
Requires: electronics-menu
Requires: freerouting
%description
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
KiCad is an EDA software to design electronic schematic
diagrams and printed circuit board artwork up to 16 layers.
KiCad is a set of four softwares and a project manager:
- KiCad: project manager
- Eeschema: schematic entry
- Pcbnew: board editor
- Cvpcb: footprint selector for components used in the circuit design
- Gerbview: GERBER viewer (photoplotter documents)
Kicad is a set of four softwares and a project manager:
Eeschema : Schematic entry.
Pcbnew : Board editor.
Gerbview : GERBER viewer (photoplotter documents).
Cvpcb : footprint selector for components used in the circuit design.
Kicad: project manager.
%files
%files -f %{name}.lang
%{_bindir}/*
%{_prefix}/lib/%{name}/plugins/netlist_form_pads-pcb.xsl
%{_iconsdir}/*/*/*
%{_iconsdir}/%{name}.png
%{_liconsdir}/%{name}.png
%{_miconsdir}/%{name}.png
%{_datadir}/%{name}/demos/
%{_datadir}/%{name}/template/
%{_datadir}/applications
%{_datadir}/mime/packages/kicad.xml
%{_datadir}/mimelnk/application/x-kicad-project.desktop
%{_datadir}/mimelnk/application/x-kicad-schematic.desktop
%{_libdir}/%{name}
%{_datadir}/%{name}/
%{_datadir}/applications/*.desktop
%{_datadir}/icons/hicolor/*/mimetypes/application-x-*.*
%{_datadir}/icons/hicolor/*/apps/*.*
%{_datadir}/mime/packages/%{name}.xml
%{_datadir}/mimelnk/application/x-%{name}-*.desktop
#%config(noreplace) %{_sysconfdir}/ld.so.conf.d/kicad.conf
%dir %{_docdir}/%{name}/
%{_docdir}/%{name}/*.txt
#----------------------------------------------------------------------------
%package doc
Summary: Documentation for kicad (creation of electronic schematic diagrams)
Version: %{docversion}
Requires: %{name}
Summary: Documentation for KiCad
Group: Documentation
License: GPLv2+
BuildArch: noarch
%description doc
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
Kicad-doc is the documentation for kicad.
Documentation and tutorials for KiCad in English.
%files doc
%doc %{_datadir}/doc/%{name}
%dir %{_docdir}/%{name}/
%{_docdir}/%{name}/contrib
#%{_docdir}/%{name}/help/
%{_docdir}/%{name}/help/en
%{_docdir}/%{name}/help/file_formats
#%{_docdir}/%{name}/tutorials
%{_docdir}/%{name}/tutorials/en
%{_docdir}/%{name}/scripts
#----------------------------------------------------------------------------
%package locales-ca
Summary: Catalan Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
%package doc-de
Summary: Documentation for KiCad in German
Group: Documentation
Requires: %{name}-doc = %{version}-%{release}
Requires: locales-de
BuildArch: noarch
%description locales-ca
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
%description doc-de
Documentation and tutorials for KiCad in German
Kicad-locales provides Catalan locales for kicad.
%files locales-ca
%{_datadir}/%{name}/internat/ca/
%files doc-de
%{_docdir}/%{name}/help/de
%{_docdir}/%{name}/tutorials/de
#----------------------------------------------------------------------------
%package locales-cs
Summary: Czech Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
%package doc-es
Summary: Documentation for KiCad in Spanish
Group: Documentation
Requires: %{name}-doc = %{version}-%{release}
Requires: locales-es
BuildArch: noarch
%description locales-cs
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
%description doc-es
Documentation and tutorials for KiCad in Spanish
Kicad-locales provides Czech locales for kicad.
%files locales-cs
%{_datadir}/%{name}/internat/cs/
%files doc-es
%{_docdir}/%{name}/help/es
%{_docdir}/%{name}/tutorials/es
#----------------------------------------------------------------------------
%package locales-de
Summary: German Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
%package doc-fr
Summary: Documentation for KiCad in French
Group: Documentation
Requires: %{name}-doc = %{version}-%{release}
Requires: locales-fr
BuildArch: noarch
%description locales-de
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
%description doc-fr
Documentation and tutorials for KiCad in French
Kicad-locales provides German locales for kicad.
%files locales-de
%{_datadir}/%{name}/internat/de/
%files doc-fr
%{_docdir}/%{name}/help/fr
%{_docdir}/%{name}/tutorials/fr
#----------------------------------------------------------------------------
%package locales-es
Summary: Spanish Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
%package doc-hu
Summary: Documentation for KiCad in Hungarian
Group: Documentation
Requires: %{name}-doc = %{version}-%{release}
Requires: locales-hu
BuildArch: noarch
%description locales-es
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
%description doc-hu
Documentation and tutorials for KiCad in Hungarian
Kicad-locales provides Spanish locales for kicad.
%files locales-es
%{_datadir}/%{name}/internat/es/
%files doc-hu
%{_docdir}/%{name}/tutorials/hu
#----------------------------------------------------------------------------
%package locales-fi
Summary: Finnish Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
%package doc-it
Summary: Documentation for KiCad in Italian
Group: Documentation
Requires: %{name}-doc = %{version}-%{release}
Requires: locales-it
BuildArch: noarch
%description locales-fi
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
%description doc-it
Documentation and tutorials for KiCad in Italian
Kicad-locales provides Finnish locales for kicad.
%files locales-fi
%{_datadir}/%{name}/internat/fi/
%files doc-it
%{_docdir}/%{name}/help/it
%{_docdir}/%{name}/tutorials/it
#----------------------------------------------------------------------------
%package locales-fr
Summary: French Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
%package doc-ja
Summary: Documentation for KiCad in Japanese
Group: Documentation
Requires: %{name}-doc = %{version}-%{release}
Requires: locales-ja
BuildArch: noarch
%description locales-fr
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
%description doc-ja
Documentation and tutorials for KiCad in Japanese
Kicad-locales provides French locales for kicad.
%files doc-ja
%{_docdir}/%{name}/help/ja
%{_docdir}/%{name}/tutorials/ja
%files locales-fr
%{_datadir}/%{name}/internat/fr/
#----------------------------------------------------------------------------
%package locales-hu
Summary: Hungarian Kicad locales
Version: %{docversion}
Release: %{release}
Requires: %{name}
Provides: %{name}-locale
%package doc-pl
Summary: Documentation for KiCad in Polish
Group: Documentation
Requires: %{name}-doc = %{version}-%{release}
Requires: locales-pl
BuildArch: noarch
%description locales-hu
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
%description doc-pl
Documentation and tutorials for KiCad in Polish
Kicad-locales provides Hungarian locales for kicad.
%files locales-hu
%{_datadir}/%{name}/internat/hu/
%files doc-pl
%{_docdir}/%{name}/help/pl
%{_docdir}/%{name}/tutorials/pl
#----------------------------------------------------------------------------
%package locales-it
Summary: Italian Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
%package doc-pt
Summary: Documentation for KiCad in Portuguese
Group: Documentation
Requires: %{name}-doc = %{version}-%{release}
Requires: locales-pt
BuildArch: noarch
%description locales-it
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
%description doc-pt
Documentation and tutorials for KiCad in Portuguese
Kicad-locales provides Italian locales for kicad.
%files locales-it
%{_datadir}/%{name}/internat/it/
%files doc-pt
%{_docdir}/%{name}/help/pt
#----------------------------------------------------------------------------
%package locales-ja
Summary: Japanese Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
%package doc-ru
Summary: Documentation for KiCad in Russian
Group: Documentation
Requires: %{name}-doc = %{version}-%{release}
Requires: locales-ru
BuildArch: noarch
%description locales-ja
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
%description doc-ru
Documentation and tutorials for KiCad in Russian
Kicad-locales provides Japanese locales for kicad.
%files locales-ja
%{_datadir}/%{name}/internat/ja/
%files doc-ru
%{_docdir}/%{name}/help/ru
%{_docdir}/%{name}/tutorials/ru
#----------------------------------------------------------------------------
%package locales-ko
Summary: Korean Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
%package doc-zh_CN
Summary: Documentation for KiCad in Chinese
Group: Documentation
Requires: %{name}-doc = %{version}-%{release}
Requires: locales-zh
BuildArch: noarch
%description locales-ko
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
%description doc-zh_CN
Documentation and tutorials for KiCad in Chinese
Kicad-locales provides Korean locales for kicad.
%files locales-ko
%{_datadir}/%{name}/internat/ko/
#----------------------------------------------------------------------------
%package locales-nl
Summary: Dutch Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
BuildArch: noarch
%description locales-nl
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
Kicad-locales provides Dutch locales for kicad.
%files locales-nl
%{_datadir}/%{name}/internat/nl/
#----------------------------------------------------------------------------
%package locales-pl
Summary: Polish Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
BuildArch: noarch
%description locales-pl
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
Kicad-locales provides Polish locales for kicad.
%files locales-pl
%{_datadir}/%{name}/internat/pl/
#----------------------------------------------------------------------------
%package locales-pt
Summary: Portuguese Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
BuildArch: noarch
%description locales-pt
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
Kicad-locales provides Portuguese locales for kicad.
%files locales-pt
%{_datadir}/%{name}/internat/pt/
#----------------------------------------------------------------------------
%package locales-ru
Summary: Russian Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
BuildArch: noarch
%description locales-ru
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
Kicad-locales provides Russian locales for kicad.
%files locales-ru
%{_datadir}/%{name}/internat/ru/
#----------------------------------------------------------------------------
%package locales-sl
Summary: Slovenian Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
BuildArch: noarch
%description locales-sl
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
Kicad-locales provides Slovenian locales for kicad.
%files locales-sl
%{_datadir}/%{name}/internat/sl
#----------------------------------------------------------------------------
%package locales-sv
Summary: Salvadoran Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
BuildArch: noarch
%description locales-sv
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
Kicad-locales provides Salvadoran locales for kicad.
%files locales-sv
%{_datadir}/%{name}/internat/sv/
#----------------------------------------------------------------------------
%package locales-zh-cn
Summary: Chinese Kicad locales
Version: %{docversion}
Requires: %{name}
Provides: %{name}-locale
BuildArch: noarch
%description locales-zh-cn
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
Kicad-locales provides Chinese locales for kicad.
%files locales-zh-cn
%{_datadir}/%{name}/internat/zh_CN/
#----------------------------------------------------------------------------
%package library
Summary: Library for kicad (creation of electronic schematic diagrams)
Version: %{libversion}
Requires: %{name}
BuildArch: noarch
%description library
Kicad is an open source (GPL) software for the creation of electronic
schematic diagrams and printed circuit board artwork.
Kicad-library is a set of library needed by kicad.
%files library
%{_datadir}/%{name}/library
%{_datadir}/%{name}/modules
%files doc-zh_CN
%{_docdir}/%{name}/tutorials/zh_CN
#----------------------------------------------------------------------------
%prep
%setup -q -T -b 0 -n %{name}
%setup -q -T -b 1 -n %{docname}
%setup -q -T -b 2 -n %{libname}
pushd ../%{name}
%patch11 -p0 -b .fix-linking1
%patch12 -p0 -b .gcc-4.7
%patch13 -p0 -b .fix-linking2
%patch14 -p1 -b .fix-bom-in-python
%patch20 -p0 -b .fix-plotting-scale
%patch21 -p0 -b .junction-button
%patch22 -p0 -b .thermal-relief
%patch23 -p1 -b .undo-redo
%patch24 -p1 -b .cvpcb-preview
%patch25 -p0 -b .pcb-calculation
%patch26 -p1 -b .width-correction
popd
%setup -q -a 1 -a 2 -a 3 -a 7 -a 8
%patch1 -p1
%patch2 -p1
#kicad-doc.noarch: W: file-not-utf8 /usr/share/doc/kicad/AUTHORS.txt
iconv -f iso8859-1 -t utf-8 AUTHORS.txt > AUTHORS.conv && mv -f AUTHORS.conv AUTHORS.txt
#multilibs
%ifarch x86_64 sparc64 ppc64 amd64 s390x
%{__sed} -i "s|KICAD_PLUGINS lib/kicad/plugins|KICAD_PLUGINS lib64/kicad/plugins|" CMakeLists.txt
#%{__sed} -i "s|/usr/lib/kicad|/usr/lib64/kicad|" %{SOURCE3}
%endif
%build
export LC_ALL=C
cd ../
# Building kicad-doc
pushd %{docname}
%cmake \
-DKICAD_STABLE_VERSION:BOOL=ON \
-DCMAKE_BUILD_TYPE=Release
%make
# Add Epcos library
cd Epcos-MKT-1.0
cp -pR library ../%{name}-libraries-%{version}/
cp -pR modules ../%{name}-libraries-%{version}/
cd ..
# Add Walter libraries
cd %{name}-walter-libraries-%{version}
cp -pR library ../%{name}-libraries-%{version}/
cp -pR modules ../%{name}-libraries-%{version}/
cd ..
#
# Symbols libraries
#
pushd %{name}-libraries-%{version}/
%cmake -DKICAD_STABLE_VERSION=OFF
%make -j1 VERBOSE=1
popd
# Building kicad-library
pushd %{libname}
%cmake \
-DKICAD_STABLE_VERSION:BOOL=ON \
-DCMAKE_BUILD_TYPE=Release
%make
popd
# Building kicad
pushd %{name}
%cmake \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DKICAD_STABLE_VERSION:BOOL=ON \
-DCMAKE_BUILD_TYPE=Release
%make
popd
#
# Core components
#
%cmake -DKICAD_STABLE_VERSION=OFF -DKICAD_SKIP_BOOST=ON \
-DwxWidgets_CONFIG_EXECUTABLE=%{_bindir}/wx-config
%make VERBOSE=1
%install
cd ../
%makeinstall_std -C build
# Installing kicad-doc
pushd %{docname}
%makeinstall_std -C build
# install localization
cd %{name}-doc-%{version}/internat
for dir in bg ca cs de es fr hu it ko nl pl pt ru sl sv zh_CN
do
install -m 644 -D ${dir}/%{name}.mo %{buildroot}%{_datadir}/locale/${dir}/LC_MESSAGES/%{name}.mo
done
cd ../..
# install desktop
for desktopfile in %{buildroot}%{_datadir}/applications/*.desktop ; do
desktop-file-install \
--dir %{buildroot}%{_datadir}/applications \
--remove-category Development \
--delete-original \
${desktopfile}
done
#
# Symbols libraries
#
pushd %{name}-libraries-%{version}/
%makeinstall_std -C build
popd
# Installing kicad-library
pushd %{libname}
%makeinstall_std -C build
# install template
install -d %{buildroot}%{_datadir}/%{name}/template
install -m 644 template/%{name}.pro %{buildroot}%{_datadir}/%{name}/template
# Footprints
pushd %{name}-footprints-%{version}/
cp -a */ %{buildroot}%{_datadir}/%{name}/modules
popd
ln -f %{buildroot}%{_datadir}/%{name}/template/fp-lib-table{.for-pretty,}
# Installing kicad
pushd %{name}
%makeinstall_std -C build
# Preparing for documentation pull-ups
rm -f %{name}-doc-%{version}/doc/help/CMakeLists.txt
rm -f %{name}-doc-%{version}/doc/help/makefile
rm -f %{name}-doc-%{version}/doc/tutorials/CMakeLists.txt
# create desktop file
desktop-file-install --vendor='' \
--remove-category='Scientific' \
--add-category='Science;Electronics;Education' \
--dir=%{buildroot}%{_datadir}/applications \
%{buildroot}%{_datadir}/applications/*.desktop
cp -pr %{name}-doc-%{version}/doc/* %{buildroot}%{_docdir}/%{name}
cp -pr AUTHORS.txt CHANGELOG* %{buildroot}%{_docdir}/%{name}
# create icons
mkdir -p %{buildroot}%{_miconsdir} %{buildroot}%{_iconsdir} %{buildroot}%{_liconsdir}
convert -resize 16x16 %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{buildroot}%{_miconsdir}/%{name}.png
convert -resize 32x32 %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{buildroot}%{_iconsdir}/%{name}.png
convert -resize 48x48 %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{buildroot}%{_liconsdir}/%{name}.png
popd
%find_lang %{name}