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:
parent
6d8890fac2
commit
f739150a27
@ -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
|
||||
|
@ -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 ):
|
||||
|
1
setup.py
1
setup.py
@ -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',
|
||||
|
Loading…
x
Reference in New Issue
Block a user