"Moved" the new console work on a branch.
This commit is contained in:
parent
1be27d4b4a
commit
f0afda2e30
@ -1 +0,0 @@
|
|||||||
from console import Console
|
|
@ -1,76 +0,0 @@
|
|||||||
import os
|
|
||||||
|
|
||||||
import gtk
|
|
||||||
import hippo
|
|
||||||
|
|
||||||
from sugar.graphics.roundbox import CanvasRoundBox
|
|
||||||
|
|
||||||
from model.shellmodel import ShellModel
|
|
||||||
|
|
||||||
class Console(gtk.Window):
|
|
||||||
def __init__(self, shell_model):
|
|
||||||
gtk.Window.__init__(self)
|
|
||||||
|
|
||||||
self._shell_model = shell_model
|
|
||||||
self._home_model = shell_model.get_home()
|
|
||||||
self._shell_model.connect('notify::zoom-level',
|
|
||||||
self._zoom_level_changed_cb)
|
|
||||||
self._home_model.connect('active-activity-changed',
|
|
||||||
self._active_activity_changed_cb)
|
|
||||||
|
|
||||||
self.set_default_size(gtk.gdk.screen_width() * 5 / 6,
|
|
||||||
gtk.gdk.screen_height() * 5 / 6)
|
|
||||||
self.set_decorated(False)
|
|
||||||
self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
|
|
||||||
self.connect('realize', self._realize_cb)
|
|
||||||
|
|
||||||
self.canvas = hippo.Canvas()
|
|
||||||
self.add(self.canvas)
|
|
||||||
self.canvas.show()
|
|
||||||
|
|
||||||
self.registry = Registry()
|
|
||||||
self.context = 'shell'
|
|
||||||
self._update_view()
|
|
||||||
|
|
||||||
def _update_view(self):
|
|
||||||
box = hippo.CanvasBox(padding=20, background_color=0x000000FF)
|
|
||||||
self.canvas.set_root(box)
|
|
||||||
|
|
||||||
for module in self.registry.view_modules:
|
|
||||||
box.append(module.create_view(self.context), hippo.PACK_EXPAND)
|
|
||||||
|
|
||||||
def _active_activity_changed_cb(self, home_model, activity):
|
|
||||||
if self._shell_model.get_zoom_level() == ShellModel.ZOOM_HOME:
|
|
||||||
self.context = 'activity:' + activity.get_type()
|
|
||||||
self._update_view()
|
|
||||||
|
|
||||||
def _zoom_level_changed_cb(self, shell_model, pspec):
|
|
||||||
if shell_model.props.zoom_level == ShellModel.ZOOM_HOME:
|
|
||||||
self.context = 'shell'
|
|
||||||
self._update_view()
|
|
||||||
elif shell_model.props.zoom_level == ShellModel.ZOOM_ACTIVITY:
|
|
||||||
activity = self._home_model.get_active_activity()
|
|
||||||
self.context = 'activity:' + activity.get_type()
|
|
||||||
self._update_view()
|
|
||||||
else:
|
|
||||||
self.context = 'mesh'
|
|
||||||
self._update_view()
|
|
||||||
|
|
||||||
def _realize_cb(self, widget):
|
|
||||||
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
|
|
||||||
|
|
||||||
class Registry(object):
|
|
||||||
def __init__(self):
|
|
||||||
self.view_modules = []
|
|
||||||
|
|
||||||
view_modules = [ 'console.logviewer' ]
|
|
||||||
for module in view_modules:
|
|
||||||
self.load_view_modules(module)
|
|
||||||
|
|
||||||
def load_view_modules(self, name):
|
|
||||||
module = __import__(name)
|
|
||||||
components = name.split('.')
|
|
||||||
for component in components[1:]:
|
|
||||||
module = getattr(module, component)
|
|
||||||
|
|
||||||
self.view_modules.append(module)
|
|
@ -1,83 +0,0 @@
|
|||||||
import os
|
|
||||||
|
|
||||||
import gtk
|
|
||||||
import hippo
|
|
||||||
import gnomevfs
|
|
||||||
from louie import dispatcher
|
|
||||||
|
|
||||||
from sugar import env
|
|
||||||
|
|
||||||
class LogEntry(object):
|
|
||||||
def __init__(self, text):
|
|
||||||
self.text = text.strip()
|
|
||||||
|
|
||||||
class LogModel(list):
|
|
||||||
def __init__(self, path):
|
|
||||||
self.path = path
|
|
||||||
self.position = 0
|
|
||||||
|
|
||||||
self.read_lines()
|
|
||||||
gnomevfs.monitor_add('file://' + self.path,
|
|
||||||
gnomevfs.MONITOR_FILE,
|
|
||||||
self._log_file_changed_cb)
|
|
||||||
|
|
||||||
def read_lines(self):
|
|
||||||
log_file = open(self.path, 'r')
|
|
||||||
log_file.seek(self.position)
|
|
||||||
|
|
||||||
for line in log_file.readlines():
|
|
||||||
self.add_line(line)
|
|
||||||
|
|
||||||
self.position = log_file.tell()
|
|
||||||
log_file.close()
|
|
||||||
|
|
||||||
def add_line(self, line):
|
|
||||||
entry = LogEntry(line)
|
|
||||||
self.append(entry)
|
|
||||||
|
|
||||||
dispatcher.send('entry-added', self, entry)
|
|
||||||
|
|
||||||
def _log_file_changed_cb(self, monitor_uri, info_uri, event):
|
|
||||||
if event == gnomevfs.MONITOR_EVENT_CHANGED:
|
|
||||||
self.read_lines()
|
|
||||||
|
|
||||||
class LogView(hippo.CanvasBox):
|
|
||||||
def __init__(self, path):
|
|
||||||
hippo.CanvasBox.__init__(self)
|
|
||||||
|
|
||||||
self.model = LogModel(path)
|
|
||||||
|
|
||||||
scrollbars = hippo.CanvasScrollbars()
|
|
||||||
scrollbars.set_policy(hippo.ORIENTATION_HORIZONTAL,
|
|
||||||
hippo.SCROLLBAR_NEVER)
|
|
||||||
widget = scrollbars.props.widget
|
|
||||||
widget.props.vadjustment.connect('changed', self._vadj_changed_cb)
|
|
||||||
self.append(scrollbars, hippo.PACK_EXPAND)
|
|
||||||
|
|
||||||
self.box = hippo.CanvasBox(spacing=5, background_color=0xFFFFFFFF)
|
|
||||||
scrollbars.set_root(self.box)
|
|
||||||
|
|
||||||
for entry_model in self.model:
|
|
||||||
self.add_entry(entry_model)
|
|
||||||
|
|
||||||
dispatcher.connect(self._entry_added_cb, 'entry-added', self.model)
|
|
||||||
|
|
||||||
def add_entry(self, entry_model):
|
|
||||||
entry_box = hippo.CanvasBox(padding=5)
|
|
||||||
self.box.append(entry_box)
|
|
||||||
|
|
||||||
entry = hippo.CanvasText(text=entry_model.text,
|
|
||||||
xalign=hippo.ALIGNMENT_START,
|
|
||||||
size_mode=hippo.CANVAS_SIZE_WRAP_WORD)
|
|
||||||
entry_box.append(entry)
|
|
||||||
|
|
||||||
def _entry_added_cb(self, entry):
|
|
||||||
self.add_entry(entry)
|
|
||||||
|
|
||||||
def _vadj_changed_cb(self, adj):
|
|
||||||
adj.props.value = adj.upper - adj.page_size
|
|
||||||
|
|
||||||
def create_view(context):
|
|
||||||
name = context.replace('activity:', '')
|
|
||||||
path = os.path.join(env.get_profile_path(), 'logs', name + '.log')
|
|
||||||
return LogView(path)
|
|
@ -36,7 +36,6 @@ from view.frame.frame import Frame
|
|||||||
from view.keyhandler import KeyHandler
|
from view.keyhandler import KeyHandler
|
||||||
from view.home.HomeWindow import HomeWindow
|
from view.home.HomeWindow import HomeWindow
|
||||||
from model.shellmodel import ShellModel
|
from model.shellmodel import ShellModel
|
||||||
from console import Console
|
|
||||||
|
|
||||||
class Shell(gobject.GObject):
|
class Shell(gobject.GObject):
|
||||||
def __init__(self, model):
|
def __init__(self, model):
|
||||||
@ -65,8 +64,6 @@ class Shell(gobject.GObject):
|
|||||||
home_model.connect('pending-activity-changed',
|
home_model.connect('pending-activity-changed',
|
||||||
self._pending_activity_changed_cb)
|
self._pending_activity_changed_cb)
|
||||||
|
|
||||||
self._console = Console(model)
|
|
||||||
|
|
||||||
gobject.idle_add(self._start_journal_idle)
|
gobject.idle_add(self._start_journal_idle)
|
||||||
|
|
||||||
def _start_journal_idle(self):
|
def _start_journal_idle(self):
|
||||||
@ -168,12 +165,6 @@ class Shell(gobject.GObject):
|
|||||||
return host
|
return host
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def toggle_console_visibility(self):
|
|
||||||
if self._console.props.visible:
|
|
||||||
self._console.hide()
|
|
||||||
else:
|
|
||||||
self._console.show()
|
|
||||||
|
|
||||||
def toggle_chat_visibility(self):
|
def toggle_chat_visibility(self):
|
||||||
act = self.get_current_activity()
|
act = self.get_current_activity()
|
||||||
if not act:
|
if not act:
|
||||||
|
@ -25,7 +25,6 @@ import gtk
|
|||||||
from hardware import hardwaremanager
|
from hardware import hardwaremanager
|
||||||
from model.shellmodel import ShellModel
|
from model.shellmodel import ShellModel
|
||||||
from sugar._sugaruiext import KeyGrabber
|
from sugar._sugaruiext import KeyGrabber
|
||||||
import console
|
|
||||||
|
|
||||||
_BRIGHTNESS_STEP = 2
|
_BRIGHTNESS_STEP = 2
|
||||||
_VOLUME_STEP = 10
|
_VOLUME_STEP = 10
|
||||||
@ -48,7 +47,6 @@ _actions_table = {
|
|||||||
'<alt>1' : 'screenshot',
|
'<alt>1' : 'screenshot',
|
||||||
'<alt>equal' : 'console',
|
'<alt>equal' : 'console',
|
||||||
'<alt>0' : 'console',
|
'<alt>0' : 'console',
|
||||||
'<alt>9' : 'new_console',
|
|
||||||
'<alt>f' : 'frame',
|
'<alt>f' : 'frame',
|
||||||
'0x93' : 'frame',
|
'0x93' : 'frame',
|
||||||
'<alt>o' : 'overlay',
|
'<alt>o' : 'overlay',
|
||||||
@ -147,9 +145,6 @@ class KeyHandler(object):
|
|||||||
def handle_console(self):
|
def handle_console(self):
|
||||||
gobject.idle_add(self._toggle_console_visibility_cb)
|
gobject.idle_add(self._toggle_console_visibility_cb)
|
||||||
|
|
||||||
def handle_new_console(self):
|
|
||||||
self._shell.toggle_console_visibility()
|
|
||||||
|
|
||||||
def handle_frame(self):
|
def handle_frame(self):
|
||||||
self._shell.get_frame().notify_key_press()
|
self._shell.get_frame().notify_key_press()
|
||||||
|
|
||||||
@ -222,5 +217,5 @@ class KeyHandler(object):
|
|||||||
bus = dbus.SessionBus()
|
bus = dbus.SessionBus()
|
||||||
proxy = bus.get_object('org.laptop.sugar.Console',
|
proxy = bus.get_object('org.laptop.sugar.Console',
|
||||||
'/org/laptop/sugar/Console')
|
'/org/laptop/sugar/Console')
|
||||||
console_service = dbus.Interface(proxy, 'org.laptop.sugar.Console')
|
console = dbus.Interface(proxy, 'org.laptop.sugar.Console')
|
||||||
console_service.ToggleVisibility()
|
console.ToggleVisibility()
|
||||||
|
Loading…
Reference in New Issue
Block a user