*** empty log message ***
git-svn-id: file:///Users/arjan/backup/gaphor/trunk/gaphor@399 a8418922-720d-0410-834f-a69b97ada669
This commit is contained in:
parent
13d2b49fbc
commit
c9ba332367
@ -5,13 +5,15 @@
|
||||
|
||||
import sys
|
||||
import gobject
|
||||
import pango
|
||||
import gtk
|
||||
import gaphor
|
||||
from gaphor.ui.abstractwindow import AbstractWindow
|
||||
from gaphor.plugin import resource
|
||||
|
||||
NAME_COLUMN = 0
|
||||
STATUS_COLUMN = 1
|
||||
PLUGIN_COLUMN = 0
|
||||
NAME_COLUMN = 1
|
||||
STATUS_COLUMN = 2
|
||||
|
||||
class PluginEditorWindow(AbstractWindow):
|
||||
|
||||
@ -21,9 +23,12 @@ class PluginEditorWindow(AbstractWindow):
|
||||
AbstractWindow.__init__(self)
|
||||
|
||||
def construct(self):
|
||||
model = gtk.ListStore(gobject.TYPE_STRING,
|
||||
model = gtk.ListStore(gobject.TYPE_PYOBJECT,
|
||||
gobject.TYPE_STRING,
|
||||
gobject.TYPE_STRING)
|
||||
|
||||
vbox = gtk.VBox()
|
||||
|
||||
treeview = gtk.TreeView(model)
|
||||
treeview.connect('row-activated', self.on_row_activated)
|
||||
selection = treeview.get_selection()
|
||||
@ -34,8 +39,10 @@ class PluginEditorWindow(AbstractWindow):
|
||||
scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
|
||||
scrolled_window.set_shadow_type(gtk.SHADOW_IN)
|
||||
scrolled_window.add(treeview)
|
||||
vbox.pack_start(scrolled_window, expand=True)
|
||||
scrolled_window.show()
|
||||
|
||||
#cell = gtk.CellRendererText()
|
||||
cell = gtk.CellRendererText()
|
||||
column = gtk.TreeViewColumn("Name", cell, text=NAME_COLUMN)
|
||||
treeview.append_column(column)
|
||||
@ -45,13 +52,35 @@ class PluginEditorWindow(AbstractWindow):
|
||||
treeview.append_column(column)
|
||||
treeview.show()
|
||||
|
||||
|
||||
detail = gtk.TextView()
|
||||
detail.set_wrap_mode(gtk.WRAP_WORD)
|
||||
detail.show()
|
||||
|
||||
scrolled_window = gtk.ScrolledWindow()
|
||||
scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
|
||||
scrolled_window.set_shadow_type(gtk.SHADOW_IN)
|
||||
scrolled_window.add(detail)
|
||||
vbox.pack_start(scrolled_window, expand=True)
|
||||
scrolled_window.show()
|
||||
vbox.show()
|
||||
|
||||
self._construct_window(name='plugineditor',
|
||||
title='Plugin editor',
|
||||
size=(400, 400),
|
||||
contents=scrolled_window)
|
||||
contents=vbox)
|
||||
self.model = model
|
||||
self.treeview = treeview
|
||||
self.detail = detail
|
||||
|
||||
# Create some nice tags for the text buffer:
|
||||
buffer = detail.get_buffer()
|
||||
tag = buffer.create_tag('bold')
|
||||
tag.set_property('weight', pango.WEIGHT_BOLD)
|
||||
tag = buffer.create_tag('indent')
|
||||
tag.set_property('font', 'Sans 18')
|
||||
|
||||
treeview.connect_after('cursor_changed', self.on_view_cursor_changed)
|
||||
self.update()
|
||||
|
||||
def update(self):
|
||||
@ -60,10 +89,69 @@ class PluginEditorWindow(AbstractWindow):
|
||||
|
||||
for plugin in manager.get_plugins():
|
||||
iter = model.append()
|
||||
model.set_value(iter, PLUGIN_COLUMN, plugin)
|
||||
model.set_value(iter, NAME_COLUMN, plugin.name)
|
||||
model.set_value(iter, STATUS_COLUMN, plugin.status)
|
||||
|
||||
def update_detail(self, plugin):
|
||||
"""Update the detail section with the plugin data
|
||||
"""
|
||||
buffer = self.detail.get_buffer()
|
||||
start, end = buffer.get_bounds()
|
||||
buffer.delete(start, end)
|
||||
|
||||
iter = buffer.get_iter_at_offset(0)
|
||||
|
||||
buffer.insert(iter, 'Name: ')
|
||||
|
||||
mark = buffer.create_mark('insert_mark', iter)
|
||||
#start = buffer.get_iter_at_offset(0)
|
||||
#buffer.apply_tag_by_name('bold', start, iter)
|
||||
|
||||
buffer.insert(iter, plugin.name)
|
||||
|
||||
start = buffer.get_iter_at_mark(mark)
|
||||
buffer.apply_tag_by_name('bold', start, iter)
|
||||
mark = buffer.create_mark('insert_mark', iter)
|
||||
|
||||
buffer.insert(iter, '\nVersion: ')
|
||||
start = buffer.get_iter_at_mark(mark)
|
||||
buffer.apply_tag_by_name('bold', start, iter)
|
||||
buffer.insert(iter, plugin.version)
|
||||
|
||||
buffer.insert(iter, '\nAuthor: ')
|
||||
buffer.insert(iter, plugin.author)
|
||||
|
||||
buffer.insert(iter, '\nDescription: ')
|
||||
|
||||
start = buffer.get_iter_at_mark(mark)
|
||||
buffer.apply_tag_by_name('bold', start, iter)
|
||||
|
||||
buffer.move_mark(mark, iter)
|
||||
|
||||
for line in plugin.description.split('\n'):
|
||||
buffer.insert(iter, line.strip())
|
||||
start = buffer.get_iter_at_mark(mark)
|
||||
iter = buffer.get_end_iter()
|
||||
buffer.apply_tag_by_name('indent', start, iter)
|
||||
|
||||
buffer.move_mark(mark, iter)
|
||||
buffer.insert(iter, '\nPath: ')
|
||||
buffer.insert(iter, plugin.path)
|
||||
|
||||
buffer.insert(iter, '\nProvided actions: ')
|
||||
buffer.insert(iter, ', '.join(map(getattr, plugin.provided_actions, ['label'] * len(plugin.provided_actions))))
|
||||
|
||||
|
||||
def on_row_activated(self, treeview, row, column):
|
||||
iter = self.model.get_iter(row)
|
||||
name = self.model.get_value(iter, NAME_COLUMN)
|
||||
|
||||
def on_view_cursor_changed(self, view):
|
||||
selection = view.get_selection()
|
||||
model, iter = selection.get_selected()
|
||||
if not iter:
|
||||
return
|
||||
element = model.get_value(iter, PLUGIN_COLUMN)
|
||||
self.update_detail(element)
|
||||
|
||||
|
3
setup.py
3
setup.py
@ -8,7 +8,7 @@
|
||||
|
||||
MAJOR_VERSION = 0
|
||||
MINOR_VERSION = 5
|
||||
MICRO_VERSION = 1
|
||||
MICRO_VERSION = 2
|
||||
|
||||
VERSION = '%d.%d.%d' % ( MAJOR_VERSION, MINOR_VERSION, MICRO_VERSION )
|
||||
|
||||
@ -363,6 +363,7 @@ setup(name='gaphor',
|
||||
data_files=[('', ['data/icons.xml']),
|
||||
('pixmaps', glob('data/pixmaps/*.png')),
|
||||
('plugins/plugineditor', glob('data/plugins/plugineditor/*.*')),
|
||||
('plugins/liveobjectbrowser', glob('data/plugins/liveobjectbrowser/*.*')),
|
||||
('plugins/checkmetamodel', glob('data/plugins/checkmetamodel/*.*'))
|
||||
],
|
||||
scripts=['bin/gaphor'],
|
||||
|
Loading…
x
Reference in New Issue
Block a user