From a757c6040cbff1a48525b8c629a41fd9a73d1270 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Mon, 06 Oct 2008 00:02:27 +0000 Subject: Remove the remaining shell view bits and finally kill it. --- diff --git a/bin/sugar-shell b/bin/sugar-shell index acdfa89..ec1b1cb 100644 --- a/bin/sugar-shell +++ b/bin/sugar-shell @@ -34,7 +34,6 @@ from sugar.profile import get_profile from sugar.datastore import datastore from sugar import env -from jarabe.view import shell from jarabe.shellservice import ShellService from jarabe.intro.window import IntroWindow from jarabe.intro.window import create_profile @@ -47,12 +46,11 @@ from jarabe.view import launcher from jarabe import logsmanager from jarabe import config -def _shell_started_cb(): +def _shell_started_cb(home_window): screen.set_dcon_freeze(0) if os.path.isfile(os.path.expanduser('~/.sugar-update')): - home_box = shell.get_instance().home_window.get_home_box() - home_box.show_software_updates_alert() + home_window.get_home_box().show_software_updates_alert() # Mount the datastore in internal flash ds_path = env.get_profile_path('datastore') @@ -68,8 +66,6 @@ def _shell_started_cb(): journalactivity.start() def main(): - gobject.idle_add(_shell_started_cb) - try: logsmanager.setup() except Exception, e: @@ -100,8 +96,16 @@ def main(): if get_profile().timezone is not None: os.environ['TZ'] = get_profile().timezone - # TODO: move initializations from the Shell constructor to a start() method - shell.get_instance() + from jarabe.frame import frame + frame = frame.get_instance() + + from jarabe.view.keyhandler import KeyHandler + key_handler = KeyHandler(frame) + + from jarabe.desktop.homewindow import HomeWindow + home_window = HomeWindow() + home_window.show() + ShellService() launcher.setup() @@ -116,6 +120,8 @@ def main(): sound.restore() + gobject.idle_add(_shell_started_cb, home_window) + try: gtk.main() except KeyboardInterrupt: diff --git a/src/jarabe/shellservice.py b/src/jarabe/shellservice.py index 3c9fbb4..71e2af6 100644 --- a/src/jarabe/shellservice.py +++ b/src/jarabe/shellservice.py @@ -15,10 +15,11 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """D-bus service providing access to the shell's functionality""" -import dbus import os -from jarabe.view import shell as shellview +import dbus +import gtk + from jarabe.model import shell from jarabe.model import owner @@ -51,7 +52,6 @@ class ShellService(dbus.service.Object): _rainbow = None def __init__(self): - self._shell = shellview.get_instance() self._shell_model = shell.get_model() owner_model = owner.get_model() @@ -69,9 +69,9 @@ class ShellService(dbus.service.Object): @dbus.service.method(_DBUS_SHELL_IFACE, in_signature="s", out_signature="b") def ActivateActivity(self, activity_id): - host = self._shell.get_activity(activity_id) - if host: - host.present() + activity = self._shell_model.get_activity_by_id(activity_id) + if activity: + activity.get_window().activate(gtk.get_current_event_time()) return True return False diff --git a/src/jarabe/view/Makefile.am b/src/jarabe/view/Makefile.am index 6b46af8..4554cf6 100644 --- a/src/jarabe/view/Makefile.am +++ b/src/jarabe/view/Makefile.am @@ -7,5 +7,4 @@ sugar_PYTHON = \ launcher.py \ pulsingicon.py \ tabbinghandler.py \ - palettes.py \ - shell.py + palettes.py diff --git a/src/jarabe/view/keyhandler.py b/src/jarabe/view/keyhandler.py index 925e1c0..b0fade5 100644 --- a/src/jarabe/view/keyhandler.py +++ b/src/jarabe/view/keyhandler.py @@ -34,7 +34,6 @@ from sugar.datastore import datastore from jarabe.model import screen from jarabe.model import sound from jarabe.model import shell -from jarabe.view import shell as shellview from jarabe.view.tabbinghandler import TabbingHandler from jarabe.model.shell import ShellModel @@ -81,7 +80,8 @@ SPEECH_DBUS_PATH = '/org/laptop/Speech' SPEECH_DBUS_INTERFACE = 'org.laptop.Speech' class KeyHandler(object): - def __init__(self): + def __init__(self, frame): + self._frame = frame self._screen_rotation = 0 self._key_pressed = None self._keycode_pressed = 0 @@ -226,7 +226,7 @@ class KeyHandler(object): del jobject def handle_frame(self): - shellview.get_instance().get_frame().notify_key_press() + self._frame.notify_key_press() def handle_rotate(self): """ diff --git a/src/jarabe/view/palettes.py b/src/jarabe/view/palettes.py index cd49cff..a4df092 100644 --- a/src/jarabe/view/palettes.py +++ b/src/jarabe/view/palettes.py @@ -29,8 +29,7 @@ from sugar.graphics.menuitem import MenuItem from sugar.graphics.icon import Icon from sugar.graphics import style from sugar.graphics.xocolor import XoColor - -from jarabe.view import shell +from sugar.activity import activityfactory class BasePalette(Palette): def __init__(self, home_activity): @@ -145,7 +144,7 @@ class ActivityPalette(Palette): self._favorite_icon.props.xo_color = xo_color def __start_activate_cb(self, menu_item): - shell.get_instance().start_activity(self._bundle_id) + activityfactory.create(self._bundle_id) def __change_favorite_activate_cb(self, menu_item): registry = activity.get_registry() diff --git a/src/jarabe/view/shell.py b/src/jarabe/view/shell.py deleted file mode 100644 index 8073b94..0000000 --- a/src/jarabe/view/shell.py +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright (C) 2006-2007 Red Hat, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# 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 - -import logging - -import gobject -import gtk -import wnck - -from jarabe.model import shell - -class Shell(gobject.GObject): - def __init__(self): - gobject.GObject.__init__(self) - - self._model = shell.get_model() - self._screen = wnck.screen_get_default() - self._screen_rotation = 0 - - from jarabe.view.keyhandler import KeyHandler - self._key_handler = KeyHandler() - - from jarabe.frame import frame - self._frame = frame.get_instance() - - from jarabe.desktop.homewindow import HomeWindow - self.home_window = HomeWindow() - self.home_window.show() - - def get_frame(self): - return self._frame - - def set_zoom_level(self, level): - if level == self._model.get_zoom_level(): - logging.debug('Already in the level %r' % level) - return - - if level == shell.ShellModel.ZOOM_ACTIVITY: - active_activity = self._model.get_active_activity() - active_activity.get_window().activate(gtk.get_current_event_time()) - else: - self._model.set_zoom_level(level) - self._screen.toggle_showing_desktop(True) - -_instance = None - -def get_instance(): - global _instance - if not _instance: - _instance = Shell() - return _instance - -- cgit v0.9.1