This works, I think, and is closer to the documented behaviour, but it is 
not very beautiful.

                def weight_modifier(item: Item, param: str) -> None:
                    wd = {"Thin": QtGui.QFont.Weight.Thin,
                        "ExtraLight": QtGui.QFont.Weight.ExtraLight,
                        "Light": QtGui.QFont.Weight.Light,
                        "Normal": QtGui.QFont.Weight.Normal,
                        "Medium": QtGui.QFont.Weight.Medium,
                        "DemiBold": QtGui.QFont.Weight.DemiBold,
                        "Bold": QtGui.QFont.Weight.Bold,
                        "ExtraBold": QtGui.QFont.Weight.ExtraBold,
                        "Black": QtGui.QFont.Weight.Black
                        }
                    arg = wd.get(param, QtGui.QFont.Weight.Medium)
                    font = item.font(0)
                    font.setWeight(arg)
                    item.setFont(0, font)

                modifier = weight_modifier


On Thursday, October 31, 2024 at 6:00:18 PM UTC jkn wrote:

> Indeed - I started doing this before my initial posting, I just have 
> limited time windows available. Since we seem to agreed that there is 
> something amiss here, I am over my initial question about needing an 
> additional package to install as well as PyQt6, and I can experiment from 
> there.
>
> Thanks for helping to confirm my suspicions...
>
>     J^n
>
>
> On Thursday, October 31, 2024 at 4:57:26 PM UTC [email protected] wrote:
>
>> You will probably want to put some print statements into the 
>> declutter_style() method to see what arguments get passed when you ask 
>> for WEIGHT demibold or whatever. I suspect that nothing you pass in will 
>> give any result except the default 75, but that's where the print 
>> statements may help.  Even the signature of the method contradicts how the 
>> code works. The docstring isn't right, either.  The method probably got 
>> massively revised somewhere in the past and a few things got garbled.  
>>
>> In addition, the line getattr(QtGui.QFont, param,75) queries the QFont 
>> class, not the instance actually being used by the item whose font is 
>> supposed to be changed, and I don't see how that makes sense. 
>>
>> So add some print statements  and see if they can help sort it all out.  
>> I don't feel like spending time figuring out how to set up for decluttering 
>> in a way that will demonstrate a visibly decluttered headline with bold 
>> type.  If I did, print statements would be my starting point.
>>
>> On Thursday, October 31, 2024 at 12:36:00 PM UTC-4 jkn wrote:
>>
>>> indeed. My cheap fix is to patch and set the default to 700, as you have 
>>> done. But what if I want to see an effect line "WEIGHT DemiBold" for some 
>>> declutter patterns?
>>>
>>> On Thursday, October 31, 2024 at 3:26:40 PM UTC [email protected] wrote:
>>>
>>>> I don't see how it can work because any string that goes along with 
>>>> WEIGHT that feed into the function gets discarded, and then you get the 
>>>> default.  But as I said, it's hard to work through to be sure. "75" would 
>>>> give a light to normal weight, depending on the font. 
>>>>
>>>> On Thursday, October 31, 2024 at 10:47:34 AM UTC-4 jkn wrote:
>>>>
>>>>> Yes, this matches my (brief) investigations.
>>>>>
>>>>> But using
>>>>>
>>>>> WEIGHT 700
>>>>>
>>>>> did not work either - I had to use 700 as the default in the getattr() 
>>>>> call, as I wrote a few posts above.
>>>>>
>>>>> i am suspecting that the original code didn't properly work in PyQt5, 
>>>>> and any WEIGHT line would cause the default in the getattr() to be 
>>>>> returned. That used to be 75, but has to be er. 700 for bold in PyQt6.
>>>>>
>>>>> I will try whether WEIGHT 100 does anything (eg. feint, the opposite 
>>>>> of bold) in PyQt5.  suspect not ... in which case there is a small bug 
>>>>> here, I think. I will attempt to fix it.
>>>>>
>>>>> On Thursday, October 31, 2024 at 2:24:38 PM UTC [email protected] 
>>>>> wrote:
>>>>>
>>>>>> I had a quick look at the way it's used, and I find it hard to 
>>>>>> understand.  I can see the intention but the layers of indirection make 
>>>>>> it 
>>>>>> hard. Say the pattern in myLeoSettings is *WEIGHT BOLD*, as you 
>>>>>> wrote. What string gets fed into declutter_style()?   
>>>>>> declutter_style() uses the string in the method call param = 
>>>>>> c.styleSheetManager.expand_css_constants(arg).split()[0].   Every 
>>>>>> string I've given that method returns the same string, or the first word 
>>>>>> of 
>>>>>> it. None of those strings exist of attributes of QFont, so the default 
>>>>>> always comes back, which is 75.
>>>>>>
>>>>>> Anyway, 700 is the value to use for bold, not 75.  It's an integer, 
>>>>>> not a string.
>>>>>>
>>>>>> On Thursday, October 31, 2024 at 9:23:44 AM UTC-4 jkn wrote:
>>>>>>
>>>>>>> it is the getting of the argument, from eg:
>>>>>>>
>>>>>>> # part of declutter-pattern
>>>>>>> WEIGHT 700
>>>>>>> or ?
>>>>>>> WEIGHT Bold     # as per documentation
>>>>>>>
>>>>>>> => "arg = 700"
>>>>>>>
>>>>>>> that is not working, I think.
>>>>>>>
>>>>>>> On Thursday, October 31, 2024 at 1:15:28 PM UTC [email protected] 
>>>>>>> wrote:
>>>>>>>
>>>>>>>> On Thursday, October 31, 2024 at 7:45:05 AM UTC-4 Thomas Passin 
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Either of these work in the sense of executing without producing an 
>>>>>>>> error.  I haven't tried applying the font to see the results:
>>>>>>>>
>>>>>>>> from leo.core.leoQt import QtGui, QtWidgets
>>>>>>>> QFont = QtGui.QFont
>>>>>>>>
>>>>>>>> newfont = QFont('Georgia')
>>>>>>>> newfont.setWeight(QFont.Weight.Bold)
>>>>>>>> # or
>>>>>>>> newfont.setWeight(700)
>>>>>>>>
>>>>>>>>
>>>>>>>> Now I've tried it and yes, I do get bold text.  That detour with arg 
>>>>>>>> = getAttr() isn't needed.
>>>>>>>>  
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wednesday, October 30, 2024 at 2:58:37 PM UTC-4 jkn wrote:
>>>>>>>>
>>>>>>>> ... I see that the values for the Weight enum for QFont.setWeight() 
>>>>>>>> seem to have changed for PyQt6. It is now a scale of 1 to 1000, 
>>>>>>>> instead of 
>>>>>>>> 1 to 99 as previously.
>>>>>>>>
>>>>>>>> https://doc.qt.io/qt-6/qfont.html#Weight-enum
>>>>>>>>
>>>>>>>> Changing this in qt_tree helps:
>>>>>>>>
>>>>>>>> --- a/leo/plugins/qt_tree.py 
>>>>>>>> +++ b/leo/plugins/qt_tree.py 
>>>>>>>> @@ -307,7 +307,7 @@ class LeoQtTree(leoFrame.LeoTree): 
>>>>>>>>             elif cmd == 'WEIGHT': 
>>>>>>>>  
>>>>>>>>                 def weight_modifier(item: Item, param: str) -> 
>>>>>>>> None: 
>>>>>>>> -                    arg = getattr(QtGui.QFont, param, 75) 
>>>>>>>> +                    arg = getattr(QtGui.QFont, param, 700) # WAS 75 
>>>>>>>>                     font = item.font(0) 
>>>>>>>>                     font.setWeight(arg) 
>>>>>>>>                     item.setFont(0, font)
>>>>>>>>
>>>>>>>>

-- 
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 [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/leo-editor/9b726fcf-aaf9-44d3-b13e-5f0373d6ba19n%40googlegroups.com.

Reply via email to