Add filtering footprint list by library to CvPcb

* Add third list control with library names.
* Add button to toolbar to select filter by library name.
* Add bitmap for filter by library name toolbar button.
* Remove custom UI colors from list controls.
This commit is contained in:
Michal Jahelka 2013-05-31 13:33:46 -04:00 committed by Wayne Stambaugh
parent 5c98951954
commit a23dcccce5
20 changed files with 640 additions and 25 deletions

View File

@ -359,6 +359,7 @@ set( BMAPS_MID
module_full_list
module_options
module_pin_filtered_list
module_library_list
module_ratsnest
module
modview_icon

View File

@ -0,0 +1,83 @@
/* 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, 0x04, 0x73, 0x42, 0x49, 0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64,
0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d,
0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f,
0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63,
0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 0xee, 0x3c, 0x1a, 0x00, 0x00, 0x03, 0xd2, 0x49,
0x44, 0x41, 0x54, 0x48, 0x89, 0xbd, 0x96, 0x5d, 0x48, 0x5b, 0x67, 0x18, 0xc7, 0x7f, 0xe7, 0x23,
0x59, 0xac, 0x4e, 0x4f, 0xac, 0x46, 0x11, 0xa9, 0xab, 0x8d, 0xd2, 0xb1, 0xd1, 0x3b, 0xc7, 0x7a,
0xb1, 0x3a, 0xb5, 0x89, 0x66, 0xcd, 0x56, 0x99, 0x05, 0xe9, 0x10, 0xec, 0xcd, 0xae, 0xa4, 0x20,
0x82, 0xd7, 0xcd, 0x95, 0x17, 0xdd, 0xc5, 0x7a, 0xd1, 0x1b, 0x19, 0x42, 0x07, 0x19, 0x63, 0x5e,
0x18, 0xd3, 0xe9, 0x9c, 0x69, 0xbb, 0xd4, 0x8e, 0xa2, 0xb8, 0x0d, 0xc3, 0xb4, 0x91, 0x96, 0x39,
0x1b, 0x2b, 0x82, 0x2c, 0xad, 0xd6, 0x99, 0x35, 0xc6, 0xe4, 0x9c, 0x5d, 0xd8, 0x9c, 0x26, 0x26,
0xa9, 0x1f, 0x17, 0xfd, 0x43, 0xe0, 0x7d, 0xce, 0xef, 0x79, 0xde, 0x7f, 0xde, 0xf7, 0x9c, 0xf3,
0xbc, 0x47, 0xd0, 0x34, 0x8d, 0x37, 0x21, 0x39, 0x35, 0xf8, 0xdc, 0x69, 0x7f, 0xb4, 0xa5, 0x8a,
0xc7, 0x93, 0xb1, 0x41, 0x50, 0x57, 0x86, 0x47, 0x7d, 0x55, 0x00, 0x6d, 0x4e, 0xdb, 0x6c, 0x4c,
0x15, 0xad, 0x3a, 0x13, 0xb5, 0x27, 0x43, 0x23, 0xbe, 0x5a, 0x80, 0xd6, 0x73, 0xf6, 0xd0, 0xb6,
0x26, 0x56, 0x64, 0xab, 0xcb, 0x6a, 0xb4, 0xa5, 0x8a, 0xc7, 0x07, 0xdf, 0xbf, 0x23, 0x1b, 0x04,
0x15, 0x80, 0xf3, 0x7f, 0xda, 0x8f, 0x25, 0x59, 0x54, 0x95, 0x4e, 0xba, 0xdf, 0xf3, 0xcb, 0x46,
0x61, 0x67, 0x07, 0x2e, 0xcc, 0x36, 0xd5, 0xbc, 0xaa, 0x93, 0x8e, 0x79, 0x4f, 0xf9, 0xf4, 0x79,
0x52, 0xeb, 0xb2, 0x1a, 0x01, 0xdc, 0x5e, 0x7f, 0x87, 0xe1, 0x35, 0x2b, 0x9f, 0x16, 0xff, 0x9d,
0xb1, 0xfc, 0x89, 0x8d, 0x2a, 0xbc, 0xcf, 0x4e, 0x70, 0xbe, 0xf8, 0xaf, 0x0c, 0x36, 0xb2, 0x6e,
0x65, 0xe8, 0x9f, 0x13, 0xb4, 0x96, 0x64, 0xd6, 0x01, 0x08, 0x9a, 0xa6, 0xd1, 0xd6, 0xd6, 0x36,
0x1b, 0x8d, 0x46, 0x4f, 0xa2, 0x25, 0xe4, 0xd2, 0x23, 0x22, 0x8d, 0x36, 0x07, 0x23, 0x63, 0x63,
0xfc, 0xbb, 0xa5, 0x21, 0x8a, 0x62, 0x1c, 0x00, 0x2d, 0x21, 0x2b, 0x26, 0x11, 0x9b, 0xad, 0x99,
0x5b, 0xb7, 0xc6, 0x79, 0xf6, 0xe2, 0x15, 0x53, 0x55, 0x55, 0x3e, 0x7a, 0x44, 0xa0, 0xb1, 0xc9,
0xce, 0x9d, 0xdb, 0x3e, 0x9d, 0xc9, 0xb2, 0x1c, 0xde, 0xd8, 0xd8, 0x38, 0xee, 0xf7, 0xfb, 0xa3,
0x22, 0x40, 0x2c, 0x16, 0xb3, 0xba, 0xdd, 0x6e, 0x59, 0x12, 0x25, 0xda, 0x4b, 0xe6, 0xb9, 0xff,
0xcb, 0x28, 0x9d, 0xe5, 0x8f, 0x00, 0xf0, 0x78, 0x3c, 0xb2, 0xc7, 0xe3, 0x91, 0x25, 0x51, 0xe2,
0x62, 0xe9, 0x43, 0x26, 0xef, 0x8e, 0xf1, 0x85, 0xe5, 0x61, 0x1a, 0x03, 0xb8, 0x64, 0x79, 0xc0,
0xcc, 0xaf, 0x63, 0x74, 0x5a, 0x82, 0x3a, 0x03, 0xcc, 0x8a, 0xa2, 0x98, 0xd2, 0xb6, 0xce, 0x68,
0x34, 0x02, 0xd0, 0x54, 0xb4, 0x84, 0xc3, 0xfc, 0x18, 0x80, 0xeb, 0xa1, 0x1a, 0xfd, 0x3a, 0x80,
0x5d, 0x79, 0x8c, 0xf3, 0xe5, 0x96, 0x5e, 0x0f, 0xd5, 0xa6, 0xb1, 0xb3, 0xca, 0x12, 0x67, 0x95,
0x25, 0x00, 0xbe, 0x0e, 0xbd, 0x9b, 0xc6, 0x32, 0xee, 0x51, 0x69, 0x71, 0x11, 0x17, 0x1e, 0x34,
0xeb, 0x71, 0x89, 0x52, 0xb0, 0x2f, 0x56, 0xa2, 0xbc, 0xcd, 0x67, 0xb3, 0x8e, 0xac, 0x6c, 0xb7,
0x91, 0x10, 0x0c, 0x06, 0xf9, 0xe6, 0x86, 0x9b, 0x78, 0x3c, 0xae, 0x43, 0x49, 0x92, 0xf4, 0xf1,
0xeb, 0xd8, 0x0d, 0xf7, 0xf7, 0x24, 0x12, 0x89, 0xac, 0x2c, 0x29, 0x11, 0x40, 0xd3, 0x34, 0xa1,
0xbf, 0xbf, 0x9f, 0x81, 0x81, 0x01, 0x8c, 0x46, 0xa3, 0xfe, 0x4b, 0x2d, 0x10, 0x45, 0x31, 0x27,
0x93, 0x24, 0x29, 0x27, 0x4b, 0x5b, 0x91, 0x20, 0x08, 0xaa, 0xcb, 0xe5, 0xa2, 0xab, 0xab, 0x8b,
0x8e, 0x8e, 0x0e, 0xf2, 0xf2, 0xf2, 0x32, 0x12, 0x77, 0xab, 0xbb, 0xbb, 0x9b, 0xb9, 0xb9, 0xb9,
0xd7, 0xe6, 0x6c, 0x6f, 0x6f, 0xbf, 0x05, 0xdc, 0x04, 0xce, 0xe8, 0xf7, 0x68, 0x7a, 0x7a, 0x9a,
0x8a, 0x8a, 0x0a, 0x4c, 0x26, 0xd3, 0x9e, 0x26, 0xb1, 0x58, 0x8c, 0x99, 0x99, 0x19, 0x7a, 0x7b,
0x7b, 0xa9, 0xab, 0xab, 0xcb, 0x99, 0x17, 0x08, 0x04, 0xe8, 0xeb, 0xeb, 0xfb, 0xa8, 0xa1, 0xa1,
0xc1, 0x24, 0x03, 0xa8, 0xaa, 0x2a, 0x4d, 0x4e, 0x4e, 0xd2, 0xd3, 0xd3, 0x83, 0x20, 0x08, 0x7b,
0x1a, 0x25, 0xa5, 0x28, 0x0a, 0x65, 0x65, 0x65, 0x39, 0xb9, 0xd9, 0x6c, 0xd6, 0xc7, 0x32, 0x80,
0x28, 0x8a, 0x09, 0x97, 0xcb, 0x65, 0xc8, 0xcf, 0xcf, 0xdf, 0xb7, 0x49, 0xaa, 0xae, 0xde, 0xbf,
0x4a, 0x9e, 0x21, 0x8f, 0xcb, 0x1f, 0x5c, 0xce, 0x99, 0x93, 0xf6, 0x78, 0x7f, 0x79, 0xa9, 0x83,
0xe5, 0xd5, 0xa7, 0x7a, 0x6c, 0x29, 0x2e, 0xe4, 0xdb, 0xef, 0x7e, 0xd0, 0xd9, 0x6a, 0x78, 0x2d,
0xeb, 0x24, 0x43, 0xf3, 0x43, 0x28, 0x26, 0x65, 0xff, 0x46, 0xab, 0xe1, 0x35, 0xbc, 0xa7, 0x7c,
0x18, 0xc5, 0x9d, 0xa6, 0xea, 0x08, 0xb4, 0xe8, 0x6c, 0x79, 0xf5, 0x29, 0xc9, 0xc6, 0x19, 0x49,
0xc8, 0xb4, 0xfe, 0xf6, 0x61, 0xce, 0x49, 0xf7, 0x34, 0x02, 0xf0, 0xae, 0xd5, 0xe0, 0x0d, 0x57,
0x67, 0x6d, 0x8e, 0x37, 0xd7, 0x6a, 0x18, 0x0e, 0x57, 0xe3, 0x3c, 0xba, 0x78, 0x20, 0x13, 0xdd,
0xc8, 0x60, 0x30, 0xac, 0xb4, 0xb7, 0xb7, 0x57, 0x69, 0x6a, 0x42, 0xf2, 0x86, 0xab, 0xb1, 0x35,
0xb7, 0xe0, 0x19, 0xff, 0x19, 0xd0, 0x70, 0x3a, 0x9d, 0xc9, 0x37, 0x51, 0xf2, 0x84, 0xab, 0xb1,
0xd9, 0x9a, 0xf9, 0xd1, 0x37, 0x0e, 0x44, 0x0e, 0x64, 0x24, 0x02, 0xc8, 0xb2, 0x5c, 0x1b, 0x89,
0x44, 0x0a, 0x80, 0x78, 0x87, 0x25, 0xc8, 0xef, 0x77, 0x47, 0xf5, 0xe6, 0x18, 0x89, 0x44, 0x0a,
0x5e, 0x32, 0x3a, 0x2d, 0x41, 0xfe, 0xb8, 0xf7, 0x13, 0x17, 0x2d, 0xf3, 0x87, 0x5b, 0xd1, 0xe0,
0xe0, 0x60, 0x02, 0x48, 0x9c, 0xfb, 0xa4, 0x85, 0xc6, 0xa2, 0x27, 0xb4, 0x98, 0x43, 0xc0, 0x4e,
0x73, 0xf4, 0xfb, 0xfd, 0x51, 0x00, 0x87, 0xc3, 0x81, 0xdd, 0x1c, 0xc2, 0x6e, 0x0e, 0xb1, 0x19,
0x97, 0xf9, 0x8a, 0xf4, 0xb3, 0xed, 0xf9, 0xd6, 0x73, 0xa6, 0x96, 0xa7, 0x00, 0xa8, 0x2c, 0xac,
0xa4, 0xb2, 0xb0, 0x32, 0xd3, 0x28, 0x29, 0x83, 0xa0, 0xae, 0xa4, 0x9e, 0x8e, 0x46, 0x31, 0xb1,
0x9a, 0x3a, 0x76, 0x04, 0x5a, 0x52, 0x5e, 0x9a, 0xff, 0xd2, 0x26, 0x9a, 0x5a, 0x9e, 0xe2, 0xf4,
0xc0, 0x69, 0x00, 0xae, 0xd4, 0x5f, 0xc1, 0xf5, 0xb1, 0x2b, 0xb7, 0xd1, 0xee, 0x73, 0x3e, 0x55,
0xde, 0x51, 0x5f, 0x79, 0x72, 0xdc, 0xd0, 0xd0, 0x60, 0x02, 0x5e, 0x24, 0xe3, 0x6b, 0x2d, 0xd7,
0x58, 0x8f, 0xae, 0xeb, 0xb9, 0xd6, 0x62, 0x2b, 0xbb, 0x95, 0xf1, 0xd4, 0x1d, 0x44, 0x8b, 0x8b,
0x8b, 0x14, 0x14, 0x14, 0x60, 0xc2, 0x44, 0x39, 0xfa, 0xff, 0x60, 0x73, 0x73, 0x93, 0xc0, 0x52,
0x80, 0x85, 0x85, 0x05, 0xfd, 0x9a, 0x70, 0xd8, 0xcf, 0xad, 0xfa, 0xfa, 0x7a, 0x1f, 0x70, 0x66,
0x1f, 0xa9, 0xf7, 0x26, 0x26, 0x26, 0xec, 0x87, 0x36, 0x3a, 0xa8, 0xc4, 0x37, 0xe2, 0x02, 0xfc,
0x0f, 0xfd, 0x66, 0x6b, 0x49, 0xc9, 0xd5, 0xed, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae, 0x42, 0x60, 0x82
};
const BITMAP_OPAQUE module_library_list_xpm[1] = {{ png, sizeof( png ), "module_library_list_xpm" }};
//EOF

View File

@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="26"
width="26"
version="1.1"
viewBox="0 0 26 26"
id="svg2"
inkscape:version="0.48.4 r9939"
sodipodi:docname="module_filtered_list.svg">
<metadata
id="metadata56">
<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>
<defs
id="defs54" />
<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="1015"
id="namedview52"
showgrid="true"
inkscape:zoom="13.906434"
inkscape:cx="19.918756"
inkscape:cy="24.624712"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-to-guides="false"
inkscape:snap-grids="false">
<inkscape:grid
type="xygrid"
id="grid3033"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<rect
transform="matrix(0,-1,1,0,0,0)"
height="21.994465"
width="12.99073"
y="1.5596062"
x="-17.520231"
id="rect8"
style="fill:#ffffff;stroke:#484848;stroke-width:0.99127513000000000;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="m 1.5927632,8.9410802 a 2.0341261,1.8090857 0 1 1 0.012585,3.6181538"
id="path10"
inkscape:connector-curvature="0"
style="fill:none;stroke:#484848;stroke-width:0.99127518999999997;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="matrix(0,-1,1,0,0,0)"
height="3.9761357"
width="5.9874525"
y="3.5188339"
x="-20.502354"
id="rect30"
style="fill:#ff7800;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="m 5.5071146,16.522119 a 0.98526485,0.92342205 0 0 1 0,1.846844 0.98526485,0.92342205 0 1 1 0,-1.846844 z"
id="path32"
inkscape:connector-curvature="0"
style="fill:#ffede0;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="matrix(0,-1,1,0,0,0)"
height="3.9761357"
width="5.9874525"
y="10.507601"
x="-20.513519"
id="rect30-5"
style="fill:#ff7800;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="m 12.495882,16.533284 a 0.98526485,0.92342205 0 0 1 0,1.846845 0.98526485,0.92342205 0 1 1 0,-1.846845 z"
id="path32-4"
inkscape:connector-curvature="0"
style="fill:#ffede0;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="matrix(0,-1,1,0,0,0)"
height="3.9761357"
width="5.9874525"
y="17.499128"
x="-20.488094"
id="rect30-2"
style="fill:#ff7800;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="m 19.487408,16.507861 a 0.98526485,0.92342205 0 0 1 0,1.846844 0.98526485,0.92342205 0 1 1 0,-1.846844 z"
id="path32-0"
inkscape:connector-curvature="0"
style="fill:#ffede0;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="matrix(0,-1,1,0,0,0)"
height="3.9761357"
width="5.9874525"
y="3.5339792"
x="-7.5303874"
id="rect30-1"
style="fill:#ff7800;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="m 5.5222603,3.5501532 a 0.98526485,0.92342205 0 0 1 0,1.8468441 0.98526485,0.92342205 0 1 1 0,-1.8468441 z"
id="path32-3"
inkscape:connector-curvature="0"
style="fill:#ffede0;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="matrix(0,-1,1,0,0,0)"
height="3.9761357"
width="5.9874525"
y="10.522747"
x="-7.5415525"
id="rect30-5-6"
style="fill:#ff7800;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="m 12.511028,3.5613187 a 0.98526485,0.92342205 0 0 1 0,1.8468441 0.98526485,0.92342205 0 1 1 0,-1.8468441 z"
id="path32-4-0"
inkscape:connector-curvature="0"
style="fill:#ffede0;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="matrix(0,-1,1,0,0,0)"
height="3.9761357"
width="5.9874525"
y="17.514275"
x="-7.516129"
id="rect30-2-8"
style="fill:#ff7800;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="m 19.502554,3.535895 a 0.98526485,0.92342205 0 0 1 0,1.8468441 0.98526485,0.92342205 0 1 1 0,-1.8468441 z"
id="path32-0-4"
inkscape:connector-curvature="0"
style="fill:#ffede0;stroke:#484848;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
ry="0.95373797"
height="13.958503"
width="11.03963"
y="10.016949"
x="13.978938"
id="rect42"
style="fill:#3e3e3e" />
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3003"
width="8.413372"
height="11.649284"
x="15.316651"
y="11.114803" />
<path
style="fill:none;stroke:#008000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 17.97729,13.415897 0,7.119007 3.523549,0"
id="path3005"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -34,6 +34,7 @@ set(CVPCB_SRCS
class_components_listbox.cpp
class_DisplayFootprintsFrame.cpp
class_footprints_listbox.cpp
class_library_listbox.cpp
cvframe.cpp
cvpcb.cpp
listboxes.cpp

View File

@ -8,9 +8,10 @@
#include <common.h>
#include <gestfich.h>
#include <param_config.h>
#include <wildcards_and_files_ext.h>
#include <cvpcb.h>
#include <cvpcb_mainframe.h>
#include <wildcards_and_files_ext.h>
#define GROUP wxT("/cvpcb")

View File

@ -113,13 +113,16 @@ void COMPONENTS_LISTBOX::OnChar( wxKeyEvent& event )
{
case WXK_HOME:
case WXK_END:
case WXK_UP:
case WXK_UP:
case WXK_DOWN:
case WXK_PAGEUP:
case WXK_PAGEDOWN:
event.Skip();
return;
case WXK_LEFT:
case WXK_NUMPAD_LEFT:
event.Skip();
GetParent()->m_LibraryList->SetFocus();
return;
case WXK_RIGHT:

View File

@ -30,6 +30,8 @@
#include <fctsys.h>
#include <wxstruct.h>
#include <macros.h>
#include <appl_wxstruct.h>
#include <wildcards_and_files_ext.h>
#include <cvpcb.h>
#include <cvpcb_mainframe.h>
@ -233,7 +235,49 @@ void FOOTPRINTS_LISTBOX::SetFootprintFilteredByPinCount( COMPONENT* aCompon
Refresh();
}
void FOOTPRINTS_LISTBOX::SetFootprintFilteredByLibraryList( FOOTPRINT_LIST& list,
wxString SelectedLibrary ) {
wxString msg;
int oldSelection = GetSelection();
bool hasItem = false;
wxFileName filename = SelectedLibrary;
filename.SetExt( LegacyFootprintLibPathExtension );
wxString FullLibraryName = wxGetApp().FindLibraryPath( filename );
m_FilteredFootprintList.Clear();
for( unsigned ii = 0; ii < list.GetCount(); ii++ )
{
FOOTPRINT_INFO& footprint = list.GetItem(ii);
wxString LibName = footprint.m_libPath;
if( LibName.Matches( FullLibraryName ) )
{
msg.Printf( wxT( "%3d %s" ), m_FilteredFootprintList.GetCount() + 1,
footprint.m_Module.GetData() );
m_FilteredFootprintList.Add( msg );
hasItem = true;
}
}
if( hasItem )
SetActiveFootprintList( false );
else
SetActiveFootprintList( true );
if( ( GetCount() == 0 ) || ( oldSelection >= GetCount() ) )
SetSelection( 0, true );
Refresh();
}
/** Set the footprint list. We can have 2 footprint list:
* The full footprint list
* The filtered footprint list (if the current selected component has a
* filter for footprints)
* @param FullList true = full footprint list, false = filtered footprint list
* @param Redraw = true to redraw the window
*/
void FOOTPRINTS_LISTBOX::SetActiveFootprintList( bool FullList, bool Redraw )
{
bool old_selection = m_UseFootprintFullList;

View File

@ -0,0 +1,227 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file class_library_listbox.cpp
* class to display used library and selecting it
*/
#include <fctsys.h>
#include <wxstruct.h>
#include <macros.h>
#include <cvpcb.h>
#include <cvpcb_mainframe.h>
#include <cvstruct.h>
/***************************************/
/* ListBox handling the library list */
/***************************************/
LIBRARY_LISTBOX::LIBRARY_LISTBOX( CVPCB_MAINFRAME* parent,
wxWindowID id, const wxPoint& loc,
const wxSize& size,
int nbitems, wxString choice[] ) :
ITEMS_LISTBOX_BASE( parent, id, loc, size )
{
//ListLibraries();
}
LIBRARY_LISTBOX::~LIBRARY_LISTBOX()
{
}
/*
* Return number of items
*/
int LIBRARY_LISTBOX::GetCount()
{
return m_LibraryList.Count();
}
/*
* Change an item text
*/
void LIBRARY_LISTBOX::SetString( unsigned linecount, const wxString& text )
{
if( linecount >= m_LibraryList.Count() )
linecount = m_LibraryList.Count() - 1;
if( linecount >= 0 )
m_LibraryList[linecount] = text;
}
wxString LIBRARY_LISTBOX::GetSelectedLibrary()
{
wxString libraryName;
int ii = GetFirstSelected();
if( ii >= 0 )
{
libraryName = m_LibraryList[ii];
}
return libraryName;
}
void LIBRARY_LISTBOX::AppendLine( const wxString& text )
{
m_LibraryList.Add( text );
SetItemCount( m_LibraryList.Count() );
}
/*
* Overlaid function: MUST be provided in wxLC_VIRTUAL mode
* because real data is not handled by ITEMS_LISTBOX_BASE
*/
wxString LIBRARY_LISTBOX::OnGetItemText( long item, long column ) const
{
return m_LibraryList.Item( item );
}
/*
* Enable or disable an item
*/
void LIBRARY_LISTBOX::SetSelection( unsigned index, bool State )
{
if( (int) index >= GetCount() )
index = GetCount() - 1;
if( (index >= 0) && (GetCount() > 0) )
{
#ifndef __WXMAC__
Select( index, State );
#endif
EnsureVisible( index );
#ifdef __WXMAC__
Refresh();
#endif
}
}
void LIBRARY_LISTBOX::SetLibraryList( wxArrayString list )
{
wxString msg;
int oldSelection = GetSelection();
m_LibraryList.Clear();
for( unsigned ii = 0; ii < list.GetCount(); ii++ )
{
msg = list.Item(ii);
m_LibraryList.Add( msg );
}
SetItemCount(list.GetCount());
if( GetCount() == 0 || oldSelection < 0 || oldSelection >= GetCount() )
SetSelection( 0, true );
Refresh();
}
/**************************************/
/* Event table for the library list */
/**************************************/
BEGIN_EVENT_TABLE( LIBRARY_LISTBOX, ITEMS_LISTBOX_BASE )
EVT_SIZE( ITEMS_LISTBOX_BASE::OnSize )
EVT_CHAR( LIBRARY_LISTBOX::OnChar )
END_EVENT_TABLE()
/**
* Function OnChar
* called on a key pressed
* Call default handler for some special keys,
* and for "ascii" keys, select the first footprint
* that the name starts by the letter.
* This is the defaut behaviour of a listbox, but because we use
* virtual lists, the listbox does not know anything to what is displayed,
* we must handle this behaviour here.
* Furthermore the footprint name is not at the beginning of
* displayed lines (the first word is the line number)
*/
void LIBRARY_LISTBOX::OnChar( wxKeyEvent& event )
{
int key = event.GetKeyCode();
switch( key )
{
case WXK_RIGHT:
case WXK_NUMPAD_RIGHT:
GetParent()->m_ListCmp->SetFocus();
return;
case WXK_HOME:
case WXK_END:
case WXK_UP:
case WXK_DOWN:
case WXK_PAGEUP:
case WXK_PAGEDOWN:
case WXK_LEFT:
case WXK_NUMPAD_LEFT:
event.Skip();
return;
default:
break;
}
// Search for an item name starting by the key code:
key = toupper(key);
for( unsigned ii = 0; ii < m_LibraryList.GetCount(); ii++ )
{
wxString text = m_LibraryList.Item(ii);
/* search for the start char of the footprint name.
* we must skip the line number
*/
text.Trim(false); // Remove leading spaces in line
unsigned jj = 0;
for( ; jj < text.Len(); jj++ )
{
// skip line number
if( text[jj] == ' ' )
break;
}
for( ; jj < text.Len(); jj++ )
{ // skip blanks
if( text[jj] != ' ' )
break;
}
int start_char = toupper( text[jj] );
if( key == start_char )
{
Focus( ii );
SetSelection( ii, true ); // Ensure visible
break;
}
}
}

View File

@ -85,6 +85,8 @@ BEGIN_EVENT_TABLE( CVPCB_MAINFRAME, EDA_BASE_FRAME )
CVPCB_MAINFRAME::OnSelectFilteringFootprint )
EVT_TOOL( ID_CVPCB_FOOTPRINT_DISPLAY_PIN_FILTERED_LIST,
CVPCB_MAINFRAME::OnSelectFilteringFootprint )
EVT_TOOL( ID_CVPCB_FOOTPRINT_DISPLAY_BY_LIBRARY_LIST,
CVPCB_MAINFRAME::OnSelectFilteringFootprint )
EVT_TOOL( ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST,
CVPCB_MAINFRAME::OnSelectFilteringFootprint )
@ -97,6 +99,7 @@ BEGIN_EVENT_TABLE( CVPCB_MAINFRAME, EDA_BASE_FRAME )
EVT_LIST_ITEM_SELECTED( ID_CVPCB_FOOTPRINT_LIST, CVPCB_MAINFRAME::OnLeftClick )
EVT_LIST_ITEM_ACTIVATED( ID_CVPCB_FOOTPRINT_LIST, CVPCB_MAINFRAME::OnLeftDClick )
EVT_LIST_ITEM_SELECTED( ID_CVPCB_COMPONENT_LIST, CVPCB_MAINFRAME::OnSelectComponent )
EVT_LIST_ITEM_SELECTED( ID_CVPCB_LIBRARY_LIST, CVPCB_MAINFRAME::OnSelectComponent )
EVT_UPDATE_UI( ID_CVPCB_CONFIG_KEEP_OPEN_ON_SAVE, CVPCB_MAINFRAME::OnUpdateKeepOpenOnSave )
END_EVENT_TABLE()
@ -112,6 +115,7 @@ CVPCB_MAINFRAME::CVPCB_MAINFRAME( const wxString& title, long style ) :
m_ListCmp = NULL;
m_FootprintList = NULL;
m_LibraryList = NULL;
m_DisplayFootprintFrame = NULL;
m_mainToolBar = NULL;
m_modified = false;
@ -160,6 +164,7 @@ CVPCB_MAINFRAME::CVPCB_MAINFRAME( const wxString& title, long style ) :
// Create list of available modules and components of the schematic
BuildCmpListBox();
BuildFOOTPRINTS_LISTBOX();
BuildLIBRARY_LISTBOX();
m_auimgr.SetManagedWindow( this );
@ -179,10 +184,15 @@ CVPCB_MAINFRAME::CVPCB_MAINFRAME( const wxString& title, long style ) :
m_auimgr.AddPane( m_ListCmp,
wxAuiPaneInfo( horiz ).Name( wxT( "m_ListCmp" ) ).CentrePane() );
if( m_LibraryList)
m_auimgr.AddPane( m_LibraryList,
wxAuiPaneInfo( info ).Name( wxT( "m_LibraryList" ) ).
Left().BestSize( (int) ( m_FrameSize.x * 0.20 ), m_FrameSize.y ) );
if( m_FootprintList )
m_auimgr.AddPane( m_FootprintList,
wxAuiPaneInfo( info ).Name( wxT( "m_FootprintList" ) ).
Right().BestSize( (int) ( m_FrameSize.x * 0.36 ), m_FrameSize.y ) );
Right().BestSize( (int) ( m_FrameSize.x * 0.30 ), m_FrameSize.y ) );
m_auimgr.Update();
}
@ -523,9 +533,11 @@ void CVPCB_MAINFRAME::OnSelectComponent( wxListEvent& event )
#define REDRAW_LIST true
#define SELECT_FULL_LIST true
int selection = -1;
wxString SelectedLibrary;
if( !m_mainToolBar->GetToolToggled( ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST )
&& !m_mainToolBar->GetToolToggled( ID_CVPCB_FOOTPRINT_DISPLAY_PIN_FILTERED_LIST )
&& !m_mainToolBar->GetToolToggled( ID_CVPCB_FOOTPRINT_DISPLAY_BY_LIBRARY_LIST )
)
m_FootprintList->SetActiveFootprintList( SELECT_FULL_LIST, REDRAW_LIST );
@ -548,6 +560,12 @@ void CVPCB_MAINFRAME::OnSelectComponent( wxListEvent& event )
m_footprints );
}
else
if( m_mainToolBar->GetToolToggled( ID_CVPCB_FOOTPRINT_DISPLAY_BY_LIBRARY_LIST ) )
{
SelectedLibrary=m_LibraryList->GetSelectedLibrary();
m_FootprintList->SetFootprintFilteredByLibraryList( m_footprints, SelectedLibrary );
}
else
{
m_FootprintList->SetFootprintFilteredList( m_netlist.GetComponent( selection ),
m_footprints );
@ -610,14 +628,23 @@ void CVPCB_MAINFRAME::OnSelectFilteringFootprint( wxCommandEvent& event )
case ID_CVPCB_FOOTPRINT_DISPLAY_PIN_FILTERED_LIST:
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST, false );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST, false );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_BY_LIBRARY_LIST, false );
break;
case ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST:
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST, false );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_PIN_FILTERED_LIST, false );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_BY_LIBRARY_LIST, false );
break;
case ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST:
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST, false );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_PIN_FILTERED_LIST, false );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_BY_LIBRARY_LIST, false );
break;
case ID_CVPCB_FOOTPRINT_DISPLAY_BY_LIBRARY_LIST:
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST, false );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST, false );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_PIN_FILTERED_LIST, false );
break;

View File

@ -101,6 +101,7 @@ bool EDA_APP::OnInit()
frame->LoadProjectFile( filename.GetFullPath() );
frame->Show( true );
frame->BuildFOOTPRINTS_LISTBOX();
frame->BuildLIBRARY_LISTBOX();
if( filename.IsOk() && filename.FileExists() )
{

View File

@ -30,5 +30,7 @@ enum id_cvpcb_frm
ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST,
ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST,
ID_CVPCB_FOOTPRINT_DISPLAY_PIN_FILTERED_LIST,
ID_CVPCB_CONFIG_KEEP_OPEN_ON_SAVE
ID_CVPCB_FOOTPRINT_DISPLAY_BY_LIBRARY_LIST,
ID_CVPCB_CONFIG_KEEP_OPEN_ON_SAVE,
ID_CVPCB_LIBRARY_LIST
};

View File

@ -32,17 +32,18 @@
#include <wx/listctrl.h>
#include <wx/filename.h>
#include <netlist_reader.h>
#include <footprint_info.h>
#include <wxBasePcbFrame.h>
#include <param_config.h>
#include <cvpcb.h>
#include <footprint_info.h>
/* Forward declarations of all top-level window classes. */
class wxAuiToolBar;
class FOOTPRINTS_LISTBOX;
class COMPONENTS_LISTBOX;
class LIBRARY_LISTBOX;
class DISPLAY_FOOTPRINTS_FRAME;
@ -55,6 +56,7 @@ public:
bool m_KeepCvpcbOpen;
FOOTPRINTS_LISTBOX* m_FootprintList;
LIBRARY_LISTBOX* m_LibraryList;
COMPONENTS_LISTBOX* m_ListCmp;
DISPLAY_FOOTPRINTS_FRAME* m_DisplayFootprintFrame;
wxAuiToolBar* m_mainToolBar;
@ -156,6 +158,7 @@ public:
void SetNewPkg( const wxString& aFootprintName );
void BuildCmpListBox();
void BuildFOOTPRINTS_LISTBOX();
void BuildLIBRARY_LISTBOX();
/**
* Create or Update the frame showing the current highlighted footprint

View File

@ -34,6 +34,7 @@
/* Forward declarations of all top-level window classes. */
class CVPCB_MAINFRAME;
class COMPONENT;
class FOOTPRINT_LIST;
/*********************************************************************/
@ -82,6 +83,8 @@ public:
FOOTPRINT_LIST& aList );
void SetFootprintFilteredByPinCount( COMPONENT* aComponent,
FOOTPRINT_LIST& aList );
void SetFootprintFilteredByLibraryList( FOOTPRINT_LIST& list,
wxString SelectedLibrary );
/**
* Set the footprint list. We can have 2 footprint list:
@ -99,19 +102,39 @@ public:
// Events functions:
void OnLeftClick( wxListEvent& event );
void OnLeftDClick( wxListEvent& event );
void OnChar( wxKeyEvent& event );
/**
* Function OnChar
* called on a key pressed
* Call default handler for some special keys,
* and for "ascii" keys, select the first footprint
* that the name starts by the letter.
* This is the default behavior of a listbox, but because we use
* virtual lists, the listbox does not know anything to what is displayed,
* we must handle this behavior here.
* Furthermore the footprint name is not at the beginning of
* displayed lines (the first word is the line number)
*/
DECLARE_EVENT_TABLE()
};
/******************************************/
/* ListBox showing the list of library */
/******************************************/
class LIBRARY_LISTBOX : public ITEMS_LISTBOX_BASE
{
//private:
public:
wxArrayString m_LibraryList;
public:
LIBRARY_LISTBOX( CVPCB_MAINFRAME* parent, wxWindowID id,
const wxPoint& loc, const wxSize& size,
int nbitems, wxString choice[] );
~LIBRARY_LISTBOX();
int GetCount();
void SetSelection( unsigned index, bool State = true );
void SetString( unsigned linecount, const wxString& text );
void AppendLine( const wxString& text );
void SetLibraryList( wxArrayString list );
wxString GetSelectedLibrary();
wxString OnGetItemText( long item, long column ) const;
// Events functions:
void OnLeftClick( wxListEvent& event );
void OnChar( wxKeyEvent& event );
DECLARE_EVENT_TABLE()

View File

@ -156,6 +156,7 @@ void DIALOG_CVPCB_CONFIG::OnOkClick( wxCommandEvent& event )
m_Parent->LoadFootprintFiles();
m_Parent->BuildFOOTPRINTS_LISTBOX();
m_Parent->BuildLIBRARY_LISTBOX();
}
wxCommandEvent evt( ID_SAVE_PROJECT );

View File

@ -31,7 +31,6 @@
#include <common.h>
#include <cvpcb.h>
#include <class_drawpanel.h>
#include <footprint_info.h>
#include <cvstruct.h>
#include <class_DisplayFootprintsFrame.h>

View File

@ -100,8 +100,6 @@ void CVPCB_MAINFRAME::BuildCmpListBox()
m_ListCmp = new COMPONENTS_LISTBOX( this, ID_CVPCB_COMPONENT_LIST,
wxDefaultPosition, size,
0, NULL );
m_ListCmp->SetBackgroundColour( wxColour( 225, 255, 255 ) );
m_ListCmp->SetForegroundColour( wxColour( 0, 0, 0 ) );
m_ListCmp->SetFont( wxFont( guiFont.GetPointSize(),
wxFONTFAMILY_MODERN,
wxFONTSTYLE_NORMAL,
@ -140,8 +138,6 @@ void CVPCB_MAINFRAME::BuildFOOTPRINTS_LISTBOX()
m_FootprintList = new FOOTPRINTS_LISTBOX( this, ID_CVPCB_FOOTPRINT_LIST,
wxDefaultPosition, size,
0, NULL );
m_FootprintList->SetBackgroundColour( wxColour( 225, 255, 225 ) );
m_FootprintList->SetForegroundColour( wxColour( 0, 0, 0 ) );
m_FootprintList->SetFont( wxFont( guiFont.GetPointSize(),
wxFONTFAMILY_MODERN,
wxFONTSTYLE_NORMAL,
@ -151,3 +147,26 @@ void CVPCB_MAINFRAME::BuildFOOTPRINTS_LISTBOX()
m_FootprintList->SetFootprintFullList( m_footprints );
DisplayStatus();
}
/*
* Create or update the library list.
*/
void CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX()
{
wxString msg;
wxSize size( 10, 10 );
wxFont guiFont = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
if( m_LibraryList == NULL )
{
m_LibraryList = new LIBRARY_LISTBOX( this, ID_CVPCB_LIBRARY_LIST,
wxDefaultPosition, size,
0 , NULL );
m_LibraryList->SetFont( wxFont( guiFont.GetPointSize(),
wxFONTFAMILY_MODERN,
wxFONTSTYLE_NORMAL,
wxFONTWEIGHT_NORMAL ) );
}
m_LibraryList->SetLibraryList( m_ModuleLibNames );
}

View File

@ -124,6 +124,7 @@ bool CVPCB_MAINFRAME::ReadNetListAndLinkFiles()
LoadProjectFile( m_NetlistFileName.GetFullPath() );
LoadFootprintFiles();
BuildFOOTPRINTS_LISTBOX();
BuildLIBRARY_LISTBOX();
m_ListCmp->Clear();
m_undefinedComponentCnt = 0;

View File

@ -104,6 +104,12 @@ void CVPCB_MAINFRAME::ReCreateHToolbar()
_( "Display the filtered footprint list by pin count for the current component" ),
wxEmptyString );
m_mainToolBar->AddTool( ID_CVPCB_FOOTPRINT_DISPLAY_BY_LIBRARY_LIST,
KiBitmap( module_library_list_xpm ),
wxNullBitmap, true, NULL,
_( "Display the footprint list from selected library" ),
wxEmptyString );
m_mainToolBar->AddTool( ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST,
KiBitmap( module_full_list_xpm ),
wxNullBitmap, true, NULL,
@ -114,6 +120,7 @@ void CVPCB_MAINFRAME::ReCreateHToolbar()
{
wxString key = wxT( FILTERFOOTPRINTKEY );
int opt = config->Read( key, (long) 1 );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_BY_LIBRARY_LIST, opt == 3 );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_PIN_FILTERED_LIST, opt == 2 );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST, opt == 1 );
m_mainToolBar->ToggleTool( ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST, opt == 0 );

View File

@ -279,6 +279,7 @@ EXTERN_BITMAP( module_editor_xpm )
EXTERN_BITMAP( module_wizard_xpm )
EXTERN_BITMAP( module_filtered_list_xpm )
EXTERN_BITMAP( module_pin_filtered_list_xpm )
EXTERN_BITMAP( module_library_list_xpm )
EXTERN_BITMAP( module_full_list_xpm )
EXTERN_BITMAP( module_options_xpm )
EXTERN_BITMAP( module_ratsnest_xpm )

View File

@ -45,10 +45,9 @@ class FP_LIB_TABLE;
*/
class FOOTPRINT_INFO
{
public:
wxString m_libName; ///< Name of the library containing this module excluding path and ext.
wxString m_libPath; ///< The full library name and path associated the footprint.
public:
wxString m_Module; ///< Module name.
int m_Num; ///< Order number in the display list.
wxString m_Doc; ///< Footprint description.