From cae78d70415923c0deabd518f23dc534f11cfacd Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Mon, 08 Jan 2007 17:06:59 +0000 Subject: Rework the console to use autoactivation, move it in services/ --- diff --git a/.gitignore b/.gitignore index 4f204b6..d9c4635 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,4 @@ lib/src/sugar-marshal.h lib/src/stamp-sugar-marshal.c lib/src/stamp-sugar-marshal.h services/clipboard/org.laptop.Clipboard.service +services/console/org.laptop.sugar.Console.service diff --git a/configure.ac b/configure.ac index 951d6b9..142e1af 100644 --- a/configure.ac +++ b/configure.ac @@ -68,19 +68,19 @@ shell/view/Makefile shell/view/home/Makefile shell/view/frame/Makefile shell/model/Makefile -shell/console/lib/Makefile -shell/console/lib/procmem/Makefile -shell/console/Makefile -shell/console/interface/Makefile -shell/console/interface/xo/Makefile -shell/console/interface/memphis/plugins/clean_size/Makefile -shell/console/interface/memphis/plugins/dirty_size/Makefile -shell/console/interface/memphis/plugins/Makefile -shell/console/interface/memphis/plugins/memphis_init/Makefile -shell/console/interface/memphis/plugins/cpu/Makefile -shell/console/interface/memphis/Makefile -shell/console/interface/logviewer/Makefile -shell/console/interface/terminal/Makefile +services/console/lib/Makefile +services/console/lib/procmem/Makefile +services/console/Makefile +services/console/interface/Makefile +services/console/interface/xo/Makefile +services/console/interface/memphis/plugins/clean_size/Makefile +services/console/interface/memphis/plugins/dirty_size/Makefile +services/console/interface/memphis/plugins/Makefile +services/console/interface/memphis/plugins/memphis_init/Makefile +services/console/interface/memphis/plugins/cpu/Makefile +services/console/interface/memphis/Makefile +services/console/interface/logviewer/Makefile +services/console/interface/terminal/Makefile sugar/Makefile sugar/__installed__.py sugar/activity/Makefile diff --git a/services/Makefile.am b/services/Makefile.am index 9cf9b95..ceb990c 100644 --- a/services/Makefile.am +++ b/services/Makefile.am @@ -1 +1 @@ -SUBDIRS = presence nm clipboard datastore +SUBDIRS = presence nm clipboard datastore console diff --git a/services/console/Makefile.am b/services/console/Makefile.am new file mode 100644 index 0000000..fe6aee0 --- /dev/null +++ b/services/console/Makefile.am @@ -0,0 +1,17 @@ +SUBDIRS = interface lib + +servicedir = $(datadir)/dbus-1/services +service_in_files = org.laptop.sugar.Console.service.in +service_DATA = $(service_in_files:.service.in=.service) + +$(service_DATA): $(service_in_files) Makefile + @sed -e "s|\@bindir\@|$(bindir)|" $< > $@ + +sugardir = $(pkgdatadir)/shell/console +sugar_PYTHON = \ + __init__.py \ + console.py + +bin_SCRIPTS = sugar-console + +DISTCLEANFILES = $(service_DATA) diff --git a/shell/console/__init__.py b/services/console/__init__.py index 8b13789..8b13789 100644 --- a/shell/console/__init__.py +++ b/services/console/__init__.py diff --git a/shell/console/console.py b/services/console/console.py index c05e4bd..1b2a371 100755 --- a/shell/console/console.py +++ b/services/console/console.py @@ -17,6 +17,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import dbus +import dbus.glib import dbus.service import os import sys @@ -26,12 +27,9 @@ import gobject sys.path.append(os.path.dirname(__file__) + '/lib') sys.path.append(os.path.dirname(__file__) + '/interface') -DBUS_BUS = 'org.freedesktop.DBus' -DBUS_PATH = '/org/freedesktop/DBus' - -CONSOLE_BUS = 'org.laptop.Sugar.DeveloperConsole' -CONSOLE_PATH = '/org/laptop/Sugar/DeveloperConsole' -CONSOLE_IFACE = 'org.laptop.Sugar.DeveloperConsole' +CONSOLE_BUS = 'org.laptop.sugar.Console' +CONSOLE_PATH = '/org/laptop/sugar/Console' +CONSOLE_IFACE = 'org.laptop.sugar.Console' class Console: @@ -40,33 +38,16 @@ class Console: # Main Window self.window = gtk.Window() self.window.set_title('Developer console') - self.window.connect("delete-event", self._minimize_main_window) + self.window.connect("delete-event", self._delete_event_cb) self.default_width = gtk.gdk.screen_width() * 95 / 100 self.default_height = gtk.gdk.screen_height() * 95 / 100 - self.default_mini_width = 150 - self.default_mini_height = 30 self.window.set_default_size(self.default_width, self.default_height) self.window.realize() self.window.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) - # Minimize Window - self.mini_fixed = gtk.Fixed() - - # Minimize buttons - button_restore = gtk.Button('Restore') - button_restore.connect("clicked", self._restore_window) - - button_quit = gtk.Button('Quit') - button_quit.connect("clicked", gtk.main_quit) - - mini_hbox = gtk.HBox() - mini_hbox.pack_start(button_restore, True, True, 0) - mini_hbox.pack_start(button_quit, True, True, 0) - self.mini_fixed.add(mini_hbox) - # Notebook self.notebook = gtk.Notebook() @@ -77,52 +58,33 @@ class Console: main_hbox = gtk.HBox() main_hbox.pack_start(self.notebook, True, True, 0) - main_hbox.pack_start(self.mini_fixed, True, True, 0) main_hbox.show() self.notebook.show() self.window.add(main_hbox) - self.window.show() - - self.mini_fixed.hide() - + def _load_interface(self, interface, label): mod = __import__(interface) widget = mod.Interface().widget widget.show() self.notebook.append_page(widget, gtk.Label(label)) - - def _restore_window(self, button): - self.mini_fixed.hide_all() - self.window.resize(self.default_mini_width, self.default_mini_height) - self.notebook.show_all() - - def _minimize_main_window(self, window, gdkevent): - self.notebook.hide_all() - window.resize(self.default_mini_width, self.default_mini_height) - self.mini_fixed.show_all() + def _delete_event_cb(self, window, gdkevent): + window.hide() return True -# We're using a DBUS-Service to avoid open devconsole more than one time -class Init_Service(dbus.service.Object): - +class Service(dbus.service.Object): def __init__(self, bus, object_path=CONSOLE_PATH): dbus.service.Object.__init__(self, bus, object_path) - CS = Console() - -bus = dbus.SessionBus() -obj = bus.get_object(DBUS_BUS, DBUS_PATH) + self._console = Console() + + @dbus.service.method(CONSOLE_IFACE) + def show(self): + self._console.window.present() -dbus_iface = dbus.Interface(obj, DBUS_BUS) -services = dbus_iface.ListNames() +bus = dbus.SessionBus() +name = dbus.service.BusName(CONSOLE_BUS, bus) +obj = Service(name) -# A temporal way to check if the service is running -if not CONSOLE_BUS in services: - name = dbus.service.BusName(CONSOLE_BUS, bus) - obj = Init_Service(name) - gtk.main() -else: - sys.exit(1) - \ No newline at end of file +gtk.main() diff --git a/shell/console/interface/Makefile.am b/services/console/interface/Makefile.am index 2654a4b..2654a4b 100644 --- a/shell/console/interface/Makefile.am +++ b/services/console/interface/Makefile.am diff --git a/shell/console/interface/__init__.py b/services/console/interface/__init__.py index e69de29..e69de29 100644 --- a/shell/console/interface/__init__.py +++ b/services/console/interface/__init__.py diff --git a/shell/console/interface/logviewer/Makefile.am b/services/console/interface/logviewer/Makefile.am index e6a6979..e6a6979 100644 --- a/shell/console/interface/logviewer/Makefile.am +++ b/services/console/interface/logviewer/Makefile.am diff --git a/shell/console/interface/logviewer/__init__.py b/services/console/interface/logviewer/__init__.py index 614ed67..614ed67 100644 --- a/shell/console/interface/logviewer/__init__.py +++ b/services/console/interface/logviewer/__init__.py diff --git a/shell/console/interface/logviewer/logviewer.py b/services/console/interface/logviewer/logviewer.py index 6bd4543..6bd4543 100644 --- a/shell/console/interface/logviewer/logviewer.py +++ b/services/console/interface/logviewer/logviewer.py diff --git a/shell/console/interface/memphis/Makefile.am b/services/console/interface/memphis/Makefile.am index 319dad6..319dad6 100644 --- a/shell/console/interface/memphis/Makefile.am +++ b/services/console/interface/memphis/Makefile.am diff --git a/shell/console/interface/memphis/__init__.py b/services/console/interface/memphis/__init__.py index 145d9d4..145d9d4 100644 --- a/shell/console/interface/memphis/__init__.py +++ b/services/console/interface/memphis/__init__.py diff --git a/shell/console/interface/memphis/memphis.py b/services/console/interface/memphis/memphis.py index 8fbc85b..8fbc85b 100644 --- a/shell/console/interface/memphis/memphis.py +++ b/services/console/interface/memphis/memphis.py diff --git a/shell/console/interface/memphis/plugin.py b/services/console/interface/memphis/plugin.py index 5ee8eb7..5ee8eb7 100644 --- a/shell/console/interface/memphis/plugin.py +++ b/services/console/interface/memphis/plugin.py diff --git a/shell/console/interface/memphis/plugins/Makefile.am b/services/console/interface/memphis/plugins/Makefile.am index 2c6b1dd..2c6b1dd 100644 --- a/shell/console/interface/memphis/plugins/Makefile.am +++ b/services/console/interface/memphis/plugins/Makefile.am diff --git a/shell/console/interface/memphis/plugins/clean_size/Makefile.am b/services/console/interface/memphis/plugins/clean_size/Makefile.am index 33565f5..33565f5 100644 --- a/shell/console/interface/memphis/plugins/clean_size/Makefile.am +++ b/services/console/interface/memphis/plugins/clean_size/Makefile.am diff --git a/shell/console/interface/memphis/plugins/clean_size/README b/services/console/interface/memphis/plugins/clean_size/README index 3dd3ae3..3dd3ae3 100644 --- a/shell/console/interface/memphis/plugins/clean_size/README +++ b/services/console/interface/memphis/plugins/clean_size/README diff --git a/shell/console/interface/memphis/plugins/clean_size/__init__.py b/services/console/interface/memphis/plugins/clean_size/__init__.py index 75ce1d1..75ce1d1 100644 --- a/shell/console/interface/memphis/plugins/clean_size/__init__.py +++ b/services/console/interface/memphis/plugins/clean_size/__init__.py diff --git a/shell/console/interface/memphis/plugins/clean_size/info.py b/services/console/interface/memphis/plugins/clean_size/info.py index 25ed044..25ed044 100644 --- a/shell/console/interface/memphis/plugins/clean_size/info.py +++ b/services/console/interface/memphis/plugins/clean_size/info.py diff --git a/shell/console/interface/memphis/plugins/cpu/Makefile.am b/services/console/interface/memphis/plugins/cpu/Makefile.am index 58e9eab..58e9eab 100644 --- a/shell/console/interface/memphis/plugins/cpu/Makefile.am +++ b/services/console/interface/memphis/plugins/cpu/Makefile.am diff --git a/shell/console/interface/memphis/plugins/cpu/README b/services/console/interface/memphis/plugins/cpu/README index 9c7d6f3..9c7d6f3 100644 --- a/shell/console/interface/memphis/plugins/cpu/README +++ b/services/console/interface/memphis/plugins/cpu/README diff --git a/shell/console/interface/memphis/plugins/cpu/__init__.py b/services/console/interface/memphis/plugins/cpu/__init__.py index e22a413..e22a413 100644 --- a/shell/console/interface/memphis/plugins/cpu/__init__.py +++ b/services/console/interface/memphis/plugins/cpu/__init__.py diff --git a/shell/console/interface/memphis/plugins/cpu/info.py b/services/console/interface/memphis/plugins/cpu/info.py index 9cb1ad4..9cb1ad4 100644 --- a/shell/console/interface/memphis/plugins/cpu/info.py +++ b/services/console/interface/memphis/plugins/cpu/info.py diff --git a/shell/console/interface/memphis/plugins/dirty_size/Makefile.am b/services/console/interface/memphis/plugins/dirty_size/Makefile.am index 47c5298..47c5298 100644 --- a/shell/console/interface/memphis/plugins/dirty_size/Makefile.am +++ b/services/console/interface/memphis/plugins/dirty_size/Makefile.am diff --git a/shell/console/interface/memphis/plugins/dirty_size/README b/services/console/interface/memphis/plugins/dirty_size/README index ee4d1a5..ee4d1a5 100644 --- a/shell/console/interface/memphis/plugins/dirty_size/README +++ b/services/console/interface/memphis/plugins/dirty_size/README diff --git a/shell/console/interface/memphis/plugins/dirty_size/__init__.py b/services/console/interface/memphis/plugins/dirty_size/__init__.py index f8e9e0a..f8e9e0a 100644 --- a/shell/console/interface/memphis/plugins/dirty_size/__init__.py +++ b/services/console/interface/memphis/plugins/dirty_size/__init__.py diff --git a/shell/console/interface/memphis/plugins/dirty_size/info.py b/services/console/interface/memphis/plugins/dirty_size/info.py index 54a2e7e..54a2e7e 100644 --- a/shell/console/interface/memphis/plugins/dirty_size/info.py +++ b/services/console/interface/memphis/plugins/dirty_size/info.py diff --git a/shell/console/interface/memphis/plugins/memphis_init/Makefile.am b/services/console/interface/memphis/plugins/memphis_init/Makefile.am index 53b398a..53b398a 100644 --- a/shell/console/interface/memphis/plugins/memphis_init/Makefile.am +++ b/services/console/interface/memphis/plugins/memphis_init/Makefile.am diff --git a/shell/console/interface/memphis/plugins/memphis_init/README b/services/console/interface/memphis/plugins/memphis_init/README index 9c7d6f3..9c7d6f3 100644 --- a/shell/console/interface/memphis/plugins/memphis_init/README +++ b/services/console/interface/memphis/plugins/memphis_init/README diff --git a/shell/console/interface/memphis/plugins/memphis_init/__init__.py b/services/console/interface/memphis/plugins/memphis_init/__init__.py index f5ada7e..f5ada7e 100644 --- a/shell/console/interface/memphis/plugins/memphis_init/__init__.py +++ b/services/console/interface/memphis/plugins/memphis_init/__init__.py diff --git a/shell/console/interface/memphis/plugins/memphis_init/info.py b/services/console/interface/memphis/plugins/memphis_init/info.py index 6e524c7..6e524c7 100644 --- a/shell/console/interface/memphis/plugins/memphis_init/info.py +++ b/services/console/interface/memphis/plugins/memphis_init/info.py diff --git a/shell/console/interface/terminal/Makefile.am b/services/console/interface/terminal/Makefile.am index 8df4650..8df4650 100644 --- a/shell/console/interface/terminal/Makefile.am +++ b/services/console/interface/terminal/Makefile.am diff --git a/shell/console/interface/terminal/__init__.py b/services/console/interface/terminal/__init__.py index eb78b86..eb78b86 100644 --- a/shell/console/interface/terminal/__init__.py +++ b/services/console/interface/terminal/__init__.py diff --git a/shell/console/interface/terminal/terminal.py b/services/console/interface/terminal/terminal.py index 3621fb2..3621fb2 100644 --- a/shell/console/interface/terminal/terminal.py +++ b/services/console/interface/terminal/terminal.py diff --git a/shell/console/interface/xo/Makefile.am b/services/console/interface/xo/Makefile.am index b2035dd..b2035dd 100644 --- a/shell/console/interface/xo/Makefile.am +++ b/services/console/interface/xo/Makefile.am diff --git a/shell/console/interface/xo/__init__.py b/services/console/interface/xo/__init__.py index 6610a0d..6610a0d 100644 --- a/shell/console/interface/xo/__init__.py +++ b/services/console/interface/xo/__init__.py diff --git a/shell/console/interface/xo/drwarea.py b/services/console/interface/xo/drwarea.py index b0e598a..b0e598a 100644 --- a/shell/console/interface/xo/drwarea.py +++ b/services/console/interface/xo/drwarea.py diff --git a/shell/console/interface/xo/xo.py b/services/console/interface/xo/xo.py index 3a3d668..3a3d668 100644 --- a/shell/console/interface/xo/xo.py +++ b/services/console/interface/xo/xo.py diff --git a/shell/console/lib/Makefile.am b/services/console/lib/Makefile.am index 16782d7..16782d7 100644 --- a/shell/console/lib/Makefile.am +++ b/services/console/lib/Makefile.am diff --git a/shell/console/lib/procmem/Makefile.am b/services/console/lib/procmem/Makefile.am index 257c13f..257c13f 100644 --- a/shell/console/lib/procmem/Makefile.am +++ b/services/console/lib/procmem/Makefile.am diff --git a/shell/console/lib/procmem/__init__.py b/services/console/lib/procmem/__init__.py index e69de29..e69de29 100644 --- a/shell/console/lib/procmem/__init__.py +++ b/services/console/lib/procmem/__init__.py diff --git a/shell/console/lib/procmem/analysis.py b/services/console/lib/procmem/analysis.py index d2a247a..d2a247a 100644 --- a/shell/console/lib/procmem/analysis.py +++ b/services/console/lib/procmem/analysis.py diff --git a/shell/console/lib/procmem/proc.py b/services/console/lib/procmem/proc.py index 729aa13..729aa13 100644 --- a/shell/console/lib/procmem/proc.py +++ b/services/console/lib/procmem/proc.py diff --git a/shell/console/lib/procmem/proc_smaps.py b/services/console/lib/procmem/proc_smaps.py index 9416c52..9416c52 100644 --- a/shell/console/lib/procmem/proc_smaps.py +++ b/services/console/lib/procmem/proc_smaps.py diff --git a/services/console/org.laptop.sugar.Console.service.in b/services/console/org.laptop.sugar.Console.service.in new file mode 100644 index 0000000..90882fe --- /dev/null +++ b/services/console/org.laptop.sugar.Console.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name = org.laptop.Console +Exec = @bindir@/sugar-console + diff --git a/services/console/sugar-console b/services/console/sugar-console new file mode 100755 index 0000000..b971fb4 --- /dev/null +++ b/services/console/sugar-console @@ -0,0 +1,11 @@ +#!/usr/bin/env python + +import pygtk +pygtk.require('2.0') + +import os, sys +from sugar import env + +sys.path.insert(0, os.path.join(env.get_data_dir(), 'services/console')) + +import console diff --git a/shell/Makefile.am b/shell/Makefile.am index 8b1b2c2..550569d 100644 --- a/shell/Makefile.am +++ b/shell/Makefile.am @@ -1,11 +1,9 @@ -SUBDIRS = data model view console +SUBDIRS = data model view bin_SCRIPTS = \ sugar-activity \ sugar-activity-factory \ - sugar-shell \ - sugar-shutdown \ - sugar-devel-console + sugar-shell sugardir = $(pkgdatadir)/shell sugar_PYTHON = \ diff --git a/shell/console/Makefile.am b/shell/console/Makefile.am deleted file mode 100644 index 19c9ce9..0000000 --- a/shell/console/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -SUBDIRS = interface lib - -sugardir = $(pkgdatadir)/shell/console -sugar_PYTHON = \ - __init__.py \ - console.py diff --git a/shell/data/kbdconfig b/shell/data/kbdconfig index b6491db..287de52 100644 --- a/shell/data/kbdconfig +++ b/shell/data/kbdconfig @@ -6,6 +6,4 @@ p=prev c=close -F12=!sugar-devel-console q=!sugar-emulator-shutdown -Escape=!sugar-shutdown diff --git a/shell/sugar-devel-console b/shell/sugar-devel-console deleted file mode 100755 index 707f834..0000000 --- a/shell/sugar-devel-console +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env python - -# Sugar developer console launcher -import pygtk -pygtk.require('2.0') - -import os, sys -from sugar import env - -sys.path.insert(0, os.path.join(env.get_data_dir(), 'shell')) - -import console.console diff --git a/shell/sugar-shutdown b/shell/sugar-shutdown deleted file mode 100755 index e511b3d..0000000 --- a/shell/sugar-shutdown +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -dbus-send --system --print-reply --dest=org.freedesktop.Hal \ -/org/freedesktop/Hal/devices/computer \ -org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown diff --git a/shell/view/Shell.py b/shell/view/Shell.py index 24e62a1..40c5c83 100644 --- a/shell/view/Shell.py +++ b/shell/view/Shell.py @@ -94,6 +94,8 @@ class Shell(gobject.GObject): self._key_grabber.grab('F12') self._key_grabber.grab('F5') self._key_grabber.grab('F8') + self._key_grabber.grab('=') + self._key_grabber.grab('0') self._key_grabber.grab('0xDC') # Camera key self._key_grabber.grab('0xE0') # Overlay key @@ -135,6 +137,8 @@ class Shell(gobject.GObject): self._hw_manager.set_display_mode(HardwareManager.COLOR_MODE) elif key == 'F8': self._hw_manager.set_display_mode(HardwareManager.B_AND_W_MODE) + elif key == '=' or key == '0': + self._show_console() elif key == 'F9': self._frame.notify_key_press() elif key == 'F10': @@ -154,6 +158,13 @@ class Shell(gobject.GObject): box = self._home_window.get_home_box() box.grab_and_rotate() + def _show_console(self): + bus = dbus.SessionBus() + proxy = bus.get_object('org.laptop.sugar.Console', + '/org/laptop/sugar/Console') + mgr = dbus.Interface(proxy, 'org.laptop.sugar.Console') + mgr.show() + def _shutdown(self): bus = dbus.SystemBus() proxy = bus.get_object('org.freedesktop.Hal', diff --git a/sugar-emulator b/sugar-emulator index b8c290c..98ec67f 100755 --- a/sugar-emulator +++ b/sugar-emulator @@ -63,6 +63,11 @@ if sourcedir: util.write_service('org.laptop.sugar.DataStore', bin, env.get_user_service_dir()) + bin = os.path.join(sourcedir, + 'services/console/sugar-console') + util.write_service('org.laptop.sugar.Console', bin, + env.get_user_service_dir()) + from sugar.emulator import Emulator program = 'sugar-shell' -- cgit v0.9.1