コード例 #1
0
ファイル: test_menuitem.py プロジェクト: GNOME/testinggtk
def test_select_menu_item_with_submenu():
    '''
    Selecting a submenu on a menu item without a parent should work as
    expected and has no effect.

    :bug: #541315
    '''
    menu = gtk.Menu()
    mi = gtk.MenuItem('hi')
    mi.set_submenu(menu)
    current_grab = gtk.grab_get_current()
    mi.select()
    mi.select()
    assert gtk.grab_get_current() == current_grab
コード例 #2
0
ファイル: test_menu.py プロジェクト: GNOME/testinggtk
def test_popup():
    '''
    Ensure that ``popup`` shows and grabs the menu widget.
    '''
    menu = gtk.Menu()
    menu.popup(None, None, None, gdk.BUTTON_PRESS, 0, 0)
    assert gtk.grab_get_current() == menu
    assert menu.flags() & gtk.VISIBLE
コード例 #3
0
ファイル: test_widget.py プロジェクト: GNOME/testinggtk
def test_grab_insensitive_widget():
    '''
    Ensure that an insensitive widget cannot be grabbed.

    :bug: #540834
    '''
    # Clean up previous grab.
    current_grabber = gtk.grab_get_current()
    if current_grabber:
        current_grabber.grab_remove()
    assert not gtk.grab_get_current()
    widget = gtk.Button()
    widget.unset_flags(gtk.SENSITIVE)
    widget.grab_add()
    assert not widget.flags() & gtk.HAS_GRAB
    assert not gtk.grab_get_current()
    widget.grab_remove()
コード例 #4
0
ファイル: test_widget.py プロジェクト: GNOME/testinggtk
def test_grab_add():
    '''
    Ensure that when a widget is made the current grabbing widget,
    then ``gtk.grab_get_current`` returns that widget.
    '''
    widget = gtk.Button()
    widget.grab_add()
    assert gtk.grab_get_current() == widget
コード例 #5
0
ファイル: debugwindow.py プロジェクト: dsaran/packagehelper
def show(exctype, value, tb):
    if exctype is not KeyboardInterrupt:

        widget = gtk.grab_get_current()
        if widget is not None:
            widget.grab_remove()

        dw = DebugWindow()
        dw.show_exception(exctype, value, tb)
        dw.run()
        dw.destroy()
コード例 #6
0
    def _showException(self):
        widget = gtk.grab_get_current()
        if widget is not None:
            widget.grab_remove()

        self._printTraceback()
        msg = traceback.format_exception_only(self._exctype, self._value)[0]
        result = msg.split(' ', 1)
        if len(result) == 1:
            msg = result[0]
            arguments = ''
        else:
            msg, arguments = result
        self._insertText(msg, 'exc')
        self._insertText(' ' + arguments)

        # scroll to end
        vadj = self.get_vadjustment()
        vadj.set_value(vadj.upper)
コード例 #7
0
ファイル: exceptiondialog.py プロジェクト: flyapen/UgFlu
    def _showException(self):
        widget = gtk.grab_get_current()
        if widget is not None:
            widget.grab_remove()

        self._printTraceback()
        msg = traceback.format_exception_only(self._exctype, self._value)[0]
        result = msg.split(' ', 1)
        if len(result) == 1:
            msg = result[0]
            arguments = ''
        else:
            msg, arguments = result
        self._insertText(msg, 'exc')
        self._insertText(' ' + arguments)

        # scroll to end
        vadj = self.get_vadjustment()
        vadj.set_value(vadj.upper)
    def _update(self, do_immediate):
        toplevel = self.get_toplevel()
        if not toplevel or not _is_toplevel(toplevel):
            # The autoDrawer cannot function properly without a toplevel.
            return

        self.opened = False

        # Is the drawer pinned open?
        if self.pinned:
            do_immediate = True
            self.opened = True

        # Is the mouse cursor inside the event box? */
        x, y = self.eventBox.get_pointer()
        alloc = self.eventBox.get_allocation()
        if x > -1 and y > -1 and x < alloc.width and y < alloc.height:
            self.opened = True

        # If there is a focused widget, is it inside the event box? */
        focus = toplevel.get_focus()
        if focus and focus.is_ancestor(self.eventBox):
            do_immediate = True
            self.opened = True

        # If input is grabbed, is it on behalf of a widget inside the
        # event box?
        if not self.inputUngrabbed:
            grabbed = None

            if toplevel.get_group():
                # XXX: Not in pygtk?
                #grabbed = toplevel.get_group().get_current_grab()
                pass
            if not grabbed:
                grabbed = gtk.grab_get_current()

            if grabbed and isinstance(grabbed, gtk.Menu):

                while True:
                    menuAttach = grabbed.get_attach_widget()
                    if not menuAttach:
                        break

                    grabbed = menuAttach
                    if not isinstance(grabbed, gtk.MenuItem):
                        break

                    menuItemParent = grabbed.get_parent()
                    if not isinstance(menuItemParent, gtk.Menu):
                        break

                    grabbed = menuItemParent

            if grabbed and grabbed.is_ancestor(self.eventBox):
                do_immediate = True
                self.opened = True

        if self.delayConnection:
            gobject.source_remove(self.delayConnection)


        if self.forceClosing:
            self._enforce(True)
        elif do_immediate:
            self._enforce(False)
        else:
            self.delayConnection = gobject.timeout_add(self.delayValue,
                                                       self._on_enforce_delay)
コード例 #9
0
    def _update(self, do_immediate):
        toplevel = self.get_toplevel()
        if not toplevel or not _is_toplevel(toplevel):
            # The autoDrawer cannot function properly without a toplevel.
            return

        self.opened = False

        # Is the drawer pinned open?
        if self.pinned:
            do_immediate = True
            self.opened = True

        # Is the mouse cursor inside the event box? */
        x, y = self.eventBox.get_pointer()
        alloc = self.eventBox.get_allocation()
        if x > -1 and y > -1 and x < alloc.width and y < alloc.height:
            self.opened = True

        # If there is a focused widget, is it inside the event box? */
        focus = toplevel.get_focus()
        if focus and focus.is_ancestor(self.eventBox):
            do_immediate = True
            self.opened = True

        # If input is grabbed, is it on behalf of a widget inside the
        # event box?
        if not self.inputUngrabbed:
            grabbed = None

            if toplevel.get_group():
                # XXX: Not in pygtk?
                #grabbed = toplevel.get_group().get_current_grab()
                pass
            if not grabbed:
                grabbed = gtk.grab_get_current()

            if grabbed and isinstance(grabbed, gtk.Menu):

                while True:
                    menuAttach = grabbed.get_attach_widget()
                    if not menuAttach:
                        break

                    grabbed = menuAttach
                    if not isinstance(grabbed, gtk.MenuItem):
                        break

                    menuItemParent = grabbed.get_parent()
                    if not isinstance(menuItemParent, gtk.Menu):
                        break

                    grabbed = menuItemParent

            if grabbed and grabbed.is_ancestor(self.eventBox):
                do_immediate = True
                self.opened = True

        if self.delayConnection:
            gobject.source_remove(self.delayConnection)

        if self.forceClosing:
            self._enforce(True)
        elif do_immediate:
            self._enforce(False)
        else:
            self.delayConnection = gobject.timeout_add(self.delayValue,
                                                       self._on_enforce_delay)
コード例 #10
0
ファイル: __init__.py プロジェクト: GNOME/testinggtk
def test_grab_get_current():
    '''
    Ensure that ``gtk.grab_get_current`` returns ``None`` when no
    widget has the grab.
    '''
    assert not gtk.grab_get_current()