Implement zooming levels, actual view still empty

This commit is contained in:
Marco Pesenti Gritti 2006-08-19 02:00:04 +02:00
parent 24dae31a9d
commit de65daf548
10 changed files with 93 additions and 9 deletions

View File

@ -6,6 +6,7 @@ bin_SCRIPTS = \
sugar-activity-factory \ sugar-activity-factory \
sugar-console \ sugar-console \
sugar-people \ sugar-people \
sugar-zoom \
sugar-presence-service sugar-presence-service
sugardir = $(pkgdatadir)/shell sugardir = $(pkgdatadir)/shell

View File

@ -37,7 +37,20 @@ class ShellDbusService(dbus.service.Object):
def show_console(self): def show_console(self):
gobject.idle_add(self.__show_console_idle) gobject.idle_add(self.__show_console_idle)
@dbus.service.method('com.redhat.Sugar.Shell')
def zoom_in(self):
self._shell.zoom_in()
@dbus.service.method('com.redhat.Sugar.Shell')
def zoom_out(self):
self._shell.zoom_out()
class Shell(gobject.GObject): class Shell(gobject.GObject):
ZOOM_MESH = 0
ZOOM_FRIENDS = 1
ZOOM_HOME = 2
ZOOM_ACTIVITY = 3
__gsignals__ = { __gsignals__ = {
'activity-opened': (gobject.SIGNAL_RUN_FIRST, 'activity-opened': (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE, ([gobject.TYPE_PYOBJECT])), gobject.TYPE_NONE, ([gobject.TYPE_PYOBJECT])),
@ -51,6 +64,7 @@ class Shell(gobject.GObject):
self._screen = wnck.screen_get_default() self._screen = wnck.screen_get_default()
self._registry = registry self._registry = registry
self._hosts = {} self._hosts = {}
self._zoom_level = Shell.ZOOM_HOME
def start(self): def start(self):
session_bus = dbus.SessionBus() session_bus = dbus.SessionBus()
@ -159,3 +173,28 @@ class Shell(gobject.GObject):
def get_chat_controller(self): def get_chat_controller(self):
return self._chat_controller return self._chat_controller
def _set_zoom_level(self, level):
self._zoom_level = level
if level == Shell.ZOOM_ACTIVITY:
self._screen.toggle_showing_desktop(False)
else:
self._screen.toggle_showing_desktop(True)
if level == Shell.ZOOM_HOME:
self._home_window.set_view(HomeWindow.HOME_VIEW)
elif level == Shell.ZOOM_FRIENDS:
self._home_window.set_view(HomeWindow.FRIENDS_VIEW)
elif level == Shell.ZOOM_MESH:
self._home_window.set_view(HomeWindow.MESH_VIEW)
def zoom_in(self):
level = self._zoom_level + 1
if level <= Shell.ZOOM_ACTIVITY:
self._set_zoom_level(level)
def zoom_out(self):
level = self._zoom_level - 1
if level >= Shell.ZOOM_MESH:
self._set_zoom_level(level)

View File

@ -1,8 +1,4 @@
confdir = $(pkgdatadir) confdir = $(pkgdatadir)
conf_DATA = kbdconfig conf_DATA = kbdconfig
imagesdir = $(pkgdatadir) EXTRA_DIST = $(conf_DATA)
images_DATA = \
home-background.png
EXTRA_DIST = $(conf_DATA) $(images_DATA)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

View File

@ -5,7 +5,7 @@
<Alt>n=next <Alt>n=next
<Alt>p=prev <Alt>p=prev
<Alt>c=close <Alt>c=close
f1=desktop f1=!sugar-zoom out
f2=!sugar-people f2=!sugar-zoom in
f3=!sugar-console f3=!sugar-people
f4=!sugar-activity org.sugar.Terminal f4=!sugar-activity org.sugar.Terminal

20
shell/home/FriendsView.py Normal file
View File

@ -0,0 +1,20 @@
import goocanvas
class Model(goocanvas.CanvasModelSimple):
def __init__(self, shell):
goocanvas.CanvasModelSimple.__init__(self)
root = self.get_root_item()
class FriendsView(goocanvas.CanvasView):
def __init__(self, shell):
goocanvas.CanvasView.__init__(self)
self._shell = shell
self.connect("item_view_created", self.__item_view_created_cb)
canvas_model = Model(shell)
self.set_model(canvas_model)
def __item_view_created_cb(self, view, item_view, item):
pass

View File

@ -2,8 +2,13 @@ import gtk
from home.MeshView import MeshView from home.MeshView import MeshView
from home.HomeView import HomeView from home.HomeView import HomeView
from home.FriendsView import FriendsView
class HomeWindow(gtk.Window): class HomeWindow(gtk.Window):
HOME_VIEW = 0
FRIENDS_VIEW = 1
MESH_VIEW = 2
def __init__(self, shell): def __init__(self, shell):
gtk.Window.__init__(self) gtk.Window.__init__(self)
@ -17,6 +22,11 @@ class HomeWindow(gtk.Window):
self._nb.append_page(home_view) self._nb.append_page(home_view)
self._setup_canvas(home_view) self._setup_canvas(home_view)
home_view.show() home_view.show()
friends_view = FriendsView(shell)
self._nb.append_page(friends_view)
self._setup_canvas(friends_view)
friends_view.show()
mesh_view = MeshView(shell) mesh_view = MeshView(shell)
self._setup_canvas(mesh_view) self._setup_canvas(mesh_view)
@ -26,6 +36,9 @@ class HomeWindow(gtk.Window):
self.add(self._nb) self.add(self._nb)
self._nb.show() self._nb.show()
def set_view(self, view):
self._nb.set_current_page(view)
def _setup_canvas(self, canvas): def _setup_canvas(self, canvas):
canvas.set_bounds(0, 0, 1200, 900) canvas.set_bounds(0, 0, 1200, 900)
canvas.set_scale(float(800) / float(1200)) canvas.set_scale(float(800) / float(1200))

View File

@ -1,6 +1,7 @@
sugardir = $(pkgdatadir)/shell sugardir = $(pkgdatadir)/shell
sugar_PYTHON = \ sugar_PYTHON = \
__init__.py \ __init__.py \
FriendsView.py \
MeshView.py \ MeshView.py \
HomeView.py \ HomeView.py \
Window.py HomeWindow.py

14
shell/sugar-zoom Normal file
View File

@ -0,0 +1,14 @@
#!/usr/bin/python
import sys
import dbus
import dbus.glib
bus = dbus.SessionBus()
proxy_obj = bus.get_object('com.redhat.Sugar.Shell', '/com/redhat/Sugar/Shell')
shell = dbus.Interface(proxy_obj, 'com.redhat.Sugar.Shell')
if sys.argv[1] == 'in':
shell.zoom_in()
elif sys.argv[1] == 'out':
shell.zoom_out()