On 3/3/21 5:16 AM, Michael J Gruber wrote:
> Gregory Pittman venit, vidit, dixit 2021-03-02 21:46:38:
>> On 3/2/21 2:09 PM, Jean Ghali wrote:
>>> Le 02/03/2021 à 19:41, Gregory Pittman a écrit :
>>>> Has anyone had any luck using getFirstLinkedFrame() and 
>>>> getNextLinkedFrame()?
>>>>
>>>> I have been trying to write a script that would march down a set of linked 
>>>> frames, so I could analyze the content. getFirstLinkedFrame() seems to 
>>>> work as expected, but not getNextLinkedFrame(). The script spins and spins 
>>>> and spins and won't quit.
>>>> The documentation says that if you do this:
>>>>
>>>> textbox = scribus.getNextLinkedFrame()
>>>>
>>>> it returns None if there are no more, but what "value" is assigned to 
>>>> textbox in that case? I'm trying to stop execution of frame content 
>>>> analysis when it reaches that point.
>>>> I even tried
>>>>
>>>> while (textbox):
>>>>
>>>> thinking that would evaluate to 0 if there were no more, but that doesn't 
>>>> work. Trying to put str(textbox) into a messageBox() doesn't work.
>>>>
>>>> Greg
>>>>
>>>
>>> Here an example which loops across frames of a text chain and print the 
>>> name of each linked frame:
>>>
>>> textbox = scribus.getNextLinkedFrame("Text1")
>>> while textbox is not None:
>>>     print(textbox)
>>>     textbox = scribus.getNextLinkedFrame(textbox)
>>>
>> Great! Thanks, Jean.
>>
>> The thing I didn't understand is the need for getNextLinkedFrame() to have 
>> an object inside the parentheses. Without that, it keeps going back to the 
>> initial frame that I selected before I ran the script.
> 
> "" (empty) means "selected frame", and getNextLinkedFrame("") gives you
> the next frmae linked from the selected frame - without selcting that
> next frame. Thus, repeated calls give the same frame.
> 
> So, this works as expected from the meaning of "" but it's not very
> pythonic - "next" sounds much like the next method of an iterator. You
> can turn it into one using a generator
> 
> def LinkedFrames(frame=None):
>       frame = scribus.getNextLinkedFrame(frame)
>       while frame:
>               yield frame
>               frame = scribus.getNextLinkedFrame(frame)
> 
> and then "for frame in LinkedFrames()" works as expected.
> 

On the other hand, I can understand Jean's syntax, but not yours.

Greg


_______________________________________________
scribus-dev mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-dev

Reply via email to