Change, the last I mentioned, was commited at r1280

On Tue, Dec 17, 2013 at 3:51 PM, claudio canepa <[email protected]> wrote:

>
>
>
> On Tue, Dec 17, 2013 at 1:09 PM, Qas K <[email protected]> wrote:
>
>> Thanks for you help, that did solve the problem.
>>
>> I looked at the code to see if there was any difference between *value *and
>> *_value*. I don't understand why *value* is a simple wrapper around
>> *_value*; I don't see the reason for the existence of *_value*. Does
>> anyone know why this is the case?
>>
>
> I guess _value , as a list of characters, simplifies the on_key_press
> handler.
> It is an implementation detail.
>
> A second look at the EntryMenuItem code suggest that instead of
>
>     1. Change the_entry_menu_item._value
>     2. call the_entry_menu_item._calculate_value()
>
> it would be more correct to
>
>    1. Change the_entry_menu_item.value
>    2. call the_entry_menu_item._calculate_value()
>
> Here the property .value would care to modify ._value
>
>
>>
>> I have also made a minor alteration to show how to do this in the
>> documentation. I'm unfamiliar with how to submit this as a patch so I'll
>> just post it here:
>>
>
> For small patches like this the easy way is:
>  1. checkout the svn repo
>  2. modify as desired
>  3. from the top dir of your checkout do a
>         svn diff -u >recognizable_name.patch
>  4. attach that file in a mail or an issue.
>
>
>>
>> *cocos/menu.py, line 629:*
>>
>>> class EntryMenuItem(MenuItem):
>>>     """A menu item for entering a value.
>>>
>>>     When selected, ``self.value`` is toggled, the callback function is
>>>     called with ``self.value`` as argument.
>>>
>>>     To alter the value in the callback function, do the following:
>>>     1. Alter _value (which is a list) to what you want, eg.
>>> menu_item._value = list("New")
>>>     2. Call menu_item._calculate_value()"""
>>>
>>
>>
>>
> I'm not sure this will work in the general case: the callback is called
> from _calculate_value, so you risk to enter an endless loop.
>
> To avoid that, we can change to:
> def _calculate_value(self, use_callback=True):
>     ...
>     if use_callback:
>          self.callback_func(self.value)
>
> Then, if you want to change value in the callback, you do and call
> ._update_value with use_callback=False
>
> The docstring then could hint at this usage.
>
> A more clean option would be to move the call to callback to the top:
>
> def _calculate_value( self ):
>      self.callback_func(self.value)
>      new_text = u"%s %s" % (self._label, self.value)
>      self.item.text = new_text
>      self.item_selected.text = new_text
>
> This way is unnecessary to call _calculate_value from the callback.
>
> I would like to commit the later, any one has a use case that will break ?
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"cocos2d discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cocos-discuss.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to