コード例 #1
0
ファイル: diagramtab.py プロジェクト: Nyox/gaphor
    def construct(self):
        """
        Create the widget.
        
        Returns: the newly created widget, a DockItem.
        """
        assert self.diagram

        view = GtkView(canvas=self.diagram.canvas)
        view.drag_dest_set(gtk.DEST_DEFAULT_MOTION, DiagramTab.VIEW_DND_TARGETS,
                           gtk.gdk.ACTION_MOVE | gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK)

        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(view)
        scrolled_window.show_all()

        view.connect('focus-changed', self._on_view_selection_changed)
        view.connect('selection-changed', self._on_view_selection_changed)
        view.connect_after('key-press-event', self._on_key_press_event)
        view.connect('drag-drop', self._on_drag_drop)
        view.connect('drag-data-received', self._on_drag_data_received)

        self.view = view
        
        self.toolbox = DiagramToolbox(self.diagram, view)
        
        item = DockItem(title=self.title, stock_id='gaphor-diagram')
        item.add(scrolled_window)

        self.widget = item

        return item
コード例 #2
0
    def test_get_widgets(self):
        win = gtk.Window(gtk.WINDOW_TOPLEVEL)
        frame = DockFrame()
        paned = DockPaned()
        group = DockGroup()
        item = DockItem()
        label = gtk.Label()

        layout = DockLayout()

        layout.add(frame)

        win.add(frame)
        frame.add(paned)
        paned.add(group)
        group.add(item)
        item.add(label)

        group2 = DockGroup()
        paned.add(group2)

        paned.set_name('foo')

        widgets = list(layout.get_widgets('foo'))
        assert len(widgets) == 1
        assert widgets[0] is paned

        widgets = list(layout.get_widgets('EtkDockGroup'))
        assert len(widgets) == 2
        assert widgets[0] is group
        assert widgets[1] is group2
コード例 #3
0
    def construct(self):
        """
        Create the widget.
        
        Returns: the newly created widget, a DockItem.
        """
        assert self.diagram

        view = GtkView(canvas=self.diagram.canvas)
        view.drag_dest_set(gtk.DEST_DEFAULT_MOTION, DiagramTab.VIEW_DND_TARGETS,
                           gtk.gdk.ACTION_MOVE | gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK)

        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(view)
        scrolled_window.show_all()

        view.connect('focus-changed', self._on_view_selection_changed)
        view.connect('selection-changed', self._on_view_selection_changed)
        view.connect_after('key-press-event', self._on_key_press_event)
        view.connect('drag-drop', self._on_drag_drop)
        view.connect('drag-data-received', self._on_drag_data_received)

        self.view = view
        
        self.toolbox = DiagramToolbox(self.diagram, view)
        
        item = DockItem(title=self.title, stock_id='gaphor-diagram')
        item.add(scrolled_window)

        self.widget = item

        return item
コード例 #4
0
    def _on_add_di_button_clicked(self, button):
        examples = [('calc', 'calculator', '#!/usr/bin/env python\n\nprint \'Hello!\''),
                    ('file-manager', 'Hi!', 'Hello!'),
                    ('fonts', 'ABC', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'),
                    ('style', 'abc', 'abcdefghijklmnopqrstuvwxyz'),
                    ('web-browser', 'browser', '0123456789'),
                    ('date', 'today', '9876543210')]

        for i in range(random.randrange(1, 10, 1)):
            icon_name, tooltip_text, text = random.choice(examples)

            # Create a TextView and set some example text
            scrolledwindow = gtk.ScrolledWindow()
            scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
            textview = gtk.TextView()
            textview.get_buffer().set_text(text)
            scrolledwindow.add(textview)

            # Create a DockItem and add our TextView
            di = DockItem(icon_name=icon_name, title='New %s' % self.file_counter, title_tooltip_text=tooltip_text)
            di.add(scrolledwindow)
            di.show_all()

            # Add out DockItem to the DockGroup
            self.dg.add(di)

            # Increment file counter
            self.file_counter += 1
コード例 #5
0
ファイル: mainwindow.py プロジェクト: xqbumu/gaphor
 def create_item(self, ui_component):  #, widget, title, placement=None):
     """
     Create an item for a ui component. This method can be called from UIComponents.
     """
     item = DockItem(ui_component.title)
     item.add(ui_component.open())
     group = DockGroup()
     group.insert_item(item)
     placement = ui_component.placement
     if placement:
         if placement == 'floating':
             add_new_group_floating(group, self.layout, ui_component.size)
         else:
             location = self.layout.get_widgets(placement[1])[0]
             {
                 'left': add_new_group_left,
                 'right': add_new_group_right,
                 'above': add_new_group_above,
                 'below': add_new_group_below
             }[placement[0]](location, group)
     else:
         add_new_group_floating(group)
     item.show()
     item.ui_component = ui_component
     group.show()
コード例 #6
0
    def test_add(self):
        button = gtk.Button()
        dockitem = DockItem()
        dockitem.add(button)

        self.assertTrue(dockitem.child is button)

        button.destroy()
        dockitem.destroy()
コード例 #7
0
    def test_remove(self):
        button = gtk.Button()
        dockitem = DockItem()
        dockitem.add(button)
        dockitem.remove(button)

        self.assertTrue(dockitem.child is None)

        button.destroy()
        dockitem.destroy()
コード例 #8
0
ファイル: steps.py プロジェクト: dieterv/etk.docking
def setup_items(one_other, n_items):
    if one_other == 'one':
        index = 0
    else:
        index = world.item_index + 1
    for n in range(int(n_items)):
        button = gtk.Button()
        item = DockItem(icon_name='file', title='Item %s' % n, title_tooltip_text='')
        item.add(button)
        item.show()
        world.groups[index].add(item)
    world.item_index = index
コード例 #9
0
def setup_items(one_other, n_items):
    if one_other == 'one':
        index = 0
    else:
        index = world.item_index + 1
    for n in range(int(n_items)):
        button = gtk.Button()
        item = DockItem(icon_name='file',
                        title='Item %s' % n,
                        title_tooltip_text='')
        item.add(button)
        item.show()
        world.groups[index].add(item)
    world.item_index = index
コード例 #10
0
    def _add_dockitems(self, dockgroup):
        examples = [
            (gtk.STOCK_EXECUTE, "calculator", "#!/usr/bin/env python\n\nprint 'Hello!'"),
            (gtk.STOCK_OPEN, "Hi!", "Hello!"),
            (gtk.STOCK_FILE, "ABC", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"),
            (gtk.STOCK_FIND, "abc", "abcdefghijklmnopqrstuvwxyz"),
            (gtk.STOCK_HARDDISK, "browser", "0123456789"),
            (gtk.STOCK_HOME, "today", "9876543210"),
            gtk.Notebook,
        ]

        for i in [1]:  # range(random.randrange(1, 10, 1)):
            example = random.choice(examples)

            if example is gtk.Notebook:
                child = gtk.Notebook()
                child.append_page(gtk.Button("Click me"), gtk.Label("New %s" % self.file_counter))
                stock_id = ""
                tooltip_text = "notebook"
            else:
                stock_id, tooltip_text, text = example
                child = self._create_content(text)
                child.set_name(stock_id)

            # Create a DockItem and add our TextView
            di = DockItem(title="New %s" % self.file_counter, title_tooltip_text=tooltip_text, stock_id=stock_id)

            def on_close(item):
                print "close:", item

            di.connect("close", on_close)
            di.add(child)
            di.show_all()

            # Add out DockItem to the DockGroup
            dockgroup.add(di)

            # Increment file counter
            self.file_counter += 1
コード例 #11
0
ファイル: mainwindow.py プロジェクト: dieterv/gaphor
 def create_item(self, ui_component): #, widget, title, placement=None):
     """
     Create an item for a ui component. This method can be called from UIComponents.
     """
     item = DockItem(ui_component.title)
     item.add(ui_component.open())
     group = DockGroup()
     group.insert_item(item)
     placement = ui_component.placement
     if placement:
         if placement == 'floating':
             add_new_group_floating(group, self.layout, ui_component.size)
         else:
             location = self.layout.get_widgets(placement[1])[0]
             { 'left': add_new_group_left,
               'right': add_new_group_right,
               'above': add_new_group_above,
               'below': add_new_group_below }[placement[0]](location, group)
     else:
         add_new_group_floating(group)
     item.show()
     item.ui_component = ui_component
     group.show()
コード例 #12
0
    def test_remove_signal(self):
        remove_events = []
        item_removed_events = []

        def on_remove(self, widget):
            remove_events.append(widget)

        def on_item_removed(dockgroup, child):
            item_removed_events.append(child)

        dockitem = DockItem()
        dockitem.add(gtk.Button())
        dockgroup = DockGroup()
        dockgroup.connect('remove', on_remove)
        dockgroup.connect('item-removed', on_item_removed)
        dockgroup.add(dockitem)
        dockgroup.remove(dockitem)

        self.assertTrue(dockitem in remove_events)
        self.assertTrue(dockitem in item_removed_events)

        dockitem.destroy()
        dockgroup.destroy()