* Footprint wizard UI: Added to module editor.
* Footprint wizard C++ generic classes * Footprint wizard C++ to python wrappers * Automatic plugin loader from ~/.kicad/plugins * Python plugin architecture: Footprint wizards
This commit is contained in:
parent
edee5dc1ce
commit
23bec4b80b
|
@ -327,6 +327,7 @@ set( BMAPS_MID
|
|||
modratsnest
|
||||
module_check
|
||||
module_edit
|
||||
module_wizard
|
||||
module_filtered_list
|
||||
module_full_list
|
||||
module_options
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
|
||||
/* 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, 0x05, 0x07, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xad, 0x96, 0x0d, 0x50, 0x14,
|
||||
0x65, 0x18, 0xc7, 0x6f, 0x77, 0x39, 0xe4, 0x38, 0x20, 0x2f, 0x73, 0xc0, 0x92, 0x13, 0x2c, 0xd4,
|
||||
0x81, 0xf1, 0x03, 0xc5, 0xa0, 0x3b, 0x0e, 0x41, 0x4f, 0x85, 0x88, 0x81, 0x40, 0x0e, 0x90, 0x4f,
|
||||
0x0f, 0x30, 0x08, 0xc3, 0x03, 0x3d, 0xc4, 0x14, 0xc2, 0x86, 0x98, 0x38, 0x04, 0x86, 0x14, 0x44,
|
||||
0xc1, 0x0f, 0x3a, 0x3f, 0xf8, 0x70, 0x40, 0x4b, 0x1a, 0x14, 0x6c, 0x4c, 0x4c, 0xb4, 0xc2, 0xf2,
|
||||
0x2b, 0x6d, 0x9c, 0xd1, 0x12, 0x6a, 0xc8, 0xd0, 0x50, 0x01, 0x01, 0xcf, 0xfb, 0xb7, 0xef, 0xe5,
|
||||
0x22, 0x2a, 0x37, 0x9e, 0xe5, 0xcd, 0xfc, 0x66, 0x6e, 0xfe, 0xef, 0x3e, 0xcf, 0xef, 0xf6, 0xdd,
|
||||
0x67, 0x77, 0x8f, 0x07, 0x80, 0x37, 0x12, 0x99, 0x98, 0x3e, 0xb7, 0xda, 0x9d, 0xfa, 0x85, 0x43,
|
||||
0x62, 0xcf, 0xec, 0x23, 0xb9, 0xdb, 0x04, 0x3a, 0xed, 0x03, 0x37, 0xea, 0x0a, 0x97, 0x07, 0x4f,
|
||||
0xa5, 0xaf, 0xf2, 0x78, 0xbc, 0x29, 0x64, 0xcd, 0x4b, 0xcc, 0x7c, 0x37, 0xb2, 0x46, 0x66, 0xcf,
|
||||
0x34, 0x3c, 0xd9, 0x97, 0xf7, 0x64, 0x40, 0x0e, 0x44, 0x26, 0xfb, 0xf5, 0x21, 0xfe, 0x4e, 0xcc,
|
||||
0x21, 0x92, 0x4b, 0xec, 0xe9, 0xdc, 0xbf, 0xd3, 0x1e, 0xe5, 0x8d, 0x0a, 0xaa, 0x97, 0xcf, 0xe7,
|
||||
0xcf, 0x22, 0x6b, 0xa9, 0x6e, 0xd4, 0xd9, 0x91, 0x35, 0x4b, 0x5d, 0xa8, 0x26, 0x93, 0x44, 0x1d,
|
||||
0x29, 0x3c, 0xec, 0x0f, 0x13, 0xe2, 0xde, 0xea, 0xa7, 0x45, 0x2d, 0xd1, 0x02, 0xb4, 0x2b, 0xcd,
|
||||
0xb0, 0x69, 0x31, 0xd5, 0x3f, 0x52, 0xd4, 0xbd, 0x92, 0x87, 0x5a, 0x85, 0x10, 0x3d, 0x69, 0x46,
|
||||
0x44, 0xec, 0xe7, 0xd5, 0x31, 0x63, 0xc6, 0x6c, 0xb3, 0xb0, 0xb0, 0xd8, 0x41, 0x48, 0x9e, 0x43,
|
||||
0xdf, 0x7e, 0xd7, 0x67, 0x32, 0x12, 0xe3, 0xbc, 0x90, 0xe1, 0x3b, 0x09, 0xec, 0xb6, 0x74, 0x90,
|
||||
0x7c, 0xea, 0x78, 0xfe, 0x4f, 0x35, 0x61, 0xd6, 0x28, 0xda, 0xa0, 0x86, 0xaf, 0x7c, 0x02, 0x3c,
|
||||
0x67, 0xd1, 0x60, 0xeb, 0x0e, 0x90, 0x35, 0xe5, 0x4c, 0xfa, 0x56, 0x56, 0xe8, 0x1c, 0x9c, 0x6b,
|
||||
0x6d, 0xc2, 0xfa, 0xe0, 0x19, 0xe4, 0xc7, 0x75, 0x72, 0xfd, 0x08, 0x66, 0x66, 0x66, 0x0b, 0x88,
|
||||
0x28, 0xc9, 0xd6, 0xd6, 0x76, 0x28, 0x21, 0x21, 0x01, 0x84, 0x74, 0xaf, 0xb1, 0x88, 0x90, 0x4d,
|
||||
0x44, 0x6d, 0x8d, 0x00, 0xb9, 0x59, 0x02, 0x78, 0x7b, 0x08, 0x11, 0x1c, 0x1c, 0x08, 0x3f, 0xe9,
|
||||
0x0c, 0x24, 0x78, 0x33, 0xc8, 0x5a, 0x67, 0x8d, 0xc1, 0x41, 0x2b, 0xc4, 0xf8, 0x32, 0x6c, 0x1e,
|
||||
0x6c, 0xa8, 0x59, 0x21, 0x1b, 0x87, 0x82, 0x50, 0x27, 0x14, 0xaf, 0x5d, 0x8e, 0xe2, 0xd0, 0xc9,
|
||||
0x88, 0x96, 0xda, 0x83, 0xeb, 0x27, 0x95, 0x4a, 0x21, 0x14, 0x0a, 0x8f, 0x18, 0x44, 0xae, 0xae,
|
||||
0xae, 0xbd, 0xa7, 0x4e, 0x9d, 0x02, 0x21, 0x27, 0x60, 0x12, 0x6e, 0xaa, 0x78, 0xc8, 0x59, 0xc5,
|
||||
0x67, 0xcf, 0xd8, 0x0a, 0x03, 0x03, 0x56, 0x28, 0x2b, 0x1b, 0x8f, 0x65, 0xb1, 0x22, 0x74, 0x76,
|
||||
0x0a, 0x0d, 0x19, 0x21, 0xda, 0x87, 0x0f, 0xad, 0x56, 0x6b, 0xa8, 0xc9, 0x0e, 0x74, 0x32, 0x5c,
|
||||
0x9b, 0x9e, 0x87, 0xd7, 0x70, 0x6d, 0x98, 0x04, 0x5c, 0xbf, 0x8c, 0x8c, 0x0c, 0xe3, 0x22, 0x72,
|
||||
0xb0, 0x4a, 0xc1, 0x0c, 0x37, 0x7d, 0x92, 0xdb, 0xb7, 0x85, 0x88, 0xf7, 0x7a, 0x5a, 0xc4, 0x61,
|
||||
0x92, 0x28, 0x25, 0x4c, 0x8e, 0xcc, 0x08, 0x19, 0xde, 0xf6, 0x79, 0x05, 0x7a, 0xfd, 0xe8, 0xa2,
|
||||
0x0b, 0x17, 0x2c, 0xb1, 0xc8, 0xc3, 0x01, 0x8d, 0x8d, 0x8d, 0x86, 0x1a, 0x55, 0x94, 0xbf, 0xa1,
|
||||
0x86, 0x23, 0x3b, 0x35, 0x76, 0x74, 0x91, 0xa3, 0xa3, 0xe3, 0x40, 0x5d, 0x5d, 0xdd, 0xf0, 0x62,
|
||||
0x6b, 0x6b, 0x2b, 0x82, 0x82, 0xa6, 0xe3, 0xde, 0xbd, 0xd1, 0x45, 0x43, 0x43, 0x56, 0x48, 0x4a,
|
||||
0x72, 0x40, 0x45, 0x45, 0xe9, 0x70, 0x8d, 0x31, 0x1e, 0x13, 0xc9, 0x64, 0x32, 0x3d, 0x3b, 0x41,
|
||||
0xc8, 0xcb, 0xcb, 0xc3, 0xc9, 0x93, 0x27, 0x11, 0x1e, 0x2e, 0xc1, 0xc5, 0x8b, 0x56, 0x46, 0xb7,
|
||||
0x8e, 0x23, 0x27, 0xc7, 0x1e, 0x1a, 0x4d, 0xb6, 0xe9, 0xa2, 0xda, 0xda, 0xda, 0x07, 0x6a, 0xb5,
|
||||
0x1a, 0xce, 0xce, 0xce, 0x88, 0x8b, 0x93, 0xa3, 0xad, 0xcd, 0xe6, 0x99, 0x12, 0x8e, 0x8a, 0x0a,
|
||||
0x3b, 0x64, 0x66, 0x26, 0x9a, 0x2e, 0x22, 0x81, 0x8b, 0xcb, 0xcb, 0xc8, 0xcf, 0x17, 0xa2, 0xab,
|
||||
0x4b, 0x08, 0x9d, 0x6e, 0xf4, 0xc6, 0x24, 0x6f, 0x6f, 0xb7, 0xc4, 0xe6, 0x22, 0x4b, 0xa4, 0xa4,
|
||||
0x38, 0x22, 0x3e, 0xde, 0x15, 0xc9, 0xc9, 0x81, 0xa6, 0x89, 0xd8, 0x59, 0xd7, 0xb3, 0x77, 0x39,
|
||||
0x54, 0x2a, 0x15, 0x72, 0x73, 0xd7, 0x62, 0xd5, 0xaa, 0x68, 0x28, 0x95, 0x0b, 0x11, 0x13, 0x23,
|
||||
0x61, 0xef, 0x05, 0x87, 0xc7, 0x44, 0xeb, 0xd3, 0x2d, 0xa1, 0xfd, 0x70, 0x36, 0x4e, 0x6b, 0x16,
|
||||
0xa0, 0x7d, 0xa3, 0xe2, 0xf9, 0xae, 0x11, 0x19, 0x06, 0xf6, 0xac, 0x46, 0x3d, 0xb0, 0xa4, 0x24,
|
||||
0x1f, 0xd5, 0xd5, 0xe3, 0x0c, 0x92, 0xbe, 0x3e, 0x2b, 0xa4, 0x2a, 0xec, 0xd0, 0xa7, 0x9d, 0x0b,
|
||||
0x5d, 0x73, 0x14, 0x7e, 0xdd, 0x28, 0xc1, 0xf7, 0xbb, 0x73, 0x4d, 0x17, 0x8d, 0x1c, 0x6f, 0x32,
|
||||
0xb2, 0x0d, 0x0d, 0x0d, 0xc3, 0xb4, 0xb4, 0xb4, 0x20, 0x32, 0x72, 0x8e, 0xe1, 0xc6, 0x2d, 0xfd,
|
||||
0xcc, 0x06, 0x0d, 0x49, 0xd3, 0x70, 0xb3, 0x72, 0x1e, 0x06, 0x6b, 0x24, 0xd0, 0x7d, 0x9d, 0x80,
|
||||
0x4b, 0xeb, 0x9c, 0xd1, 0x5c, 0xbd, 0xed, 0xb1, 0x9a, 0xe6, 0xe6, 0xe6, 0x67, 0x8b, 0x96, 0x4a,
|
||||
0xc4, 0xd0, 0x2a, 0x44, 0xc3, 0x2c, 0x0f, 0xf4, 0xc4, 0x9e, 0x3d, 0x5a, 0x7c, 0x94, 0x6d, 0x83,
|
||||
0x25, 0x72, 0x73, 0x1c, 0x5b, 0xca, 0xc7, 0x35, 0x8d, 0x14, 0xb7, 0x2a, 0xde, 0x82, 0xee, 0xc0,
|
||||
0x7c, 0x0c, 0x1e, 0x8e, 0xc7, 0xb7, 0x89, 0x22, 0xec, 0x51, 0x8c, 0x7d, 0x54, 0x13, 0xe0, 0x6e,
|
||||
0xfa, 0x93, 0x81, 0x43, 0x15, 0xea, 0x69, 0xc8, 0x17, 0x7a, 0x3b, 0x60, 0x57, 0x08, 0x05, 0xfd,
|
||||
0x1a, 0x1e, 0x2e, 0xc7, 0x9b, 0xe1, 0xf7, 0xd2, 0xc5, 0xe8, 0xa9, 0x64, 0xb7, 0xf0, 0x90, 0x1f,
|
||||
0xee, 0xd4, 0x87, 0xe3, 0x6a, 0xb2, 0xf9, 0xf3, 0x3d, 0x19, 0x88, 0xe8, 0x74, 0xbc, 0x00, 0xf9,
|
||||
0x41, 0x62, 0x74, 0xa5, 0xd2, 0xc3, 0xa2, 0xec, 0x95, 0xcb, 0x70, 0x83, 0x7d, 0x15, 0x94, 0x87,
|
||||
0x4e, 0xc0, 0xfe, 0x08, 0x11, 0xce, 0x24, 0x5a, 0xe3, 0xcf, 0x4a, 0x7f, 0xdc, 0xdd, 0xe5, 0x06,
|
||||
0x5d, 0x53, 0x08, 0x6e, 0x6c, 0x9d, 0x8f, 0x83, 0x91, 0x22, 0x5c, 0x79, 0x9f, 0x6f, 0x54, 0x14,
|
||||
0xce, 0x30, 0xcc, 0x7d, 0x91, 0x48, 0xd4, 0x4b, 0x58, 0x3e, 0xdb, 0xec, 0xc1, 0x9a, 0x28, 0x39,
|
||||
0xfa, 0x3a, 0x2f, 0xe1, 0xe3, 0xe0, 0x69, 0x90, 0x8a, 0xcd, 0x75, 0x24, 0x9f, 0x62, 0x2b, 0x18,
|
||||
0xda, 0x15, 0xf2, 0x12, 0x7e, 0x68, 0x39, 0x88, 0xaa, 0xe2, 0x1c, 0xec, 0x7e, 0x87, 0xd2, 0xb7,
|
||||
0x25, 0xbf, 0xa6, 0xff, 0x6b, 0x87, 0x1f, 0xfa, 0x77, 0xbf, 0x89, 0x07, 0x47, 0x63, 0xf1, 0x9b,
|
||||
0xc6, 0x1d, 0x65, 0xe1, 0x4e, 0x58, 0xf4, 0xc6, 0xbf, 0x35, 0x04, 0x81, 0x40, 0x30, 0xc8, 0x52,
|
||||
0xcd, 0xbd, 0x94, 0xdc, 0x58, 0x3c, 0x08, 0xaa, 0xb9, 0xd4, 0xf5, 0xa2, 0xd0, 0xd7, 0xb1, 0x41,
|
||||
0xe9, 0x8b, 0xa6, 0xb8, 0x71, 0x58, 0x38, 0x99, 0x39, 0x41, 0xf2, 0x59, 0x76, 0xf4, 0xce, 0xf3,
|
||||
0x09, 0x14, 0x32, 0x14, 0x12, 0x64, 0x04, 0xcd, 0x44, 0x7d, 0x08, 0xd5, 0x5f, 0x2e, 0xa7, 0xea,
|
||||
0x2f, 0x67, 0x4d, 0xef, 0xbf, 0x59, 0xe9, 0x8d, 0xc1, 0x3a, 0x29, 0xee, 0x1f, 0x4d, 0xc4, 0x79,
|
||||
0x95, 0x1d, 0x92, 0x5c, 0xa9, 0x1f, 0xb9, 0x7e, 0x0f, 0xb1, 0xfe, 0xdf, 0xaf, 0xf2, 0x33, 0x51,
|
||||
0xbc, 0xa6, 0x6b, 0x1b, 0xbd, 0xf4, 0xb7, 0x2a, 0xd9, 0xe1, 0x38, 0x28, 0xc7, 0x40, 0xd3, 0x32,
|
||||
0xb4, 0x29, 0x2d, 0x7b, 0xd9, 0xdc, 0xf2, 0x85, 0xfe, 0x67, 0x60, 0x1b, 0x0a, 0x4f, 0x44, 0x9a,
|
||||
0x0f, 0xfc, 0xb1, 0xc5, 0x0f, 0x3d, 0xdb, 0xd9, 0xeb, 0xd5, 0xe8, 0x8f, 0x9e, 0xda, 0x25, 0xfa,
|
||||
0x2f, 0xd5, 0x9e, 0x67, 0x3f, 0xd5, 0x7c, 0x62, 0x61, 0x54, 0xe4, 0x3e, 0x91, 0x2e, 0xf0, 0x99,
|
||||
0x44, 0xef, 0xe0, 0xf0, 0x10, 0x33, 0xb1, 0x24, 0x9f, 0x6d, 0xcb, 0xf7, 0x18, 0x99, 0x7b, 0xda,
|
||||
0xd3, 0x95, 0xec, 0x96, 0x88, 0xc8, 0x5a, 0x8c, 0x0b, 0xbd, 0xf9, 0xb4, 0xd2, 0xa6, 0xff, 0xc6,
|
||||
0xf6, 0x00, 0xf4, 0x56, 0xb1, 0x93, 0x78, 0x58, 0x81, 0x9a, 0xb2, 0x2c, 0x5d, 0x45, 0x41, 0xe6,
|
||||
0x15, 0xa3, 0xa2, 0xff, 0x0a, 0x7b, 0x66, 0x41, 0x3f, 0xa7, 0x8b, 0xbb, 0xbb, 0xd9, 0xe1, 0xe8,
|
||||
0xfe, 0x7c, 0x1e, 0xf6, 0x56, 0x6d, 0xc2, 0x91, 0xc6, 0x03, 0xfa, 0x7a, 0xf5, 0x7b, 0xdf, 0xbc,
|
||||
0x50, 0x11, 0xe1, 0xab, 0x15, 0xd3, 0xf7, 0x55, 0x69, 0xd2, 0x74, 0x25, 0x9a, 0xf5, 0x38, 0x7e,
|
||||
0xfc, 0x18, 0x3a, 0x3a, 0xae, 0xe3, 0x8b, 0xf4, 0x54, 0x74, 0x4a, 0x26, 0xfa, 0xbe, 0x50, 0xd1,
|
||||
0xce, 0x75, 0x11, 0x4c, 0x79, 0x5e, 0xfa, 0x9d, 0x2d, 0x5b, 0x4a, 0x51, 0x58, 0x58, 0x88, 0xbd,
|
||||
0x5b, 0x37, 0xe3, 0xb8, 0x7a, 0x35, 0xba, 0x3c, 0x66, 0xde, 0xfd, 0x07, 0x3e, 0x0a, 0x38, 0xab,
|
||||
0xbb, 0xc7, 0x1e, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE module_wizard_xpm[1] = {{ png, sizeof( png ), "module_wizard_xpm" }};
|
||||
|
||||
//EOF
|
|
@ -0,0 +1,401 @@
|
|||
<?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"
|
||||
height="48"
|
||||
width="48"
|
||||
version="1.1"
|
||||
viewBox="0 0 48 48"
|
||||
id="svg2"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="module_wizard.svg">
|
||||
<metadata
|
||||
id="metadata146">
|
||||
<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>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="776"
|
||||
id="namedview144"
|
||||
showgrid="false"
|
||||
inkscape:zoom="8.1513305"
|
||||
inkscape:cx="24.655547"
|
||||
inkscape:cy="24.064883"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" />
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="i"
|
||||
y2="14.691"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="30.432"
|
||||
gradientTransform="translate(6.3922,12.185)"
|
||||
y1="12.338"
|
||||
x1="28.079">
|
||||
<stop
|
||||
stop-color="#fcaf3e"
|
||||
offset="0"
|
||||
id="stop7" />
|
||||
<stop
|
||||
stop-color="#ce5c00"
|
||||
offset="1"
|
||||
id="stop9" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="j"
|
||||
y2="22.119"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="22.81"
|
||||
gradientTransform="translate(6.3922,12.185)"
|
||||
y1="21.481"
|
||||
x1="23.448">
|
||||
<stop
|
||||
stop-color="#ce5c00"
|
||||
offset="0"
|
||||
id="stop12" />
|
||||
<stop
|
||||
stop-color="#ce5c00"
|
||||
offset="1"
|
||||
id="stop14" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="k"
|
||||
y2="32.714"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="25.485"
|
||||
y1="34.39"
|
||||
x1="26.379">
|
||||
<stop
|
||||
stop-color="#e9b96e"
|
||||
offset="0"
|
||||
id="stop17" />
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
offset="1"
|
||||
id="stop19" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
id="n"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cy="128"
|
||||
cx="-138.84"
|
||||
gradientTransform="matrix(.35473 -.34328 .35696 .34544 130.15 -71.026)"
|
||||
r="9.1267">
|
||||
<stop
|
||||
stop-color="#f9a9a9"
|
||||
offset="0"
|
||||
id="stop22" />
|
||||
<stop
|
||||
stop-color="#ab5f5f"
|
||||
offset="1"
|
||||
id="stop24" />
|
||||
</radialGradient>
|
||||
<linearGradient
|
||||
id="l"
|
||||
y2="134.25"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="-158.75"
|
||||
gradientTransform="matrix(.20949 -.20274 .20949 .20274 129.28 -31.999)"
|
||||
y1="115.94"
|
||||
x1="-158.75">
|
||||
<stop
|
||||
stop-color="#ddd"
|
||||
offset="0"
|
||||
id="stop27" />
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
offset=".34468"
|
||||
id="stop29" />
|
||||
<stop
|
||||
stop-color="#737373"
|
||||
offset=".72695"
|
||||
id="stop31" />
|
||||
<stop
|
||||
stop-color="#bbb"
|
||||
offset="1"
|
||||
id="stop33" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="o"
|
||||
y2="9.2485"
|
||||
xlink:href="#m"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="9.3617"
|
||||
gradientTransform="matrix(.88741 0 0 1.1269 1.1058 6.5)"
|
||||
y1="2.8702"
|
||||
x1="3.4673" />
|
||||
<linearGradient
|
||||
id="m">
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
offset="0"
|
||||
id="stop37" />
|
||||
<stop
|
||||
stop-color="#ff6900"
|
||||
offset="1"
|
||||
id="stop39" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="p"
|
||||
y2="7.8438"
|
||||
xlink:href="#m"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="12.922"
|
||||
y1="6.0625"
|
||||
x1="11.078" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#i"
|
||||
id="linearGradient3123"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(6.3922,12.185)"
|
||||
x1="28.079"
|
||||
y1="12.338"
|
||||
x2="30.432"
|
||||
y2="14.691" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#j"
|
||||
id="linearGradient3125"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(6.3922,12.185)"
|
||||
x1="23.448"
|
||||
y1="21.481"
|
||||
x2="22.81"
|
||||
y2="22.119" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#k"
|
||||
id="linearGradient3127"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="26.379"
|
||||
y1="34.39"
|
||||
x2="25.485"
|
||||
y2="32.714" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#n"
|
||||
id="radialGradient3129"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.35473,-0.34328,0.35696,0.34544,130.15,-71.026)"
|
||||
cx="-138.84"
|
||||
cy="128"
|
||||
r="9.1267" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#l"
|
||||
id="linearGradient3131"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.20949,-0.20274,0.20949,0.20274,129.28,-31.999)"
|
||||
x1="-158.75"
|
||||
y1="115.94"
|
||||
x2="-158.75"
|
||||
y2="134.25" />
|
||||
</defs>
|
||||
<g
|
||||
id="g3919"
|
||||
transform="matrix(0.97746831,0,0,1.0670086,1.0454603,-0.55396231)">
|
||||
<g
|
||||
transform="matrix(-3.0977413,0,0,-2.623624,-9.6989928,37.816312)"
|
||||
id="g44"
|
||||
style="fill:#c8c8c8;fill-opacity:1;stroke:#000000;stroke-width:0.70154679;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
|
||||
<rect
|
||||
transform="matrix(0,1,-1,0,0,0)"
|
||||
height="14.619"
|
||||
width="9.7086"
|
||||
y="3.4905"
|
||||
x="1.904"
|
||||
id="rect46"
|
||||
style="fill:#c8c8c8;fill-opacity:1;stroke:#000000;stroke-width:0.70154679;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<path
|
||||
d="m 693.26,625.06 a 18.91409,18.91409 0 0 1 -37.828,0.11702"
|
||||
transform="matrix(0,0.071482,-0.071482,0,41.168,-41.24)"
|
||||
id="path48"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#c8c8c8;fill-opacity:1;stroke:#000000;stroke-width:9.81431389;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(-3.0977413,0,0,-2.623624,-9.5828275,38.209856)"
|
||||
id="g50"
|
||||
style="stroke:#030303;stroke-linejoin:round">
|
||||
<rect
|
||||
transform="matrix(0,1,-1,0,0,0)"
|
||||
height="2.5109999"
|
||||
width="4.7175999"
|
||||
y="13.332"
|
||||
x="-0.31959"
|
||||
id="rect52"
|
||||
style="fill:#ff7800;stroke-width:0.30000001" />
|
||||
<rect
|
||||
transform="matrix(0,1,-1,0,0,0)"
|
||||
height="2.5109999"
|
||||
width="4.7175999"
|
||||
y="5.3635998"
|
||||
x="-0.31959"
|
||||
id="rect54"
|
||||
style="fill:#ff7800;stroke-width:0.30000001" />
|
||||
<path
|
||||
d="m 654.65,737.28 a 9.5805,9.5805 0 1 1 -19.161,0 9.5805,9.5805 0 1 1 19.161,0 z"
|
||||
transform="matrix(0,0.071482,-0.071482,0,46.083,-44.072)"
|
||||
id="path56"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffede0;stroke-width:4.19689989" />
|
||||
<rect
|
||||
transform="matrix(0,1,-1,0,0,0)"
|
||||
height="2.5109999"
|
||||
width="4.7175999"
|
||||
y="9.3478003"
|
||||
x="-0.31959"
|
||||
id="rect58"
|
||||
style="fill:#ff7800;stroke-width:0.30000001" />
|
||||
<path
|
||||
d="m 654.65,737.28 a 9.5805,9.5805 0 1 1 -19.161,0 9.5805,9.5805 0 1 1 19.161,0 z"
|
||||
transform="matrix(0,0.071482,-0.071482,0,42.08,-44.072)"
|
||||
id="path60"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffede0;stroke-width:4.19689989" />
|
||||
<path
|
||||
d="m 654.65,737.28 a 9.5805,9.5805 0 1 1 -19.161,0 9.5805,9.5805 0 1 1 19.161,0 z"
|
||||
transform="matrix(0,0.071482,-0.071482,0,38.077,-44.072)"
|
||||
id="path62"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffede0;stroke-width:4.19689989" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(-3.0977413,0,0,-2.623624,-9.5828275,12.561045)"
|
||||
id="g64">
|
||||
<rect
|
||||
transform="matrix(0,1,-1,0,0,0)"
|
||||
height="2.5109999"
|
||||
width="4.7175999"
|
||||
y="13.332"
|
||||
x="-0.31959"
|
||||
id="rect66"
|
||||
style="fill:#ff7800;stroke:#030303;stroke-width:0.30000001;stroke-linejoin:round" />
|
||||
<rect
|
||||
transform="matrix(0,1,-1,0,0,0)"
|
||||
height="2.5109999"
|
||||
width="4.7175999"
|
||||
y="5.3635998"
|
||||
x="-0.31959"
|
||||
id="rect68"
|
||||
style="fill:#ff7800;stroke:#030303;stroke-width:0.30000001;stroke-linejoin:round" />
|
||||
<path
|
||||
d="m 654.65,737.28 a 9.5805,9.5805 0 1 1 -19.161,0 9.5805,9.5805 0 1 1 19.161,0 z"
|
||||
transform="matrix(0,0.071482,-0.071482,0,46.083,-44.072)"
|
||||
id="path70"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffede0;stroke:#030303;stroke-width:4.19689989;stroke-linejoin:round" />
|
||||
<rect
|
||||
transform="matrix(0,1,-1,0,0,0)"
|
||||
height="2.5109999"
|
||||
width="4.7175999"
|
||||
y="9.3478003"
|
||||
x="-0.31959"
|
||||
id="rect72"
|
||||
style="fill:#ff7800;stroke:#030303;stroke-width:0.30000001;stroke-linejoin:round" />
|
||||
<path
|
||||
d="m 654.65,737.28 a 9.5805,9.5805 0 1 1 -19.161,0 9.5805,9.5805 0 1 1 19.161,0 z"
|
||||
transform="matrix(0,0.071482,-0.071482,0,42.08,-44.072)"
|
||||
id="path74"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffede0;stroke:#030303;stroke-width:4.19689989;stroke-linejoin:round" />
|
||||
<g
|
||||
id="g76"
|
||||
style="stroke-width:0.30000001">
|
||||
<path
|
||||
d="m 654.65,737.28 a 9.5805,9.5805 0 1 1 -19.161,0 9.5805,9.5805 0 1 1 19.161,0 z"
|
||||
transform="matrix(0,0.071482,-0.071482,0,38.077,-44.072)"
|
||||
id="path78"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffede0;stroke:#030303;stroke-width:4.19689989;stroke-linejoin:round" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(-0.06556536,1.2979898,-1.1671085,-0.04646565,78.72536,-112.86048)"
|
||||
id="g80">
|
||||
<g
|
||||
transform="matrix(1.1072,0,0,1.0714,74.214,8.4286)"
|
||||
id="g82">
|
||||
<path
|
||||
d="m 25.892,30.185 19,-19 c 2.175,0.35996 3.0847,1.7322 3.5,3.5 l -19,19 -4.6161,0.7045 1.1161,-4.2045 z"
|
||||
id="path84"
|
||||
style="fill:url(#linearGradient3123);fill-rule:evenodd;stroke:url(#linearGradient3125);stroke-linejoin:round"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="M 26.792,30.685 45.29,12.287 c 1.0897,0.17844 1.5173,0.98794 2,2 l -18.398,18.498 -3.3,0.9 1.2,-3 z"
|
||||
id="path86"
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:0.28235001;fill:none;stroke:#ffffff" />
|
||||
<path
|
||||
d="m 24.55,34.633 1.6663,-4.1803 c 0,0 1.1995,0.24536 1.9322,0.97509 0.73264,0.72973 0.99839,1.9438 0.99839,1.9438 l -4.5969,1.2614 z"
|
||||
id="path88"
|
||||
style="fill:url(#linearGradient3127);fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 23,21.5 -5.5,1.5 2,-5"
|
||||
transform="translate(6.3922,12.185)"
|
||||
id="path90"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#e9b96e;stroke-linecap:round;stroke-linejoin:round" />
|
||||
<path
|
||||
d="m 23.955,33.685 -0.90625,2.25 2.3438,-0.65625 c 0.002,-0.03184 0,-0.06141 0,-0.09375 0,-0.80212 -0.64531,-1.4598 -1.4375,-1.5 z"
|
||||
id="path92"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill-rule:evenodd" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:url(#radialGradient3129);stroke:#ef2929;stroke-width:1.0891;enable-background:new"
|
||||
d="m 121.62,22.515 c 2.0307,-0.53628 4.3014,1.7694 3.8196,3.6963 l 2.4306,-2.3522 c 1.1808,-2.6427 -1.2536,-4.7247 -3.8692,-3.7443 l -2.381,2.4002 z"
|
||||
id="path94"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3131);stroke:#888a85;stroke-width:1.0891;enable-background:new"
|
||||
d="m 119.12,24.769 c 2.144,-0.56623 4.5413,1.8683 4.0326,3.9028 l 2.5662,-2.4836 c 0.8353,-1.7098 -2.2637,-4.6473 -4.085,-3.9535 l -2.52,2.535 z"
|
||||
id="path96"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#ffff0c;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1"
|
||||
id="path3036"
|
||||
sodipodi:sides="5"
|
||||
sodipodi:cx="16.070995"
|
||||
sodipodi:cy="14.263176"
|
||||
sodipodi:r1="14.004804"
|
||||
sodipodi:r2="7.0024018"
|
||||
sodipodi:arg1="1.5182133"
|
||||
sodipodi:arg2="2.1465318"
|
||||
inkscape:flatsided="false"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="m 16.807071,28.248623 -4.548546,-8.111888 -9.26102,-0.851769 6.3092852,-6.832635 -2.0517319,-9.0709646 8.4478987,3.8890862 7.99298,-4.7543951 -1.088197,9.2362235 6.991665,6.132586 -9.120441,1.819214 z"
|
||||
inkscape:transform-center-x="-0.22746004"
|
||||
inkscape:transform-center-y="1.119164"
|
||||
transform="translate(3.3123427,2.8216252)" />
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
|
@ -278,6 +278,7 @@ EXTERN_BITMAP( mode_track_xpm )
|
|||
EXTERN_BITMAP( mod_ratsnest_xpm )
|
||||
EXTERN_BITMAP( module_check_xpm )
|
||||
EXTERN_BITMAP( module_edit_xpm )
|
||||
EXTERN_BITMAP( module_wizard_xpm )
|
||||
EXTERN_BITMAP( module_filtered_list_xpm )
|
||||
EXTERN_BITMAP( module_pin_filtered_list_xpm )
|
||||
EXTERN_BITMAP( module_full_list_xpm )
|
||||
|
|
|
@ -97,8 +97,11 @@ set(PCBNEW_DIALOGS
|
|||
dialogs/dialog_set_grid_base.cpp
|
||||
dialogs/dialog_scripting_base.cpp
|
||||
dialogs/dialog_scripting.cpp
|
||||
footprint_wizard.cpp
|
||||
footprint_wizard_frame.cpp
|
||||
)
|
||||
|
||||
# some of the files here may be going to the dialog srcs in fact....
|
||||
set(PCBNEW_CLASS_SRCS
|
||||
tool_modview.cpp
|
||||
modview.cpp
|
||||
|
@ -114,7 +117,6 @@ set(PCBNEW_CLASS_SRCS
|
|||
block.cpp
|
||||
block_module_editor.cpp
|
||||
build_BOM_from_board.cpp
|
||||
# class_footprint_library.cpp
|
||||
class_pcb_layer_widget.cpp
|
||||
clean.cpp
|
||||
connect.cpp
|
||||
|
@ -215,6 +217,7 @@ set(PCBNEW_CLASS_SRCS
|
|||
zones_polygons_insulated_copper_islands.cpp
|
||||
zones_polygons_test_connections.cpp
|
||||
zones_test_and_combine_areas.cpp
|
||||
class_footprint_wizard.cpp
|
||||
)
|
||||
|
||||
set(PCBNEW_SRCS ${PCBNEW_CLASS_SRCS} ${PCBNEW_DIALOGS})
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
/**
|
||||
* @file class_footprint_wizard.cpp
|
||||
* @brief Class FOOTPRINT_WIZARD and FOOTPRINT_WIZARDS
|
||||
*/
|
||||
|
||||
#include "class_footprint_wizard.h"
|
||||
#include <stdio.h>
|
||||
|
||||
void FOOTPRINT_WIZARD::register_wizard()
|
||||
{
|
||||
FOOTPRINT_WIZARDS::register_wizard(this);
|
||||
}
|
||||
|
||||
std::vector<FOOTPRINT_WIZARD*> FOOTPRINT_WIZARDS::m_FootprintWizards;
|
||||
|
||||
void FOOTPRINT_WIZARDS::register_wizard(FOOTPRINT_WIZARD *aWizard)
|
||||
{
|
||||
|
||||
wxString name = aWizard->GetName();
|
||||
m_FootprintWizards.push_back(aWizard);
|
||||
|
||||
printf("Registered footprint wizard '%s'\n",(const char*)name.mb_str() );
|
||||
|
||||
#if 0
|
||||
/* just to test if it works correctly */
|
||||
int pages = fw->GetNumParameterPages();
|
||||
printf(" %d pages\n",pages);
|
||||
|
||||
for (int n=0; n<pages; n++)
|
||||
{
|
||||
printf(" page %d->'%s'\n",n,
|
||||
(const char*)fw->GetParameterPageName(n).mb_str());
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
/**
|
||||
* @file pcbnew_footprint_wizards.h
|
||||
* @brief Class PCBNEW_FOOTPRINT_WIZARDS
|
||||
*/
|
||||
|
||||
#ifndef CLASS_FOOTPRINT_WIZARD_H
|
||||
#define CLASS_FOOTPRINT_WIZARD_H
|
||||
#include <vector>
|
||||
#include <wxPcbStruct.h>
|
||||
|
||||
/* This is the parent class from where any footprint wiizard class must
|
||||
* derive */
|
||||
class FOOTPRINT_WIZARD
|
||||
{
|
||||
|
||||
public:
|
||||
FOOTPRINT_WIZARD() {}
|
||||
~FOOTPRINT_WIZARD() {}
|
||||
virtual wxString GetName()=0;
|
||||
virtual wxString GetImage()=0;
|
||||
virtual wxString GetDescription()=0;
|
||||
virtual int GetNumParameterPages()=0;
|
||||
virtual wxString GetParameterPageName(int aPage)=0;
|
||||
virtual wxArrayString GetParameterNames(int aPage)=0;
|
||||
virtual wxArrayString GetParameterValues(int aPage)=0;
|
||||
virtual wxString SetParameterValues(int aPage,wxArrayString& aValues)=0;
|
||||
virtual MODULE *GetModule()=0;
|
||||
void register_wizard();
|
||||
|
||||
};
|
||||
|
||||
|
||||
class FOOTPRINT_WIZARDS
|
||||
{
|
||||
private:
|
||||
static std::vector<FOOTPRINT_WIZARD*> m_FootprintWizards;
|
||||
|
||||
public:
|
||||
static void register_wizard(FOOTPRINT_WIZARD *wizard);
|
||||
|
||||
};
|
||||
|
||||
#endif /* PCBNEW_FOOTPRINT_WIZARDS_H */
|
||||
|
|
@ -0,0 +1,160 @@
|
|||
/**
|
||||
* @file footprint wizard.cpp
|
||||
*/
|
||||
|
||||
#include <fctsys.h>
|
||||
#include <gr_basic.h>
|
||||
#include <class_drawpanel.h>
|
||||
#include <wxPcbStruct.h>
|
||||
#include <dialog_helpers.h>
|
||||
#include <3d_viewer.h>
|
||||
#include <pcbcommon.h>
|
||||
|
||||
#include <class_board.h>
|
||||
#include <class_module.h>
|
||||
|
||||
#include <pcbnew.h>
|
||||
#include <pcbnew_id.h>
|
||||
#include "footprint_wizard_frame.h"
|
||||
#include <wildcards_and_files_ext.h>
|
||||
|
||||
|
||||
#define NEXT_PART 1
|
||||
#define NEW_PART 0
|
||||
#define PREVIOUS_PART -1
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
switch( event.GetId() )
|
||||
{
|
||||
case ID_FOOTPRINT_WIZARD_NEXT:
|
||||
//SelectAndViewFootprint( NEXT_PART );
|
||||
break;
|
||||
|
||||
case ID_FOOTPRINT_WIZARD_PREVIOUS:
|
||||
//SelectAndViewFootprint( PREVIOUS_PART );
|
||||
break;
|
||||
|
||||
default:
|
||||
msg << wxT( "FOOTPRINT_WIZARD_FRAME::Process_Special_Functions error: id = " )
|
||||
<< event.GetId();
|
||||
wxMessageBox( msg );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
bool FOOTPRINT_WIZARD_FRAME::OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Displays the name of the current opened library in the caption */
|
||||
void FOOTPRINT_WIZARD_FRAME::DisplayWizardInfos()
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
msg = _( "Footprint Wizard" );
|
||||
msg << wxT( " [" );
|
||||
|
||||
if( ! m_wizardName.IsEmpty() )
|
||||
msg << m_wizardName;
|
||||
else
|
||||
msg += _( "no wizard selected" );
|
||||
|
||||
msg << wxT( "]" );
|
||||
|
||||
SetTitle( msg );
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::SelectCurrentWizard( wxCommandEvent& event )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
if( g_LibraryNames.GetCount() == 0 )
|
||||
return;
|
||||
|
||||
EDA_LIST_DIALOG dlg( this, _( "Select Current Wizard:" ),
|
||||
g_LibraryNames, m_wizardName );
|
||||
|
||||
if( dlg.ShowModal() != wxID_OK )
|
||||
return;
|
||||
|
||||
if( m_wizardName == dlg.GetTextSelection() )
|
||||
return;
|
||||
|
||||
m_wizardName = dlg.GetTextSelection();
|
||||
|
||||
DisplayWizardInfos();
|
||||
ReCreatePageList();
|
||||
ReCreateParameterList();
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Function SelectCurrentFootprint
|
||||
* Selects the current footprint name and display it
|
||||
*/
|
||||
void FOOTPRINT_WIZARD_FRAME::ParametersUpdated( wxCommandEvent& event )
|
||||
{
|
||||
/*
|
||||
// will pick it from the wizard
|
||||
MODULE * module = new MODULE(NULL);
|
||||
if( module )
|
||||
{
|
||||
module->SetPosition( wxPoint( 0, 0 ) );
|
||||
|
||||
// Only one fotprint allowed: remove the previous footprint (if exists)
|
||||
if( oldmodule )
|
||||
{
|
||||
GetBoard()->Remove( oldmodule );
|
||||
delete oldmodule;
|
||||
}
|
||||
m_footprintName = module->GetLibRef();
|
||||
module->ClearFlags();
|
||||
SetCurItem( NULL );
|
||||
|
||||
Zoom_Automatique( false );
|
||||
m_canvas->Refresh( );
|
||||
Update3D_Frame();
|
||||
m_FootprintList->SetStringSelection( m_footprintName );
|
||||
}
|
||||
* */
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function RedrawActiveWindow
|
||||
* Display the current selected component.
|
||||
* If the component is an alias, the ROOT component is displayed
|
||||
*/
|
||||
void FOOTPRINT_WIZARD_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg )
|
||||
{
|
||||
if( !GetBoard() )
|
||||
return;
|
||||
|
||||
m_canvas->DrawBackGround( DC );
|
||||
GetBoard()->Draw( m_canvas, DC, GR_COPY );
|
||||
|
||||
MODULE* module = GetBoard()->m_Modules;
|
||||
|
||||
if ( module )
|
||||
module->DisplayInfo( this );
|
||||
|
||||
m_canvas->DrawCrossHair( DC );
|
||||
|
||||
ClearMsgPanel();
|
||||
if( module )
|
||||
module->DisplayInfo( this );
|
||||
}
|
|
@ -0,0 +1,685 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2012 Jean-Pierre Charras, jaen-pierre.charras
|
||||
* Copyright (C) 2008-2011 Wayne Stambaugh <stambaughw@verizon.net>
|
||||
* Copyright (C) 2004-2011 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file modview_frame.cpp
|
||||
*/
|
||||
|
||||
#include <fctsys.h>
|
||||
#include <appl_wxstruct.h>
|
||||
#include <macros.h>
|
||||
#include <class_drawpanel.h>
|
||||
#include <wxPcbStruct.h>
|
||||
#include <3d_viewer.h>
|
||||
#include <pcbcommon.h>
|
||||
|
||||
#include <class_board.h>
|
||||
#include <class_module.h>
|
||||
|
||||
#include <pcbnew.h>
|
||||
#include <pcbnew_id.h>
|
||||
#include "footprint_wizard_frame.h"
|
||||
#include <footprint_info.h>
|
||||
|
||||
#include <hotkeys.h>
|
||||
#include <wildcards_and_files_ext.h>
|
||||
|
||||
|
||||
BEGIN_EVENT_TABLE( FOOTPRINT_WIZARD_FRAME, EDA_DRAW_FRAME )
|
||||
/* Window events */
|
||||
EVT_CLOSE( FOOTPRINT_WIZARD_FRAME::OnCloseWindow )
|
||||
EVT_SIZE( FOOTPRINT_WIZARD_FRAME::OnSize )
|
||||
EVT_ACTIVATE( FOOTPRINT_WIZARD_FRAME::OnActivate )
|
||||
|
||||
/* Sash drag events */
|
||||
EVT_SASH_DRAGGED( ID_FOOTPRINT_WIZARD_PAGES, FOOTPRINT_WIZARD_FRAME::OnSashDrag )
|
||||
EVT_SASH_DRAGGED( ID_FOOTPRINT_WIZARD_PARAMETERS, FOOTPRINT_WIZARD_FRAME::OnSashDrag )
|
||||
|
||||
/* Toolbar events */
|
||||
EVT_TOOL( ID_FOOTPRINT_WIZARD_NEXT,
|
||||
FOOTPRINT_WIZARD_FRAME::Process_Special_Functions )
|
||||
EVT_TOOL( ID_FOOTPRINT_WIZARD_PREVIOUS,
|
||||
FOOTPRINT_WIZARD_FRAME::Process_Special_Functions )
|
||||
/* EVT_TOOL( ID_FOOTPRINT_WIZARD_DONE,
|
||||
FOOTPRINT_WIZARD_FRAME::ExportSelectedFootprint )*/
|
||||
EVT_TOOL( ID_FOOTPRINT_WIZARD_SHOW_3D_VIEW,
|
||||
FOOTPRINT_WIZARD_FRAME::Show3D_Frame )
|
||||
|
||||
/* listbox events */
|
||||
EVT_LISTBOX( ID_FOOTPRINT_WIZARD_PAGE_LIST, FOOTPRINT_WIZARD_FRAME::ClickOnPageList )
|
||||
EVT_LISTBOX( ID_FOOTPRINT_WIZARD_PARAMETER_LIST, FOOTPRINT_WIZARD_FRAME::ClickOnParameterList )
|
||||
|
||||
EVT_MENU( ID_SET_RELATIVE_OFFSET, FOOTPRINT_WIZARD_FRAME::OnSetRelativeOffset )
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
/*
|
||||
* This emulates the zoom menu entries found in the other KiCad applications.
|
||||
* The library viewer does not have any menus so add an accelerator table to
|
||||
* the main frame.
|
||||
*/
|
||||
static wxAcceleratorEntry accels[] =
|
||||
{
|
||||
wxAcceleratorEntry( wxACCEL_NORMAL, WXK_F1, ID_ZOOM_IN ),
|
||||
wxAcceleratorEntry( wxACCEL_NORMAL, WXK_F2, ID_ZOOM_OUT ),
|
||||
wxAcceleratorEntry( wxACCEL_NORMAL, WXK_F3, ID_ZOOM_REDRAW ),
|
||||
wxAcceleratorEntry( wxACCEL_NORMAL, WXK_F4, ID_POPUP_ZOOM_CENTER ),
|
||||
wxAcceleratorEntry( wxACCEL_NORMAL, WXK_HOME, ID_ZOOM_PAGE ),
|
||||
wxAcceleratorEntry( wxACCEL_NORMAL, WXK_SPACE, ID_SET_RELATIVE_OFFSET )
|
||||
};
|
||||
|
||||
#define ACCEL_TABLE_CNT ( sizeof( accels ) / sizeof( wxAcceleratorEntry ) )
|
||||
|
||||
#define EXTRA_BORDER_SIZE 2
|
||||
|
||||
|
||||
FOOTPRINT_WIZARD_FRAME::FOOTPRINT_WIZARD_FRAME( wxWindow* parent, wxSemaphore* semaphore ) :
|
||||
PCB_BASE_FRAME( parent, MODULE_VIEWER_FRAME, _( "Footprint Wizard" ),
|
||||
wxDefaultPosition, wxDefaultSize )
|
||||
{
|
||||
wxAcceleratorTable table( ACCEL_TABLE_CNT, accels );
|
||||
|
||||
m_FrameName = wxT( "FootprintWizard" );
|
||||
m_configPath = wxT( "FootprintWizard" );
|
||||
m_showAxis = true; // true to draw axis.
|
||||
|
||||
// Give an icon
|
||||
wxIcon icon;
|
||||
icon.CopyFromBitmap( KiBitmap( modview_icon_xpm ) );
|
||||
SetIcon( icon );
|
||||
|
||||
m_HotkeysZoomAndGridList = g_Module_Viewer_Hokeys_Descr;
|
||||
m_PageList= NULL;
|
||||
m_ParameterList = NULL;
|
||||
m_PageListWindow = NULL;
|
||||
m_ParameterListWindow = NULL;
|
||||
m_Semaphore = semaphore;
|
||||
m_wizardName.Empty();
|
||||
|
||||
if( m_Semaphore )
|
||||
MakeModal(true);
|
||||
|
||||
SetBoard( new BOARD() );
|
||||
// Ensure all layers and items are visible:
|
||||
GetBoard()->SetVisibleAlls();
|
||||
SetScreen( new PCB_SCREEN(GetPageSizeIU()) );
|
||||
GetScreen()->m_Center = true; // Center coordinate origins on screen.
|
||||
LoadSettings();
|
||||
|
||||
SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y );
|
||||
GetScreen()->SetGrid( ID_POPUP_GRID_LEVEL_1000 + m_LastGridSizeId );
|
||||
|
||||
ReCreateHToolbar();
|
||||
ReCreateVToolbar();
|
||||
|
||||
wxSize size = GetClientSize();
|
||||
size.y -= m_MsgFrameHeight + 2;
|
||||
|
||||
m_PageListSize.y = -1;
|
||||
|
||||
wxPoint win_pos( 0, 0 );
|
||||
|
||||
// Creates the libraries window display
|
||||
m_PageListWindow =
|
||||
new wxSashLayoutWindow( this, ID_FOOTPRINT_WIZARD_PAGES_WINDOW, win_pos,
|
||||
wxDefaultSize, wxCLIP_CHILDREN | wxSW_3D,
|
||||
wxT( "PagesWindow" ) );
|
||||
m_PageListWindow->SetOrientation( wxLAYOUT_VERTICAL );
|
||||
m_PageListWindow->SetAlignment( wxLAYOUT_LEFT );
|
||||
m_PageListWindow->SetSashVisible( wxSASH_RIGHT, true );
|
||||
m_PageListWindow->SetExtraBorderSize( EXTRA_BORDER_SIZE );
|
||||
m_PageList = new wxListBox( m_PageListWindow, ID_FOOTPRINT_WIZARD_PAGE_LIST,
|
||||
wxPoint( 0, 0 ), wxDefaultSize,
|
||||
0, NULL, wxLB_HSCROLL );
|
||||
|
||||
// Creates the component window display
|
||||
m_ParameterListSize.y = size.y;
|
||||
win_pos.x = m_PageListSize.x;
|
||||
m_ParameterListWindow = new wxSashLayoutWindow( this,
|
||||
ID_FOOTPRINT_WIZARD_PARAMETERS_WINDOW,
|
||||
win_pos, wxDefaultSize,
|
||||
wxCLIP_CHILDREN | wxSW_3D,
|
||||
wxT( "ParameterList" ) );
|
||||
|
||||
m_ParameterListWindow->SetOrientation( wxLAYOUT_VERTICAL );
|
||||
|
||||
m_ParameterListWindow->SetSashVisible( wxSASH_RIGHT, true );
|
||||
m_ParameterListWindow->SetExtraBorderSize( EXTRA_BORDER_SIZE );
|
||||
m_ParameterList = new wxListBox( m_ParameterListWindow, ID_FOOTPRINT_WIZARD_PARAMETER_LIST,
|
||||
wxPoint( 0, 0 ), wxDefaultSize,
|
||||
0, NULL, wxLB_HSCROLL );
|
||||
|
||||
ReCreatePageList();
|
||||
|
||||
DisplayWizardInfos();
|
||||
|
||||
if( m_canvas )
|
||||
m_canvas->SetAcceleratorTable( table );
|
||||
|
||||
m_auimgr.SetManagedWindow( this );
|
||||
|
||||
|
||||
EDA_PANEINFO horiz;
|
||||
horiz.HorizontalToolbarPane();
|
||||
|
||||
EDA_PANEINFO vert;
|
||||
vert.VerticalToolbarPane();
|
||||
|
||||
EDA_PANEINFO info;
|
||||
info.InfoToolbarPane();
|
||||
|
||||
EDA_PANEINFO mesg;
|
||||
mesg.MessageToolbarPane();
|
||||
|
||||
|
||||
// Manage main toolbal
|
||||
m_auimgr.AddPane( m_mainToolBar,
|
||||
wxAuiPaneInfo( horiz ).Name( wxT ("m_mainToolBar" ) ).Top().Row( 0 ) );
|
||||
|
||||
wxSize minsize( 60, -1 );
|
||||
|
||||
// Manage the left window (list of pages)
|
||||
if( m_PageListWindow )
|
||||
m_auimgr.AddPane( m_PageListWindow, wxAuiPaneInfo( info ).Name( wxT( "m_PageList" ) ).
|
||||
Left().Row( 0 ));
|
||||
|
||||
// Manage the list of parameters)
|
||||
m_auimgr.AddPane( m_ParameterListWindow,
|
||||
wxAuiPaneInfo( info ).Name( wxT( "m_ParameterList" ) ).
|
||||
Left().Row( 1 ) );
|
||||
|
||||
// Manage the draw panel
|
||||
m_auimgr.AddPane( m_canvas,
|
||||
wxAuiPaneInfo().Name( wxT( "DrawFrame" ) ).Centre() );
|
||||
|
||||
// Manage the message panel
|
||||
m_auimgr.AddPane( m_messagePanel,
|
||||
wxAuiPaneInfo( mesg ).Name( wxT( "MsgPanel" ) ).Bottom().Layer(10) );
|
||||
|
||||
/* Now the minimum windows are fixed, set library list
|
||||
* and component list of the previous values from last viewlib use
|
||||
*/
|
||||
if( m_PageListWindow )
|
||||
{
|
||||
wxAuiPaneInfo& pane = m_auimgr.GetPane(m_PageListWindow);
|
||||
pane.MinSize( wxSize(m_PageListSize.x, -1));
|
||||
}
|
||||
wxAuiPaneInfo& pane = m_auimgr.GetPane(m_ParameterListWindow);
|
||||
pane.MinSize(wxSize(m_ParameterListSize.x, -1));
|
||||
|
||||
m_auimgr.Update();
|
||||
|
||||
// Now Drawpanel is sized, we can use BestZoom to show the component (if any)
|
||||
#ifdef USE_WX_GRAPHICS_CONTEXT
|
||||
GetScreen()->SetZoom( BestZoom() );
|
||||
#else
|
||||
Zoom_Automatique( false );
|
||||
#endif
|
||||
|
||||
Show( true );
|
||||
}
|
||||
|
||||
|
||||
FOOTPRINT_WIZARD_FRAME::~FOOTPRINT_WIZARD_FRAME()
|
||||
{
|
||||
if( m_Draw3DFrame )
|
||||
m_Draw3DFrame->Destroy();
|
||||
PCB_BASE_FRAME* frame = (PCB_BASE_FRAME*) GetParent();
|
||||
frame->m_ModuleViewerFrame = NULL;
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::OnCloseWindow( wxCloseEvent& Event )
|
||||
{
|
||||
SaveSettings();
|
||||
|
||||
if( m_Semaphore )
|
||||
{
|
||||
m_Semaphore->Post();
|
||||
MakeModal(false);
|
||||
// This window will be destroyed by the calling function,
|
||||
// to avoid side effects
|
||||
}
|
||||
else
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::OnSashDrag( wxSashEvent& event )
|
||||
{
|
||||
if( event.GetDragStatus() == wxSASH_STATUS_OUT_OF_RANGE )
|
||||
return;
|
||||
|
||||
m_PageListSize.y = GetClientSize().y - m_MsgFrameHeight;
|
||||
m_ParameterListSize.y = m_PageListSize.y;
|
||||
|
||||
switch( event.GetId() )
|
||||
{
|
||||
case ID_FOOTPRINT_WIZARD_WINDOW:
|
||||
if( m_PageListWindow )
|
||||
{
|
||||
wxAuiPaneInfo& pane = m_auimgr.GetPane( m_PageListWindow );
|
||||
m_PageListSize.x = event.GetDragRect().width;
|
||||
pane.MinSize( m_PageListSize );
|
||||
m_auimgr.Update();
|
||||
}
|
||||
break;
|
||||
|
||||
case ID_FOOTPRINT_WIZARD_PARAMETERS_WINDOW:
|
||||
{
|
||||
wxAuiPaneInfo& pane = m_auimgr.GetPane( m_ParameterListWindow );
|
||||
m_ParameterListSize.x = event.GetDragRect().width;
|
||||
pane.MinSize( m_ParameterListSize );
|
||||
m_auimgr.Update();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::OnSize( wxSizeEvent& SizeEv )
|
||||
{
|
||||
if( m_auimgr.GetManagedWindow() )
|
||||
m_auimgr.Update();
|
||||
|
||||
SizeEv.Skip();
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::OnSetRelativeOffset( wxCommandEvent& event )
|
||||
{
|
||||
GetScreen()->m_O_Curseur = GetScreen()->GetCrossHairPosition();
|
||||
UpdateStatusBar();
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::ReCreatePageList()
|
||||
{
|
||||
if( m_PageList == NULL )
|
||||
return;
|
||||
|
||||
m_PageList->Clear();
|
||||
|
||||
m_PageList->Append(wxT("Pads"));
|
||||
m_PageList->Append(wxT("Shield"));
|
||||
|
||||
m_PageList->SetSelection( 0, true );
|
||||
|
||||
/*for( unsigned ii = 0; ii < g_LibraryNames.GetCount(); ii++ )
|
||||
{
|
||||
m_PageList->Append( g_LibraryNames[ii] );
|
||||
}*/
|
||||
|
||||
#if 0
|
||||
// Search for a previous selection:
|
||||
|
||||
int index = m_PageList->FindString( m_libraryName );
|
||||
|
||||
if( index != wxNOT_FOUND )
|
||||
{
|
||||
m_PageList->SetSelection( index, true );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If not found, clear current library selection because it can be
|
||||
* deleted after a config change. */
|
||||
m_libraryName = wxEmptyString;
|
||||
m_footprintName = wxEmptyString;
|
||||
}
|
||||
#endif
|
||||
|
||||
ReCreateHToolbar();
|
||||
DisplayWizardInfos();
|
||||
m_canvas->Refresh();
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::ReCreateParameterList()
|
||||
{
|
||||
if( m_ParameterList == NULL )
|
||||
return;
|
||||
|
||||
m_ParameterList->Clear();
|
||||
|
||||
wxArrayString fpList;
|
||||
|
||||
m_ParameterList->Append( fpList );
|
||||
m_ParameterList->Append(wxT("N"));
|
||||
m_ParameterList->Append(wxT("pitch"));
|
||||
m_ParameterList->Append(wxT("width"));
|
||||
m_ParameterList->Append(wxT("height"));
|
||||
m_ParameterList->SetSelection( 0, true );
|
||||
|
||||
//m_ParameterList->SetSelection( index, true );
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::ClickOnPageList( wxCommandEvent& event )
|
||||
{
|
||||
int ii = m_PageList->GetSelection();
|
||||
|
||||
if( ii < 0 )
|
||||
return;
|
||||
|
||||
wxString name = m_PageList->GetString( ii );
|
||||
|
||||
printf("page=%d\n",ii);
|
||||
|
||||
ReCreateParameterList();
|
||||
m_canvas->Refresh();
|
||||
DisplayWizardInfos();
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::ClickOnParameterList( wxCommandEvent& event )
|
||||
{
|
||||
int ii = m_ParameterList->GetSelection();
|
||||
|
||||
if( ii < 0 )
|
||||
return;
|
||||
|
||||
wxString name = m_ParameterList->GetString( ii );
|
||||
|
||||
SetCurItem( NULL );
|
||||
// Delete the current footprint
|
||||
GetBoard()->m_Modules.DeleteAll();
|
||||
DisplayWizardInfos();
|
||||
Zoom_Automatique( false );
|
||||
m_canvas->Refresh();
|
||||
}
|
||||
|
||||
|
||||
#define PARTLIST_WIDTH_KEY wxT( "Partlist_width" )
|
||||
#define PARAMLIST_WIDTH_KEY wxT( "Paramlist_width" )
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::LoadSettings( )
|
||||
{
|
||||
wxConfig* cfg ;
|
||||
|
||||
EDA_DRAW_FRAME::LoadSettings();
|
||||
|
||||
wxConfigPathChanger cpc( wxGetApp().GetSettings(), m_configPath );
|
||||
cfg = wxGetApp().GetSettings();
|
||||
|
||||
m_PageListSize.x = 150; // default width of libs list
|
||||
m_ParameterListSize.x = 150; // default width of component list
|
||||
|
||||
cfg->Read( PARTLIST_WIDTH_KEY , &m_PageListSize.x );
|
||||
cfg->Read( PARAMLIST_WIDTH_KEY, &m_ParameterListSize.x );
|
||||
|
||||
// Set parameters to a reasonable value.
|
||||
if ( m_PageListSize.x > m_FrameSize.x/2 )
|
||||
m_PageListSize.x = m_FrameSize.x/2;
|
||||
|
||||
if ( m_ParameterListSize.x > m_FrameSize.x/2 )
|
||||
m_ParameterListSize.x = m_FrameSize.x/2;
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::SaveSettings()
|
||||
{
|
||||
wxConfig* cfg;
|
||||
|
||||
EDA_DRAW_FRAME::SaveSettings();
|
||||
|
||||
wxConfigPathChanger cpc( wxGetApp().GetSettings(), m_configPath );
|
||||
cfg = wxGetApp().GetSettings();
|
||||
|
||||
if ( m_PageListSize.x )
|
||||
cfg->Write( PARTLIST_WIDTH_KEY, m_PageListSize.x );
|
||||
|
||||
cfg->Write( PARAMLIST_WIDTH_KEY, m_ParameterListSize.x );
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::OnActivate( wxActivateEvent& event )
|
||||
{
|
||||
EDA_DRAW_FRAME::OnActivate( event );
|
||||
|
||||
// Ensure we do not have old selection:
|
||||
if( ! m_FrameIsActive )
|
||||
return;
|
||||
|
||||
bool footprintWizardsChanged=false;
|
||||
if (footprintWizardsChanged)
|
||||
{
|
||||
// If we are here, the library list has changed, rebuild it
|
||||
ReCreatePageList();
|
||||
DisplayWizardInfos();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey )
|
||||
{
|
||||
wxRealPoint gridSize;
|
||||
wxPoint oldpos;
|
||||
PCB_SCREEN* screen = GetScreen();
|
||||
wxPoint pos = aPosition;
|
||||
|
||||
wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED );
|
||||
cmd.SetEventObject( this );
|
||||
|
||||
pos = screen->GetNearestGridPosition( pos );
|
||||
oldpos = screen->GetCrossHairPosition();
|
||||
gridSize = screen->GetGridSize();
|
||||
|
||||
switch( aHotKey )
|
||||
{
|
||||
case WXK_F1:
|
||||
cmd.SetId( ID_POPUP_ZOOM_IN );
|
||||
GetEventHandler()->ProcessEvent( cmd );
|
||||
break;
|
||||
|
||||
case WXK_F2:
|
||||
cmd.SetId( ID_POPUP_ZOOM_OUT );
|
||||
GetEventHandler()->ProcessEvent( cmd );
|
||||
break;
|
||||
|
||||
case WXK_F3:
|
||||
cmd.SetId( ID_ZOOM_REDRAW );
|
||||
GetEventHandler()->ProcessEvent( cmd );
|
||||
break;
|
||||
|
||||
case WXK_F4:
|
||||
cmd.SetId( ID_POPUP_ZOOM_CENTER );
|
||||
GetEventHandler()->ProcessEvent( cmd );
|
||||
break;
|
||||
|
||||
case WXK_HOME:
|
||||
cmd.SetId( ID_ZOOM_PAGE );
|
||||
GetEventHandler()->ProcessEvent( cmd );
|
||||
break;
|
||||
|
||||
case ' ':
|
||||
screen->m_O_Curseur = screen->GetCrossHairPosition();
|
||||
break;
|
||||
|
||||
case WXK_NUMPAD8: /* cursor moved up */
|
||||
case WXK_UP:
|
||||
pos.y -= KiROUND( gridSize.y );
|
||||
m_canvas->MoveCursor( pos );
|
||||
break;
|
||||
|
||||
case WXK_NUMPAD2: /* cursor moved down */
|
||||
case WXK_DOWN:
|
||||
pos.y += KiROUND( gridSize.y );
|
||||
m_canvas->MoveCursor( pos );
|
||||
break;
|
||||
|
||||
case WXK_NUMPAD4: /* cursor moved left */
|
||||
case WXK_LEFT:
|
||||
pos.x -= KiROUND( gridSize.x );
|
||||
m_canvas->MoveCursor( pos );
|
||||
break;
|
||||
|
||||
case WXK_NUMPAD6: /* cursor moved right */
|
||||
case WXK_RIGHT:
|
||||
pos.x += KiROUND( gridSize.x );
|
||||
m_canvas->MoveCursor( pos );
|
||||
break;
|
||||
}
|
||||
|
||||
screen->SetCrossHairPosition( pos );
|
||||
|
||||
if( oldpos != screen->GetCrossHairPosition() )
|
||||
{
|
||||
pos = screen->GetCrossHairPosition();
|
||||
screen->SetCrossHairPosition( oldpos );
|
||||
m_canvas->CrossHairOff( aDC );
|
||||
screen->SetCrossHairPosition( pos );
|
||||
m_canvas->CrossHairOn( aDC );
|
||||
|
||||
if( m_canvas->IsMouseCaptured() )
|
||||
{
|
||||
m_canvas->CallMouseCapture( aDC, aPosition, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
UpdateStatusBar(); /* Display new cursor coordinates */
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::Show3D_Frame( wxCommandEvent& event )
|
||||
{
|
||||
if( m_Draw3DFrame )
|
||||
{
|
||||
// Raising the window does not show the window on Windows if iconized.
|
||||
// This should work on any platform.
|
||||
if( m_Draw3DFrame->IsIconized() )
|
||||
m_Draw3DFrame->Iconize( false );
|
||||
|
||||
m_Draw3DFrame->Raise();
|
||||
|
||||
// Raising the window does not set the focus on Linux. This should work on any platform.
|
||||
if( wxWindow::FindFocus() != m_Draw3DFrame )
|
||||
m_Draw3DFrame->SetFocus();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
m_Draw3DFrame = new EDA_3D_FRAME( this, wxEmptyString );
|
||||
Update3D_Frame( false );
|
||||
m_Draw3DFrame->Show( true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Function Update3D_Frame
|
||||
* must be called after a footprint selection
|
||||
* Updates the 3D view and 3D frame title.
|
||||
*/
|
||||
void FOOTPRINT_WIZARD_FRAME::Update3D_Frame( bool aForceReloadFootprint )
|
||||
{
|
||||
if( m_Draw3DFrame == NULL )
|
||||
return;
|
||||
|
||||
wxString frm3Dtitle;
|
||||
frm3Dtitle.Printf( _( "ModView: 3D Viewer [%s]" ), GetChars( m_wizardName ) );
|
||||
m_Draw3DFrame->SetTitle( frm3Dtitle );
|
||||
|
||||
if( aForceReloadFootprint )
|
||||
{
|
||||
m_Draw3DFrame->ReloadRequest();
|
||||
// Force 3D screen refresh immediately
|
||||
if( GetBoard()->m_Modules )
|
||||
m_Draw3DFrame->NewDisplay();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::ReCreateHToolbar()
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
if( m_mainToolBar == NULL )
|
||||
{
|
||||
m_mainToolBar = new wxAuiToolBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
|
||||
wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_HORZ_LAYOUT );
|
||||
|
||||
// Set up toolbar
|
||||
m_mainToolBar->AddTool( ID_FOOTPRINT_WIZARD_SELECT_WIZARD, wxEmptyString,
|
||||
KiBitmap( library_xpm ),
|
||||
_( "Select wizard to use" ) );
|
||||
|
||||
m_mainToolBar->AddSeparator();
|
||||
m_mainToolBar->AddTool( ID_FOOTPRINT_WIZARD_PREVIOUS, wxEmptyString,
|
||||
KiBitmap( lib_previous_xpm ),
|
||||
_( "Display previous page" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_FOOTPRINT_WIZARD_NEXT, wxEmptyString,
|
||||
KiBitmap( lib_next_xpm ),
|
||||
_( "Display next page" ) );
|
||||
|
||||
m_mainToolBar->AddSeparator();
|
||||
m_mainToolBar->AddTool( ID_FOOTPRINT_WIZARD_SHOW_3D_VIEW, wxEmptyString,
|
||||
KiBitmap( three_d_xpm ),
|
||||
_( "Show footprint in 3D viewer" ) );
|
||||
|
||||
m_mainToolBar->AddSeparator();
|
||||
msg = AddHotkeyName( _( "Zoom in" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_ZOOM_IN, IS_COMMENT );
|
||||
m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString,
|
||||
KiBitmap( zoom_in_xpm ), msg );
|
||||
|
||||
msg = AddHotkeyName( _( "Zoom out" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_ZOOM_OUT, IS_COMMENT );
|
||||
m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString,
|
||||
KiBitmap( zoom_out_xpm ), msg );
|
||||
|
||||
msg = AddHotkeyName( _( "Redraw view" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_ZOOM_REDRAW, IS_COMMENT );
|
||||
m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString,
|
||||
KiBitmap( zoom_redraw_xpm ), msg );
|
||||
|
||||
msg = AddHotkeyName( _( "Zoom auto" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_ZOOM_AUTO, IS_COMMENT );
|
||||
m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString,
|
||||
KiBitmap( zoom_fit_in_page_xpm ), msg );
|
||||
#if 0
|
||||
if( m_Semaphore )
|
||||
{
|
||||
// The library browser is called from a "load component" command
|
||||
m_mainToolBar->AddSeparator();
|
||||
m_mainToolBar->AddTool( ID_FOOTPRINT_WIZARD_FOOTPRINT_EXPORT_TO_BOARD,
|
||||
wxEmptyString, KiBitmap( export_footprint_names_xpm ),
|
||||
_( "Insert footprint in board" ) );
|
||||
}
|
||||
#endif
|
||||
// after adding the buttons to the toolbar, must call Realize() to
|
||||
// reflect the changes
|
||||
m_mainToolBar->Realize();
|
||||
}
|
||||
|
||||
m_mainToolBar->Refresh();
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::ReCreateVToolbar()
|
||||
{
|
||||
}
|
|
@ -0,0 +1,167 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2012 Miguel Angel Ajo Pelayo, miguelangel@nbee.es
|
||||
* Copyright (C) 2012 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
|
||||
* Copyright (C) 2004-2012 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file footprint_wizard_frame.h
|
||||
*/
|
||||
|
||||
#ifndef FOOTPRINT_WIZARD_FRAME_H_
|
||||
#define FOOTPRINT_WIZARD_FRAME_H_
|
||||
|
||||
|
||||
#include <wx/gdicmn.h>
|
||||
|
||||
class wxSashLayoutWindow;
|
||||
class wxListBox;
|
||||
class wxSemaphore;
|
||||
|
||||
|
||||
/**
|
||||
* Component library viewer main window.
|
||||
*/
|
||||
class FOOTPRINT_WIZARD_FRAME : public PCB_BASE_FRAME
|
||||
{
|
||||
private:
|
||||
// List of libraries (for selection )
|
||||
wxSashLayoutWindow* m_PageListWindow;
|
||||
wxListBox* m_PageList; // The list of pages
|
||||
wxSize m_PageListSize; // size of the window
|
||||
|
||||
// List of components in the selected library
|
||||
wxSashLayoutWindow* m_ParameterListWindow;
|
||||
wxListBox* m_ParameterList; // The list of parameters
|
||||
wxSize m_ParameterListSize; // size of the window
|
||||
|
||||
// Flags
|
||||
wxSemaphore* m_Semaphore; // != NULL if the frame must emulate a modal dialog
|
||||
wxString m_configPath; // subpath for configuration
|
||||
|
||||
protected:
|
||||
wxString m_wizardName; //< name of the current wizard
|
||||
wxString m_wizardDescription; //< description of the wizard
|
||||
wxString m_wizardStatus; //< current wizard status
|
||||
|
||||
public:
|
||||
FOOTPRINT_WIZARD_FRAME( wxWindow* parent, wxSemaphore* semaphore = NULL );
|
||||
|
||||
~FOOTPRINT_WIZARD_FRAME();
|
||||
|
||||
MODULE* GetBuiltFootrint( void );
|
||||
|
||||
private:
|
||||
|
||||
void OnSize( wxSizeEvent& event );
|
||||
|
||||
/**
|
||||
* Function OnSashDrag
|
||||
* resizes the child windows when dragging a sash window border.
|
||||
*/
|
||||
|
||||
void OnSashDrag( wxSashEvent& event );
|
||||
|
||||
/**
|
||||
* Function ReCreateLibraryList
|
||||
*
|
||||
* Creates or recreates the list of current loaded libraries.
|
||||
* This list is sorted, with the library cache always at end of the list
|
||||
*/
|
||||
void ReCreatePageList();
|
||||
void ReCreateParameterList();
|
||||
|
||||
void Process_Special_Functions( wxCommandEvent& event );
|
||||
void DisplayWizardInfos();
|
||||
void RedrawActiveWindow( wxDC* DC, bool EraseBg );
|
||||
void OnCloseWindow( wxCloseEvent& Event );
|
||||
void ReCreateHToolbar();
|
||||
void ReCreateVToolbar();
|
||||
void OnLeftClick( wxDC* DC, const wxPoint& MousePos );
|
||||
void ClickOnPageList( wxCommandEvent& event );
|
||||
void ClickOnParameterList( wxCommandEvent& event );
|
||||
void OnSetRelativeOffset( wxCommandEvent& event );
|
||||
|
||||
void GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey = 0 );
|
||||
|
||||
/**
|
||||
* Function LoadSettings
|
||||
* loads the library viewer frame specific configuration settings.
|
||||
*
|
||||
* Don't forget to call this base method from any derived classes or the
|
||||
* settings will not get loaded.
|
||||
*/
|
||||
void LoadSettings();
|
||||
|
||||
/**
|
||||
* Function SaveSettings
|
||||
* save library viewer frame specific configuration settings.
|
||||
*
|
||||
* Don't forget to call this base method from any derived classes or the
|
||||
* settings will not get saved.
|
||||
*/
|
||||
void SaveSettings();
|
||||
|
||||
|
||||
/**
|
||||
* Function OnActivate
|
||||
* is called when the frame frame is activate to reload the libraries and component lists
|
||||
* that can be changed by the schematic editor or the library editor.
|
||||
*/
|
||||
virtual void OnActivate( wxActivateEvent& event );
|
||||
|
||||
void SelectCurrentWizard( wxCommandEvent& event );
|
||||
|
||||
void ParametersUpdated( wxCommandEvent& event );
|
||||
|
||||
|
||||
|
||||
bool OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu );
|
||||
|
||||
/**
|
||||
* Function Show3D_Frame (virtual)
|
||||
* displays 3D view of the footprint (module) being edited.
|
||||
*/
|
||||
void Show3D_Frame( wxCommandEvent& event );
|
||||
|
||||
/**
|
||||
* Function Update3D_Frame
|
||||
* must be called after a footprint selection
|
||||
* Updates the 3D view and 3D frame title.
|
||||
* @param aForceReloadFootprint = true to reload data (default)
|
||||
* = false to update title only -(aftre creating the 3D viewer)
|
||||
*/
|
||||
void Update3D_Frame( bool aForceReloadFootprint = true );
|
||||
|
||||
/*
|
||||
* Virtual functions, not used here, but needed by PCB_BASE_FRAME
|
||||
* (virtual pure functions )
|
||||
*/
|
||||
void OnLeftDClick(wxDC*, const wxPoint&) {}
|
||||
void SaveCopyInUndoList(BOARD_ITEM*, UNDO_REDO_T, const wxPoint&) {}
|
||||
void SaveCopyInUndoList(PICKED_ITEMS_LIST&, UNDO_REDO_T, const wxPoint&) {}
|
||||
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
#endif // FOOTPRINT_WIZARD_FRM_H_
|
|
@ -29,6 +29,8 @@
|
|||
#include <dialog_edit_module_for_Modedit.h>
|
||||
#include <wildcards_and_files_ext.h>
|
||||
#include <menus_helpers.h>
|
||||
#include <footprint_wizard_frame.h>
|
||||
|
||||
|
||||
// Functions defined in block_module_editor, but used here
|
||||
// These 2 functions are used in modedit to rotate or mirror the whole footprint
|
||||
|
@ -284,6 +286,36 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
|||
break;
|
||||
}
|
||||
|
||||
case ID_MODEDIT_NEW_MODULE_FROM_WIZARD:
|
||||
{
|
||||
Clear_Pcb( true );
|
||||
GetScreen()->ClearUndoRedoList();
|
||||
SetCurItem( NULL );
|
||||
GetScreen()->SetCrossHairPosition( wxPoint( 0, 0 ) );
|
||||
|
||||
MODULE* module = NULL;
|
||||
|
||||
FOOTPRINT_WIZARD_FRAME *wizard = new FOOTPRINT_WIZARD_FRAME(this,NULL);
|
||||
wizard->Show( true );
|
||||
wizard->Zoom_Automatique( false );
|
||||
|
||||
if( module ) // i.e. if create module command not aborted
|
||||
{
|
||||
// Initialize data relative to nets and netclasses (for a new
|
||||
// module the defaults are used)
|
||||
// This is mandatory to handle and draw pads
|
||||
GetBoard()->BuildListOfNets();
|
||||
redraw = true;
|
||||
module->SetPosition( wxPoint( 0, 0 ) );
|
||||
|
||||
if( GetBoard()->m_Modules )
|
||||
GetBoard()->m_Modules->ClearFlags();
|
||||
|
||||
Zoom_Automatique( false );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case ID_MODEDIT_SAVE_LIBMODULE:
|
||||
if( GetBoard()->m_Modules == NULL )
|
||||
break;
|
||||
|
|
|
@ -71,6 +71,7 @@ BEGIN_EVENT_TABLE( FOOTPRINT_EDIT_FRAME, PCB_BASE_FRAME )
|
|||
|
||||
EVT_TOOL( ID_MODEDIT_DELETE_PART, FOOTPRINT_EDIT_FRAME::Process_Special_Functions )
|
||||
EVT_TOOL( ID_MODEDIT_NEW_MODULE, FOOTPRINT_EDIT_FRAME::Process_Special_Functions )
|
||||
EVT_TOOL( ID_MODEDIT_NEW_MODULE_FROM_WIZARD, FOOTPRINT_EDIT_FRAME::Process_Special_Functions )
|
||||
EVT_TOOL( ID_MODEDIT_LOAD_MODULE, FOOTPRINT_EDIT_FRAME::Process_Special_Functions )
|
||||
EVT_TOOL( ID_MODEDIT_IMPORT_PART, FOOTPRINT_EDIT_FRAME::Process_Special_Functions )
|
||||
EVT_TOOL( ID_MODEDIT_EXPORT_PART, FOOTPRINT_EDIT_FRAME::Process_Special_Functions )
|
||||
|
|
|
@ -299,6 +299,7 @@ enum pcbnew_ids
|
|||
ID_MODEDIT_SAVE_LIBMODULE,
|
||||
ID_MODEDIT_DELETE_PART,
|
||||
ID_MODEDIT_NEW_MODULE,
|
||||
ID_MODEDIT_NEW_MODULE_FROM_WIZARD,
|
||||
ID_MODEDIT_SHEET_SET,
|
||||
ID_MODEDIT_LOAD_MODULE,
|
||||
ID_MODEDIT_PAD_SETTINGS,
|
||||
|
@ -323,7 +324,20 @@ enum pcbnew_ids
|
|||
ID_MODVIEW_PREVIOUS,
|
||||
ID_MODVIEW_NEXT,
|
||||
ID_MODVIEW_SHOW_3D_VIEW,
|
||||
ID_MODVIEW_FOOTPRINT_EXPORT_TO_BOARD
|
||||
ID_MODVIEW_FOOTPRINT_EXPORT_TO_BOARD,
|
||||
ID_FOOTPRINT_WIZARD_WINDOW,
|
||||
ID_FOOTPRINT_WIZARD_PAGES,
|
||||
ID_FOOTPRINT_WIZARD_PARAMETERS,
|
||||
ID_FOOTPRINT_WIZARD_NEXT,
|
||||
ID_FOOTPRINT_WIZARD_PREVIOUS,
|
||||
ID_FOOTPRINT_WIZARD_DONE,
|
||||
ID_FOOTPRINT_WIZARD_SHOW_3D_VIEW,
|
||||
ID_FOOTPRINT_WIZARD_PAGE_LIST,
|
||||
ID_FOOTPRINT_WIZARD_PARAMETER_LIST,
|
||||
ID_FOOTPRINT_WIZARD_PAGES_WINDOW,
|
||||
ID_FOOTPRINT_WIZARD_PARAMETERS_WINDOW,
|
||||
ID_FOOTPRINT_WIZARD_SELECT_WIZARD,
|
||||
ID_FOOTPRINT_WIZARD_EXPORT_TO_BOARD,
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -1,28 +1,28 @@
|
|||
/**
|
||||
* @file pcbnew_footprint_wizards.cpp
|
||||
* @brief Class PCBNEW_FOOTPRINT_WIZARDS
|
||||
* @brief Class PCBNEW_PYTHON_FOOTPRINT_WIZARDS
|
||||
*/
|
||||
|
||||
#include "pcbnew_footprint_wizards.h"
|
||||
#include <stdio.h>
|
||||
|
||||
FOOTPRINT_WIZARD::FOOTPRINT_WIZARD(PyObject *aWizard)
|
||||
PYTHON_FOOTPRINT_WIZARD::PYTHON_FOOTPRINT_WIZARD(PyObject *aWizard)
|
||||
{
|
||||
this->py_wizard = aWizard;
|
||||
this->m_PyWizard= aWizard;
|
||||
Py_XINCREF(aWizard);
|
||||
}
|
||||
|
||||
FOOTPRINT_WIZARD::~FOOTPRINT_WIZARD()
|
||||
PYTHON_FOOTPRINT_WIZARD::~PYTHON_FOOTPRINT_WIZARD()
|
||||
{
|
||||
Py_XDECREF(this->py_wizard);
|
||||
Py_XDECREF(this->m_PyWizard);
|
||||
}
|
||||
|
||||
PyObject* FOOTPRINT_WIZARD::CallMethod(const char* aMethod, PyObject *aArglist)
|
||||
PyObject* PYTHON_FOOTPRINT_WIZARD::CallMethod(const char* aMethod, PyObject *aArglist)
|
||||
{
|
||||
PyObject *pFunc;
|
||||
|
||||
/* pFunc is a new reference to the desired method */
|
||||
pFunc = PyObject_GetAttrString(this->py_wizard, aMethod);
|
||||
pFunc = PyObject_GetAttrString(this->m_PyWizard, aMethod);
|
||||
|
||||
if (pFunc && PyCallable_Check(pFunc))
|
||||
{
|
||||
|
@ -39,7 +39,6 @@ PyObject* FOOTPRINT_WIZARD::CallMethod(const char* aMethod, PyObject *aArglist)
|
|||
printf (" : %s\n",PyString_AsString(PyObject_Str(b)));
|
||||
}
|
||||
|
||||
|
||||
if (result)
|
||||
{
|
||||
Py_XDECREF(pFunc);
|
||||
|
@ -57,7 +56,7 @@ PyObject* FOOTPRINT_WIZARD::CallMethod(const char* aMethod, PyObject *aArglist)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
wxString FOOTPRINT_WIZARD::CallRetStrMethod(const char* aMethod, PyObject *aArglist)
|
||||
wxString PYTHON_FOOTPRINT_WIZARD::CallRetStrMethod(const char* aMethod, PyObject *aArglist)
|
||||
{
|
||||
wxString ret;
|
||||
PyObject *result = CallMethod(aMethod,aArglist);
|
||||
|
@ -74,22 +73,22 @@ wxString FOOTPRINT_WIZARD::CallRetStrMethod(const char* aMethod, PyObject *aArgl
|
|||
|
||||
return ret;
|
||||
}
|
||||
wxString FOOTPRINT_WIZARD::GetName()
|
||||
wxString PYTHON_FOOTPRINT_WIZARD::GetName()
|
||||
{
|
||||
return CallRetStrMethod("GetName");
|
||||
}
|
||||
|
||||
wxString FOOTPRINT_WIZARD::GetImage()
|
||||
wxString PYTHON_FOOTPRINT_WIZARD::GetImage()
|
||||
{
|
||||
return CallRetStrMethod("GetImage");
|
||||
}
|
||||
|
||||
wxString FOOTPRINT_WIZARD::GetDescription()
|
||||
wxString PYTHON_FOOTPRINT_WIZARD::GetDescription()
|
||||
{
|
||||
return CallRetStrMethod("GetDescription");
|
||||
}
|
||||
|
||||
int FOOTPRINT_WIZARD::GetNumParameterPages()
|
||||
int PYTHON_FOOTPRINT_WIZARD::GetNumParameterPages()
|
||||
{
|
||||
int ret;
|
||||
PyObject *result;
|
||||
|
@ -106,7 +105,7 @@ int FOOTPRINT_WIZARD::GetNumParameterPages()
|
|||
return ret;
|
||||
}
|
||||
|
||||
wxString FOOTPRINT_WIZARD::GetParameterPageName(int aPage)
|
||||
wxString PYTHON_FOOTPRINT_WIZARD::GetParameterPageName(int aPage)
|
||||
{
|
||||
wxString ret;
|
||||
PyObject *arglist;
|
||||
|
@ -126,41 +125,48 @@ wxString FOOTPRINT_WIZARD::GetParameterPageName(int aPage)
|
|||
return ret;
|
||||
}
|
||||
|
||||
wxArrayString FOOTPRINT_WIZARD::GetParameterNames(int aPage)
|
||||
wxArrayString PYTHON_FOOTPRINT_WIZARD::GetParameterNames(int aPage)
|
||||
{
|
||||
wxArrayString a;
|
||||
return a;
|
||||
}
|
||||
|
||||
wxArrayString FOOTPRINT_WIZARD::GetParameterValues(int aPage)
|
||||
wxArrayString PYTHON_FOOTPRINT_WIZARD::GetParameterValues(int aPage)
|
||||
{
|
||||
wxArrayString a;
|
||||
return a;
|
||||
}
|
||||
|
||||
wxString FOOTPRINT_WIZARD::SetParameterValues(int aPage,wxArrayString& aValues)
|
||||
wxString PYTHON_FOOTPRINT_WIZARD::SetParameterValues(int aPage,wxArrayString& aValues)
|
||||
{
|
||||
wxString ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
MODULE FOOTPRINT_WIZARD::*GetModule()
|
||||
MODULE *PYTHON_FOOTPRINT_WIZARD::GetModule()
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
std::vector<FOOTPRINT_WIZARD*> FOOTPRINT_WIZARDS::m_FootprintWizards;
|
||||
|
||||
void FOOTPRINT_WIZARDS::register_wizard(PyObject* wizard)
|
||||
void PYTHON_FOOTPRINT_WIZARDS::register_wizard(PyObject* aPyWizard)
|
||||
{
|
||||
FOOTPRINT_WIZARD *fw;
|
||||
PYTHON_FOOTPRINT_WIZARD *fw;
|
||||
|
||||
fw = new FOOTPRINT_WIZARD(wizard);
|
||||
m_FootprintWizards.push_back(fw);
|
||||
fw = new PYTHON_FOOTPRINT_WIZARD(aPyWizard);
|
||||
|
||||
printf("Registered python footprint wizard '%s'\n",
|
||||
(const char*)fw->GetName().mb_str());
|
||||
(const char*)fw->GetName().mb_str()
|
||||
);
|
||||
|
||||
// this get the wizard registered in the common
|
||||
// FOOTPRINT_WIZARDS class
|
||||
|
||||
fw->register_wizard();
|
||||
|
||||
|
||||
#if 0
|
||||
/* just to test if it works correctly */
|
||||
int pages = fw->GetNumParameterPages();
|
||||
printf(" %d pages\n",pages);
|
||||
|
||||
|
@ -169,7 +175,7 @@ void FOOTPRINT_WIZARDS::register_wizard(PyObject* wizard)
|
|||
printf(" page %d->'%s'\n",n,
|
||||
(const char*)fw->GetParameterPageName(n).mb_str());
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -7,17 +7,17 @@
|
|||
#define PCBNEW_FOOTPRINT_WIZARDS_H
|
||||
#include <Python.h>
|
||||
#include <vector>
|
||||
#include <wxPcbStruct.h>
|
||||
#include <class_footprint_wizard.h>
|
||||
|
||||
class FOOTPRINT_WIZARD
|
||||
class PYTHON_FOOTPRINT_WIZARD: public FOOTPRINT_WIZARD
|
||||
{
|
||||
|
||||
PyObject *py_wizard;
|
||||
PyObject *m_PyWizard;
|
||||
PyObject *CallMethod(const char *aMethod, PyObject *aArglist=NULL);
|
||||
wxString CallRetStrMethod(const char *aMethod, PyObject *aArglist=NULL);
|
||||
public:
|
||||
FOOTPRINT_WIZARD(PyObject *wizard);
|
||||
~FOOTPRINT_WIZARD();
|
||||
PYTHON_FOOTPRINT_WIZARD(PyObject *wizard);
|
||||
~PYTHON_FOOTPRINT_WIZARD();
|
||||
wxString GetName();
|
||||
wxString GetImage();
|
||||
wxString GetDescription();
|
||||
|
@ -31,13 +31,10 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class FOOTPRINT_WIZARDS
|
||||
class PYTHON_FOOTPRINT_WIZARDS
|
||||
{
|
||||
private:
|
||||
static std::vector<FOOTPRINT_WIZARD*> m_FootprintWizards;
|
||||
|
||||
public:
|
||||
static void register_wizard(PyObject *wizard);
|
||||
static void register_wizard(PyObject *aPyWizard);
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#include <scripting/pcbnew_footprint_wizards.h>
|
||||
%}
|
||||
|
||||
class FOOTPRINT_WIZARDS
|
||||
class PYTHON_FOOTPRINT_WIZARDS
|
||||
{
|
||||
public:
|
||||
static void register_wizard(PyObject *wizard);
|
||||
|
|
|
@ -77,6 +77,12 @@ void FOOTPRINT_EDIT_FRAME::ReCreateHToolbar()
|
|||
m_mainToolBar->AddTool( ID_MODEDIT_NEW_MODULE, wxEmptyString, KiBitmap( new_footprint_xpm ),
|
||||
_( "New module" ) );
|
||||
|
||||
m_mainToolBar->AddTool( ID_MODEDIT_NEW_MODULE_FROM_WIZARD, wxEmptyString,
|
||||
KiBitmap( module_wizard_xpm ),
|
||||
_( "New module from footprint wizard" ) );
|
||||
|
||||
|
||||
|
||||
m_mainToolBar->AddTool( ID_MODEDIT_LOAD_MODULE, wxEmptyString,
|
||||
KiBitmap( load_module_lib_xpm ),
|
||||
_( "Load module from library" ) );
|
||||
|
|
|
@ -35,7 +35,7 @@ class KiCadPlugin:
|
|||
if isinstance(self,FilePlugin):
|
||||
pass # register to file plugins in C++
|
||||
if isinstance(self,FootprintWizardPlugin):
|
||||
FOOTPRINT_WIZARDS.register_wizard(self)
|
||||
PYTHON_FOOTPRINT_WIZARDS.register_wizard(self)
|
||||
return
|
||||
|
||||
if isinstance(self,ActionPlugin):
|
||||
|
|
Loading…
Reference in New Issue