fixed live object browser

git-svn-id: file:///Users/arjan/backup/gaphor/gaphor/trunk@1360 a8418922-720d-0410-834f-a69b97ada669
This commit is contained in:
Arjan Molenaar 2007-06-11 13:28:01 +00:00
parent 6d8890fac2
commit f739150a27
3 changed files with 48 additions and 52 deletions

View File

@ -1,15 +1,45 @@
# vim:sw=4:et
"""
Plugin based on the Live Object browser
(http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/300304).
It shows the state of the data model at the time the browser is activated.
"""
import gaphor.plugin
from gaphor.core import inject
__version__ = '0.1'
__author__ = 'Arjan Molenaar'
from zope import interface
from gaphor.core import _, inject, action, build_action_group
from gaphor.interfaces import IService, IActionProvider
from browser import Browser
import gaphor
class LiveObjectBrowserAction(gaphor.plugin.Action):
class LiveObjectBrowser(object):
interface.implements(IService, IActionProvider)
element_factory = inject('element_factory')
menu_xml = """
<ui>
<menubar action="mainwindow">
<menu action="tools">
<menuitem action="tools-life-object-browser" />
</menu>
</menubar>
</ui>"""
def __init__(self):
self.action_group = build_action_group(self)
def init(self, app):
pass
def shutdown(self):
pass
@action(name='tools-life-object-browser', label='Life object browser')
def execute(self):
browser = Browser()
browser.construct("resource", element_factory.lselect())
self.window.add_transient_window(browser)
browser = Browser("resource", self.element_factory.lselect())
# vim:sw=4:et

View File

@ -13,48 +13,8 @@ Given an object, this tool throws up a gtk tree widget that maps all the referen
"""
import gtk
from gaphor.ui.abstractwindow import AbstractWindow
class Browser(AbstractWindow):
menu = ('_File', ('FileClose',))
def __init__(self):
AbstractWindow.__init__(self)
def construct(self, name, value):
# we will store the name, the type name, and the repr
columns = [str,str,str]
self.treestore = gtk.TreeStore(*columns)
# the otank tells us what object we put at each node in the tree
self.otank = {} # map path -> (name,value)
self.make( name, value )
self.treeview = gtk.TreeView(self.treestore)
self.treeview.connect("row-expanded", self.row_expanded )
self.tvcolumns = [ gtk.TreeViewColumn() for _type in columns ]
i = 0
for tvcolumn in self.tvcolumns:
self.treeview.append_column(tvcolumn)
cell = gtk.CellRendererText()
tvcolumn.pack_start(cell, True)
tvcolumn.add_attribute(cell, 'text', i)
i = i + 1
scrolled_window = gtk.ScrolledWindow()
scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_IN)
scrolled_window.add(self.treeview)
scrolled_window.set_size_request(512, 320)
scrolled_window.show_all()
self._construct_window(name='console',
title='Gaphor Console',
size=(400, 400),
contents=scrolled_window)
class Browser(object):
def make_row( self, piter, name, value ):
info = repr(value)
@ -108,9 +68,9 @@ class Browser(AbstractWindow):
def delete_event(self, widget, event, data=None):
self.window.destroy()
#gtk.main_quit()
return gtk.FALSE
return False
def original__init__(self, name, value):
def __init__(self, name, value):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_title("Browser")
self.window.set_size_request(512, 320)
@ -136,7 +96,12 @@ class Browser(AbstractWindow):
tvcolumn.add_attribute(cell, 'text', i)
i = i + 1
self.window.add(self.treeview)
scrolled_window = gtk.ScrolledWindow()
scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
scrolled_window.set_shadow_type(gtk.SHADOW_ETCHED_IN)
scrolled_window.add(self.treeview)
self.window.add(scrolled_window)
self.window.show_all()
def dump( name, value ):

View File

@ -131,6 +131,7 @@ setup(
'diagram_layout = gaphor.plugins.diagramlayout:DiagramLayout',
'pynsource = gaphor.plugins.pynsource:PyNSource',
'check_metamodel = gaphor.plugins.checkmetamodel:CheckModelWindow',
'live_object_browser = gaphor.plugins.liveobjectbrowser:LiveObjectBrowser',
],
'gaphor.uicomponents': [
'mainwindow = gaphor.ui.mainwindow:MainWindow',