Hi Dalai! Thanks!
        Ok, so I placed a call to area.tag_redraw() inside the operator so that 
when the operator finishes, it will call tag_redraw(). There is an improvement, 
I don’t have to mouse over the button, but I still need to move the mouse. If I 
leave the mouse still, the button is not re-drawn until I move it. I did use a 
modal operator for this button, does that make a difference? 

Thanks!

James

> On 29 Nov. 2016, at 10:00 pm, [email protected] wrote:
> 
> Send Bf-python mailing list submissions to
>       [email protected]
> 
> To subscribe or unsubscribe via the World Wide Web, visit
>       https://lists.blender.org/mailman/listinfo/bf-python
> or, via email, send a message with subject or body 'help' to
>       [email protected]
> 
> You can reach the person managing the list at
>       [email protected]
> 
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Bf-python digest..."
> 
> 
> Today's Topics:
> 
>   1. Re: Layout.operator - update to draw (Dalai Felinto)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Tue, 29 Nov 2016 11:24:48 +0100
> From: Dalai Felinto <[email protected]>
> Subject: Re: [Bf-python] Layout.operator - update to draw
> To: Blender Foundation Python list <[email protected]>
> Message-ID:
>       <CAGjvzG1Sq+W0gtm=x0jlp26mwhktv7zwsre8exn0eyxh+ps...@mail.gmail.com>
> Content-Type: text/plain; charset=UTF-8
> 
> Hi James,
> 
> The UI is only redraw when really needed. This is important for performance.
> 
> In your case, the correct approach is for you to manually tag the area
> (the panel where your button is) for redraw with:  `area.tag_redraw()`
> 
> If you run an operator from that 'area', you can get the area with 
> context.area.
> 
> A more radical (and not recommended) approach is to force a global
> redraw: bpy.ops.wm.redraw_timer(type='DRAW', iterations=1)
> 
> Cheers,
> Dalai
> --
> blendernetwork.org/dalai-felinto
> www.dalaifelinto.com
> 
> 
> 2016-11-25 2:37 GMT+01:00 James Crowther <[email protected]>:
>> Hi,
>>        I?ve been trying to create a button that begins a task to connect two 
>> blender sessions together on two separate machines, so far I have been able 
>> to get the backend to work, but I would like to change the appearance of the 
>> button to match the state my task is in. Its fairly basic, when the user 
>> presses the button it changes to a pending state, then a connected state if 
>> the connection works, or back to the ready state if the connection fails 
>> (there may also be a report to the console or info section in this case, 
>> separate issue thought).
>> 
>> I use a simple piece of code to do this in a custom panel class
>> 
>> def draw(self, context):
>> 
>>        button_operator = operators[client.status]
>>        button_icon = icons[client.status]
>>        button_text = text[client.status]
>> 
>>        layout.operator( button_operator, button_icon, button_text)
>> 
>> 
>> depending on the value of client.state, a different set of button operator, 
>> icon and text is displays. This kind of works, but the issue I am having is 
>> that the user has to mouse over the button in order to make the icon and 
>> text change. I also suspect this is the same for the operator, but since you 
>> have to mouse over to click the button, i never trigger the wrong operator.
>> 
>> I have been searching for why the button only re-draws on mouseover and not 
>> when the values of button_operator, icon and text change, but I haven?t 
>> found anything to suggest why.
>> 
>> So, I?d like to know, how can I create a button that does redraw when these 
>> properties change? What actually causes the operator to redraw other than a 
>> mouse over? I have experimented with layout.prop, this will change when the 
>> property changes and I don?t have to mouse over it, but I would rather have 
>> a button than a property since the button is used to connect, cancel and 
>> disconnect.
>> 
>> Thanks!
>> 
>> James
>> _______________________________________________
>> Bf-python mailing list
>> [email protected]
>> https://lists.blender.org/mailman/listinfo/bf-python
> 
> 
> ------------------------------
> 
> _______________________________________________
> Bf-python mailing list
> [email protected]
> https://lists.blender.org/mailman/listinfo/bf-python
> 
> 
> End of Bf-python Digest, Vol 138, Issue 7
> *****************************************

_______________________________________________
Bf-python mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-python

Reply via email to