Commit f2446132 authored by Mikhail Karpenko's avatar Mikhail Karpenko

Merge branch 'master' into teardrops

Master branch has many modifications wich need to be merged
parents 86923ed6 d38c9b20
......@@ -233,7 +233,7 @@ int ParseVertexList( FILE* File, std::vector<glm::vec3>& dst_vector )
}
int ParseVertex( FILE* File, glm::vec3& dst_vertex )
bool ParseVertex( FILE* File, glm::vec3& dst_vertex )
{
float a, b, c;
int ret = fscanf( File, "%e %e %e", &a, &b, &c );
......@@ -252,7 +252,7 @@ int ParseVertex( FILE* File, glm::vec3& dst_vertex )
// DBG( printf( "ret%d(%.9f,%.9f,%.9f)", ret, a,b,c) );
return ret;
return ret == 3;
}
......
......@@ -75,9 +75,9 @@ int ParseVertexList( FILE* File, std::vector< glm::vec3 > &dst_vector);
* parse a vertex
* @param File file to read from
* @param dst_vertex destination vector
* @return int - return the number of elements readed
* @return bool - return true if the 3 elements are read
*/
int ParseVertex( FILE* File, glm::vec3 &dst_vertex );
bool ParseVertex( FILE* File, glm::vec3 &dst_vertex );
/**
......
......@@ -430,6 +430,7 @@ set( BMAPS_MID
pad_sketch
pad
pad_dimensions
pad_enumerate
pads_mask_layers
pagelayout_load
pagelayout_load_default
......
......@@ -8,44 +8,30 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x02, 0x46, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0xf8, 0xff, 0xff, 0x3f,
0x03, 0x3d, 0x30, 0xc3, 0xa8, 0x45, 0x64, 0x5b, 0xc4, 0xd0, 0xef, 0x20, 0xc0, 0x30, 0xd1, 0x21,
0x82, 0xa6, 0x78, 0xb2, 0x83, 0x09, 0xc8, 0x22, 0x03, 0x86, 0x49, 0xf6, 0xff, 0x69, 0x8b, 0x1d,
0x66, 0x90, 0x6c, 0x11, 0x23, 0x10, 0x0b, 0x4d, 0xb5, 0xa6, 0xad, 0x45, 0x6a, 0x33, 0x4d, 0xff,
0xef, 0xd9, 0xce, 0xff, 0xff, 0xe5, 0x01, 0x96, 0xff, 0x29, 0xcb, 0xd4, 0xc0, 0x96, 0x52, 0xd5,
0x22, 0xb6, 0xc9, 0x76, 0xff, 0xab, 0x56, 0x29, 0xfc, 0xff, 0x78, 0x88, 0xe9, 0xff, 0x8f, 0xc3,
0x0c, 0x70, 0xbc, 0x0f, 0x68, 0xa9, 0xc6, 0x2c, 0x53, 0xea, 0x58, 0x64, 0x31, 0xd7, 0xf0, 0xff,
0xf9, 0xdd, 0x5c, 0xff, 0x5f, 0x6e, 0xe3, 0xf8, 0x5f, 0x19, 0xe9, 0xf2, 0xdf, 0x45, 0x37, 0xe1,
0xbf, 0x89, 0x42, 0xc6, 0xff, 0x28, 0xfb, 0x90, 0xff, 0x7b, 0x26, 0x2a, 0xfc, 0xff, 0x74, 0x88,
0xf1, 0x7f, 0x0d, 0xd0, 0x11, 0x20, 0xc7, 0x90, 0x65, 0x11, 0xdf, 0x54, 0x9b, 0xff, 0x13, 0xd7,
0x4b, 0xfd, 0xff, 0x0e, 0x74, 0xf9, 0xd3, 0xcd, 0x5c, 0xff, 0x6d, 0x35, 0x52, 0xfe, 0x6b, 0x88,
0xe5, 0x63, 0xe0, 0x05, 0x55, 0xfa, 0x60, 0xdf, 0x5d, 0x00, 0x3a, 0xc6, 0x6a, 0x9e, 0x01, 0x69,
0x16, 0xf9, 0x2d, 0xd4, 0xfe, 0x7f, 0x6f, 0x1f, 0x3b, 0x3c, 0x88, 0xda, 0x9b, 0xcb, 0xfe, 0x37,
0xf4, 0x2c, 0xfb, 0x5f, 0xd6, 0xb2, 0xe0, 0x7f, 0x61, 0xee, 0x82, 0xff, 0x8e, 0x66, 0xf5, 0xff,
0x4d, 0x95, 0xcb, 0xc0, 0x16, 0xe9, 0xcb, 0x64, 0xff, 0x7f, 0xb8, 0x81, 0x07, 0xac, 0x0e, 0xe4,
0xa8, 0xc9, 0x40, 0xc7, 0xf1, 0x63, 0x24, 0x16, 0x34, 0x8b, 0x24, 0xa7, 0x5b, 0xfe, 0x5f, 0xb9,
0x59, 0x04, 0x25, 0x1e, 0xbe, 0x01, 0xe3, 0x25, 0xde, 0xbf, 0xf7, 0xbf, 0xb5, 0x76, 0xcd, 0x7f,
0x37, 0xb3, 0xe6, 0xff, 0xd1, 0x81, 0x13, 0x81, 0x96, 0x2e, 0xff, 0xbf, 0x78, 0xf5, 0xfe, 0xff,
0xa1, 0x11, 0xdd, 0x60, 0xcb, 0xd6, 0xb4, 0x68, 0xa0, 0xe8, 0xb9, 0xbf, 0x8f, 0xed, 0x7f, 0xc0,
0x22, 0x6d, 0xdc, 0x16, 0xcd, 0xd8, 0x20, 0x81, 0xa2, 0x01, 0x84, 0x5f, 0x6d, 0x67, 0x87, 0x07,
0x93, 0xb1, 0x62, 0x25, 0x98, 0xd6, 0x93, 0x29, 0xfd, 0x6f, 0x28, 0x5f, 0xfe, 0xbf, 0xb1, 0x71,
0xf5, 0xff, 0xfe, 0x19, 0x9b, 0xfe, 0x4f, 0x2e, 0xb5, 0xc2, 0xd0, 0x07, 0x0a, 0x11, 0x75, 0x78,
0x42, 0xc1, 0x12, 0x74, 0x3e, 0x0b, 0x75, 0xfe, 0xdf, 0x45, 0x0a, 0x36, 0x10, 0xf6, 0x36, 0xcd,
0xfd, 0xef, 0xa0, 0xd7, 0x08, 0xb7, 0xc4, 0x5c, 0xb5, 0x16, 0x6e, 0x79, 0xb4, 0x6f, 0xdf, 0xff,
0xa3, 0xcb, 0xbc, 0xe1, 0x6a, 0x41, 0xc1, 0x07, 0x8a, 0x5b, 0x50, 0x1c, 0x13, 0x8c, 0x23, 0xde,
0x29, 0x36, 0xff, 0xfb, 0xd7, 0x49, 0xff, 0xff, 0x06, 0xd5, 0x3c, 0xaf, 0xc2, 0xe0, 0xbf, 0x91,
0x42, 0xe5, 0x7f, 0x2b, 0x0d, 0x88, 0x8f, 0x40, 0x34, 0x88, 0x6f, 0xae, 0x5a, 0xf7, 0x3f, 0xc1,
0xa3, 0xe0, 0xff, 0xe7, 0xfd, 0xcc, 0x60, 0x75, 0xe7, 0x76, 0x73, 0xff, 0x37, 0x07, 0xa6, 0x52,
0x92, 0x93, 0xb7, 0x19, 0x50, 0xd3, 0x59, 0xa0, 0xe6, 0xef, 0x87, 0x18, 0xfe, 0x37, 0x25, 0xda,
0xff, 0xd7, 0x14, 0xcf, 0x47, 0x09, 0xc6, 0x70, 0xfb, 0x9c, 0xff, 0xd7, 0x97, 0x0b, 0x81, 0xf3,
0x17, 0x28, 0x9f, 0xb1, 0xe2, 0x4c, 0xe2, 0x44, 0xe4, 0x23, 0x90, 0xe6, 0x8a, 0x55, 0x8a, 0xff,
0x3f, 0x1c, 0x64, 0xfa, 0x7f, 0x66, 0x9e, 0xc4, 0xff, 0x29, 0x05, 0xa6, 0xff, 0x5b, 0x92, 0xed,
0xfe, 0xaf, 0x6d, 0xd5, 0xf8, 0xff, 0x71, 0x1f, 0x33, 0xb8, 0xa4, 0x00, 0x95, 0x18, 0x54, 0x2b,
0x82, 0x54, 0x66, 0x9a, 0xfd, 0xdf, 0xb5, 0x5d, 0x00, 0x1e, 0x17, 0x2f, 0x80, 0xc5, 0x50, 0xd2,
0x52, 0x62, 0x8b, 0x21, 0x32, 0x0a, 0xd5, 0x84, 0xa5, 0xea, 0xff, 0xe7, 0x6d, 0x14, 0xff, 0x2f,
0x0e, 0xcc, 0x0a, 0x34, 0x2d, 0xbd, 0xc9, 0xaf, 0x26, 0x26, 0xdb, 0xe9, 0x02, 0x39, 0x1f, 0x68,
0x8a, 0x27, 0xda, 0xf7, 0x8d, 0x36, 0x4e, 0x06, 0xbf, 0x45, 0x00, 0x67, 0x25, 0xe2, 0x78, 0xf3,
0x1b, 0xc4, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0xce, 0x00, 0x00, 0x01, 0x66, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0xd6, 0x4b, 0x2b, 0x84,
0x61, 0x18, 0x87, 0xf1, 0x3f, 0x1b, 0x9b, 0x49, 0xd2, 0x2b, 0x1b, 0x87, 0x66, 0x33, 0x28, 0x0b,
0x51, 0xc3, 0xc4, 0xa4, 0x71, 0xa6, 0x5e, 0xa7, 0x34, 0x23, 0x8d, 0xe3, 0x8c, 0x69, 0x9a, 0x42,
0x39, 0xc4, 0x1b, 0x52, 0x16, 0x16, 0x28, 0xcd, 0xc6, 0x82, 0x08, 0x89, 0xec, 0x84, 0x24, 0x1b,
0x7b, 0xca, 0xd2, 0x21, 0x1b, 0x3b, 0x7c, 0x04, 0xab, 0xcb, 0xc2, 0x17, 0x98, 0xa6, 0x97, 0x94,
0x59, 0x5c, 0xeb, 0x5f, 0xcf, 0xd3, 0x73, 0xdf, 0x3d, 0x02, 0xf4, 0x1b, 0x29, 0x05, 0x25, 0x0d,
0x4d, 0x56, 0x29, 0x90, 0x48, 0x87, 0x2e, 0xd5, 0x23, 0x95, 0x25, 0x9b, 0x14, 0x11, 0x89, 0xb4,
0x54, 0xa1, 0xef, 0x0b, 0x48, 0xb2, 0x7f, 0x0c, 0x2d, 0x96, 0xff, 0x20, 0x94, 0x16, 0x16, 0x2d,
0x51, 0xd1, 0x14, 0x14, 0x66, 0xab, 0xb0, 0x1a, 0x45, 0xbc, 0x4e, 0x7c, 0xa6, 0xd9, 0x08, 0x39,
0x06, 0x44, 0x77, 0x20, 0x93, 0x50, 0xb5, 0xc1, 0x55, 0x83, 0x87, 0x48, 0x75, 0x0e, 0x37, 0x3e,
0x0f, 0x51, 0x4f, 0x0e, 0x43, 0x5d, 0x99, 0x7c, 0x64, 0xd8, 0x04, 0x45, 0x62, 0x62, 0x6e, 0xce,
0x60, 0xb9, 0x48, 0x3c, 0x5a, 0x16, 0x13, 0xfe, 0x7a, 0x1e, 0x2d, 0x8b, 0x65, 0x97, 0x88, 0xf4,
0x19, 0xcc, 0xfa, 0x6d, 0x82, 0x02, 0x21, 0xd1, 0xd1, 0x63, 0x30, 0xee, 0x14, 0x2f, 0xaf, 0xef,
0xec, 0x5f, 0x3c, 0xf1, 0xf2, 0xfa, 0xce, 0x84, 0x53, 0x4c, 0xfb, 0x0c, 0x66, 0x7a, 0x6d, 0x82,
0x7a, 0xfc, 0xc2, 0x6b, 0x66, 0xb1, 0x5e, 0x9c, 0xce, 0xe6, 0xf1, 0x2d, 0xbb, 0x67, 0x0f, 0x6c,
0x9e, 0xdc, 0xb1, 0xea, 0x4a, 0x27, 0xec, 0xcb, 0x22, 0x68, 0xd7, 0x89, 0xba, 0x46, 0x45, 0x49,
0xbf, 0xd8, 0xf0, 0x14, 0xb0, 0x15, 0x6a, 0x23, 0x7e, 0x74, 0xcf, 0x4e, 0xb4, 0x93, 0x95, 0xca,
0x3c, 0x76, 0xe6, 0xc5, 0xf6, 0xb0, 0x4d, 0x50, 0x6d, 0xbf, 0xe8, 0x0b, 0x8a, 0x11, 0xb3, 0x80,
0x3d, 0x6f, 0x21, 0xcf, 0xd9, 0xd9, 0x1c, 0x78, 0x0b, 0x89, 0x35, 0xe7, 0x33, 0x33, 0x25, 0xd6,
0xda, 0x6d, 0x7c, 0xde, 0xee, 0x98, 0x30, 0x07, 0x45, 0xfb, 0x82, 0xf0, 0x9b, 0xb9, 0x5c, 0x76,
0x88, 0x93, 0x31, 0x71, 0xed, 0xfe, 0x81, 0x81, 0x75, 0x84, 0x45, 0x65, 0x54, 0xc4, 0x82, 0xe2,
0xdc, 0x2d, 0xde, 0x1c, 0xa9, 0x5d, 0xf7, 0xdb, 0x50, 0x8d, 0xa9, 0xb7, 0x44, 0x8a, 0x97, 0xea,
0x0e, 0xe9, 0x34, 0xd9, 0x52, 0x9f, 0x93, 0xbf, 0x0f, 0x7d, 0x01, 0x56, 0x7c, 0x9f, 0xa0, 0xa8,
0x66, 0x35, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE lang_pt_xpm[1] = {{ png, sizeof( png ), "lang_pt_xpm" }};
......
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps.h>
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x03, 0x00, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x95, 0x94, 0x4b, 0x48, 0x94,
0x51, 0x18, 0x86, 0x3f, 0x33, 0x28, 0x2c, 0x72, 0x91, 0x45, 0x12, 0x45, 0x05, 0x2e, 0x14, 0x37,
0x51, 0x6e, 0xba, 0xe0, 0x94, 0x48, 0x51, 0x49, 0x10, 0x49, 0x17, 0x17, 0x05, 0x2d, 0x92, 0xa8,
0x88, 0xb0, 0x45, 0x0b, 0x9b, 0x19, 0x87, 0xdc, 0x08, 0x6d, 0x02, 0x09, 0xa4, 0x36, 0x81, 0x49,
0xbb, 0xac, 0x29, 0x9d, 0x8a, 0x82, 0x4c, 0xb1, 0xc2, 0x34, 0x4d, 0x33, 0x8b, 0x8c, 0x4c, 0x9b,
0x8d, 0x4a, 0x82, 0xb7, 0x6c, 0xa6, 0xf7, 0x9c, 0x79, 0xad, 0x33, 0xbf, 0xf3, 0x5f, 0x5a, 0x3c,
0xfc, 0xe7, 0xf2, 0x7e, 0xe7, 0x3d, 0xe7, 0x3b, 0xdf, 0x7f, 0x24, 0x1e, 0x8f, 0x8b, 0x22, 0x20,
0xe2, 0x07, 0x55, 0xf3, 0x7d, 0x2b, 0x98, 0x5b, 0x0a, 0xf6, 0x81, 0x1a, 0x70, 0x48, 0xf5, 0x1d,
0xb4, 0xa5, 0xe0, 0x1a, 0x28, 0x01, 0xe9, 0x6a, 0x6c, 0x7e, 0xe2, 0x02, 0x88, 0x83, 0x4e, 0x87,
0xe0, 0x5b, 0xd4, 0xf4, 0x81, 0x39, 0xd0, 0x65, 0xa3, 0xab, 0xa6, 0xae, 0x07, 0xcc, 0x82, 0xd7,
0xda, 0x08, 0x8d, 0x27, 0xe0, 0x17, 0x07, 0x3b, 0x6d, 0x82, 0xb3, 0xc1, 0x24, 0xa8, 0x65, 0xff,
0x22, 0x17, 0x2b, 0x4c, 0xa1, 0xbd, 0x0d, 0xea, 0xd8, 0xbe, 0x4a, 0x5d, 0xbe, 0xea, 0x34, 0x83,
0x5c, 0x30, 0xe8, 0x72, 0xa2, 0x45, 0x60, 0x09, 0xdb, 0x21, 0x2e, 0xb0, 0xd3, 0x41, 0xbf, 0x5b,
0x9d, 0x1a, 0x7c, 0x55, 0x69, 0x36, 0x27, 0x1c, 0x8d, 0x0c, 0x5d, 0x31, 0x98, 0x02, 0xed, 0x20,
0xcd, 0x41, 0xf7, 0x8d, 0x9b, 0x39, 0xf7, 0xf7, 0x8e, 0xbc, 0x1a, 0x61, 0x7e, 0x17, 0x4d, 0x3e,
0x83, 0x75, 0x2e, 0xda, 0x15, 0xe0, 0x12, 0xcd, 0x8e, 0x7a, 0x36, 0xc2, 0xdc, 0x16, 0xf0, 0x93,
0x97, 0xbc, 0xd6, 0x46, 0xb3, 0x18, 0x1c, 0x07, 0x45, 0xec, 0x6f, 0xa2, 0xd1, 0x75, 0x5b, 0x23,
0xb4, 0xb7, 0x81, 0x06, 0x65, 0x50, 0x5c, 0x24, 0x99, 0x95, 0xe9, 0x32, 0xaa, 0x82, 0x4e, 0x6c,
0x94, 0xfe, 0xb2, 0x1c, 0x79, 0x5e, 0xbe, 0x46, 0xee, 0x94, 0x67, 0x8b, 0x8f, 0x85, 0xa2, 0x74,
0xa5, 0x8c, 0x8b, 0x80, 0x11, 0x96, 0x78, 0x03, 0x8d, 0x0a, 0x9c, 0x8c, 0x8e, 0x29, 0x51, 0xc1,
0x7e, 0x09, 0xe7, 0x1e, 0xd1, 0xe5, 0x1c, 0xb7, 0xb2, 0xf9, 0xa0, 0xc4, 0xb2, 0x4f, 0xcb, 0x0b,
0xf6, 0xaf, 0x30, 0x2e, 0x1f, 0x34, 0xf1, 0x17, 0x18, 0x50, 0x15, 0x9a, 0x74, 0x47, 0x56, 0x50,
0x62, 0xbe, 0x93, 0x1b, 0x64, 0x72, 0xf5, 0x19, 0x89, 0x21, 0xfa, 0x0b, 0x78, 0x05, 0x22, 0xa0,
0x51, 0xfc, 0xf2, 0x08, 0xdf, 0x56, 0xf0, 0x01, 0xcc, 0x16, 0x6f, 0x97, 0x99, 0x92, 0xad, 0x72,
0xd3, 0x92, 0xc6, 0x4c, 0xb3, 0x58, 0x52, 0x9a, 0x48, 0x95, 0x14, 0xe6, 0x94, 0x49, 0xcc, 0xe7,
0x93, 0x19, 0x44, 0xb4, 0xe8, 0xc5, 0x6d, 0xc8, 0x3a, 0x2b, 0x2d, 0x87, 0xf3, 0x65, 0x3a, 0xbd,
0x52, 0xd4, 0xea, 0x15, 0x76, 0x1b, 0x5f, 0x38, 0x10, 0x90, 0xe5, 0x60, 0x10, 0x4c, 0x70, 0xe7,
0x8d, 0xae, 0xf8, 0xe5, 0x3e, 0xbe, 0x3f, 0x80, 0xda, 0x58, 0x9e, 0x57, 0xa3, 0x5a, 0x10, 0x43,
0xf0, 0x4b, 0xcb, 0x82, 0x4d, 0xa0, 0x9b, 0x9b, 0xe8, 0x05, 0x4f, 0x2d, 0xf3, 0xcd, 0x60, 0x4a,
0x82, 0xf2, 0x46, 0xee, 0x26, 0xde, 0x37, 0x5b, 0x23, 0xa9, 0x91, 0x65, 0x10, 0xce, 0xf1, 0x4e,
0xcc, 0x1d, 0xb7, 0x61, 0x7c, 0x12, 0x6d, 0x95, 0x9e, 0x31, 0xb4, 0xd5, 0xbd, 0xcd, 0xd1, 0xd8,
0x34, 0xeb, 0xa0, 0xc6, 0xe7, 0x6c, 0x14, 0x90, 0x1d, 0x5a, 0xe8, 0x97, 0x76, 0xcb, 0x4e, 0xa7,
0xc1, 0x7b, 0x09, 0x49, 0xae, 0xd6, 0x55, 0xcb, 0x4a, 0xf4, 0xef, 0x69, 0xc3, 0xe4, 0x93, 0x37,
0xd1, 0xa8, 0xc2, 0xcd, 0xe8, 0x3c, 0x85, 0x11, 0x23, 0xb8, 0x5b, 0x8f, 0xd1, 0xc4, 0xd0, 0x66,
0x80, 0x28, 0x18, 0xb2, 0x9c, 0x6a, 0x02, 0xd4, 0xbb, 0x19, 0xdd, 0xe0, 0xee, 0xcd, 0x40, 0x75,
0x27, 0x63, 0x29, 0x2f, 0x38, 0x20, 0x61, 0x9d, 0xca, 0x64, 0xbd, 0x32, 0xef, 0x72, 0x36, 0x0a,
0xca, 0x65, 0x9e, 0xe8, 0xa1, 0x11, 0xd8, 0xab, 0x53, 0x54, 0x2d, 0xab, 0x92, 0x03, 0x25, 0x0d,
0x73, 0x9f, 0xc0, 0x88, 0xc5, 0x68, 0x5c, 0xa5, 0xd5, 0xcd, 0x68, 0x0f, 0x8d, 0xcc, 0xbc, 0x3f,
0x03, 0xbf, 0xd9, 0xce, 0x30, 0x4c, 0x42, 0xd4, 0xbe, 0x35, 0xb4, 0x61, 0x5d, 0xb1, 0x41, 0xf1,
0xbb, 0xa5, 0x2e, 0x8b, 0xc1, 0x7d, 0x96, 0x5d, 0xf6, 0xb0, 0xd2, 0xa2, 0x5c, 0x6c, 0x80, 0xba,
0xa1, 0x05, 0xd5, 0x99, 0x18, 0x3f, 0xe0, 0xe5, 0x3f, 0x8a, 0xf0, 0xc7, 0x7b, 0x6c, 0x31, 0x6b,
0xd5, 0x0b, 0x07, 0x65, 0x94, 0xe9, 0xea, 0xb0, 0xcc, 0x3f, 0xd0, 0x69, 0x0b, 0xca, 0xb0, 0xfa,
0xe9, 0xbd, 0x18, 0xad, 0x67, 0xe5, 0x44, 0x3d, 0xbd, 0x0a, 0xff, 0xe8, 0xe7, 0x69, 0xf6, 0x7a,
0x7a, 0x19, 0x78, 0x57, 0xa7, 0x18, 0xf4, 0x9d, 0xff, 0x86, 0x93, 0x81, 0x3a, 0xc9, 0x47, 0xde,
0x63, 0x9d, 0xe7, 0xb7, 0xce, 0x38, 0x59, 0x05, 0x53, 0x38, 0xc5, 0x34, 0x59, 0x0d, 0xd5, 0x5d,
0xb5, 0xb1, 0xca, 0xd4, 0xa6, 0xea, 0xe6, 0x8b, 0xe5, 0xbf, 0x8c, 0x68, 0x96, 0xa7, 0xdf, 0xae,
0xc4, 0x42, 0x71, 0x23, 0xa5, 0xe3, 0xba, 0xba, 0x12, 0x63, 0xc3, 0x76, 0xe9, 0xf2, 0x6c, 0xa4,
0x05, 0x78, 0x20, 0xd5, 0xdb, 0xc5, 0x13, 0xd6, 0xc3, 0xf8, 0x1d, 0x9f, 0x1f, 0xbf, 0xaa, 0xae,
0x54, 0x17, 0x9f, 0x8a, 0x3f, 0x4e, 0xf9, 0x1e, 0xe8, 0xdb, 0x0e, 0x2c, 0xf3, 0x00, 0x00, 0x00,
0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE pad_enumerate_xpm[1] = {{ png, sizeof( png ), "pad_enumerate_xpm" }};
//EOF
<svg xmlns="http://www.w3.org/2000/svg" height="256" width="256" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-2100 -1470 1493.3333 1493.3333">
<title>Flag of Brazil</title>
<defs>
<path id="y" fill-rule="evenodd" d="m0 0a31.5 35 0 0 0 0 -70 31.5 35 0 0 0 0 70m0-13a18.5 22 0 0 0 0 -44 18.5 22 0 0 0 0 44"/>
<g id="aa">
<use xlink:href="#ac" height="2940" width="4200" y="0" x="0"/>
<path d="m28 0c0-10 0-32-15-32h-19c22 0 22 22 22 32"/>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="256"
height="256"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="lang_pt.svg">
<metadata
id="metadata120">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs118" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1048"
inkscape:window-height="723"
id="namedview116"
showgrid="false"
inkscape:zoom="2.726542"
inkscape:cx="129.31034"
inkscape:cy="141.39474"
inkscape:window-x="358"
inkscape:window-y="142"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<g
id="g3097"
transform="matrix(0.43103448,0,0,0.41536128,0,47.3039)">
<rect
id="rect4"
height="400"
width="600"
x="0"
y="0"
style="fill:#ff0000" />
<rect
id="rect6"
height="400"
width="240"
x="0"
y="0"
style="fill:#006600" />
<g
id="g8"
style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:0.57300001;stroke-linecap:round;stroke-linejoin:round">
<path
id="path10"
d="M 318.24,262.04 C 288.03,261.13 149.5,174.66 148.55,160.89 l 7.6496,-12.757 c 13.741,19.966 155.36,104.06 169.27,101.08 l -7.2299,12.823"
inkscape:connector-curvature="0" />
<path
id="path12"
d="m 154.59,146.4 c -2.7101,7.2937 36.149,31.318 82.903,59.754 46.752,28.434 87.065,46.006 90.053,43.486 0.18256,-0.32544 1.4701,-2.5409 1.352,-2.5232 -0.56001,0.84402 -1.9234,1.1104 -4.0506,0.49741 -12.631,-3.6433 -45.575,-18.765 -86.374,-43.506 -40.798,-24.743 -76.294,-47.544 -81.811,-57.232 -0.38363,-0.67116 -0.65702,-1.8962 -0.60146,-2.8487 l -0.13405,-0.002 -1.1747,2.0532 -0.16139,0.32191 h -8.8e-4 z m 164.36,116.04 c -0.51238,0.92957 -1.4675,0.96044 -3.2816,0.76112 -11.3,-1.2506 -45.589,-17.925 -86.162,-42.213 -47.21,-28.26 -86.2,-54.01 -81.97,-60.74 l 1.1509,-2.0346 0.22665,0.0706 c -3.8037,11.405 76.948,57.578 81.702,60.522 46.724,28.947 86.115,45.851 89.601,41.458 l -1.2682,2.181 v -0.002 z"
inkscape:connector-curvature="0" />
<path
id="path14"
d="m 240.17,169.23 c 30.237,-0.23901 67.55,-4.1319 89.023,-12.69 l -4.6265,-7.5168 c -12.692,7.0247 -50.21,11.644 -84.652,12.335 -40.736,-0.37483 -69.49,-4.1681 -83.897,-13.835 l -4.3672,8.0045 c 26.484,11.207 53.623,13.587 88.52,13.703"
inkscape:connector-curvature="0" />
<path
id="path16"
d="m 330.44,156.71 c -0.73904,1.1818 -14.743,6.0113 -35.373,9.5753 -13.988,2.1325 -32.234,3.9555 -55.004,3.9776 -21.633,0.0203 -39.305,-1.5196 -52.684,-3.3329 -21.656,-3.3955 -32.833,-8.1201 -36.965,-9.7896 0.39509,-0.78581 0.64908,-1.337 1.0301,-2.0708 11.895,4.736 23.124,7.5918 36.279,9.6158 13.291,1.8 30.75,3.362 52.276,3.3417 22.664,-0.0229 40.709,-1.9844 54.616,-4.0534 21.155,-3.4122 32.711,-7.8034 34.334,-9.8425 l 1.494,2.5788 h -0.002 z m -4.0603,-7.6226 c -2.293,1.8415 -13.718,5.8932 -33.819,9.1034 -13.415,1.9226 -30.472,3.6433 -52.265,3.6645 -20.704,0.0203 -37.619,-1.375 -50.485,-3.2491 -20.414,-2.6661 -31.279,-7.4754 -35.196,-8.8776 0.3898,-0.67381 0.78666,-1.3423 1.1941,-2.0135 3.0479,1.5346 13.533,5.7909 34.226,8.7224 12.72,1.8036 29.661,3.1477 50.262,3.1265 21.69,-0.0221 38.553,-1.7762 51.883,-3.6883 20.205,-2.7799 31.077,-7.9472 32.728,-9.241 l 1.4728,2.4509 v 0.002 z"
inkscape:connector-curvature="0" />
<path
id="path18"
d="m 140.88,205.66 c 18.598,10.003 59.905,15.044 98.994,15.391 35.591,0.0564 81.958,-5.5016 99.297,-14.69 l -0.47712,-10.012 c -5.4246,8.4773 -55.113,16.609 -99.206,16.276 -44.093,-0.3325 -85.038,-7.1429 -98.687,-15.959 l 0.0794,8.9914"
inkscape:connector-curvature="0" />
<path
id="path20"
d="m 340.12,204.22 8.8e-4,2.3874 c -2.606,3.1159 -18.946,7.8255 -39.437,11.142 -15.595,2.391 -35.927,4.1945 -61.262,4.1945 -24.069,0 -43.263,-1.7163 -58.148,-4.0014 -23.529,-3.4264 -38.579,-9.4262 -41.6,-11.217 l 0.0132,-2.7852 c 9.0748,6.0334 33.661,10.447 41.917,11.798 14.788,2.2701 33.868,3.9732 57.817,3.9732 25.216,0 45.434,-1.7912 60.931,-4.1663 14.701,-2.1237 35.644,-7.6465 39.767,-11.324 h 8.8e-4 z m 0.01,-8.4922 8.8e-4,2.3874 c -2.606,3.1142 -18.946,7.8237 -39.437,11.14 -15.595,2.391 -35.927,4.1945 -61.262,4.1945 -24.069,0 -43.263,-1.7145 -58.148,-4.0014 -23.529,-3.4246 -38.579,-9.4245 -41.6,-11.216 l 0.0132,-2.7852 c 9.0748,6.0325 33.661,10.447 41.917,11.796 14.788,2.2719 33.868,3.9758 57.817,3.9758 25.216,0 45.434,-1.7921 60.931,-4.169 14.701,-2.1237 35.644,-7.6465 39.767,-11.324 l 8.8e-4,0.002 z"
inkscape:connector-curvature="0" />
<path
id="path22"
d="m 239.79,260.32 c -42.772,-0.25489 -79.421,-11.659 -87.16,-13.544 l 5.6433,8.8344 c 13.67,5.7503 49.424,14.32 81.927,13.371 32.504,-0.94809 60.91,-3.466 80.928,-13.211 l 5.7862,-9.1555 c -13.642,6.425 -60.068,13.639 -87.125,13.705"
inkscape:connector-curvature="0" />
<path
id="path24"
d="m 323.3,253.72 c -0.85016,1.2991 -1.7171,2.5823 -2.5963,3.8294 -9.4417,3.3293 -24.319,6.8245 -30.597,7.844 -12.824,2.6423 -32.665,4.594 -50.274,4.6029 -37.89,-0.55474 -68.905,-7.9719 -83.496,-14.299 l -1.1773,-2.0241 0.19225,-0.30427 1.9966,0.77435 c 25.948,9.2834 55.091,12.987 82.698,13.652 17.538,0.0617 35.095,-2.01 49.292,-4.5491 21.771,-4.3621 30.574,-7.65 33.275,-9.1405 l 0.68701,-0.38541 h -8.8e-4 z m 5.0172,-8.2753 c 0.022,0.0256 0.0441,0.0503 0.0653,0.0776 -0.63585,1.0733 -1.2911,2.1652 -1.9622,3.2623 -5.0357,1.8 -18.702,5.7988 -38.659,8.5893 -13.149,1.7912 -21.322,3.526 -47.479,4.034 -49.015,-1.2471 -80.75,-10.831 -88.289,-13.195 l -1.1174,-2.1431 c 28.406,7.4154 57.422,12.592 89.408,13.121 23.931,-0.50976 34.112,-2.2719 47.152,-4.0499 23.271,-3.6186 34.996,-7.4498 38.515,-8.5558 -0.0441,-0.0635 -0.0961,-0.13053 -0.15433,-0.19932 l 2.5231,-0.9428 -0.002,0.002 z"
inkscape:connector-curvature="0"
style="stroke-width:0.55000001" />
<path
id="path26"
d="m 328.83,197.76 c 0.13873,28.137 -14.26,53.386 -25.858,64.525 -16.408,15.759 -38.163,25.896 -63.569,26.363 -28.37,0.52117 -55.12,-17.974 -62.295,-26.099 -14.028,-15.885 -25.449,-36.057 -25.815,-63.243 1.7376,-30.709 13.793,-52.1 31.268,-66.769 17.475,-14.669 40.743,-21.813 60.121,-21.302 22.358,0.59003 48.475,11.558 66.521,33.332 11.823,14.266 16.943,29.748 19.627,53.193 z m -89.186,-96.342 c 54.485,0 99.296,44.338 99.296,98.703 0,54.364 -44.811,98.704 -99.296,98.704 -54.485,0 -98.924,-44.339 -98.924,-98.704 0,-54.365 44.439,-98.703 98.924,-98.703"
inkscape:connector-curvature="0" />
<path
id="path28"
d="m 239.91,101.08 c 54.534,0 99.011,44.483 99.011,99.022 0,54.538 -44.478,99.02 -99.011,99.02 -54.534,0 -99.011,-44.481 -99.011,-99.02 0,-54.539 44.478,-99.022 99.011,-99.022 z m -96.832,99.0224 c 0,53.26 43.736,96.842 96.832,96.842 53.097,0 96.833,-43.582 96.833,-96.842 0,-53.262 -43.737,-96.844 -96.833,-96.844 -53.096,0 -96.832,43.584 -96.832,96.844 z"
inkscape:connector-curvature="0" />
<path
id="path30"
d="m 239.99,109.31 c 49.731,0 90.693,40.821 90.693,90.704 0,49.884 -40.963,90.703 -90.693,90.703 -49.73,0 -90.693,-40.819 -90.693,-90.703 0,-49.883 40.964,-90.704 90.693,-90.704 z m -88.515,90.7034 c 0,48.685 39.979,88.524 88.515,88.524 48.536,0 88.515,-39.839 88.515,-88.524 0,-48.686 -39.978,-88.525 -88.515,-88.525 -48.536,0 -88.515,39.839 -88.515,88.525 z"
inkscape:connector-curvature="0" />
<path
id="path32"
d="m 243.98,100.68 -8.48545,0 0.01,198.96 8.51455,0 z"
inkscape:connector-curvature="0" />
<path
id="path34"
d="m 243.13,99.546 h 2.1598 l 0.0185,201.25 h -2.1616 l -0.0159,-201.25 z m -8.4213,0.0018 h 2.1766 l 0.003,201.25 H 234.71 v -201.25 z"
inkscape:connector-curvature="0" />
<path
id="path36"
d="m 338.99,203.935 0,-7.3554 -5.99,-5.58 -34,-9 -49,-5 -59,3 -42,10 -8.48,6.28 0,7.3572 21.48,-9.637 51,-8 h 49 l 36,4 25,6 z"
inkscape:connector-curvature="0" />
<path
id="path38"
d="m 239.95,184.77 c 23.383,-0.0432 46.07,2.2154 64.065,5.7194 18.569,3.7121 31.637,8.3556 36.105,13.571 l -0.005,2.5823 c -5.3884,-6.4902 -22.973,-11.248 -36.518,-13.968 -17.858,-3.474 -40.393,-5.7168 -63.647,-5.6736 -24.538,0.0459 -47.387,2.3698 -64.984,5.8032 -14.12,2.8019 -32.951,8.3679 -35.302,13.858 v -2.689 c 1.2911,-3.8003 15.313,-9.4792 34.984,-13.417 17.729,-3.4572 40.62,-5.7415 65.302,-5.7864 z m 0.01,-8.4922 c 23.383,-0.0423 46.07,2.2172 64.065,5.7194 18.569,3.7139 31.637,8.3556 36.105,13.571 l -0.005,2.5823 c -5.3884,-6.4885 -22.973,-11.247 -36.518,-13.966 -17.858,-3.4757 -40.393,-5.7185 -63.647,-5.6736 -24.538,0.0441 -47.276,2.3698 -64.875,5.8014 -13.626,2.5832 -33.226,8.3696 -35.412,13.86 v -2.6908 c 1.2911,-3.7588 15.597,-9.6414 34.985,-13.417 17.729,-3.4572 40.62,-5.7397 65.302,-5.7864 z"
inkscape:connector-curvature="0" />
<path
id="path40"
d="m 239.48,132.96 c 36.849,-0.18433 68.99,5.1523 83.695,12.685 l 5.3638,9.279 c -12.781,-6.888 -47.456,-14.05 -89.005,-12.979 -33.854,0.20814 -70.027,3.7271 -88.176,13.41 l 6.4035,-10.709 c 14.895,-7.7241 50.022,-11.643 81.72,-11.684"
inkscape:connector-curvature="0" />
<path
id="path42"
d="m 239.97,140.62 c 21.017,-0.0556 41.325,1.1298 57.476,4.0437 15.041,2.7993 29.385,7.0009 31.436,9.2604 l 1.5901,2.8099 c -4.9881,-3.257 -17.401,-6.8836 -33.339,-9.906 -16.006,-3.0083 -36.3,-4.0049 -57.2,-3.9502 -23.722,-0.0811 -42.152,1.1712 -57.969,3.9291 -16.728,3.13 -28.334,7.6015 -31.197,9.7261 l 1.5583,-2.9704 c 5.5631,-2.8381 14.39,-6.2592 29.223,-8.9297 16.357,-2.988 34.983,-3.8841 58.423,-4.0128 h -8.8e-4 z m -0.009,-8.4843 c 20.113,-0.0529 39.972,1.068 55.452,3.8506 12.209,2.3768 24.283,6.0872 28.704,9.3892 l 2.3256,3.6954 c -3.9536,-4.3947 -18.836,-8.5593 -31.974,-10.892 -15.361,-2.6494 -34.395,-3.698 -54.508,-3.8656 -21.108,0.0591 -40.615,1.352 -55.752,4.1081 -14.441,2.7481 -23.76,6.0016 -27.703,8.5425 l 2.0451,-3.0868 c 5.4414,-2.8646 14.232,-5.4954 25.303,-7.6465 15.249,-2.7764 34.876,-4.0358 56.108,-4.0949 z"
inkscape:connector-curvature="0" />
<path
id="path44"
d="m 289.15,241.26 c -18.218,-3.4008 -36.469,-3.8947 -49.217,-3.7447 -61.407,0.71967 -81.244,12.609 -83.665,16.209 l -4.5894,-7.4815 c 15.634,-11.332 49.073,-17.687 88.587,-17.037 20.518,0.33602 38.224,1.6986 53.119,4.5835 l -4.2358,7.4727"
inkscape:connector-curvature="0" />
<path
id="path46"
d="m 239.58,236.46 c 17.082,0.25488 33.849,0.96044 50.033,3.9784 l -1.172,2.069 c -15.031,-2.7746 -31.055,-3.8365 -48.803,-3.75 -22.663,-0.17727 -45.585,1.9394 -65.541,7.6668 -6.2968,1.7524 -16.721,5.8006 -17.784,9.1458 l -1.1659,-1.9226 c 0.33601,-1.9773 6.6363,-6.081 18.414,-9.3901 22.858,-6.5458 44.239,-7.6491 66.019,-7.799 v 0.002 z m 0.77519,-8.5963 c 17.698,0.33073 35.975,1.1492 53.74,4.6681 l -1.2206,2.1537 c -16.042,-3.1847 -31.369,-4.2466 -52.415,-4.5702 -22.735,0.0414 -46.851,1.6625 -68.778,8.0372 -7.0791,2.062 -19.297,6.5202 -19.704,10.05 l -1.1659,-2.0655 c 0.26545,-3.2059 10.842,-7.388 20.358,-10.156 22.096,-6.4241 46.275,-8.076 69.186,-8.1174 z"
inkscape:connector-curvature="0"
style="stroke-width:0.55000001" />
<path
id="path48"
d="M 327.58,247.38 320.201,258.829 299,240 244,203 182,169 149.81,157.99 156.67,145.27 159,144 l 20,5 66,34 38,24 32,23 13,15 z"
inkscape:connector-curvature="0" />
<path
id="path50"
d="m 148.65,158.29 c 5.646,-3.8294 47.139,14.655 90.555,40.834 43.301,26.254 84.677,55.921 80.942,61.473 l -1.2285,1.9323 -0.56354,0.4445 c 0.12083,-0.0864 0.74345,-0.84755 -0.0609,-2.906 -1.8449,-6.0704 -31.195,-29.491 -79.894,-58.895 -47.475,-28.309 -87.041,-45.371 -90.997,-40.494 l 1.247,-2.3892 h -8.9e-4 z m 180.44,88.927 c 3.57,-7.052 -34.916,-36.044 -82.632,-64.272 -48.813,-27.666 -83.994,-43.951 -90.42,-39.095 l -1.4278,2.5991 c -0.0124,0.14287 0.052,-0.17727 0.35364,-0.4101 1.1685,-1.0195 3.1052,-0.95074 3.9792,-0.96662 11.065,0.16581 42.667,14.709 87.006,40.128 19.428,11.315 82.071,51.491 81.832,62.789 0.0168,0.97102 0.0803,1.1712 -0.28485,1.6519 l 1.5936,-2.4236 v -0.002 z"
inkscape:connector-curvature="0" />
</g>
<g
id="g52">
<path
id="path54"
d="m 180.6,211.01 c 0,16.271 6.6628,30.987 17.457,41.742 10.815,10.778 25.512,17.579 41.809,17.579 16.381,0 31.247,-6.6525 42.016,-17.389 10.769,-10.735 17.443,-25.552 17.446,-41.88 h -0.002 v -79.189 l -118.74,-0.14111 0.0123,79.278 h 0.002 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke:#000000;stroke-width:0.67036998" />
<path
id="path56"
d="m 182.82,211.12 v 0.045 c 0,15.557 6.4414,29.724 16.775,40.009 10.354,10.305 24.614,16.712 40.214,16.712 15.681,0 29.912,-6.3606 40.222,-16.626 10.308,-10.265 16.697,-24.433 16.699,-40.044 h -0.002 V 134.39 l -113.84,-0.0185 -0.0697,76.748 m 91.022,-53.747 0.004,48.891 -0.0414,5.1717 h 8.8e-4 c 0,1.3608 -0.082,2.9122 -0.24076,4.2333 -0.92512,7.7294 -4.4801,14.467 -9.7451,19.708 -6.1636,6.1357 -14.671,9.9413 -24.047,9.9413 -9.327,0 -17.639,-3.9379 -23.829,-10.1 -6.3497,-6.32 -10.03,-14.986 -10.03,-23.947 l -0.0132,-54.023 67.94,0.12259 0.002,0.002 z"
inkscape:connector-curvature="0"
style="fill:#ff0000;stroke:#000000;stroke-width:0.50734001" />
<g
id="castle3">
<g
id="castle"
style="fill:#ffff00;stroke:#000000;stroke-width:0.5">
<path
id="path60"
d="m 190.19,154.43 c 0.13493,-5.521 4.0524,-6.828 4.0806,-6.8474 0.0282,-0.0185 4.2314,1.4076 4.2173,6.8986 l -8.2978,-0.0512"
inkscape:connector-curvature="0"
style="stroke:none" />
<path
id="path62"
d="m 186.81,147.69 -0.68172,6.3447 4.1406,0.009 c 0.0397,-5.2493 3.9739,-6.1225 4.0691,-6.1031 0.0891,-0.005 3.9889,1.1606 4.0929,6.1031 h 4.1511 l -0.74962,-6.3932 -15.022,0.0379 v 0.002 z"
inkscape:connector-curvature="0" />
<path
id="path64"
d="m 185.85,154.06 h 16.946 c 0.35717,0 0.64908,0.35277 0.64908,0.78404 0,0.43039 -0.29191,0.78141 -0.64908,0.78141 H 185.85 c -0.35717,0 -0.64908,-0.35102 -0.64908,-0.78141 0,-0.43127 0.29191,-0.78404 0.64908,-0.78404 z"
inkscape:connector-curvature="0" />
<path
id="path66"
d="m 192.01,154.03 c 0.0185,-3.3126 2.2621,-4.2501 2.2736,-4.2483 8.8e-4,0 2.3423,0.96661 2.3609,4.2483 h -4.6344"
inkscape:connector-curvature="0" />
<path
id="path68"
d="m 186.21,145.05 h 16.245 c 0.34218,0 0.62263,0.31839 0.62263,0.70468 0,0.38717 -0.28045,0.70467 -0.62263,0.70467 H 186.21 c -0.34218,0 -0.62263,-0.31573 -0.62263,-0.70467 0,-0.38629 0.28045,-0.70468 0.62263,-0.70468 z"
inkscape:connector-curvature="0" />
<path
id="path70"
d="m 186.55,146.47 h 15.538 c 0.32719,0 0.59529,0.31662 0.59529,0.70379 0,0.38805 -0.2681,0.70467 -0.59529,0.70467 H 186.55 c -0.32719,0 -0.59529,-0.31662 -0.59529,-0.70467 0,-0.38717 0.2681,-0.70379 0.59529,-0.70379 z"
inkscape:connector-curvature="0" />
<path
id="path72"
d="m 191.57,135.88 1.2267,0.002 v 0.87136 h 0.89513 v -0.89076 l 1.2567,0.004 v 0.88723 h 0.89778 v -0.89076 h 1.2576 l -0.002,2.0117 c 0,0.31574 -0.25398,0.52035 -0.54854,0.52035 h -4.4113 c -0.29633,0 -0.56972,-0.23724 -0.5706,-0.52652 l -0.003,-1.9879 h 8.8e-4 z"
inkscape:connector-curvature="0" />
<path
id="path74"
d="m 196.19,138.57 0.27691,6.4514 -4.3028,-0.0159 0.28486,-6.4523 3.741,0.0168"
inkscape:connector-curvature="0" />
<path
d="m 190.94,141.56 0.13141,3.4775 -4.1256,0.002 0.11641,-3.4793 h 3.8786 -8.9e-4 z"
id="cp1"
inkscape:connector-curvature="0" />
<use
id="use77"
x="10.609"
xlink:href="#cp1"
y="0"
width="600"
height="400" />
<path
d="m 186.3,139.04 1.1994,0.003 v 0.87224 h 0.8775 v -0.89253 l 1.2294,0.004 v 0.889 h 0.87926 v -0.89253 l 1.2302,0.002 -0.002,2.0117 c 0,0.31398 -0.2487,0.51859 -0.5362,0.51859 h -4.3169 c -0.28926,0 -0.55824,-0.23548 -0.55913,-0.52564 l -0.003,-1.9888 h 8.8e-4 z"
id="cp2"
inkscape:connector-curvature="0" />
<use
id="use80"
x="10.609"
xlink:href="#cp2"
y="0"
width="600"
height="400" />
<path
id="path82"
d="m 193.9,140.61 c -0.0265,-0.62706 0.87661,-0.63411 0.86603,0 v 1.5364 h -0.866 v -1.536"
inkscape:connector-curvature="0"
style="fill:#000000;stroke:none" />
<path
d="m 188.57,142.84 c -0.003,-0.6059 0.83693,-0.61824 0.82635,0 v 1.1871 h -0.826 v -1.187"
id="cp3"
inkscape:connector-curvature="0"
style="fill:#000000;stroke:none" />
<use
id="use85"
x="10.641"
xlink:href="#cp3"
y="0"
width="600"
height="400" />
</g>
<use
id="use87"
y="46.319801"
xlink:href="#castle"
x="0"
width="600"
height="400" />
<use
id="use89"
transform="matrix(0.70460892,-0.70959585,0.70959585,0.70460892,-35.341459,275.10898)"
xlink:href="#castle"
x="0"
y="0"
width="600"
height="400" />
</g>
<use
id="use91"
x="45.713799"
xlink:href="#castle"
y="0"
width="600"
height="400" />
<use
id="use93"
transform="matrix(-1,0,0,1,479.79195,0)"
xlink:href="#castle3"
x="0"
y="0"
width="600"
height="400" />
<g
id="quina"
style="fill:#ffffff">
<path
id="path96"
d="m 232.636,202.406 v 0.005 c 0,2.2119 0.84927,4.2272 2.2118,5.6894 1.3652,1.4667 3.2454,2.3777 5.302,2.3777 2.0672,0 3.9439,-0.90487 5.3029,-2.3654 1.3581,-1.4587 2.2021,-3.47219 2.2021,-5.693 v -10.768 l -14.992,-0.0123 -0.0273,10.766"
inkscape:connector-curvature="0"
style="fill:#003399" />
<circle
id="circle98"
r="1.4859999"
cy="195.735"
cx="236.07401"
sodipodi:cx="236.07401"
sodipodi:cy="195.735"
sodipodi:rx="1.4859999"
sodipodi:ry="1.4859999"
d="m 237.56001,195.735 c 0,0.8207 -0.66531,1.486 -1.486,1.486 -0.8207,0 -1.486,-0.6653 -1.486,-1.486 0,-0.82069 0.6653,-1.486 1.486,-1.486 0.82069,0 1.486,0.66531 1.486,1.486 z" />
<circle
id="circle100"
r="1.4859999"
cy="195.742"
cx="244.392"
sodipodi:cx="244.392"
sodipodi:cy="195.742"
sodipodi:rx="1.4859999"
sodipodi:ry="1.4859999"
d="m 245.878,195.742 c 0,0.8207 -0.66531,1.486 -1.486,1.486 -0.8207,0 -1.486,-0.6653 -1.486,-1.486 0,-0.82069 0.6653,-1.486 1.486,-1.486 0.82069,0 1.486,0.66531 1.486,1.486 z" />
<circle
id="circle102"
r="1.4859999"
cy="199.735"
cx="240.22501"
sodipodi:cx="240.22501"
sodipodi:cy="199.735"
sodipodi:rx="1.4859999"
sodipodi:ry="1.4859999"
d="m 241.71101,199.735 c 0,0.8207 -0.66531,1.486 -1.486,1.486 -0.8207,0 -1.486,-0.6653 -1.486,-1.486 0,-0.82069 0.6653,-1.486 1.486,-1.486 0.82069,0 1.486,0.66531 1.486,1.486 z" />
<circle
id="circle104"
r="1.4859999"
cy="203.916"
cx="236.07401"
sodipodi:cx="236.07401"
sodipodi:cy="203.916"
sodipodi:rx="1.4859999"
sodipodi:ry="1.4859999"
d="m 237.56001,203.916 c 0,0.8207 -0.66531,1.486 -1.486,1.486 -0.8207,0 -1.486,-0.6653 -1.486,-1.486 0,-0.82069 0.6653,-1.486 1.486,-1.486 0.82069,0 1.486,0.66531 1.486,1.486 z" />
<circle
id="circle106"
r="1.4859999"
cy="203.905"
cx="244.383"
sodipodi:cx="244.383"
sodipodi:cy="203.905"
sodipodi:rx="1.4859999"
sodipodi:ry="1.4859999"
d="m 245.869,203.905 c 0,0.82069 -0.66531,1.486 -1.486,1.486 -0.8207,0 -1.486,-0.66531 -1.486,-1.486 0,-0.8207 0.6653,-1.486 1.486,-1.486 0.82069,0 1.486,0.6653 1.486,1.486 z" />
</g>
<use
id="use108"
y="-26.016001"
xlink:href="#quina"
x="0"
width="600"
height="400" />
<use
id="use110"
x="-20.799"
xlink:href="#quina"
y="0"
width="600"
height="400" />
<use
id="use112"
x="20.745001"
xlink:href="#quina"
y="0"
width="600"
height="400" />
<use
id="use114"
y="25.784"
xlink:href="#quina"
x="0"
width="600"
height="400" />
</g>
</g>
<path id="af" fill-rule="evenodd" d="m-31.5 0h33a30 30 0 0 0 30 -30v-10a30 30 0 0 0 -30 -30h-33zm13-13h19a19 19 0 0 0 19 -19v-6a19 19 0 0 0 -19 -19h-19z"/>
<path id="ab" d="m0 0h63v-13h-51v-18h40v-12h-40v-14h48v-13h-60z" transform="translate(-31.5)"/>
<path id="ai" d="m-31.5 0h12v-48l14 48h11l14-48v48h12v-70h-17.5l-14 48-14-48h-17.5z"/>
<path id="ag" d="m-26.25 0h52.5v-12h-40.5v-16h33v-12h-33v-11h39.25v-12h-51.25z"/>
<path id="ac" fill-rule="evenodd" d="m-31.5 0h13v-26h28a22 22 0 0 0 0 -44h-40zm13-39h27a9 9 0 0 0 0 -18h-27z"/>
<g id="ah">
<clipPath id="al">
<path d="m-31.5 0v-70h63v70zm31.5-47v12h31.5v-12z"/>
</clipPath>
<use clip-path="url(#al)" xlink:href="#y" height="2940" width="4200" y="0" x="0"/>
<rect y="-35" width="26.5" x="5" height="10"/>
<rect y="-35" width="10" x="21.5" height="35"/>
</g>
<path id="ad" d="m-15.75-22c0 7 6.75 10.5 16.75 10.5s14.74-3.25 14.75-7.75c0-14.25-46.75-5.25-46.5-30.25 0.25-21.5 24.75-20.5 33.75-20.5s26 4 25.75 21.25h-15.25c0-7.5-7-10.25-15-10.25-7.75 0-13.25 1.25-13.25 8.5-0.25 11.75 46.25 4 46.25 28.75 0 18.25-18 21.75-31.5 21.75-11.5 0-31.55-4.5-31.5-22z"/>
<g id="x">
<g id="z">
<polygon id="an" points="0 0 0 1 0.5 1" transform="matrix(.95106 .30902 -.30902 .95106 0 -1)"/>
<use xlink:href="#an" transform="scale(-1,1)" height="2940" width="4200" y="0" x="0"/>
</g>
<use xlink:href="#z" transform="rotate(72.001)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#z" transform="rotate(-72.001)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#z" transform="rotate(144)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#z" transform="rotate(216)" height="2940" width="4200" y="0" x="0"/>
</g>
<use id="w" xlink:href="#x" transform="scale(31.5)" height="2940" width="4200" y="0" x="0"/>
<use id="u" xlink:href="#x" transform="scale(26.25)" height="2940" width="4200" y="0" x="0"/>
<use id="v" xlink:href="#x" transform="scale(21)" height="2940" width="4200" y="0" x="0"/>
<use id="ae" xlink:href="#x" transform="scale(15)" height="2940" width="4200" y="0" x="0"/>
<use id="am" xlink:href="#x" transform="scale(10.5)" height="2940" width="4200" y="0" x="0"/>
</defs>
<clipPath id="ak">
<use xlink:href="#aj" transform="translate(0,1446.7)" height="2940" width="4200" y="0" x="0"/>
</clipPath>
<g transform="matrix(.33875 0 0 .3373 -1341.4 -217.87)">
<rect height="2940" width="4200" y="-2916.7" x="-2100" fill="#00923f"/>
<path fill="#f8c300" d="m-1743-1446.7 1743 1113 1743-1113-1743-1113z"/>
<circle id="aj" transform="translate(0,-1446.7)" cy="0" cx="0" r="735" fill="#28166f"/>
<path d="m-2205 1470a1785 1785 0 0 1 3570 0h-105a1680 1680 0 1 0 -3360 0z" clip-path="url(#ak)" transform="translate(0,-1446.7)" fill="#fff"/>
<g fill="#00923f" transform="translate(-420,23.333)">
<g transform="rotate(-7)">
<use xlink:href="#y" transform="translate(0,-1697.5)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#aa" transform="matrix(.99863 .052336 -.052336 .99863 88.84 -1695.2)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#af" transform="matrix(.99452 .10453 -.10453 .99452 177.44 -1688.2)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#ab" transform="matrix(.98769 .15643 -.15643 .98769 265.55 -1676.6)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#ai" transform="matrix(.97815 .20791 -.20791 .97815 352.93 -1660.4)" height="2940" width="4200" y="0" x="0"/>
</g>
<use xlink:href="#ag" transform="matrix(.98556 .16935 -.16935 .98556 287.47 -1673)" height="2940" width="4200" y="0" x="0"/>
<g transform="rotate(14.5)">
<use xlink:href="#ac" transform="translate(0,-1697.5)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#aa" transform="matrix(.99863 .052336 -.052336 .99863 88.84 -1695.2)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#y" transform="matrix(.99452 .10453 -.10453 .99452 177.44 -1688.2)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#ah" transform="matrix(.98769 .15643 -.15643 .98769 265.55 -1676.6)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#aa" transform="matrix(.97815 .20791 -.20791 .97815 352.93 -1660.4)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#ab" transform="matrix(.96593 .25882 -.25882 .96593 439.35 -1639.7)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#ad" transform="matrix(.95106 .30902 -.30902 .95106 524.56 -1614.4)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#ad" transform="matrix(.93358 .35837 -.35837 .93358 608.33 -1584.8)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#y" transform="matrix(.91355 .40674 -.40674 .91355 690.44 -1550.7)" height="2940" width="4200" y="0" x="0"/>
</g>
</g>
<g fill="#fff" transform="translate(0,-1446.7)">
<use xlink:href="#w" transform="translate(-600,-132)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#w" transform="translate(-535,177)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#v" transform="translate(-625,243)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#ae" transform="translate(-463,132)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#u" transform="translate(-382,250)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#u" transform="translate(-404,323)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#w" transform="translate(228,-228)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#w" transform="translate(515,258)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#v" transform="translate(617,265)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#u" transform="translate(545,323)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#u" transform="translate(368,477)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#v" transform="translate(367,551)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#v" transform="translate(441,419)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#u" transform="translate(500,382)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#v" transform="translate(365,405)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#u" transform="translate(-280,30)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#v" transform="translate(200,-37)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#w" transform="translate(0,330)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#u" transform="translate(85,184)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#u" transform="translate(0,118)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#v" transform="translate(-74,184)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#ae" transform="translate(-37,235)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#u" transform="translate(220,495)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#v" transform="translate(283,430)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#v" transform="translate(162,412)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#w" transform="translate(-295,390)" height="2940" width="4200" y="0" x="0"/>
<use xlink:href="#am" transform="translate(0,575)" height="2940" width="4200" y="0" x="0"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="26"
width="26"
version="1.1"
id="svg2"
inkscape:version="0.48.4 r9939"
sodipodi:docname="pad_enumerate.svg">
<metadata
id="metadata40">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1033"
id="namedview38"
showgrid="true"
inkscape:snap-to-guides="false"
inkscape:snap-grids="true"
inkscape:zoom="22.961538"
inkscape:cx="12.956449"
inkscape:cy="14.77885"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-nodes="true">
<inkscape:grid
type="xygrid"
id="grid3017"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="0.5px"
spacingy="0.5px" />
</sodipodi:namedview>
<defs
id="defs4" />
<g
transform="matrix(1.6382539,0,0,1.5572263,1.2572207,0.36314149)"
id="g16">
<rect
height="16"
width="16"
y="0"
x="0"
id="rect18"
style="fill-opacity:0" />
</g>
<path
style="fill:#008000;fill-opacity:0.69803922;stroke:#008000;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 12.60804,8.1147404 c -4.6944198,0 -8.4999998,3.8055796 -8.4999998,8.4999996 0,4.69442 3.80558,8.5 8.4999998,8.5 4.69442,0 8.5,-3.80558 8.5,-8.5 0,-4.69442 -3.80558,-8.4999996 -8.5,-8.4999996 z m 0,4.9999996 c 1.932997,0 3.5,1.567003 3.5,3.5 0,1.932997 -1.567003,3.5 -3.5,3.5 -1.932997,0 -3.4999998,-1.567003 -3.4999998,-3.5 0,-1.932997 1.5670028,-3.5 3.4999998,-3.5 z"
id="path3763"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-size:12.11407566px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#800000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Bold"
x="-0.99058318"
y="9.085557"
id="text2985"
sodipodi:linespacing="125%"
transform="scale(1.0095063,0.99058318)"><tspan
sodipodi:role="line"
id="tspan2987"
x="-0.99058318"
y="9.085557">1,2,3</tspan></text>
</svg>
......@@ -75,7 +75,7 @@ static void InitKiCadAboutNew( AboutAppInfo& info )
info.SetAppName( wxT( ".: " ) + Pgm().App().GetAppName() + wxT( " :." ) );
/* Copyright information */
info.SetCopyright( wxT( "(C) 1992-2014 KiCad Developers Team" ) );
info.SetCopyright( wxT( "(C) 1992-2015 KiCad Developers Team" ) );
/* KiCad build version */
wxString version;
......@@ -221,89 +221,109 @@ static void InitKiCadAboutNew( AboutAppInfo& info )
// The core developers
info.AddDeveloper(
new Contributor( wxT( "Jean-Pierre Charras" ), wxT( "jp.charras@wanadoo.fr" ) ) );
new Contributor( wxT( "Jean-Pierre Charras" ), wxT( "jp.charras@wanadoo.fr" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Dick Hollenbeck" ), wxT( "dick@softplc.com" ) ) );
new Contributor( wxT( "Dick Hollenbeck" ), wxT( "dick@softplc.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Wayne Stambaugh" ), wxT( "stambaughw@verizon.net" ) ) );
new Contributor( wxT( "Wayne Stambaugh" ), wxT( "stambaughw@verizon.net" ) ) );
// alphabetically by last name after main 3 above:
info.AddDeveloper(
new Contributor( wxT( "Frank Bennett" ), wxT( "bennett78@lpbroadband.net" ) ) );
new Contributor( wxT( "Frank Bennett" ), wxT( "bennett78@lpbroadband.net" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Cirilo Bernardo" ), wxT( "cirilo_bernardo@yahoo.com" ) ) );
new Contributor( wxT( "Cirilo Bernardo" ), wxT( "cirilo_bernardo@yahoo.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Jonas Diemer" ), wxT( "diemer@gmx.de" ) ) );
new Contributor( wxT( "Jonas Diemer" ), wxT( "diemer@gmx.de" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Tim Hanson" ), wxT( "sideskate@gmail.com" ) ) );
new Contributor( wxT( "Tim Hanson" ), wxT( "sideskate@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Hauptmech" ), wxT( "hauptmech@gmail.com" ) ) );
new Contributor( wxT( "Hauptmech" ), wxT( "hauptmech@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Jerry Jacobs" ), wxT( "xor.gate.engineering@gmail.com" ) ) );
new Contributor( wxT( "Torsten Hüter" ), wxT( "torstenhtr@gmx.de" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Lorenzo Marcantonio" ), wxT( "lomarcan@tin.it" ) ) );
new Contributor( wxT( "Jerry Jacobs" ), wxT( "xor.gate.engineering@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Rok Markovic" ), wxT( "rok@kanardia.eu" ) ) );
new Contributor( wxT( "Daniel Majewski" ), wxT( "lordblick@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Marco Mattila" ), wxT( "marcom99@gmail.com" ) ) );
new Contributor( wxT( "Lorenzo Marcantonio" ), wxT( "lomarcan@tin.it" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Miguel Angel Ajo Pelayo" ),wxT( "miguelangel@nbee.es" ) ) );
new Contributor( wxT( "Rok Markovic" ), wxT( "rok@kanardia.eu" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Marco Serantoni" ), wxT( "marco.serantoni@gmail.com" ) ) );
new Contributor( wxT( "Marco Mattila" ), wxT( "marcom99@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Brian Sidebotham" ), wxT( "brian.sidebotham@gmail.com" ) ) );
new Contributor( wxT( "Miguel Angel Ajo Pelayo" ), wxT( "miguelangel@nbee.es" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Orson (Maciej Suminski)" ), wxT( "maciej.suminski@cern.ch" ) ) );
new Contributor( wxT( "Jacobo Aragunde Perez" ), wxT( "jaragunde@igalia.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Rafael Sokolowski" ), wxT( "rafael.sokolowski@web.de" ) ) );
new Contributor( wxT( "Mark Roszko" ), wxT( "mark.roszko@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Vesa Solonen" ), wxT( "vesa.solonen@hut.fi" ) ) );
new Contributor( wxT( "Marco Serantoni" ), wxT( "marco.serantoni@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Tomasz Wlostowski" ), wxT( "tomasz.wlostowski@cern.ch" ) ) );
new Contributor( wxT( "Brian Sidebotham" ), wxT( "brian.sidebotham@gmail.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Orson (Maciej Sumiński)" ), wxT( "maciej.suminski@cern.ch" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Rafael Sokolowski" ), wxT( "rafael.sokolowski@web.de" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Vesa Solonen" ), wxT( "vesa.solonen@hut.fi" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Tomasz Wlostowski" ), wxT( "tomasz.wlostowski@cern.ch" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Alexander Zakamaldin" ), wxT( "zaka62@mail.ru" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Henner Zeller" ), wxT( "h.zeller@acm.org" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Andrew Zonenberg" ), wxT( "azonenberg@drawersteak.com" ) ) );
info.AddDeveloper(
new Contributor( wxT( "Nick Østergaard" ), wxT( "oe.nick@gmail.com" ) ) );
// The document writers
info.AddDocWriter(
new Contributor( wxT( "Jean-Pierre Charras" ), wxT( "jp.charras@wanadoo.fr" ) ) );
new Contributor( wxT( "Jean-Pierre Charras" ), wxT( "jp.charras@wanadoo.fr" ) ) );
info.AddDocWriter(
new Contributor( wxT( "Igor Plyatov" ), wxT( "plyatov@gmail.com" ) ) );
new Contributor( wxT( "Igor Plyatov" ), wxT( "plyatov@gmail.com" ) ) );
info.AddDocWriter(
new Contributor( wxT( "Fabrizio Tappero" ), wxT( "fabrizio.tappero@gmail.com" ) ) );
new Contributor( wxT( "Fabrizio Tappero" ), wxT( "fabrizio.tappero@gmail.com" ) ) );
/* The translators
* As category the language to which the translation was done is used
* and as icon the national flag of the corresponding country.
*/
info.AddTranslator(
new Contributor( wxT( "Martin Kratoška" ), wxT( "martin@ok1rr.com" ), wxT( "Czech (CZ)" ), KiBitmapNew( lang_cs_xpm ) ) );
new Contributor( wxT( "Martin Kratoška" ), wxT( "martin@ok1rr.com" ), wxT( "Czech (CZ)" ), KiBitmapNew( lang_cs_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Jerry Jacobs" ), wxT( "xor.gate.engineering@gmail.com" ),wxT( "Dutch (NL)" ), KiBitmapNew( lang_nl_xpm ) ) );
new Contributor( wxT( "Jerry Jacobs" ), wxT( "xor.gate.engineering@gmail.com" ),wxT( "Dutch (NL)" ), KiBitmapNew( lang_nl_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Vesa Solonen" ), wxT( "vesa.solonen@hut.fi" ), wxT( "Finnish (FI)" ), KiBitmapNew( lang_fi_xpm ) ) );
new Contributor( wxT( "Vesa Solonen" ), wxT( "vesa.solonen@hut.fi" ), wxT( "Finnish (FI)" ), KiBitmapNew( lang_fi_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Jean-Pierre Charras" ), wxT( "jp.charras@wanadoo.fr" ), wxT( "French (FR)" ), KiBitmapNew( lang_fr_xpm ) ) );
new Contributor( wxT( "Jean-Pierre Charras" ), wxT( "jp.charras@wanadoo.fr" ), wxT( "French (FR)" ), KiBitmapNew( lang_fr_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Mateusz Skowroński" ), wxT( "skowri@gmail.com" ), wxT( "Polish (PL)" ), KiBitmapNew( lang_pl_xpm ) ) );
new Contributor( wxT( "Mateusz Skowroński" ), wxT( "skowri@gmail.com" ), wxT( "Polish (PL)" ), KiBitmapNew( lang_pl_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Renie Marquet" ), wxT( "reniemarquet@uol.com.br" ), wxT( "Portuguese (PT)" ), KiBitmapNew( lang_pt_xpm ) ) );
new Contributor( wxT( "Kerusey Karyu" ), wxT( "keruseykaryu@o2.pl" ), wxT( "Polish (PL)" ), KiBitmapNew( lang_pl_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Igor Plyatov" ), wxT( "plyatov@gmail.com" ), wxT( "Russian (RU)" ), KiBitmapNew( lang_ru_xpm ) ) );
new Contributor( wxT( "Renie Marquet" ), wxT( "reniemarquet@uol.com.br" ), wxT( "Portuguese (PT)" ), KiBitmapNew( lang_pt_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Andrey Fedorushkov" ), wxT( "andrf@mail.ru" ), wxT( "Russian (RU)" ), KiBitmapNew( lang_ru_xpm ) ) );
new Contributor( wxT( "Igor Plyatov" ), wxT( "plyatov@gmail.com" ), wxT( "Russian (RU)" ), KiBitmapNew( lang_ru_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Pedro Martin del Valle" ), wxT( "pkicad@yahoo.es" ), wxT( "Spanish (ES)" ), KiBitmapNew( lang_es_xpm ) ) );
new Contributor( wxT( "Andrey Fedorushkov" ), wxT( "andrf@mail.ru" ), wxT( "Russian (RU)" ), KiBitmapNew( lang_ru_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Iñigo Zuluaga" ), wxT( "inigo_zuluaga@yahoo.es" ), wxT( "Spanish (ES)" ), KiBitmapNew( lang_es_xpm ) ) );
new Contributor( wxT( "Pedro Martin del Valle" ), wxT( "pkicad@yahoo.es" ), wxT( "Spanish (ES)" ), KiBitmapNew( lang_es_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Rafael Sokolowski" ), wxT( "rafael.sokolowski@web.de" ), wxT( "German (DE)" ), KiBitmapNew( lang_de_xpm ) ) );
new Contributor( wxT( "Iñigo Zuluaga" ), wxT( "inigo_zuluaga@yahoo.es" ), wxT( "Spanish (ES)" ), KiBitmapNew( lang_es_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Kenta Yonekura" ), wxT( "midpika@hotmail.com" ), wxT( "Japanese (JA)" ), KiBitmapNew( lang_jp_xpm ) ) );
new Contributor( wxT( "Rafael Sokolowski" ), wxT( "rafael.sokolowski@web.de" ), wxT( "German (DE)" ), KiBitmapNew( lang_de_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Kenta Yonekura" ), wxT( "midpika@hotmail.com" ), wxT( "Japanese (JA)" ), KiBitmapNew( lang_jp_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Manolis Stefanis, Athanasios Vlastos and Milonas Kostas" ),
wxT( "milonas.ko@gmail.com" ), wxT( "Greek (el_GR)" ), KiBitmapNew( lang_gr_xpm ) ) );
wxT( "milonas.ko@gmail.com" ), wxT( "Greek (el_GR)" ), KiBitmapNew( lang_gr_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Massimo Cioce" ), wxT( "ciocemax@alice.it" ), wxT( "Italian (IT)" ), KiBitmapNew( lang_it_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Massimo Cioce" ), wxT( "ciocemax@alice.it" ), wxT( "Italian (IT)" ), KiBitmapNew( lang_it_xpm ) ) );
new Contributor( wxT( "Marco Ciampa" ), wxT( "ciampix@libero.it" ), wxT( "Italian (IT)" ), KiBitmapNew( lang_it_xpm ) ) );
info.AddTranslator(
new Contributor( wxT( "Evgeniy Ivanov" ), wxT( "evgeniy_p_ivanov@yahoo.ca" ), wxT( "Bulgarian (BG)" ),KiBitmapNew( lang_bg_xpm ) ) );
new Contributor( wxT( "Evgeniy Ivanov" ), wxT( "evgeniy_p_ivanov@yahoo.ca" ), wxT( "Bulgarian (BG)" ),KiBitmapNew( lang_bg_xpm ) ) );
// TODO: are these all russian translators,
// placed them here now,
......@@ -315,15 +335,15 @@ static void InitKiCadAboutNew( AboutAppInfo& info )
// Programm credits for icons
info.AddArtist(
new Contributor( wxT( "Iñigo Zuluagaz" ), wxT( "inigo_zuluaga@yahoo.es" ), wxT( "Icons by" ), KiBitmapNew( edit_module_xpm ) ) );
new Contributor( wxT( "Iñigo Zuluagaz" ), wxT( "inigo_zuluaga@yahoo.es" ), wxT( "Icons by" ), KiBitmapNew( edit_module_xpm ) ) );
info.AddArtist(
new Contributor( wxT( "Fabrizio Tappero" ), wxT( "fabrizio.tappero@gmail.com" ), wxT( "New icons by" ), KiBitmapNew( edit_module_xpm ) ) );
new Contributor( wxT( "Fabrizio Tappero" ), wxT( "fabrizio.tappero@gmail.com" ), wxT( "New icons by" ), KiBitmapNew( edit_module_xpm ) ) );
info.AddArtist(
new Contributor( wxT( "Konstantin Baranovskiy" ), wxT( "baranovskiykonstantin@gmail.com" ), wxT( "New icons by" ), KiBitmapNew( edit_module_xpm ) ) );
info.AddArtist(
new Contributor( wxT( "Renie Marquet" ), wxT( "reniemarquet@uol.com.br" ), wxT( "3D modules by" ), KiBitmapNew( three_d_xpm ) ) );
new Contributor( wxT( "Renie Marquet" ), wxT( "reniemarquet@uol.com.br" ), wxT( "3D modules by" ), KiBitmapNew( three_d_xpm ) ) );
info.AddArtist(
new Contributor( wxT( "Christophe Boschat" ), wxT( "nox454@hotmail.fr" ), wxT( "3D modules by" ), KiBitmapNew( three_d_xpm ) ) );
new Contributor( wxT( "Christophe Boschat" ), wxT( "nox454@hotmail.fr" ), wxT( "3D modules by" ), KiBitmapNew( three_d_xpm ) ) );
}
......
......@@ -152,14 +152,6 @@ static void formatList( OUTPUTFORMATTER* out, int aNestLevel, int aCtl, CPTREE&
int ctl = 0;
#if defined(DEBUG)
if( it->first == "field" )
{
int breakhere = 1;
(void) breakhere;
}
#endif
if( isLast( aTree, it ) ) // is "it" the last one?
{
//if( !( aCtl & CTL_IN_ATTRS ) )
......@@ -205,8 +197,7 @@ static void formatNode( OUTPUTFORMATTER* out, int aNestLevel, int aCtl,
else // is an atom, not a list
{
const char* atom = out->Quotes( aKey ).c_str();
out->Print( 0, " %s", atom );
out->Print( 0, " %s", out->Quotes( aKey ).c_str() );
}
}
......
......@@ -279,7 +279,23 @@ wxString LIB_PART::SubReference( int aUnit, bool aAddSeparator )
if( m_subpartFirstId >= '0' && m_subpartFirstId <= '9' )
subRef << aUnit;
else
subRef << wxChar( m_subpartFirstId + aUnit - 1);
{
// use letters as notation. To allow more than 26 units, the sub ref
// use one letter if letter = A .. Z or a ... z, and 2 letters otherwise
// first letter is expected to be 'A' or 'a' (i.e. 26 letters are available)
int u;
aUnit -= 1; // Unit number starts to 1. now to 0.
while( aUnit >= 26 ) // more than one letter are needed
{
u = aUnit / 26;
subRef << wxChar( m_subpartFirstId + u -1 );
aUnit %= 26;
}
u = m_subpartFirstId + aUnit;
subRef << wxChar( u );
}
return subRef;
}
......
......@@ -35,6 +35,7 @@
#include <general.h>
#include <libeditframe.h>
#include <class_library.h>
#include <eeschema_id.h> // for ID_POPUP_SCH_SELECT_UNIT_CMP_MAX and ID_POPUP_SCH_SELECT_UNIT1
#include <dialog_edit_component_in_lib.h>
......@@ -157,6 +158,13 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::InitBasicPanel()
if( m_Parent->GetShowDeMorgan() )
m_AsConvertButt->SetValue( true );
int maxUnits = ID_POPUP_SCH_SELECT_UNIT_CMP_MAX - ID_POPUP_SCH_SELECT_UNIT1;
m_SelNumberOfUnits->SetRange (1, maxUnits );
m_staticTextNbUnits->SetLabel( wxString::Format(
_( "Number of Units (max allowed %d)" ), maxUnits ) );
/* Default values for a new component. */
if( component == NULL )
{
......
......@@ -56,7 +56,7 @@ class DIALOG_EDIT_COMPONENT_IN_SCHEMATIC : public DIALOG_EDIT_COMPONENT_IN_SCHEM
{
public:
/** Constructor */
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( wxWindow* parent );
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( wxWindow* aParent );
/**
* Function InitBuffers
......@@ -69,7 +69,7 @@ private:
friend class SCH_EDIT_FRAME;
SCH_EDIT_FRAME* m_Parent;
SCH_EDIT_FRAME* m_parent;
SCH_COMPONENT* m_cmp;
LIB_PART* m_part;
bool m_skipCopyFromPanel;
......@@ -165,10 +165,10 @@ void SCH_EDIT_FRAME::EditComponent( SCH_COMPONENT* aComponent )
}
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( wxWindow* parent ) :
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP( parent )
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( wxWindow* aParent ) :
DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP( aParent )
{
m_Parent = (SCH_EDIT_FRAME*) parent;
m_parent = (SCH_EDIT_FRAME*) aParent;
m_cmp = NULL;
m_part = NULL;
......@@ -258,7 +258,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnSelectChipName( wxCommandEvent& event
{
wxArrayString dummy;
int dummyunit = 1;
wxString chipname = m_Parent->SelectComponentFromLibrary( wxEmptyString, dummy, dummyunit,
wxString chipname = m_parent->SelectComponentFromLibrary( wxEmptyString, dummy, dummyunit,
true, NULL, NULL );
if( chipname.IsEmpty() )
return;
......@@ -336,7 +336,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions()
{
int unit_selection = unitChoice->GetCurrentSelection() + 1;
m_cmp->SetUnitSelection( &m_Parent->GetCurrentSheet(), unit_selection );
m_cmp->SetUnitSelection( &m_parent->GetCurrentSheet(), unit_selection );
m_cmp->SetUnit( unit_selection );
}
......@@ -397,8 +397,8 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick( wxCommandEvent& event
// save old cmp in undo list if not already in edit, or moving ...
// or the component to be edited is part of a block
if( m_cmp->m_Flags == 0
|| m_Parent->GetScreen()->m_BlockLocate.GetState() != STATE_NO_BLOCK )
m_Parent->SaveCopyInUndoList( m_cmp, UR_CHANGED );
|| m_parent->GetScreen()->m_BlockLocate.GetState() != STATE_NO_BLOCK )
m_parent->SaveCopyInUndoList( m_cmp, UR_CHANGED );
copyPanelToOptions();
......@@ -412,7 +412,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick( wxCommandEvent& event
// correct the problem before removing the undefined fields. It should also
// resolve most of the bug reports and questions regarding missing fields.
if( !m_FieldsBuf[i].GetName( false ).IsEmpty() && m_FieldsBuf[i].GetText().IsEmpty()
&& !m_Parent->GetTemplates().HasFieldName( m_FieldsBuf[i].GetName( false ) )
&& !m_parent->GetTemplates().HasFieldName( m_FieldsBuf[i].GetName( false ) )
&& !removeRemainingFields )
{
wxString msg = wxString::Format(
......@@ -455,11 +455,11 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick( wxCommandEvent& event
// Reference has a specific initialization, depending on the current active sheet
// because for a given component, in a complex hierarchy, there are more than one
// reference.
m_cmp->SetRef( &m_Parent->GetCurrentSheet(), m_FieldsBuf[REFERENCE].GetText() );
m_cmp->SetRef( &m_parent->GetCurrentSheet(), m_FieldsBuf[REFERENCE].GetText() );
m_Parent->OnModify();
m_Parent->GetScreen()->TestDanglingEnds();
m_Parent->GetCanvas()->Refresh( true );
m_parent->OnModify();
m_parent->GetScreen()->TestDanglingEnds();
m_parent->GetCanvas()->Refresh( true );
EndQuasiModal( wxID_OK );
}
......@@ -664,7 +664,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::InitBuffers( SCH_COMPONENT* aComponent
// Add template fieldnames:
// Now copy in the template fields, in the order that they are present in the
// template field editor UI.
const TEMPLATE_FIELDNAMES& tfnames = m_Parent->GetTemplateFieldNames();
const TEMPLATE_FIELDNAMES& tfnames = m_parent->GetTemplateFieldNames();
for( TEMPLATE_FIELDNAMES::const_iterator it = tfnames.begin(); it!=tfnames.end(); ++it )
{
......@@ -724,7 +724,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::InitBuffers( SCH_COMPONENT* aComponent
}
#endif
m_FieldsBuf[REFERENCE].SetText( m_cmp->GetRef( &m_Parent->GetCurrentSheet() ) );
m_FieldsBuf[REFERENCE].SetText( m_cmp->GetRef( &m_parent->GetCurrentSheet() ) );
for( unsigned i = 0; i<m_FieldsBuf.size(); ++i )
{
......@@ -958,14 +958,11 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyOptionsToPanel()
if( unitcount < 1 )
unitcount = 1;
if( unitcount > 26 )
unitcount = 26;
unitChoice->Clear();
for( int ii=0; ii < unitcount; ii++ )
for( int ii = 1; ii <= unitcount; ii++ )
{
unitChoice->Append( wxString::Format( "%c", "?ABCDEFGHIJKLMNOPQRSTUVWXYZ"[ ii + 1 ] ) );
unitChoice->Append( LIB_PART::SubReference( ii, false ) );
}
// For components with multiple parts per package, set the unit selection
......@@ -973,7 +970,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyOptionsToPanel()
unitChoice->SetSelection( m_cmp->GetUnit() - 1 );
// Disable unit selection if only one unit exists:
if( m_cmp->GetUnit() <= 1 )
if( m_cmp->GetUnitCount() <= 1 )
{
unitChoice->Enable( false );
unitsInterchageableLabel->Show( false );
......@@ -1043,10 +1040,10 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp( wxCommandEvent& event )
{
// save old cmp in undo list if not already in edit, or moving ...
if( m_cmp->m_Flags == 0 )
m_Parent->SaveCopyInUndoList( m_cmp, UR_CHANGED );
m_parent->SaveCopyInUndoList( m_cmp, UR_CHANGED );
INSTALL_UNBUFFERED_DC( dc, m_Parent->GetCanvas() );
m_cmp->Draw( m_Parent->GetCanvas(), &dc, wxPoint( 0, 0 ), g_XorMode );
INSTALL_UNBUFFERED_DC( dc, m_parent->GetCanvas() );
m_cmp->Draw( m_parent->GetCanvas(), &dc, wxPoint( 0, 0 ), g_XorMode );
// Initialize fixed field values to default values found in library
// Note: the field texts are not modified because they are set in schematic,
......@@ -1080,9 +1077,9 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp( wxCommandEvent& event )
m_cmp->SetOrientation( CMP_NORMAL );
m_Parent->OnModify();
m_parent->OnModify();
m_cmp->Draw( m_Parent->GetCanvas(), &dc, wxPoint( 0, 0 ), GR_DEFAULT_DRAWMODE );
m_cmp->Draw( m_parent->GetCanvas(), &dc, wxPoint( 0, 0 ), GR_DEFAULT_DRAWMODE );
EndQuasiModal( wxID_OK );
}
......
......@@ -38,6 +38,7 @@
#include <drawtxt.h>
#include <confirm.h>
#include <sch_text.h>
#include <typeinfo>
#include <dialog_edit_label_base.h>
......@@ -50,6 +51,30 @@ class DIALOG_LABEL_EDITOR : public DIALOG_LABEL_EDITOR_BASE
public:
DIALOG_LABEL_EDITOR( SCH_EDIT_FRAME* parent, SCH_TEXT* aTextItem );
void SetTitle( const wxString& aTitle ) // OVERRIDE wxTopLevelWindow::SetTitle
{
// This class is shared for numerous tasks: a couple of
// single line labels and multi-line text fields.
// Often the desired size of the multi-line text field editor
// is larger than is needed for the single line label.
// Therefore the session retained sizes of these dialogs needs
// to be class independent, make them title dependent.
switch( m_CurrentText->Type() )
{
case SCH_GLOBAL_LABEL_T:
case SCH_HIERARCHICAL_LABEL_T:
case SCH_LABEL_T:
// labels can share retained settings probably.
break;
default:
m_hash_key = TO_UTF8( aTitle );
m_hash_key += typeid(*this).name();
}
DIALOG_LABEL_EDITOR_BASE::SetTitle( aTitle );
}
private:
void InitDialog( );
virtual void OnEnterKey( wxCommandEvent& aEvent );
......
......@@ -568,7 +568,7 @@ void DIALOG_LIB_EDIT_PIN_TABLE::DataViewModel::Pin::GetValue( wxVariant& aValue,
break;
case PIN_TYPE:
aValue = m_Backing->GetTypeString();
aValue = m_Backing->GetElectricalTypeName();
break;
case PIN_POSITION:
......
......@@ -40,6 +40,13 @@
*/
#define MAX_SELECT_ITEM_IDS 10
/**
* The maximum number of units per package.
* Increase this number if that ever becomes a problem, but remember
* the popup menu to select a given unit could be not easy to use.
*/
#define MAX_UNIT_COUNT_PER_PACKAGE 64
/**
* Command IDs for the schematic editor.
......@@ -129,31 +136,10 @@ enum id_eeschema_frm
// Unit select context menus command IDs.
ID_POPUP_SCH_SELECT_UNIT_CMP,
ID_POPUP_SCH_SELECT_UNIT1,
ID_POPUP_SCH_SELECT_UNIT2,
ID_POPUP_SCH_SELECT_UNIT3,
ID_POPUP_SCH_SELECT_UNIT4,
ID_POPUP_SCH_SELECT_UNIT5,
ID_POPUP_SCH_SELECT_UNIT6,
ID_POPUP_SCH_SELECT_UNIT7,
ID_POPUP_SCH_SELECT_UNIT8,
ID_POPUP_SCH_SELECT_UNIT9,
ID_POPUP_SCH_SELECT_UNIT10,
ID_POPUP_SCH_SELECT_UNIT11,
ID_POPUP_SCH_SELECT_UNIT12,
ID_POPUP_SCH_SELECT_UNIT13,
ID_POPUP_SCH_SELECT_UNIT14,
ID_POPUP_SCH_SELECT_UNIT15,
ID_POPUP_SCH_SELECT_UNIT16,
ID_POPUP_SCH_SELECT_UNIT17,
ID_POPUP_SCH_SELECT_UNIT18,
ID_POPUP_SCH_SELECT_UNIT19,
ID_POPUP_SCH_SELECT_UNIT20,
ID_POPUP_SCH_SELECT_UNIT21,
ID_POPUP_SCH_SELECT_UNIT22,
ID_POPUP_SCH_SELECT_UNIT23,
ID_POPUP_SCH_SELECT_UNIT24,
ID_POPUP_SCH_SELECT_UNIT25,
ID_POPUP_SCH_SELECT_UNIT26,
// ... leave room for MAX_UNIT_COUNT_PER_PACKAGE IDs ,
// to select one unit among MAX_UNIT_COUNT_PER_PACKAGE in popup menu
ID_POPUP_SCH_SELECT_UNIT_CMP_MAX = ID_POPUP_SCH_SELECT_UNIT1
+ MAX_UNIT_COUNT_PER_PACKAGE,
// Change text type context menu command IDs.
ID_POPUP_SCH_CHANGE_TYPE_TEXT,
......
......@@ -281,7 +281,9 @@ void Diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItemTst,
if( aMinConn == NOC ) /* Only 1 element in the net. */
{
msg.Printf( _( "Pin %s (%s) of component %s is unconnected." ),
GetChars( string_pinnum ), MsgPinElectricType[ii], GetChars( cmp_ref ) );
GetChars( string_pinnum ),
GetChars( LIB_PIN::GetElectricalTypeName( ii ) ),
GetChars( cmp_ref ) );
marker->SetData( ERCE_PIN_NOT_CONNECTED,
aNetItemRef->m_Start,
msg,
......@@ -296,7 +298,9 @@ void Diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItemTst,
&aNetItemRef->m_SheetPath );
msg.Printf( _( "Pin %s (%s) of component %s is not driven (Net %d)." ),
GetChars( string_pinnum ), MsgPinElectricType[ii], GetChars( cmp_ref ),
GetChars( string_pinnum ),
GetChars( LIB_PIN::GetElectricalTypeName( ii ) ),
GetChars( cmp_ref ),
aNetItemRef->GetNet() );
marker->SetData( ERCE_PIN_NOT_DRIVEN,
aNetItemRef->m_Start,
......@@ -336,10 +340,14 @@ void Diagnose( NETLIST_OBJECT* aNetItemRef, NETLIST_OBJECT* aNetItemTst,
alt_cmp = aNetItemTst->GetComponentParent()->GetRef( &aNetItemTst->m_SheetPath );
msg.Printf( _( "Pin %s (%s) of component %s is connected to " ),
GetChars( string_pinnum ), MsgPinElectricType[ii], GetChars( cmp_ref ) );
GetChars( string_pinnum ),
GetChars( LIB_PIN::GetElectricalTypeName( ii ) ),
GetChars( cmp_ref ) );
marker->SetData( errortype, aNetItemRef->m_Start, msg, aNetItemRef->m_Start );
msg.Printf( _( "pin %s (%s) of component %s (net %d)." ),
GetChars( alt_string_pinnum ), MsgPinElectricType[jj], GetChars( alt_cmp ),
GetChars( alt_string_pinnum ),
GetChars( LIB_PIN::GetElectricalTypeName( jj ) ),
GetChars( alt_cmp ),
aNetItemRef->GetNet() );
marker->SetAuxiliaryData( msg, aNetItemTst->m_Start );
}
......
......@@ -48,22 +48,20 @@
#include <sch_component.h>
/**
* Note: The following name lists are sentence capitalized per the GNOME UI
* standards for list controls. Please do not change the capitalization
* of these strings unless the GNOME UI standards are changed.
*/
static const wxString pin_orientation_names[] =
static const int pin_orientation_codes[] =
{
_( "Right" ),
_( "Left" ),
_( "Up" ),
_( "Down" )
PIN_RIGHT,
PIN_LEFT,
PIN_UP,
PIN_DOWN
};
#define PIN_ORIENTATION_CNT DIM( pin_orientation_codes )
// bitmaps to show pins orientations in dialog editor
// must have same order than pin_orientation_names
static const BITMAP_DEF s_icons_Pins_Orientations[] =
static const BITMAP_DEF iconsPinsOrientations[] =
{
pinorient_right_xpm,
pinorient_left_xpm,
......@@ -71,35 +69,10 @@ static const BITMAP_DEF s_icons_Pins_Orientations[] =
pinorient_down_xpm,
};
static const int pin_orientation_codes[] =
{
PIN_RIGHT,
PIN_LEFT,
PIN_UP,
PIN_DOWN
};
#define PIN_ORIENTATION_CNT ( sizeof( pin_orientation_names ) / \
sizeof( wxString ) )
static const wxString pin_style_names[] =
{
_( "Line" ),
_( "Inverted" ),
_( "Clock" ),
_( "Inverted clock" ),
_( "Input low" ),
_( "Clock low" ),
_( "Output low" ),
_( "Falling edge clock" ),
_( "NonLogic" )
};
// bitmaps to show pins shapes in dialog editor
// must have same order than pin_style_names
static BITMAP_DEF s_icons_Pins_Shapes[] =
static BITMAP_DEF iconsPinsShapes[] =
{
pinshape_normal_xpm,
pinshape_invert_xpm,
......@@ -113,8 +86,6 @@ static BITMAP_DEF s_icons_Pins_Shapes[] =
};
#define PIN_STYLE_CNT ( sizeof( pin_style_names ) / sizeof( wxString ) )
static const int pin_style_codes[] =
{
......@@ -129,25 +100,11 @@ static const int pin_style_codes[] =
NONLOGIC
};
static const wxString pin_electrical_type_names[] =
{
_( "Input" ),
_( "Output" ),
_( "Bidirectional" ),
_( "Tri-state" ),
_( "Passive" ),
_( "Unspecified" ),
_( "Power input" ),
_( "Power output" ),
_( "Open collector" ),
_( "Open emitter" ),
_( "Not connected" )
};
#define PIN_STYLE_CNT DIM( pin_style_codes )
// bitmaps to show pins electrical type in dialog editor
// must have same order than pin_electrical_type_names
static const BITMAP_DEF s_icons_Pins_Electrical_Type[] =
// must have same order than enum ElectricPinType (see lib_pin.h)
static const BITMAP_DEF iconsPinsElectricalType[] =
{
pintype_input_xpm,
pintype_output_xpm,
......@@ -162,25 +119,108 @@ static const BITMAP_DEF s_icons_Pins_Electrical_Type[] =
pintype_noconnect_xpm
};
#define PIN_ELECTRICAL_TYPE_CNT DIM( iconsPinsElectricalType )
#define PIN_ELECTRICAL_TYPE_CNT ( sizeof( pin_electrical_type_names ) / sizeof( wxString ) )
const wxString LIB_PIN::GetCanonicalElectricalTypeName( unsigned aType )
{
// These strings are the canonical name of the electrictal type
// Not translated, no space in name, only ASCII chars.
// to use when the string name must be known and well defined
// must have same order than enum ElectricPinType (see lib_pin.h)
static const wxChar* msgPinElectricType[] =
{
wxT( "input" ),
wxT( "output" ),
wxT( "BiDi" ),
wxT( "3state" ),
wxT( "passive" ),
wxT( "unspc" ),
wxT( "power_in" ),
wxT( "power_out" ),
wxT( "openCol" ),
wxT( "openEm" ),
wxT( "NotConnected" ),
wxT( "???" )
};
if( aType > PIN_NMAX )
aType = PIN_NMAX;
const wxChar* MsgPinElectricType[] =
return msgPinElectricType[ aType ];
}
// Helper functions to get the pin orientation name from pin_orientation_codes
// Note: the strings are *not* static because they are translated and must be built
// on the fly, to be properly translated
static const wxString getPinOrientationName( unsigned aPinOrientationCode )
{
wxT( "input" ),
wxT( "output" ),
wxT( "BiDi" ),
wxT( "3state" ),
wxT( "passive" ),
wxT( "unspc" ),
wxT( "power_in" ),
wxT( "power_out" ),
wxT( "openCol" ),
wxT( "openEm" ),
wxT( "NotConnected" ),
wxT( "???" )
};
/* Note: The following name lists are sentence capitalized per the GNOME UI
* standards for list controls. Please do not change the capitalization
* of these strings unless the GNOME UI standards are changed.
*/
const wxString pin_orientation_names[] =
{
_( "Right" ),
_( "Left" ),
_( "Up" ),
_( "Down" ),
wxT( "???" )
};
if( aPinOrientationCode > PIN_ORIENTATION_CNT )
aPinOrientationCode = PIN_ORIENTATION_CNT;
return pin_orientation_names[ aPinOrientationCode ];
}
const wxString LIB_PIN::GetElectricalTypeName( unsigned aPinsElectricalType )
{
const wxString pin_electrical_type_names[] =
{ // Keep these translated strings not static
_( "Input" ),
_( "Output" ),
_( "Bidirectional" ),
_( "Tri-state" ),
_( "Passive" ),
_( "Unspecified" ),
_( "Power input" ),
_( "Power output" ),
_( "Open collector" ),
_( "Open emitter" ),
_( "Not connected" ),
wxT( "???" )
};
if( aPinsElectricalType > PIN_ELECTRICAL_TYPE_CNT )
aPinsElectricalType = PIN_ELECTRICAL_TYPE_CNT;
return pin_electrical_type_names[ aPinsElectricalType ];
}
static const wxString getPinStyleName( unsigned aPinsStyle )
{
const wxString pin_style_names[] =
{ // Keep these translated strings not static
_( "Line" ),
_( "Inverted" ),
_( "Clock" ),
_( "Inverted clock" ),
_( "Input low" ),
_( "Clock low" ),
_( "Output low" ),
_( "Falling edge clock" ),
_( "NonLogic" ),
wxT( "???" )
};
if( aPinsStyle > PIN_STYLE_CNT )
aPinsStyle = PIN_STYLE_CNT;
return pin_style_names[ aPinsStyle ];
}
/// Utility for getting the size of the 'internal' pin decorators (as a radius)
......@@ -1935,12 +1975,13 @@ void LIB_PIN::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList )
aList.push_back( MSG_PANEL_ITEM( _( "Number" ), text, DARKCYAN ) );
aList.push_back( MSG_PANEL_ITEM( _( "Type" ),
wxGetTranslation( pin_electrical_type_names[ m_type ] ),
LIB_PIN::GetElectricalTypeName( m_type ),
RED ) );
int styleCodeIndex = GetStyleCodeIndex( m_shape );
if( styleCodeIndex >= 0 )
text = wxGetTranslation( pin_style_names[ styleCodeIndex ] );
text = getPinStyleName( styleCodeIndex );
else
text = wxT( "?" );
......@@ -1957,7 +1998,7 @@ void LIB_PIN::GetMsgPanelInfo( MSG_PANEL_ITEMS& aList )
text = StringFromValue( g_UserUnit, m_length, true );
aList.push_back( MSG_PANEL_ITEM( _( "Length" ), text, MAGENTA ) );
text = wxGetTranslation( pin_orientation_names[ GetOrientationCodeIndex( m_orientation ) ] );
text = getPinOrientationName( (unsigned) GetOrientationCodeIndex( m_orientation ) );
aList.push_back( MSG_PANEL_ITEM( _( "Orientation" ), text, DARKMAGENTA ) );
}
......@@ -2080,7 +2121,7 @@ wxArrayString LIB_PIN::GetOrientationNames( void )
wxArrayString tmp;
for( unsigned ii = 0; ii < PIN_ORIENTATION_CNT; ii++ )
tmp.Add( wxGetTranslation( pin_orientation_names[ii] ) );
tmp.Add( getPinOrientationName( ii ) );
return tmp;
}
......@@ -2142,7 +2183,7 @@ wxArrayString LIB_PIN::GetStyleNames( void )
wxArrayString tmp;
for( unsigned ii = 0; ii < PIN_STYLE_CNT; ii++ )
tmp.Add( wxGetTranslation( pin_style_names[ii] ) );
tmp.Add( getPinStyleName( ii ) );
return tmp;
}
......@@ -2176,7 +2217,7 @@ wxArrayString LIB_PIN::GetElectricalTypeNames( void )
wxArrayString tmp;
for( unsigned ii = 0; ii < PIN_ELECTRICAL_TYPE_CNT; ii++ )
tmp.Add( wxGetTranslation( pin_electrical_type_names[ii] ) );
tmp.Add( LIB_PIN::GetElectricalTypeName( ii ) );
return tmp;
}
......@@ -2184,25 +2225,25 @@ wxArrayString LIB_PIN::GetElectricalTypeNames( void )
const BITMAP_DEF* LIB_PIN::GetElectricalTypeSymbols()
{
return s_icons_Pins_Electrical_Type;
return iconsPinsElectricalType;
}
const BITMAP_DEF* LIB_PIN::GetOrientationSymbols()
{
return s_icons_Pins_Orientations;
return iconsPinsOrientations;
}
const BITMAP_DEF* LIB_PIN::GetStyleSymbols()
{
return s_icons_Pins_Shapes;
return iconsPinsShapes;
}
BITMAP_DEF LIB_PIN::GetMenuImage() const
{
return s_icons_Pins_Electrical_Type[m_type];
return iconsPinsElectricalType[m_type];
}
......@@ -2212,14 +2253,15 @@ wxString LIB_PIN::GetSelectMenuText() const
wxString style;
int styleCode = GetStyleCodeIndex( m_shape );
if( styleCode >= 0 )
style = wxGetTranslation( pin_style_names[ styleCode ] );
style = getPinStyleName( styleCode );
else
style = wxT( "?" );
tmp.Printf( _( "Pin %s, %s, %s" ),
GetChars( GetNumberString() ),
GetChars( GetTypeString() ),
GetChars( GetElectricalTypeName() ),
GetChars( style )
);
return tmp;
......
......@@ -53,8 +53,6 @@ enum ElectricPinType {
PIN_NMAX /* End of List (no used as pin type) */
};
/* Electrical pin type names. */
extern const wxChar* MsgPinElectricType[];
/* Pin visibility flag bit. */
#define PIN_INVISIBLE 1 /* Set makes pin invisible */
......@@ -268,12 +266,39 @@ public:
*/
int GetType() const { return m_type; }
/**
* return a string giving the electrical type of a pin.
* Can be used when a known, not translated name is needed (for instance in net lists)
* @param aType is the electrical type (see enum ElectricPinType )
* @return The electrical name for a pin type (see enun MsgPinElectricType for names).
*/
static const wxString GetCanonicalElectricalTypeName( unsigned aType );
/**
* return a string giving the electrical type of the pin.
*
* Can be used when a known, not translated name is needed (for instance in net lists)
* @return The canonical electrical name of the pin.
*/
wxString const GetCanonicalElectricalTypeName() const
{
return GetCanonicalElectricalTypeName( m_type );
}
/**
* return a translated string for messages giving the electrical type of a pin.
* @param aType is the electrical type (see enum ElectricPinType )
* @return The electrical name of the pin (see enun MsgPinElectricType for names).
*/
wxString GetTypeString() const { return MsgPinElectricType[m_type]; }
static const wxString GetElectricalTypeName( unsigned aType );
/**
* return a translated string for messages giving the electrical type of the pin.
* @return The electrical name of the pin.
*/
wxString const GetElectricalTypeName() const
{
return GetElectricalTypeName( m_type );
}
/**
* Set the electrical type of the pin.
......
......@@ -269,7 +269,9 @@ again." );
aScreen->Show( 0, std::cout );
#endif
aScreen->BuildSchCmpLinksToLibCmp(); // Build links between each components and its part lib LIB_PART
// Build links between each components and its part lib LIB_PART
aScreen->CheckComponentsToPartsLinks();
aScreen->TestDanglingEnds();
msgDiag.Printf( _( "Done Loading <%s>" ), GetChars( aScreen->GetFileName() ) );
......
......@@ -214,19 +214,19 @@ XNODE* NETLIST_EXPORTER_GENERIC::makeDesignHeader()
xdesign->AddChild( xsheet = node( wxT( "sheet" ) ) );
// get the string representation of the sheet index number.
// Note that sheet->GetIndex() is zero index base and we need to increment the number by one to make
// get the string representation of the sheet index number.
// Note that sheet->GetIndex() is zero index base and we need to increment the number by one to make
// human readable
sheetTxt.Printf( wxT( "%d" ), ( sheetList.GetIndex() + 1 ) );
xsheet->AddAttribute( wxT( "number" ), sheetTxt );
xsheet->AddAttribute( wxT( "name" ), sheet->PathHumanReadable() );
xsheet->AddAttribute( wxT( "tstamps" ), sheet->Path() );
TITLE_BLOCK tb = screen->GetTitleBlock();
xsheet->AddChild( xtitleBlock = node( wxT( "title_block" ) ) );
xtitleBlock->AddChild( node( wxT( "title" ), tb.GetTitle() ) );
xtitleBlock->AddChild( node( wxT( "company" ), tb.GetCompany() ) );
xtitleBlock->AddChild( node( wxT( "rev" ), tb.GetRevision() ) );
......@@ -235,7 +235,7 @@ XNODE* NETLIST_EXPORTER_GENERIC::makeDesignHeader()
// We are going to remove the fileName directories.
sourceFileName = wxFileName( screen->GetFileName() );
xtitleBlock->AddChild( node( wxT( "source" ), sourceFileName.GetFullName() ) );
xtitleBlock->AddChild( xcomment = node( wxT( "comment" ) ) );
xcomment->AddAttribute( wxT("number"), wxT("1") );
xcomment->AddAttribute( wxT( "value" ), tb.GetComment1() );
......@@ -399,7 +399,7 @@ XNODE* NETLIST_EXPORTER_GENERIC::makeLibParts()
pins->AddChild( pin = node( sPin ) );
pin->AddAttribute( sPinNum, pinList[i]->GetNumberString() );
pin->AddAttribute( sPinName, pinList[i]->GetName() );
pin->AddAttribute( sPinType, pinList[i]->GetTypeString() );
pin->AddAttribute( sPinType, pinList[i]->GetCanonicalElectricalTypeName() );
// caution: construction work site here, drive slowly
}
......
......@@ -447,12 +447,17 @@ void AddMenusForEditComponent( wxMenu* PopMenu, SCH_COMPONENT* Component, PART_L
{
wxString num_unit;
int unit = Component->GetUnit();
num_unit.Printf( _( "Unit %c" ), "?ABCDEFGHIJKLMNOPQRSTUVWXYZ"[ ii + 1 ] );
num_unit.Printf( _( "Unit %s" ), GetChars( LIB_PART::SubReference( ii + 1, false ) ) );
wxMenuItem * item = sel_unit_menu->Append( ID_POPUP_SCH_SELECT_UNIT1 + ii,
num_unit, wxEmptyString,
wxITEM_CHECK );
if( unit == ii + 1 )
item->Check(true);
// The ID max for these submenus is ID_POPUP_SCH_SELECT_UNIT_CMP_MAX
// See eeschema_id to modify this value.
if( ii >= (ID_POPUP_SCH_SELECT_UNIT_CMP_MAX - ID_POPUP_SCH_SELECT_UNIT1) )
break; // We have used all IDs for these submenus
}
AddMenuItem( editmenu, sel_unit_menu, ID_POPUP_SCH_SELECT_UNIT_CMP,
......
......@@ -540,7 +540,8 @@ bool SCH_SCREEN::Save( FILE* aFile ) const
return true;
}
void SCH_SCREEN::BuildSchCmpLinksToLibCmp()
void SCH_SCREEN::CheckComponentsToPartsLinks()
{
// Initialize or reinitialize the pointer to the LIB_PART for each component
// found in m_drawList, but only if needed (change in lib or schematic)
......@@ -561,12 +562,14 @@ void SCH_SCREEN::BuildSchCmpLinksToLibCmp()
SCH_COMPONENT::ResolveAll( c, libs );
m_modification_sync = mod_hash; // note the last mod_hash
// guard against unneeded runs through this code path by printing trace
DBG(printf("%s: resync-ing %s\n", __func__, TO_UTF8( GetFileName() ) );)
}
}
}
void SCH_SCREEN::Draw( EDA_DRAW_PANEL* aCanvas, wxDC* aDC, GR_DRAWMODE aDrawMode, EDA_COLOR_T aColor )
{
/* note: SCH_SCREEN::Draw is useful only for schematic.
......@@ -574,7 +577,7 @@ void SCH_SCREEN::Draw( EDA_DRAW_PANEL* aCanvas, wxDC* aDC, GR_DRAWMODE aDrawMode
* their SCH_SCREEN::Draw() draws nothing
*/
BuildSchCmpLinksToLibCmp();
CheckComponentsToPartsLinks();
for( SCH_ITEM* item = m_drawList.begin(); item; item = item->Next() )
{
......@@ -596,7 +599,7 @@ void SCH_SCREEN::Draw( EDA_DRAW_PANEL* aCanvas, wxDC* aDC, GR_DRAWMODE aDrawMode
*/
void SCH_SCREEN::Plot( PLOTTER* aPlotter )
{
BuildSchCmpLinksToLibCmp();
CheckComponentsToPartsLinks();
for( SCH_ITEM* item = m_drawList.begin(); item; item = item->Next() )
{
......@@ -1406,7 +1409,7 @@ void SCH_SCREENS::BuildScreenList( EDA_ITEM* aItem )
// up to date (the cost is low if this is the case)
// We do this update here, because most of time this function is called
// to create a netlist, or an ERC, which need this update
screen->BuildSchCmpLinksToLibCmp();
screen->CheckComponentsToPartsLinks();
AddScreenToList( screen );
EDA_ITEM* strct = screen->GetDrawItems();
......
......@@ -274,7 +274,7 @@ BEGIN_EVENT_TABLE( SCH_EDIT_FRAME, EDA_DRAW_FRAME )
EVT_MENU_RANGE( ID_POPUP_GENERAL_START_RANGE, ID_POPUP_GENERAL_END_RANGE,
SCH_EDIT_FRAME::Process_Special_Functions )
EVT_MENU_RANGE( ID_POPUP_SCH_SELECT_UNIT1, ID_POPUP_SCH_SELECT_UNIT26,
EVT_MENU_RANGE( ID_POPUP_SCH_SELECT_UNIT1, ID_POPUP_SCH_SELECT_UNIT_CMP_MAX,
SCH_EDIT_FRAME::OnSelectUnit )
EVT_MENU_RANGE( ID_POPUP_SCH_CHANGE_TYPE_TEXT, ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_COMMENT,
SCH_EDIT_FRAME::OnConvertTextType )
......
......@@ -399,6 +399,7 @@ EXTERN_BITMAP( orient_xpm )
EXTERN_BITMAP( pad_sketch_xpm )
EXTERN_BITMAP( pad_xpm )
EXTERN_BITMAP( pad_dimensions_xpm )
EXTERN_BITMAP( pad_enumerate_xpm )
EXTERN_BITMAP( pads_mask_layers_xpm )
EXTERN_BITMAP( pagelayout_load_xpm )
EXTERN_BITMAP( pagelayout_load_default_xpm )
......
......@@ -195,14 +195,15 @@ public:
void Place( SCH_EDIT_FRAME* frame, wxDC* DC ) { };
/**
* Initialize or reinitialize the pointer
* to the LIB_PART for each component found in m_drawList
* must be called:
* in Draw function
* when loading a schematic file
* before creating a netlist (in case a library is modified)
*/
void BuildSchCmpLinksToLibCmp();
* Function CheckComponentsToPartsLink
* initializes or reinitializes the weak reference
* to the LIB_PART for each SCH_COMPONENT found in m_drawList.
* It must be called from:
* - Draw function
* - when loading a schematic file
* - before creating a netlist (in case a library is modified)
*/
void CheckComponentsToPartsLinks();
/**
* Function Draw
......
......@@ -56,7 +56,7 @@ CMake target must be defined to build either. Whether that is a separate build
or not is not the important thing. Simply having a single CMake target has
advantages. (Each builder person will have his/her own intentions relative to
use of python or not.) Once a DSO is python capable, it can be driven by any
number of python program tops, including demo-ing (automaton) and testing
number of python program tops, including demo-ing (automation) and testing
separately.</li>
......@@ -198,7 +198,7 @@ struct KIFACE
* @param aCtlBits consists of bit flags from the set of KFCTL_* \#defines above.
*
* @return wxWindow* - and if not NULL, should be cast into the known type using
* and old school cast. dynamic_cast is problemenatic since it needs typeinfo probably
* and old school cast. dynamic_cast is problematic since it needs typeinfo probably
* not contained in the caller's link image.
*/
VTBL_ENTRY wxWindow* CreateWindow( wxWindow* aParent, int aClassId,
......@@ -228,7 +228,7 @@ struct KIFACE
* having to link to the top process module which houses the KIWAY(s). More importantly
* it makes it possible to send custom wxEvents between DSOs and from the top
* process module down into the DSOs. The latter capability is thought useful
* for driving the lower DSOs from a python test rig or for demo (automaton) purposes.
* for driving the lower DSOs from a python test rig or for demo (automation) purposes.
* <p>
* Most all calls are via virtual functions, which means C++ vtables
* are used to hold function pointers and eliminate the need to link to specific
......
......@@ -82,6 +82,9 @@ public:
m_func( aEntry ), m_saved( NULL ), m_self( NULL ), m_stack( NULL ),
m_stackSize( c_defaultStackSize ), m_running( false )
{
// Avoid not initialized members, and make static analysers quiet
m_args = 0;
m_retVal = 0;
}
~COROUTINE()
......
......@@ -52,7 +52,7 @@ public:
~TOOL_MANAGER();
/**
* Generates an unique ID from for a tool with given name.
* Generates a unique ID from for a tool with given name.
*/
static TOOL_ID MakeToolId( const std::string& aToolName );
......
......@@ -697,7 +697,9 @@ WORKSHEET_DATAITEM* PL_EDITOR_FRAME::Locate( const wxPoint& aPosition )
drawList.SetSheetNumber( screen->m_ScreenNumber );
drawList.SetSheetCount( screen->m_NumberOfScreens );
drawList.SetFileName( GetCurrFileName() );
drawList.SetSheetName( GetScreenDesc() );
// GetScreenDesc() returns a temporary string. Store it to avoid issues.
wxString descr = GetScreenDesc();
drawList.SetSheetName( descr );
drawList.BuildWorkSheetGraphicList( pageInfo, t_block, color, color );
......
......@@ -125,7 +125,7 @@ public:
}
/**
* Function AddMember
* Function Add
* adds \a aNetname to this NETCLASS if it is not already in this NETCLASS.
* It is harmless to try and add a second identical name.
*/
......
......@@ -91,7 +91,8 @@ void TEXTE_PCB::Draw( EDA_DRAW_PANEL* panel, wxDC* DC,
EDA_COLOR_T color = brd->GetLayerColor( m_Layer );
EDA_DRAW_MODE_T fillmode = FILLED;
DISPLAY_OPTIONS* displ_opts = (DISPLAY_OPTIONS*)panel->GetDisplayOptions();
DISPLAY_OPTIONS* displ_opts =
panel ? (DISPLAY_OPTIONS*)panel->GetDisplayOptions() : NULL;
if( displ_opts && displ_opts->m_DisplayDrawItemsFill == SKETCH )
fillmode = SKETCH;
......
......@@ -531,6 +531,9 @@ TRACK* TRACK::GetEndNetCode( int NetCode )
void TRACK::DrawShortNetname( EDA_DRAW_PANEL* panel,
wxDC* aDC, GR_DRAWMODE aDrawMode, EDA_COLOR_T aBgColor )
{
if( ! panel )
return;
/* we must filter tracks, to avoid a lot of texts.
* - only tracks with a length > 10 * thickness are eligible
* and, of course, if we are not printing the board
......@@ -594,6 +597,7 @@ void TRACK::DrawShortNetname( EDA_DRAW_PANEL* panel,
}
LAYER_ID curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
if( ( aDC->LogicalToDeviceXRel( tsize ) >= MIN_TEXT_SIZE )
&& ( !(!IsOnLayer( curr_layer )&& displ_opts->m_ContrastModeDisplay) ) )
{
......@@ -601,8 +605,7 @@ void TRACK::DrawShortNetname( EDA_DRAW_PANEL* panel,
GRSetDrawMode( aDC, GR_COPY );
tsize = (tsize * 7) / 10; // small reduction to give a better look
EDA_RECT* clipbox = panel? panel->GetClipBox() : NULL;
DrawGraphicHaloText( clipbox, aDC, tpos,
DrawGraphicHaloText( panel->GetClipBox(), aDC, tpos,
aBgColor, BLACK, WHITE, net->GetShortNetname(), angle,
wxSize( tsize, tsize ),
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER,
......
......@@ -421,7 +421,7 @@ SEARCH_RESULT GENERAL_COLLECTOR::Inspect( EDA_ITEM* testItem, const void* testDa
* follows layer visibility controls (but that was already
* checked) */
if( via || module || pad || m_Guide->IsLayerVisible( layer )
if( via || module || pad || m_Guide->IsLayerVisible( layer )
|| !m_Guide->IgnoreNonVisibleLayers() )
{
if( !m_Guide->IsLayerLocked( layer ) || !m_Guide->IgnoreLockedLayers() )
......@@ -466,7 +466,7 @@ void GENERAL_COLLECTOR::Collect( BOARD_ITEM* aItem, const KICAD_T aScanList[],
SetTimeNow(); // when snapshot was taken
// record the length of the primary list before concatonating on to it.
// record the length of the primary list before concatenating on to it.
m_PrimaryLength = m_List.size();
// append 2nd list onto end of the first list
......
......@@ -228,7 +228,7 @@ protected:
/**
* The number of items that were originally in the primary list before the
* m_List2nd was concatonated onto the end of it.
* m_List2nd was concatenated onto the end of it.
*/
int m_PrimaryLength;
......
......@@ -107,7 +107,7 @@ public:
/**
* Function BuildPadsList
* Fills m_sortedPads with all pads that be connected to tracks
* pads are sorted by > then Y coordinates to allow fast binary search in list
* pads are sorted by X then Y coordinates to allow fast binary search in list
* @param aNetcode = net code to use to filter pads
* if aNetcode < 0, all pads will be put in list (default)
*/
......
......@@ -24,6 +24,7 @@
#include <wxPcbStruct.h>
#include <base_units.h>
#include <macros.h>
#include <class_drawpanel.h>
#include <class_board.h>
......@@ -35,16 +36,6 @@
// initialise statics
DIALOG_CREATE_ARRAY::CREATE_ARRAY_DIALOG_ENTRIES DIALOG_CREATE_ARRAY::m_options;
// character set
// NOTE: do not change the order of this relative to the ARRAY_NUMBERING_TYPE_T enum
static const wxString charSetDescriptions[] =
{
"Numerals (0,1,2,...,9,10)",
"Hexadecimal (0,1,...,F,10,...)",
"Alphabet, minus IOSQXZ",
"Alphabet, full 26 characters"
};
DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, wxPoint aOrigPos,
ARRAY_OPTIONS** aSettings ) :
......@@ -54,9 +45,19 @@ DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, wxPoint aOrig
m_originalItemPosition( aOrigPos )
{
// Set up numbering scheme drop downs
m_choicePriAxisNumbering->Set( boost::size( charSetDescriptions ), charSetDescriptions );
m_choiceSecAxisNumbering->Set( boost::size( charSetDescriptions ), charSetDescriptions );
m_choiceCircNumberingType->Set( boost::size( charSetDescriptions ), charSetDescriptions );;
//
// character set
// NOTE: do not change the order of this relative to the ARRAY_NUMBERING_TYPE_T enum
const wxString charSetDescriptions[] =
{
_( "Numerals (0,1,2,...,9,10)" ),
_( "Hexadecimal (0,1,...,F,10,...)" ),
_( "Alphabet, minus IOSQXZ" ),
_( "Alphabet, full 26 characters" )
};
m_choicePriAxisNumbering->Set( DIM( charSetDescriptions ), charSetDescriptions );
m_choiceSecAxisNumbering->Set( DIM( charSetDescriptions ), charSetDescriptions );
m_choiceCircNumberingType->Set( DIM( charSetDescriptions ), charSetDescriptions );;
m_choicePriAxisNumbering->SetSelection( 0 );
m_choiceSecAxisNumbering->SetSelection( 0 );
......
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2014 John Beard, john.j.beard@gmail.com
* Copyright (C) 1992-2014 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015 John Beard, john.j.beard@gmail.com
* Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
......
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Jun 6 2014)
// C++ code generated with wxFormBuilder (version Jun 5 2014)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
......@@ -128,25 +128,25 @@ DIALOG_CREATE_ARRAY_BASE::DIALOG_CREATE_ARRAY_BASE( wxWindow* parent, wxWindowID
m_labelPriAxisNumbering = new wxStaticText( m_gridPanel, wxID_ANY, _("Primary axis numbering:"), wxDefaultPosition, wxDefaultSize, 0 );
m_labelPriAxisNumbering->Wrap( -1 );
bSizer3->Add( m_labelPriAxisNumbering, 0, wxALL, 5 );
bSizer3->Add( m_labelPriAxisNumbering, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
wxArrayString m_choicePriAxisNumberingChoices;
m_choicePriAxisNumbering = new wxChoice( m_gridPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choicePriAxisNumberingChoices, 0 );
m_choicePriAxisNumbering->SetSelection( 0 );
bSizer3->Add( m_choicePriAxisNumbering, 0, wxALL|wxEXPAND, 5 );
bSizer3->Add( m_choicePriAxisNumbering, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_labelSecAxisNumbering = new wxStaticText( m_gridPanel, wxID_ANY, _("Secondary axis numbering:"), wxDefaultPosition, wxDefaultSize, 0 );
m_labelSecAxisNumbering->Wrap( -1 );
m_labelSecAxisNumbering->Enable( false );
bSizer3->Add( m_labelSecAxisNumbering, 0, wxALL, 5 );
bSizer3->Add( m_labelSecAxisNumbering, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
wxArrayString m_choiceSecAxisNumberingChoices;
m_choiceSecAxisNumbering = new wxChoice( m_gridPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceSecAxisNumberingChoices, 0 );
m_choiceSecAxisNumbering->SetSelection( 0 );
m_choiceSecAxisNumbering->Enable( false );
bSizer3->Add( m_choiceSecAxisNumbering, 0, wxALL|wxEXPAND, 5 );
bSizer3->Add( m_choiceSecAxisNumbering, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizer5;
bSizer5 = new wxBoxSizer( wxHORIZONTAL );
......@@ -255,12 +255,12 @@ DIALOG_CREATE_ARRAY_BASE::DIALOG_CREATE_ARRAY_BASE( wxWindow* parent, wxWindowID
m_labelCircNumbering = new wxStaticText( m_circularPanel, wxID_ANY, _("Numbering type:"), wxDefaultPosition, wxDefaultSize, 0 );
m_labelCircNumbering->Wrap( -1 );
bSizer6->Add( m_labelCircNumbering, 0, wxALL, 5 );
bSizer6->Add( m_labelCircNumbering, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
wxArrayString m_choiceCircNumberingTypeChoices;
m_choiceCircNumberingType = new wxChoice( m_circularPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceCircNumberingTypeChoices, 0 );
m_choiceCircNumberingType->SetSelection( 0 );
bSizer6->Add( m_choiceCircNumberingType, 0, wxALL|wxEXPAND, 5 );
bSizer6->Add( m_choiceCircNumberingType, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizer7;
bSizer7 = new wxBoxSizer( wxHORIZONTAL );
......
......@@ -2425,7 +2425,7 @@
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="0">
<property name="BottomDockable">1</property>
......@@ -2508,7 +2508,7 @@
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="flag">wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxChoice" expanded="0">
<property name="BottomDockable">1</property>
......@@ -2596,7 +2596,7 @@
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="0">
<property name="BottomDockable">1</property>
......@@ -2679,7 +2679,7 @@
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="flag">wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxChoice" expanded="0">
<property name="BottomDockable">1</property>
......@@ -4572,7 +4572,7 @@
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
......@@ -4655,7 +4655,7 @@
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="flag">wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxChoice" expanded="1">
<property name="BottomDockable">1</property>
......
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Jun 6 2014)
// C++ code generated with wxFormBuilder (version Jun 5 2014)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
......
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Jun 6 2014)
// C++ code generated with wxFormBuilder (version Sep 11 2014)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
......@@ -86,7 +86,7 @@ DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE( wxWi
// Connect Events
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::OnClose ) );
m_viaTraceGapEqual->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::onViaTraceGapEqualCheck ), NULL, this );
m_viaTraceGapEqual->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::OnViaTraceGapEqualCheck ), NULL, this );
m_stdButtonsCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::OnCancelClick ), NULL, this );
m_stdButtonsOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::OnOkClick ), NULL, this );
}
......@@ -95,7 +95,7 @@ DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::~DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE()
{
// Disconnect Events
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::OnClose ) );
m_viaTraceGapEqual->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::onViaTraceGapEqualCheck ), NULL, this );
m_viaTraceGapEqual->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::OnViaTraceGapEqualCheck ), NULL, this );
m_stdButtonsCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::OnCancelClick ), NULL, this );
m_stdButtonsOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE::OnOkClick ), NULL, this );
......
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Jun 6 2014)
// C++ code generated with wxFormBuilder (version Sep 11 2014)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
......@@ -53,7 +53,7 @@ class DIALOG_PNS_DIFF_PAIR_DIMENSIONS_BASE : public DIALOG_SHIM
// Virtual event handlers, overide them in your derived class
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
virtual void onViaTraceGapEqualCheck( wxCommandEvent& event ) { event.Skip(); }
virtual void OnViaTraceGapEqualCheck( wxCommandEvent& event ) { event.Skip(); }
virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
......
......@@ -25,7 +25,7 @@
/**
* @file edit_pcb_text.cpp
* @brief Editimg of text on copper and technical layers (TEXTE_PCB class)
* @brief Editing of text on copper and technical layers (TEXTE_PCB class)
*/
#include <fctsys.h>
......
......@@ -256,7 +256,6 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent
#else
Zoom_Automatique( false );
#endif
Zoom_Automatique( true );
Show( true );
......
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2007-2013 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2013 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
......@@ -126,7 +126,7 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
if( !item || cursorPos != selectPos )
{
m_canvas->SetAbortRequest( false );
item = PcbGeneralLocateAndDisplay();
PcbGeneralLocateAndDisplay();
if( m_canvas->GetAbortRequest() )
{
......@@ -201,22 +201,22 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_DRAWING_REQUEST,
msg, KiBitmap( move_xpm ) );
msg = AddHotkeyName( _( "Duplicate Drawing" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _( "Duplicate Drawing" ), g_Board_Editor_Hokeys_Descr,
HK_DUPLICATE_ITEM );
AddMenuItem( aPopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
msg, KiBitmap( duplicate_line_xpm ) );
msg = AddHotkeyName( _("Move Drawing Exactly" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _("Move Drawing Exactly" ), g_Board_Editor_Hokeys_Descr,
HK_MOVE_ITEM_EXACT );
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_EXACT,
msg, KiBitmap( move_line_xpm ) );
msg = AddHotkeyName( _("Create Drawing Array" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _("Create Drawing Array" ), g_Board_Editor_Hokeys_Descr,
HK_CREATE_ARRAY );
AddMenuItem( aPopMenu, ID_POPUP_PCB_CREATE_ARRAY,
msg, KiBitmap( array_line_xpm ) );
msg = AddHotkeyName( _( "Edit Drawing" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _( "Edit Drawing" ), g_Board_Editor_Hokeys_Descr,
HK_EDIT_ITEM );
AddMenuItem( aPopMenu, ID_POPUP_PCB_EDIT_DRAWING,
msg, KiBitmap( edit_xpm ) );
......@@ -277,21 +277,16 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_TEXT_DIMENSION_REQUEST,
msg, KiBitmap( move_text_xpm ) );
msg = AddHotkeyName( _( "Duplicate Dimension" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _( "Duplicate Dimension" ), g_Board_Editor_Hokeys_Descr,
HK_DUPLICATE_ITEM );
AddMenuItem( aPopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
msg, KiBitmap( duplicate_text_xpm ) );
msg = AddHotkeyName( _("Move Dimension Exactly" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _("Move Dimension Exactly" ), g_Board_Editor_Hokeys_Descr,
HK_MOVE_ITEM_EXACT );
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_EXACT,
msg, KiBitmap( move_text_xpm ) );
msg = AddHotkeyName( _("Create Dimension Array" ), g_Module_Editor_Hokeys_Descr,
HK_CREATE_ARRAY );
AddMenuItem( aPopMenu, ID_POPUP_PCB_CREATE_ARRAY,
msg, KiBitmap( array_text_xpm ) );
msg = AddHotkeyName( _( "Delete Dimension" ), g_Board_Editor_Hokeys_Descr,
HK_DELETE );
......@@ -308,17 +303,17 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_MIRE_REQUEST,
msg, KiBitmap( move_target_xpm ) );
msg = AddHotkeyName( _("Move Target Exactly" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _("Move Target Exactly" ), g_Board_Editor_Hokeys_Descr,
HK_MOVE_ITEM_EXACT );
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_EXACT,
msg, KiBitmap( move_target_xpm ) );
msg = AddHotkeyName( _( "Duplicate Target" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _( "Duplicate Target" ), g_Board_Editor_Hokeys_Descr,
HK_DUPLICATE_ITEM );
AddMenuItem( aPopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
msg, KiBitmap( duplicate_target_xpm ) );
msg = AddHotkeyName( _("Create Target Array" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _("Create Target Array" ), g_Board_Editor_Hokeys_Descr,
HK_CREATE_ARRAY );
AddMenuItem( aPopMenu, ID_POPUP_PCB_CREATE_ARRAY,
msg, KiBitmap( array_target_xpm ) );
......@@ -561,17 +556,17 @@ void PCB_EDIT_FRAME::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
AddMenuItem( PopMenu, ID_POPUP_PCB_DRAG_TRACK_SEGMENT,
msg, KiBitmap( drag_track_segment_xpm ) );
msg = AddHotkeyName( _( "Duplicate Track" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _( "Duplicate Track" ), g_Board_Editor_Hokeys_Descr,
HK_DUPLICATE_ITEM );
AddMenuItem( PopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
msg, KiBitmap( duplicate_line_xpm ) );
msg = AddHotkeyName( _("Move Track Exactly" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _("Move Track Exactly" ), g_Board_Editor_Hokeys_Descr,
HK_MOVE_ITEM_EXACT );
AddMenuItem( PopMenu, ID_POPUP_PCB_MOVE_EXACT,
msg, KiBitmap( move_line_xpm ) );
msg = AddHotkeyName( _("Create Track Array" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _("Create Track Array" ), g_Board_Editor_Hokeys_Descr,
HK_CREATE_ARRAY );
AddMenuItem( PopMenu, ID_POPUP_PCB_CREATE_ARRAY,
msg, KiBitmap( array_line_xpm ) );
......@@ -762,16 +757,6 @@ void PCB_EDIT_FRAME::createPopUpMenuForZones( ZONE_CONTAINER* edge_zone, wxMenu*
AddMenuItem( zones_menu, ID_POPUP_PCB_ZONE_DUPLICATE,
_( "Duplicate Zone Onto Layer" ), KiBitmap( zone_duplicate_xpm ) );
msg = AddHotkeyName( _( "Duplicate Zone" ), g_Module_Editor_Hokeys_Descr,
HK_DUPLICATE_ITEM );
AddMenuItem( zones_menu, ID_POPUP_PCB_DUPLICATE_ITEM,
msg, KiBitmap( zone_duplicate_xpm ) );
msg = AddHotkeyName( _("Create Zone Array" ), g_Module_Editor_Hokeys_Descr,
HK_CREATE_ARRAY );
AddMenuItem( zones_menu, ID_POPUP_PCB_CREATE_ARRAY,
msg, KiBitmap( array_zone_xpm ) );
zones_menu->AppendSeparator();
if( ! edge_zone->GetIsKeepout() )
......@@ -787,7 +772,7 @@ void PCB_EDIT_FRAME::createPopUpMenuForZones( ZONE_CONTAINER* edge_zone, wxMenu*
msg = AddHotkeyName( _( "Move Zone" ), g_Board_Editor_Hokeys_Descr, HK_MOVE_ITEM );
AddMenuItem( zones_menu, ID_POPUP_PCB_MOVE_ZONE_OUTLINES, msg, KiBitmap( move_xpm ) );
msg = AddHotkeyName( _("Move Zone Exactly" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _("Move Zone Exactly" ), g_Board_Editor_Hokeys_Descr,
HK_MOVE_ITEM_EXACT );
AddMenuItem( zones_menu, ID_POPUP_PCB_MOVE_EXACT,
msg, KiBitmap( move_zone_xpm ) );
......@@ -829,17 +814,17 @@ void PCB_EDIT_FRAME::createPopUpMenuForFootprints( MODULE* aModule, wxMenu* menu
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_MOVE_MODULE_REQUEST,
msg, KiBitmap( move_module_xpm ) );
msg = AddHotkeyName( _( "Duplicate" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _( "Duplicate Footprint" ), g_Board_Editor_Hokeys_Descr,
HK_DUPLICATE_ITEM );
AddMenuItem( menu, ID_POPUP_PCB_DUPLICATE_ITEM,
msg, KiBitmap( duplicate_module_xpm ) );
msg = AddHotkeyName( _("Move Exactly" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _("Move Footprint Exactly" ), g_Board_Editor_Hokeys_Descr,
HK_MOVE_ITEM_EXACT );
AddMenuItem( menu, ID_POPUP_PCB_MOVE_EXACT,
msg, KiBitmap( move_module_xpm ) );
msg = AddHotkeyName( _("Create Array" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _("Create Footprint Array" ), g_Board_Editor_Hokeys_Descr,
HK_CREATE_ARRAY );
AddMenuItem( menu, ID_POPUP_PCB_CREATE_ARRAY,
msg, KiBitmap( array_module_xpm ) );
......@@ -895,32 +880,23 @@ void PCB_EDIT_FRAME::createPopUpMenuForFpTexts( TEXTE_MODULE* FpText, wxMenu* me
if( !flags )
{
msg = AddHotkeyName( _( "Move" ), g_Board_Editor_Hokeys_Descr, HK_MOVE_ITEM );
msg = AddHotkeyName( _( "Move Text" ), g_Board_Editor_Hokeys_Descr, HK_MOVE_ITEM );
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_MOVE_TEXTMODULE_REQUEST,
msg, KiBitmap( move_field_xpm ) );
msg = AddHotkeyName( _( "Duplicate" ), g_Module_Editor_Hokeys_Descr,
HK_DUPLICATE_ITEM );
AddMenuItem( menu, ID_POPUP_PCB_DUPLICATE_ITEM,
msg, KiBitmap( duplicate_text_xpm ) );
msg = AddHotkeyName( _("Move Exactly" ), g_Module_Editor_Hokeys_Descr,
msg = AddHotkeyName( _("Move Text Exactly" ), g_Board_Editor_Hokeys_Descr,
HK_MOVE_ITEM_EXACT );
AddMenuItem( menu, ID_POPUP_PCB_MOVE_EXACT,
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_MOVE_EXACT,
msg, KiBitmap( move_text_xpm ) );
msg = AddHotkeyName( _("Create Array" ), g_Module_Editor_Hokeys_Descr,
HK_CREATE_ARRAY );
AddMenuItem( menu, ID_POPUP_PCB_CREATE_ARRAY,
msg, KiBitmap( array_text_xpm ) );
}
msg = AddHotkeyName( _( "Rotate" ), g_Board_Editor_Hokeys_Descr, HK_ROTATE_ITEM );
msg = AddHotkeyName( _( "Rotate Text" ), g_Board_Editor_Hokeys_Descr, HK_ROTATE_ITEM );
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_ROTATE_TEXTMODULE,
msg, KiBitmap( rotate_field_xpm ) );
if( !flags )
{
msg = AddHotkeyName( _( "Edit" ), g_Board_Editor_Hokeys_Descr, HK_EDIT_ITEM );
msg = AddHotkeyName( _( "Edit Text" ), g_Board_Editor_Hokeys_Descr, HK_EDIT_ITEM );
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_EDIT_TEXTMODULE,
msg, KiBitmap( edit_text_xpm ) );
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_RESET_TEXT_SIZE,
......@@ -931,7 +907,7 @@ void PCB_EDIT_FRAME::createPopUpMenuForFpTexts( TEXTE_MODULE* FpText, wxMenu* me
if( !flags && FpText->GetType() == TEXTE_MODULE::TEXT_is_DIVERS )
{
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_DELETE_TEXTMODULE,
_( "Delete" ), KiBitmap( delete_xpm ) );
_( "Delete Text" ), KiBitmap( delete_xpm ) );
}
if( !flags )
......@@ -965,12 +941,12 @@ void PCB_EDIT_FRAME::createPopUpMenuForFpPads( D_PAD* Pad, wxMenu* menu )
sub_menu_Pad = new wxMenu;
AddMenuItem( menu, sub_menu_Pad, -1, msg, KiBitmap( pad_xpm ) );
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_MOVE_PAD_REQUEST, _( "Move" ),
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_MOVE_PAD_REQUEST, _( "Move Pad" ),
KiBitmap( move_pad_xpm ) );
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_DRAG_PAD_REQUEST, _( "Drag" ),
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_DRAG_PAD_REQUEST, _( "Drag Pad" ),
KiBitmap( drag_pad_xpm ) );
msg = AddHotkeyName( _( "Edit" ), g_Board_Editor_Hokeys_Descr, HK_EDIT_ITEM );
msg = AddHotkeyName( _( "Edit Pad" ), g_Board_Editor_Hokeys_Descr, HK_EDIT_ITEM );
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_EDIT_PAD, msg, KiBitmap( options_pad_xpm ) );
sub_menu_Pad->AppendSeparator();
......
......@@ -430,7 +430,8 @@ void PCB_MODULE::Parse( XNODE* aNode, wxStatusBar* aStatusBar,
}
}
lNode = lNode->GetParent();
if( lNode )
lNode = lNode->GetParent();
if( lNode )
lNode = FindNode( lNode, wxT( "layerContents" ) );
......
......@@ -707,6 +707,8 @@ void PCB_EDIT_FRAME::SwitchCanvas( wxCommandEvent& aEvent )
if( !use_gal )
Compile_Ratsnest( NULL, true );
else
GetBoard()->GetRatsnest()->ProcessBoard();
UseGalCanvas( use_gal );
}
......
......@@ -57,7 +57,8 @@ using boost::optional;
TOOL_ACTION PNS_TOOL_BASE::ACT_RouterOptions( "pcbnew.InteractiveRouter.RouterOptions",
AS_CONTEXT, 'E',
"Routing Options...", "Shows a dialog containing router options.");
_( "Routing Options..." ),
_( "Shows a dialog containing router options." ) );
PNS_TOOL_BASE::PNS_TOOL_BASE( const std::string& aToolName ) :
......
......@@ -27,6 +27,8 @@
#include <pcbnew_id.h>
#include <wx/defs.h>
// These members are static in class COMMON_ACTIONS: Build them here:
// Selection tool actions
TOOL_ACTION COMMON_ACTIONS::selectionActivate( "pcbnew.InteractiveSelection",
AS_GLOBAL, 0,
......@@ -373,7 +375,7 @@ TOOL_ACTION COMMON_ACTIONS::placePad( "pcbnew.ModuleEditor.placePad",
TOOL_ACTION COMMON_ACTIONS::enumeratePads( "pcbnew.ModuleEditor.enumeratePads",
AS_GLOBAL, 0,
_( "Enumerate pads" ), _( "Enumerate pads" ), NULL, AF_ACTIVATE );
_( "Enumerate pads" ), _( "Enumerate pads" ), pad_enumerate_xpm, AF_ACTIVATE );
TOOL_ACTION COMMON_ACTIONS::copyItems( "pcbnew.ModuleEditor.copyItems",
AS_GLOBAL, MD_CTRL + int( 'C' ),
......@@ -479,7 +481,7 @@ TOOL_ACTION COMMON_ACTIONS::alignBottom( "pcbnew.Place.alignBottom",
TOOL_ACTION COMMON_ACTIONS::alignLeft( "pcbnew.Place.alignLeft",
AS_GLOBAL, 0,
_( "Align items to the left" ),
_( "Aligns selected items to the top left" ) );
_( "Aligns selected items to the left edge" ) );
TOOL_ACTION COMMON_ACTIONS::alignRight( "pcbnew.Place.alignRight",
AS_GLOBAL, 0,
......@@ -493,7 +495,7 @@ TOOL_ACTION COMMON_ACTIONS::distributeHorizontally( "pcbnew.Place.distributeHori
TOOL_ACTION COMMON_ACTIONS::distributeVertically( "pcbnew.Place.distributeVertically",
AS_GLOBAL, 0,
_( "Distribure vertically" ),
_( "Distribute vertically" ),
_( "Distributes selected items along the vertical axis" ) );
......
......@@ -763,7 +763,15 @@ int EDIT_TOOL::Duplicate( const TOOL_EVENT& aEvent )
if( m_editModules )
new_item = editFrame->GetBoard()->m_Modules->DuplicateAndAddItem( item, increment );
else
new_item = editFrame->GetBoard()->DuplicateAndAddItem( item, increment );
{
#if 0
// @TODO: see if we allow zone duplication here
// Duplicate zones is especially tricky (overlaping zones must be merged)
// so zones are not duplicated
if( item->Type() != PCB_ZONE_AREA_T )
#endif
new_item = editFrame->GetBoard()->DuplicateAndAddItem( item, increment );
}
if( new_item )
{
......@@ -872,18 +880,30 @@ int EDIT_TOOL::CreateArray( const TOOL_EVENT& aEvent )
BOARD_ITEM* newItem = NULL;
if( ptN == 0 )
{
newItem = item;
}
else
{
// if renumbering, no need to increment
const bool increment = !array_opts->ShouldRenumberItems();
// Some items cannot be duplicated
// i.e. the ref and value fields of a footprint or zones
// therefore newItem can be null
if( m_editModules )
newItem = editFrame->GetBoard()->m_Modules->DuplicateAndAddItem( item, increment );
else
newItem = editFrame->GetBoard()->DuplicateAndAddItem( item, increment );
{
#if 0
// @TODO: see if we allow zone duplication here
// Duplicate zones is especially tricky (overlaping zones must be merged)
// so zones are not duplicated
if( item->Type() == PCB_ZONE_AREA_T )
newItem = NULL;
else
#endif
newItem = editFrame->GetBoard()->DuplicateAndAddItem( item, increment );
}
if( newItem )
{
......@@ -905,7 +925,7 @@ int EDIT_TOOL::CreateArray( const TOOL_EVENT& aEvent )
}
// set the number if needed:
if( array_opts->ShouldRenumberItems() )
if( newItem && array_opts->ShouldRenumberItems() )
{
switch( newItem->Type() )
{
......
......@@ -86,7 +86,7 @@ private:
///> Sets up handlers for various events.
void setTransitions();
///> Pointerto the currently used edit frame.
///> Pointer to the currently used edit frame.
PCB_BASE_FRAME* m_frame;
};
......
......@@ -73,7 +73,7 @@ SELECTION_TOOL::SELECTION_TOOL() :
m_selArea = new SELECTION_AREA;
m_selection.group = new KIGFX::VIEW_GROUP;
AddSubMenu( new SELECT_MENU, "Select...",
AddSubMenu( new SELECT_MENU, _( "Select..." ),
(SELECTION_CONDITION) SELECTION_CONDITIONS::OnlyConnectedItems &&
SELECTION_CONDITIONS::Count( 1 ) );
}
......
......@@ -225,7 +225,7 @@ private:
void setTransitions();
/**
* Function ClearSelection()
* Function clearSelection()
* Clears the current selection.
*/
void clearSelection();
......@@ -264,7 +264,7 @@ private:
bool selectable( const BOARD_ITEM* aItem ) const;
/**
* Function selectItem()
* Function select()
* Takes necessary action mark an item as selected.
*
* @param aItem is an item to be selected.
......@@ -272,7 +272,7 @@ private:
void select( BOARD_ITEM* aItem );
/**
* Function unselectItem()
* Function unselect()
* Takes necessary action mark an item as unselected.
*
* @param aItem is an item to be unselected.
......@@ -280,7 +280,7 @@ private:
void unselect( BOARD_ITEM* aItem );
/**
* Function unselectVisually()
* Function selectVisually()
* Marks item as selected, but does not add it to the ITEMS_PICKED_LIST.
* @param aItem is an item to be be marked.
*/
......@@ -294,7 +294,7 @@ private:
void unselectVisually( BOARD_ITEM* aItem ) const;
/**
* Function containsSelected()
* Function selectionContains()
* Checks if the given point is placed within any of selected items' bounding box.
*
* @return True if the given point is contained in any of selected items' bouding box.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment