Re: [Sugar-devel] How to have CellRenderer.props take effect, without a UI refresh?

2012-08-06 Thread Ajay Garg
Hi all.

The issue has been solved !! :)

The patch link ::
http://git.sugarlabs.org/dextrose/mainline/commit/381e706de7e7309d27a44ed064794a44d50aad4a


Thanks for everyone's help.


Thanks and Regards,
Ajay


On Wed, Aug 1, 2012 at 1:33 PM, Ajay Garg a...@activitycentral.com wrote:

 Thanks Sascha and Flavio.


 a)
 I modified the code to ::



 
 def __favorite_set_data_cb(self, column, cell, tree_model, tree_iter):
 favorite = tree_model[tree_iter][ListModel.COLUMN_FAVORITE]

 if favorite:
 client = gconf.client_get_default()
 color = XoColor(client.get_string('/desktop/sugar/user/color'))
 cell.props.xo_color = color
 else:
 cell.props.xo_color = None


 VAR.get_property('window').invalidate_rect(VAR.get_allocation(), False)
 VAR.get_property('window').process_updates(True)

 

 where I tried with values of VAR to ::

   *  self
   *  self.tree_view

 However, it made no difference.




 b)
 I modified the code to ::



 
 def __favorite_set_data_cb(self, column, cell, tree_model, tree_iter):
 favorite = tree_model[tree_iter][ListModel.COLUMN_FAVORITE]

 if favorite:
 client = gconf.client_get_default()
 color = XoColor(client.get_string('/desktop/sugar/user/color'))
 cell.props.xo_color = color
 else:
 cell.props.xo_color = None


 VAR.get_property('window').invalidate_rect(VAR.get_allocation(), True)
 VAR.get_property('window').process_updates(True)

 

 where I tried with values of VAR to ::

   *  self
   *  self.tree_view

 However, it caused an infinite recursive loop, and the journal never
 loaded.




 c)
 I modified the code to ::



 
 def __favorite_set_data_cb(self, column, cell, tree_model, tree_iter):
 favorite = tree_model[tree_iter][ListModel.COLUMN_FAVORITE]

 if favorite:
 client = gconf.client_get_default()
 color = XoColor(client.get_string('/desktop/sugar/user/color'))
 cell.props.xo_color = color
 else:
 cell.props.xo_color = None


 VAR.get_property('window').invalidate_rect(VAR.get_allocation(), False)
 VAR.get_property('window').process_updates(True)

 

 where I tried with values of VAR to ::

   *  column
   *  cell

 However, it caused the following traceback ::

 Traceback (most recent call last):
   File
 /home/ajay/sugar-jhbuild-dx3/install/lib/python2.7/site-packages/jarabe/journal/listview.py,
 line 329, in __favorite_set_data_cb
 column.get_property('window').invalidate_rect(column.get_allocation(),
 False)
 TypeError: object of type `GtkTreeViewColumn' does not have property
 `window'




 d)
 I modified the code to ::



 
 def __favorite_set_data_cb(self, column, cell, tree_model, tree_iter):
 favorite = tree_model[tree_iter][ListModel.COLUMN_FAVORITE]

 if favorite:
 client = gconf.client_get_default()
 color = XoColor(client.get_string('/desktop/sugar/user/color'))
 cell.props.xo_color = color
 else:
 cell.props.xo_color = None


 VAR.get_property('window').invalidate_rect(VAR.get_allocation(), True)
 VAR.get_property('window').process_updates(True)

 

 where I tried with values of VAR to ::

   *  column
   *  cell

 Same as before - it caused the following traceback ::

 Traceback (most recent call last):
   File
 /home/ajay/sugar-jhbuild-dx3/install/lib/python2.7/site-packages/jarabe/journal/listview.py,
 line 329, in __favorite_set_data_cb
 column.get_property('window').invalidate_rect(column.get_allocation(),
 False)
 TypeError: object of type `GtkTreeViewColumn' does not have property
 `window'



 :-\



 Regards,
 Ajay





 On Tue, Jul 31, 2012 at 7:07 AM, Flavio Danesse fdane...@gmail.comwrote:

 self.get_property('window').invalidate_rect(self.get_allocation(), True)
 self.get_property('window').process_updates(True)




 2012/7/30 Sascha Silbe si...@activitycentral.com

  Ajay Garg a...@activitycentral.com writes:

  [adding short-circuit logic to
  

Re: [Sugar-devel] How to have CellRenderer.props take effect, without a UI refresh?

2012-08-01 Thread Ajay Garg
Thanks Sascha and Flavio.


a)
I modified the code to ::


def __favorite_set_data_cb(self, column, cell, tree_model, tree_iter):
favorite = tree_model[tree_iter][ListModel.COLUMN_FAVORITE]

if favorite:
client = gconf.client_get_default()
color = XoColor(client.get_string('/desktop/sugar/user/color'))
cell.props.xo_color = color
else:
cell.props.xo_color = None


VAR.get_property('window').invalidate_rect(VAR.get_allocation(), False)
VAR.get_property('window').process_updates(True)


where I tried with values of VAR to ::

  *  self
  *  self.tree_view

However, it made no difference.




b)
I modified the code to ::


def __favorite_set_data_cb(self, column, cell, tree_model, tree_iter):
favorite = tree_model[tree_iter][ListModel.COLUMN_FAVORITE]

if favorite:
client = gconf.client_get_default()
color = XoColor(client.get_string('/desktop/sugar/user/color'))
cell.props.xo_color = color
else:
cell.props.xo_color = None


VAR.get_property('window').invalidate_rect(VAR.get_allocation(), True)
VAR.get_property('window').process_updates(True)


where I tried with values of VAR to ::

  *  self
  *  self.tree_view

However, it caused an infinite recursive loop, and the journal never loaded.




c)
I modified the code to ::


def __favorite_set_data_cb(self, column, cell, tree_model, tree_iter):
favorite = tree_model[tree_iter][ListModel.COLUMN_FAVORITE]

if favorite:
client = gconf.client_get_default()
color = XoColor(client.get_string('/desktop/sugar/user/color'))
cell.props.xo_color = color
else:
cell.props.xo_color = None


VAR.get_property('window').invalidate_rect(VAR.get_allocation(), False)
VAR.get_property('window').process_updates(True)


where I tried with values of VAR to ::

  *  column
  *  cell

However, it caused the following traceback ::

Traceback (most recent call last):
  File
/home/ajay/sugar-jhbuild-dx3/install/lib/python2.7/site-packages/jarabe/journal/listview.py,
line 329, in __favorite_set_data_cb
column.get_property('window').invalidate_rect(column.get_allocation(),
False)
TypeError: object of type `GtkTreeViewColumn' does not have property
`window'




d)
I modified the code to ::


def __favorite_set_data_cb(self, column, cell, tree_model, tree_iter):
favorite = tree_model[tree_iter][ListModel.COLUMN_FAVORITE]

if favorite:
client = gconf.client_get_default()
color = XoColor(client.get_string('/desktop/sugar/user/color'))
cell.props.xo_color = color
else:
cell.props.xo_color = None


VAR.get_property('window').invalidate_rect(VAR.get_allocation(), True)
VAR.get_property('window').process_updates(True)


where I tried with values of VAR to ::

  *  column
  *  cell

Same as before - it caused the following traceback ::

Traceback (most recent call last):
  File
/home/ajay/sugar-jhbuild-dx3/install/lib/python2.7/site-packages/jarabe/journal/listview.py,
line 329, in __favorite_set_data_cb
column.get_property('window').invalidate_rect(column.get_allocation(),
False)
TypeError: object of type `GtkTreeViewColumn' does not have property
`window'



:-\



Regards,
Ajay




On Tue, Jul 31, 2012 at 7:07 AM, Flavio Danesse fdane...@gmail.com wrote:

 self.get_property('window').invalidate_rect(self.get_allocation(), True)
 self.get_property('window').process_updates(True)




 2012/7/30 Sascha Silbe si...@activitycentral.com

 Ajay Garg a...@activitycentral.com writes:

  [adding short-circuit logic to
  jarabe.journal.listview.BaseListView.refresh()]
 [...]
  What we should do is enhancing the logic to
 
  a) just redraw instead of querying the back-end again for changes we
 triggered ourselves and / or
  b) update our model based on the change notifications rather than
 throwing away our state.
 
 
  Well, that's exactly what I did, via the patch
 
 

Re: [Sugar-devel] How to have CellRenderer.props take effect, without a UI refresh?

2012-07-30 Thread Sascha Silbe
Ajay Garg a...@activitycentral.com writes:

 [adding short-circuit logic to
 jarabe.journal.listview.BaseListView.refresh()]
[...]
 What we should do is enhancing the logic to

 a) just redraw instead of querying the back-end again for changes we
triggered ourselves and / or
 b) update our model based on the change notifications rather than
throwing away our state.


 Well, that's exactly what I did, via the patch
 http://git.sugarlabs.org/dextrose/mainline/commit/ad3897946e013f1ff4020aeab35375ccb122758b

Not really AFAICT. You're still inhibiting the refresh completely,
without doing a redraw. You're also doing a gratuitous data store query
for each favourite star. I'm expecting that to have considerable impact
on performance.


 I guess, if we could somehow cause the mouse to PROGRAMMATICALLY
 hover-away/disappear-momentarily when the star/favorite-icon is clicked, we
 could be done.
 However, I am not able to find a way to do this via pygtk.

Fortunately. :-P

As discussed on IRC, the way to _trigger_ _a_ _redraw_ (not: move the
pointer) is something like this:

x_, y_, width, height = self.allocation
area = (0, 0, width, height)
self.window.invalidate_rect(area, False)


Sascha
-- 
http://sascha.silbe.org/
http://www.infra-silbe.de/


pgpkGEtFdwIpJ.pgp
Description: PGP signature
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] How to have CellRenderer.props take effect, without a UI refresh?

2012-07-30 Thread Flavio Danesse
self.get_property('window').invalidate_rect(self.get_allocation(), True)
self.get_property('window').process_updates(True)




2012/7/30 Sascha Silbe si...@activitycentral.com

 Ajay Garg a...@activitycentral.com writes:

  [adding short-circuit logic to
  jarabe.journal.listview.BaseListView.refresh()]
 [...]
  What we should do is enhancing the logic to
 
  a) just redraw instead of querying the back-end again for changes we
 triggered ourselves and / or
  b) update our model based on the change notifications rather than
 throwing away our state.
 
 
  Well, that's exactly what I did, via the patch
 
 http://git.sugarlabs.org/dextrose/mainline/commit/ad3897946e013f1ff4020aeab35375ccb122758b

 Not really AFAICT. You're still inhibiting the refresh completely,
 without doing a redraw. You're also doing a gratuitous data store query
 for each favourite star. I'm expecting that to have considerable impact
 on performance.


  I guess, if we could somehow cause the mouse to PROGRAMMATICALLY
  hover-away/disappear-momentarily when the star/favorite-icon is clicked,
 we
  could be done.
  However, I am not able to find a way to do this via pygtk.

 Fortunately. :-P

 As discussed on IRC, the way to _trigger_ _a_ _redraw_ (not: move the
 pointer) is something like this:

 x_, y_, width, height = self.allocation
 area = (0, 0, width, height)
 self.window.invalidate_rect(area, False)


 Sascha
 --
 http://sascha.silbe.org/
 http://www.infra-silbe.de/

 ___
 Sugar-devel mailing list
 Sugar-devel@lists.sugarlabs.org
 http://lists.sugarlabs.org/listinfo/sugar-devel


___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] How to have CellRenderer.props take effect, without a UI refresh?

2012-07-25 Thread Frederick Grose
On Wed, Jul 25, 2012 at 1:48 AM, Ajay Garg a...@activitycentral.com wrote:



 On Tue, Jul 24, 2012 at 7:12 PM, Sascha Silbe 
 si...@activitycentral.comwrote:

 Ajay Garg a...@activitycentral.com writes:

 [toggling favourite star causes a listview-refresh]



 {...}



 ...the favorite-status IS updated by clicking the star/favorite-icon
 (without needing the refresh).


 However, this causes our original issue: the favorite-status is updated
 (graphically), only when the mouse is hovered away from the
 star/favorite-icon.


The interaction design for the changing the favorite status might be
changed as noted in this bug report:
http://bugs.sugarlabs.org/ticket/3147#comment:3

  --Fred



 I guess, if we could somehow cause the mouse to PROGRAMMATICALLY
 hover-away/disappear-momentarily when the star/favorite-icon is clicked, we
 could be done.
 However, I am not able to find a way to do this via pygtk.


 Regards,
 Ajay

___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] How to have CellRenderer.props take effect, without a UI refresh?

2012-07-25 Thread Ajay Garg
Thanks Frederick for the reply.

On Wed, Jul 25, 2012 at 11:33 AM, Frederick Grose fgr...@gmail.com wrote:

 On Wed, Jul 25, 2012 at 1:48 AM, Ajay Garg a...@activitycentral.comwrote:



 On Tue, Jul 24, 2012 at 7:12 PM, Sascha Silbe 
 si...@activitycentral.comwrote:

 Ajay Garg a...@activitycentral.com writes:

 [toggling favourite star causes a listview-refresh]



 {...}



 ...the favorite-status IS updated by clicking the star/favorite-icon
 (without needing the refresh).


 However, this causes our original issue: the favorite-status is updated
 (graphically), only when the mouse is hovered away from the
 star/favorite-icon.


 The interaction design for the changing the favorite status might be
 changed as noted in this bug report:
 http://bugs.sugarlabs.org/ticket/3147#comment:3



Fred, this ticket tackles a different design-discussion (what should the
prelit-color be).
However, mine query is a different one :)


Thanks anyways for the interest. I am obliged.


Thanks and Regards,
Ajay



   --Fred



 I guess, if we could somehow cause the mouse to PROGRAMMATICALLY
 hover-away/disappear-momentarily when the star/favorite-icon is clicked, we
 could be done.
 However, I am not able to find a way to do this via pygtk.


 Regards,
 Ajay


 ___
 Sugar-devel mailing list
 Sugar-devel@lists.sugarlabs.org
 http://lists.sugarlabs.org/listinfo/sugar-devel


___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] How to have CellRenderer.props take effect, without a UI refresh?

2012-07-25 Thread Ajay Garg
Anyways, posted the query at pygtk mailing-list ::
http://www.daa.com.au/pipermail/pygtk/2012-July/020425.html


Regards,
Ajay



On Wed, Jul 25, 2012 at 11:38 AM, Ajay Garg a...@activitycentral.comwrote:

 Thanks Frederick for the reply.

 On Wed, Jul 25, 2012 at 11:33 AM, Frederick Grose fgr...@gmail.comwrote:

 On Wed, Jul 25, 2012 at 1:48 AM, Ajay Garg a...@activitycentral.comwrote:



 On Tue, Jul 24, 2012 at 7:12 PM, Sascha Silbe si...@activitycentral.com
  wrote:

 Ajay Garg a...@activitycentral.com writes:

 [toggling favourite star causes a listview-refresh]



  {...}



 ...the favorite-status IS updated by clicking the star/favorite-icon
 (without needing the refresh).


 However, this causes our original issue: the favorite-status is updated
 (graphically), only when the mouse is hovered away from the
 star/favorite-icon.


 The interaction design for the changing the favorite status might be
 changed as noted in this bug report:
 http://bugs.sugarlabs.org/ticket/3147#comment:3



 Fred, this ticket tackles a different design-discussion (what should the
 prelit-color be).
 However, mine query is a different one :)


 Thanks anyways for the interest. I am obliged.


 Thanks and Regards,
 Ajay



   --Fred



 I guess, if we could somehow cause the mouse to PROGRAMMATICALLY
 hover-away/disappear-momentarily when the star/favorite-icon is clicked, we
 could be done.
 However, I am not able to find a way to do this via pygtk.


 Regards,
 Ajay


 ___
 Sugar-devel mailing list
 Sugar-devel@lists.sugarlabs.org
 http://lists.sugarlabs.org/listinfo/sugar-devel



___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


[Sugar-devel] How to have CellRenderer.props take effect, without a UI refresh?

2012-07-24 Thread Ajay Garg
Hi all.

I have been investigating the following piece of code, from
src/jarabe/journal/listview.py ::


def __favorite_set_data_cb(self, column, cell, tree_model, tree_iter):
favorite = tree_model[tree_iter][ListModel.COLUMN_FAVORITE]

if favorite:
client = gconf.client_get_default()
color = XoColor(client.get_string('/desktop/sugar/user/color'))
cell.props.xo_color = color
else:
cell.props.xo_color = None




This piece of code works as expected, and the toggling-UI-effect takes
place as soon as the star/favorite-icon is clicked (that is, the
mouse-pointer need not be hovered away).
But note that, there is listview-refresh involved after each toggling of
the star/favorite-icon.

If the listview-refresh is inhibited, the toggling-UI-effect does take
place, but ONLY AFTER the mouse-pointer is hovered away from the
star/favorite-icon.
This becomes all the more important, since the listview-refresh is
inhibited in multi-select mode (as part of the feature being
proposed/discussed at
http://lists.sugarlabs.org/archive/sugar-devel/2012-July/038558.html).

The same observations stand true, for the checkbox icon (as part of
multi-select feature).


So,

*  Is it feasible to have the toggling-UI-effect takes place, without
the need for hovering the mouse-pointer away from the star/favorite-icon,
when listview-refresh is inhibited?*



I will be grateful for any ideas.



Thanks and Regards,
Ajay
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] How to have CellRenderer.props take effect, without a UI refresh?

2012-07-24 Thread Sascha Silbe
Ajay Garg a...@activitycentral.com writes:

 This piece of code works as expected, and the toggling-UI-effect takes
 place as soon as the star/favorite-icon is clicked (that is, the
 mouse-pointer need not be hovered away).
 But note that, there is listview-refresh involved after each toggling of
 the star/favorite-icon.

What exactly do you mean by listview-refresh? Do you mean a) a redraw
of the current content or b) some operation that causes us to query the
data store (or file system)?


 If the listview-refresh is inhibited, the toggling-UI-effect does take
 place, but ONLY AFTER the mouse-pointer is hovered away from the
 star/favorite-icon.

What exactly do you mean by listview-refresh is inhibited? How did you
inhibit it?

Sascha
-- 
http://sascha.silbe.org/
http://www.infra-silbe.de/


pgpwipKY9Pam9.pgp
Description: PGP signature
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] How to have CellRenderer.props take effect, without a UI refresh?

2012-07-24 Thread Ajay Garg
Sir,
Regards.


Thanks for the reply.


On Tue, Jul 24, 2012 at 6:36 PM, Sascha Silbe si...@activitycentral.comwrote:

 Ajay Garg a...@activitycentral.com writes:

  This piece of code works as expected, and the toggling-UI-effect takes
  place as soon as the star/favorite-icon is clicked (that is, the
  mouse-pointer need not be hovered away).
  But note that, there is listview-refresh involved after each toggling of
  the star/favorite-icon.

 What exactly do you mean by listview-refresh? Do you mean a) a redraw
 of the current content or b) some operation that causes us to query the
 data store (or file system)?



By refresh, I mean to say that the data store is re-queried.




More clearly, I changed the code (in src/jarabe/journal/listview) from ::

##
def refresh(self):
logging.debug('ListView.refresh query %r', self._query)
self._stop_progress_bar()

if self._model is not None:
self._model.stop()
self._dirty = False

self._model = ListModel(self._query)
self._model.connect('ready', self.__model_ready_cb)
self._model.connect('progress', self.__model_progress_cb)
self._model.setup()
##



TO





##
def refresh(self):
if not self._inhibit_refresh:
self.proceed_with_refresh()

def proceed_with_refresh(self):
logging.debug('ListView.refresh query %r', self._query)
self._stop_progress_bar()

if self._model is not None:
self._model.stop()
self._dirty = False

self._model = ListModel(self._query)
self._model.connect('ready', self.__model_ready_cb)
self._model.connect('progress', self.__model_progress_cb)
self._model.setup()
##


where self._inhibit_refresh = False, in multi-select mode.



Regards,
Ajay





  If the listview-refresh is inhibited, the toggling-UI-effect does take
  place, but ONLY AFTER the mouse-pointer is hovered away from the
  star/favorite-icon.

 What exactly do you mean by listview-refresh is inhibited? How did you
 inhibit it?

 Sascha
 --
 http://sascha.silbe.org/
 http://www.infra-silbe.de/

___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel


Re: [Sugar-devel] How to have CellRenderer.props take effect, without a UI refresh?

2012-07-24 Thread Sascha Silbe
Ajay Garg a...@activitycentral.com writes:

[toggling favourite star causes a listview-refresh]
 What exactly do you mean by listview-refresh? Do you mean a) a redraw
 of the current content or b) some operation that causes us to query the
 data store (or file system)?

 By refresh, I mean to say that the data store is re-queried.

OK. We should try to avoid that; see below.


 More clearly, I changed the code (in src/jarabe/journal/listview) from ::
[adding short-circuit logic to jarabe.journal.listview.BaseListView.refresh()]

Well, if you inhibit our current way of refreshing the view, it's kind
of expected that it doesn't work anymore. ;)

What we should do is enhancing the logic to

a) just redraw instead of querying the back-end again for changes we
   triggered ourselves and / or
b) update our model based on the change notifications rather than
   throwing away our state.

Sascha
-- 
http://sascha.silbe.org/
http://www.infra-silbe.de/


pgpHNxELo7S95.pgp
Description: PGP signature
___
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel