Suspend the mesh view when it's not active so that

we don't keep blinking the icon in the background.
This commit is contained in:
Marco Pesenti Gritti 2007-03-30 01:08:44 +02:00
parent 6c9eb64de3
commit 87f1e9bcc9
4 changed files with 54 additions and 9 deletions

View File

@ -9,7 +9,7 @@
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
@ -24,10 +24,15 @@ from view.home.MeshBox import MeshBox
from view.home.HomeBox import HomeBox
from view.home.FriendsBox import FriendsBox
_HOME_PAGE = 0
_FRIENDS_PAGE = 1
_MESH_PAGE = 2
class HomeWindow(gtk.Window):
def __init__(self, shell):
gtk.Window.__init__(self)
self._shell = shell
self._active = False
self.set_default_size(gtk.gdk.screen_width(),
gtk.gdk.screen_height())
@ -35,6 +40,8 @@ class HomeWindow(gtk.Window):
self.realize()
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DESKTOP)
self.connect("key-release-event", self._key_release_cb)
self.connect('focus-in-event', self._focus_in_cb)
self.connect('focus-out-event', self._focus_out_cb)
self._nb = gtk.Notebook()
self._nb.set_show_border(False)
@ -56,23 +63,39 @@ class HomeWindow(gtk.Window):
canvas.show()
canvas = hippo.Canvas()
box = MeshBox(shell, MenuShell(canvas))
canvas.set_root(box)
self._mesh_box = MeshBox(shell, MenuShell(canvas))
canvas.set_root(self._mesh_box)
self._nb.append_page(canvas)
canvas.show()
def _key_release_cb(self, widget, event):
def _key_release_cb(self, widget, event):
keyname = gtk.gdk.keyval_name(event.keyval)
if keyname == "Alt_L":
self._home_box.release()
def _update_mesh_state(self):
if self._active and self._nb.get_current_page() == _MESH_PAGE:
self._mesh_box.resume()
else:
self._mesh_box.suspend()
def _focus_in_cb(self, widget, event):
self._active = True
self._update_mesh_state()
def _focus_out_cb(self, widget, event):
self._active = False
self._update_mesh_state()
def set_zoom_level(self, level):
if level == sugar.ZOOM_HOME:
self._nb.set_current_page(0)
self._nb.set_current_page(_HOME_PAGE)
elif level == sugar.ZOOM_FRIENDS:
self._nb.set_current_page(1)
self._nb.set_current_page(_FRIENDS_PAGE)
elif level == sugar.ZOOM_MESH:
self._nb.set_current_page(2)
self._nb.set_current_page(_MESH_PAGE)
self._update_mesh_state()
def get_home_box(self):
return self._home_box

View File

@ -204,6 +204,7 @@ class MeshBox(SpreadBox):
self._access_points = {}
self._mesh = None
self._buddy_to_activity = {}
self._suspended = True
for buddy_model in self._model.get_buddies():
self._add_alone_buddy(buddy_model)
@ -329,3 +330,15 @@ class MeshBox(SpreadBox):
icon = self._access_points[ap_model.get_id()]
self.remove_item(icon)
del self._access_points[ap_model.get_id()]
def suspend(self):
if not self._suspended:
self._suspended = True
for ap in self._access_points.values():
ap.props.paused = True
def resume(self):
if self._suspended:
self._suspended = False
for ap in self._access_points.values():
ap.props.paused = False

View File

@ -20,6 +20,8 @@ from sugar.graphics.canvasicon import CanvasIcon
class PulsingIcon(CanvasIcon):
__gproperties__ = {
'paused' : (bool, None, None, False,
gobject.PARAM_READWRITE),
'colors' : (object, None, None,
gobject.PARAM_READWRITE),
'pulse-time' : (float, None, None,
@ -28,6 +30,7 @@ class PulsingIcon(CanvasIcon):
}
def __init__(self, **kwargs):
self._paused = False
self._pulse_time = 0.0
self._colors = None
self._pulse_sid = 0
@ -41,12 +44,18 @@ class PulsingIcon(CanvasIcon):
if pspec.name == 'pulse-time':
self._pulse_time = value
self._stop()
if self._pulse_time > 0.0:
if not self._paused and self._pulse_time > 0.0:
self._start()
elif pspec.name == 'colors':
self._colors = value
self._pos = 0
self._update_colors()
elif pspec.name == 'paused':
self._paused = value
if not self._paused and self._pulse_time > 0.0:
self._start()
else:
self._stop()
def do_get_property(self, pspec):
CanvasIcon.do_get_property(self, pspec)

View File

@ -1,6 +1,6 @@
VERSION=0.63
DATE=`date +%Y%m%d`
RELEASE=2.65
RELEASE=2.67
TARBALL=sugar-$VERSION-$RELEASE.${DATE}git.tar.bz2
rm sugar-$VERSION.tar.bz2