On Oct 26, 3:23 pm, "Edward K. Ream" <[email protected]> wrote:
> Glad I asked. Your approach looks much better than what I was
> thinking of. I'll look forward to it.
>
> In the meantime, I need a workaround, so I may do an utter hack in
> setEditorColors, with the understanding that it will soon be replaced.
Done at rev 4665. Actually, it's not a bad fix for the particular
problem.
Here's how it works: code that wants to set a particular part of a
widget's style sheet calls::
g.app.gui.update_style_sheet(w,key,value)
where w is the widget whose stylesheet is to be changed, key is unique
to the method (or group of methods), and value is the new version of
the stylesheet **for the particular key** to be added. Examples::
# In setEditorColors.
sheet = 'background-color: %s; color: %s' % (bg,fg)
g.app.gui.update_style_sheet(obj,'colors',sheet)
# In add_border.
sheet = "border: %spx solid %s" %
(c.focus_border_width,c.focus_border_color)
self.update_style_sheet(w,'border',sheet)
# In remove_border.
sheet = "border: %spx solid white" % (c.focus_border_width)
self.update_style_sheet(w,'border',sheet)
So add_border and remove_border work together because they use the
same 'border' key.
g.app.gui.update_style_sheet is straightforward: it injects a Python
dict called leo_stylesheet_dict into the widget, and computes the
total stylesheet as follows::
# Step one: update the dict.
d = hasattr(w,'leo_styles_dict') and w.leo_styles_dict or {}
d[key] = value
w.leo_styles_dict = d
# Step two: update the stylesheet.
aList = [d.get(key) for key in list(d.keys())]
s = ';'.join(aList)
w.setStyleSheet(s)
That's it. This is plenty good enough until Terry's work is ready.
Terry, feel free to use or ignore this code as you like.
Edward
--
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/leo-editor?hl=en.