Display logs depending on the context
This commit is contained in:
parent
ce72600b02
commit
114bad2b55
shell/console
@ -5,28 +5,54 @@ import hippo
|
|||||||
|
|
||||||
from sugar.graphics.roundbox import CanvasRoundBox
|
from sugar.graphics.roundbox import CanvasRoundBox
|
||||||
|
|
||||||
|
from model.shellmodel import ShellModel
|
||||||
|
|
||||||
class Console(gtk.Window):
|
class Console(gtk.Window):
|
||||||
def __init__(self, shell_model):
|
def __init__(self, shell_model):
|
||||||
gtk.Window.__init__(self)
|
gtk.Window.__init__(self)
|
||||||
|
|
||||||
self._shell_model = shell_model
|
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() * 3 / 4,
|
self.set_default_size(gtk.gdk.screen_width() * 5 / 6,
|
||||||
gtk.gdk.screen_height() * 3 / 4)
|
gtk.gdk.screen_height() * 5 / 6)
|
||||||
self.set_decorated(False)
|
self.set_decorated(False)
|
||||||
self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
|
self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
|
||||||
self.connect('realize', self._realize_cb)
|
self.connect('realize', self._realize_cb)
|
||||||
|
|
||||||
canvas = hippo.Canvas()
|
self.canvas = hippo.Canvas()
|
||||||
self.add(canvas)
|
self.add(self.canvas)
|
||||||
canvas.show()
|
self.canvas.show()
|
||||||
|
|
||||||
box = hippo.CanvasBox(padding=20, background_color=0x000000FF)
|
|
||||||
canvas.set_root(box)
|
|
||||||
|
|
||||||
self.registry = Registry()
|
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:
|
for module in self.registry.view_modules:
|
||||||
box.append(module.create_view('shell'), hippo.PACK_EXPAND)
|
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.set_context('home')
|
||||||
|
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.set_context('mesh')
|
||||||
|
|
||||||
def _realize_cb(self, widget):
|
def _realize_cb(self, widget):
|
||||||
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
|
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
|
||||||
@ -35,11 +61,11 @@ class Registry(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.view_modules = []
|
self.view_modules = []
|
||||||
|
|
||||||
base_extensions = [ 'console.logviewer' ]
|
view_modules = [ 'console.logviewer' ]
|
||||||
for extension in base_extensions:
|
for module in view_modules:
|
||||||
self.load_extension(extension)
|
self.load_view_modules(module)
|
||||||
|
|
||||||
def load_extension(self, name):
|
def load_view_modules(self, name):
|
||||||
module = __import__(name)
|
module = __import__(name)
|
||||||
components = name.split('.')
|
components = name.split('.')
|
||||||
for component in components[1:]:
|
for component in components[1:]:
|
||||||
|
@ -77,9 +77,7 @@ class LogView(hippo.CanvasBox):
|
|||||||
def _vadj_changed_cb(self, adj):
|
def _vadj_changed_cb(self, adj):
|
||||||
adj.props.value = adj.upper - adj.page_size
|
adj.props.value = adj.upper - adj.page_size
|
||||||
|
|
||||||
def get_tags():
|
|
||||||
return [ 'log' ]
|
|
||||||
|
|
||||||
def create_view(context):
|
def create_view(context):
|
||||||
path = os.path.join(env.get_profile_path(), 'logs', context + '.log')
|
name = context.replace('activity:', '')
|
||||||
|
path = os.path.join(env.get_profile_path(), 'logs', name + '.log')
|
||||||
return LogView(path)
|
return LogView(path)
|
||||||
|
Loading…
Reference in New Issue
Block a user