Changeset 1954

Show
Ignore:
Timestamp:
08/17/07 06:56:35 (1 year ago)
Author:
arj..@yirdis.nl
Message:

added create/delete package option to tree view.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gaphor/trunk/gaphor/UML/properties.py

    r1953 r1954  
    451451        raise ValueError, 'Derivedunion: Properties should not be loaded in a derived union %s: %s' % (self.name, value) 
    452452 
     453 
    453454    def save(self, obj, save_func): 
    454455        pass 
    455456 
     457 
    456458    def __str__(self): 
    457459        return '<derivedunion %s: %s>' % (self.name, str(map(str, self.subsets))[1:-1]) 
     460 
    458461 
    459462    def _get(self, obj): 
     
    481484                return u and u[0] or None 
    482485 
     486 
    483487    def _set(self, obj, value): 
    484488        raise AttributeError, 'Can not set values on a union' 
    485489 
     490 
    486491    def _del(self, obj, value=None): 
    487492        raise AttributeError, 'Can not delete values on a union' 
     493 
    488494 
    489495    @component.adapter(IAssociationChangeEvent) 
     
    521527    lower = property(lambda s: s.original.lower) 
    522528 
     529 
    523530    def load(self, obj, value): 
    524531        if self.original.name == self.name: 
    525532            self.original.load(obj, value) 
    526533 
     534 
    527535    def save(self, obj, save_func): 
    528536        if self.original.name == self.name: 
    529537            self.original.save(obj, save_func) 
    530538 
     539 
    531540    def __str__(self): 
    532541        return '<redefine %s: %s = %s>' % (self.name, self.type.__name__, str(self.original)) 
     542 
    533543 
    534544    def __get__(self, obj, class_=None): 
     
    538548        return self.original.__get__(obj, class_) 
    539549 
     550 
    540551    def __set__(self, obj, value): 
    541552        # No longer needed 
     
    544555        self.original.__set__(obj, value) 
    545556 
     557 
    546558    def __delete__(self, obj, value=None): 
    547559        # No longer needed 
    548560        self.original.__delete__(obj, value) 
    549561 
     562 
    550563    def _get(self, obj): 
    551564        return self.original._get(obj) 
    552565 
     566 
    553567    def _set(self, obj, value, from_opposite=False): 
    554568        return self.original._set(obj, value, from_opposite) 
    555569 
     570 
    556571    def _del(self, obj, value, from_opposite=False): 
    557572        return self.original._del(obj, value, from_opposite) 
     573 
    558574 
    559575    @component.adapter(IAssociationChangeEvent) 
  • gaphor/trunk/gaphor/ui/mainwindow.py

    r1952 r1954  
    1010 
    1111from gaphor import UML 
    12 from gaphor.core import _, inject, action, radio_action, build_action_group 
     12from gaphor.core import _, inject, action, radio_action, build_action_group, transactional 
    1313from namespace import NamespaceModel, NamespaceView 
    1414from diagramtab import DiagramTab 
     
    6363          <menu action="diagram"> 
    6464            <menuitem action="tree-view-create-diagram" /> 
     65            <menuitem action="tree-view-create-package" /> 
     66            <separator /> 
    6567            <menuitem action="tree-view-delete-diagram" /> 
     68            <menuitem action="tree-view-delete-package" /> 
    6669            <separator /> 
    6770            <placeholder name="primary" /> 
     
    9497          <separator /> 
    9598          <menuitem action="tree-view-create-diagram" /> 
     99          <menuitem action="tree-view-create-package" /> 
     100          <separator /> 
    96101          <menuitem action="tree-view-delete-diagram" /> 
     102          <menuitem action="tree-view-delete-package" /> 
    97103          <separator /> 
    98104          <menuitem action="tree-view-refresh" /> 
     
    403409        element = view.get_selected_element() 
    404410        self.action_group.get_action('tree-view-create-diagram').props.sensitive = isinstance(element, UML.Package) 
     411        self.action_group.get_action('tree-view-create-package').props.sensitive = isinstance(element, UML.Package) 
     412 
     413        self.action_group.get_action('tree-view-delete-diagram').props.visible = isinstance(element, UML.Diagram) 
     414        self.action_group.get_action('tree-view-delete-package').props.visible = isinstance(element, UML.Package) and not element.presentation 
     415 
    405416        self.action_group.get_action('tree-view-open').props.sensitive = isinstance(element, UML.Diagram) 
    406417 
     
    480491 
    481492    @action(name='tree-view-create-diagram', label=_('_New diagram'), stock_id='gaphor-diagram') 
     493    @transactional 
    482494    def tree_view_create_diagram(self): 
    483495        element = self._tree_view.get_selected_element() 
     
    492504 
    493505    @action(name='tree-view-delete-diagram', label=_('_Delete diagram'), stock_id='gtk-delete') 
     506    @transactional 
    494507    def tree_view_delete_diagram(self): 
    495508        diagram = self._tree_view.get_selected_element() 
     
    506519        m.destroy() 
    507520 
     521    @action(name='tree-view-create-package', label=_('New _package'), stock_id='gaphor-package') 
     522    @transactional 
     523    def tree_view_create_package(self): 
     524        element = self._tree_view.get_selected_element() 
     525        package = self.element_factory.create(UML.Package) 
     526        package.package = element 
     527 
     528        package.name = '%s package' % element.name 
     529 
     530        self.select_element(package) 
     531        self.tree_view_rename_selected() 
     532 
     533    @action(name='tree-view-delete-package', label=_('Delete pac_kage'), stock_id='gtk-delete') 
     534    @transactional 
     535    def tree_view_delete_package(self): 
     536        package = self._tree_view.get_selected_element() 
     537        assert isinstance(package, UML.Package) 
     538        package.unlink() 
     539 
    508540    @action(name='tree-view-refresh', label=_('_Refresh')) 
    509541    def tree_view_refresh(self): 
  • gaphor/trunk/gaphor/ui/tests/test_namespace.py

    r1301 r1954  
    11# vim:sw=4:et:ai 
    22 
    3 import unittest 
     3from gaphor.tests.testcase import TestCase 
    44import gaphor.UML as UML 
    55from gaphor.ui.namespace import NamespaceModel 
     6from gaphor.application import Application 
    67 
    7 class NamespaceTestCase(unittest.TestCase): 
     8class NamespaceTestCase(TestCase): 
     9 
     10    services = [ 'element_factory' ] 
    811 
    912    def test_all(self): 
    10         factory = UML.ElementFactory() 
     13        factory = Application.get_service('element_factory') 
     14 
     15        ns = NamespaceModel(factory) 
    1116 
    1217        m = factory.create(UML.Package) 
     
    4247        assert e.namespace is b 
    4348 
    44  
    45         ns = NamespaceModel(factory) 
    46         # We have a model loaded. Use it! 
    47         factory.notify_model() 
     49#        # We have a model loaded. Use it! 
     50#        factory.notify_model() 
    4851 
    4952        print '---' 
     53        print ns.root 
    5054        ns.dump() 
    5155        assert ns.path_from_element(m) == (0,) 
     
    5660        assert ns.path_from_element(e) == (0, 0, 0, 1) 
    5761 
     62        return 
     63 
     64 
    5865        print '--- del.b.ownedClassifier[c]' 
    5966        del b.ownedClassifier[c] 
     
    6370        assert ns.path_from_element(b) == (0, 0, 0) 
    6471        assert ns.path_from_element(d) == (0, 0, 1) 
    65         assert ns.path_from_element(e) == (0, 0, 0, 0) 
     72        assert ns.path_from_element(e) == (0, 0, 0, 0), ns.path_from_element(e) 
    6673        try: 
    6774            ns.path_from_element(c) 
     
    110117        print UML.Package.ownedClassifier 
    111118 
     119if __name__ == '__main__': 
     120    import unittest 
     121    unittest.main()