| 1 |
|
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 |
__version__ = '$revision$' |
|---|
| 5 |
__author__ = 'Arjan J. Molenaar' |
|---|
| 6 |
__date__ = '$date$' |
|---|
| 7 |
|
|---|
| 8 |
import gobject |
|---|
| 9 |
import diacanvas |
|---|
| 10 |
import gaphor.misc.uniqueid as uniqueid |
|---|
| 11 |
|
|---|
| 12 |
|
|---|
| 13 |
_uml_to_item_map = { } |
|---|
| 14 |
|
|---|
| 15 |
def create(type): |
|---|
| 16 |
return create_as(type, uniqueid.generate_id()) |
|---|
| 17 |
|
|---|
| 18 |
def create_as(type, id): |
|---|
| 19 |
return type(id) |
|---|
| 20 |
|
|---|
| 21 |
def get_diagram_item(element): |
|---|
| 22 |
global _uml_to_item_map |
|---|
| 23 |
try: |
|---|
| 24 |
return _uml_to_item_map[element] |
|---|
| 25 |
except: |
|---|
| 26 |
return None |
|---|
| 27 |
|
|---|
| 28 |
def initialize_item(item_class, default_uml_class=None): |
|---|
| 29 |
"""Initialize a new diagram item. |
|---|
| 30 |
This involves: |
|---|
| 31 |
1. registring the new diagram item with the GObject type |
|---|
| 32 |
2. If nessesary: add canvas item callbacks |
|---|
| 33 |
3. If nessesary: add canvas groupable callbacks |
|---|
| 34 |
4. If nessesary: add canvas editable callbacks |
|---|
| 35 |
""" |
|---|
| 36 |
global _uml_to_item_map |
|---|
| 37 |
gobject.type_register(item_class) |
|---|
| 38 |
bases = item_class.__bases__ |
|---|
| 39 |
if (diacanvas.CanvasItem in bases) or \ |
|---|
| 40 |
(diacanvas.CanvasGroup in bases) or \ |
|---|
| 41 |
(diacanvas.CanvasLine in bases) or \ |
|---|
| 42 |
(diacanvas.CanvasElement in bases) or \ |
|---|
| 43 |
(diacanvas.CanvasBox in bases) or \ |
|---|
| 44 |
(diacanvas.CanvasText in bases) or \ |
|---|
| 45 |
(diacanvas.CanvasImage in bases): |
|---|
| 46 |
diacanvas.set_callbacks (item_class) |
|---|
| 47 |
if (diacanvas.CanvasGroupable in bases): |
|---|
| 48 |
diacanvas.set_groupable (item_class) |
|---|
| 49 |
if (diacanvas.CanvasEditable in bases): |
|---|
| 50 |
diacanvas.set_editable (item_class) |
|---|
| 51 |
|
|---|
| 52 |
if default_uml_class: |
|---|
| 53 |
_uml_to_item_map[default_uml_class] = item_class |
|---|
| 54 |
|
|---|
| 55 |
from placementtool import PlacementTool |
|---|
| 56 |
from actor import ActorItem |
|---|
| 57 |
from klass import ClassItem |
|---|
| 58 |
from comment import CommentItem |
|---|
| 59 |
from commentline import CommentLineItem |
|---|
| 60 |
from usecase import UseCaseItem |
|---|
| 61 |
from package import PackageItem |
|---|
| 62 |
from relationship import RelationshipItem |
|---|
| 63 |
from dependency import DependencyItem |
|---|
| 64 |
from generalization import GeneralizationItem |
|---|
| 65 |
from association import AssociationItem |
|---|
| 66 |
|
|---|
| 67 |
|
|---|
| 68 |
import itemactions |
|---|
| 69 |
|
|---|
| 70 |
if __debug__: |
|---|
| 71 |
|
|---|
| 72 |
from gaphor.misc.aspects import ReferenceAspect, weave_method |
|---|
| 73 |
from gaphor import refs |
|---|
| 74 |
weave_method(create_as, ReferenceAspect, refs) |
|---|