On Thu, 15 Mar 2018 08:31:23 -0700 (PDT)
Chris George <technat...@gmail.com> wrote:

> This may be relevant: 
> https://stackoverflow.com/questions/26121737/qt-stylesheet-background-image-from-filepath
> 
> "Be careful, though, because the path is relative to the CWD 
> <https://en.wikipedia.org/wiki/Current_working_directory> at runtime,
> which the user might change."
> 
> So I would test using pwd, and if CWD does not equal loadDir, set it
> to loadDir. Or, perhaps, just change CWD to loadDir.
> 
> This *might* explain why I was getting the transparent boxes
> sometimes and not at others. 

Not sure if it's relevant anywhere here, but we have also run into
problems with the way Cython uses system libraries to get cwd info.
which may translate /home/tbrown/leo to /mnt/usr1/t/leo etc. whether
you want it to or not.

> Chris
> 
> On Thursday, March 15, 2018 at 6:40:57 AM UTC-7, Edward K. Ream wrote:
> >
> > On Thu, Mar 15, 2018 at 7:45 AM, Edward K. Ream <edre...@gmail.com 
> > <javascript:>> wrote:
> >>
> >> Contrary to your statement in #808, the recommended css is:
> >
> > ​Sorry, I was confused.  In #808 talk about other css.  You say:
> >
> > This is the Leo recommended css to add an image to the background.
> >
> > QTextEdit#richTextEdit {
> >   background-image: url(dark/logo.png);
> > }
> >
> > ... 
> >
> > The following *does *work...
> >
> > QTextEdit#richTextEdit {
> >   background-image:
> > url(/home/chris/leo-editor/leo/themes/dark/logo.png); }
> >
> > ...
> >
> > [This *doesn't* work]
> >
> > QTextEdit#richTextEdit {
> >   background-image: url(~/leo-editor/leo/themes/dark/logo.png);
> > }
> >
> > Ok.  This definitely *is* a teachable moment.
> >
> > We programmers often have to understand the process by which things 
> > happen.  We try to shield users when we can, not always
> > successfully. 
> >
> > Themes are a middle ground.  Theme designers (devs) sometimes can
> > act like users, and sometimes they must know all the grungy details.
> >
> > In this case, the principle is that the *final* stylesheet must
> > have absolute url's everywhere.  That is, Qt is going to look *in
> > one place only* for each piece of data.
> >
> > In *my *case, print-style-sheet shows the following:
> >
> > QTreeView::branch:closed:has-children{
> > image: 
> > url(C:/leo.repo/leo-editor/leo/Icons/nodes-dark/triangles/closed.png);
> > }
> > QTreeView::branch:open:has-children{
> > image:
> > url(C:/leo.repo/leo-editor/leo/Icons/nodes-dark/triangles/open.png); }
> >
> > Which means that (some part of) Leo has resolved:
> >
> > @string tree-image-closed = nodes-dark/triangles/closed.png
> > @string tree-image-open = nodes-dark/triangles/open.png 
> >
> > to full paths.  The question is, which parts (of Leo) convert
> > relative paths to absolute paths?
> > *Basic Skill 1*
> >
> > The relevant code turns out to be ssm.expand_css_constants &
> > helpers. 
> >
> > I could have found this by finding the StyleSheetManager (ssm)
> > class in qt_gui.py. A non-word search on "class style" finds this
> > class.
> >
> > So the first basic skill is knowing the classes that are relevant
> > to the task at hand. For themes, the two classes are the ssm class
> > and the LoadManager (LM) class in leoApp.py.
> >
> > *Basic Skill 2*
> >
> > I'm working on themes at present, so I had clones of most of the
> > relevant code in an organizer node.  I named this node "#766:
> > Create Theme menu, etc."
> >
> > This node was already the last top-level node of the outline, but
> > it could have been near the bottom of *another *organizer node
> > called "Recent code". The recent code organizer hides nodes so I
> > don't get overwhelmed by all the stuff on my plate. 
> >
> > The second basic skill is to keep clones of your recent work, where
> > you can find them easily.
> >
> > *ssm.expand_css_constants *
> >
> > To recap, the theme designer (dev) must ensure that stylesheets
> > contain only absolute urls.
> >
> > The dev could encode those url's directly in the stylesheet, but
> > that would make the stylesheet limited to a particular
> > environment.  So devs will use settings, and the css will include
> > @constants referencing those settings.  Like this:
> >
> > QTreeView::branch:closed:has-children{
> >     image: @tree-image-closed;
> > }
> >
> > In short, ssm.xpand_css_constants replaces those @constant with
> > absolute urls.
> >
> > *A hack that must be generalized*
> >
> > Now we come to one of Leo's best features/conventions:
> >
> >     *A method's children are its helper methods*
> >
> > Indeed, this was the first Aha in Leo's history: webs are outlines
> > in disguise. It was very difficult to see that Knuth's sections
> > were organized (in his mind only!) as an outline.  Leo makes this
> > explicit.
> >
> > This matter a great deal!  I *always* forget implementation
> > details, but the helpers show me where the details lie.
> >
> > In this case, one of ssm.expand_css_constants's children is 
> > ssm.set_indicator_paths. Here is its docstring:
> >
> >     In the stylesheet, replace (if they exist)::
> >         image: @tree-image-closed
> >         image: @tree-image-open
> >     by::
> >         url(path/closed.png)
> >         url(path/open.png)
> >
> >     path can be relative to ~ or to leo/Icons.
> >
> > ...
> >
> > And voila, we see:
> >
> > A. Where absolute urls get created.
> >
> > B. Why only certain paths work.
> >
> > C. How this "hacky" method might/must be extended to handle other 
> > @constants.
> >
> > *Summary*
> >
> > It's much slower to explain all this than to do it. *Processes are
> > easier than descriptions*. 
> >
> > I want you to learn the processes involved, not the details.
> >
> > ssm.set_indicator_paths must look in more places for icons.  One
> > way to reduce the need for herding cats is to create common utility
> > methods.  I'll look into this.
> >
> > Leo's tree-handling code resolves icon boxes completely
> > independently of stylesheets. It may be that this *other* code
> > needs generalization to handle theme.  FYI, the code is
> > qt_gui.getImageImageFinder.  I didn't remember this code, I found
> > it in a recent clone.
> >
> > HTH.
> >
> > Edward

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to leo-editor+unsubscr...@googlegroups.com.
To post to this group, send email to leo-editor@googlegroups.com.
Visit this group at https://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.

Reply via email to