What value does param have when the method is called? One of the
dictionary keys, I hope. setFont() won't be in effect if there is already
a stylesheet specifying the value, according to the docs, so let's hope
that's not the case.
You can iterate over the Weight enum:
for w in QFont.Weight:
w_str = f'{repr(w)}'
g.es(w_str)
<Weight.Thin: 100>
<Weight.ExtraLight: 200>
<Weight.Light: 300>
<Weight.Normal: 400>
<Weight.Medium: 500>
<Weight.DemiBold: 600>
<Weight.Bold: 700>
<Weight.ExtraBold: 800>
<Weight.Black: 900>
With a little string manipulation you could build the table without
hardcoding anything. That would probably be better.
On Thursday, October 31, 2024 at 4:33:42 PM UTC-4 jkn wrote:
> 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/a6accf88-08fe-4395-96b6-5b2546d2af78n%40googlegroups.com.