Extend arrays and duplicate to pcbnew (GAL and legacy), covering modules, text, lines, tracks, dimensions and targets.
Text arrays can now use "%s" as a placeholder to be substituted with the array index. Also expand menu options for move exact, arrays and duplicate. Minor fixes for arrays - use proper unit parsing, add numbering start for circular arrays Add circle radius indicator to array dialogue
|
@ -152,8 +152,11 @@ set( BMAPS_MID
|
|||
annotate_right_down
|
||||
annotate
|
||||
array_line
|
||||
array_module
|
||||
array_pad
|
||||
array_text
|
||||
array_target
|
||||
array_zone
|
||||
auto_associe
|
||||
auto_delete_track
|
||||
auto_track_width
|
||||
|
@ -221,8 +224,11 @@ set( BMAPS_MID
|
|||
drc_off
|
||||
drc
|
||||
duplicate_line
|
||||
duplicate_module
|
||||
duplicate_pad
|
||||
duplicate_target
|
||||
duplicate_text
|
||||
duplicate_zone
|
||||
edges_sketch
|
||||
edit_comp_footprint
|
||||
edit_component
|
||||
|
@ -369,9 +375,11 @@ set( BMAPS_MID
|
|||
move_polygon
|
||||
move_rectangle
|
||||
move_sheet
|
||||
move_target
|
||||
move_text
|
||||
move_track_segment
|
||||
move_track
|
||||
move_zone
|
||||
move
|
||||
mw_add_gap
|
||||
mw_add_line
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
/* 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, 0x00, 0x79, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xdd, 0x94, 0x41, 0x0a, 0x00,
|
||||
0x31, 0x08, 0x03, 0xfd, 0x4a, 0xff, 0x94, 0xff, 0xf6, 0xdc, 0xfd, 0x94, 0x7b, 0xda, 0x43, 0x65,
|
||||
0x41, 0xad, 0x90, 0x82, 0x07, 0xc1, 0x8b, 0x0e, 0xc4, 0x18, 0x51, 0x55, 0x61, 0x94, 0xd0, 0x41,
|
||||
0x00, 0xd4, 0x2b, 0x3b, 0x0c, 0x60, 0x7a, 0xb5, 0x81, 0xbe, 0x45, 0xb2, 0x86, 0x7a, 0xbd, 0x85,
|
||||
0xc8, 0x33, 0xa6, 0xd7, 0xdf, 0x03, 0x65, 0xe4, 0x8b, 0xc8, 0xf6, 0x0b, 0x8a, 0x1c, 0xd4, 0x82,
|
||||
0x82, 0x33, 0x97, 0x40, 0x34, 0xe9, 0x7a, 0xb9, 0x8e, 0xf6, 0xb0, 0x6d, 0xb3, 0x2e, 0x2c, 0x43,
|
||||
0x25, 0xeb, 0x52, 0x87, 0xad, 0xb8, 0x8e, 0x0b, 0xca, 0x48, 0x71, 0xfa, 0xb0, 0xa9, 0x38, 0xa9,
|
||||
0x44, 0x10, 0x0f, 0x44, 0x93, 0xae, 0x97, 0xeb, 0x68, 0x0f, 0xdb, 0x2a, 0xeb, 0x5e, 0x8c, 0x95,
|
||||
0x3c, 0x73, 0x5c, 0xe2, 0x55, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
|
||||
0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE array_footprint_xpm[1] = {{ png, sizeof( png ), "array_footprint_xpm" }};
|
||||
|
||||
//EOF
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
/* 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, 0x00, 0x79, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xdd, 0x94, 0x41, 0x0a, 0x00,
|
||||
0x31, 0x08, 0x03, 0xfd, 0x4a, 0xff, 0x94, 0xff, 0xf6, 0xdc, 0xfd, 0x94, 0x7b, 0xda, 0x43, 0x65,
|
||||
0x41, 0xad, 0x90, 0x82, 0x07, 0xc1, 0x8b, 0x0e, 0xc4, 0x18, 0x51, 0x55, 0x61, 0x94, 0xd0, 0x41,
|
||||
0x00, 0xd4, 0x2b, 0x3b, 0x0c, 0x60, 0x7a, 0xb5, 0x81, 0xbe, 0x45, 0xb2, 0x86, 0x7a, 0xbd, 0x85,
|
||||
0xc8, 0x33, 0xa6, 0xd7, 0xdf, 0x03, 0x65, 0xe4, 0x8b, 0xc8, 0xf6, 0x0b, 0x8a, 0x1c, 0xd4, 0x82,
|
||||
0x82, 0x33, 0x97, 0x40, 0x34, 0xe9, 0x7a, 0xb9, 0x8e, 0xf6, 0xb0, 0x6d, 0xb3, 0x2e, 0x2c, 0x43,
|
||||
0x25, 0xeb, 0x52, 0x87, 0xad, 0xb8, 0x8e, 0x0b, 0xca, 0x48, 0x71, 0xfa, 0xb0, 0xa9, 0x38, 0xa9,
|
||||
0x44, 0x10, 0x0f, 0x44, 0x93, 0xae, 0x97, 0xeb, 0x68, 0x0f, 0xdb, 0x2a, 0xeb, 0x5e, 0x8c, 0x95,
|
||||
0x3c, 0x73, 0x5c, 0xe2, 0x55, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
|
||||
0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE array_module_xpm[1] = {{ png, sizeof( png ), "array_module_xpm" }};
|
||||
|
||||
//EOF
|
|
@ -0,0 +1,51 @@
|
|||
|
||||
/* 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, 0x02, 0x22, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x94, 0x4f, 0x4b, 0x1b,
|
||||
0x41, 0x18, 0x87, 0x67, 0xc1, 0x59, 0xdd, 0x4d, 0xb6, 0x69, 0x24, 0xb6, 0xb6, 0x62, 0xbd, 0x0a,
|
||||
0x31, 0x15, 0x94, 0x5d, 0x12, 0x6a, 0xbd, 0xd9, 0xcf, 0xe1, 0xb9, 0x58, 0xe8, 0x27, 0x29, 0x3d,
|
||||
0xf5, 0xd8, 0x4b, 0xa1, 0xe0, 0x45, 0xb1, 0xc1, 0x4b, 0xa1, 0x9d, 0x0f, 0xe0, 0xd5, 0x8b, 0x8a,
|
||||
0x87, 0xf6, 0xa4, 0xa0, 0x87, 0xf6, 0x94, 0x16, 0xe9, 0x74, 0x9e, 0x25, 0x23, 0x13, 0x49, 0xc2,
|
||||
0xfe, 0x09, 0x2e, 0xbc, 0x2c, 0x3b, 0xb3, 0xef, 0x3e, 0xf3, 0xbe, 0xbf, 0x77, 0x7f, 0x42, 0x6b,
|
||||
0x2d, 0x86, 0x85, 0xb9, 0xf4, 0xa8, 0xbd, 0x31, 0x39, 0x6a, 0xe4, 0xde, 0x9d, 0x17, 0xa3, 0xa8,
|
||||
0x22, 0xde, 0x35, 0x1e, 0xca, 0x73, 0x40, 0x73, 0xb3, 0xf2, 0x84, 0x67, 0xd6, 0xc7, 0x7c, 0x3c,
|
||||
0xac, 0x86, 0xe2, 0x75, 0xa3, 0x26, 0x3f, 0x03, 0x6a, 0xd4, 0xe5, 0x27, 0x9e, 0x59, 0x1f, 0x0a,
|
||||
0x32, 0x57, 0x1c, 0xcc, 0x78, 0x57, 0xeb, 0xab, 0xf3, 0x37, 0x9d, 0x76, 0xc2, 0x82, 0x3e, 0xea,
|
||||
0x6e, 0xea, 0x37, 0xdb, 0x8b, 0xbd, 0x30, 0xf0, 0x2e, 0xd9, 0x1f, 0x02, 0x59, 0x0e, 0xa6, 0xbd,
|
||||
0x83, 0xb5, 0xe7, 0xf3, 0xdf, 0x3a, 0xed, 0x58, 0x01, 0x3a, 0xea, 0xbe, 0x54, 0x3b, 0xdb, 0x8b,
|
||||
0x5f, 0x4d, 0xce, 0x3e, 0xfb, 0x03, 0x20, 0x4e, 0x3c, 0xe3, 0x7b, 0xd7, 0xed, 0x64, 0x45, 0xb7,
|
||||
0x5a, 0x2d, 0xbd, 0xb1, 0xf1, 0x22, 0x05, 0xf5, 0xce, 0x5e, 0xe9, 0x3f, 0x27, 0x1d, 0xdd, 0xfd,
|
||||
0xb8, 0xae, 0xfb, 0xb0, 0xc8, 0xad, 0x64, 0xda, 0xf7, 0xbe, 0xb4, 0xe3, 0x15, 0x65, 0x72, 0x94,
|
||||
0xc9, 0x49, 0x41, 0xbd, 0xb3, 0x2d, 0xf5, 0xf7, 0xb4, 0xa3, 0x4c, 0x8e, 0xea, 0xc3, 0xc2, 0x5b,
|
||||
0x10, 0xed, 0x59, 0x7a, 0xf6, 0xf8, 0x1f, 0x10, 0x00, 0x2e, 0xe8, 0xe6, 0xb8, 0x96, 0xc2, 0xa8,
|
||||
0x8c, 0xf7, 0x2c, 0x88, 0xf6, 0x98, 0x9c, 0xef, 0x40, 0x00, 0xb8, 0x20, 0x93, 0x93, 0xc2, 0xa8,
|
||||
0x8c, 0xf7, 0x6e, 0x41, 0xf5, 0x9a, 0xfc, 0x91, 0x24, 0x49, 0x0a, 0xb0, 0x61, 0x41, 0x36, 0x68,
|
||||
0x23, 0x9a, 0x59, 0x90, 0xc9, 0xd9, 0x8d, 0xe3, 0x38, 0x05, 0xd8, 0xb0, 0x20, 0x1b, 0xb4, 0x11,
|
||||
0xcd, 0xfa, 0x1d, 0x10, 0xba, 0x40, 0xa8, 0xdc, 0x01, 0x8d, 0x93, 0x72, 0x62, 0xb7, 0x02, 0xdb,
|
||||
0x42, 0x1b, 0x54, 0x1c, 0x55, 0xa6, 0x2e, 0x6c, 0x45, 0x9c, 0x94, 0x13, 0xbb, 0x15, 0xd8, 0x16,
|
||||
0xda, 0xa0, 0xe2, 0x28, 0x9c, 0xda, 0x1b, 0xd0, 0x08, 0x0d, 0xd0, 0x02, 0x4d, 0x5c, 0x10, 0x77,
|
||||
0xb4, 0x5b, 0x78, 0xfa, 0x48, 0x87, 0xa1, 0xf8, 0xe0, 0x6a, 0x84, 0x06, 0x68, 0x81, 0x26, 0x2e,
|
||||
0x88, 0x3b, 0xda, 0x2d, 0x3c, 0x99, 0x53, 0x41, 0x20, 0xde, 0x0e, 0x4c, 0x1d, 0x53, 0xc5, 0x74,
|
||||
0x01, 0x73, 0x41, 0x40, 0x9a, 0xcd, 0xa6, 0x96, 0xd2, 0xfb, 0x7d, 0x77, 0xea, 0x98, 0x2a, 0xa6,
|
||||
0x0b, 0x98, 0x0b, 0x02, 0x62, 0x72, 0x94, 0xef, 0x7b, 0x87, 0x03, 0x53, 0x67, 0xff, 0x23, 0x60,
|
||||
0x54, 0x46, 0x1b, 0x01, 0xd1, 0x2e, 0x2a, 0xf1, 0xa5, 0xf7, 0x6b, 0xd4, 0x7f, 0x04, 0x8c, 0xca,
|
||||
0x68, 0x23, 0x20, 0xda, 0x45, 0x25, 0x7d, 0xc8, 0xf2, 0x58, 0x67, 0x40, 0x33, 0x40, 0xf5, 0x07,
|
||||
0xf2, 0x67, 0xb5, 0x22, 0xde, 0x67, 0x72, 0x06, 0xa3, 0x19, 0x20, 0x93, 0xb3, 0x5b, 0x0d, 0xc4,
|
||||
0xce, 0x48, 0x67, 0xb8, 0x57, 0xaf, 0xcb, 0x9a, 0x34, 0x09, 0x53, 0xcd, 0x64, 0x90, 0x65, 0x4d,
|
||||
0x35, 0xb3, 0x41, 0x96, 0x31, 0xd5, 0x5c, 0x06, 0x59, 0xd8, 0x54, 0xf3, 0x1a, 0x64, 0x19, 0x53,
|
||||
0xcd, 0x65, 0x90, 0x45, 0x4d, 0x55, 0xdd, 0x4b, 0x14, 0x31, 0xc8, 0xc2, 0xa6, 0x9a, 0xd7, 0x20,
|
||||
0xcb, 0x98, 0x6a, 0x2e, 0x83, 0x2c, 0x6b, 0xaa, 0x99, 0x0d, 0x72, 0x12, 0xa6, 0x9a, 0xc9, 0x20,
|
||||
0x27, 0x6d, 0xaa, 0x13, 0xf5, 0xba, 0xff, 0x0c, 0x96, 0xd3, 0x5f, 0x78, 0x1d, 0xd5, 0x5b, 0x00,
|
||||
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE array_target_xpm[1] = {{ png, sizeof( png ), "array_target_xpm" }};
|
||||
|
||||
//EOF
|
|
@ -0,0 +1,51 @@
|
|||
|
||||
/* 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, 0x02, 0x1a, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xcd, 0x94, 0x3d, 0x88, 0x13,
|
||||
0x41, 0x18, 0x86, 0xe7, 0x40, 0xbb, 0x20, 0xe1, 0x1a, 0x13, 0x3b, 0xb1, 0xb3, 0xb0, 0xbf, 0x43,
|
||||
0x0e, 0xe5, 0x38, 0xbd, 0xd2, 0x46, 0x10, 0x04, 0x0b, 0x0b, 0x4b, 0xb9, 0xce, 0x9f, 0xc2, 0xcc,
|
||||
0x9a, 0x9d, 0x9d, 0x9f, 0x6c, 0x22, 0xc1, 0x22, 0x6a, 0x27, 0x07, 0x5a, 0x18, 0xb2, 0xe4, 0xe4,
|
||||
0x20, 0x46, 0x4c, 0x8a, 0x6b, 0x6c, 0xc5, 0xeb, 0x4e, 0x2c, 0x6c, 0x44, 0x39, 0x72, 0x57, 0xa8,
|
||||
0xa0, 0x98, 0x1b, 0xdf, 0xec, 0xae, 0x49, 0x30, 0xeb, 0xdd, 0x8e, 0x03, 0xc1, 0xe2, 0xdd, 0x6f,
|
||||
0x77, 0x66, 0xbe, 0x79, 0xe7, 0xe7, 0xdb, 0x87, 0x68, 0xad, 0xc9, 0x34, 0x14, 0x3d, 0x1c, 0xf2,
|
||||
0x93, 0x50, 0xa2, 0x0f, 0x14, 0xc6, 0x0d, 0x13, 0x29, 0xa9, 0x43, 0xdd, 0x14, 0xaa, 0x8f, 0x8c,
|
||||
0xa2, 0x89, 0xde, 0x61, 0xa2, 0xf7, 0x88, 0x3b, 0xd0, 0xd7, 0x38, 0x7e, 0x08, 0xdb, 0x47, 0xd2,
|
||||
0x63, 0x46, 0x83, 0x49, 0x6e, 0x42, 0xb7, 0xa1, 0x0a, 0x29, 0x90, 0x87, 0x61, 0xa4, 0xe4, 0x4e,
|
||||
0xdc, 0xfe, 0x5b, 0xdd, 0x3f, 0x8d, 0x3e, 0x42, 0x7d, 0x98, 0xed, 0x22, 0x6e, 0x86, 0xd1, 0x21,
|
||||
0x7b, 0x78, 0xff, 0x1c, 0x2f, 0x60, 0xd2, 0xa8, 0x40, 0x18, 0x62, 0x00, 0x55, 0xa1, 0x95, 0x38,
|
||||
0xae, 0x43, 0x22, 0x5c, 0x80, 0x43, 0x6e, 0x25, 0x19, 0xf5, 0xa1, 0xfb, 0x9e, 0xef, 0x5d, 0x10,
|
||||
0x92, 0xb5, 0xa5, 0x64, 0x67, 0xf1, 0xcd, 0x63, 0xb3, 0x41, 0xff, 0x5e, 0xc2, 0x8e, 0x02, 0xf4,
|
||||
0x2f, 0x16, 0x4b, 0xc5, 0xe3, 0x52, 0xf2, 0xcb, 0x52, 0xd2, 0x63, 0x68, 0x3b, 0x1d, 0x9b, 0xbd,
|
||||
0x84, 0xd6, 0x26, 0x8d, 0xb0, 0x03, 0xae, 0xf8, 0xc5, 0x52, 0x59, 0xe8, 0x46, 0xf0, 0x4c, 0x2b,
|
||||
0x9f, 0x6b, 0xe1, 0xbb, 0x0b, 0x63, 0x13, 0xef, 0x26, 0x18, 0x55, 0x95, 0x52, 0x27, 0x54, 0x59,
|
||||
0xb4, 0x91, 0xf3, 0x42, 0xfa, 0x5e, 0x9b, 0x31, 0x96, 0x1f, 0x1b, 0x53, 0x4d, 0xda, 0xd1, 0x5b,
|
||||
0xe9, 0xf3, 0x8d, 0xe6, 0x5a, 0xa0, 0x7b, 0xbd, 0x6d, 0xfd, 0xe4, 0xe9, 0xaa, 0x16, 0x8a, 0x0d,
|
||||
0x95, 0xbf, 0x7b, 0xf4, 0x5e, 0x82, 0xd1, 0x8a, 0x2a, 0xf3, 0xab, 0xcd, 0xe7, 0x8d, 0x0e, 0x72,
|
||||
0xba, 0xc8, 0xe9, 0x0a, 0xe5, 0x45, 0x2a, 0xb1, 0x56, 0xae, 0x98, 0x3b, 0x93, 0x7a, 0x47, 0xe8,
|
||||
0x3b, 0x82, 0xa3, 0xdc, 0x12, 0xca, 0x7d, 0x85, 0xf7, 0x53, 0x69, 0x76, 0x84, 0xb2, 0x38, 0x8c,
|
||||
0xa3, 0xbf, 0x81, 0x05, 0x5e, 0xc1, 0x98, 0xd9, 0x34, 0x77, 0x34, 0x38, 0x6b, 0x7d, 0xde, 0x5b,
|
||||
0x72, 0x90, 0xd4, 0xa7, 0x94, 0x66, 0x52, 0xdc, 0xd1, 0x25, 0xa8, 0xb3, 0xec, 0x2d, 0xcf, 0x21,
|
||||
0xa7, 0x8e, 0x9c, 0x43, 0xc9, 0x55, 0x17, 0xdd, 0xc5, 0x1b, 0xe8, 0x7b, 0x5c, 0x85, 0x3f, 0x10,
|
||||
0x5f, 0x23, 0xa9, 0x87, 0x23, 0x79, 0xb0, 0x4f, 0xd5, 0x5d, 0x87, 0x1e, 0xc7, 0xdf, 0xab, 0xd0,
|
||||
0x35, 0x21, 0x58, 0x85, 0x73, 0x7e, 0x6e, 0xbf, 0xff, 0xe8, 0x0b, 0xf4, 0x29, 0x6c, 0x2b, 0x44,
|
||||
0x0b, 0x28, 0x96, 0x1c, 0x17, 0x66, 0xdf, 0xfe, 0xfa, 0x1f, 0x51, 0x52, 0x0b, 0xcb, 0x3a, 0x2a,
|
||||
0x69, 0x77, 0x60, 0x28, 0x84, 0x3b, 0x2f, 0xa4, 0xfb, 0xc8, 0x88, 0x0c, 0x19, 0x9a, 0x39, 0xc9,
|
||||
0x15, 0xab, 0x0d, 0x8f, 0xe2, 0x20, 0x32, 0x38, 0xa4, 0x95, 0xa5, 0xd9, 0x2c, 0xae, 0x60, 0x09,
|
||||
0xe3, 0x67, 0xc8, 0x54, 0x59, 0x37, 0x3d, 0xa8, 0x1a, 0x02, 0xd2, 0x06, 0xaa, 0x46, 0x80, 0xb4,
|
||||
0x81, 0xaa, 0x11, 0x20, 0x6d, 0xa0, 0x6a, 0x04, 0x48, 0x1b, 0xa8, 0x1a, 0x01, 0xd2, 0x06, 0xaa,
|
||||
0x46, 0x80, 0xb4, 0x81, 0xaa, 0x11, 0x20, 0x6d, 0xa0, 0x6a, 0x04, 0x48, 0x1b, 0xa8, 0x1a, 0x01,
|
||||
0xd2, 0x06, 0xaa, 0x46, 0x80, 0xfc, 0x77, 0xa8, 0x1a, 0x02, 0xf2, 0xbf, 0x86, 0xea, 0x2f, 0x73,
|
||||
0x29, 0x07, 0xb2, 0xe7, 0xc3, 0x61, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
|
||||
0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE array_zone_xpm[1] = {{ png, sizeof( png ), "array_zone_xpm" }};
|
||||
|
||||
//EOF
|
|
@ -0,0 +1,43 @@
|
|||
|
||||
/* 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, 0x01, 0xa4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0xf8, 0xff, 0xff, 0x3f,
|
||||
0x03, 0x3d, 0x30, 0x0a, 0x27, 0x24, 0x24, 0xe4, 0x3f, 0x0c, 0x13, 0xc3, 0xa7, 0xc8, 0x22, 0x86,
|
||||
0x93, 0x8a, 0x28, 0x06, 0xe3, 0xe2, 0x2f, 0x61, 0x60, 0xe0, 0x03, 0x62, 0x4f, 0x20, 0xae, 0x58,
|
||||
0xcc, 0xc0, 0x10, 0xbc, 0x9c, 0x81, 0x41, 0x96, 0xa0, 0x45, 0xc8, 0x2e, 0x85, 0x19, 0x84, 0x8f,
|
||||
0x9f, 0x65, 0x67, 0xf7, 0x7f, 0x31, 0x23, 0x23, 0xc8, 0x32, 0x30, 0x5e, 0xc3, 0xc2, 0xf2, 0x73,
|
||||
0x19, 0x23, 0xe3, 0xb7, 0xa5, 0x0c, 0x0c, 0x76, 0x04, 0x2d, 0x22, 0x25, 0xe8, 0xc2, 0x03, 0x03,
|
||||
0xff, 0x2f, 0x62, 0x60, 0xd0, 0xc9, 0xb0, 0xb7, 0xff, 0xbf, 0x8c, 0x89, 0xa9, 0x72, 0x39, 0x23,
|
||||
0xe3, 0xe7, 0x63, 0x42, 0x42, 0x20, 0xf6, 0x27, 0xa0, 0xcf, 0x14, 0x08, 0xf9, 0x28, 0x28, 0x3a,
|
||||
0x3a, 0x9a, 0x8f, 0x94, 0x70, 0x87, 0x39, 0x00, 0xe8, 0xab, 0xc0, 0x4d, 0xec, 0xec, 0x9f, 0x80,
|
||||
0x96, 0xfd, 0x02, 0x5a, 0xd6, 0x45, 0xc8, 0xa2, 0x43, 0x40, 0xbc, 0x81, 0x1c, 0x8b, 0x80, 0xc6,
|
||||
0x30, 0x02, 0x83, 0xee, 0xfb, 0x1d, 0x79, 0xf9, 0xff, 0x2b, 0x99, 0x98, 0x9e, 0xe1, 0xb5, 0xc8,
|
||||
0xd7, 0xd7, 0x97, 0x0b, 0x48, 0xff, 0x26, 0xc5, 0x57, 0x20, 0x7d, 0xf3, 0x19, 0x18, 0x38, 0x40,
|
||||
0xc1, 0xb8, 0x9c, 0x89, 0xe9, 0xe9, 0x5d, 0xa0, 0x45, 0xc0, 0xf8, 0xfa, 0xb2, 0x8a, 0x89, 0xe9,
|
||||
0x0a, 0x30, 0xbe, 0x6e, 0xac, 0x62, 0x60, 0x10, 0xc2, 0xe6, 0xa3, 0xc3, 0x40, 0x7c, 0x80, 0x54,
|
||||
0x1f, 0x01, 0x53, 0x5c, 0x0a, 0x30, 0xe8, 0xfe, 0xad, 0x63, 0x63, 0xfb, 0x71, 0x4f, 0x41, 0xe1,
|
||||
0x3f, 0x08, 0xaf, 0x66, 0x61, 0xf9, 0x05, 0x14, 0xcb, 0xc6, 0x15, 0x74, 0x89, 0x0e, 0x0e, 0x0e,
|
||||
0x2c, 0x64, 0xc6, 0x51, 0xf8, 0x0a, 0x26, 0xa6, 0x6f, 0x20, 0x4b, 0xae, 0x4a, 0x4b, 0xff, 0x07,
|
||||
0xb2, 0x6f, 0x03, 0x7d, 0xc3, 0x4c, 0x71, 0xaa, 0x43, 0xe6, 0xc3, 0x0c, 0x02, 0x06, 0x95, 0x3b,
|
||||
0x30, 0xf8, 0xbe, 0xac, 0x60, 0x66, 0xfe, 0x0e, 0xf4, 0xa5, 0x2d, 0x55, 0xf2, 0x11, 0xae, 0x12,
|
||||
0x02, 0x68, 0x81, 0xd5, 0x32, 0x06, 0x86, 0x59, 0x54, 0x2d, 0x19, 0x80, 0x78, 0x3f, 0x54, 0x6c,
|
||||
0x3f, 0x0c, 0x63, 0xe3, 0x53, 0x5c, 0xd6, 0x21, 0x1b, 0xcc, 0x70, 0x4a, 0x71, 0x3f, 0x2e, 0x3e,
|
||||
0x56, 0x8b, 0x08, 0x44, 0x3c, 0xdc, 0xa5, 0x30, 0x83, 0x88, 0xe5, 0x93, 0x6c, 0x11, 0x31, 0x41,
|
||||
0x85, 0x8d, 0x4f, 0x8e, 0x8f, 0x6c, 0xd3, 0xd2, 0xd2, 0xb8, 0x48, 0xcc, 0x02, 0x64, 0x59, 0x34,
|
||||
0x31, 0x38, 0x38, 0xb8, 0x85, 0xe6, 0x16, 0x79, 0x7a, 0x7a, 0xb2, 0x03, 0xe9, 0x3d, 0xa4, 0xf8,
|
||||
0x8a, 0x5c, 0x1f, 0x4d, 0x02, 0xfa, 0x68, 0x02, 0x3d, 0x82, 0xce, 0x33, 0x34, 0x34, 0x94, 0x99,
|
||||
0xe6, 0x16, 0xd1, 0x33, 0xd5, 0xd1, 0x3e, 0x1f, 0x21, 0x5b, 0x88, 0xaf, 0x24, 0xa0, 0xb8, 0x64,
|
||||
0xc0, 0xe6, 0x33, 0xb2, 0xcb, 0x3a, 0x5a, 0x62, 0x00, 0x66, 0x05, 0x94, 0x24, 0x1f, 0x97, 0xfe,
|
||||
0x47, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE duplicate_footprint_xpm[1] = {{ png, sizeof( png ), "duplicate_footprint_xpm" }};
|
||||
|
||||
//EOF
|
|
@ -0,0 +1,43 @@
|
|||
|
||||
/* 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, 0x01, 0xa4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0xf8, 0xff, 0xff, 0x3f,
|
||||
0x03, 0x3d, 0x30, 0x0a, 0x27, 0x24, 0x24, 0xe4, 0x3f, 0x0c, 0x13, 0xc3, 0xa7, 0xc8, 0x22, 0x86,
|
||||
0x93, 0x8a, 0x28, 0x06, 0xe3, 0xe2, 0x2f, 0x61, 0x60, 0xe0, 0x03, 0x62, 0x4f, 0x20, 0xae, 0x58,
|
||||
0xcc, 0xc0, 0x10, 0xbc, 0x9c, 0x81, 0x41, 0x96, 0xa0, 0x45, 0xc8, 0x2e, 0x85, 0x19, 0x84, 0x8f,
|
||||
0x9f, 0x65, 0x67, 0xf7, 0x7f, 0x31, 0x23, 0x23, 0xc8, 0x32, 0x30, 0x5e, 0xc3, 0xc2, 0xf2, 0x73,
|
||||
0x19, 0x23, 0xe3, 0xb7, 0xa5, 0x0c, 0x0c, 0x76, 0x04, 0x2d, 0x22, 0x25, 0xe8, 0xc2, 0x03, 0x03,
|
||||
0xff, 0x2f, 0x62, 0x60, 0xd0, 0xc9, 0xb0, 0xb7, 0xff, 0xbf, 0x8c, 0x89, 0xa9, 0x72, 0x39, 0x23,
|
||||
0xe3, 0xe7, 0x63, 0x42, 0x42, 0x20, 0xf6, 0x27, 0xa0, 0xcf, 0x14, 0x08, 0xf9, 0x28, 0x28, 0x3a,
|
||||
0x3a, 0x9a, 0x8f, 0x94, 0x70, 0x87, 0x39, 0x00, 0xe8, 0xab, 0xc0, 0x4d, 0xec, 0xec, 0x9f, 0x80,
|
||||
0x96, 0xfd, 0x02, 0x5a, 0xd6, 0x45, 0xc8, 0xa2, 0x43, 0x40, 0xbc, 0x81, 0x1c, 0x8b, 0x80, 0xc6,
|
||||
0x30, 0x02, 0x83, 0xee, 0xfb, 0x1d, 0x79, 0xf9, 0xff, 0x2b, 0x99, 0x98, 0x9e, 0xe1, 0xb5, 0xc8,
|
||||
0xd7, 0xd7, 0x97, 0x0b, 0x48, 0xff, 0x26, 0xc5, 0x57, 0x20, 0x7d, 0xf3, 0x19, 0x18, 0x38, 0x40,
|
||||
0xc1, 0xb8, 0x9c, 0x89, 0xe9, 0xe9, 0x5d, 0xa0, 0x45, 0xc0, 0xf8, 0xfa, 0xb2, 0x8a, 0x89, 0xe9,
|
||||
0x0a, 0x30, 0xbe, 0x6e, 0xac, 0x62, 0x60, 0x10, 0xc2, 0xe6, 0xa3, 0xc3, 0x40, 0x7c, 0x80, 0x54,
|
||||
0x1f, 0x01, 0x53, 0x5c, 0x0a, 0x30, 0xe8, 0xfe, 0xad, 0x63, 0x63, 0xfb, 0x71, 0x4f, 0x41, 0xe1,
|
||||
0x3f, 0x08, 0xaf, 0x66, 0x61, 0xf9, 0x05, 0x14, 0xcb, 0xc6, 0x15, 0x74, 0x89, 0x0e, 0x0e, 0x0e,
|
||||
0x2c, 0x64, 0xc6, 0x51, 0xf8, 0x0a, 0x26, 0xa6, 0x6f, 0x20, 0x4b, 0xae, 0x4a, 0x4b, 0xff, 0x07,
|
||||
0xb2, 0x6f, 0x03, 0x7d, 0xc3, 0x4c, 0x71, 0xaa, 0x43, 0xe6, 0xc3, 0x0c, 0x02, 0x06, 0x95, 0x3b,
|
||||
0x30, 0xf8, 0xbe, 0xac, 0x60, 0x66, 0xfe, 0x0e, 0xf4, 0xa5, 0x2d, 0x55, 0xf2, 0x11, 0xae, 0x12,
|
||||
0x02, 0x68, 0x81, 0xd5, 0x32, 0x06, 0x86, 0x59, 0x54, 0x2d, 0x19, 0x80, 0x78, 0x3f, 0x54, 0x6c,
|
||||
0x3f, 0x0c, 0x63, 0xe3, 0x53, 0x5c, 0xd6, 0x21, 0x1b, 0xcc, 0x70, 0x4a, 0x71, 0x3f, 0x2e, 0x3e,
|
||||
0x56, 0x8b, 0x08, 0x44, 0x3c, 0xdc, 0xa5, 0x30, 0x83, 0x88, 0xe5, 0x93, 0x6c, 0x11, 0x31, 0x41,
|
||||
0x85, 0x8d, 0x4f, 0x8e, 0x8f, 0x6c, 0xd3, 0xd2, 0xd2, 0xb8, 0x48, 0xcc, 0x02, 0x64, 0x59, 0x34,
|
||||
0x31, 0x38, 0x38, 0xb8, 0x85, 0xe6, 0x16, 0x79, 0x7a, 0x7a, 0xb2, 0x03, 0xe9, 0x3d, 0xa4, 0xf8,
|
||||
0x8a, 0x5c, 0x1f, 0x4d, 0x02, 0xfa, 0x68, 0x02, 0x3d, 0x82, 0xce, 0x33, 0x34, 0x34, 0x94, 0x99,
|
||||
0xe6, 0x16, 0xd1, 0x33, 0xd5, 0xd1, 0x3e, 0x1f, 0x21, 0x5b, 0x88, 0xaf, 0x24, 0xa0, 0xb8, 0x64,
|
||||
0xc0, 0xe6, 0x33, 0xb2, 0xcb, 0x3a, 0x5a, 0x62, 0x00, 0x66, 0x05, 0x94, 0x24, 0x1f, 0x97, 0xfe,
|
||||
0x47, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE duplicate_module_xpm[1] = {{ png, sizeof( png ), "duplicate_module_xpm" }};
|
||||
|
||||
//EOF
|
|
@ -0,0 +1,63 @@
|
|||
|
||||
/* 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, 0x02, 0xda, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xcd, 0x96, 0xcf, 0x6b, 0x13,
|
||||
0x41, 0x14, 0xc7, 0x67, 0x7f, 0x25, 0xdd, 0x4d, 0xb6, 0x69, 0x24, 0xd5, 0x26, 0xa5, 0x49, 0x0f,
|
||||
0x1e, 0x5a, 0xd3, 0x58, 0xb0, 0x6c, 0x4c, 0xb0, 0xea, 0x41, 0xf4, 0xe0, 0xc1, 0xbf, 0xa1, 0x67,
|
||||
0xa9, 0xe0, 0xdd, 0x8b, 0xb7, 0xde, 0xd4, 0x53, 0xd1, 0x83, 0x0a, 0xd6, 0xa6, 0x4d, 0x0a, 0x8a,
|
||||
0x8d, 0x22, 0x28, 0xed, 0x1e, 0x7a, 0xb3, 0x37, 0x29, 0x6a, 0x8d, 0x0a, 0x7a, 0xb2, 0x50, 0x91,
|
||||
0x16, 0x63, 0x62, 0x5b, 0x3b, 0xbe, 0xef, 0x92, 0x85, 0x6d, 0xd8, 0xfc, 0x16, 0x71, 0xe0, 0xb1,
|
||||
0xd9, 0x99, 0x65, 0x3e, 0xf3, 0xfd, 0xbe, 0xf7, 0x86, 0x30, 0xce, 0x39, 0xfb, 0x17, 0x51, 0x7f,
|
||||
0xd1, 0x5a, 0x76, 0x5f, 0x9b, 0x61, 0xec, 0x68, 0x86, 0xb1, 0xb3, 0xf4, 0x1c, 0xcd, 0x31, 0xa6,
|
||||
0xfe, 0x75, 0xd0, 0x2c, 0x63, 0x17, 0xb3, 0x92, 0xf4, 0xea, 0x21, 0xad, 0xd1, 0xef, 0xfd, 0x05,
|
||||
0x59, 0x2e, 0xce, 0x8b, 0xe2, 0x3b, 0x02, 0x86, 0x5b, 0x02, 0xd1, 0xd0, 0x75, 0x1f, 0xbb, 0x11,
|
||||
0xea, 0x51, 0x3e, 0x02, 0xd4, 0x7b, 0x48, 0x59, 0xc7, 0x3b, 0xe6, 0xb1, 0x3e, 0x2f, 0xcb, 0x53,
|
||||
0x39, 0x49, 0x7a, 0x4a, 0x9b, 0xdf, 0xce, 0x8a, 0xe2, 0xeb, 0x9c, 0x2c, 0x97, 0x56, 0x82, 0xc1,
|
||||
0xdd, 0x8c, 0x20, 0x6c, 0xdc, 0xad, 0x7c, 0xd3, 0x10, 0x44, 0xc3, 0x50, 0xbb, 0x84, 0xcd, 0xb1,
|
||||
0xd1, 0xbe, 0xbd, 0x74, 0x2a, 0x89, 0x09, 0xbe, 0x9a, 0x3f, 0xc3, 0xaf, 0x4c, 0x0c, 0x94, 0x35,
|
||||
0x55, 0xd8, 0xc0, 0x7a, 0xf5, 0x06, 0x04, 0x9c, 0x5e, 0x0e, 0x04, 0x8a, 0x2f, 0xfd, 0xfe, 0x62,
|
||||
0x46, 0x14, 0xaf, 0x35, 0x04, 0xe1, 0xc4, 0x5d, 0x1e, 0xe1, 0x5b, 0x2a, 0x39, 0xc2, 0x13, 0x89,
|
||||
0x04, 0x1f, 0x1f, 0x3f, 0x65, 0x81, 0xca, 0x85, 0x0b, 0xfc, 0xd7, 0x7a, 0x9a, 0xe7, 0xef, 0x8d,
|
||||
0xf1, 0x0a, 0xec, 0xc0, 0xa9, 0xc9, 0xc2, 0x6e, 0x52, 0x53, 0xfa, 0x34, 0x38, 0xc8, 0xe7, 0x44,
|
||||
0x71, 0x0b, 0xd6, 0xd2, 0xdc, 0xcd, 0xfb, 0x8c, 0xf5, 0xb8, 0x82, 0x60, 0x4f, 0x2c, 0x7a, 0x64,
|
||||
0x1f, 0x10, 0x00, 0x9c, 0xa0, 0xbd, 0xb5, 0x80, 0x05, 0x83, 0x32, 0x7c, 0x57, 0x55, 0x14, 0xe1,
|
||||
0x39, 0x41, 0x78, 0xb3, 0x16, 0x89, 0xf0, 0x25, 0x5d, 0xff, 0x49, 0x0a, 0x77, 0x28, 0x87, 0x2b,
|
||||
0x35, 0x15, 0x05, 0x03, 0xca, 0xe7, 0x64, 0x32, 0x69, 0x01, 0xec, 0xb0, 0x41, 0x76, 0xc0, 0x46,
|
||||
0xe4, 0xcc, 0xa1, 0xe6, 0x1c, 0x29, 0x28, 0x2d, 0x48, 0xd2, 0xee, 0x87, 0x58, 0x8c, 0x7f, 0x1f,
|
||||
0x1e, 0xe6, 0x8b, 0x5e, 0xef, 0x36, 0xc1, 0x2f, 0xb9, 0xe4, 0x9e, 0xf1, 0x76, 0xa3, 0x02, 0x3b,
|
||||
0x46, 0x96, 0xbd, 0x7d, 0xae, 0x69, 0x3f, 0x0a, 0xd1, 0x28, 0xec, 0xdb, 0xa4, 0x72, 0x97, 0x6a,
|
||||
0x2a, 0xc2, 0x49, 0x71, 0x62, 0xa7, 0x02, 0xdb, 0x42, 0x3b, 0xa0, 0x58, 0xf7, 0xc9, 0x5f, 0xab,
|
||||
0x37, 0xb9, 0xc3, 0x98, 0x42, 0x85, 0x30, 0x45, 0xd0, 0xdf, 0xb3, 0xa2, 0x78, 0xbd, 0x6e, 0x31,
|
||||
0xc0, 0x7b, 0xe4, 0x00, 0xb9, 0x40, 0x4e, 0x9c, 0x20, 0x3c, 0x91, 0xbb, 0xfe, 0xc8, 0x61, 0xae,
|
||||
0x69, 0x6c, 0xda, 0xc5, 0x16, 0x13, 0xcf, 0x07, 0x8c, 0x9d, 0xac, 0xd5, 0x4f, 0x07, 0xaa, 0x0e,
|
||||
0x55, 0x85, 0xea, 0x02, 0xcc, 0x09, 0x02, 0x24, 0x1e, 0x8f, 0x73, 0x45, 0x11, 0xb6, 0x99, 0x4b,
|
||||
0xaf, 0xd8, 0xa0, 0xa6, 0x1b, 0x16, 0x7d, 0x02, 0x18, 0x94, 0xc1, 0x46, 0x80, 0x60, 0x17, 0x94,
|
||||
0x78, 0x14, 0x61, 0xcb, 0xd9, 0x47, 0x34, 0x34, 0xbf, 0xc6, 0x2e, 0x87, 0x02, 0x4a, 0x06, 0xa0,
|
||||
0x50, 0x50, 0x99, 0xc1, 0x3b, 0xe6, 0x5b, 0xba, 0x19, 0x90, 0x33, 0x80, 0x82, 0xdd, 0xca, 0x17,
|
||||
0xbf, 0x8f, 0xdd, 0x72, 0x2a, 0xa1, 0x31, 0xa4, 0x7a, 0x85, 0x27, 0x27, 0x8e, 0xf7, 0x2d, 0xa5,
|
||||
0x53, 0x86, 0x09, 0xd0, 0x6a, 0xfe, 0xb4, 0x39, 0x39, 0x31, 0xf0, 0x82, 0x0e, 0xfa, 0x18, 0xeb,
|
||||
0x1d, 0xdf, 0x75, 0x38, 0xb1, 0xd7, 0x23, 0x2c, 0xa6, 0x8c, 0x11, 0x93, 0x2c, 0x35, 0xc9, 0x5a,
|
||||
0x0b, 0x54, 0x2e, 0x9c, 0x37, 0x77, 0xde, 0xa7, 0x4d, 0xb2, 0xde, 0xac, 0xc0, 0xb4, 0x8e, 0x40,
|
||||
0xb0, 0x87, 0x1a, 0x7b, 0x19, 0x10, 0x00, 0x9c, 0x20, 0x2a, 0x22, 0x0b, 0x06, 0x65, 0xf8, 0xae,
|
||||
0x69, 0x90, 0x5b, 0x50, 0x63, 0x67, 0x0d, 0xc3, 0xb0, 0x00, 0x76, 0xd8, 0x20, 0x3b, 0x60, 0x23,
|
||||
0x72, 0xd6, 0x16, 0x08, 0x9b, 0xb5, 0x1b, 0x6d, 0x29, 0xc2, 0x49, 0x71, 0x62, 0xa7, 0x02, 0xdb,
|
||||
0x42, 0x3b, 0xa0, 0x58, 0xd7, 0xe4, 0x47, 0x1d, 0x59, 0x07, 0xef, 0x91, 0x03, 0xe4, 0x02, 0x39,
|
||||
0x71, 0x82, 0xf0, 0x44, 0xee, 0xfa, 0xc3, 0xbd, 0xa6, 0xaa, 0xb2, 0xab, 0x1d, 0x81, 0x50, 0x4d,
|
||||
0xa8, 0x2a, 0x54, 0x17, 0x60, 0x4e, 0x10, 0x20, 0xd4, 0xd8, 0xa6, 0xc7, 0x23, 0x3c, 0x6b, 0xa9,
|
||||
0xea, 0xea, 0xc0, 0x86, 0x00, 0x83, 0x32, 0xd8, 0x08, 0x10, 0xec, 0x82, 0x92, 0x0a, 0xa4, 0xb5,
|
||||
0x3e, 0x6a, 0xa4, 0xcc, 0xba, 0x19, 0x28, 0x67, 0x00, 0x51, 0x63, 0x67, 0xfd, 0x2a, 0x9b, 0x6c,
|
||||
0xfa, 0x66, 0x68, 0x13, 0x6a, 0x76, 0xf4, 0x2f, 0xe8, 0xbf, 0x03, 0x35, 0x13, 0x7f, 0x00, 0x00,
|
||||
0x4f, 0xfc, 0x7e, 0x5d, 0x89, 0x9f, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
|
||||
0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE duplicate_target_xpm[1] = {{ png, sizeof( png ), "duplicate_target_xpm" }};
|
||||
|
||||
//EOF
|
|
@ -0,0 +1,63 @@
|
|||
|
||||
/* 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, 0x02, 0xde, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x94, 0x5d, 0x48, 0x14,
|
||||
0x51, 0x14, 0xc7, 0xcf, 0xce, 0x8c, 0x48, 0xe2, 0x47, 0x42, 0x09, 0xfa, 0xa0, 0x46, 0xbd, 0xd8,
|
||||
0x4b, 0xbd, 0x05, 0x51, 0x46, 0x4a, 0x06, 0x3e, 0x54, 0x2f, 0x41, 0x21, 0x14, 0xf4, 0x18, 0x61,
|
||||
0x3e, 0x04, 0x69, 0x5f, 0xde, 0xd5, 0x9d, 0x9d, 0x3b, 0xe3, 0x6a, 0x48, 0x91, 0x59, 0x44, 0xe5,
|
||||
0xc7, 0x6e, 0x7e, 0xa4, 0x68, 0x45, 0xa5, 0xe8, 0x3e, 0xf8, 0x16, 0xf4, 0x60, 0x49, 0x09, 0x9a,
|
||||
0x0f, 0x11, 0x84, 0x21, 0x6a, 0xe2, 0x2a, 0x69, 0xeb, 0xed, 0x3f, 0xeb, 0x20, 0xeb, 0x92, 0xb9,
|
||||
0xee, 0x68, 0x0f, 0xff, 0x39, 0x73, 0xef, 0x3d, 0x73, 0x7f, 0x73, 0xce, 0x3d, 0xf7, 0x90, 0x10,
|
||||
0x82, 0xfe, 0x87, 0x96, 0x1f, 0x4e, 0xfa, 0x4d, 0x8c, 0x44, 0x54, 0x82, 0x6f, 0xec, 0xa0, 0xe5,
|
||||
0x4d, 0x46, 0xb1, 0xc9, 0x18, 0xec, 0x14, 0x14, 0xb0, 0xec, 0xd7, 0xd0, 0xfc, 0x6a, 0x09, 0xbb,
|
||||
0xa0, 0xef, 0x50, 0x10, 0xb0, 0x69, 0xd8, 0xa1, 0x90, 0x75, 0xd2, 0x12, 0xde, 0x7f, 0x58, 0x3f,
|
||||
0xb0, 0x0a, 0xd4, 0x48, 0xb4, 0xc7, 0x4b, 0x74, 0x04, 0x76, 0x5f, 0x2b, 0xd1, 0xb6, 0x8d, 0x80,
|
||||
0x82, 0xd0, 0x1d, 0xb7, 0xc7, 0x7d, 0x8a, 0xeb, 0x6a, 0x8f, 0xae, 0xab, 0x47, 0x31, 0xd6, 0x2c,
|
||||
0x98, 0xb9, 0xbe, 0x44, 0xe5, 0xf4, 0x65, 0x7f, 0x11, 0x89, 0x16, 0x59, 0x7e, 0xd7, 0x84, 0x4f,
|
||||
0x9b, 0x89, 0x96, 0xda, 0x14, 0x25, 0xf0, 0x4c, 0x92, 0x86, 0x01, 0x4c, 0x8f, 0x0e, 0x84, 0x08,
|
||||
0x34, 0x43, 0x3b, 0x5d, 0x55, 0xcd, 0x45, 0x47, 0x67, 0x9b, 0x30, 0x3c, 0x9a, 0xe0, 0x1e, 0x57,
|
||||
0xee, 0x8a, 0x23, 0xa3, 0x19, 0x68, 0xfa, 0x6c, 0xae, 0x24, 0x5a, 0x65, 0xf9, 0x25, 0x36, 0xbf,
|
||||
0xdf, 0x22, 0x49, 0x1f, 0x5a, 0x15, 0x65, 0x7e, 0x20, 0x35, 0x75, 0xd1, 0xeb, 0x70, 0x8c, 0x3f,
|
||||
0x22, 0x4a, 0x8a, 0x26, 0xa2, 0x8f, 0xba, 0x47, 0x1b, 0xe8, 0xea, 0xee, 0x14, 0x93, 0x93, 0x13,
|
||||
0xc2, 0xeb, 0x6b, 0x14, 0xdc, 0x50, 0x57, 0xb4, 0x93, 0xed, 0x78, 0x08, 0x9f, 0xc5, 0xc8, 0x33,
|
||||
0x02, 0xf0, 0x5e, 0x7f, 0x4a, 0x4a, 0xa0, 0x37, 0x31, 0x31, 0xe0, 0x95, 0xa4, 0xeb, 0x31, 0x47,
|
||||
0x84, 0xb5, 0x64, 0xa4, 0x72, 0xc4, 0x65, 0x54, 0xf8, 0xad, 0xf4, 0xae, 0x02, 0x21, 0x85, 0xc9,
|
||||
0x88, 0x66, 0x7e, 0x2c, 0x3b, 0x5b, 0xf8, 0x24, 0xe9, 0x27, 0xd2, 0x59, 0x88, 0xb9, 0xdb, 0x8f,
|
||||
0x89, 0xb6, 0x6f, 0xe4, 0x8c, 0x5e, 0x99, 0x6b, 0x05, 0x6a, 0x9e, 0x0b, 0x51, 0x05, 0x15, 0xa6,
|
||||
0xf4, 0x45, 0x82, 0xcc, 0xb3, 0xf1, 0x39, 0x1c, 0x9f, 0x86, 0x32, 0x32, 0x44, 0x5f, 0x52, 0xd2,
|
||||
0x1c, 0x22, 0x5c, 0xc0, 0x19, 0x0e, 0xac, 0x5f, 0x75, 0x2c, 0x54, 0x75, 0x83, 0xd0, 0x2f, 0x6b,
|
||||
0x6c, 0xda, 0x41, 0x80, 0x26, 0x2f, 0xf3, 0x4b, 0x3e, 0x44, 0x3e, 0x1c, 0x16, 0x4d, 0x3e, 0x22,
|
||||
0x98, 0x6f, 0x93, 0xe5, 0xc5, 0xd1, 0xac, 0x2c, 0x31, 0x95, 0x93, 0x23, 0xba, 0xe3, 0xe3, 0x67,
|
||||
0x00, 0x3f, 0x11, 0xed, 0x3d, 0x9a, 0x85, 0xc6, 0xad, 0x72, 0xfe, 0x66, 0x56, 0xde, 0x0d, 0xbd,
|
||||
0xd4, 0x00, 0x6c, 0x2e, 0x72, 0x03, 0xc0, 0xf6, 0x22, 0x65, 0x9f, 0x5f, 0x27, 0x24, 0xcc, 0x8e,
|
||||
0x64, 0x66, 0x9a, 0xe9, 0x9b, 0x40, 0xb9, 0xcb, 0xff, 0x06, 0xad, 0xad, 0x05, 0x89, 0x49, 0x4f,
|
||||
0x34, 0x43, 0xad, 0x63, 0x8c, 0x29, 0x91, 0x9b, 0xd4, 0x13, 0xc5, 0xa1, 0x10, 0x34, 0x40, 0x83,
|
||||
0xcd, 0x92, 0xc4, 0xec, 0xb6, 0xa0, 0xf7, 0xeb, 0x5d, 0xca, 0x06, 0xa2, 0x03, 0x6b, 0xdd, 0xa7,
|
||||
0xd8, 0x1a, 0x24, 0xa3, 0x76, 0xc8, 0x1f, 0xa5, 0xda, 0xed, 0x80, 0xcc, 0x0d, 0x4a, 0xa1, 0x6b,
|
||||
0x50, 0x0d, 0x3a, 0x46, 0x7d, 0xc8, 0x32, 0xba, 0x65, 0xcd, 0x87, 0xcb, 0x6f, 0x0f, 0x54, 0x4e,
|
||||
0x2a, 0x6c, 0x27, 0x54, 0x0b, 0x95, 0x58, 0xd6, 0xbc, 0x0e, 0x3c, 0xf4, 0x03, 0x4e, 0x2a, 0xdb,
|
||||
0x1c, 0x90, 0x09, 0x71, 0x52, 0x7e, 0x65, 0x55, 0xe5, 0x2e, 0x5d, 0xd7, 0x8a, 0x74, 0x9d, 0x65,
|
||||
0x60, 0xee, 0x90, 0x05, 0xeb, 0x85, 0xba, 0x2d, 0x98, 0x6d, 0x50, 0xad, 0x61, 0x18, 0xbb, 0x8d,
|
||||
0x6a, 0xde, 0x83, 0x4e, 0xf2, 0x56, 0xf7, 0xb8, 0x7b, 0x54, 0x55, 0x4d, 0x0f, 0xf3, 0xb9, 0x6b,
|
||||
0x45, 0x69, 0x1b, 0x54, 0x62, 0x54, 0x6b, 0x17, 0xba, 0x5e, 0x74, 0xf4, 0xa3, 0x37, 0xfa, 0xd1,
|
||||
0x1b, 0xfd, 0xdc, 0x70, 0x2f, 0xab, 0x4a, 0x7d, 0x93, 0xe6, 0x4c, 0x3b, 0x0e, 0x9f, 0x96, 0x2d,
|
||||
0x8b, 0x08, 0x65, 0x11, 0x87, 0xf6, 0x75, 0xd5, 0xe5, 0x71, 0x9e, 0x87, 0xcf, 0xf3, 0xad, 0x3a,
|
||||
0xa3, 0x33, 0x50, 0x7f, 0x01, 0xcf, 0x3b, 0x88, 0x2e, 0xd2, 0x2e, 0x33, 0xf9, 0xdc, 0x66, 0x57,
|
||||
0x5d, 0x31, 0xf4, 0xd4, 0x82, 0x37, 0x98, 0x63, 0xce, 0xd5, 0x9a, 0x62, 0x5e, 0x7c, 0x12, 0xef,
|
||||
0x57, 0x36, 0xef, 0x1e, 0x31, 0xaa, 0x0b, 0x95, 0xb5, 0x59, 0x65, 0xe5, 0x78, 0xa2, 0xf2, 0x6e,
|
||||
0x1a, 0x65, 0x87, 0xb9, 0xee, 0x7a, 0x60, 0xb7, 0x33, 0xf8, 0xff, 0x72, 0x31, 0xc3, 0xd5, 0x84,
|
||||
0xb4, 0x15, 0xe2, 0xac, 0x8e, 0xc1, 0xdf, 0xb1, 0xb5, 0x2d, 0xa8, 0x82, 0x2e, 0xda, 0xee, 0x75,
|
||||
0xb1, 0xe8, 0x0f, 0xc0, 0x74, 0xed, 0xb7, 0x43, 0x22, 0xa0, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x49,
|
||||
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE duplicate_zone_xpm[1] = {{ png, sizeof( png ), "duplicate_zone_xpm" }};
|
||||
|
||||
//EOF
|
|
@ -0,0 +1,67 @@
|
|||
|
||||
/* Do not modify this file, it was automatically generated by the
|
||||
* PNG2cpp CMake script, using a *.png file as input.
|
||||
*/
|
||||
|
||||
#include <bitmaps.h>
|
||||
|
||||
static const unsigned char png[] = {
|
||||
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
|
||||
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
|
||||
0xce, 0x00, 0x00, 0x03, 0x21, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x94, 0x4b, 0x4c, 0x13,
|
||||
0x51, 0x14, 0x86, 0x6f, 0xdb, 0x81, 0x96, 0xb6, 0xd8, 0x97, 0x7d, 0x4c, 0xa7, 0x9d, 0x3e, 0x10,
|
||||
0x6c, 0x30, 0x02, 0x0b, 0x7c, 0xe0, 0x13, 0xad, 0xb4, 0x18, 0x4c, 0x04, 0x12, 0xa5, 0xc4, 0x85,
|
||||
0x21, 0xb8, 0x75, 0x67, 0x5c, 0xb0, 0x76, 0x6f, 0x5c, 0xf9, 0x88, 0x89, 0xc1, 0x40, 0x81, 0xc6,
|
||||
0x40, 0x14, 0x62, 0x5c, 0x01, 0x01, 0x0c, 0x0b, 0x13, 0x62, 0x10, 0x0d, 0x89, 0xdd, 0xb8, 0x37,
|
||||
0x90, 0xa0, 0x96, 0x87, 0x8d, 0xc7, 0xfb, 0x8f, 0x14, 0x8b, 0xb1, 0xb1, 0xa5, 0xc8, 0x24, 0x7f,
|
||||
0x32, 0x3d, 0x9d, 0x3b, 0xdf, 0x3d, 0xe7, 0xff, 0xef, 0x30, 0x22, 0x62, 0x7b, 0xa1, 0x7f, 0x3f,
|
||||
0xc0, 0xd8, 0x65, 0xae, 0xe1, 0xbd, 0x00, 0xc5, 0xb8, 0x26, 0xff, 0x1b, 0x88, 0x5f, 0x36, 0xae,
|
||||
0xae, 0x12, 0x81, 0x4d, 0x6b, 0xd4, 0x6c, 0x99, 0xdf, 0xf7, 0x70, 0xd5, 0xef, 0x2a, 0x88, 0x5f,
|
||||
0x4d, 0xda, 0x12, 0xb6, 0xec, 0xf7, 0x6a, 0x37, 0x24, 0xc9, 0x41, 0x55, 0x41, 0x03, 0xdd, 0x88,
|
||||
0xb9, 0xd6, 0xcb, 0x74, 0xaa, 0x35, 0x5e, 0xbf, 0xc7, 0xff, 0xd7, 0x16, 0x0d, 0x02, 0x44, 0xa7,
|
||||
0x55, 0xaf, 0x57, 0x04, 0x25, 0xf2, 0xf9, 0x7c, 0x14, 0x0c, 0x06, 0xe8, 0x5c, 0x83, 0x95, 0x36,
|
||||
0x16, 0x6b, 0xe8, 0xd3, 0x4c, 0x2d, 0x9d, 0x39, 0x66, 0x4a, 0xe9, 0x75, 0xec, 0x55, 0x51, 0x20,
|
||||
0x8c, 0xab, 0x54, 0x60, 0x2b, 0x07, 0x2a, 0x7c, 0x64, 0x30, 0xe8, 0x51, 0x20, 0xbf, 0xdf, 0x4f,
|
||||
0xe1, 0x13, 0x56, 0xfa, 0xfe, 0xc1, 0x47, 0xe9, 0x05, 0x33, 0x2d, 0xcd, 0xd5, 0x92, 0x68, 0x17,
|
||||
0x56, 0x35, 0x1a, 0xd6, 0x5d, 0x0c, 0xa8, 0xcb, 0x69, 0xd7, 0xa5, 0x65, 0xd9, 0xab, 0x40, 0xb6,
|
||||
0x40, 0x27, 0x33, 0x20, 0x13, 0xa5, 0xdf, 0x3b, 0x69, 0xe4, 0x41, 0x25, 0xed, 0x33, 0xaa, 0x92,
|
||||
0x05, 0x83, 0x36, 0x23, 0x1c, 0xe3, 0xc6, 0xbf, 0x76, 0xb9, 0xec, 0x14, 0x08, 0x04, 0x14, 0x00,
|
||||
0x24, 0x8a, 0x22, 0x1d, 0x0e, 0x19, 0x69, 0xe4, 0x61, 0x35, 0x07, 0x84, 0x14, 0xf5, 0xdd, 0xad,
|
||||
0x26, 0xb5, 0x5a, 0xf5, 0x83, 0xaf, 0xb9, 0xbe, 0x99, 0x4a, 0x39, 0x5f, 0xd0, 0x30, 0x22, 0x8c,
|
||||
0x74, 0x55, 0x72, 0xe3, 0xcf, 0x1e, 0xb5, 0x6e, 0x29, 0x54, 0x61, 0x24, 0x6d, 0xa9, 0x40, 0xa2,
|
||||
0xcb, 0xfc, 0x5b, 0x4e, 0x33, 0xa9, 0x54, 0x2a, 0x2c, 0x9c, 0xc5, 0x3a, 0xae, 0xf3, 0x85, 0x8e,
|
||||
0xae, 0xa7, 0xbb, 0xc3, 0xb9, 0xbe, 0xb1, 0x58, 0xa7, 0x8c, 0x0a, 0x7a, 0x76, 0xbf, 0x9a, 0x4c,
|
||||
0x26, 0x13, 0x79, 0xbd, 0x5e, 0xb2, 0x58, 0x2c, 0x64, 0xb3, 0x71, 0x78, 0x28, 0x44, 0x82, 0xc0,
|
||||
0x56, 0x8b, 0xf1, 0xa8, 0x1e, 0x11, 0x46, 0xba, 0xd2, 0x0b, 0x16, 0xc5, 0x13, 0x8c, 0xca, 0x6c,
|
||||
0x36, 0x29, 0x10, 0x78, 0x26, 0x49, 0x12, 0x19, 0x8d, 0x7a, 0xd2, 0x6b, 0xd9, 0x48, 0x66, 0x5d,
|
||||
0x34, 0x2e, 0x1f, 0xba, 0x38, 0xe8, 0xbe, 0x59, 0x50, 0xbc, 0x71, 0x4e, 0x4e, 0x1f, 0x31, 0xa4,
|
||||
0x96, 0xe6, 0xea, 0xb8, 0xf1, 0x0e, 0x05, 0xb4, 0xdf, 0x66, 0x22, 0xab, 0xd5, 0x4a, 0x2e, 0x97,
|
||||
0x93, 0x3c, 0x1e, 0x89, 0x04, 0x0d, 0x4b, 0x21, 0xa1, 0x78, 0xbe, 0x39, 0xee, 0xa9, 0x69, 0x19,
|
||||
0x95, 0x92, 0xad, 0xe3, 0xde, 0xcf, 0x91, 0x21, 0xf7, 0xad, 0x42, 0xce, 0x91, 0x16, 0xe7, 0x04,
|
||||
0x11, 0x46, 0xba, 0x60, 0xbc, 0xc3, 0x6e, 0xe2, 0xe3, 0x3a, 0x48, 0xe5, 0xe5, 0x06, 0x8c, 0xec,
|
||||
0x2b, 0x7f, 0xe6, 0x14, 0x9e, 0x6d, 0xea, 0x97, 0xea, 0x5a, 0x46, 0x3d, 0xc9, 0xce, 0x77, 0x01,
|
||||
0xea, 0x5c, 0x08, 0x50, 0xeb, 0x44, 0x6e, 0x58, 0xce, 0x56, 0x71, 0x4e, 0x10, 0x61, 0xa4, 0x0b,
|
||||
0xc6, 0x97, 0x96, 0xb0, 0x2f, 0xc6, 0x32, 0x36, 0x94, 0xe9, 0xa4, 0x31, 0x61, 0x37, 0x46, 0xe2,
|
||||
0xe2, 0xa3, 0xe6, 0x84, 0x38, 0xd9, 0x3e, 0xe3, 0x5b, 0x8b, 0x71, 0x58, 0x74, 0xc8, 0xfd, 0x31,
|
||||
0x3a, 0xe0, 0x7e, 0x1e, 0xee, 0x95, 0xaa, 0x76, 0xf2, 0x51, 0x45, 0x84, 0x67, 0xb3, 0x6b, 0xe8,
|
||||
0x04, 0x10, 0xdc, 0x5f, 0x78, 0xe2, 0x3c, 0xde, 0x36, 0x2d, 0x7f, 0x8b, 0xcd, 0x07, 0xa8, 0x39,
|
||||
0xe1, 0x7e, 0x8c, 0x5a, 0xa4, 0x5f, 0xbc, 0xc6, 0xa1, 0xb7, 0x8b, 0xfa, 0x7a, 0xff, 0xf2, 0xc4,
|
||||
0x93, 0x44, 0x27, 0x80, 0x84, 0x9f, 0x3a, 0xbb, 0x33, 0xa0, 0xc8, 0xa0, 0xeb, 0x05, 0x6a, 0x91,
|
||||
0x3e, 0xf1, 0xce, 0xa5, 0x31, 0x69, 0x25, 0x7b, 0x8c, 0xf9, 0x80, 0xe4, 0xcc, 0x39, 0x41, 0xba,
|
||||
0x60, 0x3c, 0x3c, 0xc1, 0xb8, 0x00, 0x80, 0x3a, 0xe6, 0xfc, 0x8a, 0x47, 0xed, 0x53, 0xf2, 0xaa,
|
||||
0x52, 0x9b, 0x92, 0x53, 0x1d, 0x6f, 0xfd, 0xdb, 0x3c, 0x2b, 0xe8, 0xc3, 0x88, 0x08, 0x23, 0x5d,
|
||||
0x78, 0x29, 0x3c, 0x41, 0x17, 0x10, 0x7e, 0x2b, 0xb5, 0xf9, 0xed, 0xb5, 0xab, 0x6f, 0x7c, 0xe9,
|
||||
0x68, 0x42, 0x7c, 0x59, 0x30, 0x48, 0x99, 0x3f, 0xdf, 0x21, 0x76, 0x0a, 0xe3, 0xe1, 0x09, 0xc6,
|
||||
0x85, 0x4e, 0xf0, 0xf2, 0x68, 0x5c, 0x5c, 0x44, 0x2d, 0x3a, 0x20, 0x4e, 0xb5, 0x4d, 0x7a, 0xd3,
|
||||
0xfc, 0x7e, 0xac, 0x71, 0x82, 0x09, 0x3b, 0x02, 0x65, 0x60, 0x48, 0x57, 0xae, 0x30, 0x44, 0xe3,
|
||||
0xee, 0x2e, 0xbe, 0x91, 0xf1, 0x2b, 0x09, 0xa6, 0xc9, 0xdb, 0xa3, 0x5c, 0x42, 0x84, 0x91, 0x2e,
|
||||
0x18, 0x0f, 0x4f, 0x94, 0x8e, 0x78, 0x27, 0x80, 0x84, 0x7b, 0x1d, 0x0d, 0xd9, 0x90, 0xa2, 0x40,
|
||||
0xca, 0xce, 0x79, 0x84, 0x91, 0x2e, 0x18, 0x0f, 0x4f, 0x30, 0xae, 0x3f, 0x3b, 0xd9, 0x15, 0x50,
|
||||
0xb6, 0x67, 0x30, 0x1e, 0x9e, 0xfc, 0x0d, 0xb2, 0x2b, 0xa0, 0x2d, 0xcf, 0x78, 0xba, 0x32, 0xc6,
|
||||
0xff, 0x37, 0x50, 0x3e, 0xfa, 0x09, 0x65, 0x16, 0x60, 0xbf, 0x0d, 0xb1, 0xac, 0x3b, 0x00, 0x00,
|
||||
0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE move_target_xpm[1] = {{ png, sizeof( png ), "move_target_xpm" }};
|
||||
|
||||
//EOF
|
|
@ -0,0 +1,62 @@
|
|||
|
||||
/* 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, 0x02, 0xcf, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x95, 0xcb, 0x4f, 0x13,
|
||||
0x51, 0x14, 0xc6, 0x6f, 0xa2, 0x74, 0xd1, 0x44, 0x8c, 0x1b, 0x71, 0xa6, 0x50, 0x68, 0x54, 0x8c,
|
||||
0xb2, 0x70, 0xa1, 0x46, 0xdc, 0x35, 0xa9, 0x76, 0x30, 0x43, 0x42, 0x21, 0xe1, 0x15, 0x56, 0x4d,
|
||||
0x17, 0xd6, 0x08, 0xb2, 0x31, 0x04, 0x31, 0xd8, 0x19, 0xe2, 0x3f, 0x60, 0x7c, 0x2c, 0x94, 0x68,
|
||||
0x6b, 0xa0, 0x85, 0x06, 0x5f, 0x05, 0x4d, 0x11, 0xd3, 0xd6, 0xc2, 0x46, 0x4c, 0x8c, 0x01, 0x8d,
|
||||
0x24, 0xa2, 0xae, 0x74, 0x85, 0x1b, 0x12, 0x10, 0x23, 0xc9, 0xf8, 0x9d, 0xe1, 0x42, 0x0a, 0x42,
|
||||
0xd2, 0x99, 0x41, 0x17, 0xbf, 0xde, 0x3b, 0xa7, 0x33, 0xe7, 0xbb, 0xe7, 0x7c, 0x67, 0x5a, 0xa6,
|
||||
0x69, 0x1a, 0xfb, 0x1f, 0xac, 0x7c, 0x28, 0x4c, 0x64, 0x2a, 0x3b, 0x6f, 0x18, 0x85, 0x05, 0x41,
|
||||
0x61, 0xfe, 0x42, 0x2b, 0x0f, 0x8d, 0x81, 0xc7, 0x06, 0x19, 0x07, 0x6e, 0xa3, 0x42, 0xf4, 0x60,
|
||||
0x78, 0x8d, 0x10, 0x7b, 0x88, 0xb5, 0x6f, 0x5d, 0xec, 0x6f, 0x92, 0x56, 0x84, 0x5e, 0x82, 0x41,
|
||||
0x70, 0x11, 0xdc, 0xe4, 0x95, 0xc6, 0xb7, 0x5b, 0x68, 0xcc, 0xae, 0xda, 0x6b, 0x54, 0x55, 0xf5,
|
||||
0x2b, 0x8a, 0x32, 0x09, 0xee, 0xb6, 0x2a, 0xad, 0xc7, 0x11, 0x1f, 0xe6, 0x07, 0x20, 0xd1, 0x51,
|
||||
0xab, 0x42, 0x94, 0x2c, 0x8c, 0xe4, 0x41, 0xa0, 0x81, 0x79, 0xbe, 0xfe, 0x90, 0x3b, 0xe5, 0x3d,
|
||||
0xac, 0x87, 0x9d, 0xc4, 0xf7, 0x95, 0xb8, 0xb7, 0x1d, 0xeb, 0x33, 0x2b, 0x42, 0xe3, 0x58, 0xeb,
|
||||
0x91, 0x78, 0x06, 0x7c, 0x03, 0xf6, 0x1c, 0xd1, 0xdf, 0x60, 0x09, 0x2c, 0x80, 0x03, 0x5c, 0xc0,
|
||||
0xa4, 0x50, 0x88, 0xa5, 0xb1, 0x9e, 0x43, 0xa2, 0x31, 0xb0, 0x88, 0xf6, 0x9d, 0xc1, 0x7a, 0x8f,
|
||||
0x0b, 0x65, 0xc0, 0x23, 0xbe, 0xbf, 0x85, 0xfb, 0xfc, 0xbc, 0x03, 0xa6, 0x2a, 0x7a, 0x02, 0x12,
|
||||
0x10, 0xf0, 0x20, 0xd9, 0x2f, 0x9e, 0x94, 0x98, 0xb4, 0x75, 0xd8, 0x0e, 0xb3, 0xcb, 0xac, 0x1c,
|
||||
0xfb, 0x09, 0x3a, 0x44, 0x57, 0x57, 0x57, 0x11, 0x9e, 0x49, 0x5a, 0x19, 0x86, 0x04, 0xb8, 0xde,
|
||||
0xae, 0xb4, 0x3b, 0x91, 0xf0, 0x2a, 0xf0, 0x15, 0x74, 0x17, 0x1c, 0x45, 0xec, 0x15, 0x18, 0xc2,
|
||||
0x21, 0x6a, 0xb8, 0xb8, 0x8a, 0xeb, 0x56, 0xf0, 0xda, 0xfc, 0x78, 0xab, 0x6c, 0x08, 0xeb, 0x0b,
|
||||
0x30, 0xc0, 0xdb, 0x43, 0x93, 0x16, 0x01, 0x29, 0x9b, 0x62, 0x3b, 0x02, 0x91, 0x8f, 0x60, 0xae,
|
||||
0x45, 0x69, 0x29, 0x44, 0xec, 0x0b, 0x09, 0x49, 0x51, 0x67, 0xc5, 0xd9, 0x01, 0xb1, 0xcd, 0xdc,
|
||||
0x0b, 0xbb, 0x91, 0x10, 0xeb, 0xc7, 0x7d, 0x51, 0x54, 0x15, 0xa0, 0xaa, 0xb0, 0xb6, 0xe1, 0xfa,
|
||||
0xc2, 0xa1, 0xdb, 0xbb, 0xeb, 0xe5, 0x61, 0xc7, 0xac, 0x2f, 0x55, 0x32, 0xe7, 0x1d, 0x14, 0x2f,
|
||||
0x59, 0x17, 0x5a, 0x21, 0xed, 0x50, 0x1c, 0xe4, 0xd5, 0x77, 0xf0, 0x55, 0xee, 0xdf, 0x7f, 0x4c,
|
||||
0x1e, 0x2e, 0x9e, 0x6d, 0x9e, 0x76, 0x69, 0xcd, 0xef, 0x5d, 0x9a, 0x2f, 0xbd, 0xb5, 0x98, 0x31,
|
||||
0xa1, 0x10, 0x8b, 0xf1, 0x77, 0xad, 0xb3, 0xbb, 0xe7, 0x8a, 0xe6, 0x0b, 0x57, 0x8c, 0x56, 0xc5,
|
||||
0x85, 0x4c, 0xdd, 0x44, 0xe9, 0x52, 0x13, 0xc4, 0xa4, 0x41, 0xf1, 0x93, 0x14, 0x13, 0x9f, 0x7a,
|
||||
0x22, 0x8e, 0xf2, 0xad, 0x7e, 0xbd, 0x83, 0xfc, 0x07, 0x32, 0x99, 0x07, 0x1f, 0xdc, 0x77, 0x0e,
|
||||
0x56, 0x37, 0xf4, 0x9e, 0x98, 0xa6, 0x77, 0xea, 0xf4, 0xfd, 0xa2, 0xca, 0xda, 0x71, 0xe7, 0x42,
|
||||
0xd3, 0x94, 0x4b, 0xab, 0x8a, 0x8b, 0xbd, 0x94, 0xcf, 0xdb, 0x2f, 0xb4, 0x40, 0xb4, 0x63, 0x33,
|
||||
0x21, 0x32, 0xd6, 0x9d, 0x0f, 0xae, 0x1b, 0xbb, 0x02, 0x72, 0xa2, 0xf8, 0x33, 0x55, 0x42, 0x22,
|
||||
0x9e, 0x07, 0x45, 0x81, 0x55, 0x21, 0xef, 0xc0, 0xbe, 0x04, 0xc5, 0xbc, 0x7d, 0xc2, 0xb5, 0xea,
|
||||
0x11, 0xc7, 0x7c, 0x6e, 0x1b, 0x0d, 0xfd, 0x79, 0xd1, 0x74, 0x91, 0xf1, 0xe4, 0x09, 0xb5, 0x8b,
|
||||
0x04, 0x88, 0xc6, 0xb7, 0x65, 0xba, 0x47, 0x75, 0x59, 0xe7, 0x4f, 0x3d, 0x96, 0x75, 0x2e, 0x36,
|
||||
0xbe, 0x2b, 0x5b, 0xe7, 0x99, 0x21, 0x21, 0x1a, 0x61, 0x9a, 0x2e, 0x4a, 0x4a, 0x9e, 0x50, 0x15,
|
||||
0x04, 0x5d, 0xeb, 0xb1, 0xa9, 0xf5, 0xb1, 0x86, 0x37, 0xa5, 0xcb, 0x52, 0x5c, 0x78, 0x6e, 0x58,
|
||||
0x48, 0xef, 0x3f, 0x4e, 0x48, 0x27, 0x25, 0xe3, 0xc9, 0x13, 0x6a, 0x17, 0x55, 0x42, 0xc9, 0xa5,
|
||||
0xa8, 0x30, 0x43, 0x31, 0x29, 0x26, 0x64, 0x6b, 0x33, 0x25, 0xcb, 0xd8, 0x8f, 0xb8, 0xd3, 0x6c,
|
||||
0xa7, 0x29, 0xa1, 0x55, 0x31, 0x9a, 0x2e, 0xda, 0x6f, 0x36, 0x0c, 0x52, 0x54, 0xf4, 0xe3, 0x20,
|
||||
0xa9, 0xfa, 0x38, 0xdb, 0x61, 0xca, 0xa3, 0x5c, 0x68, 0x84, 0x69, 0xba, 0xc8, 0x78, 0xf2, 0x44,
|
||||
0xaf, 0x08, 0x95, 0x90, 0x88, 0x27, 0xb2, 0xf7, 0x54, 0xae, 0x88, 0x25, 0x21, 0xfd, 0xe4, 0x18,
|
||||
0x61, 0x9a, 0x2e, 0x32, 0x9e, 0x3c, 0xa1, 0x76, 0x6d, 0xac, 0x64, 0x5b, 0x84, 0x72, 0x3d, 0x23,
|
||||
0xe3, 0xc9, 0x93, 0xcd, 0x44, 0xb6, 0x45, 0x68, 0xcd, 0x33, 0x4c, 0xd7, 0xaa, 0xf1, 0xff, 0x4c,
|
||||
0x28, 0x1f, 0xfe, 0x00, 0x7b, 0xdc, 0xc2, 0x19, 0xcd, 0xc3, 0x9e, 0x72, 0x00, 0x00, 0x00, 0x00,
|
||||
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
|
||||
};
|
||||
|
||||
const BITMAP_OPAQUE move_zone_xpm[1] = {{ png, sizeof( png ), "move_zone_xpm" }};
|
||||
|
||||
//EOF
|
|
@ -0,0 +1,141 @@
|
|||
<?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="26"
|
||||
width="26"
|
||||
version="1.1"
|
||||
id="svg18970"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="duplicate_footprint.svg">
|
||||
<metadata
|
||||
id="metadata18987">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1005"
|
||||
id="namedview18985"
|
||||
showgrid="true"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="18.169469"
|
||||
inkscape:cy="8.9416575"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg18970"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3029"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs18972" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#g3527"
|
||||
id="use3537"
|
||||
transform="translate(0,12)"
|
||||
width="26"
|
||||
height="26"
|
||||
style="opacity:0.75" />
|
||||
<g
|
||||
id="g3527"
|
||||
transform="translate(-1,1)">
|
||||
<rect
|
||||
y="2.499999"
|
||||
x="2.5"
|
||||
height="7"
|
||||
width="10"
|
||||
id="rect3503"
|
||||
style="fill:none;stroke:#545454;stroke-width:1;stroke-opacity:1" />
|
||||
<rect
|
||||
y="1.5"
|
||||
x="3.5"
|
||||
height="3"
|
||||
width="2"
|
||||
id="rect3505"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
|
||||
<rect
|
||||
y="1.5"
|
||||
x="6.5"
|
||||
height="3"
|
||||
width="2"
|
||||
id="rect3509"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
|
||||
id="rect3514"
|
||||
width="2"
|
||||
height="3"
|
||||
x="9.5"
|
||||
y="1.5" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
|
||||
id="rect3516"
|
||||
width="2"
|
||||
height="3"
|
||||
x="3.5"
|
||||
y="7.5" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
|
||||
id="rect3518"
|
||||
width="2"
|
||||
height="3"
|
||||
x="6.5"
|
||||
y="7.5" />
|
||||
<rect
|
||||
y="7.5"
|
||||
x="9.5"
|
||||
height="3"
|
||||
width="2"
|
||||
id="rect3520"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
|
||||
</g>
|
||||
<use
|
||||
style="opacity:0.75"
|
||||
height="26"
|
||||
width="26"
|
||||
transform="translate(13,12)"
|
||||
id="use3539"
|
||||
xlink:href="#g3527"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#g3527"
|
||||
id="use3559"
|
||||
transform="translate(13,0)"
|
||||
width="26"
|
||||
height="26"
|
||||
style="opacity:0.75" />
|
||||
</svg>
|
After Width: | Height: | Size: 3.5 KiB |
|
@ -0,0 +1,174 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<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"
|
||||
version="1.1"
|
||||
width="26"
|
||||
height="26"
|
||||
id="svg18970">
|
||||
<metadata
|
||||
id="metadata18987">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs18972">
|
||||
<mask
|
||||
id="w">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3301"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="x">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3304"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="q">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3307"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="v">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3310"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="r">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3313"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="u">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3316"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="s">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3319"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="t">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3322"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
</defs>
|
||||
<g
|
||||
transform="translate(-1,-2)"
|
||||
id="g3744">
|
||||
<path
|
||||
d="M 12,10 A 5,5 0 1 1 2,10 5,5 0 1 1 12,10 z"
|
||||
transform="translate(0.5,-1.5)"
|
||||
id="path3680"
|
||||
style="fill:#fcd40f;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<path
|
||||
d="m 12.488902,8.4889022 -5.1095923,0 0.1095925,-5 c 0,0 -5.09534,1.1698255 -5,5 3.454097,-0.014719 4.7357278,0 4.7357278,0 L 7.4889022,13.488902 C 11.423077,13.335543 12.708024,9.9574012 12.488902,8.4889022"
|
||||
id="path3736"
|
||||
style="fill:#000000;stroke:none" />
|
||||
<path
|
||||
d="m 7.5,2 0,13"
|
||||
id="path3676"
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
d="M 14,8.5 1,8.5"
|
||||
id="path3678"
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
d="M 6.5,4.625 C 5.0912245,4.9882125 3.9882125,6.0912245 3.625,7.5 l 2.375,0 0.5,0 0,-0.5 0,-2.375 z"
|
||||
id="path3733"
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
|
||||
<path
|
||||
d="M 11.375,7.5 C 11.011788,6.0912245 9.908776,4.9882125 8.5,4.625 l 0,2.375 0,0.5 0.5,0 2.375,0 z"
|
||||
id="path3738"
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
|
||||
<path
|
||||
d="M 8.5,12.375 C 9.908776,12.011788 11.011788,10.908776 11.375,9.5 L 9,9.5 l -0.5,0 0,0.5 0,2.375 z"
|
||||
id="path3740"
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
|
||||
<path
|
||||
d="m 3.625,9.5 c 0.363212,1.408776 1.466224,2.511788 2.875,2.875 L 6.5,10 6.5,9.5 6,9.5 3.625,9.5 z"
|
||||
id="path3742"
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
|
||||
</g>
|
||||
<use
|
||||
transform="translate(13,0)"
|
||||
id="use3755"
|
||||
style="opacity:0.75"
|
||||
x="0"
|
||||
y="0"
|
||||
width="26"
|
||||
height="26"
|
||||
xlink:href="#g3744" />
|
||||
<use
|
||||
transform="translate(13,13)"
|
||||
id="use3670"
|
||||
style="opacity:0.75"
|
||||
x="0"
|
||||
y="0"
|
||||
width="26"
|
||||
height="26"
|
||||
xlink:href="#g3744" />
|
||||
<use
|
||||
transform="translate(0,13)"
|
||||
id="use3672"
|
||||
style="opacity:0.75"
|
||||
x="0"
|
||||
y="0"
|
||||
width="26"
|
||||
height="26"
|
||||
xlink:href="#g3744" />
|
||||
</svg>
|
After Width: | Height: | Size: 6.6 KiB |
|
@ -0,0 +1,161 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<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"
|
||||
version="1.1"
|
||||
width="26"
|
||||
height="26"
|
||||
id="svg18970">
|
||||
<metadata
|
||||
id="metadata18987">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs18972">
|
||||
<mask
|
||||
id="w">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3301"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="x">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3304"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="q">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3307"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="v">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3310"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="r">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3313"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="u">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3316"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="s">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3319"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="t">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3322"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
</defs>
|
||||
<g
|
||||
transform="translate(20,-1.5)"
|
||||
id="g3939">
|
||||
<path
|
||||
d="m -15.5,8 5,0 2.1269625,4.84375"
|
||||
id="path3917"
|
||||
style="fill:none;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
d="m -18.5,3 0,10 8.25,0 -1.25,-3.25 c -0.781147,0.971226 -1.5,1.75 -3,1.75 -1.932997,0 -3.5,-1.5670035 -3.5,-3.5 0,-1.9329967 1.567003,-3.5 3.5,-3.5 1.295542,0 2.33235,0.4225334 2.9375,1.46875 l 1.9375,0 L -8.5,8.5 -8.5,3 z"
|
||||
id="rect3811"
|
||||
style="fill:#008000;fill-opacity:0.62745098;stroke:#008000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<path
|
||||
d="m -13.46875,7 a 1.53125,1.53125 0 1 1 -3.0625,0 1.53125,1.53125 0 1 1 3.0625,0 z"
|
||||
transform="matrix(1.0081529,0,0,1.0081529,0.57855937,0.9429297)"
|
||||
id="path3915"
|
||||
style="fill:#eeeeec;stroke:#888a85;stroke-width:0.99191302;stroke-opacity:1" />
|
||||
</g>
|
||||
<use
|
||||
id="use4178"
|
||||
x="0"
|
||||
y="0"
|
||||
width="26"
|
||||
height="26"
|
||||
xlink:href="#g3939" />
|
||||
<use
|
||||
transform="translate(13,0)"
|
||||
id="use4180"
|
||||
style="opacity:0.75"
|
||||
x="0"
|
||||
y="0"
|
||||
width="26"
|
||||
height="26"
|
||||
xlink:href="#g3939" />
|
||||
<use
|
||||
transform="translate(13,13)"
|
||||
id="use4182"
|
||||
style="opacity:0.75"
|
||||
x="0"
|
||||
y="0"
|
||||
width="26"
|
||||
height="26"
|
||||
xlink:href="#g3939" />
|
||||
<use
|
||||
transform="translate(0,13)"
|
||||
id="use4184"
|
||||
style="opacity:0.75"
|
||||
x="0"
|
||||
y="0"
|
||||
width="26"
|
||||
height="26"
|
||||
xlink:href="#g3939" />
|
||||
</svg>
|
After Width: | Height: | Size: 4.1 KiB |
|
@ -0,0 +1,145 @@
|
|||
<?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="26"
|
||||
width="26"
|
||||
version="1.1"
|
||||
id="svg18970"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="duplicate_footprint.svg">
|
||||
<metadata
|
||||
id="metadata18987">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1005"
|
||||
id="namedview18985"
|
||||
showgrid="false"
|
||||
inkscape:zoom="8"
|
||||
inkscape:cx="17.037549"
|
||||
inkscape:cy="12.025341"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg18970"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3029"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs18972" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#g3527"
|
||||
id="use3537"
|
||||
transform="translate(9,11)"
|
||||
width="26"
|
||||
height="26"
|
||||
style="opacity:0.75" />
|
||||
<g
|
||||
id="g3527">
|
||||
<path
|
||||
transform="matrix(2.5100458,0,0,2.3016337,-3.0200916,-8.6115753)"
|
||||
sodipodi:open="true"
|
||||
sodipodi:end="8.3331823"
|
||||
sodipodi:start="4.5226534"
|
||||
d="M 1.8770992,6.360044 A 0.65165043,0.65165043 0 1 1 1.6995435,7.578251"
|
||||
sodipodi:ry="0.65165043"
|
||||
sodipodi:rx="0.65165043"
|
||||
sodipodi:cy="7"
|
||||
sodipodi:cx="2"
|
||||
id="path3525"
|
||||
style="fill:none;fill-opacity:1;stroke:#545454;stroke-width:0.41604573000000000;stroke-opacity:1"
|
||||
sodipodi:type="arc" />
|
||||
<rect
|
||||
y="3.4999998"
|
||||
x="1.5"
|
||||
height="7.9999995"
|
||||
width="14"
|
||||
id="rect3503"
|
||||
style="fill:none;stroke:#545454;stroke-width:1;stroke-opacity:1" />
|
||||
<rect
|
||||
y="1.5"
|
||||
x="3.5"
|
||||
height="3"
|
||||
width="2"
|
||||
id="rect3505"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
|
||||
<rect
|
||||
y="1.5"
|
||||
x="7.5"
|
||||
height="3"
|
||||
width="2"
|
||||
id="rect3509"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
|
||||
id="rect3514"
|
||||
width="2"
|
||||
height="3"
|
||||
x="11.5"
|
||||
y="1.5" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
|
||||
id="rect3516"
|
||||
width="2"
|
||||
height="3"
|
||||
x="3.5"
|
||||
y="10.5" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1"
|
||||
id="rect3518"
|
||||
width="2"
|
||||
height="3"
|
||||
x="7.5"
|
||||
y="10.5" />
|
||||
<rect
|
||||
y="10.5"
|
||||
x="11.5"
|
||||
height="3"
|
||||
width="2"
|
||||
id="rect3520"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g18103"
|
||||
transform="matrix(0.96595582,-0.25870707,0.25870707,0.96595582,0.84350936,-11.031754)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 14.365778,23.401859 c 0.202438,-4.960549 -1.242615,-6.237163 -5.6595543,-5.884794 4.3461583,1.028691 4.0709493,2.218515 3.7207813,5.66635 l -1.626346,-0.20242 2.198044,3.513613 2.945419,-2.915713 z"
|
||||
style="fill:#ef2929;fill-opacity:1;stroke:#a40000;stroke-width:1"
|
||||
id="path17320" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.1 KiB |
|
@ -0,0 +1,164 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<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"
|
||||
version="1.1"
|
||||
width="26"
|
||||
height="26"
|
||||
id="svg18970">
|
||||
<metadata
|
||||
id="metadata18987">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs18972">
|
||||
<mask
|
||||
id="w">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3301"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="x">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3304"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="q">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3307"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="v">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3310"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="r">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3313"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="u">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3316"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="s">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3319"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="t">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3322"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
</defs>
|
||||
<g
|
||||
transform="matrix(0.92021476,-0.39141384,0.39141384,0.92021476,-2.5098229,-9.469619)"
|
||||
id="g18103">
|
||||
<path
|
||||
d="m 14.365778,23.401859 c 0.202438,-4.960549 -1.242615,-6.237163 -5.6595543,-5.884794 4.3461583,1.028691 4.0709493,2.218515 3.7207813,5.66635 l -1.626346,-0.20242 2.198044,3.513613 2.945419,-2.915713 z"
|
||||
id="path17320"
|
||||
style="fill:#ef2929;fill-opacity:1;stroke:#a40000;stroke-width:1" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-1,0)"
|
||||
id="g3744">
|
||||
<path
|
||||
d="M 12,10 A 5,5 0 1 1 2,10 5,5 0 1 1 12,10 z"
|
||||
transform="translate(1.5,-1.5)"
|
||||
id="path3680"
|
||||
style="fill:#fcd40f;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
|
||||
<path
|
||||
d="m 13.488902,8.4889022 -5.1095923,0 0.1095925,-5 c 0,0 -5.09534,1.1698255 -5,5 3.454097,-0.014719 4.7357278,0 4.7357278,0 L 8.4889022,13.488902 C 12.423077,13.335543 13.708024,9.9574012 13.488902,8.4889022"
|
||||
id="path3736"
|
||||
style="fill:#000000;stroke:none" />
|
||||
<path
|
||||
d="m 8.5,1 0,15"
|
||||
id="path3676"
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
d="M 16,8.5 1,8.5"
|
||||
id="path3678"
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
d="M 7.5,4.625 C 6.0912245,4.9882125 4.9882125,6.0912245 4.625,7.5 l 2.375,0 0.5,0 0,-0.5 0,-2.375 z"
|
||||
id="path3733"
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
|
||||
<path
|
||||
d="M 12.375,7.5 C 12.011788,6.0912245 10.908776,4.9882125 9.5,4.625 l 0,2.375 0,0.5 0.5,0 2.375,0 z"
|
||||
id="path3738"
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
|
||||
<path
|
||||
d="m 9.5,12.375 c 1.408776,-0.363212 2.511788,-1.466224 2.875,-2.875 l -2.375,0 -0.5,0 0,0.5 0,2.375 z"
|
||||
id="path3740"
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
|
||||
<path
|
||||
d="m 4.625,9.5 c 0.363212,1.408776 1.466224,2.511788 2.875,2.875 L 7.5,10 7.5,9.5 7,9.5 4.625,9.5 z"
|
||||
id="path3742"
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
|
||||
</g>
|
||||
<use
|
||||
transform="translate(10,9)"
|
||||
id="use3755"
|
||||
style="opacity:0.75"
|
||||
x="0"
|
||||
y="0"
|
||||
width="26"
|
||||
height="26"
|
||||
xlink:href="#g3744" />
|
||||
</svg>
|
After Width: | Height: | Size: 6.7 KiB |
|
@ -0,0 +1,161 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<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"
|
||||
version="1.1"
|
||||
width="26"
|
||||
height="26"
|
||||
id="svg18970">
|
||||
<metadata
|
||||
id="metadata18987">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs18972">
|
||||
<mask
|
||||
id="w">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3301"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="x">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3304"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="q">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3307"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="v">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3310"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="r">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3313"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="u">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3316"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="s">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3319"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="t">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3322"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
</defs>
|
||||
<g
|
||||
transform="translate(20,-1.5)"
|
||||
id="g3939">
|
||||
<path
|
||||
d="m -15.5,8 5,0 2.1269625,4.84375"
|
||||
id="path3917"
|
||||
style="fill:none;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
d="m -18.5,3 0,11 8.75,0 -1.75,-4.25 c -0.781147,0.971226 -1.5,1.75 -3,1.75 -1.932997,0 -3.5,-1.5670035 -3.5,-3.5 0,-1.9329967 1.567003,-3.5 3.5,-3.5 1.295542,0 2.33235,0.4225334 2.9375,1.46875 l 1.9375,0 L -7.5,11 l 0,-8 z"
|
||||
id="rect3811"
|
||||
style="fill:#008000;fill-opacity:0.62745098;stroke:#008000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<path
|
||||
d="m -13.46875,7 a 1.53125,1.53125 0 1 1 -3.0625,0 1.53125,1.53125 0 1 1 3.0625,0 z"
|
||||
transform="matrix(1.0081529,0,0,1.0081529,0.57855937,0.9429297)"
|
||||
id="path3915"
|
||||
style="fill:#eeeeec;stroke:#888a85;stroke-width:0.99191302;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(20,-1.5)"
|
||||
id="g4253">
|
||||
<path
|
||||
d="m -15.5,8 5,0 2.1269625,4.84375"
|
||||
id="path4255"
|
||||
style="fill:none;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
d="m -18.5,3 0,11 8.75,0 -1.75,-4.25 c -0.781147,0.971226 -1.5,1.75 -3,1.75 -1.932997,0 -3.5,-1.5670035 -3.5,-3.5 0,-1.9329967 1.567003,-3.5 3.5,-3.5 1.295542,0 2.33235,0.4225334 2.9375,1.46875 l 1.9375,0 L -7.5,11 l 0,-8 z"
|
||||
id="path4257"
|
||||
style="fill:#008000;fill-opacity:0.62745098;stroke:#008000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<path
|
||||
d="m -13.46875,7 a 1.53125,1.53125 0 1 1 -3.0625,0 1.53125,1.53125 0 1 1 3.0625,0 z"
|
||||
transform="matrix(1.0081529,0,0,1.0081529,0.57855937,0.9429297)"
|
||||
id="path4259"
|
||||
style="fill:#eeeeec;stroke:#888a85;stroke-width:0.99191302;stroke-opacity:1" />
|
||||
</g>
|
||||
<use
|
||||
transform="translate(12,12)"
|
||||
id="use4261"
|
||||
style="opacity:0.75"
|
||||
x="0"
|
||||
y="0"
|
||||
width="26"
|
||||
height="26"
|
||||
xlink:href="#g4253" />
|
||||
<g
|
||||
transform="matrix(0.92021476,-0.39141384,0.39141384,0.92021476,-2.5098229,-7.469619)"
|
||||
id="g18103">
|
||||
<path
|
||||
d="m 14.365778,23.401859 c 0.202438,-4.960549 -1.242615,-6.237163 -5.6595543,-5.884794 4.3461583,1.028691 4.0709493,2.218515 3.7207813,5.66635 l -1.626346,-0.20242 2.198044,3.513613 2.945419,-2.915713 z"
|
||||
id="path17320"
|
||||
style="fill:#ef2929;fill-opacity:1;stroke:#a40000;stroke-width:1" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.0 KiB |
|
@ -0,0 +1,227 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="48"
|
||||
width="48"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="move_zone.svg">
|
||||
<metadata
|
||||
id="metadata66">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1005"
|
||||
id="namedview64"
|
||||
showgrid="false"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:zoom="11.313708"
|
||||
inkscape:cx="10.835114"
|
||||
inkscape:cy="24.527054"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3043" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs4">
|
||||
<filter
|
||||
id="c"
|
||||
height="1.2585"
|
||||
width="1.2406"
|
||||
color-interpolation-filters="sRGB"
|
||||
y="-.12927"
|
||||
x="-.12029">
|
||||
<feGaussianBlur
|
||||
stdDeviation="1.6250782"
|
||||
id="feGaussianBlur7" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
id="d"
|
||||
y2="36.848"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x2="41.355"
|
||||
gradientTransform="matrix(1.4411,0,0,2.9984,-102.04,-72.032)"
|
||||
y1="32.207"
|
||||
x1="39.182">
|
||||
<stop
|
||||
stop-color="#fff"
|
||||
offset="0"
|
||||
id="stop10" />
|
||||
<stop
|
||||
stop-color="#afadff"
|
||||
offset="1"
|
||||
id="stop12" />
|
||||
</linearGradient>
|
||||
<mask
|
||||
id="t">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-rule:evenodd"
|
||||
id="rect3322"
|
||||
y="-3.7337"
|
||||
x="-4.6403999"
|
||||
height="26.091999"
|
||||
width="25.032" />
|
||||
</mask>
|
||||
<mask
|
||||
id="s">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-rule:evenodd"
|
||||
id="rect3319"
|
||||
y="-3.7337"
|
||||
x="-4.6403999"
|
||||
height="26.091999"
|
||||
width="25.032" />
|
||||
</mask>
|
||||
<mask
|
||||
id="u">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-rule:evenodd"
|
||||
id="rect3316"
|
||||
y="-3.7337"
|
||||
x="-4.6403999"
|
||||
height="26.091999"
|
||||
width="25.032" />
|
||||
</mask>
|
||||
<mask
|
||||
id="r">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-rule:evenodd"
|
||||
id="rect3313"
|
||||
y="-3.7337"
|
||||
x="-4.6403999"
|
||||
height="26.091999"
|
||||
width="25.032" />
|
||||
</mask>
|
||||
<mask
|
||||
id="v">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-rule:evenodd"
|
||||
id="rect3310"
|
||||
y="-3.7337"
|
||||
x="-4.6403999"
|
||||
height="26.091999"
|
||||
width="25.032" />
|
||||
</mask>
|
||||
<mask
|
||||
id="q">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-rule:evenodd"
|
||||
id="rect3307"
|
||||
y="-3.7337"
|
||||
x="-4.6403999"
|
||||
height="26.091999"
|
||||
width="25.032" />
|
||||
</mask>
|
||||
<mask
|
||||
id="x">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-rule:evenodd"
|
||||
id="rect3304"
|
||||
y="-3.7337"
|
||||
x="-4.6403999"
|
||||
height="26.091999"
|
||||
width="25.032" />
|
||||
</mask>
|
||||
<mask
|
||||
id="w">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-rule:evenodd"
|
||||
id="rect3301"
|
||||
y="-3.7337"
|
||||
x="-4.6403999"
|
||||
height="26.091999"
|
||||
width="25.032" />
|
||||
</mask>
|
||||
</defs>
|
||||
<path
|
||||
style="fill:#59d421;fill-opacity:1;stroke:#44a118;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 33.5,21.5 -5,5 3,0 0,5 -5,0 0,-3 -5,5 5,5 0,-3 5,0 0,5 -3,0 5,5 5,-5 -3,0 0,-5 5,0 0,3 5,-5 -5,-5 0,3 -5,0 0,-5 3,0 z"
|
||||
id="path3045"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccccccccccccccccccc" />
|
||||
<g
|
||||
id="g3128"
|
||||
transform="translate(6.75,4)">
|
||||
<g
|
||||
id="g3744"
|
||||
transform="matrix(2,0,0,2,-6.75,-4)">
|
||||
<path
|
||||
style="fill:#fcd40f;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-opacity:1"
|
||||
id="path3680"
|
||||
transform="translate(1.5,-1.5)"
|
||||
d="M 12,10 A 5,5 0 1 1 2,10 5,5 0 1 1 12,10 z"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#000000;stroke:none"
|
||||
id="path3736"
|
||||
d="m 13.488902,8.4889022 -5.1095923,0 0.1095925,-5 c 0,0 -5.09534,1.1698255 -5,5 3.454097,-0.014719 4.7357278,0 4.7357278,0 L 8.4889022,13.488902 C 12.423077,13.335543 13.708024,9.9574012 13.488902,8.4889022"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path3676"
|
||||
d="m 8.5,1 0,15"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path3678"
|
||||
d="M 16,8.5 1,8.5"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:0.5px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
|
||||
id="path3738"
|
||||
d="M 12.625,7.75 C 12.361225,6.2859818 11,4.7050669 9.25,4.375 l 0,3.375 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:0.5px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
|
||||
id="path3742"
|
||||
d="M 4.375,9.25 C 4.7271635,11 6.5,12.5 7.75,12.625 l 0,-3.375 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<g
|
||||
id="g3147"
|
||||
transform="matrix(0,1,-1,0,17,0)">
|
||||
<path
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:0.5px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
|
||||
id="path3143"
|
||||
d="M 12.625,7.75 C 12.361225,6.2859818 11,4.7050669 9.25,4.375 l 0,3.375 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;opacity:0.25;color:#000000;fill:none;stroke:#eeeeec;stroke-width:0.5px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
|
||||
id="path3145"
|
||||
d="M 4.375,9.25 C 4.7271635,11 6.5,12.5 7.75,12.625 l 0,-3.375 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 8.5 KiB |
|
@ -0,0 +1,169 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<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"
|
||||
version="1.1"
|
||||
width="48"
|
||||
height="48"
|
||||
id="svg2">
|
||||
<metadata
|
||||
id="metadata66">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs4">
|
||||
<filter
|
||||
x="-0.12029"
|
||||
y="-0.12927"
|
||||
width="1.2406"
|
||||
height="1.2585"
|
||||
color-interpolation-filters="sRGB"
|
||||
id="c">
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur7"
|
||||
stdDeviation="1.6250782" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
x1="39.181999"
|
||||
y1="32.207001"
|
||||
x2="41.355"
|
||||
y2="36.848"
|
||||
id="d"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.4411,0,0,2.9984,-102.04,-72.032)">
|
||||
<stop
|
||||
id="stop10"
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop12"
|
||||
style="stop-color:#afadff;stop-opacity:1"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<mask
|
||||
id="t">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3322"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="s">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3319"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="u">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3316"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="r">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3313"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="v">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3310"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="q">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3307"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="x">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3304"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
<mask
|
||||
id="w">
|
||||
<rect
|
||||
width="25.032"
|
||||
height="26.091999"
|
||||
x="-4.6403999"
|
||||
y="-3.7337"
|
||||
id="rect3301"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
</mask>
|
||||
</defs>
|
||||
<g
|
||||
transform="translate(3.5,3.5)"
|
||||
id="g3063">
|
||||
<path
|
||||
d="m 0,0 0,26 20.5,0 -5.5,-11.5 0.0625,0 C 13.8522,16.592433 11.591084,18 9,18 5.1340066,18 2,14.865993 2,11 2,7.1340066 5.1340066,4 9,4 c 2.591084,0 4.8522,1.4075669 6.0625,3.5 L 20,7.5 26,20 26,0 z"
|
||||
id="rect3811"
|
||||
style="fill:#008000;fill-opacity:0.62745098;stroke:#008000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<g
|
||||
transform="matrix(1.6382539,0,0,1.5572263,1.2572207,0.36314149)"
|
||||
id="g16">
|
||||
<rect
|
||||
width="16"
|
||||
height="16"
|
||||
x="0"
|
||||
y="0"
|
||||
id="rect18"
|
||||
style="fill-opacity:0" />
|
||||
</g>
|
||||
<path
|
||||
d="m 13,11 4.5,0 6,13"
|
||||
id="path3765"
|
||||
style="fill:none;stroke:#808080;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<path
|
||||
d="m 12.5,10 a 3.5,3.5 0 1 1 -7,0 3.5,3.5 0 1 1 7,0 z"
|
||||
transform="translate(0,1)"
|
||||
id="path3815"
|
||||
style="fill:none;stroke:#808080;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
</g>
|
||||
<path
|
||||
d="m 33.5,21.5 -5,5 3,0 0,5 -5,0 0,-3 -5,5 5,5 0,-3 5,0 0,5 -3,0 5,5 5,-5 -3,0 0,-5 5,0 0,3 5,-5 -5,-5 0,3 -5,0 0,-5 3,0 z"
|
||||
id="path3045"
|
||||
style="fill:#59d421;fill-opacity:1;stroke:#44a118;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</svg>
|
After Width: | Height: | Size: 4.6 KiB |
|
@ -103,8 +103,11 @@ EXTERN_BITMAP( annotate_down_right_xpm )
|
|||
EXTERN_BITMAP( annotate_right_down_xpm )
|
||||
EXTERN_BITMAP( annotate_xpm )
|
||||
EXTERN_BITMAP( array_line_xpm )
|
||||
EXTERN_BITMAP( array_module_xpm )
|
||||
EXTERN_BITMAP( array_pad_xpm )
|
||||
EXTERN_BITMAP( array_target_xpm )
|
||||
EXTERN_BITMAP( array_text_xpm )
|
||||
EXTERN_BITMAP( array_zone_xpm )
|
||||
EXTERN_BITMAP( auto_associe_xpm )
|
||||
EXTERN_BITMAP( auto_delete_track_xpm )
|
||||
EXTERN_BITMAP( auto_track_width_xpm )
|
||||
|
@ -178,8 +181,11 @@ EXTERN_BITMAP( drag_track_segment_xpm )
|
|||
EXTERN_BITMAP( drc_off_xpm )
|
||||
EXTERN_BITMAP( drc_xpm )
|
||||
EXTERN_BITMAP( duplicate_line_xpm )
|
||||
EXTERN_BITMAP( duplicate_module_xpm )
|
||||
EXTERN_BITMAP( duplicate_pad_xpm )
|
||||
EXTERN_BITMAP( duplicate_target_xpm )
|
||||
EXTERN_BITMAP( duplicate_text_xpm )
|
||||
EXTERN_BITMAP( duplicate_zone_xpm )
|
||||
EXTERN_BITMAP( edges_sketch_xpm )
|
||||
EXTERN_BITMAP( edit_comp_footprint_xpm )
|
||||
EXTERN_BITMAP( edit_component_xpm )
|
||||
|
@ -338,8 +344,10 @@ EXTERN_BITMAP( move_polygon_xpm )
|
|||
EXTERN_BITMAP( move_rectangle_xpm )
|
||||
EXTERN_BITMAP( move_sheet_xpm )
|
||||
EXTERN_BITMAP( move_text_xpm )
|
||||
EXTERN_BITMAP( move_target_xpm )
|
||||
EXTERN_BITMAP( move_track_segment_xpm )
|
||||
EXTERN_BITMAP( move_track_xpm )
|
||||
EXTERN_BITMAP( move_zone_xpm )
|
||||
EXTERN_BITMAP( move_xpm )
|
||||
EXTERN_BITMAP( mw_add_gap_xpm )
|
||||
EXTERN_BITMAP( mw_add_line_xpm )
|
||||
|
|
|
@ -78,6 +78,9 @@ class BOARD_ITEM : public EDA_ITEM
|
|||
protected:
|
||||
LAYER_ID m_Layer;
|
||||
|
||||
static int getTrailingInt( wxString aStr );
|
||||
static int getNextNumberInSequence( std::set<int> aSeq, bool aFillSequenceGaps);
|
||||
|
||||
public:
|
||||
|
||||
BOARD_ITEM( BOARD_ITEM* aParent, KICAD_T idtype ) :
|
||||
|
|
|
@ -193,6 +193,19 @@ protected:
|
|||
*/
|
||||
void duplicateZone( wxDC* aDC, ZONE_CONTAINER* aZone );
|
||||
|
||||
/**
|
||||
* Function moveExact
|
||||
* Move the selected item exactly
|
||||
*/
|
||||
void moveExact();
|
||||
|
||||
/**
|
||||
* Function duplicateItems
|
||||
* Duplicate selected item if possible and start a move
|
||||
* @param aIncrement increment the item number if appropriate
|
||||
*/
|
||||
void duplicateItem( bool aIncrement );
|
||||
|
||||
// protected so that PCB::IFACE::CreateWindow() is the only factory.
|
||||
PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent );
|
||||
|
||||
|
@ -459,6 +472,15 @@ public:
|
|||
*/
|
||||
int OnHotkeyCopyItem();
|
||||
|
||||
/**
|
||||
* Function OnHotkeyDuplicateOrArrayItem
|
||||
* Duplicate an item (optionally incrementing if necessary and possible)
|
||||
* or invoke array dialog and create an array
|
||||
* @param aIdCommand = the hotkey command id
|
||||
* @return true if item duplicated or arrayed
|
||||
*/
|
||||
bool OnHotkeyDuplicateOrArrayItem( int aIdCommand );
|
||||
|
||||
/**
|
||||
* Function OnHotkeyMoveItem
|
||||
* Moves or drag the item (footprint, track, text .. ) found under the mouse cursor
|
||||
|
|
|
@ -54,6 +54,10 @@
|
|||
#include <class_track.h>
|
||||
#include <class_zone.h>
|
||||
#include <class_marker_pcb.h>
|
||||
#include <class_drawsegment.h>
|
||||
#include <class_pcb_text.h>
|
||||
#include <class_mire.h>
|
||||
#include <class_dimension.h>
|
||||
|
||||
|
||||
/* This is an odd place for this, but CvPcb won't link if it is
|
||||
|
@ -2593,6 +2597,131 @@ void BOARD::ReplaceNetlist( NETLIST& aNetlist, bool aDeleteSinglePadNets,
|
|||
}
|
||||
|
||||
|
||||
BOARD_ITEM* BOARD::DuplicateAndAddItem( const BOARD_ITEM* aItem,
|
||||
bool aIncrementReferences )
|
||||
{
|
||||
BOARD_ITEM* new_item = NULL;
|
||||
|
||||
switch( aItem->Type() )
|
||||
{
|
||||
case PCB_MODULE_T:
|
||||
{
|
||||
MODULE* new_module = new MODULE( *static_cast<const MODULE*>( aItem ) );
|
||||
|
||||
if( aIncrementReferences )
|
||||
{
|
||||
// Take the next available module number
|
||||
new_module->IncrementReference( true );
|
||||
}
|
||||
|
||||
m_Modules.PushBack( new_module );
|
||||
new_item = new_module;
|
||||
break;
|
||||
}
|
||||
case PCB_TEXT_T:
|
||||
{
|
||||
const TEXTE_PCB* old_text = static_cast<const TEXTE_PCB*>( aItem );
|
||||
|
||||
TEXTE_PCB* new_text = new TEXTE_PCB( *old_text );
|
||||
|
||||
m_Drawings.PushBack( new_text );
|
||||
new_item = new_text;
|
||||
|
||||
break;
|
||||
}
|
||||
case PCB_LINE_T:
|
||||
{
|
||||
DRAWSEGMENT* new_edge = new DRAWSEGMENT(
|
||||
*static_cast<const DRAWSEGMENT*>(aItem) );
|
||||
|
||||
m_Drawings.PushBack( new_edge );
|
||||
new_item = new_edge;
|
||||
break;
|
||||
}
|
||||
case PCB_TRACE_T:
|
||||
{
|
||||
TRACK* new_track = new TRACK(
|
||||
*static_cast<const TRACK*>(aItem) );
|
||||
|
||||
m_Track.PushBack( new_track );
|
||||
new_item = new_track;
|
||||
break;
|
||||
}
|
||||
case PCB_ZONE_AREA_T:
|
||||
{
|
||||
ZONE_CONTAINER* new_zone = new ZONE_CONTAINER(
|
||||
*static_cast<const ZONE_CONTAINER*>(aItem) );
|
||||
|
||||
m_ZoneDescriptorList.push_back( new_zone );
|
||||
new_item = new_zone;
|
||||
break;
|
||||
}
|
||||
case PCB_TARGET_T:
|
||||
{
|
||||
PCB_TARGET* new_target = new PCB_TARGET(
|
||||
*static_cast<const PCB_TARGET*>(aItem) );
|
||||
|
||||
m_Drawings.PushBack( new_target );
|
||||
new_item = new_target;
|
||||
break;
|
||||
}
|
||||
case PCB_DIMENSION_T:
|
||||
{
|
||||
DIMENSION* new_dim = new DIMENSION(
|
||||
*static_cast<const DIMENSION*>(aItem) );
|
||||
|
||||
m_Drawings.PushBack( new_dim );
|
||||
new_item = new_dim;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
// Un-handled item for duplication
|
||||
wxASSERT_MSG( false, "Duplication not supported for items of class "
|
||||
+ aItem->GetClass() );
|
||||
break;
|
||||
}
|
||||
|
||||
return new_item;
|
||||
}
|
||||
|
||||
|
||||
wxString BOARD::GetNextModuleReferenceWithPrefix( const wxString& aPrefix,
|
||||
bool aFillSequenceGaps )
|
||||
{
|
||||
wxString nextRef;
|
||||
|
||||
std::set<int> usedNumbers;
|
||||
|
||||
for( MODULE* module = m_Modules; module; module = module->Next() )
|
||||
{
|
||||
const wxString ref = module->GetReference();
|
||||
wxString remainder;
|
||||
|
||||
// ONly interested in modules with the right prefix
|
||||
if( !ref.StartsWith( aPrefix, &remainder ) )
|
||||
continue;
|
||||
|
||||
// the suffix must be a number
|
||||
if ( !remainder.IsNumber() )
|
||||
continue;
|
||||
|
||||
long number;
|
||||
if( remainder.ToCLong( &number ) )
|
||||
usedNumbers.insert( number );
|
||||
}
|
||||
|
||||
int nextNum = 1;
|
||||
|
||||
if( usedNumbers.size() )
|
||||
{
|
||||
nextNum = getNextNumberInSequence( usedNumbers, aFillSequenceGaps );
|
||||
nextRef = wxString::Format( wxT( "%s%i" ), aPrefix, nextNum );
|
||||
}
|
||||
|
||||
return nextRef;
|
||||
}
|
||||
|
||||
|
||||
/* Extracts the board outlines and build a closed polygon
|
||||
* from lines, arcs and circle items on edge cut layer
|
||||
* Any closed outline inside the main outline is a hole
|
||||
|
|
|
@ -301,6 +301,16 @@ public:
|
|||
*/
|
||||
BOARD_ITEM* Remove( BOARD_ITEM* aBoardItem );
|
||||
|
||||
BOARD_ITEM* DuplicateAndAddItem( const BOARD_ITEM* aItem,
|
||||
bool aIncrementReferences );
|
||||
|
||||
/**
|
||||
* Function GetNextModuleReferenceWithPrefix
|
||||
* Get the next available module reference with this prefix
|
||||
*/
|
||||
wxString GetNextModuleReferenceWithPrefix( const wxString& aPrefix,
|
||||
bool aFillSequenceGaps );
|
||||
|
||||
/**
|
||||
* Function GetRatsnest()
|
||||
* returns list of missing connections between components/tracks.
|
||||
|
|
|
@ -195,3 +195,51 @@ void BOARD_ITEM::ViewGetLayers( int aLayers[], int& aCount ) const
|
|||
aCount = 1;
|
||||
aLayers[0] = m_Layer;
|
||||
}
|
||||
|
||||
|
||||
int BOARD_ITEM::getTrailingInt( wxString aStr )
|
||||
{
|
||||
int number = 0;
|
||||
int base = 1;
|
||||
|
||||
// Trim and extract the trailing numeric part
|
||||
int index = aStr.Len() - 1;
|
||||
while( index >= 0 )
|
||||
{
|
||||
const char chr = aStr.GetChar( index );
|
||||
|
||||
if( chr < '0' || chr > '9' )
|
||||
break;
|
||||
|
||||
number += ( chr - '0' ) * base;
|
||||
base *= 10;
|
||||
index--;
|
||||
}
|
||||
|
||||
return number;
|
||||
}
|
||||
|
||||
int BOARD_ITEM::getNextNumberInSequence( std::set<int> aSeq, bool aFillSequenceGaps)
|
||||
{
|
||||
// By default go to the end of the sequence
|
||||
int candidate = *aSeq.end();
|
||||
|
||||
// Filling in gaps in pad numbering
|
||||
if( aFillSequenceGaps )
|
||||
{
|
||||
// start at the beginning
|
||||
candidate = *aSeq.begin();
|
||||
|
||||
for( std::set<int>::iterator it = aSeq.begin(),
|
||||
itEnd = aSeq.end(); it != itEnd; ++it )
|
||||
{
|
||||
if( *it - candidate > 1 )
|
||||
break;
|
||||
|
||||
candidate = *it;
|
||||
}
|
||||
}
|
||||
|
||||
candidate++;
|
||||
return candidate;
|
||||
}
|
||||
|
|
|
@ -1156,6 +1156,10 @@ BOARD_ITEM* MODULE::DuplicateAndAddItem( const BOARD_ITEM* aItem,
|
|||
new_item = new_edge;
|
||||
break;
|
||||
}
|
||||
case PCB_MODULE_T:
|
||||
// Ignore the module itself
|
||||
break;
|
||||
|
||||
default:
|
||||
// Un-handled item for duplication
|
||||
wxASSERT_MSG( false, "Duplication not supported for items of class "
|
||||
|
@ -1166,6 +1170,7 @@ BOARD_ITEM* MODULE::DuplicateAndAddItem( const BOARD_ITEM* aItem,
|
|||
return new_item;
|
||||
}
|
||||
|
||||
|
||||
wxString MODULE::GetNextPadName( bool aFillSequenceGaps ) const
|
||||
{
|
||||
std::set<int> usedNumbers;
|
||||
|
@ -1173,39 +1178,55 @@ wxString MODULE::GetNextPadName( bool aFillSequenceGaps ) const
|
|||
// Create a set of used pad numbers
|
||||
for( D_PAD* pad = Pads(); pad; pad = pad->Next() )
|
||||
{
|
||||
wxString padName = pad->GetPadName();
|
||||
int padNumber = 0;
|
||||
int base = 1;
|
||||
|
||||
// Trim and extract the trailing numeric part
|
||||
while( padName.Len() && padName.Last() >= '0' && padName.Last() <= '9' )
|
||||
{
|
||||
padNumber += ( padName.Last() - '0' ) * base;
|
||||
padName.RemoveLast();
|
||||
base *= 10;
|
||||
}
|
||||
|
||||
int padNumber = getTrailingInt( pad->GetPadName() );
|
||||
usedNumbers.insert( padNumber );
|
||||
}
|
||||
|
||||
// By default go to the end of the sequence
|
||||
int candidate = *usedNumbers.end();
|
||||
const int nextNum = getNextNumberInSequence( usedNumbers, aFillSequenceGaps );
|
||||
|
||||
// Filling in gaps in pad numbering
|
||||
if( aFillSequenceGaps )
|
||||
{
|
||||
// start at the beginning
|
||||
candidate = *usedNumbers.begin();
|
||||
return wxString::Format( wxT( "%i" ), nextNum );
|
||||
}
|
||||
|
||||
for( std::set<int>::iterator it = usedNumbers.begin(),
|
||||
itEnd = usedNumbers.end(); it != itEnd; ++it )
|
||||
|
||||
wxString MODULE::GetReferencePrefix() const
|
||||
{
|
||||
wxString prefix = GetReference();
|
||||
|
||||
int strIndex = prefix.length() - 1;
|
||||
while( strIndex >= 0 )
|
||||
{
|
||||
if( *it - candidate > 1 )
|
||||
const wxUniChar chr = prefix.GetChar( strIndex );
|
||||
|
||||
// numeric suffix
|
||||
if( chr >= '0' && chr <= '9' )
|
||||
break;
|
||||
|
||||
candidate = *it;
|
||||
}
|
||||
strIndex--;
|
||||
}
|
||||
|
||||
return wxString::Format( wxT( "%i" ), ++candidate );
|
||||
prefix = prefix.Mid( 0, strIndex );
|
||||
|
||||
return prefix;
|
||||
}
|
||||
|
||||
|
||||
bool MODULE::IncrementReference( bool aFillSequenceGaps )
|
||||
{
|
||||
BOARD* board = GetBoard();
|
||||
|
||||
if( !board )
|
||||
return false;
|
||||
|
||||
bool success = false;
|
||||
const wxString prefix = GetReferencePrefix();
|
||||
const wxString newReference = board->GetNextModuleReferenceWithPrefix(
|
||||
prefix, aFillSequenceGaps );
|
||||
|
||||
if( !newReference.IsEmpty() )
|
||||
{
|
||||
SetReference( newReference );
|
||||
success = true;
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
|
|
@ -396,6 +396,15 @@ public:
|
|||
m_Reference->SetText( aReference );
|
||||
}
|
||||
|
||||
/**
|
||||
* Function GetReference prefix
|
||||
* Gets the alphabetic prefix of the module reference - e.g.
|
||||
* R1 -> R
|
||||
* IC34 -> IC
|
||||
* @return the reference prefix (may be empty)
|
||||
*/
|
||||
wxString GetReferencePrefix() const;
|
||||
|
||||
/**
|
||||
* Function GetValue
|
||||
* @return const wxString& - the value text.
|
||||
|
@ -422,6 +431,17 @@ public:
|
|||
TEXTE_MODULE& Value() const { return *m_Value; }
|
||||
TEXTE_MODULE& Reference() const { return *m_Reference; }
|
||||
|
||||
/**
|
||||
* Function INcrementReference
|
||||
* Increments the module's reference, if possible. A reference with
|
||||
* a numerical suffix and an optional alphabetical prefix can be
|
||||
* incremented: "A1" and "1" can be, "B" can't.
|
||||
*
|
||||
* @param aFillSequenceGaps if true, the next reference in a sequence
|
||||
* like A1,A3,A4 will be A2. If false, it will be A5.
|
||||
* @return true if the reference was incremented.
|
||||
*/
|
||||
bool IncrementReference( bool aFillSequenceGaps );
|
||||
|
||||
/**
|
||||
* Function FindPadByName
|
||||
|
@ -474,6 +494,11 @@ public:
|
|||
int GetPlacementCost90() const { return m_CntRot90; }
|
||||
void SetPlacementCost90( int aCost ) { m_CntRot90 = aCost; }
|
||||
|
||||
/**
|
||||
* Function DuplicateAndAddItem
|
||||
* Duplicate a given item within the module
|
||||
* @return the new item, or NULL if the item could not be duplicated
|
||||
*/
|
||||
BOARD_ITEM* DuplicateAndAddItem( const BOARD_ITEM* item,
|
||||
bool aIncrementPadNumbers );
|
||||
|
||||
|
|
|
@ -46,13 +46,17 @@ static const wxString charSetDescriptions[] =
|
|||
};
|
||||
|
||||
|
||||
DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, ARRAY_OPTIONS** settings ) :
|
||||
DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, wxPoint aOrigPos,
|
||||
ARRAY_OPTIONS** aSettings ) :
|
||||
DIALOG_CREATE_ARRAY_BASE( aParent ),
|
||||
CONFIG_SAVE_RESTORE_WINDOW( m_options.m_optionsSet ),
|
||||
m_settings( settings )
|
||||
m_settings( aSettings ),
|
||||
m_originalItemPosition( aOrigPos )
|
||||
{
|
||||
// Set up numbering scheme drop downs
|
||||
m_choicePriAxisNumbering->Set( boost::size( charSetDescriptions ), charSetDescriptions );
|
||||
m_choiceSecAxisNumbering->Set( boost::size( charSetDescriptions ), charSetDescriptions );
|
||||
m_choiceCircNumberingType->Set( boost::size( charSetDescriptions ), charSetDescriptions );;
|
||||
|
||||
m_choicePriAxisNumbering->SetSelection( 0 );
|
||||
m_choiceSecAxisNumbering->SetSelection( 0 );
|
||||
|
@ -77,6 +81,7 @@ DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, ARRAY_OPTIONS
|
|||
Add( m_entryCircAngle, m_options.m_circAngle );
|
||||
Add( m_entryCircCount, m_options.m_circCount );
|
||||
Add( m_entryRotateItemsCb, m_options.m_circRotate );
|
||||
Add( m_entryCircNumberingStart, m_options.m_circNumberingOffset );
|
||||
|
||||
Add( m_gridTypeNotebook, m_options.m_arrayTypeTab );
|
||||
|
||||
|
@ -90,7 +95,7 @@ DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, ARRAY_OPTIONS
|
|||
|
||||
RestoreConfigToControls();
|
||||
|
||||
// load units into labels
|
||||
// Load units into labels
|
||||
{
|
||||
const wxString lengthUnit = GetAbbreviatedUnitsLabel( g_UserUnit );
|
||||
|
||||
|
@ -102,7 +107,9 @@ DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, ARRAY_OPTIONS
|
|||
m_unitLabelOffsetY->SetLabelText( lengthUnit );
|
||||
}
|
||||
|
||||
// Run the callbacks once to process the dialog contents
|
||||
setControlEnablement();
|
||||
calculateCircularArrayProperties();
|
||||
}
|
||||
|
||||
|
||||
|
@ -116,6 +123,10 @@ void DIALOG_CREATE_ARRAY::OnParameterChanged( wxCommandEvent& event )
|
|||
{
|
||||
setControlEnablement();
|
||||
}
|
||||
if( evObj == m_entryCentreX || evObj == m_entryCentreY )
|
||||
{
|
||||
calculateCircularArrayProperties();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -211,23 +222,16 @@ void DIALOG_CREATE_ARRAY::OnOkClick( wxCommandEvent& event )
|
|||
{
|
||||
ARRAY_GRID_OPTIONS* newGrid = new ARRAY_GRID_OPTIONS();
|
||||
bool ok = true;
|
||||
double x, y;
|
||||
|
||||
// ints
|
||||
ok = ok && m_entryNx->GetValue().ToLong( &newGrid->m_nx );
|
||||
ok = ok && m_entryNy->GetValue().ToLong( &newGrid->m_ny );
|
||||
|
||||
ok = ok && m_entryDx->GetValue().ToDouble( &x );
|
||||
ok = ok && m_entryDy->GetValue().ToDouble( &y );
|
||||
newGrid->m_delta.x = DoubleValueFromString( g_UserUnit, m_entryDx->GetValue() );
|
||||
newGrid->m_delta.y = DoubleValueFromString( g_UserUnit, m_entryDy->GetValue() );
|
||||
|
||||
newGrid->m_delta.x = From_User_Unit( g_UserUnit, x );
|
||||
newGrid->m_delta.y = From_User_Unit( g_UserUnit, y );
|
||||
|
||||
ok = ok && m_entryOffsetX->GetValue().ToDouble( &x );
|
||||
ok = ok && m_entryOffsetY->GetValue().ToDouble( &y );
|
||||
|
||||
newGrid->m_offset.x = From_User_Unit( g_UserUnit, x );
|
||||
newGrid->m_offset.y = From_User_Unit( g_UserUnit, y );
|
||||
newGrid->m_offset.x = DoubleValueFromString( g_UserUnit, m_entryOffsetX->GetValue() );
|
||||
newGrid->m_offset.y = DoubleValueFromString( g_UserUnit, m_entryOffsetY->GetValue() );
|
||||
|
||||
ok = ok && m_entryStagger->GetValue().ToLong( &newGrid->m_stagger );
|
||||
|
||||
|
@ -272,28 +276,26 @@ void DIALOG_CREATE_ARRAY::OnOkClick( wxCommandEvent& event )
|
|||
ARRAY_CIRCULAR_OPTIONS* newCirc = new ARRAY_CIRCULAR_OPTIONS();
|
||||
bool ok = true;
|
||||
|
||||
double x, y;
|
||||
ok = ok && m_entryCentreX->GetValue().ToDouble( &x );
|
||||
ok = ok &&m_entryCentreY->GetValue().ToDouble( &y );
|
||||
newCirc->m_centre.x = DoubleValueFromString( g_UserUnit, m_entryCentreX->GetValue() );
|
||||
newCirc->m_centre.y = DoubleValueFromString( g_UserUnit, m_entryCentreY->GetValue() );
|
||||
|
||||
newCirc->m_centre.x = From_User_Unit( g_UserUnit, x );
|
||||
newCirc->m_centre.y = From_User_Unit( g_UserUnit, y );
|
||||
|
||||
ok = ok && m_entryCircAngle->GetValue().ToDouble( &newCirc->m_angle );
|
||||
newCirc->m_angle = DoubleValueFromString( DEGREES, m_entryCircAngle->GetValue() );
|
||||
ok = ok && m_entryCircCount->GetValue().ToLong( &newCirc->m_nPts );
|
||||
|
||||
newCirc->m_rotateItems = m_entryRotateItemsCb->GetValue();
|
||||
|
||||
newCirc->m_shouldRenumber = m_checkBoxCircRestartNumbering->GetValue();
|
||||
|
||||
// this is only correct if you set the choice up according to the enum size and order
|
||||
// This is only correct if you set the choice up according to the enum size and order
|
||||
ok = ok && m_choiceCircNumberingType->GetSelection() < NUMBERING_TYPE_Max;
|
||||
|
||||
// mind undefined casts to enums (should not be able to happen)
|
||||
// Mind undefined casts to enums (should not be able to happen)
|
||||
if( ok )
|
||||
newCirc->m_numberingType =
|
||||
(ARRAY_NUMBERING_TYPE_T) m_choiceCircNumberingType->GetSelection();
|
||||
|
||||
ok = ok && m_entryCircNumberingStart->GetValue().ToLong( &newCirc->m_numberingOffset );
|
||||
|
||||
// Only use settings if all values are good
|
||||
if( ok )
|
||||
newSettings = newCirc;
|
||||
|
@ -343,6 +345,22 @@ void DIALOG_CREATE_ARRAY::setControlEnablement()
|
|||
}
|
||||
|
||||
|
||||
void DIALOG_CREATE_ARRAY::calculateCircularArrayProperties()
|
||||
{
|
||||
wxPoint centre;
|
||||
|
||||
centre.x = DoubleValueFromString( g_UserUnit, m_entryCentreX->GetValue() );
|
||||
centre.y = DoubleValueFromString( g_UserUnit, m_entryCentreY->GetValue() );
|
||||
|
||||
// FInd the radius, etc of the circle
|
||||
centre -= m_originalItemPosition;
|
||||
|
||||
const double radius = VECTOR2I(centre.x, centre.y).EuclideanNorm();
|
||||
|
||||
m_labelCircRadiusValue->SetLabelText( StringFromValue( g_UserUnit, int(radius), true ) );
|
||||
}
|
||||
|
||||
|
||||
// ARRAY OPTION implementation functions --------------------------------------
|
||||
|
||||
std::string DIALOG_CREATE_ARRAY::ARRAY_OPTIONS::getCoordinateNumber( int n,
|
||||
|
@ -375,6 +393,16 @@ std::string DIALOG_CREATE_ARRAY::ARRAY_OPTIONS::getCoordinateNumber( int n,
|
|||
}
|
||||
|
||||
|
||||
wxString DIALOG_CREATE_ARRAY::ARRAY_OPTIONS::InterpolateNumberIntoString(
|
||||
int aN, const wxString& aPattern ) const
|
||||
{
|
||||
wxString newStr( aPattern );
|
||||
newStr.Replace( "%s", GetItemNumber( aN ), false );
|
||||
|
||||
return newStr;
|
||||
}
|
||||
|
||||
|
||||
int DIALOG_CREATE_ARRAY::ARRAY_GRID_OPTIONS::GetArraySize() const
|
||||
{
|
||||
return m_nx * m_ny;
|
||||
|
@ -430,9 +458,9 @@ void DIALOG_CREATE_ARRAY::ARRAY_GRID_OPTIONS::TransformItem( int n, BOARD_ITEM*
|
|||
}
|
||||
|
||||
|
||||
std::string DIALOG_CREATE_ARRAY::ARRAY_GRID_OPTIONS::GetItemNumber( int n ) const
|
||||
wxString DIALOG_CREATE_ARRAY::ARRAY_GRID_OPTIONS::GetItemNumber( int n ) const
|
||||
{
|
||||
std::string itemNum;
|
||||
wxString itemNum;
|
||||
|
||||
if( m_2dArrayNumbering )
|
||||
{
|
||||
|
@ -466,7 +494,7 @@ void DIALOG_CREATE_ARRAY::ARRAY_CIRCULAR_OPTIONS::TransformItem( int n, BOARD_IT
|
|||
angle = 3600.0 * n / float(m_nPts);
|
||||
else
|
||||
// n'th step
|
||||
angle = m_angle * n * 10.0;
|
||||
angle = m_angle * n;
|
||||
|
||||
item->Rotate( m_centre, angle );
|
||||
|
||||
|
@ -476,7 +504,7 @@ void DIALOG_CREATE_ARRAY::ARRAY_CIRCULAR_OPTIONS::TransformItem( int n, BOARD_IT
|
|||
}
|
||||
|
||||
|
||||
std::string DIALOG_CREATE_ARRAY::ARRAY_CIRCULAR_OPTIONS::GetItemNumber( int n ) const
|
||||
wxString DIALOG_CREATE_ARRAY::ARRAY_CIRCULAR_OPTIONS::GetItemNumber( int aN ) const
|
||||
{
|
||||
return getCoordinateNumber( n, m_numberingType );
|
||||
return getCoordinateNumber( aN + m_numberingOffset, m_numberingType );
|
||||
}
|
||||
|
|
|
@ -224,7 +224,8 @@ public:
|
|||
virtual void TransformItem( int n, BOARD_ITEM* item,
|
||||
const wxPoint& rotPoint ) const = 0;
|
||||
virtual int GetArraySize() const = 0;
|
||||
virtual std::string GetItemNumber( int n ) const = 0;
|
||||
virtual wxString GetItemNumber( int n ) const = 0;
|
||||
virtual wxString InterpolateNumberIntoString( int n, const wxString& pattern ) const;
|
||||
|
||||
bool ShouldRenumberItems() const
|
||||
{
|
||||
|
@ -263,7 +264,7 @@ protected:
|
|||
|
||||
void TransformItem( int n, BOARD_ITEM* item, const wxPoint& rotPoint ) const; // override virtual
|
||||
int GetArraySize() const; // override virtual
|
||||
std::string GetItemNumber( int n ) const; // override virtual
|
||||
wxString GetItemNumber( int n ) const; // override virtual
|
||||
|
||||
private:
|
||||
wxPoint getGridCoords( int n ) const;
|
||||
|
@ -276,7 +277,8 @@ private:
|
|||
m_nPts( 0 ),
|
||||
m_angle( 0.0f ),
|
||||
m_rotateItems( false ),
|
||||
m_numberingType( NUMBERING_NUMERIC )
|
||||
m_numberingType( NUMBERING_NUMERIC ),
|
||||
m_numberingOffset( 0 )
|
||||
{}
|
||||
|
||||
long m_nPts;
|
||||
|
@ -284,27 +286,38 @@ private:
|
|||
wxPoint m_centre;
|
||||
bool m_rotateItems;
|
||||
ARRAY_NUMBERING_TYPE_T m_numberingType;
|
||||
long m_numberingOffset;
|
||||
|
||||
void TransformItem( int n, BOARD_ITEM* item, const wxPoint& rotPoint ) const; // override virtual
|
||||
int GetArraySize() const; // override virtual
|
||||
std::string GetItemNumber( int n ) const; // override virtual
|
||||
wxString GetItemNumber( int n ) const; // override virtual
|
||||
};
|
||||
|
||||
// Constructor and destructor
|
||||
DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, ARRAY_OPTIONS** settings );
|
||||
DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, wxPoint aOrigPos, ARRAY_OPTIONS** settings );
|
||||
virtual ~DIALOG_CREATE_ARRAY() {};
|
||||
|
||||
private:
|
||||
|
||||
// the settings object returned to the caller
|
||||
// we update the caller's object and never have ownership
|
||||
/**
|
||||
* The settings object returned to the caller.
|
||||
* We update the caller's object and never have ownership
|
||||
*/
|
||||
ARRAY_OPTIONS** m_settings;
|
||||
|
||||
/*
|
||||
* The position of the original item(s), used for finding radius, etc
|
||||
*/
|
||||
const wxPoint m_originalItemPosition;
|
||||
|
||||
// Event callbacks
|
||||
void OnParameterChanged( wxCommandEvent& event );
|
||||
void OnCancelClick( wxCommandEvent& event );
|
||||
void OnOkClick( wxCommandEvent& event );
|
||||
|
||||
// Internal callback handlers
|
||||
void setControlEnablement();
|
||||
void calculateCircularArrayProperties();
|
||||
|
||||
struct CREATE_ARRAY_DIALOG_ENTRIES
|
||||
{
|
||||
|
@ -334,13 +347,14 @@ private:
|
|||
std::string m_gridPriNumberingOffset, m_gridSecNumberingOffset;
|
||||
|
||||
std::string m_circCentreX, m_circCentreY,
|
||||
m_circAngle, m_circCount;
|
||||
m_circAngle, m_circCount, m_circNumberingOffset;
|
||||
bool m_circRotate;
|
||||
|
||||
int m_arrayTypeTab;
|
||||
};
|
||||
|
||||
static CREATE_ARRAY_DIALOG_ENTRIES m_options;
|
||||
|
||||
};
|
||||
|
||||
#endif // __DIALOG_CREATE_ARRAY__
|
||||
|
|
|
@ -203,37 +203,45 @@ DIALOG_CREATE_ARRAY_BASE::DIALOG_CREATE_ARRAY_BASE( wxWindow* parent, wxWindowID
|
|||
m_unitLabelCentreY->Wrap( -1 );
|
||||
gbSizer2->Add( m_unitLabelCentreY, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
m_labelCircRadius = new wxStaticText( m_circularPanel, wxID_ANY, _("Radius:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_labelCircRadius->Wrap( -1 );
|
||||
gbSizer2->Add( m_labelCircRadius, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );
|
||||
|
||||
m_labelCircRadiusValue = new wxStaticText( m_circularPanel, wxID_ANY, _("0 mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_labelCircRadiusValue->Wrap( -1 );
|
||||
gbSizer2->Add( m_labelCircRadiusValue, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
|
||||
|
||||
m_labelCircAngle = new wxStaticText( m_circularPanel, wxID_ANY, _("Angle:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_labelCircAngle->Wrap( -1 );
|
||||
gbSizer2->Add( m_labelCircAngle, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
|
||||
gbSizer2->Add( m_labelCircAngle, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
|
||||
|
||||
m_entryCircAngle = new wxTextCtrl( m_circularPanel, wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_entryCircAngle->SetToolTip( _("Positive angles represent an anti-clockwise rotation. An angle of 0 will produce a full circle divided evenly into \"Count\" portions.") );
|
||||
|
||||
gbSizer2->Add( m_entryCircAngle, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
|
||||
gbSizer2->Add( m_entryCircAngle, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
|
||||
|
||||
m_unitLabelCircAngle = new wxStaticText( m_circularPanel, wxID_ANY, _("deg"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_unitLabelCircAngle->Wrap( -1 );
|
||||
gbSizer2->Add( m_unitLabelCircAngle, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
gbSizer2->Add( m_unitLabelCircAngle, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
m_labelCircCount = new wxStaticText( m_circularPanel, wxID_ANY, _("Count:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_labelCircCount->Wrap( -1 );
|
||||
gbSizer2->Add( m_labelCircCount, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
|
||||
gbSizer2->Add( m_labelCircCount, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
|
||||
|
||||
m_entryCircCount = new wxTextCtrl( m_circularPanel, wxID_ANY, _("4"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_entryCircCount->SetToolTip( _("How many items in the array.") );
|
||||
|
||||
gbSizer2->Add( m_entryCircCount, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
|
||||
gbSizer2->Add( m_entryCircCount, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
|
||||
|
||||
m_labelCircRotate = new wxStaticText( m_circularPanel, wxID_ANY, _("Rotate:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_labelCircRotate->Wrap( -1 );
|
||||
gbSizer2->Add( m_labelCircRotate, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
|
||||
gbSizer2->Add( m_labelCircRotate, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
|
||||
|
||||
m_entryRotateItemsCb = new wxCheckBox( m_circularPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_entryRotateItemsCb->SetValue(true);
|
||||
m_entryRotateItemsCb->SetToolTip( _("Rotate the item as well as move it - multi-selections will be rotated together") );
|
||||
|
||||
gbSizer2->Add( m_entryRotateItemsCb, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
|
||||
gbSizer2->Add( m_entryRotateItemsCb, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
|
||||
|
||||
|
||||
bSizer4->Add( gbSizer2, 1, wxEXPAND, 5 );
|
||||
|
@ -254,6 +262,19 @@ DIALOG_CREATE_ARRAY_BASE::DIALOG_CREATE_ARRAY_BASE( wxWindow* parent, wxWindowID
|
|||
m_choiceCircNumberingType->SetSelection( 0 );
|
||||
bSizer6->Add( m_choiceCircNumberingType, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bSizer7;
|
||||
bSizer7 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_labelCircNumStart = new wxStaticText( m_circularPanel, wxID_ANY, _("Numbering start:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_labelCircNumStart->Wrap( -1 );
|
||||
bSizer7->Add( m_labelCircNumStart, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );
|
||||
|
||||
m_entryCircNumberingStart = new wxTextCtrl( m_circularPanel, wxID_ANY, _("1"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer7->Add( m_entryCircNumberingStart, 0, wxALL, 5 );
|
||||
|
||||
|
||||
bSizer6->Add( bSizer7, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizer4->Add( bSizer6, 1, wxEXPAND, 5 );
|
||||
|
||||
|
@ -289,8 +310,8 @@ DIALOG_CREATE_ARRAY_BASE::DIALOG_CREATE_ARRAY_BASE( wxWindow* parent, wxWindowID
|
|||
m_entryStagger->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_checkBoxGridRestartNumbering->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_radioBoxGridNumberingScheme->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCentreX->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCentreY->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCentreX->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCentreY->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCircAngle->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCircCount->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_stdButtonsCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnCancelClick ), NULL, this );
|
||||
|
@ -310,8 +331,8 @@ DIALOG_CREATE_ARRAY_BASE::~DIALOG_CREATE_ARRAY_BASE()
|
|||
m_entryStagger->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_checkBoxGridRestartNumbering->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_radioBoxGridNumberingScheme->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCentreX->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCentreY->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCentreX->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCentreY->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCircAngle->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_entryCircCount->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnParameterChanged ), NULL, this );
|
||||
m_stdButtonsCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CREATE_ARRAY_BASE::OnCancelClick ), NULL, this );
|
||||
|
|
|
@ -3046,11 +3046,11 @@
|
|||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="notebookpage" expanded="0">
|
||||
<object class="notebookpage" expanded="1">
|
||||
<property name="bitmap"></property>
|
||||
<property name="label">Circular</property>
|
||||
<property name="select">0</property>
|
||||
<object class="wxPanel" expanded="0">
|
||||
<object class="wxPanel" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
|
@ -3124,16 +3124,16 @@
|
|||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
<object class="wxBoxSizer" expanded="0">
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">bSizer4</property>
|
||||
<property name="orient">wxHORIZONTAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="0">
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxGridBagSizer" expanded="0">
|
||||
<object class="wxGridBagSizer" expanded="1">
|
||||
<property name="empty_cell_size"></property>
|
||||
<property name="flexible_direction">wxBOTH</property>
|
||||
<property name="growablecols"></property>
|
||||
|
@ -3317,8 +3317,8 @@
|
|||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnText"></event>
|
||||
<event name="OnTextEnter">OnParameterChanged</event>
|
||||
<event name="OnText">OnParameterChanged</event>
|
||||
<event name="OnTextEnter"></event>
|
||||
<event name="OnTextMaxLen"></event>
|
||||
<event name="OnTextURL"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
|
@ -3583,8 +3583,8 @@
|
|||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnText"></event>
|
||||
<event name="OnTextEnter">OnParameterChanged</event>
|
||||
<event name="OnText">OnParameterChanged</event>
|
||||
<event name="OnTextEnter"></event>
|
||||
<event name="OnTextMaxLen"></event>
|
||||
<event name="OnTextURL"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
|
@ -3676,12 +3676,184 @@
|
|||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="gbsizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="colspan">1</property>
|
||||
<property name="column">0</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>
|
||||
<property name="row">2</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxStaticText" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Radius:</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_labelCircRadius</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="gbsizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="colspan">1</property>
|
||||
<property name="column">1</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="row">2</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxStaticText" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">0 mm</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_labelCircRadiusValue</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="gbsizeritem" expanded="0">
|
||||
<property name="border">5</property>
|
||||
<property name="colspan">1</property>
|
||||
<property name="column">0</property>
|
||||
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT</property>
|
||||
<property name="row">2</property>
|
||||
<property name="row">3</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxStaticText" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
|
@ -3767,7 +3939,7 @@
|
|||
<property name="colspan">1</property>
|
||||
<property name="column">1</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="row">2</property>
|
||||
<property name="row">3</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxTextCtrl" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
|
@ -3861,7 +4033,7 @@
|
|||
<property name="colspan">1</property>
|
||||
<property name="column">2</property>
|
||||
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
|
||||
<property name="row">2</property>
|
||||
<property name="row">3</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxStaticText" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
|
@ -3947,7 +4119,7 @@
|
|||
<property name="colspan">1</property>
|
||||
<property name="column">0</property>
|
||||
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT</property>
|
||||
<property name="row">3</property>
|
||||
<property name="row">4</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxStaticText" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
|
@ -4033,7 +4205,7 @@
|
|||
<property name="colspan">1</property>
|
||||
<property name="column">1</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="row">3</property>
|
||||
<property name="row">4</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxTextCtrl" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
|
@ -4127,7 +4299,7 @@
|
|||
<property name="colspan">1</property>
|
||||
<property name="column">0</property>
|
||||
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT</property>
|
||||
<property name="row">4</property>
|
||||
<property name="row">5</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxStaticText" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
|
@ -4213,7 +4385,7 @@
|
|||
<property name="colspan">1</property>
|
||||
<property name="column">1</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="row">4</property>
|
||||
<property name="row">5</property>
|
||||
<property name="rowspan">1</property>
|
||||
<object class="wxCheckBox" expanded="0">
|
||||
<property name="BottomDockable">1</property>
|
||||
|
@ -4569,6 +4741,191 @@
|
|||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">bSizer7</property>
|
||||
<property name="orient">wxHORIZONTAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticText" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Numbering start:</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_labelCircNumStart</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxTextCtrl" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="maxlength"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_entryCircNumberingStart</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="value">1</property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnText"></event>
|
||||
<event name="OnTextEnter"></event>
|
||||
<event name="OnTextMaxLen"></event>
|
||||
<event name="OnTextURL"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
|
|
|
@ -86,6 +86,8 @@ class DIALOG_CREATE_ARRAY_BASE : public DIALOG_SHIM
|
|||
wxStaticText* m_labelCentreY;
|
||||
wxTextCtrl* m_entryCentreY;
|
||||
wxStaticText* m_unitLabelCentreY;
|
||||
wxStaticText* m_labelCircRadius;
|
||||
wxStaticText* m_labelCircRadiusValue;
|
||||
wxStaticText* m_labelCircAngle;
|
||||
wxTextCtrl* m_entryCircAngle;
|
||||
wxStaticText* m_unitLabelCircAngle;
|
||||
|
@ -96,6 +98,8 @@ class DIALOG_CREATE_ARRAY_BASE : public DIALOG_SHIM
|
|||
wxCheckBox* m_checkBoxCircRestartNumbering;
|
||||
wxStaticText* m_labelCircNumbering;
|
||||
wxChoice* m_choiceCircNumberingType;
|
||||
wxStaticText* m_labelCircNumStart;
|
||||
wxTextCtrl* m_entryCircNumberingStart;
|
||||
wxStdDialogButtonSizer* m_stdButtons;
|
||||
wxButton* m_stdButtonsOK;
|
||||
wxButton* m_stdButtonsCancel;
|
||||
|
|
209
pcbnew/edit.cpp
|
@ -54,6 +54,9 @@
|
|||
#include <dialog_global_edit_tracks_and_vias.h>
|
||||
#include <invoke_pcb_dialog.h>
|
||||
|
||||
#include <dialog_move_exact.h>
|
||||
#include <dialog_create_array.h>
|
||||
|
||||
#include <tool/tool_manager.h>
|
||||
#include <tools/common_actions.h>
|
||||
|
||||
|
@ -1188,6 +1191,19 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
|||
}
|
||||
break;
|
||||
|
||||
case ID_POPUP_PCB_MOVE_EXACT:
|
||||
moveExact();
|
||||
break;
|
||||
|
||||
case ID_POPUP_PCB_DUPLICATE_ITEM:
|
||||
case ID_POPUP_PCB_DUPLICATE_ITEM_AND_INCREMENT:
|
||||
duplicateItem( id == ID_POPUP_PCB_DUPLICATE_ITEM_AND_INCREMENT );
|
||||
break;
|
||||
|
||||
case ID_POPUP_PCB_CREATE_ARRAY:
|
||||
createArray();
|
||||
break;
|
||||
|
||||
case ID_MENU_PCB_CLEAN:
|
||||
Clean_Pcb();
|
||||
break;
|
||||
|
@ -1486,3 +1502,196 @@ void PCB_EDIT_FRAME::OnSelectTool( wxCommandEvent& aEvent )
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PCB_EDIT_FRAME::moveExact()
|
||||
{
|
||||
wxPoint translation;
|
||||
double rotation = 0;
|
||||
|
||||
DIALOG_MOVE_EXACT dialog( this, translation, rotation );
|
||||
int ret = dialog.ShowModal();
|
||||
|
||||
if( ret == DIALOG_MOVE_EXACT::MOVE_OK )
|
||||
{
|
||||
BOARD_ITEM* item = GetScreen()->GetCurItem();
|
||||
|
||||
// Could be moved or rotated
|
||||
SaveCopyInUndoList( item, UR_CHANGED );
|
||||
|
||||
item->Move( translation );
|
||||
item->Rotate( item->GetPosition(), rotation );
|
||||
m_canvas->Refresh();
|
||||
}
|
||||
|
||||
m_canvas->MoveCursorToCrossHair();
|
||||
}
|
||||
|
||||
|
||||
void PCB_EDIT_FRAME::duplicateItem( bool aIncrement )
|
||||
{
|
||||
BOARD_ITEM* item = GetScreen()->GetCurItem();
|
||||
|
||||
int move_cmd = 0;
|
||||
|
||||
BOARD_ITEM* new_item = GetBoard()->DuplicateAndAddItem(
|
||||
item, aIncrement );
|
||||
|
||||
SaveCopyInUndoList( new_item, UR_NEW );
|
||||
|
||||
if( new_item )
|
||||
{
|
||||
switch( new_item->Type() )
|
||||
{
|
||||
case PCB_MODULE_T:
|
||||
move_cmd = ID_POPUP_PCB_MOVE_MODULE_REQUEST;
|
||||
break;
|
||||
case PCB_TEXT_T:
|
||||
move_cmd = ID_POPUP_PCB_MOVE_TEXTEPCB_REQUEST;
|
||||
break;
|
||||
case PCB_LINE_T:
|
||||
move_cmd = ID_POPUP_PCB_MOVE_DRAWING_REQUEST;
|
||||
break;
|
||||
case PCB_ZONE_AREA_T:
|
||||
move_cmd = ID_POPUP_PCB_MOVE_ZONE_OUTLINES;
|
||||
break;
|
||||
case PCB_TRACE_T:
|
||||
move_cmd = ID_POPUP_PCB_MOVE_TRACK_SEGMENT;
|
||||
break;
|
||||
case PCB_TARGET_T:
|
||||
move_cmd = ID_POPUP_PCB_MOVE_MIRE_REQUEST;
|
||||
break;
|
||||
case PCB_DIMENSION_T:
|
||||
move_cmd = ID_POPUP_PCB_MOVE_TEXT_DIMENSION_REQUEST;
|
||||
break;
|
||||
case PCB_PAD_T:
|
||||
move_cmd = ID_POPUP_PCB_MOVE_PAD_REQUEST;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if( move_cmd )
|
||||
{
|
||||
SetMsgPanel( new_item );
|
||||
SetCurItem( new_item );
|
||||
|
||||
m_canvas->MoveCursorToCrossHair();
|
||||
|
||||
// pick up the item and start moving
|
||||
PostCommandMenuEvent( move_cmd );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PCB_BASE_EDIT_FRAME::createArray()
|
||||
{
|
||||
BOARD_ITEM* item = GetScreen()->GetCurItem();
|
||||
|
||||
if( !item )
|
||||
return;
|
||||
|
||||
bool editingModule = NULL != dynamic_cast<FOOTPRINT_EDIT_FRAME*>( this );
|
||||
|
||||
BOARD* board = GetBoard();
|
||||
MODULE* module = static_cast<MODULE*>( item->GetParent() );
|
||||
|
||||
DIALOG_CREATE_ARRAY::ARRAY_OPTIONS* array_opts = NULL;
|
||||
|
||||
const wxPoint rotPoint = item->GetCenter();
|
||||
|
||||
DIALOG_CREATE_ARRAY dialog( this, rotPoint, &array_opts );
|
||||
int ret = dialog.ShowModal();
|
||||
|
||||
if( ret == DIALOG_CREATE_ARRAY::CREATE_ARRAY_OK && array_opts != NULL )
|
||||
{
|
||||
PICKED_ITEMS_LIST newItemsList;
|
||||
|
||||
if( editingModule )
|
||||
{
|
||||
// modedit saves everything upfront
|
||||
SaveCopyInUndoList( board->m_Modules, UR_MODEDIT );
|
||||
}
|
||||
else
|
||||
{
|
||||
// We may also change the original item
|
||||
SaveCopyInUndoList( item, UR_CHANGED );
|
||||
}
|
||||
|
||||
wxString cachedString;
|
||||
|
||||
if( item->Type() == PCB_MODULE_T )
|
||||
{
|
||||
cachedString = static_cast<MODULE*>( item )->GetReferencePrefix();
|
||||
}
|
||||
else if( EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( item ) )
|
||||
{
|
||||
// Copy the text (not just take a reference
|
||||
cachedString = text->GetText();
|
||||
}
|
||||
|
||||
for( int ptN = 0; ptN < array_opts->GetArraySize(); ptN++)
|
||||
{
|
||||
BOARD_ITEM* new_item = NULL;
|
||||
|
||||
if( ptN == 0 )
|
||||
{
|
||||
new_item = item;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( editingModule )
|
||||
new_item = module->DuplicateAndAddItem( item, true );
|
||||
else
|
||||
new_item = board->DuplicateAndAddItem( item, true );
|
||||
|
||||
if( new_item )
|
||||
{
|
||||
array_opts->TransformItem( ptN, new_item, rotPoint );
|
||||
newItemsList.PushItem( new_item );
|
||||
}
|
||||
}
|
||||
|
||||
if( !new_item || !array_opts->ShouldRenumberItems() )
|
||||
continue;
|
||||
|
||||
// Renumber items
|
||||
switch( new_item->Type() )
|
||||
{
|
||||
case PCB_MODULE_TEXT_T:
|
||||
case PCB_TEXT_T:
|
||||
{
|
||||
EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( new_item );
|
||||
text->SetText( array_opts->InterpolateNumberIntoString( ptN, cachedString ) );
|
||||
|
||||
break;
|
||||
}
|
||||
case PCB_MODULE_T:
|
||||
{
|
||||
const wxString padName = array_opts->GetItemNumber( ptN );
|
||||
static_cast<MODULE*>( new_item )->SetReference( cachedString + padName );
|
||||
|
||||
break;
|
||||
}
|
||||
case PCB_PAD_T:
|
||||
{
|
||||
const wxString padName = array_opts->GetItemNumber( ptN );
|
||||
static_cast<D_PAD*>( new_item )->SetPadName( padName );
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( !editingModule )
|
||||
{
|
||||
// pcbnew saves the new items like this
|
||||
SaveCopyInUndoList( newItemsList, UR_NEW );
|
||||
}
|
||||
|
||||
m_canvas->Refresh();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -282,7 +282,9 @@ EDA_HOTKEY* board_edit_Hotkey_List[] =
|
|||
&HkPlaceItem, &HkCopyItem,
|
||||
&HkMoveItem,
|
||||
&HkFlipItem,
|
||||
&HkRotateItem, &HkDragFootprint,
|
||||
&HkRotateItem, &HkMoveItemExact,
|
||||
&HkDuplicateItem, &HkDuplicateItemAndIncrement, &HkCreateArray,
|
||||
&HkDragFootprint,
|
||||
&HkGetAndMoveFootprint, &HkLock_Unlock_Footprint, &HkSavefile, &HkSavefileAs,
|
||||
&HkLoadfile, &HkFindItem, &HkEditBoardItem,
|
||||
&HkSwitch2CopperLayer, &HkSwitch2InnerLayer1,
|
||||
|
|
|
@ -551,6 +551,13 @@ bool PCB_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosit
|
|||
OnHotkeyRotateItem( HK_FLIP_ITEM );
|
||||
break;
|
||||
|
||||
case HK_MOVE_ITEM_EXACT:
|
||||
case HK_DUPLICATE_ITEM:
|
||||
case HK_DUPLICATE_ITEM_AND_INCREMENT:
|
||||
case HK_CREATE_ARRAY:
|
||||
OnHotkeyDuplicateOrArrayItem( HK_Descr->m_Idcommand );
|
||||
break;
|
||||
|
||||
case HK_SWITCH_HIGHCONTRAST_MODE: // switch to high contrast mode and refresh the canvas
|
||||
displ_opts->m_ContrastModeDisplay = !displ_opts->m_ContrastModeDisplay;
|
||||
m_canvas->Refresh();
|
||||
|
@ -1063,3 +1070,71 @@ bool PCB_EDIT_FRAME::OnHotkeyRotateItem( int aIdCommand )
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PCB_EDIT_FRAME::OnHotkeyDuplicateOrArrayItem( int aIdCommand )
|
||||
{
|
||||
BOARD_ITEM* item = GetCurItem();
|
||||
bool itemCurrentlyEdited = item && item->GetFlags();
|
||||
|
||||
if( itemCurrentlyEdited )
|
||||
return false;
|
||||
|
||||
item = PcbGeneralLocateAndDisplay();
|
||||
|
||||
if( item == NULL )
|
||||
return false;
|
||||
|
||||
SetCurItem( item );
|
||||
|
||||
int evt_type = 0; // Used to post a wxCommandEvent on demand
|
||||
|
||||
bool canDuplicate = true;
|
||||
|
||||
switch( item->Type() )
|
||||
{
|
||||
// Only handle items we know we can handle
|
||||
case PCB_PAD_T:
|
||||
canDuplicate = false;
|
||||
// no break
|
||||
case PCB_MODULE_T:
|
||||
case PCB_LINE_T:
|
||||
case PCB_TEXT_T:
|
||||
case PCB_TRACE_T:
|
||||
case PCB_ZONE_AREA_T:
|
||||
case PCB_TARGET_T:
|
||||
case PCB_DIMENSION_T:
|
||||
switch( aIdCommand )
|
||||
{
|
||||
case HK_CREATE_ARRAY:
|
||||
if( canDuplicate )
|
||||
evt_type = ID_POPUP_PCB_CREATE_ARRAY;
|
||||
break;
|
||||
|
||||
case HK_DUPLICATE_ITEM_AND_INCREMENT:
|
||||
if( canDuplicate )
|
||||
evt_type = ID_POPUP_PCB_DUPLICATE_ITEM_AND_INCREMENT;
|
||||
break;
|
||||
|
||||
case HK_DUPLICATE_ITEM:
|
||||
if( canDuplicate )
|
||||
evt_type = ID_POPUP_PCB_DUPLICATE_ITEM;
|
||||
break;
|
||||
|
||||
case HK_MOVE_ITEM_EXACT:
|
||||
evt_type = ID_POPUP_PCB_MOVE_EXACT;
|
||||
break;
|
||||
|
||||
default:
|
||||
// We don't handle other commands here
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
wxASSERT_MSG( false, "Unhandled move, duplicate or array for "
|
||||
"object type " + item->Type() );
|
||||
break;
|
||||
}
|
||||
|
||||
return PostCommandMenuEvent( evt_type );
|
||||
}
|
||||
|
|
|
@ -211,21 +211,6 @@ BOARD_ITEM* FOOTPRINT_EDIT_FRAME::PrepareItemForHotkey( bool failIfCurrentlyEdit
|
|||
}
|
||||
|
||||
|
||||
bool FOOTPRINT_EDIT_FRAME::PostCommandMenuEvent( int evt_type )
|
||||
{
|
||||
if( evt_type != 0 )
|
||||
{
|
||||
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED );
|
||||
evt.SetEventObject( this );
|
||||
evt.SetId( evt_type );
|
||||
wxPostEvent( this, evt );
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool FOOTPRINT_EDIT_FRAME::OnHotkeyEditItem( int aIdCommand )
|
||||
{
|
||||
BOARD_ITEM* item = PrepareItemForHotkey( true );
|
||||
|
|
|
@ -649,68 +649,13 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
|||
break;
|
||||
|
||||
case ID_POPUP_PCB_MOVE_EXACT:
|
||||
{
|
||||
wxPoint translation;
|
||||
double rotation = 0;
|
||||
|
||||
DIALOG_MOVE_EXACT dialog( this, translation, rotation );
|
||||
int ret = dialog.ShowModal();
|
||||
|
||||
if( ret == DIALOG_MOVE_EXACT::MOVE_OK )
|
||||
{
|
||||
SaveCopyInUndoList( GetBoard()->m_Modules, UR_MODEDIT );
|
||||
|
||||
BOARD_ITEM* item = GetScreen()->GetCurItem();
|
||||
|
||||
item->Move( translation );
|
||||
item->Rotate( item->GetPosition(), rotation );
|
||||
m_canvas->Refresh();
|
||||
}
|
||||
|
||||
m_canvas->MoveCursorToCrossHair();
|
||||
moveExact();
|
||||
break;
|
||||
}
|
||||
|
||||
case ID_POPUP_PCB_CREATE_ARRAY:
|
||||
{
|
||||
BOARD_ITEM* item = GetScreen()->GetCurItem();
|
||||
|
||||
if( !item )
|
||||
createArray();
|
||||
break;
|
||||
|
||||
MODULE* module = static_cast<MODULE*>( item->GetParent() );
|
||||
|
||||
if( !module )
|
||||
break;
|
||||
|
||||
DIALOG_CREATE_ARRAY::ARRAY_OPTIONS* array_opts = NULL;
|
||||
|
||||
DIALOG_CREATE_ARRAY dialog( this, &array_opts );
|
||||
int ret = dialog.ShowModal();
|
||||
|
||||
if( ret == DIALOG_CREATE_ARRAY::CREATE_ARRAY_OK && array_opts != NULL )
|
||||
{
|
||||
SaveCopyInUndoList( GetBoard()->m_Modules, UR_MODEDIT );
|
||||
|
||||
for( int i = 0; i < array_opts->GetArraySize(); i++)
|
||||
{
|
||||
BOARD_ITEM* new_item = module->DuplicateAndAddItem(
|
||||
item, true );
|
||||
|
||||
array_opts->TransformItem( i, new_item, new_item->GetCenter() );
|
||||
|
||||
if( new_item->Type() == PCB_PAD_T && array_opts->ShouldRenumberItems() )
|
||||
{
|
||||
const std::string padName = array_opts->GetItemNumber( i );
|
||||
static_cast<D_PAD*>( new_item )->SetPadName( padName );
|
||||
}
|
||||
}
|
||||
|
||||
m_canvas->Refresh();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case ID_POPUP_PCB_IMPORT_PAD_SETTINGS:
|
||||
SaveCopyInUndoList( GetBoard()->m_Modules, UR_MODEDIT );
|
||||
m_canvas->MoveCursorToCrossHair();
|
||||
|
@ -895,7 +840,30 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
|||
}
|
||||
|
||||
|
||||
void FOOTPRINT_EDIT_FRAME::DuplicateItems( bool aIncrement )
|
||||
void FOOTPRINT_EDIT_FRAME::moveExact()
|
||||
{
|
||||
wxPoint translation;
|
||||
double rotation = 0;
|
||||
|
||||
DIALOG_MOVE_EXACT dialog( this, translation, rotation );
|
||||
int ret = dialog.ShowModal();
|
||||
|
||||
if( ret == DIALOG_MOVE_EXACT::MOVE_OK )
|
||||
{
|
||||
SaveCopyInUndoList( GetBoard()->m_Modules, UR_MODEDIT );
|
||||
|
||||
BOARD_ITEM* item = GetScreen()->GetCurItem();
|
||||
|
||||
item->Move( translation );
|
||||
item->Rotate( item->GetPosition(), rotation );
|
||||
m_canvas->Refresh();
|
||||
}
|
||||
|
||||
m_canvas->MoveCursorToCrossHair();
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_EDIT_FRAME::duplicateItems( bool aIncrement )
|
||||
{
|
||||
SaveCopyInUndoList( GetBoard()->m_Modules, UR_MODEDIT );
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
|
||||
|
||||
class FP_LIB_TABLE;
|
||||
class PCB_LAYER_WIDGET;
|
||||
|
||||
namespace PCB { struct IFACE; } // A KIFACE_I coded in pcbnew.c
|
||||
|
||||
|
@ -146,7 +147,6 @@ public:
|
|||
bool OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, EDA_ITEM* aItem = NULL );
|
||||
|
||||
BOARD_ITEM* PrepareItemForHotkey( bool failIfCurrentlyEdited );
|
||||
bool PostCommandMenuEvent( int evt_type );
|
||||
|
||||
bool OnHotkeyEditItem( int aIdCommand );
|
||||
bool OnHotkeyDeleteItem( int aIdCommand );
|
||||
|
@ -371,7 +371,7 @@ public:
|
|||
/**
|
||||
* Function SelectFootprint
|
||||
* Display the list of modules currently existing on the BOARD
|
||||
* @return a pointer to a module if this module is selected or NULL otherwise
|
||||
* @return a pointer to a modulvoid FOOTPRINT_EDIT_FRAME::moveExact()e if this module is selected or NULL otherwise
|
||||
* @param aPcb = the board from modules can be loaded
|
||||
*/
|
||||
MODULE* SelectFootprint( BOARD* aPcb );
|
||||
|
@ -539,6 +539,14 @@ protected:
|
|||
private:
|
||||
|
||||
/**
|
||||
* Function moveExact
|
||||
* Move the selected item exactly, popping up a dialog to allow the
|
||||
* user the enter the move delta
|
||||
*/
|
||||
void moveExact();
|
||||
|
||||
/**
|
||||
* Function duplicateItems
|
||||
* Duplicate the item under the cursor
|
||||
* @param aIncrement increment the number of pad (if that is what is selected)
|
||||
*/
|
||||
|
|
|
@ -200,8 +200,27 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
HK_MOVE_ITEM );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_DRAWING_REQUEST,
|
||||
msg, KiBitmap( move_xpm ) );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_EDIT_DRAWING, _( "Edit Drawing" ),
|
||||
KiBitmap( edit_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Duplicate Drawing" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_DUPLICATE_ITEM );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
|
||||
msg, KiBitmap( duplicate_line_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Move Drawing Exactly" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_MOVE_ITEM_EXACT );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_EXACT,
|
||||
msg, KiBitmap( move_line_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Create Drawing Array" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_CREATE_ARRAY );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_CREATE_ARRAY,
|
||||
msg, KiBitmap( array_line_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Edit Drawing" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_EDIT_ITEM );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_EDIT_DRAWING,
|
||||
msg, KiBitmap( edit_xpm ) );
|
||||
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_DRAWING,
|
||||
_( "Delete Drawing" ), KiBitmap( delete_xpm ) );
|
||||
|
||||
|
@ -252,12 +271,30 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
msg = AddHotkeyName( _( "Edit Dimension" ), g_Board_Editor_Hokeys_Descr,
|
||||
HK_EDIT_ITEM );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_EDIT_DIMENSION, msg, KiBitmap( edit_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Move Dimension Text" ), g_Board_Editor_Hokeys_Descr,
|
||||
HK_MOVE_ITEM );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_TEXT_DIMENSION_REQUEST,
|
||||
msg, KiBitmap( move_text_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Duplicate Dimension" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_DUPLICATE_ITEM );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
|
||||
msg, KiBitmap( duplicate_text_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Move Dimension Exactly" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_MOVE_ITEM_EXACT );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_EXACT,
|
||||
msg, KiBitmap( move_text_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Create Dimension Array" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_CREATE_ARRAY );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_CREATE_ARRAY,
|
||||
msg, KiBitmap( array_text_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Delete Dimension" ), g_Board_Editor_Hokeys_Descr,
|
||||
HK_DELETE );
|
||||
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_DIMENSION,
|
||||
msg, KiBitmap( delete_xpm ) );
|
||||
}
|
||||
|
@ -268,10 +305,28 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
{
|
||||
msg = AddHotkeyName( _( "Move Target" ), g_Board_Editor_Hokeys_Descr,
|
||||
HK_MOVE_ITEM );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_MIRE_REQUEST, msg, KiBitmap( move_xpm ) );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_MIRE_REQUEST,
|
||||
msg, KiBitmap( move_target_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Move Target Exactly" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_MOVE_ITEM_EXACT );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_EXACT,
|
||||
msg, KiBitmap( move_target_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Duplicate Target" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_DUPLICATE_ITEM );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
|
||||
msg, KiBitmap( duplicate_target_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Create Target Array" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_CREATE_ARRAY );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_CREATE_ARRAY,
|
||||
msg, KiBitmap( array_target_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Edit Target" ), g_Board_Editor_Hokeys_Descr,
|
||||
HK_EDIT_ITEM );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_EDIT_MIRE, msg, KiBitmap( edit_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Delete Target" ), g_Board_Editor_Hokeys_Descr, HK_DELETE );
|
||||
AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_MIRE,
|
||||
msg, KiBitmap( delete_xpm ) );
|
||||
|
@ -316,7 +371,6 @@ bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
switch( GetToolId() )
|
||||
{
|
||||
case ID_PCB_ZONES_BUTT:
|
||||
if( GetBoard()->m_ZoneDescriptorList.size() > 0 )
|
||||
{
|
||||
aPopMenu->AppendSeparator();
|
||||
msg = AddHotkeyName( _( "Fill or Refill All Zones" ),
|
||||
|
@ -500,10 +554,27 @@ void PCB_EDIT_FRAME::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
|
|||
HK_DRAG_TRACK_KEEP_SLOPE );
|
||||
AddMenuItem( PopMenu, ID_POPUP_PCB_DRAG_TRACK_SEGMENT_KEEP_SLOPE,
|
||||
msg, KiBitmap( drag_segment_withslope_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Drag Segment" ), g_Board_Editor_Hokeys_Descr,
|
||||
HK_DRAG_ITEM );
|
||||
AddMenuItem( PopMenu, ID_POPUP_PCB_DRAG_TRACK_SEGMENT,
|
||||
msg, KiBitmap( drag_track_segment_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Duplicate Track" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_DUPLICATE_ITEM );
|
||||
AddMenuItem( PopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
|
||||
msg, KiBitmap( duplicate_line_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Move Track Exactly" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_MOVE_ITEM_EXACT );
|
||||
AddMenuItem( PopMenu, ID_POPUP_PCB_MOVE_EXACT,
|
||||
msg, KiBitmap( move_line_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Create Track Array" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_CREATE_ARRAY );
|
||||
AddMenuItem( PopMenu, ID_POPUP_PCB_CREATE_ARRAY,
|
||||
msg, KiBitmap( array_line_xpm ) );
|
||||
|
||||
AddMenuItem( PopMenu, ID_POPUP_PCB_BREAK_TRACK,
|
||||
_( "Break Track" ), KiBitmap( break_line_xpm ) );
|
||||
}
|
||||
|
@ -688,7 +759,17 @@ void PCB_EDIT_FRAME::createPopUpMenuForZones( ZONE_CONTAINER* edge_zone, wxMenu*
|
|||
_( "Add Cutout Area" ), KiBitmap( add_zone_cutout_xpm ) );
|
||||
|
||||
AddMenuItem( zones_menu, ID_POPUP_PCB_ZONE_DUPLICATE,
|
||||
_( "Duplicate Zone" ), KiBitmap( zone_duplicate_xpm ) );
|
||||
_( "Duplicate Zone Onto Layer" ), KiBitmap( zone_duplicate_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Duplicate Zone" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_DUPLICATE_ITEM );
|
||||
AddMenuItem( zones_menu, ID_POPUP_PCB_DUPLICATE_ITEM,
|
||||
msg, KiBitmap( zone_duplicate_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Create Zone Array" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_CREATE_ARRAY );
|
||||
AddMenuItem( zones_menu, ID_POPUP_PCB_CREATE_ARRAY,
|
||||
msg, KiBitmap( array_zone_xpm ) );
|
||||
|
||||
zones_menu->AppendSeparator();
|
||||
|
||||
|
@ -705,6 +786,11 @@ void PCB_EDIT_FRAME::createPopUpMenuForZones( ZONE_CONTAINER* edge_zone, wxMenu*
|
|||
msg = AddHotkeyName( _( "Move Zone" ), g_Board_Editor_Hokeys_Descr, HK_MOVE_ITEM );
|
||||
AddMenuItem( zones_menu, ID_POPUP_PCB_MOVE_ZONE_OUTLINES, msg, KiBitmap( move_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Move Zone Exactly" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_MOVE_ITEM_EXACT );
|
||||
AddMenuItem( zones_menu, ID_POPUP_PCB_MOVE_EXACT,
|
||||
msg, KiBitmap( move_zone_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Edit Zone Properties" ), g_Board_Editor_Hokeys_Descr,
|
||||
HK_EDIT_ITEM );
|
||||
AddMenuItem( zones_menu, ID_POPUP_PCB_EDIT_ZONE_PARAMS,
|
||||
|
@ -741,6 +827,22 @@ void PCB_EDIT_FRAME::createPopUpMenuForFootprints( MODULE* aModule, wxMenu* menu
|
|||
msg = AddHotkeyName( _( "Move" ), g_Board_Editor_Hokeys_Descr, HK_MOVE_ITEM );
|
||||
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_MOVE_MODULE_REQUEST,
|
||||
msg, KiBitmap( move_module_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Duplicate" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_DUPLICATE_ITEM );
|
||||
AddMenuItem( menu, ID_POPUP_PCB_DUPLICATE_ITEM,
|
||||
msg, KiBitmap( duplicate_module_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Move Exactly" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_MOVE_ITEM_EXACT );
|
||||
AddMenuItem( menu, ID_POPUP_PCB_MOVE_EXACT,
|
||||
msg, KiBitmap( move_module_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Create Array" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_CREATE_ARRAY );
|
||||
AddMenuItem( menu, ID_POPUP_PCB_CREATE_ARRAY,
|
||||
msg, KiBitmap( array_module_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Drag" ), g_Board_Editor_Hokeys_Descr, HK_DRAG_ITEM );
|
||||
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_DRAG_MODULE_REQUEST,
|
||||
msg, KiBitmap( drag_module_xpm ) );
|
||||
|
@ -791,6 +893,21 @@ void PCB_EDIT_FRAME::createPopUpMenuForFpTexts( TEXTE_MODULE* FpText, wxMenu* me
|
|||
msg = AddHotkeyName( _( "Move" ), g_Board_Editor_Hokeys_Descr, HK_MOVE_ITEM );
|
||||
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_MOVE_TEXTMODULE_REQUEST,
|
||||
msg, KiBitmap( move_field_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _( "Duplicate" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_DUPLICATE_ITEM );
|
||||
AddMenuItem( menu, ID_POPUP_PCB_DUPLICATE_ITEM,
|
||||
msg, KiBitmap( duplicate_text_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Move Exactly" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_MOVE_ITEM_EXACT );
|
||||
AddMenuItem( menu, ID_POPUP_PCB_MOVE_EXACT,
|
||||
msg, KiBitmap( move_text_xpm ) );
|
||||
|
||||
msg = AddHotkeyName( _("Create Array" ), g_Module_Editor_Hokeys_Descr,
|
||||
HK_CREATE_ARRAY );
|
||||
AddMenuItem( menu, ID_POPUP_PCB_CREATE_ARRAY,
|
||||
msg, KiBitmap( array_text_xpm ) );
|
||||
}
|
||||
|
||||
msg = AddHotkeyName( _( "Rotate" ), g_Board_Editor_Hokeys_Descr, HK_ROTATE_ITEM );
|
||||
|
|
|
@ -31,3 +31,17 @@ void PCB_BASE_EDIT_FRAME::SetRotationAngle( int aRotationAngle )
|
|||
|
||||
m_rotationAngle = aRotationAngle;
|
||||
}
|
||||
|
||||
bool PCB_BASE_EDIT_FRAME::PostCommandMenuEvent( int evt_type )
|
||||
{
|
||||
if( evt_type != 0 )
|
||||
{
|
||||
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED );
|
||||
evt.SetEventObject( this );
|
||||
evt.SetId( evt_type );
|
||||
wxPostEvent( this, evt );
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -69,9 +69,19 @@ public:
|
|||
int GetRotationAngle() const { return m_rotationAngle; }
|
||||
void SetRotationAngle( int aRotationAngle );
|
||||
|
||||
bool PostCommandMenuEvent( int evt_type );
|
||||
|
||||
protected:
|
||||
/// User defined rotation angle (in tenths of a degree).
|
||||
int m_rotationAngle;
|
||||
|
||||
/**
|
||||
* Function createArray
|
||||
* Create an array of the selected item (invokes the dialogue)
|
||||
* This function is shared between pcbnew and modedit, as it is virtually
|
||||
* the same
|
||||
*/
|
||||
void createArray();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -76,6 +76,10 @@ TOOL_ACTION COMMON_ACTIONS::moveExact( "pcbnew.InteractiveEdit.moveExact",
|
|||
AS_GLOBAL, MD_CTRL + int( 'M' ),
|
||||
"Move Exactly...", "Moves the selected item(s) by an exact amount" );
|
||||
|
||||
TOOL_ACTION COMMON_ACTIONS::createArray( "pcbnew.InteractiveEdit.createArray",
|
||||
AS_GLOBAL, MD_CTRL + int('N'),
|
||||
"Create array", "Create array", AF_ACTIVATE );
|
||||
|
||||
TOOL_ACTION COMMON_ACTIONS::rotate( "pcbnew.InteractiveEdit.rotate",
|
||||
AS_GLOBAL, 'R',
|
||||
"Rotate", "Rotates selected item(s)" );
|
||||
|
@ -341,10 +345,6 @@ TOOL_ACTION COMMON_ACTIONS::enumeratePads( "pcbnew.ModuleEditor.enumeratePads",
|
|||
AS_GLOBAL, 0,
|
||||
"Enumerate pads", "Enumerate pads", AF_ACTIVATE );
|
||||
|
||||
TOOL_ACTION COMMON_ACTIONS::createArray( "pcbnew.ModuleEditor.createArray",
|
||||
AS_GLOBAL, MD_CTRL + int('N'),
|
||||
"Create array", "Create array", AF_ACTIVATE );
|
||||
|
||||
TOOL_ACTION COMMON_ACTIONS::copyItems( "pcbnew.ModuleEditor.copyItems",
|
||||
AS_GLOBAL, MD_CTRL + int( 'C' ),
|
||||
"Copy items", "Copy items", AF_ACTIVATE );
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
#include <class_module.h>
|
||||
#include <class_edge_mod.h>
|
||||
#include <class_zone.h>
|
||||
#include <class_draw_panel_gal.h>
|
||||
#include <module_editor_frame.h>
|
||||
#include <wxPcbStruct.h>
|
||||
|
||||
#include <tool/tool_manager.h>
|
||||
|
@ -42,6 +44,7 @@
|
|||
#include "selection_tool.h"
|
||||
#include "edit_tool.h"
|
||||
|
||||
#include <dialogs/dialog_create_array.h>
|
||||
#include <dialogs/dialog_move_exact.h>
|
||||
|
||||
EDIT_TOOL::EDIT_TOOL() :
|
||||
|
@ -74,6 +77,8 @@ bool EDIT_TOOL::Init()
|
|||
m_selectionTool->AddMenuItem( COMMON_ACTIONS::remove, SELECTION_CONDITIONS::NotEmpty );
|
||||
m_selectionTool->AddMenuItem( COMMON_ACTIONS::properties, SELECTION_CONDITIONS::NotEmpty );
|
||||
m_selectionTool->AddMenuItem( COMMON_ACTIONS::moveExact, SELECTION_CONDITIONS::NotEmpty );
|
||||
m_selectionTool->AddMenuItem( COMMON_ACTIONS::duplicate, SELECTION_CONDITIONS::NotEmpty );
|
||||
m_selectionTool->AddMenuItem( COMMON_ACTIONS::createArray, SELECTION_CONDITIONS::NotEmpty );
|
||||
|
||||
m_offset.x = 0;
|
||||
m_offset.y = 0;
|
||||
|
@ -187,7 +192,8 @@ int EDIT_TOOL::Main( TOOL_EVENT& aEvent )
|
|||
}
|
||||
}
|
||||
|
||||
else if( evt->IsMotion() || evt->IsDrag( BUT_LEFT ) )
|
||||
else if( evt->IsAction( &COMMON_ACTIONS::editActivate )
|
||||
|| evt->IsMotion() || evt->IsDrag( BUT_LEFT ) )
|
||||
{
|
||||
m_cursor = controls->GetCursorPosition();
|
||||
|
||||
|
@ -647,6 +653,255 @@ int EDIT_TOOL::MoveExact( TOOL_EVENT& aEvent )
|
|||
}
|
||||
|
||||
|
||||
int EDIT_TOOL::Duplicate( TOOL_EVENT& aEvent )
|
||||
{
|
||||
bool increment = aEvent.IsAction( &COMMON_ACTIONS::duplicateIncrement );
|
||||
|
||||
// first, check if we have a selection, or try to get one
|
||||
SELECTION_TOOL* selTool = m_toolMgr->GetTool<SELECTION_TOOL>();
|
||||
const SELECTION& selection = selTool->GetSelection();
|
||||
|
||||
// Be sure that there is at least one item that we can modify
|
||||
if( !makeSelection( selection ) || selTool->CheckLock() )
|
||||
{
|
||||
setTransitions();
|
||||
return 0;
|
||||
}
|
||||
|
||||
// we have a selection to work on now, so start the tool process
|
||||
|
||||
PCB_BASE_FRAME* editFrame = getEditFrame<PCB_BASE_FRAME>();
|
||||
editFrame->OnModify();
|
||||
|
||||
// prevent other tools making undo points while the duplicate is going on
|
||||
// so that if you cancel, you don't get a duplicate object hiding over
|
||||
// the original
|
||||
m_toolMgr->IncUndoInhibit();
|
||||
|
||||
std::vector<BOARD_ITEM*> old_items;
|
||||
|
||||
for( int i = 0; i < selection.Size(); ++i )
|
||||
{
|
||||
BOARD_ITEM* item = selection.Item<BOARD_ITEM>( i );
|
||||
|
||||
if( item )
|
||||
old_items.push_back( item );
|
||||
}
|
||||
|
||||
for( unsigned i = 0; i < old_items.size(); ++i )
|
||||
{
|
||||
BOARD_ITEM* item = old_items[i];
|
||||
|
||||
// Unselect the item, so we won't pick it up again
|
||||
// Do this first, so a single-item duplicate will correctly call
|
||||
// SetCurItem and show the item properties
|
||||
m_toolMgr->RunAction( COMMON_ACTIONS::unselectItem, true, item );
|
||||
|
||||
BOARD_ITEM* new_item = NULL;
|
||||
|
||||
if ( PCB_EDIT_FRAME* frame = dynamic_cast<PCB_EDIT_FRAME*>( editFrame ) )
|
||||
new_item = frame->GetBoard()->DuplicateAndAddItem( item, increment );
|
||||
else if ( FOOTPRINT_EDIT_FRAME* frame = dynamic_cast<FOOTPRINT_EDIT_FRAME*>( editFrame ) )
|
||||
new_item = frame->GetBoard()->m_Modules->DuplicateAndAddItem( item, increment );
|
||||
|
||||
if( new_item )
|
||||
{
|
||||
if( new_item->Type() == PCB_MODULE_T )
|
||||
{
|
||||
static_cast<MODULE*>( new_item )->RunOnChildren( boost::bind( &KIGFX::VIEW::Add,
|
||||
getView(), _1 ) );
|
||||
}
|
||||
|
||||
editFrame->GetGalCanvas()->GetView()->Add( new_item );
|
||||
|
||||
// Select the new item, so we can pick it up
|
||||
m_toolMgr->RunAction( COMMON_ACTIONS::selectItem, true, new_item );
|
||||
}
|
||||
}
|
||||
|
||||
// record the new items as added
|
||||
editFrame->SaveCopyInUndoList( selection.items, UR_NEW );
|
||||
|
||||
editFrame->DisplayToolMsg( wxString::Format( _( "Duplicated %d item(s)" ),
|
||||
(int) old_items.size() ) );
|
||||
|
||||
// pick up the selected item(s) and start moving
|
||||
// this works well for "dropping" copies around
|
||||
TOOL_EVENT evt = COMMON_ACTIONS::editActivate.MakeEvent();
|
||||
Main( evt );
|
||||
|
||||
// and re-enable undos
|
||||
m_toolMgr->DecUndoInhibit();
|
||||
|
||||
setTransitions();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int EDIT_TOOL::CreateArray( TOOL_EVENT& aEvent )
|
||||
{
|
||||
// first, check if we have a selection, or try to get one
|
||||
SELECTION_TOOL* selTool = m_toolMgr->GetTool<SELECTION_TOOL>();
|
||||
const SELECTION& selection = selTool->GetSelection();
|
||||
|
||||
// Be sure that there is at least one item that we can modify
|
||||
if( !makeSelection( selection ) || selTool->CheckLock() )
|
||||
{
|
||||
setTransitions();
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool originalItemsModified = false;
|
||||
|
||||
// we have a selection to work on now, so start the tool process
|
||||
|
||||
PCB_BASE_FRAME* editFrame = getEditFrame<PCB_BASE_FRAME>();
|
||||
editFrame->OnModify();
|
||||
|
||||
const bool editingModule = NULL != dynamic_cast<FOOTPRINT_EDIT_FRAME*>( editFrame );
|
||||
|
||||
if( editingModule )
|
||||
{
|
||||
// Module editors do their undo point upfront for the whole module
|
||||
editFrame->SaveCopyInUndoList( editFrame->GetBoard()->m_Modules, UR_MODEDIT );
|
||||
}
|
||||
else
|
||||
{
|
||||
// We may also change the original item
|
||||
editFrame->SaveCopyInUndoList( selection.items, UR_CHANGED );
|
||||
}
|
||||
|
||||
DIALOG_CREATE_ARRAY::ARRAY_OPTIONS* array_opts = NULL;
|
||||
|
||||
const wxPoint rotPoint = selection.GetCenter();
|
||||
|
||||
DIALOG_CREATE_ARRAY dialog( editFrame, rotPoint, &array_opts );
|
||||
int ret = dialog.ShowModal();
|
||||
|
||||
if( ret == DIALOG_CREATE_ARRAY::CREATE_ARRAY_OK && array_opts != NULL )
|
||||
{
|
||||
PICKED_ITEMS_LIST newItemList;
|
||||
|
||||
for( int i = 0; i < selection.Size(); ++i )
|
||||
{
|
||||
BOARD_ITEM* item = selection.Item<BOARD_ITEM>( i );
|
||||
|
||||
if( !item )
|
||||
continue;
|
||||
|
||||
wxString cachedString;
|
||||
|
||||
if( item->Type() == PCB_MODULE_T )
|
||||
{
|
||||
cachedString = static_cast<MODULE*>( item )->GetReferencePrefix();
|
||||
}
|
||||
else if( EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( item ) )
|
||||
{
|
||||
// Copy the text (not just take a reference
|
||||
cachedString = text->GetText();
|
||||
}
|
||||
|
||||
// iterate across the array, laying out the item at the
|
||||
// correct position
|
||||
const unsigned nPoints = array_opts->GetArraySize();
|
||||
|
||||
for( unsigned ptN = 0; ptN < nPoints; ++ptN )
|
||||
{
|
||||
BOARD_ITEM* newItem = NULL;
|
||||
|
||||
if( ptN == 0 )
|
||||
{
|
||||
newItem = item;
|
||||
}
|
||||
else
|
||||
{
|
||||
// if renumbering, no need to increment
|
||||
const bool increment = !array_opts->ShouldRenumberItems();
|
||||
|
||||
if ( PCB_EDIT_FRAME* frame = dynamic_cast<PCB_EDIT_FRAME*>( editFrame ) )
|
||||
newItem = frame->GetBoard()->DuplicateAndAddItem( item, increment );
|
||||
else if ( FOOTPRINT_EDIT_FRAME* frame = dynamic_cast<FOOTPRINT_EDIT_FRAME*>( editFrame ) )
|
||||
newItem = frame->GetBoard()->m_Modules->DuplicateAndAddItem( item, increment );
|
||||
|
||||
if( newItem )
|
||||
{
|
||||
array_opts->TransformItem( ptN, newItem, rotPoint );
|
||||
|
||||
m_toolMgr->RunAction( COMMON_ACTIONS::unselectItem, true, newItem );
|
||||
|
||||
newItemList.PushItem( newItem );
|
||||
|
||||
if( newItem->Type() == PCB_MODULE_T)
|
||||
{
|
||||
static_cast<MODULE*>( newItem )->RunOnChildren( boost::bind( &KIGFX::VIEW::Add,
|
||||
getView(), _1 ) );
|
||||
}
|
||||
|
||||
editFrame->GetGalCanvas()->GetView()->Add( newItem );
|
||||
}
|
||||
}
|
||||
|
||||
// set the number if needed:
|
||||
if( array_opts->ShouldRenumberItems() )
|
||||
{
|
||||
switch( newItem->Type() )
|
||||
{
|
||||
case PCB_PAD_T:
|
||||
{
|
||||
const wxString padName = array_opts->GetItemNumber( ptN );
|
||||
static_cast<D_PAD*>( newItem )->SetPadName( padName );
|
||||
|
||||
originalItemsModified = true;
|
||||
break;
|
||||
}
|
||||
case PCB_MODULE_T:
|
||||
{
|
||||
const wxString moduleName = array_opts->GetItemNumber( ptN );
|
||||
MODULE* module = static_cast<MODULE*>( newItem );
|
||||
module->SetReference( cachedString + moduleName );
|
||||
|
||||
originalItemsModified = true;
|
||||
break;
|
||||
}
|
||||
case PCB_MODULE_TEXT_T:
|
||||
case PCB_TEXT_T:
|
||||
{
|
||||
EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( newItem );
|
||||
text->SetText( array_opts->InterpolateNumberIntoString( ptN, cachedString ) );
|
||||
|
||||
originalItemsModified = true;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
// no renumbering of other items
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( !editingModule )
|
||||
{
|
||||
if( originalItemsModified )
|
||||
{
|
||||
// Update the appearance of the original items
|
||||
selection.group->ItemsViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY );
|
||||
}
|
||||
|
||||
// Add all items as a single undo point for PCB editors
|
||||
// TODO: Can this be merged into the previous undo point (where
|
||||
// we saved the original items)
|
||||
editFrame->SaveCopyInUndoList( newItemList, UR_NEW );
|
||||
}
|
||||
}
|
||||
|
||||
setTransitions();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void EDIT_TOOL::setTransitions()
|
||||
{
|
||||
Go( &EDIT_TOOL::Main, COMMON_ACTIONS::editActivate.MakeEvent() );
|
||||
|
@ -655,6 +910,9 @@ void EDIT_TOOL::setTransitions()
|
|||
Go( &EDIT_TOOL::Remove, COMMON_ACTIONS::remove.MakeEvent() );
|
||||
Go( &EDIT_TOOL::Properties, COMMON_ACTIONS::properties.MakeEvent() );
|
||||
Go( &EDIT_TOOL::MoveExact, COMMON_ACTIONS::moveExact.MakeEvent() );
|
||||
Go( &EDIT_TOOL::Duplicate, COMMON_ACTIONS::duplicate.MakeEvent() );
|
||||
Go( &EDIT_TOOL::Duplicate, COMMON_ACTIONS::duplicateIncrement.MakeEvent() );
|
||||
Go( &EDIT_TOOL::CreateArray,COMMON_ACTIONS::createArray.MakeEvent() );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -94,7 +94,7 @@ public:
|
|||
/**
|
||||
* Function Duplicate()
|
||||
*
|
||||
* Duplicates a component and starts a move action
|
||||
* Duplicates a selection and starts a move action
|
||||
*/
|
||||
int Duplicate( TOOL_EVENT& aEvent );
|
||||
|
||||
|
@ -105,6 +105,14 @@ public:
|
|||
*/
|
||||
int MoveExact( TOOL_EVENT& aEvent );
|
||||
|
||||
/**
|
||||
* Function CreateArray()
|
||||
*
|
||||
* Creates an array of the selected items, invoking the array editor dialog
|
||||
* to set the array options
|
||||
*/
|
||||
int CreateArray( TOOL_EVENT& aEvent );
|
||||
|
||||
/**
|
||||
* Function EditModules()
|
||||
*
|
||||
|
|
|
@ -75,8 +75,6 @@ bool MODULE_TOOLS::Init()
|
|||
}
|
||||
|
||||
selectionTool->AddMenuItem( COMMON_ACTIONS::enumeratePads );
|
||||
selectionTool->AddMenuItem( COMMON_ACTIONS::duplicate );
|
||||
selectionTool->AddMenuItem( COMMON_ACTIONS::createArray );
|
||||
|
||||
setTransitions();
|
||||
|
||||
|
@ -491,175 +489,6 @@ int MODULE_TOOLS::PasteItems( TOOL_EVENT& aEvent )
|
|||
return 0;
|
||||
}
|
||||
|
||||
int MODULE_TOOLS::DuplicateItems( TOOL_EVENT& aEvent )
|
||||
{
|
||||
bool increment = aEvent.IsAction( &COMMON_ACTIONS::duplicateIncrement );
|
||||
|
||||
MODULE* module = m_board->m_Modules;
|
||||
|
||||
assert( module );
|
||||
|
||||
// first, check if we have a selection, or try to get one
|
||||
SELECTION_TOOL* selTool = m_toolMgr->GetTool<SELECTION_TOOL>();
|
||||
|
||||
if( selTool->GetSelection().Empty() )
|
||||
{
|
||||
m_toolMgr->RunAction( COMMON_ACTIONS::selectionCursor, true );
|
||||
}
|
||||
|
||||
const SELECTION& selection = selTool->GetSelection();
|
||||
|
||||
// if we don't have a selection by now, this tool can't do anything
|
||||
if( selection.Empty() || selTool->CheckLock() )
|
||||
{
|
||||
setTransitions();
|
||||
return 0;
|
||||
}
|
||||
|
||||
// we have a selection to work on now, so start the tool process
|
||||
|
||||
m_frame->OnModify();
|
||||
m_frame->SaveCopyInUndoList( module, UR_MODEDIT );
|
||||
|
||||
// prevent other tools making undo points while the duplicate is going on
|
||||
// so that if you cancel, you don't get a duplicate object hiding over
|
||||
// the original
|
||||
m_toolMgr->IncUndoInhibit();
|
||||
|
||||
std::vector<BOARD_ITEM*> old_items;
|
||||
|
||||
for( int i = 0; i < selection.Size(); ++i )
|
||||
{
|
||||
BOARD_ITEM* item = selection.Item<BOARD_ITEM>( i );
|
||||
|
||||
if( item )
|
||||
old_items.push_back( item );
|
||||
}
|
||||
|
||||
for( unsigned i = 0; i < old_items.size(); ++i )
|
||||
{
|
||||
BOARD_ITEM* item = old_items[i];
|
||||
|
||||
// Unselect the item, so we won't pick it up again
|
||||
// Do this first, so a single-item duplicate will correctly call
|
||||
// SetCurItem and show the item properties
|
||||
m_toolMgr->RunAction( COMMON_ACTIONS::unselectItem, true, item );
|
||||
|
||||
BOARD_ITEM* new_item = module->DuplicateAndAddItem( item, increment );
|
||||
|
||||
if( new_item )
|
||||
{
|
||||
m_view->Add( new_item );
|
||||
|
||||
// Select the new item, so we can pick it up
|
||||
m_toolMgr->RunAction( COMMON_ACTIONS::selectItem, true, new_item );
|
||||
}
|
||||
}
|
||||
|
||||
m_frame->DisplayToolMsg( wxString::Format( _( "Duplicated %d item(s)" ),
|
||||
(int) old_items.size() ) );
|
||||
|
||||
// pick up the selected item(s) and start moving
|
||||
// this works well for "dropping" copies around
|
||||
m_toolMgr->RunAction( COMMON_ACTIONS::editActivate, true );
|
||||
|
||||
// and re-enable undos
|
||||
m_toolMgr->DecUndoInhibit();
|
||||
|
||||
setTransitions();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int MODULE_TOOLS::CreateArray( TOOL_EVENT& aEvent )
|
||||
{
|
||||
MODULE* module = m_board->m_Modules;
|
||||
assert( module );
|
||||
|
||||
// first, check if we have a selection, or try to get one
|
||||
SELECTION_TOOL* selTool = m_toolMgr->GetTool<SELECTION_TOOL>();
|
||||
|
||||
if( selTool->GetSelection().Empty() )
|
||||
{
|
||||
m_toolMgr->RunAction( COMMON_ACTIONS::selectionCursor, true );
|
||||
}
|
||||
|
||||
const SELECTION& selection = selTool->GetSelection();
|
||||
|
||||
// if we don't have a selection by now, this tool can't do anything
|
||||
if( selection.Empty() || selTool->CheckLock() )
|
||||
{
|
||||
setTransitions();
|
||||
return 0;
|
||||
}
|
||||
|
||||
// we have a selection to work on now, so start the tool process
|
||||
|
||||
m_frame->OnModify();
|
||||
m_frame->SaveCopyInUndoList( module, UR_MODEDIT );
|
||||
|
||||
DIALOG_CREATE_ARRAY::ARRAY_OPTIONS* array_opts = NULL;
|
||||
|
||||
PCB_BASE_FRAME* baseFrame = getEditFrame<PCB_BASE_FRAME>();
|
||||
|
||||
DIALOG_CREATE_ARRAY dialog( baseFrame, &array_opts );
|
||||
int ret = dialog.ShowModal();
|
||||
|
||||
if( ret == DIALOG_CREATE_ARRAY::CREATE_ARRAY_OK && array_opts != NULL )
|
||||
{
|
||||
wxPoint rotPoint = selection.GetCenter();
|
||||
|
||||
for( int i = 0; i < selection.Size(); ++i )
|
||||
{
|
||||
BOARD_ITEM* item = selection.Item<BOARD_ITEM>( i );
|
||||
|
||||
if( !item )
|
||||
continue;
|
||||
|
||||
// iterate across the array, laying out the item at the
|
||||
// correct position
|
||||
// skip the first one - we already have that object
|
||||
const unsigned nPoints = array_opts->GetArraySize();
|
||||
|
||||
for( unsigned ptN = 0; ptN < nPoints; ++ptN )
|
||||
{
|
||||
BOARD_ITEM* newItem = NULL;
|
||||
|
||||
if( ptN == 0 )
|
||||
{
|
||||
newItem = item;
|
||||
}
|
||||
else
|
||||
{
|
||||
newItem = module->DuplicateAndAddItem( item, true );
|
||||
|
||||
if( newItem )
|
||||
{
|
||||
array_opts->TransformItem( ptN, newItem, rotPoint );
|
||||
|
||||
m_toolMgr->RunAction( COMMON_ACTIONS::unselectItem, true, newItem );
|
||||
m_view->Add( newItem );
|
||||
}
|
||||
}
|
||||
|
||||
// set the number if needed:
|
||||
if( newItem->Type() == PCB_PAD_T && array_opts->ShouldRenumberItems() )
|
||||
{
|
||||
const std::string padName = array_opts->GetItemNumber( ptN );
|
||||
static_cast<D_PAD*>( newItem )->SetPadName( padName );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_frame->GetGalCanvas()->Refresh();
|
||||
}
|
||||
|
||||
setTransitions();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int MODULE_TOOLS::ModuleTextOutlines( TOOL_EVENT& aEvent )
|
||||
{
|
||||
|
@ -736,9 +565,6 @@ void MODULE_TOOLS::setTransitions()
|
|||
Go( &MODULE_TOOLS::EnumeratePads, COMMON_ACTIONS::enumeratePads.MakeEvent() );
|
||||
Go( &MODULE_TOOLS::CopyItems, COMMON_ACTIONS::copyItems.MakeEvent() );
|
||||
Go( &MODULE_TOOLS::PasteItems, COMMON_ACTIONS::pasteItems.MakeEvent() );
|
||||
Go( &MODULE_TOOLS::DuplicateItems, COMMON_ACTIONS::duplicate.MakeEvent() );
|
||||
Go( &MODULE_TOOLS::DuplicateItems, COMMON_ACTIONS::duplicateIncrement.MakeEvent() );
|
||||
Go( &MODULE_TOOLS::ModuleTextOutlines, COMMON_ACTIONS::moduleTextOutlines.MakeEvent() );
|
||||
Go( &MODULE_TOOLS::ModuleEdgeOutlines, COMMON_ACTIONS::moduleEdgeOutlines.MakeEvent() );
|
||||
Go( &MODULE_TOOLS::CreateArray, COMMON_ACTIONS::createArray.MakeEvent() );
|
||||
}
|
||||
|
|
|
@ -77,9 +77,6 @@ public:
|
|||
*/
|
||||
int PasteItems( TOOL_EVENT& aEvent );
|
||||
|
||||
|
||||
int DuplicateItems ( TOOL_EVENT& aEvent );
|
||||
|
||||
/**
|
||||
* Function CreateArray
|
||||
*
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
#include <class_zone.h>
|
||||
#include <class_draw_panel_gal.h>
|
||||
|
||||
#include <dialogs/dialog_create_array.h>
|
||||
|
||||
|
||||
class ZONE_CONTEXT_MENU : public CONTEXT_MENU
|
||||
{
|
||||
|
@ -68,6 +70,7 @@ bool PCB_EDITOR_CONTROL::Init()
|
|||
SELECTION_CONDITIONS::OnlyType( PCB_ZONE_AREA_T ) );
|
||||
}
|
||||
|
||||
|
||||
setTransitions();
|
||||
|
||||
return true;
|
||||
|
|