@@ -78,29 +78,38 @@ def figure_edit(axes, parent=None):
78
78
continue
79
79
linedict [label ] = line
80
80
curves = []
81
- linestyles = list (six .iteritems (LINESTYLES ))
82
- drawstyles = list (six .iteritems (DRAWSTYLES ))
83
- markers = list (six .iteritems (MARKERS ))
81
+
82
+ def prepare_data (d , init ):
83
+ """Prepare entry for FormLayout.
84
+ """
85
+ # List items in dict, dropping duplicate values, sorting by values.
86
+ kvs = [(k , v ) for v , k in
87
+ sorted ({v : k for k , v in d .items ()}.items ())]
88
+ # Find the unique kept key with the same value as the init value.
89
+ canonical_init , = ({k for k , v in d .items () if v == d [init ]}.
90
+ intersection (k for k , v in kvs ))
91
+ return [canonical_init ] + kvs
92
+
84
93
curvelabels = sorted (linedict .keys ())
85
94
for label in curvelabels :
86
95
line = linedict [label ]
87
96
color = rgb2hex (colorConverter .to_rgb (line .get_color ()))
88
97
ec = rgb2hex (colorConverter .to_rgb (line .get_markeredgecolor ()))
89
98
fc = rgb2hex (colorConverter .to_rgb (line .get_markerfacecolor ()))
90
- curvedata = [( 'Label' , label ),
91
- sep ,
92
- ( None , '<b>Line</b>' ) ,
93
- ( ' Line Style' , [ line . get_linestyle ()] + linestyles ),
94
- ( 'Draw Style' , [ line .get_drawstyle ()] + drawstyles ),
95
- ( 'Width ' , line .get_linewidth ( )),
96
- ( 'Color ' , color ),
97
- sep ,
98
- ( None , '<b>Marker</b>' ) ,
99
- ( 'Style' , [ line . get_marker ()] + markers ),
100
- ( 'Size ' , line .get_markersize ( )),
101
- ( 'Facecolor ' , fc ),
102
- ( 'Edgecolor ' , ec ),
103
- ]
99
+ curvedata = [
100
+ ( 'Label' , label ) ,
101
+ sep ,
102
+ ( None , '<b> Line</b>' ),
103
+ ( 'Line Style' , prepare_data ( LINESTYLES , line .get_linestyle ()) ),
104
+ ( 'Draw Style ' , prepare_data ( DRAWSTYLES , line .get_drawstyle () )),
105
+ ( 'Width ' , line . get_linewidth () ),
106
+ ( 'Color' , color ) ,
107
+ sep ,
108
+ ( None , '<b>Marker</b>' ),
109
+ ( 'Style ' , prepare_data ( MARKERS , line .get_marker () )),
110
+ ( 'Size ' , line . get_markersize () ),
111
+ ( 'Facecolor ' , fc ),
112
+ ( 'Edgecolor' , ec ) ]
104
113
curves .append ([curvedata , label , "" ])
105
114
106
115
# make sure that there is at least one displayed curve
0 commit comments