Changeset 930

Show
Ignore:
Timestamp:
06/07/06 23:39:29 (2 years ago)
Author:
arjanmol
Message:

first attempt to get gaphas working

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gaphor/trunk/ChangeLog

    r926 r930  
     12006-06-07  arjan <arjan at yirdis dot nl> 
     2 
     3        * Changed Canvas and View to Gaphas. Items should still be converted. 
     4        In other words, the application does nothing from this point. 
     5 
    162006-06-06  arjan <arjan at yirdis dot nl> 
    27 
  • gaphor/trunk/gaphor/UML/diagram.py

    r924 r930  
    99 
    1010import gobject 
    11 import diacanvas 
     11import gaphas 
    1212from gaphor.misc import uniqueid 
    1313from uml2 import Namespace, PackageableElement 
    1414 
    15 class DiagramCanvas(diacanvas.Canvas): 
    16     """Some additions to diacanvas.Canvas class. 
     15class DiagramCanvas(gaphas.Canvas): 
     16    """Some additions to gaphas.Canvas class. 
    1717    Esp. load and save functionallity. 
    1818    """ 
    19     # Most of those properties come from diacanvas.Canvas 
    20     _savable_canvas_properties = [ 'extents', 'static_extents', 
    21             'snap_to_grid', 'grid_int_x', 'grid_int_y', 'grid_ofs_x', 
    22             'grid_ofs_y', 'grid_color', 'grid_bg' ] 
     19    # TODO: save or ignore properties coming from diacanvas.Canvas 
     20    #_savable_canvas_properties = [ 'extents', 'static_extents', 
     21    #        'snap_to_grid', 'grid_int_x', 'grid_int_y', 'grid_ofs_x', 
     22    #        'grid_ofs_y', 'grid_color', 'grid_bg' ] 
    2323 
    2424    def __init__(self, diagram): 
    25         self.__gobject_init__() 
     25        super(DiagramCanvas, self).__init__() 
    2626        self._diagram = diagram 
    2727 
     
    2929 
    3030    def save(self, save_func): 
    31         for prop in DiagramCanvas._savable_canvas_properties: 
    32             save_func(prop, self.get_property(prop)) 
    33         save_func('root_affine', self.root.get_property('affine')) 
     31        #for prop in DiagramCanvas._savable_canvas_properties: 
     32        #    save_func(prop, self.get_property(prop)) 
     33        #save_func('root_affine', self.root.get_property('affine')) 
    3434        # Save child items: 
    35         for item in self.root.children
     35        for item in self.get_root_items()
    3636            save_func(None, item) 
    3737 
    3838    def postload(self): 
    39         self.set_property ("allow_undo", False) 
    40         self.update_now() 
    41         self.resolve_now() 
    4239        self.update_now() 
    4340 
    44         # setting allow-undo to 1 here will cause update info from later 
    45         # created elements to be put on the undo stack. 
    46         #self.clear_undo() 
    47         #self.clear_redo() 
    48         self.set_property ("allow_undo", True) 
    49  
    50     def _select(self, item_list, expression=None): 
    51         l = [] 
    52         if expression is None: 
    53             expression = lambda e: 1 
    54         CanvasGroupable = diacanvas.CanvasGroupable 
    55         for item in item_list: 
    56             if expression(item): 
    57                 l.append(item) 
    58             if isinstance(item, CanvasGroupable): 
    59                 l.extend(self._select(item.groupable_iter(), expression)) 
    60         return l 
    61  
    62     def select(self, expression=None): 
     41    def select(self, expression=lambda e: True): 
    6342        """Return a list of all canvas items that match expression. 
    6443        """ 
    65         return self._select(self.root.children, expression) 
    66  
    67 gobject.type_register(DiagramCanvas) 
     44        return filter(expression, self.get_all_items()) 
    6845 
    6946 
     
    7552        super(Diagram, self).__init__(id, factory) 
    7653        self.canvas = DiagramCanvas(self) 
    77         #self.canvas.set_undo_stack_depth(10) 
    78         self.canvas.set_property ("allow_undo", 1) 
    7954 
    8055    def save(self, save_func): 
     
    8661        self.canvas.postload() 
    8762 
    88     def create(self, type): 
     63    def create(self, type, parent=None): 
    8964        """Create a new canvas item on the canvas. It is created with 
    9065        a unique ID and it is attached to the diagram's root item. 
    9166        """ 
    92         assert issubclass(type, diacanvas.CanvasItem) 
     67        assert issubclass(type, gaphas.Item) 
    9368        obj = type(uniqueid.generate_id()) 
    94         #obj.set_property('parent', self.canvas.root) 
    95         self.canvas.root.add(obj) 
     69        self.canvas.root.add(obj, parent) 
    9670        return obj 
    9771 
    98     # TODO: remove 
    99     def substitute_item(self, item, new_item_type): 
    100         """Create a new item and replace item with the new item. 
    101         """ 
    102  
    10372    def unlink(self): 
    104         self.canvas.set_property('allow_undo', False) 
    10573        # Make sure all canvas items are unlinked 
    10674        for item in self.canvas.select(): 
     
    11078                pass 
    11179 
    112         #self.canvas.clear_undo() 
    113         #self.canvas.clear_redo() 
    114  
    115         Namespace.unlink(self) 
     80        super(Diagram, self).unlink() 
  • gaphor/trunk/gaphor/__init__.py

    r897 r930  
    4545    This involves importing plugins and creating the main window. 
    4646    """ 
    47     # Import stuff here, since the user might not need all the GUI stuff 
     47    # Import GUI stuff here, since the user might not need all the GUI stuff 
    4848    import gtk 
    49     import diagram 
     49    #import diagram 
    5050    # Load plugin definitions: 
    5151    import pluginmanager 
  • gaphor/trunk/gaphor/diagram/placementactions.py

    r720 r930  
    2424    else: 
    2525        action.sensitive = True 
    26     tool = view.get_property('tool') 
     26    tool = None #view.tool 
    2727    if tool: 
    2828        id = tool.action_id 
  • gaphor/trunk/gaphor/misc/signal.py

    r465 r930  
    88 
    99class Signal: 
    10     """The signal class is an implementation of the Observer pattern. It can be 
    11     used to send signals to every function or method that connected to the 
    12     signal object, with a variable amount of parameters. Note that the owner 
    13     of the Signal instance should define a protocol for notifying the observers. 
    14     The subject should provide methods for connecting and disconnecting 
    15     observers (preferably 'connect()' and 'disconnect()'. 
     10    """The signal class is an implementation of the Observer pattern. 
     11 
     12    It can be used to send signals to every function or method that connected 
     13    to the signal object, with a variable amount of parameters. Note that the 
     14    owner of the Signal instance should define a protocol for notifying the 
     15    observers.  The subject should provide methods for connecting and 
     16    disconnecting observers (preferably 'connect()' and 'disconnect()'. 
    1617    """ 
    1718 
  • gaphor/trunk/gaphor/storage.py

    r589 r930  
    2121import gc 
    2222 
    23 import diacanvas 
     23import gaphas 
    2424 
    2525from gaphor import UML 
     
    9595        A value may be a primitive (string, int), a gaphor.UML.collection 
    9696        (which contains a list of references to other UML elements) or a 
    97         diacanvas.Canvas (which contains canvas items). 
     97        gaphas.Canvas (which contains canvas items). 
    9898        """ 
    99         if isinstance (value, (UML.Element, diacanvas.CanvasItem)): 
     99        if isinstance (value, (UML.Element, gaphas.Item)): 
    100100            save_reference(name, value) 
    101101        elif isinstance(value, UML.collection): 
    102102            save_collection(name, value) 
    103         elif isinstance(value, diacanvas.Canvas): 
     103        elif isinstance(value, gaphas.Canvas): 
    104104            writer.startElement('canvas', {}) 
    105105            value.save(save_canvasitem) 
     
    117117        elif isinstance(value, UML.collection): 
    118118            save_collection(name, value) 
    119         elif isinstance(value, diacanvas.CanvasItem): 
     119        elif isinstance(value, gaphas.Item): 
    120120            writer.startElement('item', { 'id': value.id, 
    121121                                          'type': value.__class__.__name__ }) 
  • gaphor/trunk/gaphor/ui/diagramactions.py

    r897 r930  
    55 
    66import gtk 
    7 import diacanvas 
     7import gaphas 
    88 
    99from gaphor import resource 
     
    328328            for item in value: 
    329329                self._load_element(name, item) 
    330         elif isinstance(value, diacanvas.CanvasItem): 
     330        elif isinstance(value, gaphas.Item): 
    331331            self._load_element(name, value) 
    332332        else: 
     
    355355        for ci in copy_items: 
    356356            self._new_items[ci.id] = diagram.create(type(ci)) 
    357             #self._new_items[ci.id].set_property('canvas', canvas) 
    358357 
    359358        # Copy attributes and references. References should be 
     
    395394    def execute(self): 
    396395        view = self._window.get_current_diagram_view() 
    397         view.set_zoom(view.get_zoom() + 0.1) 
     396        view.zoom(1.2) 
     397        #view.set_zoom(view.get_zoom() + 0.1) 
    398398 
    399399register_action(ZoomInAction) 
     
    416416    def execute(self): 
    417417        view = self._window.get_current_diagram_view() 
    418         view.set_zoom(view.get_zoom() - 0.1) 
     418        #view.set_zoom(view.get_zoom() - 0.1) 
     419        view.zoom(1 / 1.2) 
    419420 
    420421register_action(ZoomOutAction) 
     
    456457        diagram_tab.get_canvas().props.snap_to_grid = self.active 
    457458 
    458 register_action(SnapToGridAction) 
     459#register_action(SnapToGridAction) 
     460 
    459461 
    460462class ShowGridAction(CheckAction): 
     
    474476        if tab: 
    475477            canvas = tab.get_canvas() 
    476             canvas.set_property('grid_color', self.active and 255 or canvas.get_property('grid_bg')) 
    477  
    478 register_action(ShowGridAction) 
     478            #canvas.set_property('grid_color', self.active and 255 or canvas.get_property('grid_bg')) 
     479 
     480#register_action(ShowGridAction) 
     481 
    479482 
    480483class ShowElementInTreeViewAction(Action): 
     
    487490    def update(self): 
    488491        diagram_tab = self._window.get_current_diagram_tab() 
    489         self.sensitive = diagram_tab and diagram_tab.get_view().focus_item and \ 
    490                          diagram_tab.get_view().focus_item.item and \ 
    491                          diagram_tab.get_view().focus_item.item.subject 
     492        self.sensitive = diagram_tab and diagram_tab.get_view().focused_item and \ 
     493                         diagram_tab.get_view().focused_item.subject 
    492494 
    493495    def execute(self): 
     
    495497        if tab: 
    496498            view = tab.get_view() 
    497             fi = view.focus_item 
     499            fi = view.focused_item 
    498500            assert fi 
    499             self._window.select_element(fi.item.subject) 
     501            self._window.select_element(fi.subject) 
    500502 
    501503register_action(ShowElementInTreeViewAction) 
  • gaphor/trunk/gaphor/ui/diagramtab.py

    r897 r930  
    66from gaphor import UML 
    77from gaphor import resource 
     8from gaphor.i18n import _ 
    89from gaphor.diagram.itemtool import ItemTool 
    910from gaphor.diagram import get_diagram_item 
     
    2223    def __init__(self, owning_window): 
    2324        self.diagram = None 
     25        #self.view = None 
    2426        self.owning_window = owning_window 
    2527 
     
    4042        self.diagram = diagram 
    4143        if diagram: 
    42             diagram.canvas.set_property ('allow_undo', 1) 
    4344            diagram.connect(('name', '__unlink__'), self.__on_diagram_event) 
    4445 
    4546            if hasattr(self, 'view'): 
    46                 self.view.get_hadjustment().set_value(0.0) 
    47                 self.view.get_vadjustment().set_value(0.0) 
     47                self.view.hadjustment.set_value(0.0) 
     48                self.view.vadjustment.set_value(0.0) 
    4849 
    4950 
    5051    def construct(self): 
    51         title = self.diagram and self.diagram.name or '<None>' 
     52        title = self.diagram and self.diagram.name or _('<None>') 
    5253 
    5354        table = gtk.Table(2,2, False) 
    54         #table.set_row_spacings (4) 
    55         #table.set_col_spacings (4) 
     55        #table.set_row_spacings(4) 
     56        #table.set_col_spacings(4) 
    5657 
    5758        frame = gtk.Frame() 
    58         frame.set_shadow_type (gtk.SHADOW_IN) 
    59         table.attach (frame, 0, 1, 0, 1, 
    60                       gtk.EXPAND | gtk.FILL | gtk.SHRINK, 
    61                       gtk.EXPAND | gtk.FILL | gtk.SHRINK) 
     59        frame.set_shadow_type(gtk.SHADOW_IN) 
     60        table.attach(frame, 0, 1, 0, 1, 
     61                     gtk.EXPAND | gtk.FILL | gtk.SHRINK, 
     62                     gtk.EXPAND | gtk.FILL | gtk.SHRINK) 
    6263 
    63         view = DiagramView (diagram=self.diagram) 
    64         view.set_scroll_region(0, 0, 600, 450) 
     64        view = DiagramView(diagram=self.diagram) 
     65        #view.set_scroll_region(0, 0, 600, 450) 
    6566 
    66         frame.add (view) 
     67        frame.add(view) 
    6768         
    68         sbar = gtk.VScrollbar(view.get_vadjustment()
    69         table.attach (sbar, 1, 2, 0, 1, gtk.FILL, 
    70                       gtk.EXPAND | gtk.FILL | gtk.SHRINK) 
     69        sbar = gtk.VScrollbar(view.vadjustment
     70        table.attach(sbar, 1, 2, 0, 1, gtk.FILL, 
     71                     gtk.EXPAND | gtk.FILL | gtk.SHRINK) 
    7172 
    72         sbar = gtk.HScrollbar(view.get_hadjustment()
    73         table.attach (sbar, 0, 1, 1, 2, gtk.EXPAND | gtk.FILL | gtk.SHRINK, 
    74                       gtk.FILL) 
     73        sbar = gtk.HScrollbar(view.hadjustment
     74        table.attach(sbar, 0, 1, 1, 2, gtk.EXPAND | gtk.FILL | gtk.SHRINK, 
     75                     gtk.FILL) 
    7576 
    76         view.connect('notify::tool', self.__on_view_notify_tool) 
     77        #view.connect('notify::tool', self.__on_view_notify_tool) 
    7778        view.connect_after('event-after', self.__on_view_event_after) 
    78         view.connect('focus-item', self.__on_view_focus_item
    79         view.connect('select-item', self.__on_view_select_item
    80         view.connect('unselect-item', self.__on_view_select_item
     79        view.connect('focus-changed', self.__on_view_focus_changed
     80        view.connect('selection-changed', self.__on_view_selection_changed
     81        #view.connect('unselect-item', self.__on_view_selection_changed
    8182        view.connect_after('key-press-event', self.__on_key_press_event) 
    82         view.connect('drag_data_received', self.__on_drag_data_received) 
    83         self.view = view 
     83        view.connect('drag-data-received', self.__on_drag_data_received) 
    8484 
    8585        item_tool = ItemTool(self.owning_window.get_action_pool()) 
    86         view.get_default_tool().set_item_tool(item_tool) 
    87  
    88         view.get_hadjustment().set_value(0.0) 
    89         view.get_vadjustment().set_value(0.0) 
     86        #view.get_default_tool().set_item_tool(item_tool) 
     87        self.view = view 
    9088 
    9189        table.show_all() 
     
    132130        return False 
    133131 
    134     def __on_view_focus_item(self, view, focus_item): 
     132    def __on_view_focus_changed(self, view, focus_item): 
    135133        self.owning_window.execute_action('ItemFocus') 
    136134        component.handle(DiagramItemFocused(focus_item)) 
    137135 
    138     def __on_view_select_item(self, view, select_item): 
     136    def __on_view_selection_changed(self, view, selection): 
    139137        self.owning_window.execute_action('ItemSelect') 
    140138 
     
    172170                ix, iy = item.affine_point_w2i(max(0, wx), max(0, wy)) 
    173171                item.move(ix, iy) 
    174                 item.set_property ('subject', element) 
     172                item.subject = element 
    175173                get_undo_manager().commit_transaction() 
    176174                view.unselect_all() 
     
    180178 
    181179            else: 
    182                 log.warning ('No graphical representation for UML element %s' % type(element).__name__) 
     180                log.warning('No graphical representation for UML element %s' % type(element).__name__) 
    183181            context.finish(True, False, time) 
    184182        else: 
  • gaphor/trunk/gaphor/ui/diagramview.py

    r465 r930  
    1 # vim: sw=4 
     1""" 
     2""" 
    23 
    3 import gobject 
    44import gtk 
    5 from diacanvas import CanvasView 
     5import gaphas 
    66 
    7 class DiagramView(CanvasView): 
     7class DiagramView(gaphas.View): 
     8    """Displays a diagram (canvas) in a widget. 
     9 
     10    See also: DiagramTab 
     11    """ 
     12 
    813    TARGET_STRING = 0 
    914    TARGET_ELEMENT_ID = 1 
     
    1116        ('gaphor/element-id', 0, TARGET_ELEMENT_ID)] 
    1217 
     18    __gtype_name__ = 'GaphorDiagramView' 
     19 
    1320    def __init__(self, diagram=None): 
    14         self.__gobject_init__() 
     21        super(DiagramView, self).__init__(diagram and diagram.canvas) 
     22        self.diagram = diagram 
    1523 
    16         if diagram: 
    17             canvas = diagram.canvas 
    18         else: 
    19             canvas = None 
    20         CanvasView.__init__(self, canvas) 
    21 #        self.diagram = diagram 
    2224        # Drop 
    2325        self.drag_dest_set (gtk.DEST_DEFAULT_ALL, DiagramView.DND_TARGETS, 
    2426                            gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK) 
    2527 
    26 gobject.type_register(DiagramView) 
     28 
     29# vim: sw=4:et 
  • gaphor/trunk/gaphor/ui/editoractions.py

    r505 r930  
    77from gaphor.misc.action import Action, CheckAction, RadioAction, register_action 
    88import gtk 
    9 import diacanvas 
    109 
    1110class RunAction(Action): 
  • gaphor/trunk/gaphor/ui/mainwindow.py

    r897 r930  
    229229 
    230230    def show_diagram(self, diagram): 
    231         """Show a Diagram element in a new tab. If a tab is already open, 
    232         show that one instead. 
     231        """Show a Diagram element in a new tab. 
     232        If a tab is already open, show that one instead. 
    233233        """ 
    234234        # Try to find an existing window/tab and let it get focus: 
  • gaphor/trunk/gaphor/ui/stock.py

    r543 r930  
    1 # vim:sw=4 
    21"""Icons that are used by Gaphor. 
    32""" 
     
    111110        self.data = self.data + content 
    112111 
     112 
    113113def load_stock_icons(): 
    114     """ 
     114    """Load stock icon definitions from the DataDir location 
     115    (usually /usr/local/share/gaphor). 
    115116    """ 
    116117    from xml.sax import make_parser 
     
    131132load_stock_icons() 
    132133 
     134# vim:sw=4:et 
  • gaphor/trunk/setup.py

    r924 r930  
    7272        pygtk.require('2.0') 
    7373 
    74         #self.pkg_config_check('gobject-2.0', '2.0.0') 
    75         #self.pkg_config_check('gtk+-2.0', '2.0.0') 
    76         #self.pkg_config_check('pygtk-2.0', '1.99.15') 
    77         #self.pkg_config_check('gconf-2.0', '2.0.0') 
    78         #self.pkg_config_check('libbonobo-2.0', '2.0.0') 
    79         #self.pkg_config_check('libbonoboui-2.0', '2.0.0') 
    80         #self.pkg_config_check('diacanvas2', '0.9.1') 
    81  
    8274        self.module_check('xml.parsers.expat') 
    83         #self.module_check('gobject', 'glib_version', (2, 8)) 
    8475        self.module_check('gtk', ('gtk_version', (2, 8)), 
    8576                                 ('pygtk_version', (2, 8))) 
    86         #self.module_check('gnome') 
    87         self.module_check('gnomecanvas') 
    88         #self.module_check('gconf') 
    89         self.module_check('diacanvas', ('diacanvas_version', (0, 14, 3))) 
    9077 
    9178        print ''