Next part of tree state icon patches
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54343 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
145
samples/treectrl/state1.xpm
Normal file
145
samples/treectrl/state1.xpm
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char *state1_xpm[] = {
|
||||||
|
/* columns rows colors chars-per-pixel */
|
||||||
|
"16 16 123 2",
|
||||||
|
"8. c #ADAF01",
|
||||||
|
"n c #E5E804",
|
||||||
|
"2. c #E5E806",
|
||||||
|
", c #FCFF00",
|
||||||
|
"R c #C4C601",
|
||||||
|
"J c #E5E809",
|
||||||
|
". c #FCFF05",
|
||||||
|
"*. c #D6D904",
|
||||||
|
"X c #FCFF13",
|
||||||
|
"6. c #A6A800",
|
||||||
|
"M c #EDF00E",
|
||||||
|
"$. c #A6A802",
|
||||||
|
" c #FFFFFF",
|
||||||
|
"H c #DEE104",
|
||||||
|
"0 c #F5F802",
|
||||||
|
"o c #FCFF22",
|
||||||
|
"s c #EEF101",
|
||||||
|
"t c #FAFC24",
|
||||||
|
"3. c #F3F506",
|
||||||
|
"_ c #FAFC27",
|
||||||
|
"f c #EEF106",
|
||||||
|
"} c #C8CB03",
|
||||||
|
"U c #FAFC32",
|
||||||
|
"' c #BEC000",
|
||||||
|
"/ c #EEF113",
|
||||||
|
"E c #BEC002",
|
||||||
|
"C c #FAFC36",
|
||||||
|
"l c #FAFC38",
|
||||||
|
"D c #D0D301",
|
||||||
|
"5. c #AFB100",
|
||||||
|
"e c #F6F90E",
|
||||||
|
"[ c #AFB102",
|
||||||
|
"@. c #A0A200",
|
||||||
|
"j c #F6F91C",
|
||||||
|
"G c #D8DB03",
|
||||||
|
"> c #FEFF86",
|
||||||
|
") c #F6F91F",
|
||||||
|
": c #FEFF8D",
|
||||||
|
"p c #FEFF8E",
|
||||||
|
"1. c #C9CC03",
|
||||||
|
"8 c #FEFF92",
|
||||||
|
"v c #E0E301",
|
||||||
|
".. c #EFF210",
|
||||||
|
"y c #FBFD35",
|
||||||
|
"4. c #F7FA02",
|
||||||
|
"P c #F4F61C",
|
||||||
|
"F c #D1D402",
|
||||||
|
"Z c #FBFD46",
|
||||||
|
"o. c #F7FA18",
|
||||||
|
"r c #F7FA19",
|
||||||
|
"! c #D9DC06",
|
||||||
|
"%. c #B8BA02",
|
||||||
|
"g c #F0F30C",
|
||||||
|
"4 c #FCFE2F",
|
||||||
|
"b c #E1E402",
|
||||||
|
"N c #F0F313",
|
||||||
|
" . c #E1E408",
|
||||||
|
"Y c #FCFE3A",
|
||||||
|
":. c #F8FB0A",
|
||||||
|
"B c #F5F71E",
|
||||||
|
"1 c #F8FB0B",
|
||||||
|
"5 c #FCFE43",
|
||||||
|
"m c #E9EC08",
|
||||||
|
"&. c #C8CA03",
|
||||||
|
"u c #FCFE4A",
|
||||||
|
"^ c #E9EC0C",
|
||||||
|
"0. c #DADD01",
|
||||||
|
"A c #FCFE54",
|
||||||
|
"z c #FCFE5D",
|
||||||
|
";. c #F1F40D",
|
||||||
|
"=. c #E2E507",
|
||||||
|
"~ c #E2E509",
|
||||||
|
"< c #F9FC05",
|
||||||
|
"= c #FDFF39",
|
||||||
|
"O c #FDFF3C",
|
||||||
|
"T c #FDFF3F",
|
||||||
|
"2 c #F9FC13",
|
||||||
|
"] c #A3A501",
|
||||||
|
"- c #FDFF50",
|
||||||
|
"3 c #F9FC1F",
|
||||||
|
"+. c #BABC00",
|
||||||
|
"L c #EFF114",
|
||||||
|
"+ c #FDFF56",
|
||||||
|
"q c #F2F504",
|
||||||
|
"S c #FDFF59",
|
||||||
|
"#. c #949601",
|
||||||
|
"6 c #FDFF5C",
|
||||||
|
"$ c #FDFF5F",
|
||||||
|
"9 c #FDFF61",
|
||||||
|
"@ c #FDFF63",
|
||||||
|
"# c #FDFF65",
|
||||||
|
"c c #FDFF67",
|
||||||
|
"a c #FDFF68",
|
||||||
|
"9. c #C2C402",
|
||||||
|
"{ c #BDC003",
|
||||||
|
"; c #FDFF6C",
|
||||||
|
"x c #FDFF70",
|
||||||
|
"7 c #FDFF76",
|
||||||
|
"i c #FDFF77",
|
||||||
|
"I c #F7F925",
|
||||||
|
"V c #F7F927",
|
||||||
|
"<. c #8D8F01",
|
||||||
|
"-. c #EBEE0A",
|
||||||
|
"K c #EBEE0C",
|
||||||
|
"7. c #A4A600",
|
||||||
|
"w. c #F3F600",
|
||||||
|
",. c #959700",
|
||||||
|
"h c #F3F612",
|
||||||
|
"X. c #F3F615",
|
||||||
|
"( c #F3F619",
|
||||||
|
"| c #D5D804",
|
||||||
|
"% c #FBFE0B",
|
||||||
|
"d c #ECEF03",
|
||||||
|
"O. c #FBFE13",
|
||||||
|
"k c #F8FA27",
|
||||||
|
"W c #C6C902",
|
||||||
|
"& c #FBFE18",
|
||||||
|
"` c #FBFE23",
|
||||||
|
"* c #FBFE24",
|
||||||
|
"w c #F4F709",
|
||||||
|
"Q c #CED103",
|
||||||
|
"q. c #EAEC01",
|
||||||
|
">. c #ADAF00",
|
||||||
|
/* pixels */
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" . X o O + @ # $ ",
|
||||||
|
" . % & * = - ; : > ; ",
|
||||||
|
" , < 1 2 3 4 5 6 7 8 > 9 ",
|
||||||
|
" 0 q w e r t y u $ i p a ",
|
||||||
|
" s d f g h j k l u z x c ",
|
||||||
|
" v b n m M N B V C Z A S ",
|
||||||
|
" D F G H J K L P I U Y T ",
|
||||||
|
" R E W Q ! ~ ^ / ( ) _ ` ",
|
||||||
|
" ' ] [ { } | .^ ..X.o.O. ",
|
||||||
|
" +.@.#.$.%.&.*.=.-.;.:.. ",
|
||||||
|
" >.,.<.] %.1.G 2.3.4. ",
|
||||||
|
" 5.6.7.8.9.0.q.w. ",
|
||||||
|
" ",
|
||||||
|
" "
|
||||||
|
};
|
144
samples/treectrl/state2.xpm
Normal file
144
samples/treectrl/state2.xpm
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char *state2_xpm[] = {
|
||||||
|
/* columns rows colors chars-per-pixel */
|
||||||
|
"16 16 122 2",
|
||||||
|
"4. c #54AF2C",
|
||||||
|
"9 c #95CF7C",
|
||||||
|
"K c #56A932",
|
||||||
|
"~ c #51A22E",
|
||||||
|
"Z c #82C665",
|
||||||
|
"0. c #4FA529",
|
||||||
|
"! c #4C9B2A",
|
||||||
|
"[ c #3C7C1F",
|
||||||
|
"' c #3F8620",
|
||||||
|
"x c #9FD488",
|
||||||
|
"6. c #37751C",
|
||||||
|
" c #FFFFFF",
|
||||||
|
"A c #8CCB71",
|
||||||
|
"# c #98D07F",
|
||||||
|
"5. c #3A7C1E",
|
||||||
|
"3 c #68B944",
|
||||||
|
"R c #428A22",
|
||||||
|
"X c #61B83B",
|
||||||
|
"| c #4A9827",
|
||||||
|
"*. c #4A9828",
|
||||||
|
"V c #6DBA4B",
|
||||||
|
"@ c #96D07D",
|
||||||
|
"> c #AEDA9A",
|
||||||
|
"s c #50A92A",
|
||||||
|
"/ c #5CAE38",
|
||||||
|
"3. c #55AD2F",
|
||||||
|
"} c #458E25",
|
||||||
|
"B c #66B643",
|
||||||
|
"& c #64B93F",
|
||||||
|
"v c #4B9F27",
|
||||||
|
".. c #5AAE36",
|
||||||
|
"$. c #38761E",
|
||||||
|
"0 c #53AD2B",
|
||||||
|
"X. c #5FB23B",
|
||||||
|
"c c #99D181",
|
||||||
|
"U c #75BF54",
|
||||||
|
"f c #53AA2E",
|
||||||
|
"= c #7AC35A",
|
||||||
|
"m c #53A72E",
|
||||||
|
"< c #56B12E",
|
||||||
|
"o. c #62B63E",
|
||||||
|
"% c #5BB534",
|
||||||
|
"7 c #A3D68D",
|
||||||
|
"N c #5DAF39",
|
||||||
|
"( c #62B33E",
|
||||||
|
"S c #90CD75",
|
||||||
|
"e c #5BB236",
|
||||||
|
") c #67B744",
|
||||||
|
"2 c #60B63A",
|
||||||
|
"b c #4CA028",
|
||||||
|
":. c #59B232",
|
||||||
|
"Q c #479326",
|
||||||
|
"7. c #37741C",
|
||||||
|
"w c #57AF31",
|
||||||
|
"G c #4A9A27",
|
||||||
|
"8. c #428923",
|
||||||
|
"_ c #6DBC4B",
|
||||||
|
"l c #79C159",
|
||||||
|
"T c #7EC55F",
|
||||||
|
"- c #8ACA6E",
|
||||||
|
"1 c #5AB333",
|
||||||
|
"@. c #35711B",
|
||||||
|
"H c #4D9E29",
|
||||||
|
"o c #6BBC47",
|
||||||
|
"` c #6BBC48",
|
||||||
|
": c #B3DDA0",
|
||||||
|
"p c #B3DDA1",
|
||||||
|
"y c #77C157",
|
||||||
|
"E c #408622",
|
||||||
|
"$ c #94CF7A",
|
||||||
|
"-. c #55A930",
|
||||||
|
"I c #6BB949",
|
||||||
|
"=. c #50A22C",
|
||||||
|
" . c #50A22D",
|
||||||
|
"q c #53AC2D",
|
||||||
|
"W c #438D23",
|
||||||
|
"5 c #81C663",
|
||||||
|
"<. c #306419",
|
||||||
|
"g c #58AD33",
|
||||||
|
"8 c #B6DEA4",
|
||||||
|
"q. c #51AC29",
|
||||||
|
"h c #5DB138",
|
||||||
|
"+. c #3E8320",
|
||||||
|
"9. c #499B26",
|
||||||
|
"L c #5DAE39",
|
||||||
|
"{ c #418722",
|
||||||
|
"&. c #448E24",
|
||||||
|
"+ c #8ECC72",
|
||||||
|
"j c #65B641",
|
||||||
|
"a c #9AD181",
|
||||||
|
". c #57B42F",
|
||||||
|
"F c #479525",
|
||||||
|
";. c #59AE34",
|
||||||
|
"Y c #7BC35B",
|
||||||
|
"n c #4FA32A",
|
||||||
|
"r c #63B63F",
|
||||||
|
"] c #37731C",
|
||||||
|
"i c #A4D68E",
|
||||||
|
"u c #85C868",
|
||||||
|
">. c #3A7A1E",
|
||||||
|
",. c #326919",
|
||||||
|
"k c #6DBB4B",
|
||||||
|
"#. c #32691A",
|
||||||
|
"J c #52A42E",
|
||||||
|
"1. c #458F25",
|
||||||
|
"t c #6BBB49",
|
||||||
|
"C c #77C057",
|
||||||
|
"O c #7CC45D",
|
||||||
|
"2. c #50A42C",
|
||||||
|
"^ c #55A831",
|
||||||
|
"P c #64B441",
|
||||||
|
"6 c #92CE77",
|
||||||
|
"z c #92CE78",
|
||||||
|
"D c #469324",
|
||||||
|
"M c #58AC34",
|
||||||
|
"4 c #73C052",
|
||||||
|
"%. c #3E8221",
|
||||||
|
"d c #51A82B",
|
||||||
|
", c #54B22B",
|
||||||
|
"O. c #60B73A",
|
||||||
|
"; c #9CD385",
|
||||||
|
"* c #6CBC49",
|
||||||
|
/* pixels */
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" . X o O + @ # $ ",
|
||||||
|
" . % & * = - ; : > ; ",
|
||||||
|
" , < 1 2 3 4 5 6 7 8 > 9 ",
|
||||||
|
" 0 q w e r t y u $ i p a ",
|
||||||
|
" s d f g h j k l u z x c ",
|
||||||
|
" v b n m M N B V C Z A S ",
|
||||||
|
" D F G H J K L P I U Y T ",
|
||||||
|
" R E W Q ! ~ ^ / ( ) _ ` ",
|
||||||
|
" ' ] [ { } | .^ ..X.o.O. ",
|
||||||
|
" +.@.#.$.%.&.*.=.-.;.:.. ",
|
||||||
|
" >.,.<.] %.1.G 2.3.4. ",
|
||||||
|
" 5.6.7.>.8.9.0.q. ",
|
||||||
|
" ",
|
||||||
|
" "
|
||||||
|
};
|
142
samples/treectrl/state3.xpm
Normal file
142
samples/treectrl/state3.xpm
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char *state3_xpm[] = {
|
||||||
|
/* columns rows colors chars-per-pixel */
|
||||||
|
"16 16 120 2",
|
||||||
|
"7 c #E48D8D",
|
||||||
|
"> c #E79A9A",
|
||||||
|
"& c #D03F3F",
|
||||||
|
"=. c #C63434",
|
||||||
|
"F c #B02727",
|
||||||
|
",. c #A42525",
|
||||||
|
". c #CD2F2F",
|
||||||
|
"s c #C12A2A",
|
||||||
|
";. c #8C1E1E",
|
||||||
|
"5 c #D96363",
|
||||||
|
"-. c #CB3232",
|
||||||
|
" . c #C93B3B",
|
||||||
|
"0 c #C62B2B",
|
||||||
|
"$ c #DF7A7A",
|
||||||
|
"t c #D14949",
|
||||||
|
" c #FFFFFF",
|
||||||
|
"o. c #962020",
|
||||||
|
"&. c #B82C2C",
|
||||||
|
"p c #E8A1A1",
|
||||||
|
"P c #CF4949",
|
||||||
|
"2. c #C92C2C",
|
||||||
|
"f c #C22E2E",
|
||||||
|
"= c #D75A5A",
|
||||||
|
"^ c #C53838",
|
||||||
|
"e c #CA3636",
|
||||||
|
"d c #C02B2B",
|
||||||
|
"y c #D55757",
|
||||||
|
"X. c #CF3A3A",
|
||||||
|
"n c #BE2E2E",
|
||||||
|
"9. c #C52929",
|
||||||
|
"E c #A12323",
|
||||||
|
"#. c #952121",
|
||||||
|
"2 c #CD3A3A",
|
||||||
|
"z c #DE7878",
|
||||||
|
"R c #9A2222",
|
||||||
|
"A c #DE7575",
|
||||||
|
"3 c #D04444",
|
||||||
|
"M c #C63939",
|
||||||
|
"% c #CD3434",
|
||||||
|
"O. c #821B1B",
|
||||||
|
"X c #D03B3B",
|
||||||
|
"6. c #9D2323",
|
||||||
|
"9 c #DF7C7C",
|
||||||
|
"Y c #D95F5F",
|
||||||
|
"5. c #851C1C",
|
||||||
|
"$. c #A22424",
|
||||||
|
">. c #721919",
|
||||||
|
": c #E8A0A0",
|
||||||
|
"B c #CF4B4B",
|
||||||
|
"Q c #B12A2A",
|
||||||
|
"8. c #BD2929",
|
||||||
|
"w c #C73131",
|
||||||
|
"/ c #CA3E3E",
|
||||||
|
"<. c #BB2C2C",
|
||||||
|
"*. c #C03030",
|
||||||
|
"@ c #E07D7D",
|
||||||
|
"[ c #A32525",
|
||||||
|
"l c #D55959",
|
||||||
|
"8 c #E9A4A4",
|
||||||
|
"* c #D24949",
|
||||||
|
"W c #A82626",
|
||||||
|
"r c #CD3F3F",
|
||||||
|
"m c #C33434",
|
||||||
|
"{ c #AD2727",
|
||||||
|
"h c #C83838",
|
||||||
|
"O c #D85D5D",
|
||||||
|
"6 c #DE7777",
|
||||||
|
"] c #8E1F1F",
|
||||||
|
"a c #E18181",
|
||||||
|
"i c #E48E8E",
|
||||||
|
"T c #9F2222",
|
||||||
|
"@. c #871E1E",
|
||||||
|
"G c #B52929",
|
||||||
|
"1. c #C62F2F",
|
||||||
|
"o c #D34747",
|
||||||
|
"1 c #CB3333",
|
||||||
|
"~ c #BF3131",
|
||||||
|
"Z c #DC7171",
|
||||||
|
"S c #A92424",
|
||||||
|
"b c #BA2A2A",
|
||||||
|
"%. c #AE2828",
|
||||||
|
"- c #DC6E6E",
|
||||||
|
":. c #791919",
|
||||||
|
"x c #E28888",
|
||||||
|
"V c #D45757",
|
||||||
|
"N c #CC4343",
|
||||||
|
"} c #B82D2D",
|
||||||
|
"; c #E28585",
|
||||||
|
"I c #D45454",
|
||||||
|
"U c #D75B5B",
|
||||||
|
"u c #DA6868",
|
||||||
|
"7. c #B12626",
|
||||||
|
"K c #C53939",
|
||||||
|
"H c #BB2E2E",
|
||||||
|
"J c #C03232",
|
||||||
|
"+ c #DD7272",
|
||||||
|
"c c #B62727",
|
||||||
|
"D c #AA2525",
|
||||||
|
"| c #C53636",
|
||||||
|
"# c #E07F7F",
|
||||||
|
"g c #C53333",
|
||||||
|
"4. c #861C1C",
|
||||||
|
") c #D24B4B",
|
||||||
|
"( c #CD4444",
|
||||||
|
"! c #B92E2E",
|
||||||
|
"C c #D86565",
|
||||||
|
"_ c #D24848",
|
||||||
|
", c #CC2B2B",
|
||||||
|
"j c #CD4141",
|
||||||
|
"q c #C52D2D",
|
||||||
|
"4 c #D55252",
|
||||||
|
".. c #CD3E3E",
|
||||||
|
"' c #841C1C",
|
||||||
|
"k c #D04B4B",
|
||||||
|
"+. c #781A1A",
|
||||||
|
"< c #CA2E2E",
|
||||||
|
"L c #CB4141",
|
||||||
|
"` c #9A2020",
|
||||||
|
"3. c #8E1E1E",
|
||||||
|
"v c #B72828",
|
||||||
|
/* pixels */
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" . X o O + @ # $ ",
|
||||||
|
" . % & * = - ; : > ; ",
|
||||||
|
" , < 1 2 3 4 5 6 7 8 > 9 ",
|
||||||
|
" 0 q w e r t y u $ i p a ",
|
||||||
|
" s d f g h j k l u z x a ",
|
||||||
|
" c v b n m M N B V C Z A ",
|
||||||
|
" S D F G H J K L P I U Y ",
|
||||||
|
" T R E W Q ! ~ ^ / ( ) _ ",
|
||||||
|
" ` ' ] R [ { } ~ | ...X. ",
|
||||||
|
" o.O.+.@.#.$.%.&.*.=.-.. ",
|
||||||
|
" ;.:.>.' #.,.F <.1.2. ",
|
||||||
|
" 3.4.5.;.6.7.8.9. ",
|
||||||
|
" ",
|
||||||
|
" "
|
||||||
|
};
|
145
samples/treectrl/state4.xpm
Normal file
145
samples/treectrl/state4.xpm
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char *state4_xpm[] = {
|
||||||
|
/* columns rows colors chars-per-pixel */
|
||||||
|
"16 16 123 2",
|
||||||
|
"h c #3875C8",
|
||||||
|
"D c #245CA9",
|
||||||
|
"&. c #2459A2",
|
||||||
|
"#. c #1A4278",
|
||||||
|
"Z c #6596D8",
|
||||||
|
"w c #3171C7",
|
||||||
|
"v c #2763B6",
|
||||||
|
"=. c #2C67B8",
|
||||||
|
"| c #2760AD",
|
||||||
|
".. c #3672C5",
|
||||||
|
" c #FFFFFF",
|
||||||
|
"U c #548AD4",
|
||||||
|
"s c #2A6AC1",
|
||||||
|
"% c #3475CD",
|
||||||
|
";. c #3472C6",
|
||||||
|
"n c #2A67BA",
|
||||||
|
"6 c #77A3DE",
|
||||||
|
"3. c #2F6EC6",
|
||||||
|
"o. c #3E7ACD",
|
||||||
|
"F c #255DAA",
|
||||||
|
"} c #255AA3",
|
||||||
|
"` c #4882D2",
|
||||||
|
"1. c #255AA4",
|
||||||
|
"8 c #A4C1E9",
|
||||||
|
" . c #2D68B8",
|
||||||
|
"b c #2864B7",
|
||||||
|
"*. c #2861AE",
|
||||||
|
"# c #7FA8E0",
|
||||||
|
"P c #417BCB",
|
||||||
|
"V c #4B83CF",
|
||||||
|
"k c #4B83D0",
|
||||||
|
"8. c #1E4D8C",
|
||||||
|
"5. c #1E4D8E",
|
||||||
|
"= c #5A8FD7",
|
||||||
|
"T c #5F93D9",
|
||||||
|
"$. c #1E4A87",
|
||||||
|
"- c #6E9CDC",
|
||||||
|
"0. c #2661B1",
|
||||||
|
"r c #3F7BCD",
|
||||||
|
"3 c #447FD0",
|
||||||
|
"* c #4983D2",
|
||||||
|
"w. c #296BC5",
|
||||||
|
"q. c #2968BD",
|
||||||
|
"1 c #3373CB",
|
||||||
|
"f c #2E6CC2",
|
||||||
|
"/ c #3874C5",
|
||||||
|
"[ c #1F4E8E",
|
||||||
|
"^ c #316DBF",
|
||||||
|
"e c #3674CA",
|
||||||
|
"{ c #22559A",
|
||||||
|
"x c #88AEE2",
|
||||||
|
"7 c #8DB2E4",
|
||||||
|
"l c #598DD5",
|
||||||
|
"5 c #6395D9",
|
||||||
|
"p c #A1BFE8",
|
||||||
|
"9 c #7CA6DF",
|
||||||
|
"! c #2A63B1",
|
||||||
|
"a c #81AAE1",
|
||||||
|
"( c #3E79CA",
|
||||||
|
"B c #437DCC",
|
||||||
|
"+. c #205296",
|
||||||
|
"4 c #5289D5",
|
||||||
|
"> c #9ABBE7",
|
||||||
|
"q c #2D6DC5",
|
||||||
|
"K c #326EC0",
|
||||||
|
"9. c #23569D",
|
||||||
|
">. c #1E4C8C",
|
||||||
|
",. c #194279",
|
||||||
|
"<. c #193F72",
|
||||||
|
"0 c #2B6DC6",
|
||||||
|
"d c #2B6AC0",
|
||||||
|
"O. c #3A79CF",
|
||||||
|
"z c #78A3DE",
|
||||||
|
"@ c #7DA7E0",
|
||||||
|
"Q c #265DA8",
|
||||||
|
") c #447ECD",
|
||||||
|
"I c #4982CF",
|
||||||
|
"t c #4982D1",
|
||||||
|
"6. c #1C4986",
|
||||||
|
"m c #2E6BBE",
|
||||||
|
"H c #2964B5",
|
||||||
|
"~ c #2E68B9",
|
||||||
|
"o c #4782D3",
|
||||||
|
"; c #85ACE2",
|
||||||
|
"Y c #5B8FD7",
|
||||||
|
"4. c #2C6EC9",
|
||||||
|
"X c #3B7AD0",
|
||||||
|
"2. c #2C68BB",
|
||||||
|
"G c #2761B0",
|
||||||
|
"X. c #3B77C9",
|
||||||
|
"R c #22579F",
|
||||||
|
"E c #22549A",
|
||||||
|
". c #2F72CD",
|
||||||
|
"u c #6898DA",
|
||||||
|
"+ c #72A0DD",
|
||||||
|
"M c #3470C3",
|
||||||
|
"L c #3974C5",
|
||||||
|
"N c #3974C6",
|
||||||
|
"' c #20549A",
|
||||||
|
"c c #81A9E1",
|
||||||
|
"@. c #1B4782",
|
||||||
|
"C c #578CD4",
|
||||||
|
"y c #578CD5",
|
||||||
|
":. c #3273CB",
|
||||||
|
"S c #75A1DE",
|
||||||
|
"$ c #7AA5DF",
|
||||||
|
"j c #417CCD",
|
||||||
|
"W c #2358A1",
|
||||||
|
"_ c #4B84D2",
|
||||||
|
"i c #8EB2E4",
|
||||||
|
", c #2B6FCC",
|
||||||
|
"-. c #306DC0",
|
||||||
|
"2 c #3A78CD",
|
||||||
|
"& c #3F7CD0",
|
||||||
|
"%. c #215295",
|
||||||
|
"] c #1C4884",
|
||||||
|
"7. c #1C4885",
|
||||||
|
"O c #5D91D8",
|
||||||
|
": c #A0BFE8",
|
||||||
|
"< c #2E70CA",
|
||||||
|
"A c #719EDC",
|
||||||
|
"g c #3371C5",
|
||||||
|
"J c #2E6ABB",
|
||||||
|
/* pixels */
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" . X o O + @ # $ ",
|
||||||
|
" . % & * = - ; : > ; ",
|
||||||
|
" , < 1 2 3 4 5 6 7 8 > 9 ",
|
||||||
|
" 0 q w e r t y u $ i p a ",
|
||||||
|
" s d f g h j k l u z x c ",
|
||||||
|
" v b n m M N B V C Z A S ",
|
||||||
|
" D F G H J K L P I U Y T ",
|
||||||
|
" R E W Q ! ~ ^ / ( ) _ ` ",
|
||||||
|
" ' ] [ { } | .^ ..X.o.O. ",
|
||||||
|
" +.@.#.$.%.&.*.=.-.;.:.. ",
|
||||||
|
" >.,.<.] %.1.G 2.3.4. ",
|
||||||
|
" 5.6.7.8.9.0.q.w. ",
|
||||||
|
" ",
|
||||||
|
" "
|
||||||
|
};
|
85
samples/treectrl/state5.xpm
Normal file
85
samples/treectrl/state5.xpm
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char *state5_xpm[] = {
|
||||||
|
/* columns rows colors chars-per-pixel */
|
||||||
|
"16 16 63 1",
|
||||||
|
", c Black",
|
||||||
|
"z c #1E1E1E",
|
||||||
|
"O c #3C3C3C",
|
||||||
|
"l c #080808",
|
||||||
|
"w c #353535",
|
||||||
|
" c #FFFFFF",
|
||||||
|
"u c #010101",
|
||||||
|
"C c #101010",
|
||||||
|
"< c #1F1F1F",
|
||||||
|
"9 c #090909",
|
||||||
|
"& c #181818",
|
||||||
|
"f c #272727",
|
||||||
|
"x c #363636",
|
||||||
|
"v c #545454",
|
||||||
|
"@ c #636363",
|
||||||
|
"7 c #020202",
|
||||||
|
"1 c #2F2F2F",
|
||||||
|
"3 c #5C5C5C",
|
||||||
|
"S c #0A0A0A",
|
||||||
|
"q c #191919",
|
||||||
|
"c c #464646",
|
||||||
|
"i c #030303",
|
||||||
|
"s c #121212",
|
||||||
|
"B c #3F3F3F",
|
||||||
|
"h c #5D5D5D",
|
||||||
|
"; c #6C6C6C",
|
||||||
|
"% c #0B0B0B",
|
||||||
|
"g c #383838",
|
||||||
|
"+ c #565656",
|
||||||
|
"# c #656565",
|
||||||
|
"5 c #929292",
|
||||||
|
"8 c #040404",
|
||||||
|
"X c #131313",
|
||||||
|
"o c #222222",
|
||||||
|
"a c #0C0C0C",
|
||||||
|
"= c #393939",
|
||||||
|
". c #050505",
|
||||||
|
"n c #141414",
|
||||||
|
"V c #232323",
|
||||||
|
"M c #323232",
|
||||||
|
"- c #505050",
|
||||||
|
"$ c #5F5F5F",
|
||||||
|
"D c #0D0D0D",
|
||||||
|
"d c #1C1C1C",
|
||||||
|
"N c #3A3A3A",
|
||||||
|
"k c #676767",
|
||||||
|
"4 c #767676",
|
||||||
|
"p c #060606",
|
||||||
|
"Z c #151515",
|
||||||
|
"* c #242424",
|
||||||
|
": c #8D8D8D",
|
||||||
|
"0 c #0E0E0E",
|
||||||
|
"e c #4A4A4A",
|
||||||
|
"b c #595959",
|
||||||
|
"y c #686868",
|
||||||
|
"r c #777777",
|
||||||
|
"> c #868686",
|
||||||
|
"A c #070707",
|
||||||
|
"m c #252525",
|
||||||
|
"2 c #434343",
|
||||||
|
"6 c #616161",
|
||||||
|
"j c #707070",
|
||||||
|
"t c #8E8E8E",
|
||||||
|
/* pixels */
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" .XoO+@#$ ",
|
||||||
|
" .%&*=-;:>; ",
|
||||||
|
" ,.%X<12345>6 ",
|
||||||
|
" 7890q*we$rty ",
|
||||||
|
" uipasdfgehjk ",
|
||||||
|
" u78l0Xzfxcvb ",
|
||||||
|
" u7i89andmMNB ",
|
||||||
|
" u77ip9aXq<fV ",
|
||||||
|
" ,u7ii8laCZ&X ",
|
||||||
|
" ,,u77i8ASDS. ",
|
||||||
|
" ,,uu7iipp7 ",
|
||||||
|
" ,,,u7uu, ",
|
||||||
|
" ",
|
||||||
|
" "
|
||||||
|
};
|
@@ -29,6 +29,7 @@
|
|||||||
#include "wx/imaglist.h"
|
#include "wx/imaglist.h"
|
||||||
#include "wx/treectrl.h"
|
#include "wx/treectrl.h"
|
||||||
#include "wx/math.h"
|
#include "wx/math.h"
|
||||||
|
#include "wx/renderer.h"
|
||||||
|
|
||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
// this is not supported by native control
|
// this is not supported by native control
|
||||||
@@ -43,6 +44,12 @@
|
|||||||
#include "icon4.xpm"
|
#include "icon4.xpm"
|
||||||
#include "icon5.xpm"
|
#include "icon5.xpm"
|
||||||
|
|
||||||
|
#include "state1.xpm"
|
||||||
|
#include "state2.xpm"
|
||||||
|
#include "state3.xpm"
|
||||||
|
#include "state4.xpm"
|
||||||
|
#include "state5.xpm"
|
||||||
|
|
||||||
#ifndef __WXMSW__
|
#ifndef __WXMSW__
|
||||||
#include "../sample.xpm"
|
#include "../sample.xpm"
|
||||||
#endif
|
#endif
|
||||||
@@ -98,7 +105,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
|||||||
MENU_LINK(DeleteAll)
|
MENU_LINK(DeleteAll)
|
||||||
MENU_LINK(Recreate)
|
MENU_LINK(Recreate)
|
||||||
MENU_LINK(ToggleImages)
|
MENU_LINK(ToggleImages)
|
||||||
|
MENU_LINK(ToggleStates)
|
||||||
MENU_LINK(ToggleAlternateImages)
|
MENU_LINK(ToggleAlternateImages)
|
||||||
|
MENU_LINK(ToggleAlternateStates)
|
||||||
MENU_LINK(ToggleButtons)
|
MENU_LINK(ToggleButtons)
|
||||||
MENU_LINK(SetImageSize)
|
MENU_LINK(SetImageSize)
|
||||||
MENU_LINK(CollapseAndReset)
|
MENU_LINK(CollapseAndReset)
|
||||||
@@ -110,6 +119,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
|||||||
MENU_LINK(IncSpacing)
|
MENU_LINK(IncSpacing)
|
||||||
MENU_LINK(DecSpacing)
|
MENU_LINK(DecSpacing)
|
||||||
MENU_LINK(ToggleIcon)
|
MENU_LINK(ToggleIcon)
|
||||||
|
MENU_LINK(ToggleState)
|
||||||
MENU_LINK(SelectRoot)
|
MENU_LINK(SelectRoot)
|
||||||
|
|
||||||
MENU_LINK(ShowFirstVisible)
|
MENU_LINK(ShowFirstVisible)
|
||||||
@@ -146,6 +156,7 @@ BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl)
|
|||||||
EVT_TREE_SEL_CHANGING(TreeTest_Ctrl, MyTreeCtrl::OnSelChanging)
|
EVT_TREE_SEL_CHANGING(TreeTest_Ctrl, MyTreeCtrl::OnSelChanging)
|
||||||
EVT_TREE_KEY_DOWN(TreeTest_Ctrl, MyTreeCtrl::OnTreeKeyDown)
|
EVT_TREE_KEY_DOWN(TreeTest_Ctrl, MyTreeCtrl::OnTreeKeyDown)
|
||||||
EVT_TREE_ITEM_ACTIVATED(TreeTest_Ctrl, MyTreeCtrl::OnItemActivated)
|
EVT_TREE_ITEM_ACTIVATED(TreeTest_Ctrl, MyTreeCtrl::OnItemActivated)
|
||||||
|
EVT_TREE_STATE_IMAGE_CLICK(TreeTest_Ctrl, MyTreeCtrl::OnItemStateClick)
|
||||||
|
|
||||||
// so many different ways to handle right mouse button clicks...
|
// so many different ways to handle right mouse button clicks...
|
||||||
EVT_CONTEXT_MENU(MyTreeCtrl::OnContextMenu)
|
EVT_CONTEXT_MENU(MyTreeCtrl::OnContextMenu)
|
||||||
@@ -221,7 +232,9 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
|
|||||||
style_menu->AppendCheckItem(TreeTest_ToggleSel, wxT("Toggle &selection mode\tCtrl-S"));
|
style_menu->AppendCheckItem(TreeTest_ToggleSel, wxT("Toggle &selection mode\tCtrl-S"));
|
||||||
#endif // NO_MULTIPLE_SELECTION
|
#endif // NO_MULTIPLE_SELECTION
|
||||||
style_menu->AppendCheckItem(TreeTest_ToggleImages, wxT("Toggle show ima&ges"));
|
style_menu->AppendCheckItem(TreeTest_ToggleImages, wxT("Toggle show ima&ges"));
|
||||||
|
style_menu->AppendCheckItem(TreeTest_ToggleStates, wxT("Toggle show st&ates"));
|
||||||
style_menu->AppendCheckItem(TreeTest_ToggleAlternateImages, wxT("Toggle alternate images"));
|
style_menu->AppendCheckItem(TreeTest_ToggleAlternateImages, wxT("Toggle alternate images"));
|
||||||
|
style_menu->AppendCheckItem(TreeTest_ToggleAlternateStates, wxT("Toggle alternate state images"));
|
||||||
style_menu->Append(TreeTest_SetImageSize, wxT("Set image si&ze..."));
|
style_menu->Append(TreeTest_SetImageSize, wxT("Set image si&ze..."));
|
||||||
style_menu->AppendSeparator();
|
style_menu->AppendSeparator();
|
||||||
style_menu->Append(TreeTest_SetFgColour, wxT("Set &foreground colour..."));
|
style_menu->Append(TreeTest_SetFgColour, wxT("Set &foreground colour..."));
|
||||||
@@ -261,6 +274,7 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
|
|||||||
item_menu->Append(TreeTest_ClearBold, wxT("Make item ¬ bold"));
|
item_menu->Append(TreeTest_ClearBold, wxT("Make item ¬ bold"));
|
||||||
item_menu->AppendSeparator();
|
item_menu->AppendSeparator();
|
||||||
item_menu->Append(TreeTest_ToggleIcon, wxT("Toggle the item's &icon"));
|
item_menu->Append(TreeTest_ToggleIcon, wxT("Toggle the item's &icon"));
|
||||||
|
item_menu->Append(TreeTest_ToggleState, wxT("Toggle the item's &state"));
|
||||||
item_menu->AppendSeparator();
|
item_menu->AppendSeparator();
|
||||||
item_menu->Append(TreeTest_ShowFirstVisible, wxT("Show &first visible"));
|
item_menu->Append(TreeTest_ShowFirstVisible, wxT("Show &first visible"));
|
||||||
#ifdef wxHAS_LAST_VISIBLE
|
#ifdef wxHAS_LAST_VISIBLE
|
||||||
@@ -296,7 +310,9 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h)
|
|||||||
CreateTreeWithDefStyle();
|
CreateTreeWithDefStyle();
|
||||||
|
|
||||||
menu_bar->Check(TreeTest_ToggleImages, true);
|
menu_bar->Check(TreeTest_ToggleImages, true);
|
||||||
|
menu_bar->Check(TreeTest_ToggleStates, true);
|
||||||
menu_bar->Check(TreeTest_ToggleAlternateImages, false);
|
menu_bar->Check(TreeTest_ToggleAlternateImages, false);
|
||||||
|
menu_bar->Check(TreeTest_ToggleAlternateStates, false);
|
||||||
|
|
||||||
#if wxUSE_STATUSBAR
|
#if wxUSE_STATUSBAR
|
||||||
// create a status bar
|
// create a status bar
|
||||||
@@ -626,6 +642,20 @@ void MyFrame::OnToggleImages(wxCommandEvent& WXUNUSED(event))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnToggleStates(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
if ( wxGetApp().ShowStates() )
|
||||||
|
{
|
||||||
|
m_treeCtrl->CreateStateImageList(true);
|
||||||
|
wxGetApp().SetShowStates(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_treeCtrl->CreateStateImageList(false);
|
||||||
|
wxGetApp().SetShowStates(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MyFrame::OnToggleAlternateImages(wxCommandEvent& WXUNUSED(event))
|
void MyFrame::OnToggleAlternateImages(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
bool alternateImages = m_treeCtrl->AlternateImages();
|
bool alternateImages = m_treeCtrl->AlternateImages();
|
||||||
@@ -634,6 +664,14 @@ void MyFrame::OnToggleAlternateImages(wxCommandEvent& WXUNUSED(event))
|
|||||||
m_treeCtrl->CreateImageList(0);
|
m_treeCtrl->CreateImageList(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnToggleAlternateStates(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
bool alternateStates = m_treeCtrl->AlternateStates();
|
||||||
|
|
||||||
|
m_treeCtrl->SetAlternateStates(!alternateStates);
|
||||||
|
m_treeCtrl->CreateStateImageList();
|
||||||
|
}
|
||||||
|
|
||||||
void MyFrame::OnToggleButtons(wxCommandEvent& WXUNUSED(event))
|
void MyFrame::OnToggleButtons(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
#if USE_GENERIC_TREECTRL || !defined(__WXMSW__)
|
#if USE_GENERIC_TREECTRL || !defined(__WXMSW__)
|
||||||
@@ -715,6 +753,15 @@ void MyFrame::OnToggleIcon(wxCommandEvent& WXUNUSED(event))
|
|||||||
m_treeCtrl->DoToggleIcon(item);
|
m_treeCtrl->DoToggleIcon(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnToggleState(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
wxTreeItemId item = m_treeCtrl->GetSelection();
|
||||||
|
|
||||||
|
CHECK_ITEM( item );
|
||||||
|
|
||||||
|
m_treeCtrl->DoToggleState(item);
|
||||||
|
}
|
||||||
|
|
||||||
void MyFrame::DoShowFirstOrLast(TreeFunc0_t pfn, const wxString& label)
|
void MyFrame::DoShowFirstOrLast(TreeFunc0_t pfn, const wxString& label)
|
||||||
{
|
{
|
||||||
const wxTreeItemId item = (m_treeCtrl->*pfn)();
|
const wxTreeItemId item = (m_treeCtrl->*pfn)();
|
||||||
@@ -772,11 +819,13 @@ MyTreeCtrl::MyTreeCtrl(wxWindow *parent, const wxWindowID id,
|
|||||||
const wxPoint& pos, const wxSize& size,
|
const wxPoint& pos, const wxSize& size,
|
||||||
long style)
|
long style)
|
||||||
: wxTreeCtrl(parent, id, pos, size, style),
|
: wxTreeCtrl(parent, id, pos, size, style),
|
||||||
m_alternateImages(false)
|
m_alternateImages(false),
|
||||||
|
m_alternateStates(false)
|
||||||
{
|
{
|
||||||
m_reverseSort = false;
|
m_reverseSort = false;
|
||||||
|
|
||||||
CreateImageList();
|
CreateImageList();
|
||||||
|
CreateStateImageList();
|
||||||
|
|
||||||
// Add some items to the tree
|
// Add some items to the tree
|
||||||
AddTestItemsToTree(5, 2);
|
AddTestItemsToTree(5, 2);
|
||||||
@@ -836,6 +885,70 @@ void MyTreeCtrl::CreateImageList(int size)
|
|||||||
AssignImageList(images);
|
AssignImageList(images);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyTreeCtrl::CreateStateImageList(bool del)
|
||||||
|
{
|
||||||
|
if ( del )
|
||||||
|
{
|
||||||
|
SetStateImageList(NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxImageList *states;
|
||||||
|
wxBusyCursor wait;
|
||||||
|
|
||||||
|
if (m_alternateStates)
|
||||||
|
{
|
||||||
|
wxIcon icons[5];
|
||||||
|
icons[0] = wxIcon(state1_xpm); // yellow
|
||||||
|
icons[1] = wxIcon(state2_xpm); // green
|
||||||
|
icons[2] = wxIcon(state3_xpm); // red
|
||||||
|
icons[3] = wxIcon(state4_xpm); // blue
|
||||||
|
icons[4] = wxIcon(state5_xpm); // black
|
||||||
|
|
||||||
|
int width = icons[0].GetWidth(),
|
||||||
|
height = icons[0].GetHeight();
|
||||||
|
|
||||||
|
// Make an state image list containing small icons
|
||||||
|
states = new wxImageList(width, height, true);
|
||||||
|
|
||||||
|
for ( size_t i = 0; i < WXSIZEOF(icons); i++ )
|
||||||
|
states->Add(icons[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int width = ::GetSystemMetrics(SM_CXMENUCHECK),
|
||||||
|
height = ::GetSystemMetrics(SM_CYMENUCHECK);
|
||||||
|
|
||||||
|
// make an state checkbox image list
|
||||||
|
states = new wxImageList(width, height, true);
|
||||||
|
|
||||||
|
wxBitmap checkBmp(width, height);
|
||||||
|
wxRect rect (0, 0, width, height);
|
||||||
|
|
||||||
|
wxRendererNative& renderer = wxRendererNative::Get();
|
||||||
|
|
||||||
|
// create no checked image
|
||||||
|
{
|
||||||
|
// first create bitmap in a memory DC
|
||||||
|
wxMemoryDC memDC(checkBmp);
|
||||||
|
// then draw a check mark into it
|
||||||
|
renderer.DrawCheckBox(this, memDC, rect, 0);
|
||||||
|
} // select checkBmp out of memDC
|
||||||
|
|
||||||
|
states->Add(checkBmp);
|
||||||
|
|
||||||
|
// create checked image
|
||||||
|
{
|
||||||
|
wxMemoryDC memDC(checkBmp);
|
||||||
|
renderer.DrawCheckBox(this, memDC, rect, wxCONTROL_CHECKED);
|
||||||
|
}
|
||||||
|
|
||||||
|
states->Add(checkBmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
AssignStateImageList(states);
|
||||||
|
}
|
||||||
|
|
||||||
#if USE_GENERIC_TREECTRL || !defined(__WXMSW__)
|
#if USE_GENERIC_TREECTRL || !defined(__WXMSW__)
|
||||||
void MyTreeCtrl::CreateButtonsImageList(int size)
|
void MyTreeCtrl::CreateButtonsImageList(int size)
|
||||||
{
|
{
|
||||||
@@ -936,6 +1049,9 @@ void MyTreeCtrl::AddItemsRecursively(const wxTreeItemId& idParent,
|
|||||||
wxTreeItemId id = AppendItem(idParent, str, image, imageSel,
|
wxTreeItemId id = AppendItem(idParent, str, image, imageSel,
|
||||||
new MyTreeItemData(str));
|
new MyTreeItemData(str));
|
||||||
|
|
||||||
|
if ( wxGetApp().ShowStates() )
|
||||||
|
SetItemState(id, 0);
|
||||||
|
|
||||||
// and now we also set the expanded one (only for the folders)
|
// and now we also set the expanded one (only for the folders)
|
||||||
if ( hasChildren && wxGetApp().ShowImages() )
|
if ( hasChildren && wxGetApp().ShowImages() )
|
||||||
{
|
{
|
||||||
@@ -1018,6 +1134,28 @@ void MyTreeCtrl::DoToggleIcon(const wxTreeItemId& item)
|
|||||||
SetItemImage(item, image, wxTreeItemIcon_Selected);
|
SetItemImage(item, image, wxTreeItemIcon_Selected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyTreeCtrl::DoToggleState(const wxTreeItemId& item)
|
||||||
|
{
|
||||||
|
if ( m_alternateStates )
|
||||||
|
{
|
||||||
|
// sets random state unlike current
|
||||||
|
int state = GetItemState(item);
|
||||||
|
int nState;
|
||||||
|
|
||||||
|
srand (time(NULL));
|
||||||
|
do {
|
||||||
|
nState = rand() % GetStateImageList()->GetImageCount();
|
||||||
|
} while (nState == state);
|
||||||
|
|
||||||
|
SetItemState(item, nState);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// we have only 2 checkbox states, so next state will be reversed
|
||||||
|
SetItemState(item, wxTREE_ITEMSTATE_NEXT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MyTreeCtrl::LogEvent(const wxChar *name, const wxTreeEvent& event)
|
void MyTreeCtrl::LogEvent(const wxChar *name, const wxTreeEvent& event)
|
||||||
{
|
{
|
||||||
wxTreeItemId item = event.GetItem();
|
wxTreeItemId item = event.GetItem();
|
||||||
@@ -1238,7 +1376,10 @@ void MyTreeCtrl::OnEndDrag(wxTreeEvent& event)
|
|||||||
// Finally, we only copy one item here but we might copy the entire tree if
|
// Finally, we only copy one item here but we might copy the entire tree if
|
||||||
// we were dragging a folder.
|
// we were dragging a folder.
|
||||||
int image = wxGetApp().ShowImages() ? TreeCtrlIcon_File : -1;
|
int image = wxGetApp().ShowImages() ? TreeCtrlIcon_File : -1;
|
||||||
AppendItem(itemDst, text, image);
|
wxTreeItemId id = AppendItem(itemDst, text, image);
|
||||||
|
|
||||||
|
if ( wxGetApp().ShowStates() )
|
||||||
|
SetItemState(id, GetItemState(itemSrc));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyTreeCtrl::OnBeginLabelEdit(wxTreeEvent& event)
|
void MyTreeCtrl::OnBeginLabelEdit(wxTreeEvent& event)
|
||||||
@@ -1301,6 +1442,16 @@ void MyTreeCtrl::OnItemActivated(wxTreeEvent& event)
|
|||||||
wxLogMessage(wxT("OnItemActivated"));
|
wxLogMessage(wxT("OnItemActivated"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyTreeCtrl::OnItemStateClick(wxTreeEvent& event)
|
||||||
|
{
|
||||||
|
// toggle item state
|
||||||
|
wxTreeItemId itemId = event.GetItem();
|
||||||
|
DoToggleState(itemId);
|
||||||
|
|
||||||
|
wxLogMessage(wxT("Item \"%s\" state changed to %d"),
|
||||||
|
GetItemText(itemId), GetItemState(itemId));
|
||||||
|
}
|
||||||
|
|
||||||
void MyTreeCtrl::OnItemMenu(wxTreeEvent& event)
|
void MyTreeCtrl::OnItemMenu(wxTreeEvent& event)
|
||||||
{
|
{
|
||||||
wxTreeItemId itemId = event.GetItem();
|
wxTreeItemId itemId = event.GetItem();
|
||||||
@@ -1309,7 +1460,7 @@ void MyTreeCtrl::OnItemMenu(wxTreeEvent& event)
|
|||||||
wxPoint clientpt = event.GetPoint();
|
wxPoint clientpt = event.GetPoint();
|
||||||
wxPoint screenpt = ClientToScreen(clientpt);
|
wxPoint screenpt = ClientToScreen(clientpt);
|
||||||
|
|
||||||
wxLogMessage(wxT("OnItemMenu for item \"%s\" at screen coords (%i, %i)"),
|
wxLogMessage(wxT("OnItemMenu for item \"%s\" at screen coords (%i, %i)"),
|
||||||
item ? item->GetDesc() : _T(""), screenpt.x, screenpt.y);
|
item ? item->GetDesc() : _T(""), screenpt.x, screenpt.y);
|
||||||
|
|
||||||
ShowMenu(itemId, clientpt);
|
ShowMenu(itemId, clientpt);
|
||||||
|
@@ -23,18 +23,21 @@
|
|||||||
class MyApp : public wxApp
|
class MyApp : public wxApp
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MyApp() { m_showImages = true; m_showButtons = false; }
|
MyApp() { m_showImages = true; m_showStates = true; m_showButtons = false; }
|
||||||
|
|
||||||
bool OnInit();
|
bool OnInit();
|
||||||
|
|
||||||
void SetShowImages(bool show) { m_showImages = show; }
|
void SetShowImages(bool show) { m_showImages = show; }
|
||||||
bool ShowImages() const { return m_showImages; }
|
bool ShowImages() const { return m_showImages; }
|
||||||
|
|
||||||
|
void SetShowStates(bool show) { m_showStates = show; }
|
||||||
|
bool ShowStates() const { return m_showStates; }
|
||||||
|
|
||||||
void SetShowButtons(bool show) { m_showButtons = show; }
|
void SetShowButtons(bool show) { m_showButtons = show; }
|
||||||
bool ShowButtons() const { return m_showButtons; }
|
bool ShowButtons() const { return m_showButtons; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_showImages, m_showButtons;
|
bool m_showImages, m_showStates, m_showButtons;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MyTreeItemData : public wxTreeItemData
|
class MyTreeItemData : public wxTreeItemData
|
||||||
@@ -61,7 +64,7 @@ public:
|
|||||||
TreeCtrlIcon_FolderOpened
|
TreeCtrlIcon_FolderOpened
|
||||||
};
|
};
|
||||||
|
|
||||||
MyTreeCtrl() { m_alternateImages = false; }
|
MyTreeCtrl() { m_alternateImages = false; m_alternateStates = false; }
|
||||||
MyTreeCtrl(wxWindow *parent, const wxWindowID id,
|
MyTreeCtrl(wxWindow *parent, const wxWindowID id,
|
||||||
const wxPoint& pos, const wxSize& size,
|
const wxPoint& pos, const wxSize& size,
|
||||||
long style);
|
long style);
|
||||||
@@ -85,6 +88,7 @@ public:
|
|||||||
void OnSelChanging(wxTreeEvent& event);
|
void OnSelChanging(wxTreeEvent& event);
|
||||||
void OnTreeKeyDown(wxTreeEvent& event);
|
void OnTreeKeyDown(wxTreeEvent& event);
|
||||||
void OnItemActivated(wxTreeEvent& event);
|
void OnItemActivated(wxTreeEvent& event);
|
||||||
|
void OnItemStateClick(wxTreeEvent& event);
|
||||||
void OnItemRClick(wxTreeEvent& event);
|
void OnItemRClick(wxTreeEvent& event);
|
||||||
|
|
||||||
void OnRMouseDown(wxMouseEvent& event);
|
void OnRMouseDown(wxMouseEvent& event);
|
||||||
@@ -96,6 +100,7 @@ public:
|
|||||||
|
|
||||||
void CreateImageList(int size = 16);
|
void CreateImageList(int size = 16);
|
||||||
void CreateButtonsImageList(int size = 11);
|
void CreateButtonsImageList(int size = 11);
|
||||||
|
void CreateStateImageList(bool del = false);
|
||||||
|
|
||||||
void AddTestItemsToTree(size_t numChildren, size_t depth);
|
void AddTestItemsToTree(size_t numChildren, size_t depth);
|
||||||
|
|
||||||
@@ -104,6 +109,7 @@ public:
|
|||||||
void DoEnsureVisible() { if (m_lastItem.IsOk()) EnsureVisible(m_lastItem); }
|
void DoEnsureVisible() { if (m_lastItem.IsOk()) EnsureVisible(m_lastItem); }
|
||||||
|
|
||||||
void DoToggleIcon(const wxTreeItemId& item);
|
void DoToggleIcon(const wxTreeItemId& item);
|
||||||
|
void DoToggleState(const wxTreeItemId& item);
|
||||||
|
|
||||||
void ShowMenu(wxTreeItemId id, const wxPoint& pt);
|
void ShowMenu(wxTreeItemId id, const wxPoint& pt);
|
||||||
|
|
||||||
@@ -114,6 +120,9 @@ public:
|
|||||||
void SetAlternateImages(bool show) { m_alternateImages = show; }
|
void SetAlternateImages(bool show) { m_alternateImages = show; }
|
||||||
bool AlternateImages() const { return m_alternateImages; }
|
bool AlternateImages() const { return m_alternateImages; }
|
||||||
|
|
||||||
|
void SetAlternateStates(bool show) { m_alternateStates = show; }
|
||||||
|
bool AlternateStates() const { return m_alternateStates; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual int OnCompareItems(const wxTreeItemId& i1, const wxTreeItemId& i2);
|
virtual int OnCompareItems(const wxTreeItemId& i1, const wxTreeItemId& i2);
|
||||||
|
|
||||||
@@ -137,6 +146,7 @@ private:
|
|||||||
wxTreeItemId m_lastItem, // for OnEnsureVisible()
|
wxTreeItemId m_lastItem, // for OnEnsureVisible()
|
||||||
m_draggedItem; // item being dragged right now
|
m_draggedItem; // item being dragged right now
|
||||||
bool m_alternateImages;
|
bool m_alternateImages;
|
||||||
|
bool m_alternateStates;
|
||||||
|
|
||||||
// NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS()
|
// NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS()
|
||||||
// if you want your overloaded OnCompareItems() to be called.
|
// if you want your overloaded OnCompareItems() to be called.
|
||||||
@@ -198,7 +208,9 @@ public:
|
|||||||
void OnRecreate(wxCommandEvent& event);
|
void OnRecreate(wxCommandEvent& event);
|
||||||
void OnToggleButtons(wxCommandEvent& event);
|
void OnToggleButtons(wxCommandEvent& event);
|
||||||
void OnToggleImages(wxCommandEvent& event);
|
void OnToggleImages(wxCommandEvent& event);
|
||||||
|
void OnToggleStates(wxCommandEvent& event);
|
||||||
void OnToggleAlternateImages(wxCommandEvent& event);
|
void OnToggleAlternateImages(wxCommandEvent& event);
|
||||||
|
void OnToggleAlternateStates(wxCommandEvent& event);
|
||||||
void OnSetImageSize(wxCommandEvent& event);
|
void OnSetImageSize(wxCommandEvent& event);
|
||||||
void OnCollapseAndReset(wxCommandEvent& event);
|
void OnCollapseAndReset(wxCommandEvent& event);
|
||||||
|
|
||||||
@@ -224,6 +236,7 @@ public:
|
|||||||
void OnDecSpacing(wxCommandEvent& event);
|
void OnDecSpacing(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnToggleIcon(wxCommandEvent& event);
|
void OnToggleIcon(wxCommandEvent& event);
|
||||||
|
void OnToggleState(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnShowFirstVisible(wxCommandEvent& WXUNUSED(event))
|
void OnShowFirstVisible(wxCommandEvent& WXUNUSED(event))
|
||||||
{ DoShowFirstOrLast(&wxTreeCtrl::GetFirstVisibleItem, "first visible"); }
|
{ DoShowFirstOrLast(&wxTreeCtrl::GetFirstVisibleItem, "first visible"); }
|
||||||
@@ -301,7 +314,9 @@ enum
|
|||||||
TreeTest_DeleteAll,
|
TreeTest_DeleteAll,
|
||||||
TreeTest_Recreate,
|
TreeTest_Recreate,
|
||||||
TreeTest_ToggleImages,
|
TreeTest_ToggleImages,
|
||||||
|
TreeTest_ToggleStates,
|
||||||
TreeTest_ToggleAlternateImages,
|
TreeTest_ToggleAlternateImages,
|
||||||
|
TreeTest_ToggleAlternateStates,
|
||||||
TreeTest_ToggleButtons,
|
TreeTest_ToggleButtons,
|
||||||
TreeTest_SetImageSize,
|
TreeTest_SetImageSize,
|
||||||
TreeTest_ToggleSel,
|
TreeTest_ToggleSel,
|
||||||
@@ -314,6 +329,7 @@ enum
|
|||||||
TreeTest_IncSpacing,
|
TreeTest_IncSpacing,
|
||||||
TreeTest_DecSpacing,
|
TreeTest_DecSpacing,
|
||||||
TreeTest_ToggleIcon,
|
TreeTest_ToggleIcon,
|
||||||
|
TreeTest_ToggleState,
|
||||||
TreeTest_Select,
|
TreeTest_Select,
|
||||||
TreeTest_Unselect,
|
TreeTest_Unselect,
|
||||||
TreeTest_SelectRoot,
|
TreeTest_SelectRoot,
|
||||||
|
@@ -110,13 +110,19 @@ void wxTreeCtrlBase::SetItemState(const wxTreeItemId& item, int state)
|
|||||||
{
|
{
|
||||||
if ( state == wxTREE_ITEMSTATE_NEXT )
|
if ( state == wxTREE_ITEMSTATE_NEXT )
|
||||||
{
|
{
|
||||||
state = GetItemState(item) + 1;
|
int current = GetItemState(item);
|
||||||
|
if ( current == wxTREE_ITEMSTATE_NONE )
|
||||||
|
return;
|
||||||
|
state = current + 1;
|
||||||
if ( m_imageListState && state >= m_imageListState->GetImageCount() )
|
if ( m_imageListState && state >= m_imageListState->GetImageCount() )
|
||||||
state = 0;
|
state = 0;
|
||||||
}
|
}
|
||||||
else if ( state == wxTREE_ITEMSTATE_PREV )
|
else if ( state == wxTREE_ITEMSTATE_PREV )
|
||||||
{
|
{
|
||||||
state = GetItemState(item) - 1;
|
int current = GetItemState(item);
|
||||||
|
if ( current == wxTREE_ITEMSTATE_NONE )
|
||||||
|
return;
|
||||||
|
state = current - 1;
|
||||||
if ( state == -1 )
|
if ( state == -1 )
|
||||||
state = m_imageListState ? m_imageListState->GetImageCount() - 1 : 0;
|
state = m_imageListState ? m_imageListState->GetImageCount() - 1 : 0;
|
||||||
}
|
}
|
||||||
|
@@ -2106,6 +2106,20 @@ void wxGenericTreeCtrl::CalculateLineHeight()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( m_imageListState )
|
||||||
|
{
|
||||||
|
// Calculate a m_lineHeight value from the state Image sizes.
|
||||||
|
// May be toggle off. Then wxGenericTreeCtrl will spread when
|
||||||
|
// necessary (which might look ugly).
|
||||||
|
int n = m_imageListState->GetImageCount();
|
||||||
|
for (int i = 0; i < n ; i++)
|
||||||
|
{
|
||||||
|
int width = 0, height = 0;
|
||||||
|
m_imageListState->GetSize(i, width, height);
|
||||||
|
if (height > m_lineHeight) m_lineHeight = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (m_imageListButtons)
|
if (m_imageListButtons)
|
||||||
{
|
{
|
||||||
// Calculate a m_lineHeight value from the Button image sizes.
|
// Calculate a m_lineHeight value from the Button image sizes.
|
||||||
@@ -2143,6 +2157,11 @@ void wxGenericTreeCtrl::SetStateImageList(wxImageList *imageList)
|
|||||||
if (m_ownsImageListState) delete m_imageListState;
|
if (m_ownsImageListState) delete m_imageListState;
|
||||||
m_imageListState = imageList;
|
m_imageListState = imageList;
|
||||||
m_ownsImageListState = false;
|
m_ownsImageListState = false;
|
||||||
|
m_dirty = true;
|
||||||
|
// Don't do any drawing if we're setting the list to NULL,
|
||||||
|
// since we may be in the process of deleting the tree control.
|
||||||
|
if (imageList)
|
||||||
|
CalculateLineHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxGenericTreeCtrl::SetButtonsImageList(wxImageList *imageList)
|
void wxGenericTreeCtrl::SetButtonsImageList(wxImageList *imageList)
|
||||||
@@ -2355,7 +2374,7 @@ void wxGenericTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
|||||||
{
|
{
|
||||||
dc.SetClippingRegion( item->GetX() + state_w, item->GetY(), image_w, total_h );
|
dc.SetClippingRegion( item->GetX() + state_w, item->GetY(), image_w, total_h );
|
||||||
m_imageListNormal->Draw( image, dc,
|
m_imageListNormal->Draw( image, dc,
|
||||||
item->GetX(),
|
item->GetX() + state_w,
|
||||||
item->GetY() + ((total_h > image_h)?((total_h-image_h)/2):0),
|
item->GetY() + ((total_h > image_h)?((total_h-image_h)/2):0),
|
||||||
wxIMAGELIST_DRAW_TRANSPARENT );
|
wxIMAGELIST_DRAW_TRANSPARENT );
|
||||||
dc.DestroyClippingRegion();
|
dc.DestroyClippingRegion();
|
||||||
|
@@ -2691,6 +2691,43 @@ bool wxTreeCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
|
|||||||
// notify us before painting each item
|
// notify us before painting each item
|
||||||
*result = m_hasAnyAttr ? CDRF_NOTIFYITEMDRAW
|
*result = m_hasAnyAttr ? CDRF_NOTIFYITEMDRAW
|
||||||
: CDRF_DODEFAULT;
|
: CDRF_DODEFAULT;
|
||||||
|
|
||||||
|
// windows in TreeCtrl use one-based index for item state images,
|
||||||
|
// 0 indexed image is not being used, we're using zero-based index,
|
||||||
|
// so we have to add temp image (of zero index) to state image list
|
||||||
|
// before we draw any item, then after items are drawn we have to
|
||||||
|
// delete it (in POSTPAINT notify)
|
||||||
|
if (m_imageListState && m_imageListState->GetImageCount() > 0)
|
||||||
|
{
|
||||||
|
#define hImageList (HIMAGELIST)m_imageListState->GetHIMAGELIST()
|
||||||
|
|
||||||
|
// add temporary image
|
||||||
|
int width, height;
|
||||||
|
m_imageListState->GetSize(0, width, height);
|
||||||
|
|
||||||
|
HBITMAP hbmpTemp = ::CreateBitmap(width, height, 1, 1, NULL);
|
||||||
|
int index = ::ImageList_Add(hImageList, hbmpTemp, hbmpTemp);
|
||||||
|
::DeleteObject(hbmpTemp);
|
||||||
|
|
||||||
|
if ( index != -1 )
|
||||||
|
{
|
||||||
|
// move images to right
|
||||||
|
for ( int i = index; i > 0; i-- )
|
||||||
|
::ImageList_Copy(hImageList, i, hImageList, i-1, 0);
|
||||||
|
|
||||||
|
// we must remove the image in POSTPAINT notify
|
||||||
|
*result |= CDRF_NOTIFYPOSTPAINT;
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef hImageList
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CDDS_POSTPAINT:
|
||||||
|
// we are deleting temp image of 0 index, which was
|
||||||
|
// added before items were drawn (in PREPAINT notify)
|
||||||
|
if (m_imageListState && m_imageListState->GetImageCount() > 0)
|
||||||
|
m_imageListState->Remove(0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CDDS_ITEMPREPAINT:
|
case CDDS_ITEMPREPAINT:
|
||||||
|
Reference in New Issue
Block a user