Commit 1a748e6b authored by jean-pierre charras's avatar jean-pierre charras

Eeschema: Fix Bug #1404118 (Schematic Editor Option Seg Fault in Template Field Names)

parents 6deb3823 43013cec
......@@ -8,56 +8,55 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x03, 0x07, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x95, 0x5d, 0x48, 0x53,
0x61, 0x18, 0xc7, 0x9f, 0xb5, 0x1d, 0x3f, 0xe6, 0x4a, 0x66, 0xb0, 0x66, 0xa4, 0xcb, 0xbc, 0x68,
0x05, 0xae, 0xd2, 0x44, 0xa6, 0x4e, 0x96, 0x0c, 0x6a, 0xce, 0xd6, 0x3e, 0x5d, 0xdb, 0xdc, 0x9c,
0x9a, 0x4b, 0x23, 0xfa, 0xa0, 0x30, 0x8a, 0x3e, 0x84, 0x8a, 0x88, 0x02, 0xbb, 0xe8, 0x26, 0x88,
0xd0, 0x8b, 0x22, 0x02, 0xa3, 0x8b, 0x02, 0x6f, 0x84, 0x6e, 0xa3, 0x14, 0xea, 0x2e, 0x84, 0xb0,
0x8b, 0xa0, 0xbc, 0xd2, 0x20, 0xa2, 0x4c, 0x4f, 0xff, 0xe7, 0x74, 0x66, 0x4b, 0x2c, 0x3c, 0xc7,
0xd1, 0x19, 0x3f, 0xce, 0x7b, 0x9e, 0x1d, 0x9e, 0x1f, 0xcf, 0xfb, 0x3e, 0xef, 0x7b, 0x48, 0x14,
0x45, 0xfa, 0x1f, 0x2c, 0x1b, 0x3c, 0x92, 0x22, 0x73, 0x5f, 0x8a, 0x46, 0x33, 0xa4, 0x93, 0xd4,
0x48, 0x44, 0x9a, 0x9c, 0x8b, 0x7a, 0x3b, 0xe8, 0x54, 0x5f, 0x07, 0x89, 0xe0, 0x3b, 0xdf, 0xbb,
0xa2, 0xf4, 0x18, 0xa2, 0x72, 0x50, 0x90, 0x6b, 0xd1, 0x1b, 0x16, 0x24, 0x43, 0x34, 0xc4, 0xf7,
0xc3, 0x09, 0xfa, 0x56, 0x54, 0x44, 0xfd, 0x10, 0xed, 0x06, 0x6b, 0x72, 0x22, 0xea, 0x4d, 0xd2,
0x2e, 0xb9, 0x1a, 0xb1, 0x6c, 0x23, 0x75, 0x1e, 0x8a, 0xd1, 0x0c, 0x8f, 0x1d, 0x75, 0xf4, 0x10,
0x92, 0x38, 0x10, 0x72, 0x23, 0x4a, 0xd1, 0x2d, 0x49, 0x94, 0xa4, 0x59, 0x57, 0x13, 0x8d, 0xa4,
0x22, 0xf4, 0x81, 0x9f, 0xdb, 0x43, 0x34, 0x09, 0xc9, 0x09, 0x50, 0xaa, 0x66, 0xbd, 0xfe, 0x78,
0x48, 0xa7, 0x49, 0x40, 0xd2, 0xe9, 0x4c, 0x45, 0x4b, 0x58, 0x28, 0xdd, 0x40, 0x57, 0x20, 0x71,
0x02, 0xed, 0xaa, 0x44, 0x48, 0xe6, 0x95, 0xab, 0x79, 0x87, 0x64, 0x51, 0x70, 0x1a, 0x9c, 0x8c,
0xf8, 0x68, 0x9c, 0xe3, 0xfb, 0xf6, 0xd0, 0x28, 0x9e, 0x7b, 0x40, 0xfe, 0xea, 0x44, 0x49, 0x1a,
0xe1, 0x84, 0xdd, 0x51, 0x1a, 0x42, 0xb2, 0xe3, 0xe0, 0x28, 0xb0, 0x1f, 0xd8, 0x4b, 0x57, 0xe5,
0xf8, 0x34, 0x8b, 0x41, 0xa5, 0xd2, 0xe9, 0xfb, 0xbd, 0x77, 0xc2, 0x64, 0x40, 0xb2, 0xb7, 0x90,
0x4d, 0x35, 0x37, 0xd2, 0x19, 0x39, 0xe1, 0x7e, 0x5e, 0xfc, 0xce, 0x83, 0x54, 0x86, 0x26, 0x79,
0xdf, 0x13, 0xa7, 0x8f, 0x95, 0x15, 0x74, 0x03, 0x31, 0x8f, 0xd2, 0xe9, 0xe3, 0x4b, 0xc3, 0xfb,
0x23, 0x8b, 0x42, 0xd0, 0x09, 0x8e, 0x81, 0x1d, 0x99, 0x76, 0x96, 0xdf, 0xdb, 0x22, 0xc7, 0xfb,
0x40, 0x91, 0x52, 0xd1, 0x76, 0x20, 0x66, 0xf1, 0x04, 0x6c, 0x03, 0x56, 0xb9, 0xc3, 0xba, 0xb3,
0x5e, 0x16, 0xc0, 0x56, 0xf9, 0x3f, 0x83, 0x52, 0x51, 0x1e, 0xf8, 0x41, 0xb7, 0x21, 0xb9, 0x0f,
0x4a, 0x68, 0x46, 0x5e, 0xf0, 0x32, 0x60, 0x02, 0x0b, 0x80, 0xa7, 0x32, 0x2f, 0xab, 0x32, 0x75,
0xed, 0x8d, 0x6b, 0x92, 0x2e, 0x41, 0x32, 0x06, 0x12, 0x52, 0x55, 0xe3, 0xa0, 0x0e, 0x6c, 0xa2,
0x2a, 0x3c, 0xeb, 0x25, 0xd9, 0x5d, 0x35, 0xdd, 0xb6, 0x54, 0xd4, 0x4f, 0x7e, 0x59, 0xc4, 0x9c,
0x03, 0x1e, 0x9a, 0xa5, 0x9d, 0xf4, 0x5c, 0x12, 0xdf, 0x01, 0xeb, 0x25, 0xd9, 0x3d, 0xb5, 0xe7,
0x5d, 0x46, 0xa4, 0xc3, 0xec, 0xbf, 0x5e, 0xac, 0x6a, 0x39, 0x1e, 0x80, 0x72, 0xa9, 0xda, 0x61,
0x35, 0xb2, 0xec, 0xc5, 0x2a, 0x27, 0x2d, 0x52, 0xb6, 0x23, 0xd9, 0xf0, 0x5f, 0x64, 0x01, 0x49,
0x34, 0x05, 0xda, 0x95, 0x4e, 0xe3, 0xd2, 0xce, 0xd0, 0xc8, 0x1b, 0xf5, 0x05, 0x5a, 0x61, 0x1a,
0xeb, 0xf3, 0x15, 0x93, 0xfa, 0x4b, 0xd2, 0x2d, 0x49, 0x78, 0xc3, 0x3e, 0x05, 0x17, 0xb8, 0xf5,
0x57, 0xfd, 0x99, 0xc0, 0x65, 0x04, 0x2d, 0xe0, 0x22, 0x0e, 0x22, 0x11, 0x3b, 0x87, 0x83, 0x9f,
0xc0, 0x33, 0x70, 0x1d, 0x34, 0xa9, 0x3e, 0x19, 0x96, 0x91, 0x71, 0x75, 0x15, 0xf8, 0x89, 0x18,
0xbd, 0xc4, 0x98, 0x3f, 0x7e, 0x37, 0xd5, 0x48, 0xfe, 0x29, 0x92, 0x65, 0x9b, 0x01, 0x1f, 0xa4,
0x2e, 0x70, 0x4d, 0xad, 0x64, 0x25, 0x22, 0xbd, 0x7c, 0x24, 0x39, 0x64, 0x34, 0x82, 0x20, 0xd4,
0x9a, 0x4c, 0x26, 0x9b, 0xdb, 0xed, 0xce, 0xcf, 0x7a, 0xaf, 0x44, 0xaf, 0xd7, 0xbb, 0x1b, 0x1a,
0x1a, 0xd6, 0x0e, 0x0c, 0x0c, 0x2c, 0x1e, 0x59, 0x3a, 0x9d, 0xae, 0xd9, 0x62, 0xb1, 0x54, 0xa4,
0xd3, 0x69, 0x61, 0xa5, 0xc7, 0x47, 0x09, 0xdf, 0x21, 0xa9, 0x33, 0x1a, 0x8d, 0x62, 0x7d, 0x7d,
0xfd, 0x7c, 0x6b, 0x6b, 0xeb, 0xf9, 0x8c, 0x0c, 0x09, 0x5f, 0xd9, 0x6c, 0x36, 0xd1, 0xe5, 0x72,
0x4d, 0xc4, 0x62, 0x31, 0x0b, 0x4b, 0xb4, 0x5a, 0x6d, 0x97, 0xd9, 0x6c, 0x16, 0x1d, 0x0e, 0xc7,
0x97, 0x60, 0x30, 0x18, 0x55, 0x54, 0x3e, 0x24, 0x55, 0x56, 0xab, 0x75, 0xce, 0xeb, 0xf5, 0xce,
0x87, 0x42, 0xa1, 0x89, 0x78, 0x3c, 0xbe, 0x8e, 0x93, 0x16, 0x17, 0x17, 0x8f, 0x79, 0x3c, 0x1e,
0xd1, 0xef, 0xf7, 0x7f, 0x46, 0x3c, 0xc0, 0x15, 0x18, 0x0c, 0x86, 0x60, 0x75, 0x75, 0xf5, 0x82,
0xcf, 0xe7, 0x9b, 0x6b, 0x6b, 0x6b, 0x7b, 0xa4, 0x48, 0xc4, 0xd3, 0x62, 0xb7, 0xdb, 0x6b, 0x03,
0x81, 0xc0, 0x60, 0x24, 0x12, 0x09, 0x73, 0x42, 0x8e, 0xd7, 0xd4, 0xd4, 0xe8, 0x51, 0xdd, 0x59,
0x24, 0xbc, 0x9c, 0x48, 0x24, 0xf8, 0x7c, 0xd4, 0x84, 0xc3, 0x61, 0x2d, 0xa6, 0xb2, 0x05, 0xe2,
0x41, 0x8c, 0x9b, 0x15, 0x2f, 0x2a, 0xcb, 0x52, 0xa9, 0x54, 0x41, 0x46, 0x92, 0x01, 0xc9, 0xf2,
0x38, 0x9e, 0xdd, 0x2c, 0x2c, 0x03, 0x85, 0x4e, 0xa7, 0x53, 0xf7, 0x13, 0xdc, 0x44, 0x95, 0x24,
0xf5, 0x84, 0xc9, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0xce, 0x00, 0x00, 0x02, 0xef, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x95, 0x5d, 0x48, 0x53,
0x61, 0x18, 0xc7, 0x9f, 0xb3, 0xed, 0x6c, 0xce, 0x2d, 0xb0, 0x05, 0x95, 0xd1, 0x46, 0xa6, 0xd0,
0x37, 0x7d, 0x58, 0xd8, 0x98, 0x93, 0x99, 0xa6, 0x91, 0xb4, 0x96, 0x6e, 0x2c, 0x53, 0xe7, 0xb1,
0xe5, 0x72, 0x11, 0x7d, 0x50, 0x18, 0x04, 0xe5, 0x2e, 0x8a, 0x90, 0xba, 0xe8, 0xa2, 0x88, 0xa0,
0x42, 0x2f, 0x8a, 0x6e, 0x0c, 0x84, 0x02, 0x6f, 0x02, 0x2f, 0xba, 0x89, 0x32, 0xa8, 0xbb, 0x10,
0xc2, 0x2e, 0x82, 0xf2, 0x4a, 0x6f, 0x8c, 0x42, 0x3d, 0xfd, 0x9f, 0xd3, 0x7b, 0xea, 0x24, 0x16,
0x9e, 0xe3, 0xe8, 0xc8, 0x8f, 0x73, 0xce, 0xe3, 0xcb, 0xf3, 0x3b, 0xcf, 0xf3, 0x7e, 0x8c, 0x54,
0x55, 0xa5, 0xff, 0xc1, 0xbc, 0xc1, 0x13, 0x0a, 0xad, 0xcc, 0x2a, 0x34, 0xa4, 0x93, 0x49, 0x51,
0x25, 0x11, 0x49, 0x79, 0x17, 0x75, 0xb5, 0xd3, 0xb9, 0x6c, 0x3b, 0xa9, 0xe0, 0x3b, 0xdf, 0x8f,
0x36, 0xd3, 0x13, 0x88, 0x02, 0xa0, 0x20, 0xdf, 0xa2, 0x77, 0x2c, 0x48, 0xc5, 0xa9, 0x8f, 0xef,
0xc7, 0xdb, 0xe8, 0x9b, 0xc7, 0x43, 0xdd, 0x10, 0xed, 0x04, 0xb6, 0xbc, 0x88, 0xba, 0x52, 0xb4,
0x5d, 0x54, 0xa3, 0xfa, 0x57, 0x51, 0xc7, 0xb1, 0x23, 0x34, 0xc1, 0xcf, 0xe1, 0x0a, 0x7a, 0x0c,
0x49, 0x0b, 0x90, 0xf3, 0x23, 0x52, 0xe8, 0xa6, 0x26, 0x4a, 0xd1, 0x64, 0x6d, 0x15, 0x0d, 0x28,
0x49, 0xfa, 0xc4, 0xef, 0xad, 0x71, 0x1a, 0x85, 0xe4, 0x0c, 0x28, 0xb6, 0x32, 0x5f, 0x7f, 0xbc,
0x64, 0x32, 0x24, 0x23, 0xe9, 0xb8, 0x5e, 0xd1, 0x1c, 0x66, 0x8b, 0x57, 0xd0, 0x15, 0x48, 0x22,
0xc0, 0xbe, 0x28, 0x11, 0x92, 0x45, 0x45, 0x35, 0x1f, 0x90, 0xac, 0x19, 0x9c, 0x07, 0x67, 0x93,
0x31, 0x1a, 0xe1, 0xf8, 0xbe, 0x6a, 0x1a, 0xc2, 0x7b, 0x27, 0x70, 0x2d, 0x4e, 0x94, 0xa2, 0x01,
0x4e, 0x98, 0x6e, 0xa6, 0x3e, 0x24, 0x3b, 0x0d, 0x4e, 0x82, 0xe0, 0xc1, 0x7a, 0xba, 0x2a, 0xe2,
0xe3, 0x2c, 0x06, 0xa5, 0x66, 0xdb, 0xf7, 0x7b, 0xef, 0x24, 0xc8, 0x8b, 0x64, 0xef, 0x21, 0x1b,
0xdb, 0x53, 0x49, 0x17, 0x44, 0xc2, 0x03, 0x3c, 0xf9, 0x1d, 0x87, 0xc9, 0x8f, 0x45, 0xf2, 0xb1,
0xb3, 0x85, 0x3e, 0x97, 0x96, 0xd0, 0x75, 0xc4, 0x1a, 0xcc, 0xb6, 0x8f, 0x2f, 0x89, 0xf7, 0x87,
0x01, 0x37, 0xe8, 0x00, 0xa7, 0xc0, 0x56, 0x7d, 0x39, 0x8b, 0x71, 0x6b, 0x45, 0x3c, 0x0b, 0x3c,
0x66, 0x45, 0x1b, 0x81, 0x6a, 0x60, 0x10, 0x6c, 0x00, 0xeb, 0xc5, 0x0a, 0x4b, 0x1b, 0x06, 0xcb,
0x60, 0x9d, 0xf8, 0x9f, 0xd7, 0xac, 0xc8, 0x09, 0xa6, 0xe9, 0x16, 0x24, 0x0f, 0x81, 0x8f, 0x26,
0xc4, 0x84, 0xfb, 0xc1, 0x72, 0x30, 0x0b, 0xb8, 0x95, 0x4e, 0x43, 0x65, 0xd6, 0x96, 0x37, 0xae,
0x51, 0xea, 0x81, 0xe4, 0x39, 0x68, 0xd3, 0xaa, 0x1a, 0x01, 0x15, 0x60, 0x35, 0x6d, 0xc1, 0x7b,
0xa1, 0x26, 0xbb, 0x67, 0x65, 0xb5, 0xcd, 0x15, 0x75, 0xd3, 0x21, 0x21, 0x62, 0x2e, 0x82, 0x06,
0x9a, 0xa4, 0x6d, 0x34, 0xac, 0x89, 0xef, 0x82, 0x65, 0x9a, 0xec, 0x81, 0xd5, 0xf3, 0x4e, 0x17,
0x39, 0xd0, 0xfd, 0xb7, 0xbf, 0xaa, 0x9a, 0x8f, 0x47, 0x20, 0xa0, 0x55, 0xdb, 0x6f, 0x45, 0x66,
0x9c, 0xac, 0x00, 0xd9, 0x91, 0xb2, 0x15, 0xc9, 0xfa, 0xff, 0x22, 0x6b, 0xd4, 0x44, 0x63, 0xa0,
0xd5, 0x6c, 0x1b, 0xe7, 0xae, 0x0c, 0x49, 0x6c, 0xd4, 0x97, 0x58, 0x0a, 0xe3, 0x98, 0x9f, 0xaf,
0x68, 0xea, 0x4f, 0x49, 0x5a, 0x93, 0xf0, 0x86, 0x7d, 0x0a, 0x2e, 0xf1, 0xd2, 0x5f, 0xf4, 0xcf,
0x04, 0xae, 0xa5, 0x60, 0x3f, 0xb8, 0x8c, 0x83, 0x48, 0xc5, 0xce, 0xe1, 0xe0, 0x17, 0xf0, 0x0c,
0xf4, 0x82, 0x2a, 0xcb, 0x27, 0xc3, 0x3c, 0x32, 0xae, 0xae, 0x04, 0x7f, 0x2a, 0x9e, 0x5e, 0xe1,
0x99, 0x7f, 0xfc, 0x6e, 0x58, 0x91, 0xfc, 0x53, 0x24, 0x64, 0x6b, 0x00, 0x1f, 0xa4, 0xb5, 0xe0,
0x9a, 0x55, 0xc9, 0x42, 0x44, 0x85, 0xe2, 0x48, 0x0a, 0x0b, 0x24, 0x59, 0x96, 0x77, 0x79, 0xbd,
0xde, 0x4d, 0x89, 0x44, 0xc2, 0x6e, 0x6c, 0xb5, 0xc3, 0xe1, 0xa8, 0x0f, 0x06, 0x83, 0x6e, 0x63,
0x47, 0x10, 0xab, 0xf6, 0xf9, 0x7c, 0xfe, 0x5c, 0x2e, 0x67, 0x5b, 0xe8, 0xf1, 0xe1, 0xe3, 0x3b,
0x24, 0xbc, 0x89, 0x55, 0x9b, 0xcd, 0x36, 0x53, 0x57, 0x57, 0x97, 0x8d, 0x44, 0x22, 0x0e, 0x8e,
0x4b, 0x92, 0xf4, 0x9a, 0xe3, 0x65, 0x65, 0x65, 0x6f, 0xa2, 0xd1, 0xe8, 0x12, 0x8e, 0xd9, 0xed,
0x76, 0x3e, 0x2f, 0x55, 0x97, 0xcb, 0x35, 0xd5, 0xd4, 0xd4, 0x54, 0x6f, 0xaa, 0x7c, 0x54, 0xb2,
0x19, 0x49, 0xa7, 0x9d, 0x4e, 0xe7, 0x6c, 0x2c, 0x16, 0x1b, 0x56, 0x14, 0xa5, 0x80, 0xbf, 0x16,
0xc9, 0x5e, 0x70, 0xd2, 0xf2, 0xf2, 0xf2, 0xa9, 0x64, 0x32, 0xb9, 0x9b, 0x63, 0x18, 0xd3, 0xc8,
0xc7, 0x57, 0x51, 0x51, 0xd1, 0x4c, 0x3c, 0x1e, 0xbf, 0x4f, 0x26, 0x0f, 0x46, 0x5b, 0x28, 0x14,
0x0a, 0xe3, 0xab, 0xef, 0xa0, 0x75, 0x7b, 0xf5, 0xf6, 0xe1, 0xee, 0xae, 0xa9, 0xa9, 0xe9, 0x45,
0xc2, 0x1e, 0x7e, 0xe6, 0x18, 0xcb, 0xc2, 0xe1, 0x70, 0x1c, 0x1f, 0x74, 0x1b, 0xf2, 0x1d, 0xe6,
0x27, 0x15, 0xb2, 0x4c, 0x26, 0x23, 0x73, 0x22, 0x63, 0x9c, 0xdb, 0xa8, 0xb7, 0x52, 0x87, 0xc7,
0xe8, 0x63, 0x7f, 0x00, 0x56, 0xb3, 0x98, 0x72, 0xf8, 0x9a, 0x02, 0x50, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE gl_change_xpm[1] = {{ png, sizeof( png ), "gl_change_xpm" }};
......
......@@ -37,7 +37,7 @@ DIALOG_EESCHEMA_OPTIONS::DIALOG_EESCHEMA_OPTIONS( wxWindow* parent ) :
DIALOG_EESCHEMA_OPTIONS_BASE( parent )
{
m_choiceUnits->SetFocus();
m_sdbSizer1OK->SetDefault();
m_sdbSizerOK->SetDefault();
// Dialog should not shrink beyond it's minimal size.
GetSizer()->SetSizeHints( this );
......@@ -62,14 +62,11 @@ DIALOG_EESCHEMA_OPTIONS::DIALOG_EESCHEMA_OPTIONS( wxWindow* parent ) :
templateFieldListCtrl->SetColumnWidth( 1, templateFieldListCtrl->GetSize().GetWidth() / 3.5 );
templateFieldListCtrl->SetColumnWidth( 2, templateFieldListCtrl->GetSize().GetWidth() / 3.5 );
// Invalid field selected and don't ignore selection events because
// they'll be from the user
selectedField = 0;
selectionValid = false;
ignoreSelection = false;
// Invalid field selected
selectedField = -1;
// Make sure we select the first tab of the options tab page
m_notebook1->SetSelection( 0 );
m_notebook->SetSelection( 0 );
// Connect the edit controls for the template field names to the kill focus event which
// doesn't propogate, hence the need to connect it here.
......@@ -79,9 +76,6 @@ DIALOG_EESCHEMA_OPTIONS::DIALOG_EESCHEMA_OPTIONS( wxWindow* parent ) :
fieldDefaultValueTextCtrl->Connect( wxEVT_KILL_FOCUS,
wxFocusEventHandler( DIALOG_EESCHEMA_OPTIONS::OnEditControlKillFocus ), NULL, this );
fieldVisibleCheckbox->Connect( wxEVT_KILL_FOCUS,
wxFocusEventHandler( DIALOG_EESCHEMA_OPTIONS::OnEditControlKillFocus ), NULL, this );
}
......@@ -169,34 +163,57 @@ void DIALOG_EESCHEMA_OPTIONS::SetGridSizes( const GRIDS& aGridSizes, int aGridId
void DIALOG_EESCHEMA_OPTIONS::RefreshTemplateFieldView( void )
{
// Delete all items in the template field list control and add all of the
// current template fields
templateFieldListCtrl->DeleteAllItems();
// Loop through the template fieldnames and add them to the list control
// or just change texts if room exists
long itemindex = 0;
wxString tmp;
// Loop through the template fieldnames and add then to the list control
for( TEMPLATE_FIELDNAMES::iterator fld = templateFields.begin();
fld != templateFields.end(); ++fld )
fld != templateFields.end(); ++fld, itemindex++ )
{
long itemindex = templateFieldListCtrl->InsertItem(
if( templateFieldListCtrl->GetItemCount() <= itemindex )
{
templateFieldListCtrl->InsertItem(
templateFieldListCtrl->GetItemCount(), fld->m_Name );
}
wxListItem litem;
litem.SetId( itemindex );
templateFieldListCtrl->GetItem( litem );
templateFieldListCtrl->SetItem( itemindex, 1, fld->m_Value );
litem.SetColumn( 0 );
if( litem.GetText() != fld->m_Name )
templateFieldListCtrl->SetItem( itemindex, 0, fld->m_Name );
templateFieldListCtrl->SetItem( itemindex, 2,
( fld->m_Visible == true ) ? _( "Visible" ) : _( "Hidden" ) );
litem.SetColumn( 1 );
if( litem.GetText() != fld->m_Value )
templateFieldListCtrl->SetItem( itemindex, 1, fld->m_Value );
tmp = ( fld->m_Visible == true ) ? _( "Visible" ) : _( "Hidden" );
litem.SetColumn( 2 );
if( litem.GetText() != tmp )
templateFieldListCtrl->SetItem( itemindex, 2, tmp );
}
// Remove extra items:
while( templateFieldListCtrl->GetItemCount() > itemindex )
{
templateFieldListCtrl->DeleteItem( itemindex );
}
}
void DIALOG_EESCHEMA_OPTIONS::SelectTemplateField( int aItem )
{
// Only select valid items!
if( !selectionValid || ( aItem >= templateFieldListCtrl->GetItemCount() ) )
if( ( aItem < 0 ) || ( aItem >= templateFieldListCtrl->GetItemCount() ) )
return;
// Make sure we select the new item
ignoreSelection = true;
templateFieldListCtrl->SetItemState( aItem, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED );
// Make sure we select the new item in list control
if( templateFieldListCtrl->GetFirstSelected() != aItem )
templateFieldListCtrl->Select( aItem, true );
}
......@@ -204,7 +221,7 @@ void DIALOG_EESCHEMA_OPTIONS::OnAddButtonClick( wxCommandEvent& event )
{
// If there is currently a valid selection, copy the edit panel to the
// selected field so as not to lose the data
if( selectionValid && ( selectedField < templateFields.size() ) )
if( fieldSelectionValid( selectedField ) )
copyPanelToSelected();
// Add a new fieldname to the fieldname list
......@@ -217,7 +234,6 @@ void DIALOG_EESCHEMA_OPTIONS::OnAddButtonClick( wxCommandEvent& event )
// Make sure any previously selected state is cleared and then select the
// new field
selectedField = templateFields.size() - 1;
selectionValid = true;
// Update the display to reflect the new data
RefreshTemplateFieldView();
......@@ -234,7 +250,7 @@ void DIALOG_EESCHEMA_OPTIONS::OnDeleteButtonClick( wxCommandEvent& event )
{
// If there is currently a valid selection, delete the template field from
// the template field list
if( selectionValid && ( selectedField < templateFields.size() ) )
if( fieldSelectionValid( selectedField ) )
{
// Delete the fieldname from the fieldname list
templateFields.erase( templateFields.begin() + selectedField );
......@@ -247,18 +263,18 @@ void DIALOG_EESCHEMA_OPTIONS::OnDeleteButtonClick( wxCommandEvent& event )
// Update the display to reflect the new data
RefreshTemplateFieldView();
copySelectedToPanel();
// Make sure after the refresh that the selected item is correct
SelectTemplateField( selectedField );
}
event.Skip();
}
void DIALOG_EESCHEMA_OPTIONS::copyPanelToSelected( void )
{
if( !selectionValid || ( selectedField >= templateFields.size() ) )
if( !fieldSelectionValid( selectedField ) )
return;
// Update the template field from the edit panel
......@@ -278,10 +294,33 @@ void DIALOG_EESCHEMA_OPTIONS::OnEditControlKillFocus( wxFocusEvent& event )
event.Skip();
}
void DIALOG_EESCHEMA_OPTIONS::OnEnterKey( wxCommandEvent& event )
{
// Process the event produced when the user presses enter key
// in template fieldname text control or template fieldvalue text control
// Validate the current name or value, and switch focus to the other param
// (value or name)
copyPanelToSelected();
RefreshTemplateFieldView();
if( fieldNameTextCtrl->HasFocus() )
fieldDefaultValueTextCtrl->SetFocus();
else
fieldNameTextCtrl->SetFocus();
}
void DIALOG_EESCHEMA_OPTIONS::OnVisibleFieldClick( wxCommandEvent& event )
{
// Process the event produced when the user click on
// the check box which controls the field visibility
copyPanelToSelected();
RefreshTemplateFieldView();
}
void DIALOG_EESCHEMA_OPTIONS::copySelectedToPanel( void )
{
if( !selectionValid || ( selectedField >= templateFields.size() ) )
if( !fieldSelectionValid( selectedField ) )
return;
// Update the panel data from the selected template field
......@@ -293,35 +332,13 @@ void DIALOG_EESCHEMA_OPTIONS::copySelectedToPanel( void )
void DIALOG_EESCHEMA_OPTIONS::OnTemplateFieldSelected( wxListEvent& event )
{
// If the class has generated the event and asked to ignore it, honour that and reset the
// ignore flag for the next user event.
if( ignoreSelection )
{
ignoreSelection = false;
event.Skip();
return;
}
// Before getting the new field data, make sure we save the old!
copyPanelToSelected();
// Now update the selected field and copy the data from the field to the
// edit panel
selectedField = event.GetIndex();
selectionValid = true;
copySelectedToPanel();
// Refresh the template field view - this deletes all fields and then
// re-fills the entire data grid. It then re-selects the currently
// selected field. This will be recursive, so disable this event while
// we refresh the view
RefreshTemplateFieldView();
// If an item was selected, make sure we re-select it, or at least the
// same position in the grid
SelectTemplateField( selectedField );
event.Skip();
}
......@@ -330,8 +347,18 @@ void DIALOG_EESCHEMA_OPTIONS::SetTemplateFields( const TEMPLATE_FIELDNAMES& aFie
// Set the template fields object
templateFields = aFields;
// Refresh the view
// select the last field ( will set selectedField to -1 if no field ):
selectedField = templateFields.size()-1;
// Build and refresh the view
RefreshTemplateFieldView();
if( selectedField >= 0 )
{
copySelectedToPanel();
SelectTemplateField( selectedField );
}
}
......
......@@ -41,15 +41,31 @@ protected:
TEMPLATE_FIELDNAMES templateFields;
/** @brief The current row selected in the template fieldname wxListCtrl which is also in the
edit panel */
* edit panel
* selectedField = -1 when no valid item selected
*/
size_t selectedField;
/** @brief The selectedField value is only valid when this bool is set to true */
bool selectionValid;
/** @brief return true if aFieldId is a valid field selection
*/
bool fieldSelectionValid( size_t aFieldId )
{
return ( aFieldId >= 0 ) && ( aFieldId < templateFields.size() );
}
/**
* Function OnEnterKey (virtual)
* Process the wxWidgets @a event produced when the user presses enter key
* in template fieldname text control or template fieldvalue text control
*/
void OnEnterKey( wxCommandEvent& event );
/** @brief Set to true internally when OnTemplateFieldSelected() an event needs to be
ignored */
bool ignoreSelection;
/**
* Function OnVisibleFieldClick (virtual)
* Process the wxWidgets @a event produced when the user click on
* the check box which controls the field visibility
*/
void OnVisibleFieldClick( wxCommandEvent& event );
/**
* Function OnAddButtonClick
......@@ -60,7 +76,6 @@ protected:
*
* Adds a new template fieldname (with default values) to the template fieldnames data
*/
void OnAddButtonClick( wxCommandEvent& event );
/**
......
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Jun 6 2014)
// C++ code generated with wxFormBuilder (version Jun 5 2014)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
......@@ -15,6 +15,9 @@ BEGIN_EVENT_TABLE( DIALOG_EESCHEMA_OPTIONS_BASE, DIALOG_SHIM )
EVT_CHECKBOX( xwID_ANY, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnMiddleBtnPanEnbl )
EVT_LIST_ITEM_DESELECTED( wxID_ANY, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnTemplateFieldDeselected )
EVT_LIST_ITEM_SELECTED( wxID_ANY, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnTemplateFieldSelected )
EVT_TEXT_ENTER( wxID_ANY, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnEnterKey )
EVT_TEXT_ENTER( wxID_ANY, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnEnterKey )
EVT_CHECKBOX( wxID_ANY, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnVisibleFieldClick )
EVT_BUTTON( wxID_ADD_FIELD, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnAddButtonClick )
EVT_BUTTON( wxID_DELETE_FIELD, DIALOG_EESCHEMA_OPTIONS_BASE::_wxFB_OnDeleteButtonClick )
END_EVENT_TABLE()
......@@ -29,10 +32,10 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx
wxBoxSizer* bOptionsSizer;
bOptionsSizer = new wxBoxSizer( wxVERTICAL );
m_notebook1 = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
m_notebook1->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
m_notebook->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
m_panel1 = new wxPanel( m_notebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
m_panel1 = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxBoxSizer* p1mainSizer;
p1mainSizer = new wxBoxSizer( wxHORIZONTAL );
......@@ -210,14 +213,14 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx
m_panel1->SetSizer( p1mainSizer );
m_panel1->Layout();
p1mainSizer->Fit( m_panel1 );
m_notebook1->AddPage( m_panel1, _("General Options"), false );
m_panel2 = new wxPanel( m_notebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
m_notebook->AddPage( m_panel1, _("General Options"), false );
m_panel2 = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
m_panel2->SetToolTip( _("User defined field names for schematic components. ") );
wxBoxSizer* bSizer6;
bSizer6 = new wxBoxSizer( wxVERTICAL );
templateFieldListCtrl = new wxListCtrl( m_panel2, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES );
templateFieldListCtrl = new wxListView( m_panel2, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES );
templateFieldListCtrl->SetMinSize( wxSize( 500,-1 ) );
bSizer6->Add( templateFieldListCtrl, 1, wxALIGN_TOP|wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 8 );
......@@ -229,14 +232,14 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx
fieldNameLabel->Wrap( -1 );
fieldSizer->Add( fieldNameLabel, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
fieldNameTextCtrl = new wxTextCtrl( m_panel2, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fieldNameTextCtrl = new wxTextCtrl( m_panel2, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
fieldSizer->Add( fieldNameTextCtrl, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
fieldDefaultValueLabel = new wxStaticText( m_panel2, wxID_ANY, _("Default Value"), wxDefaultPosition, wxDefaultSize, 0 );
fieldDefaultValueLabel->Wrap( -1 );
fieldSizer->Add( fieldDefaultValueLabel, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
fieldDefaultValueTextCtrl = new wxTextCtrl( m_panel2, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fieldDefaultValueTextCtrl = new wxTextCtrl( m_panel2, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
fieldSizer->Add( fieldDefaultValueTextCtrl, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
fieldVisibleCheckbox = new wxCheckBox( m_panel2, wxID_ANY, _("Visible"), wxDefaultPosition, wxDefaultSize, 0 );
......@@ -255,18 +258,18 @@ DIALOG_EESCHEMA_OPTIONS_BASE::DIALOG_EESCHEMA_OPTIONS_BASE( wxWindow* parent, wx
m_panel2->SetSizer( bSizer6 );
m_panel2->Layout();
bSizer6->Fit( m_panel2 );
m_notebook1->AddPage( m_panel2, _("Template Field Names"), true );
m_notebook->AddPage( m_panel2, _("Template Field Names"), true );
bOptionsSizer->Add( m_notebook1, 1, wxALL|wxEXPAND, 5 );
bOptionsSizer->Add( m_notebook, 1, wxALL|wxEXPAND, 5 );
m_sdbSizer1 = new wxStdDialogButtonSizer();
m_sdbSizer1OK = new wxButton( this, wxID_OK );
m_sdbSizer1->AddButton( m_sdbSizer1OK );
m_sdbSizer1Cancel = new wxButton( this, wxID_CANCEL );
m_sdbSizer1->AddButton( m_sdbSizer1Cancel );
m_sdbSizer1->Realize();
m_sdbSizer = new wxStdDialogButtonSizer();
m_sdbSizerOK = new wxButton( this, wxID_OK );
m_sdbSizer->AddButton( m_sdbSizerOK );
m_sdbSizerCancel = new wxButton( this, wxID_CANCEL );
m_sdbSizer->AddButton( m_sdbSizerCancel );
m_sdbSizer->Realize();
bOptionsSizer->Add( m_sdbSizer1, 0, wxALIGN_BOTTOM|wxALL|wxEXPAND, 6 );
bOptionsSizer->Add( m_sdbSizer, 0, wxALIGN_BOTTOM|wxALL|wxEXPAND, 6 );
mainSizer->Add( bOptionsSizer, 1, wxEXPAND, 12 );
......
......@@ -142,7 +142,7 @@
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_notebook1</property>
<property name="name">m_notebook</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
......@@ -3549,7 +3549,7 @@
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxLC_HRULES|wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES</property>
<property name="subclass"></property>
<property name="subclass">wxListView; </property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
......@@ -3749,7 +3749,7 @@
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="style">wxTE_PROCESS_ENTER</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
......@@ -3784,7 +3784,7 @@
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextEnter">OnEnterKey</event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
......@@ -3923,7 +3923,7 @@
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="style">wxTE_PROCESS_ENTER</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
......@@ -3958,7 +3958,7 @@
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextEnter">OnEnterKey</event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
......@@ -4027,7 +4027,7 @@
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnCheckBox"></event>
<event name="OnCheckBox">OnVisibleFieldClick</event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
......@@ -4249,7 +4249,7 @@
<property name="Save">0</property>
<property name="Yes">0</property>
<property name="minimum_size"></property>
<property name="name">m_sdbSizer1</property>
<property name="name">m_sdbSizer</property>
<property name="permission">protected</property>
<event name="OnApplyButtonClick"></event>
<event name="OnCancelButtonClick"></event>
......
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Jun 6 2014)
// C++ code generated with wxFormBuilder (version Jun 5 2014)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
......@@ -12,6 +12,7 @@
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
class DIALOG_SHIM;
class wxListView;
#include "dialog_shim.h"
#include <wx/string.h>
......@@ -52,6 +53,8 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
void _wxFB_OnMiddleBtnPanEnbl( wxCommandEvent& event ){ OnMiddleBtnPanEnbl( event ); }
void _wxFB_OnTemplateFieldDeselected( wxListEvent& event ){ OnTemplateFieldDeselected( event ); }
void _wxFB_OnTemplateFieldSelected( wxListEvent& event ){ OnTemplateFieldSelected( event ); }
void _wxFB_OnEnterKey( wxCommandEvent& event ){ OnEnterKey( event ); }
void _wxFB_OnVisibleFieldClick( wxCommandEvent& event ){ OnVisibleFieldClick( event ); }
void _wxFB_OnAddButtonClick( wxCommandEvent& event ){ OnAddButtonClick( event ); }
void _wxFB_OnDeleteButtonClick( wxCommandEvent& event ){ OnDeleteButtonClick( event ); }
......@@ -65,7 +68,7 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
wxID_DELETE_FIELD
};
wxNotebook* m_notebook1;
wxNotebook* m_notebook;
wxPanel* m_panel1;
wxStaticText* m_staticText2;
wxChoice* m_choiceUnits;
......@@ -104,7 +107,7 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
wxCheckBox* m_checkHVOrientation;
wxCheckBox* m_checkPageLimits;
wxPanel* m_panel2;
wxListCtrl* templateFieldListCtrl;
wxListView* templateFieldListCtrl;
wxStaticText* fieldNameLabel;
wxTextCtrl* fieldNameTextCtrl;
wxStaticText* fieldDefaultValueLabel;
......@@ -112,9 +115,9 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
wxCheckBox* fieldVisibleCheckbox;
wxButton* addFieldButton;
wxButton* deleteFieldButton;
wxStdDialogButtonSizer* m_sdbSizer1;
wxButton* m_sdbSizer1OK;
wxButton* m_sdbSizer1Cancel;
wxStdDialogButtonSizer* m_sdbSizer;
wxButton* m_sdbSizerOK;
wxButton* m_sdbSizerCancel;
// Virtual event handlers, overide them in your derived class
virtual void OnSize( wxSizeEvent& event ) { event.Skip(); }
......@@ -122,6 +125,8 @@ class DIALOG_EESCHEMA_OPTIONS_BASE : public DIALOG_SHIM
virtual void OnMiddleBtnPanEnbl( wxCommandEvent& event ) { event.Skip(); }
virtual void OnTemplateFieldDeselected( wxListEvent& event ) { event.Skip(); }
virtual void OnTemplateFieldSelected( wxListEvent& event ) { event.Skip(); }
virtual void OnEnterKey( wxCommandEvent& event ) { event.Skip(); }
virtual void OnVisibleFieldClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnAddButtonClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnDeleteButtonClick( wxCommandEvent& event ) { event.Skip(); }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment