diff --git a/bitmaps_png/CMakeLists.txt b/bitmaps_png/CMakeLists.txt index 20b573f1de..6774e74e96 100644 --- a/bitmaps_png/CMakeLists.txt +++ b/bitmaps_png/CMakeLists.txt @@ -338,6 +338,7 @@ set( BMAPS_MID library_browse library_update library + library_table libview lines90 load_module_board diff --git a/bitmaps_png/cpp_26/library_table.cpp b/bitmaps_png/cpp_26/library_table.cpp new file mode 100644 index 0000000000..65615e3485 --- /dev/null +++ b/bitmaps_png/cpp_26/library_table.cpp @@ -0,0 +1,131 @@ + +/* Do not modify this file, it was automatically generated by the + * PNG2cpp CMake script, using a *.png file as input. + */ + +#include + +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, 0x07, 0x23, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x9d, 0x96, 0x7b, 0x54, 0xd3, + 0xe7, 0x19, 0xc7, 0xdb, 0xd5, 0xe3, 0x15, 0xaa, 0x56, 0xc5, 0xaa, 0xd8, 0xd3, 0xa1, 0x96, 0xe3, + 0xac, 0x1b, 0xab, 0x0e, 0x37, 0xaa, 0xc7, 0x3f, 0x56, 0x0f, 0x1e, 0x14, 0x87, 0xce, 0xb5, 0x74, + 0x55, 0xab, 0xab, 0x07, 0x44, 0x01, 0x15, 0xbc, 0x50, 0x04, 0x8b, 0xee, 0x0c, 0x25, 0x45, 0x24, + 0x96, 0x06, 0x42, 0x0c, 0x98, 0x18, 0x48, 0x0c, 0x01, 0x12, 0x08, 0xb9, 0x10, 0x48, 0x42, 0x82, + 0x5c, 0xe4, 0x96, 0x04, 0x85, 0x04, 0x73, 0xbf, 0x08, 0xed, 0x8a, 0xd5, 0x01, 0x56, 0x87, 0xc9, + 0xb3, 0xe7, 0x65, 0xc5, 0x23, 0xa5, 0x87, 0xda, 0xfe, 0xce, 0x79, 0xc8, 0x8f, 0x5f, 0x9e, 0xf7, + 0xf7, 0x79, 0x9f, 0xdb, 0xf7, 0xcd, 0x4b, 0x00, 0xf0, 0xd2, 0xb8, 0xe1, 0x35, 0x6f, 0xce, 0x9c, + 0x39, 0x54, 0xb4, 0xf7, 0xf0, 0xfe, 0x57, 0xcf, 0x7f, 0xf7, 0x73, 0x0c, 0xaf, 0xe5, 0xfe, 0xfe, + 0xfe, 0xa7, 0xe6, 0xcd, 0x9b, 0x97, 0xf4, 0xec, 0x19, 0xf9, 0x33, 0x73, 0xe6, 0xcc, 0xa0, 0xd9, + 0xb3, 0x67, 0x47, 0xa1, 0xc3, 0xda, 0x90, 0x90, 0x90, 0x2f, 0xa3, 0xa3, 0xa3, 0xe9, 0xe8, 0x94, + 0x3d, 0x7d, 0xfa, 0xf4, 0xb7, 0x7f, 0x26, 0xe0, 0x0d, 0x04, 0x9c, 0x5e, 0xb6, 0x6c, 0x19, 0xed, + 0xe0, 0xc1, 0x83, 0x37, 0xe6, 0xce, 0x9d, 0x5b, 0xbe, 0x60, 0xc1, 0x82, 0x14, 0x7c, 0x3e, 0x67, + 0xcc, 0x01, 0x23, 0xf8, 0x7b, 0x78, 0x78, 0x78, 0xf1, 0xf2, 0xe5, 0xcb, 0x59, 0x6b, 0xd7, 0xae, + 0xed, 0xac, 0xa8, 0xa8, 0x50, 0xde, 0xc0, 0x2b, 0x2c, 0x2c, 0x8c, 0x86, 0x8e, 0x69, 0xe8, 0xf8, + 0xfa, 0x0b, 0x00, 0x52, 0x96, 0x2e, 0x5d, 0x5a, 0x1c, 0x17, 0x17, 0xa7, 0xcc, 0xcc, 0xcc, 0xbc, + 0x93, 0x9a, 0x9a, 0x6a, 0xda, 0xb0, 0x61, 0x83, 0x3e, 0x30, 0x30, 0x90, 0x4e, 0xd6, 0x3f, 0x03, + 0x15, 0x15, 0x15, 0xb1, 0xac, 0x56, 0xeb, 0x8d, 0x23, 0x47, 0x8e, 0xf4, 0x96, 0x95, 0x95, 0x59, + 0xd2, 0xd3, 0xd3, 0xed, 0x74, 0x3a, 0xbd, 0xe7, 0xe2, 0xc5, 0x8b, 0x75, 0xb8, 0xc3, 0xfc, 0x59, + 0xb3, 0x66, 0x85, 0xfe, 0x08, 0xe0, 0x65, 0x7c, 0xfe, 0x57, 0xdc, 0x4c, 0xc5, 0x81, 0x03, 0x07, + 0x6e, 0x23, 0xc0, 0x74, 0xee, 0xdc, 0x39, 0x47, 0x61, 0x61, 0xa1, 0x43, 0x22, 0x91, 0x98, 0x63, + 0x62, 0x62, 0xba, 0x83, 0x83, 0x83, 0x69, 0xe8, 0xb7, 0x78, 0x12, 0xe8, 0xe8, 0xd1, 0xa3, 0x7d, + 0xcd, 0xcd, 0xcd, 0xae, 0x5b, 0xb7, 0x6e, 0x39, 0x79, 0x3c, 0x9e, 0x13, 0x17, 0x59, 0xaf, 0x5c, + 0xb9, 0x62, 0x5c, 0xb3, 0x66, 0x4d, 0xf5, 0xfc, 0xf9, 0xf3, 0xa3, 0x9f, 0x83, 0xf8, 0x63, 0xba, + 0x19, 0xa1, 0xa1, 0xa1, 0xfa, 0x9c, 0x9c, 0x1c, 0x13, 0x9b, 0xcd, 0xb6, 0x17, 0x14, 0x14, 0xb8, + 0xa4, 0x52, 0xa9, 0x0d, 0xcd, 0x8e, 0x9b, 0xb5, 0x13, 0xd0, 0xaa, 0x55, 0xab, 0x08, 0x28, 0x60, + 0x12, 0xe8, 0xc4, 0x89, 0x13, 0xbd, 0x7d, 0x7d, 0x7d, 0xe6, 0x9e, 0x9e, 0x1e, 0x2b, 0x01, 0x8a, + 0xc5, 0x62, 0xb7, 0x40, 0x20, 0x70, 0x96, 0x97, 0x97, 0x9b, 0xb0, 0x7e, 0x7a, 0x3f, 0x3f, 0xbf, + 0xdd, 0xb8, 0xf0, 0x55, 0xfc, 0x94, 0xed, 0xdd, 0xbb, 0xd7, 0x58, 0x53, 0x53, 0x63, 0x66, 0x32, + 0x99, 0x4e, 0x04, 0xb9, 0xf0, 0xde, 0x51, 0x57, 0x57, 0x67, 0xd3, 0x6a, 0xb5, 0x66, 0x5c, 0x67, + 0x8e, 0x8d, 0x8d, 0x35, 0xac, 0x5c, 0xb9, 0x92, 0x80, 0x16, 0x4d, 0x00, 0xd9, 0x6c, 0xb6, 0x31, + 0x10, 0x01, 0xb4, 0xb7, 0xb7, 0x3b, 0x4c, 0x26, 0x93, 0xe5, 0xce, 0x9d, 0x3b, 0x56, 0xdc, 0xa1, + 0xa7, 0xa4, 0xa4, 0xc4, 0xa3, 0x54, 0x2a, 0xcd, 0x2b, 0x56, 0xac, 0xe8, 0x41, 0xff, 0x6e, 0x7c, + 0x89, 0x51, 0xa1, 0x50, 0x58, 0x30, 0x9a, 0x7b, 0xb8, 0x09, 0x27, 0x7e, 0x67, 0x25, 0x80, 0xda, + 0xda, 0x5a, 0x9b, 0x50, 0x28, 0x74, 0x61, 0x36, 0xec, 0x87, 0x0e, 0x1d, 0x32, 0x04, 0x05, 0x05, + 0x11, 0xd0, 0xc2, 0x09, 0x20, 0x87, 0xc3, 0xc1, 0x1b, 0x8f, 0x88, 0xcf, 0xe7, 0xbb, 0x55, 0x2a, + 0x95, 0x9b, 0x40, 0x7b, 0x7b, 0x7b, 0x2d, 0x1a, 0x8d, 0xc6, 0x75, 0x91, 0x42, 0x79, 0x5c, 0x23, + 0x95, 0x78, 0x8b, 0xae, 0x5d, 0xf3, 0x52, 0xf3, 0xbe, 0x18, 0xce, 0xce, 0xce, 0x1e, 0x20, 0x11, + 0xa8, 0xd5, 0x6a, 0x0b, 0x79, 0x39, 0x36, 0x91, 0x2b, 0x3f, 0x3f, 0xdf, 0x83, 0x91, 0x59, 0x2b, + 0x2b, 0x85, 0x96, 0xcc, 0x4b, 0xb4, 0x07, 0xe1, 0xdb, 0x77, 0x0a, 0x27, 0x81, 0x9c, 0x4e, 0x27, + 0x6f, 0x3c, 0xa2, 0xd6, 0xd6, 0x56, 0x67, 0x55, 0x55, 0x95, 0x13, 0x17, 0x3b, 0xc9, 0x3d, 0x31, + 0x99, 0x5c, 0xd6, 0x5f, 0x56, 0x2e, 0xf0, 0xe2, 0x86, 0xe0, 0xee, 0xdd, 0xbb, 0x40, 0xbf, 0xca, + 0x78, 0x44, 0x00, 0xc4, 0x0f, 0xd7, 0xbb, 0x18, 0x0c, 0x86, 0xb3, 0xba, 0xba, 0xda, 0x21, 0x10, + 0x54, 0x7a, 0x8a, 0x38, 0xc2, 0xc7, 0xaa, 0x36, 0x23, 0x30, 0x79, 0xd5, 0xff, 0xc9, 0xb8, 0x90, + 0x17, 0x33, 0x09, 0x94, 0x9c, 0x9c, 0x3c, 0x16, 0x91, 0xd1, 0x68, 0xb4, 0x90, 0x97, 0x63, 0x54, + 0x2e, 0x0e, 0x87, 0xe3, 0x6e, 0x6b, 0x6b, 0xb3, 0x63, 0x6a, 0xdc, 0x59, 0x14, 0xca, 0x60, 0x55, + 0x75, 0xb5, 0xcf, 0x6c, 0x36, 0x83, 0x52, 0xa5, 0xf2, 0x72, 0xb9, 0x5c, 0x77, 0x5e, 0x5e, 0x9e, + 0x1b, 0x33, 0xe0, 0x1a, 0x83, 0xd6, 0xc8, 0x3c, 0x7c, 0x51, 0xfd, 0x93, 0x9b, 0x3a, 0x0b, 0x68, + 0xd1, 0xd4, 0x1d, 0x7d, 0x90, 0x4b, 0x2f, 0x55, 0x4c, 0x02, 0x25, 0x25, 0x25, 0xf5, 0x8e, 0x47, + 0xa0, 0xd7, 0xeb, 0x6d, 0x57, 0x8b, 0x8b, 0x86, 0x54, 0x6a, 0x95, 0x87, 0xc5, 0x62, 0xf5, 0x63, + 0x8a, 0xec, 0x58, 0x93, 0x01, 0xd6, 0x75, 0xb6, 0xd7, 0xe3, 0xf1, 0x00, 0xd6, 0x10, 0xb2, 0x28, + 0x59, 0xf7, 0x09, 0xa0, 0xa1, 0xa1, 0xc1, 0x42, 0x8c, 0xcd, 0x15, 0x0e, 0x6b, 0x3a, 0x4d, 0x50, + 0xdb, 0x64, 0x80, 0xda, 0x9b, 0x7a, 0x84, 0x70, 0xbe, 0xdd, 0x1a, 0x15, 0xf5, 0xe6, 0x04, 0x90, + 0xdb, 0xed, 0xe6, 0x1d, 0x3f, 0x7e, 0x7c, 0x2c, 0x22, 0x6c, 0x4f, 0x17, 0xb3, 0xa8, 0xe8, 0xdf, + 0xfa, 0x6e, 0x83, 0xef, 0x06, 0x9f, 0xff, 0xdf, 0xa6, 0xa6, 0x26, 0x52, 0x83, 0x7b, 0x18, 0xd1, + 0x88, 0xa1, 0xbb, 0xdb, 0xf7, 0xf0, 0xe1, 0x43, 0xd0, 0xe9, 0xf5, 0x3e, 0x91, 0x48, 0xe4, 0x24, + 0xdd, 0x46, 0x60, 0xc5, 0xc5, 0xc5, 0x9e, 0x82, 0x62, 0xde, 0x63, 0x79, 0x43, 0x1b, 0x08, 0x15, + 0x8d, 0xc0, 0x11, 0x48, 0x46, 0xb7, 0x6e, 0xdb, 0x59, 0x43, 0xa4, 0x6d, 0x02, 0x08, 0x77, 0xc9, + 0x25, 0x20, 0x12, 0x0d, 0xa9, 0x13, 0x16, 0xda, 0x2d, 0x57, 0xd4, 0x7a, 0x5d, 0x2e, 0x17, 0xa8, + 0x1a, 0xd4, 0x5e, 0x89, 0x4c, 0x3a, 0x6a, 0x30, 0x18, 0x7c, 0xd8, 0x9d, 0x80, 0xa3, 0x00, 0xd8, + 0x24, 0x40, 0x2f, 0x2c, 0x1c, 0xc1, 0x56, 0xb6, 0x63, 0xfa, 0x5c, 0x57, 0x59, 0xbc, 0x47, 0x72, + 0x55, 0x13, 0xf0, 0x85, 0xb2, 0xa7, 0x4c, 0x36, 0xff, 0x51, 0xc6, 0x3f, 0x29, 0x9e, 0x25, 0x4b, + 0x96, 0x14, 0x20, 0x68, 0xee, 0x04, 0x50, 0x7f, 0x7f, 0x3f, 0x37, 0x31, 0x31, 0xd1, 0xd8, 0xd5, + 0xd5, 0x65, 0x27, 0x51, 0xe9, 0x74, 0x3a, 0x3b, 0xa6, 0xe9, 0xbb, 0x81, 0x81, 0x01, 0xb8, 0x7f, + 0xff, 0x3e, 0x0c, 0x0e, 0x0e, 0x3e, 0x33, 0xb5, 0xba, 0x01, 0x2a, 0x85, 0x55, 0xd0, 0x6b, 0x34, + 0xfa, 0x72, 0xa9, 0xd4, 0x61, 0x26, 0x8b, 0x3f, 0x52, 0xaf, 0x69, 0xf1, 0x55, 0x8a, 0xeb, 0x9e, + 0x8a, 0xc4, 0xd2, 0x7b, 0xa5, 0xa5, 0xa5, 0x36, 0x7c, 0x97, 0xee, 0x7b, 0xd0, 0xab, 0x93, 0x40, + 0xa8, 0x0c, 0xbd, 0xa4, 0xf0, 0x28, 0x75, 0xfd, 0x24, 0xaa, 0xdb, 0xb7, 0x6f, 0x5b, 0x4b, 0xb8, + 0xdc, 0xef, 0x9a, 0x5b, 0x5b, 0xbc, 0x36, 0xbb, 0x1d, 0xd4, 0x0d, 0x0d, 0x5e, 0x09, 0xb6, 0xb8, + 0x4e, 0x67, 0x00, 0x8d, 0xb6, 0x09, 0xaa, 0x6b, 0x14, 0x20, 0x14, 0xd7, 0x01, 0x81, 0x54, 0xc9, + 0x54, 0x4f, 0xaf, 0x16, 0xb1, 0xbf, 0x21, 0x29, 0x24, 0x32, 0x76, 0xec, 0xd8, 0xb1, 0xae, 0xc5, + 0x8b, 0x17, 0x13, 0x90, 0xff, 0x24, 0x50, 0x42, 0x42, 0x82, 0x91, 0xa4, 0xae, 0xa5, 0xa5, 0xc5, + 0x86, 0x43, 0xe7, 0xc6, 0xb4, 0x78, 0xc8, 0xff, 0x1d, 0x1d, 0x1d, 0xf6, 0xf2, 0x8a, 0x8a, 0xaf, + 0x33, 0x2f, 0x64, 0x7e, 0xfd, 0xee, 0xa6, 0x4d, 0x43, 0x35, 0x52, 0xe9, 0xd3, 0xe6, 0x96, 0x76, + 0xe0, 0x0a, 0xc4, 0x04, 0x02, 0x12, 0x85, 0x06, 0x2e, 0x53, 0x69, 0xc3, 0x64, 0x50, 0x49, 0xcd, + 0xb0, 0x79, 0xec, 0x04, 0x14, 0x10, 0x10, 0x40, 0x44, 0xd5, 0x6f, 0x02, 0x68, 0x68, 0x68, 0x88, + 0x83, 0xb2, 0xd2, 0x93, 0x92, 0x92, 0x62, 0x44, 0xdd, 0x72, 0x90, 0x21, 0x45, 0xd0, 0xd8, 0x9c, + 0x8c, 0xeb, 0x5f, 0x6e, 0x6e, 0x6e, 0xff, 0x6f, 0xfe, 0xb0, 0x65, 0x64, 0xcf, 0xa7, 0xd7, 0x1e, + 0xa5, 0x65, 0x73, 0x7c, 0x4a, 0x6d, 0x2b, 0x42, 0xb4, 0xc0, 0xaf, 0xac, 0x83, 0x4e, 0x5d, 0x97, + 0x37, 0xfb, 0xd2, 0xa5, 0x41, 0x54, 0x6e, 0xcb, 0xbe, 0x7d, 0xfb, 0x4c, 0x28, 0xc8, 0x37, 0xbf, + 0x07, 0xfd, 0xff, 0x98, 0x40, 0xdd, 0x7a, 0x3f, 0x2a, 0x2a, 0x8a, 0x89, 0xc5, 0x67, 0x3d, 0x79, + 0xf2, 0x84, 0x85, 0x6d, 0x2d, 0xa0, 0x52, 0xa9, 0x1a, 0x74, 0x36, 0xe2, 0xa4, 0xdb, 0x50, 0x56, + 0xdc, 0x38, 0x4b, 0x1e, 0xac, 0x99, 0x2d, 0xfa, 0x18, 0x75, 0x78, 0xdf, 0x79, 0xa1, 0x8f, 0x5a, + 0xd1, 0x0d, 0x7b, 0x32, 0x84, 0x90, 0x7a, 0x59, 0x00, 0x22, 0xb1, 0x1a, 0x1a, 0xb4, 0x3a, 0xa8, + 0xad, 0xeb, 0x04, 0x6d, 0x63, 0xe3, 0x68, 0xf2, 0xc9, 0x93, 0x1d, 0x28, 0x3f, 0xec, 0xc8, 0xc8, + 0x48, 0xda, 0x8c, 0x19, 0x33, 0x18, 0x08, 0x9a, 0x31, 0xae, 0xc4, 0x7e, 0xd3, 0xa6, 0x4d, 0x0b, + 0x5f, 0xb4, 0x68, 0x51, 0x1a, 0x42, 0x0b, 0x37, 0x6e, 0xdc, 0x48, 0x43, 0x79, 0xb9, 0xd6, 0xd8, + 0xd8, 0x58, 0x92, 0x95, 0x95, 0xd5, 0x14, 0x1f, 0x1f, 0x6f, 0xc2, 0xe8, 0x1c, 0xfb, 0x53, 0x0a, + 0x86, 0xe3, 0x3e, 0x57, 0xf8, 0xf6, 0x5c, 0x50, 0xc2, 0xae, 0xf4, 0x6a, 0xf8, 0xcb, 0xa7, 0x22, + 0x88, 0x4c, 0x64, 0x8c, 0x8a, 0xaa, 0xaa, 0x46, 0x95, 0xea, 0x2e, 0xa8, 0x57, 0x75, 0x81, 0x4c, + 0x81, 0x40, 0x85, 0xe2, 0x41, 0x44, 0x44, 0x44, 0x12, 0xbe, 0xf7, 0x6d, 0xb4, 0xd7, 0x9e, 0x9d, + 0xb0, 0x3f, 0x38, 0x63, 0x5e, 0x41, 0x0b, 0x46, 0xe0, 0x07, 0x0b, 0x17, 0x2e, 0xa4, 0xa0, 0x88, + 0x16, 0xe0, 0xd9, 0x24, 0xde, 0xf2, 0x51, 0xfa, 0x37, 0x87, 0x2f, 0x2b, 0xbd, 0x04, 0x92, 0x90, + 0x23, 0x83, 0x4d, 0xff, 0xb8, 0x02, 0x91, 0x27, 0x05, 0x10, 0xb2, 0xe3, 0xf4, 0x83, 0xf5, 0xeb, + 0xd7, 0xab, 0x51, 0x2d, 0xbe, 0x95, 0x2b, 0x3a, 0x41, 0xae, 0xe8, 0x42, 0xeb, 0x06, 0xa9, 0x5c, + 0xee, 0x3e, 0x75, 0xe6, 0xd4, 0xfa, 0x09, 0x47, 0xf9, 0x54, 0xe6, 0xff, 0xc6, 0x86, 0x75, 0xbf, + 0xdb, 0x75, 0xde, 0x18, 0x43, 0x91, 0x8f, 0xfe, 0xab, 0xa4, 0x13, 0x3e, 0x63, 0xa8, 0x21, 0xec, + 0xe3, 0x1c, 0xd8, 0x8e, 0x90, 0xdf, 0xee, 0x3c, 0x3f, 0xf2, 0x5a, 0xc0, 0x32, 0x72, 0x02, 0xcf, + 0x4f, 0x4b, 0x4b, 0xdb, 0x2a, 0x95, 0xc9, 0xfa, 0xc5, 0xd2, 0x4e, 0xa8, 0x91, 0xe9, 0x30, 0xb2, + 0x6e, 0x6c, 0x7f, 0xa1, 0x1d, 0x95, 0xe6, 0xad, 0x9f, 0x04, 0xad, 0xde, 0x9d, 0xbb, 0xe3, 0xbd, + 0x84, 0xeb, 0xd6, 0xb3, 0xac, 0x4e, 0x10, 0x68, 0xac, 0x70, 0x96, 0xd9, 0x08, 0x7f, 0xda, 0x9b, + 0x0d, 0xdb, 0x4e, 0x08, 0xe0, 0x9d, 0xf7, 0xb3, 0x1e, 0xf8, 0x05, 0xae, 0x0b, 0x79, 0xde, 0xff, + 0xf4, 0x99, 0x33, 0x91, 0x12, 0xa9, 0x74, 0x40, 0x24, 0x6e, 0x07, 0x41, 0xe5, 0x2d, 0xc0, 0x79, + 0x04, 0x9c, 0xc3, 0x9e, 0x8c, 0x8c, 0x8c, 0x69, 0x53, 0x82, 0xc2, 0x3e, 0x61, 0x68, 0x18, 0xd2, + 0x3e, 0xa8, 0xef, 0xf2, 0xc0, 0x27, 0x94, 0x7a, 0x78, 0x77, 0x7f, 0x2e, 0x6c, 0x4d, 0x2e, 0x83, + 0xd0, 0x8f, 0xf3, 0x9d, 0x41, 0xdb, 0x29, 0x81, 0x3f, 0xb6, 0xe6, 0x74, 0x7a, 0xea, 0x6e, 0xb1, + 0x44, 0x32, 0x80, 0x02, 0x0c, 0x38, 0x4b, 0x63, 0xc2, 0x9b, 0x7c, 0x32, 0xf9, 0xc3, 0x29, 0x41, + 0x7f, 0xdc, 0x4f, 0x67, 0x27, 0xd1, 0x9a, 0x60, 0xd7, 0x59, 0x09, 0x6c, 0x8e, 0xa1, 0xc3, 0xe6, + 0xf8, 0x52, 0xd8, 0x72, 0x94, 0xd7, 0x1f, 0xb4, 0x23, 0x7b, 0xf5, 0x54, 0xeb, 0x52, 0xd3, 0x53, + 0x3f, 0x14, 0x54, 0x94, 0x7f, 0x85, 0x87, 0x21, 0xb0, 0x39, 0x9c, 0xaf, 0x0e, 0x1f, 0x3e, 0xfc, + 0xfa, 0x94, 0xa0, 0x95, 0x3b, 0x3e, 0x0f, 0x8e, 0x38, 0x5e, 0xe2, 0xd8, 0x8d, 0x1d, 0xb6, 0x29, + 0xee, 0x3a, 0x6c, 0x4b, 0x11, 0xfb, 0x56, 0xff, 0xed, 0x0b, 0xda, 0x8b, 0xfc, 0xf4, 0xc2, 0x4e, + 0xfd, 0x35, 0xa6, 0xf2, 0xb3, 0xd8, 0xc4, 0xd8, 0x55, 0x2f, 0xd4, 0x0c, 0x6f, 0xed, 0xbc, 0xb4, + 0x79, 0xdd, 0x9e, 0x2f, 0x55, 0x7f, 0x8e, 0x2f, 0x71, 0xfc, 0xfe, 0xa3, 0x02, 0xe9, 0x9b, 0x11, + 0x17, 0xa6, 0xff, 0x92, 0x1f, 0x95, 0xff, 0x03, 0x8b, 0xa9, 0x94, 0x7e, 0x43, 0x32, 0xbc, 0xfa, + 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, +}; + +const BITMAP_OPAQUE library_table_xpm[1] = {{ png, sizeof( png ), "library_table_xpm" }}; + +//EOF diff --git a/bitmaps_png/sources/library_table.svg b/bitmaps_png/sources/library_table.svg new file mode 100644 index 0000000000..8c73df217f --- /dev/null +++ b/bitmaps_png/sources/library_table.svg @@ -0,0 +1,956 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/include/bitmaps.h b/include/bitmaps.h index 670621c042..07946e02c0 100644 --- a/include/bitmaps.h +++ b/include/bitmaps.h @@ -260,6 +260,7 @@ EXTERN_BITMAP( lib_previous_xpm ) EXTERN_BITMAP( library_browse_xpm ) EXTERN_BITMAP( library_update_xpm ) EXTERN_BITMAP( library_xpm ) +EXTERN_BITMAP( library_table_xpm ) EXTERN_BITMAP( libview_xpm ) EXTERN_BITMAP( lines90_xpm ) EXTERN_BITMAP( load_module_board_xpm ) diff --git a/pcbnew/class_module.cpp b/pcbnew/class_module.cpp index 4ac987651c..1567d859e0 100644 --- a/pcbnew/class_module.cpp +++ b/pcbnew/class_module.cpp @@ -139,7 +139,7 @@ MODULE::MODULE( const MODULE& aModule ) : break; default: - wxMessageBox( wxT( "MODULE::Copy() Internal Err: unknown type" ) ); + wxLogMessage( wxT( "MODULE::Copy() Internal Err: unknown type" ) ); break; } } @@ -262,7 +262,7 @@ void MODULE::Copy( MODULE* aModule ) break; default: - wxMessageBox( wxT( "MODULE::Copy() Internal Err: unknown type" ) ); + wxLogMessage( wxT( "MODULE::Copy() Internal Err: unknown type" ) ); break; } } @@ -698,6 +698,41 @@ EDA_ITEM* MODULE::Clone() const return new MODULE( *this ); } +/* Test for validity of the name in a library of the footprint + * ( no spaces, dir separators ... ) + * return true if the given name is valid + * static function + */ +bool MODULE::IsLibNameValid( const wxString & aName ) +{ + const wxChar * invalids = ReturnStringLibNameInvalidChars( false ); + + if( aName.find_first_of( invalids ) != std::string::npos ) + return false; + + return true; +} + + + +/* Test for validity of the name of a footprint to be used in a footprint library + * ( no spaces, dir separators ... ) + * param bool aUserReadable = false to get the list of invalid chars + * true to get a readable form (i.e ' ' = 'space' '\t'= 'tab') + * return a constant string giving the list of invalid chars in lib name + * static function + */ +const wxChar* MODULE::ReturnStringLibNameInvalidChars( bool aUserReadable ) +{ + static const wxChar invalidChars[] = wxT("\t \"\\/"); + static const wxChar invalidCharsReadable[] = wxT("'tab' 'space' \\ \" /"); + + if( aUserReadable ) + return invalidCharsReadable; + else + return invalidChars; +} + #if defined(DEBUG) diff --git a/pcbnew/class_module.h b/pcbnew/class_module.h index f02866e32c..df73dac5b8 100644 --- a/pcbnew/class_module.h +++ b/pcbnew/class_module.h @@ -361,6 +361,25 @@ public: EDA_ITEM* Clone() const; + /** + * static function IsLibNameValid + * Test for validity of a name of a footprint to be used in a footprint library + * ( no spaces, dir separators ... ) + * @param aName = the name in library to validate + * @return true if the given name is valid + */ + static bool IsLibNameValid( const wxString & aName ); + + /** + * static function ReturnStringLibNameInvalidChars + * Test for validity of the name in a library of the footprint + * ( no spaces, dir separators ... ) + * @param bool aUserReadable = false to get the list of invalid chars + * true to get a readable form (i.e ' ' = 'space' '\t'= 'tab') + * @return a constant std::string giving the list of invalid chars in lib name + */ + static const wxChar* ReturnStringLibNameInvalidChars( bool aUserReadable ); + #if defined(DEBUG) void Show( int nestLevel, std::ostream& os ) const; // overload #endif diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp b/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp index 87a4f1a4d7..3f2cce68fa 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp @@ -7,7 +7,7 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2011 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr + * Copyright (C) 2012 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2012 Dick Hollenbeck, dick@softplc.com * Copyright (C) 2004-2011 KiCad Developers, see change_log.txt for contributors. * @@ -52,15 +52,15 @@ DIALOG_MODULE_MODULE_EDITOR::DIALOG_MODULE_MODULE_EDITOR( FOOTPRINT_EDIT_FRAME* MODULE* aModule ) : DIALOG_MODULE_MODULE_EDITOR_BASE( aParent ) { - m_Parent = aParent; - m_CurrentModule = aModule; + m_parent = aParent; + m_currentModule = aModule; // Give an icon wxIcon icon; icon.CopyFromBitmap( KiBitmap( icon_modedit_xpm ) ); SetIcon( icon ); - InitModeditProperties(); + initModeditProperties(); m_sdbSizerStdButtonsOK->SetDefault(); GetSizer()->Fit( this ); GetSizer()->SetSizeHints( this ); @@ -70,13 +70,13 @@ DIALOG_MODULE_MODULE_EDITOR::DIALOG_MODULE_MODULE_EDITOR( FOOTPRINT_EDIT_FRAME* DIALOG_MODULE_MODULE_EDITOR::~DIALOG_MODULE_MODULE_EDITOR() { - for( unsigned ii = 0; ii < m_Shapes3D_list.size(); ii++ ) - delete m_Shapes3D_list[ii]; + for( unsigned ii = 0; ii < m_shapes3D_list.size(); ii++ ) + delete m_shapes3D_list[ii]; - m_Shapes3D_list.clear(); + m_shapes3D_list.clear(); - delete m_ReferenceCopy; - delete m_ValueCopy; + delete m_referenceCopy; + delete m_valueCopy; delete m_3D_Scale; delete m_3D_Offset; delete m_3D_Rotation; @@ -84,15 +84,15 @@ DIALOG_MODULE_MODULE_EDITOR::~DIALOG_MODULE_MODULE_EDITOR() /********************************************************/ -void DIALOG_MODULE_MODULE_EDITOR::InitModeditProperties() +void DIALOG_MODULE_MODULE_EDITOR::initModeditProperties() /********************************************************/ { SetFocus(); - m_LastSelected3DShapeIndex = -1; + m_lastSelected3DShapeIndex = -1; // Init 3D shape list - S3D_MASTER* draw3D = m_CurrentModule->m_3D_Drawings; + S3D_MASTER* draw3D = m_currentModule->m_3D_Drawings; while( draw3D ) { @@ -100,22 +100,22 @@ void DIALOG_MODULE_MODULE_EDITOR::InitModeditProperties() { S3D_MASTER* draw3DCopy = new S3D_MASTER(NULL); draw3DCopy->Copy( draw3D ); - m_Shapes3D_list.push_back( draw3DCopy ); + m_shapes3D_list.push_back( draw3DCopy ); m_3D_ShapeNameListBox->Append(draw3DCopy->m_Shape3DName); } draw3D = (S3D_MASTER*) draw3D->Next(); } - m_DocCtrl->SetValue( m_CurrentModule->m_Doc ); - m_KeywordCtrl->SetValue( m_CurrentModule->m_KeyWord); - m_ReferenceCopy = new TEXTE_MODULE(NULL); - m_ValueCopy = new TEXTE_MODULE(NULL); - m_ReferenceCopy->Copy(m_CurrentModule->m_Reference); - m_ValueCopy->Copy(m_CurrentModule->m_Value); - m_ReferenceCtrl->SetValue( m_ReferenceCopy->m_Text ); - m_ValueCtrl->SetValue( m_ValueCopy->m_Text ); - m_ValueCtrl->SetValue( m_ValueCopy->m_Text ); - m_FootprintNameCtrl->SetValue( m_CurrentModule->m_LibRef ); + m_DocCtrl->SetValue( m_currentModule->m_Doc ); + m_KeywordCtrl->SetValue( m_currentModule->m_KeyWord); + m_referenceCopy = new TEXTE_MODULE(NULL); + m_valueCopy = new TEXTE_MODULE(NULL); + m_referenceCopy->Copy(m_currentModule->m_Reference); + m_valueCopy->Copy(m_currentModule->m_Value); + m_ReferenceCtrl->SetValue( m_referenceCopy->m_Text ); + m_ValueCtrl->SetValue( m_valueCopy->m_Text ); + m_ValueCtrl->SetValue( m_valueCopy->m_Text ); + m_FootprintNameCtrl->SetValue( m_currentModule->m_LibRef ); m_AttributsCtrl->SetItemToolTip( 0, _( "Use this attribute for most non smd components" ) ); m_AttributsCtrl->SetItemToolTip( 1, @@ -126,7 +126,7 @@ void DIALOG_MODULE_MODULE_EDITOR::InitModeditProperties() "Use this attribute for \"virtual\" components drawn on board (like a old ISA PC bus connector)" ) ); // Controls on right side of the dialog - switch( m_CurrentModule->m_Attributs & 255 ) + switch( m_currentModule->m_Attributs & 255 ) { case 0: m_AttributsCtrl->SetSelection( 0 ); @@ -146,13 +146,13 @@ void DIALOG_MODULE_MODULE_EDITOR::InitModeditProperties() } m_AutoPlaceCtrl->SetSelection( - (m_CurrentModule->m_ModuleStatus & MODULE_is_LOCKED) ? 1 : 0 ); + (m_currentModule->m_ModuleStatus & MODULE_is_LOCKED) ? 1 : 0 ); m_AutoPlaceCtrl->SetItemToolTip( 0, _( "Enable hotkey move commands and Auto Placement" ) ); m_AutoPlaceCtrl->SetItemToolTip( 1, _( "Disable hotkey move commands and Auto Placement" ) ); - m_CostRot90Ctrl->SetValue( m_CurrentModule->m_CntRot90 ); + m_CostRot90Ctrl->SetValue( m_currentModule->m_CntRot90 ); - m_CostRot180Ctrl->SetValue( m_CurrentModule->m_CntRot180 ); + m_CostRot180Ctrl->SetValue( m_currentModule->m_CntRot180 ); // Initialize 3D parameters @@ -174,28 +174,28 @@ void DIALOG_MODULE_MODULE_EDITOR::InitModeditProperties() m_SolderPasteMarginUnits->SetLabel( GetUnitsLabel( g_UserUnit ) ); wxString msg; - PutValueInLocalUnits( *m_NetClearanceValueCtrl, m_CurrentModule->GetLocalClearance() ); - PutValueInLocalUnits( *m_SolderMaskMarginCtrl, m_CurrentModule->GetLocalSolderMaskMargin() ); + PutValueInLocalUnits( *m_NetClearanceValueCtrl, m_currentModule->GetLocalClearance() ); + PutValueInLocalUnits( *m_SolderMaskMarginCtrl, m_currentModule->GetLocalSolderMaskMargin() ); // These 2 parameters are usually < 0, so prepare entering a negative value, if current is 0 - PutValueInLocalUnits( *m_SolderPasteMarginCtrl, m_CurrentModule->GetLocalSolderPasteMargin() ); + PutValueInLocalUnits( *m_SolderPasteMarginCtrl, m_currentModule->GetLocalSolderPasteMargin() ); - if( m_CurrentModule->GetLocalSolderPasteMargin() == 0 ) + if( m_currentModule->GetLocalSolderPasteMargin() == 0 ) m_SolderPasteMarginCtrl->SetValue( wxT("-") + m_SolderPasteMarginCtrl->GetValue() ); - if( m_CurrentModule->GetLocalSolderPasteMarginRatio() == 0.0 ) - msg.Printf( wxT( "-%.1f" ), m_CurrentModule->GetLocalSolderPasteMarginRatio() * 100.0 ); + if( m_currentModule->GetLocalSolderPasteMarginRatio() == 0.0 ) + msg.Printf( wxT( "-%.1f" ), m_currentModule->GetLocalSolderPasteMarginRatio() * 100.0 ); else - msg.Printf( wxT( "%.1f" ), m_CurrentModule->GetLocalSolderPasteMarginRatio() * 100.0 ); + msg.Printf( wxT( "%.1f" ), m_currentModule->GetLocalSolderPasteMarginRatio() * 100.0 ); m_SolderPasteMarginRatioCtrl->SetValue( msg ); // Add solder paste margin ration in per cent // for the usual default value 0.0, display -0.0 (or -0,0 in some countries) msg.Printf( wxT( "%.1f" ), - m_CurrentModule->GetLocalSolderPasteMarginRatio() * 100.0 ); + m_currentModule->GetLocalSolderPasteMarginRatio() * 100.0 ); - if( m_CurrentModule->GetLocalSolderPasteMarginRatio() == 0.0 && + if( m_currentModule->GetLocalSolderPasteMarginRatio() == 0.0 && msg[0] == '0') // Sometimes Printf adds a sign if the value is very small (0.0) m_SolderPasteMarginRatioCtrl->SetValue( wxT("-") + msg ); else @@ -204,9 +204,9 @@ void DIALOG_MODULE_MODULE_EDITOR::InitModeditProperties() // if m_3D_ShapeNameListBox is not empty, preselect first 3D shape if( m_3D_ShapeNameListBox->GetCount() > 0 ) { - m_LastSelected3DShapeIndex = 0; - m_3D_ShapeNameListBox->SetSelection( m_LastSelected3DShapeIndex ); - Transfert3DValuesToDisplay( m_Shapes3D_list[m_LastSelected3DShapeIndex] ); + m_lastSelected3DShapeIndex = 0; + m_3D_ShapeNameListBox->SetSelection( m_lastSelected3DShapeIndex ); + Transfert3DValuesToDisplay( m_shapes3D_list[m_lastSelected3DShapeIndex] ); } } @@ -231,15 +231,15 @@ void DIALOG_MODULE_MODULE_EDITOR::Transfert3DValuesToDisplay( S3D_MASTER * aStru } } -/** Copy 3D info displayed in dialog box to values in a item in m_Shapes3D_list - * @param aIndexSelection = item index in m_Shapes3D_list +/** Copy 3D info displayed in dialog box to values in a item in m_shapes3D_list + * @param aIndexSelection = item index in m_shapes3D_list */ void DIALOG_MODULE_MODULE_EDITOR::TransfertDisplayTo3DValues( int aIndexSelection ) { - if( aIndexSelection >= (int)m_Shapes3D_list.size() ) + if( aIndexSelection >= (int)m_shapes3D_list.size() ) return; - S3D_MASTER * struct3DDest = m_Shapes3D_list[aIndexSelection]; + S3D_MASTER * struct3DDest = m_shapes3D_list[aIndexSelection]; struct3DDest->m_MatScale = m_3D_Scale->GetValue(); struct3DDest->m_MatRotation = m_3D_Rotation->GetValue(); struct3DDest->m_MatPosition = m_3D_Offset->GetValue(); @@ -249,20 +249,20 @@ void DIALOG_MODULE_MODULE_EDITOR::TransfertDisplayTo3DValues( int aIndexSelectio void DIALOG_MODULE_MODULE_EDITOR::On3DShapeNameSelected(wxCommandEvent& event) /***********************************************************/ { - if( m_LastSelected3DShapeIndex >= 0 ) - TransfertDisplayTo3DValues( m_LastSelected3DShapeIndex ); - m_LastSelected3DShapeIndex = m_3D_ShapeNameListBox->GetSelection(); + if( m_lastSelected3DShapeIndex >= 0 ) + TransfertDisplayTo3DValues( m_lastSelected3DShapeIndex ); + m_lastSelected3DShapeIndex = m_3D_ShapeNameListBox->GetSelection(); - if( m_LastSelected3DShapeIndex < 0 ) // happens under wxGTK when deleting an item in m_3D_ShapeNameListBox wxListBox + if( m_lastSelected3DShapeIndex < 0 ) // happens under wxGTK when deleting an item in m_3D_ShapeNameListBox wxListBox return; - if( m_LastSelected3DShapeIndex >= (int)m_Shapes3D_list.size() ) + if( m_lastSelected3DShapeIndex >= (int)m_shapes3D_list.size() ) { wxMessageBox(wxT("On3DShapeNameSelected() error")); - m_LastSelected3DShapeIndex = -1; + m_lastSelected3DShapeIndex = -1; return; } - Transfert3DValuesToDisplay( m_Shapes3D_list[m_LastSelected3DShapeIndex] ); + Transfert3DValuesToDisplay( m_shapes3D_list[m_lastSelected3DShapeIndex] ); } @@ -270,23 +270,23 @@ void DIALOG_MODULE_MODULE_EDITOR::On3DShapeNameSelected(wxCommandEvent& event) void DIALOG_MODULE_MODULE_EDITOR::Remove3DShape(wxCommandEvent& event) /***********************************************************/ { - if( m_LastSelected3DShapeIndex >= 0 ) - TransfertDisplayTo3DValues( m_LastSelected3DShapeIndex ); + if( m_lastSelected3DShapeIndex >= 0 ) + TransfertDisplayTo3DValues( m_lastSelected3DShapeIndex ); int ii = m_3D_ShapeNameListBox->GetSelection(); if( ii < 0 ) return; - m_Shapes3D_list.erase(m_Shapes3D_list.begin() + ii ); + m_shapes3D_list.erase(m_shapes3D_list.begin() + ii ); m_3D_ShapeNameListBox->Delete(ii); if( m_3D_ShapeNameListBox->GetCount() == 0) Transfert3DValuesToDisplay( NULL ); else { - m_LastSelected3DShapeIndex = 0; - m_3D_ShapeNameListBox->SetSelection(m_LastSelected3DShapeIndex); - Transfert3DValuesToDisplay( m_Shapes3D_list[m_LastSelected3DShapeIndex] ); + m_lastSelected3DShapeIndex = 0; + m_3D_ShapeNameListBox->SetSelection(m_lastSelected3DShapeIndex); + Transfert3DValuesToDisplay( m_shapes3D_list[m_lastSelected3DShapeIndex] ); } } @@ -348,15 +348,15 @@ void DIALOG_MODULE_MODULE_EDITOR::BrowseAndAdd3DLib( wxCommandEvent& event ) #endif new3DShape->m_Shape3DName = shortfilename; - m_Shapes3D_list.push_back( new3DShape ); + m_shapes3D_list.push_back( new3DShape ); m_3D_ShapeNameListBox->Append( shortfilename ); - if( m_LastSelected3DShapeIndex >= 0 ) - TransfertDisplayTo3DValues( m_LastSelected3DShapeIndex ); + if( m_lastSelected3DShapeIndex >= 0 ) + TransfertDisplayTo3DValues( m_lastSelected3DShapeIndex ); - m_LastSelected3DShapeIndex = m_3D_ShapeNameListBox->GetCount() - 1; - m_3D_ShapeNameListBox->SetSelection(m_LastSelected3DShapeIndex); - Transfert3DValuesToDisplay( m_Shapes3D_list[m_LastSelected3DShapeIndex] ); + m_lastSelected3DShapeIndex = m_3D_ShapeNameListBox->GetCount() - 1; + m_3D_ShapeNameListBox->SetSelection(m_lastSelected3DShapeIndex); + Transfert3DValuesToDisplay( m_shapes3D_list[m_lastSelected3DShapeIndex] ); } @@ -368,52 +368,67 @@ void DIALOG_MODULE_MODULE_EDITOR::OnCancelClick( wxCommandEvent& event ) EndModal( -1 ); } - /******************************************************************************/ void DIALOG_MODULE_MODULE_EDITOR::OnOkClick( wxCommandEvent& event ) /******************************************************************************/ { - m_Parent->SaveCopyInUndoList( m_CurrentModule, UR_MODEDIT ); + // First, test for invalid chars in module name + wxString footprintName = m_FootprintNameCtrl->GetValue(); + if( ! footprintName.IsEmpty() ) + { + if( ! MODULE::IsLibNameValid( footprintName ) ) + { + wxString msg; + msg.Printf( _("Error:\none of invalid chars <%s> found\nin <%s>" ), + MODULE::ReturnStringLibNameInvalidChars( true ), + GetChars( footprintName ) ); + + DisplayError( NULL, msg ); + return; + } + } + + m_parent->SaveCopyInUndoList( m_currentModule, UR_MODEDIT ); if( m_AutoPlaceCtrl->GetSelection() == 1 ) - m_CurrentModule->m_ModuleStatus |= MODULE_is_LOCKED; + m_currentModule->m_ModuleStatus |= MODULE_is_LOCKED; else - m_CurrentModule->m_ModuleStatus &= ~MODULE_is_LOCKED; + m_currentModule->m_ModuleStatus &= ~MODULE_is_LOCKED; switch( m_AttributsCtrl->GetSelection() ) { case 0: - m_CurrentModule->m_Attributs = 0; + m_currentModule->m_Attributs = 0; break; case 1: - m_CurrentModule->m_Attributs = MOD_CMS; + m_currentModule->m_Attributs = MOD_CMS; break; case 2: - m_CurrentModule->m_Attributs = MOD_VIRTUAL; + m_currentModule->m_Attributs = MOD_VIRTUAL; break; } - m_CurrentModule->m_CntRot90 = m_CostRot90Ctrl->GetValue(); - m_CurrentModule->m_CntRot180 = m_CostRot180Ctrl->GetValue(); - m_CurrentModule->m_Doc = m_DocCtrl->GetValue(); - m_CurrentModule->m_KeyWord = m_KeywordCtrl->GetValue(); + m_currentModule->m_CntRot90 = m_CostRot90Ctrl->GetValue(); + m_currentModule->m_CntRot180 = m_CostRot180Ctrl->GetValue(); + m_currentModule->m_Doc = m_DocCtrl->GetValue(); + m_currentModule->m_KeyWord = m_KeywordCtrl->GetValue(); // Init footprint name in library - if( ! m_FootprintNameCtrl->GetValue( ).IsEmpty() ) - m_CurrentModule->m_LibRef = m_FootprintNameCtrl->GetValue( ); + if( ! footprintName.IsEmpty() ) + m_currentModule->m_LibRef = footprintName; // Init Fields: - m_CurrentModule->m_Reference->Copy(m_ReferenceCopy ); - m_CurrentModule->m_Value->Copy(m_ValueCopy ); + m_currentModule->m_Reference->Copy(m_referenceCopy ); + m_currentModule->m_Value->Copy(m_valueCopy ); // Initialize masks clearances - m_CurrentModule->SetLocalClearance( ReturnValueFromTextCtrl( *m_NetClearanceValueCtrl ) ); + m_currentModule->SetLocalClearance( ReturnValueFromTextCtrl( *m_NetClearanceValueCtrl ) ); - m_CurrentModule->SetLocalSolderMaskMargin( ReturnValueFromTextCtrl( *m_SolderMaskMarginCtrl ) ); + m_currentModule->SetLocalSolderMaskMargin( ReturnValueFromTextCtrl( *m_SolderMaskMarginCtrl ) ); - m_CurrentModule->SetLocalSolderPasteMargin( ReturnValueFromTextCtrl( *m_SolderPasteMarginCtrl ) ); + m_currentModule->SetLocalSolderPasteMargin( ReturnValueFromTextCtrl( *m_SolderPasteMarginCtrl ) ); double dtmp; wxString msg = m_SolderPasteMarginRatioCtrl->GetValue(); msg.ToDouble( &dtmp ); @@ -425,22 +440,22 @@ void DIALOG_MODULE_MODULE_EDITOR::OnOkClick( wxCommandEvent& event ) if( dtmp > 0.0 ) dtmp = 0.0; - m_CurrentModule->SetLocalSolderPasteMarginRatio( dtmp / 100 ); + m_currentModule->SetLocalSolderPasteMarginRatio( dtmp / 100 ); // Update 3D shape list int ii = m_3D_ShapeNameListBox->GetSelection(); if ( ii >= 0 ) TransfertDisplayTo3DValues( ii ); - S3D_MASTER* draw3D = m_CurrentModule->m_3D_Drawings; - for( unsigned ii = 0; ii < m_Shapes3D_list.size(); ii++ ) + S3D_MASTER* draw3D = m_currentModule->m_3D_Drawings; + for( unsigned ii = 0; ii < m_shapes3D_list.size(); ii++ ) { - S3D_MASTER* draw3DCopy = m_Shapes3D_list[ii]; + S3D_MASTER* draw3DCopy = m_shapes3D_list[ii]; if( draw3DCopy->m_Shape3DName.IsEmpty() ) continue; if( draw3D == NULL ) { draw3D = new S3D_MASTER( draw3D ); - m_CurrentModule->m_3D_Drawings.Append( draw3D ); + m_currentModule->m_3D_Drawings.Append( draw3D ); } draw3D->m_Shape3DName = draw3DCopy->m_Shape3DName; @@ -456,17 +471,17 @@ void DIALOG_MODULE_MODULE_EDITOR::OnOkClick( wxCommandEvent& event ) for( ; draw3D != NULL; draw3D = nextdraw3D ) { nextdraw3D = (S3D_MASTER*) draw3D->Next(); - delete m_CurrentModule->m_3D_Drawings.Remove( draw3D ); + delete m_currentModule->m_3D_Drawings.Remove( draw3D ); } // Fill shape list with one void entry, if no entry - if( m_CurrentModule->m_3D_Drawings == NULL ) - m_CurrentModule->m_3D_Drawings.PushBack( new S3D_MASTER( m_CurrentModule ) ); + if( m_currentModule->m_3D_Drawings == NULL ) + m_currentModule->m_3D_Drawings.PushBack( new S3D_MASTER( m_currentModule ) ); - m_CurrentModule->CalculateBoundingBox(); + m_currentModule->CalculateBoundingBox(); - m_Parent->OnModify(); + m_parent->OnModify(); EndModal( 1 ); } @@ -476,21 +491,21 @@ void DIALOG_MODULE_MODULE_EDITOR::OnOkClick( wxCommandEvent& event ) void DIALOG_MODULE_MODULE_EDITOR::OnEditReference(wxCommandEvent& event) /***********************************************************************/ { - wxPoint tmp = m_Parent->GetScreen()->GetCrossHairPosition(); - m_Parent->GetScreen()->SetCrossHairPosition( m_ReferenceCopy->m_Pos ); - m_Parent->InstallTextModOptionsFrame( m_ReferenceCopy, NULL ); - m_Parent->GetScreen()->SetCrossHairPosition( tmp ); - m_ReferenceCtrl->SetValue(m_ReferenceCopy->m_Text); + wxPoint tmp = m_parent->GetScreen()->GetCrossHairPosition(); + m_parent->GetScreen()->SetCrossHairPosition( m_referenceCopy->m_Pos ); + m_parent->InstallTextModOptionsFrame( m_referenceCopy, NULL ); + m_parent->GetScreen()->SetCrossHairPosition( tmp ); + m_ReferenceCtrl->SetValue(m_referenceCopy->m_Text); } /***********************************************************/ void DIALOG_MODULE_MODULE_EDITOR::OnEditValue(wxCommandEvent& event) /***********************************************************/ { - wxPoint tmp = m_Parent->GetScreen()->GetCrossHairPosition(); - m_Parent->GetScreen()->SetCrossHairPosition( m_ValueCopy->m_Pos ); - m_Parent->InstallTextModOptionsFrame( m_ValueCopy, NULL ); - m_Parent->GetScreen()->SetCrossHairPosition( tmp); - m_ValueCtrl->SetValue(m_ValueCopy->m_Text); + wxPoint tmp = m_parent->GetScreen()->GetCrossHairPosition(); + m_parent->GetScreen()->SetCrossHairPosition( m_valueCopy->m_Pos ); + m_parent->InstallTextModOptionsFrame( m_valueCopy, NULL ); + m_parent->GetScreen()->SetCrossHairPosition( tmp); + m_ValueCtrl->SetValue(m_valueCopy->m_Text); } diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit.h b/pcbnew/dialogs/dialog_edit_module_for_Modedit.h index 3a514b95d7..6a7bbb8963 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit.h +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit.h @@ -17,12 +17,12 @@ class DIALOG_MODULE_MODULE_EDITOR : public DIALOG_MODULE_MODULE_EDITOR_BASE { private: - FOOTPRINT_EDIT_FRAME* m_Parent; - MODULE* m_CurrentModule; - TEXTE_MODULE* m_ReferenceCopy; - TEXTE_MODULE* m_ValueCopy; - std::vector m_Shapes3D_list; - int m_LastSelected3DShapeIndex; + FOOTPRINT_EDIT_FRAME* m_parent; + MODULE* m_currentModule; + TEXTE_MODULE* m_referenceCopy; + TEXTE_MODULE* m_valueCopy; + std::vector m_shapes3D_list; + int m_lastSelected3DShapeIndex; VERTEX_VALUE_CTRL * m_3D_Scale; VERTEX_VALUE_CTRL * m_3D_Offset; VERTEX_VALUE_CTRL * m_3D_Rotation; @@ -34,7 +34,7 @@ public: ~DIALOG_MODULE_MODULE_EDITOR(); private: - void InitModeditProperties(); + void initModeditProperties(); void Transfert3DValuesToDisplay( S3D_MASTER * aStruct3DSource ); void TransfertDisplayTo3DValues( int aIndexSelection ); void OnEditValue( wxCommandEvent& event ); diff --git a/pcbnew/librairi.cpp b/pcbnew/librairi.cpp index cd608fc11b..371dae7562 100644 --- a/pcbnew/librairi.cpp +++ b/pcbnew/librairi.cpp @@ -566,6 +566,17 @@ bool PCB_BASE_FRAME::Save_Module_In_Library( const wxString& aLibPath, if( footprintName.IsEmpty() ) return false; + if( ! MODULE::IsLibNameValid( footprintName ) ) + { + wxString msg; + msg.Printf( _("Error:\none of invalid chars <%s> found\nin <%s>" ), + MODULE::ReturnStringLibNameInvalidChars( true ), + GetChars( footprintName ) ); + + DisplayError( NULL, msg ); + return false; + } + aModule->SetLibRef( footprintName ); } diff --git a/pcbnew/menubar_pcbframe.cpp b/pcbnew/menubar_pcbframe.cpp index 9b1c6c57e6..f3c36b6b88 100644 --- a/pcbnew/menubar_pcbframe.cpp +++ b/pcbnew/menubar_pcbframe.cpp @@ -428,7 +428,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() AddMenuItem( configmenu, ID_PCB_LIB_TABLE_EDIT, _( "Li&brary Tables" ), _( "Setup footprint libraries" ), - KiBitmap( library_xpm ) ); + KiBitmap( library_table_xpm ) ); // Colors and Visibility are also handled by the layers manager toolbar AddMenuItem( configmenu, ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG,