Changeset 1260
- Timestamp:
- 05/08/07 03:24:46 (2 years ago)
- Files:
-
- gaphor/trunk/gaphor/services/guimanager.py (modified) (3 diffs)
- gaphor/trunk/gaphor/ui/consolewindow.py (modified) (4 diffs)
- gaphor/trunk/gaphor/ui/interfaces.py (modified) (1 diff)
- gaphor/trunk/gaphor/ui/tests/test_consolewindow.py (modified) (1 diff)
- gaphor/trunk/setup.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gaphor/trunk/gaphor/services/guimanager.py
r1244 r1260 2 2 """ 3 3 4 import pkg_resources 4 5 from zope import interface 5 6 from gaphor.interfaces import IService … … 19 20 20 21 #self.init_pygtk() 22 self.init_ui_manager() 21 23 self.init_stock_icons() 22 24 self.init_actions() 25 self.init_ui_components() 23 26 self.init_main_window() 24 27 … … 31 34 del pygtk 32 35 36 def init_ui_manager(self): 37 import gtk 38 self.ui_manager = gtk.UIManager() 39 33 40 def init_stock_icons(self): 34 41 # Load stock items 35 42 import gaphor.ui.stock 36 43 gaphor.ui.stock.load_stock_icons() 44 45 def init_ui_components(self): 46 from gaphor.ui.interfaces import IUIComponent 47 for ep in pkg_resources.iter_entry_points('gaphor.uicomponents'): 48 log.debug('found entry point uicomponent.%s' % ep.name) 49 cls = ep.load() 50 if not IUIComponent.implementedBy(cls): 51 raise 'MisConfigurationException', 'Entry point %s doesn''t provide IUIComponent' % ep.name 52 uicomp = cls() 53 uicomp.ui_manager = self.ui_manager 54 self._ui_components[ep.name] = uicomp 37 55 38 56 def init_main_window(self): gaphor/trunk/gaphor/ui/consolewindow.py
r1258 r1260 6 6 import gaphor 7 7 from gaphor.interfaces import IActionProvider 8 from gaphor.ui.interfaces import IUIComponent 8 9 from gaphor.action import action, build_action_group 9 10 from gaphor.misc.console import GTKInterpreterConsole … … 12 13 class ConsoleWindow(object): 13 14 14 interface.implements(IActionProvider )15 interface.implements(IActionProvider, IUIComponent) 15 16 16 17 menu_xml = """ 17 18 <ui> 19 <menubar action="mainwindow"> 20 <menu name="_Window" action="Menu"> 21 <menuitem name='_Console' action="ConsoleWindow:open" /> 22 </menu> 23 </menubar> 18 24 <menubar action="consolewindow"> 19 <menu name="_File" action=" FileMenu">20 <menuitem name='_Close' action="ConsoleWindow _close" />25 <menu name="_File" action="Menu"> 26 <menuitem name='_Close' action="ConsoleWindow:close" /> 21 27 </menu> 22 28 </menubar> … … 24 30 """ 25 31 26 #action_group = property(lambda s: s._action_group) 32 title = 'Gaphor Console' 33 size = (400, 400) 34 menubar_path = '/consolewindow' 35 toolbar_path = '' 27 36 28 37 def __init__(self): 29 38 self.action_group = build_action_group(self) 39 self.window = None 40 self.ui_manager = None # injected 41 42 def ui_component(self): 43 console = GTKInterpreterConsole() 44 console.show() 45 return console 30 46 31 47 def construct(self): 32 console = GTKInterpreterConsole()33 console.show()34 35 #self._construct_window(name='console',36 # title='Gaphor Console',37 # size=(400, 400),38 # contents=console)39 48 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) 40 self.window.set_title( 'Gaphor Console')41 self.window.set_size_request( 400, 400)49 self.window.set_title(self.title) 50 self.window.set_size_request(*self.size) 42 51 self.window.set_resizable(True) 43 44 self.ui_manager = gtk.UIManager()45 self.ui_manager.insert_action_group(self.action_group, 0)46 self.ui_manager.add_ui_from_string(self.menu_xml)47 48 menubar = self.ui_manager.get_widget('/consolewindow')49 52 50 53 vbox = gtk.VBox() … … 52 55 vbox.show() 53 56 57 self.ui_manager.insert_action_group(self.action_group, 0) 58 self.ui_manager.add_ui_from_string(self.menu_xml) 59 60 self.window.add_accel_group(self.ui_manager.get_accel_group()) 61 62 menubar = self.ui_manager.get_widget(self.menubar_path) 54 63 vbox.pack_start(menubar, expand=False) 55 vbox.pack_end(console, expand=True) 64 65 if self.toolbar_path: 66 toolbar = self.ui_manager.get_widget(self.toolbar_path) 67 vbox.pack_start(toolbar, expand=False) 68 69 vbox.pack_end(self.ui_component(), expand=True) 56 70 57 71 # TODO: add statusbar 58 72 self.window.show_all() 59 73 60 @action(name=' FileMenu', label='_File')74 @action(name='Menu', label='_File') 61 75 def dummy(self): pass 62 76 63 @action(name='ConsoleWindow_close', label='_Close', stock_id='gtk-close') 77 @action(name='ConsoleWindow:open', label='Console') 78 def open(self): 79 if not self.window: 80 self.construct() 81 else: 82 self.window.show_all() 83 84 @action(name='ConsoleWindow:close', stock_id='gtk-close') 64 85 def close(self): 65 86 self.window.destroy() 66 67 def _on_window_destroy(): 68 pass 87 self.window = None 69 88 gaphor/trunk/gaphor/ui/interfaces.py
r1170 r1260 14 14 """A user interface component""" 15 15 16 ui_manager = interface.Attribute("The gtk.UIManager, set after construction") 17 def construct(self): 18 """ 19 Create and display the UI components (windows). 20 """ 21 22 #title = interface.Attribute("Title for the window") 23 #size = interface.Attribute("initial window size (width, height)") 24 #menubar_path = interface.Attribute("UIManager path for menu bar") 25 #toolbar_path = interface.Attribute("UIManager path for tool bar") 26 27 #def ui_component(self): 28 # """Create the UI component to be shown in a window.""" 29 30 16 31 class IDetailsPage(IUIComponent): 17 32 """A property page which can display itself in a notebook""" gaphor/trunk/gaphor/ui/tests/test_consolewindow.py
r1258 r1260 6 6 7 7 def test1(self): 8 import gtk 9 ui_manager = gtk.UIManager() 8 10 window = ConsoleWindow() 9 assert len(window.action_group.list_actions()) == 2 11 window.ui_manager = ui_manager 12 assert len(window.action_group.list_actions()) == 3 10 13 window.construct() 11 14 window.close() gaphor/trunk/setup.py
r1250 r1260 86 86 'element_factory = gaphor.UML.elementfactory:ElementFactory', 87 87 ], 88 'gaphor. adapters': [89 ' connectors = gaphor.adapters.connectors',90 ' editors = gaphor.adapters.editors',88 'gaphor.uicomponents': [ 89 'mainwindow = gaphor.ui.mainwindow:MainWindow', 90 'consolewindow = gaphor.ui.consolewindow:ConsoleWindow', 91 91 ], 92 92 },
