def buttonChanged_(self, button):
     if button.state() == NSOnState:
         self.addSubview_(self.content_view)
     else:
         self.content_view.removeFromSuperview()
     if self.window():
         wrappermap.wrapper(self).invalidate_size_request()
 def do_button_release_event(self, event):
     if self.drag_info is None or event.button != self.drag_info.button:
         return
     self.drag_info = None
     if (self.is_continuous and (0 <= event.x < self.allocation.width)
             and (0 <= event.y < self.allocation.height)):
         wrappermap.wrapper(self).emit('changed', self.get_value())
     wrappermap.wrapper(self).emit('released')
Ejemplo n.º 3
0
 def do_button_release_event(self, event):
     if self.drag_info is None or event.button != self.drag_info.button:
         return
     self.drag_info = None
     if (self.is_continuous and
             (0 <= event.x < self.allocation.width) and
             (0 <= event.y < self.allocation.height)):
         wrappermap.wrapper(self).emit('changed', self.get_value())
     wrappermap.wrapper(self).emit('released')
Ejemplo n.º 4
0
    def on_render(self, window, widget, background_area, cell_area,
                  expose_area, flags):
        widget_wrapper = wrappermap.wrapper(widget)
        cell_wrapper = wrappermap.wrapper(self)

        selected = (flags & gtk.CELL_RENDERER_SELECTED)
        if selected:
            if widget.flags() & gtk.HAS_FOCUS:
                state = gtk.STATE_SELECTED
            else:
                state = gtk.STATE_ACTIVE
        else:
            state = gtk.STATE_NORMAL
        if cell_wrapper.IGNORE_PADDING:
            area = background_area
        else:
            xpad = self.props.xpad
            ypad = self.props.ypad
            area = gtk.gdk.Rectangle(cell_area.x + xpad, cell_area.y + ypad,
                                     cell_area.width - xpad * 2,
                                     cell_area.height - ypad * 2)
        context = drawing.DrawingContext(window, area, expose_area)
        if (selected and not widget_wrapper.draws_selection
                and widget_wrapper.use_custom_style):
            # Draw the base color as our background.  This erases the gradient
            # that GTK draws for selected items.
            window.draw_rectangle(widget.style.base_gc[state], True,
                                  background_area.x, background_area.y,
                                  background_area.width,
                                  background_area.height)
        context.style = drawing.DrawingStyle(widget_wrapper,
                                             use_base_color=True,
                                             state=state)
        widget_wrapper.layout_manager.update_cairo_context(context.context)
        hotspot_tracker = widget_wrapper.hotspot_tracker
        if (hotspot_tracker and hotspot_tracker.hit
                and hotspot_tracker.column == self.column
                and hotspot_tracker.path == self.path):
            hotspot = hotspot_tracker.name
        else:
            hotspot = None
        if (self.path, self.column) == widget_wrapper.hover_info:
            hover = widget_wrapper.hover_pos
            hover = (hover[0] - xpad, hover[1] - ypad)
        else:
            hover = None
        # NOTE: CustomCellRenderer.cell_data_func() sets up its attributes
        # from the model itself, so we don't have to worry about setting them
        # here.
        widget_wrapper.layout_manager.reset()
        cell_wrapper.render(context, widget_wrapper.layout_manager, selected,
                            hotspot, hover)
 def do_motion_notify_event(self, event):
     DRAG_THRESHOLD = 15
     if self.button_press_x is None:
         # button not down
         return
     if (self.last_drag_event != 'right'
             and event.x > self.button_press_x + DRAG_THRESHOLD):
         wrappermap.wrapper(self).emit('dragged-right')
         self.last_drag_event = 'right'
     elif (self.last_drag_event != 'left'
           and event.x < self.button_press_x - DRAG_THRESHOLD):
         wrappermap.wrapper(self).emit('dragged-left')
         self.last_drag_event = 'left'
Ejemplo n.º 6
0
 def do_motion_notify_event(self, event):
     DRAG_THRESHOLD = 15
     if self.button_press_x is None:
         # button not down
         return
     if (self.last_drag_event != 'right' and
             event.x > self.button_press_x + DRAG_THRESHOLD):
         wrappermap.wrapper(self).emit('dragged-right')
         self.last_drag_event = 'right'
     elif (self.last_drag_event != 'left' and
             event.x < self.button_press_x - DRAG_THRESHOLD):
         wrappermap.wrapper(self).emit('dragged-left')
         self.last_drag_event = 'left'
Ejemplo n.º 7
0
 def do_button_press_event(self, event):
     if self.drag_info is not None:
         return
     current_pos = self.get_slider_pos()
     event_pos = self._event_pos(event)
     pos_difference = abs(current_pos - event_pos)
     # only move the slider if the click was outside its boundaries
     # (#18840)
     if pos_difference > self.slider_size() / 2.0:
         self.move_slider(event_pos)
         current_pos = event_pos
     self.drag_info = _DragInfo(event.button, current_pos, event_pos)
     self.grab_focus()
     wrappermap.wrapper(self).emit('pressed')
 def do_button_press_event(self, event):
     if self.drag_info is not None:
         return
     current_pos = self.get_slider_pos()
     event_pos = self._event_pos(event)
     pos_difference = abs(current_pos - event_pos)
     # only move the slider if the click was outside its boundaries
     # (#18840)
     if pos_difference > self.slider_size() / 2.0:
         self.move_slider(event_pos)
         current_pos = event_pos
     self.drag_info = _DragInfo(event.button, current_pos, event_pos)
     self.grab_focus()
     wrappermap.wrapper(self).emit('pressed')
Ejemplo n.º 9
0
    def on_render(self, window, widget, background_area, cell_area, expose_area,
            flags):
        widget_wrapper = wrappermap.wrapper(widget)
        cell_wrapper = wrappermap.wrapper(self)

        selected = (flags & gtk.CELL_RENDERER_SELECTED)
        if selected:
            if widget.flags() & gtk.HAS_FOCUS:
                state = gtk.STATE_SELECTED
            else:
                state = gtk.STATE_ACTIVE
        else:
            state = gtk.STATE_NORMAL
        if cell_wrapper.IGNORE_PADDING:
            area = background_area
        else:
            xpad = self.props.xpad
            ypad = self.props.ypad
            area = gtk.gdk.Rectangle(cell_area.x + xpad, cell_area.y + ypad,
                    cell_area.width - xpad * 2, cell_area.height - ypad * 2)
        context = drawing.DrawingContext(window, area, expose_area)
        if (selected and not widget_wrapper.draws_selection and
                widget_wrapper.use_custom_style):
            # Draw the base color as our background.  This erases the gradient
            # that GTK draws for selected items.
            window.draw_rectangle(widget.style.base_gc[state], True,
                    background_area.x, background_area.y,
                    background_area.width, background_area.height)
        context.style = drawing.DrawingStyle(widget_wrapper,
                use_base_color=True, state=state)
        widget_wrapper.layout_manager.update_cairo_context(context.context)
        hotspot_tracker = widget_wrapper.hotspot_tracker
        if (hotspot_tracker and hotspot_tracker.hit and
                hotspot_tracker.column == self.column and
                hotspot_tracker.path == self.path):
            hotspot = hotspot_tracker.name
        else:
            hotspot = None
        if (self.path, self.column) == widget_wrapper.hover_info:
            hover = widget_wrapper.hover_pos
            hover = (hover[0] - xpad, hover[1] - ypad)
        else:
            hover = None
        # NOTE: CustomCellRenderer.cell_data_func() sets up its attributes
        # from the model itself, so we don't have to worry about setting them
        # here.
        widget_wrapper.layout_manager.reset()
        cell_wrapper.render(context, widget_wrapper.layout_manager, selected,
                hotspot, hover)
Ejemplo n.º 10
0
 def sendAction_to_(self, action, to):
     # only send the click event if we didn't send a
     # dragged-left/dragged-right event
     wrapper = wrappermap.wrapper(self)
     if self.last_drag_event is None and not wrapper.get_disabled():
         wrapper.emit('clicked')
     return YES
 def do_expose_event(self, event):
     wrapper = wrappermap.wrapper(self)
     if self.flags() & gtk.NO_WINDOW:
         drawing_area = self.allocation
     else:
         drawing_area = gtk.gdk.Rectangle(0, 0, 
                 self.allocation.width, self.allocation.height)
     context = DrawingContext(event.window, drawing_area, event.area)
     context.style = DrawingStyle(wrapper)
     if self.flags() & gtk.CAN_FOCUS:
         focus_space = (self.style_get_property('focus-padding') +
                 self.style_get_property('focus-line-width'))
         if not wrapper.squish_width:
             context.width -= focus_space * 2
             translate_x = focus_space
         else:
             translate_x = 0
         if not wrapper.squish_height:
             context.height -= focus_space * 2
             translate_y = focus_space
         else:
             translate_y = 0
         context.translate(translate_x, translate_y)
     wrapper.layout_manager.update_cairo_context(context.context)
     self.draw(wrapper, context)
Ejemplo n.º 12
0
 def sendAction_to_(self, action, to):
     # only send the click event if we didn't send a
     # dragged-left/dragged-right event
     wrapper = wrappermap.wrapper(self)
     if self.last_drag_event is None and not wrapper.get_disabled():
         wrapper.emit('clicked')
     return YES
 def tabView_willSelectTabViewItem_(self, tab_view, tab_view_item):
     try:
         wrapper = wrappermap.wrapper(tab_view)
     except KeyError:
         pass # The NSTabView hasn't been placed yet, don't worry about it.
     else:
         wrapper.place_child_with_item(tab_view_item)
    def move_slider(self, new_pos):
        """Move the slider so that it's centered on new_pos."""
        if self.is_horizontal():
            size = self.allocation.width
        else:
            size = self.allocation.height

        slider_size = self.slider_size()
        new_pos -= slider_size / 2
        size -= slider_size
        ratio = max(0, min(1, float(new_pos) / size))
        self.set_value(ratio * (self.max - self.min))

        wrappermap.wrapper(self).emit('moved', self.get_value())
        if self.is_continuous():
            wrappermap.wrapper(self).emit('changed', self.get_value())
Ejemplo n.º 15
0
    def move_slider(self, new_pos):
        """Move the slider so that it's centered on new_pos."""
        if self.is_horizontal():
            size = self.allocation.width
        else:
            size = self.allocation.height

        slider_size = self.slider_size()
        new_pos -= slider_size / 2
        size -= slider_size
        ratio = max(0, min(1, float(new_pos) / size))
        self.set_value(ratio * (self.max - self.min))

        wrappermap.wrapper(self).emit('moved', self.get_value())
        if self.is_continuous():
            wrappermap.wrapper(self).emit('changed', self.get_value())
Ejemplo n.º 16
0
 def sendAction_to_(self, action, to):
     if self.stopTracking:
         return NO
     self.firedOnce = True
     wrapper = wrappermap.wrapper(self)
     if not wrapper.get_disabled():
         wrapper.emit('held-down')
     return YES
Ejemplo n.º 17
0
 def on_hierarchy_changed(self, widget, previous_toplevel):
     toplevel = widget.get_toplevel()
     if not (toplevel.flags() & gtk.TOPLEVEL):
         toplevel = None
     if previous_toplevel != toplevel:
         if self.use_custom_style_callback:
             old_window = wrappermap.wrapper(previous_toplevel)
             old_window.disconnect(self.use_custom_style_callback)
         if toplevel is not None:
             window = wrappermap.wrapper(toplevel)
             callback_id = window.connect("use-custom-style-changed", self.on_use_custom_style_changed)
             self.use_custom_style_callback = callback_id
         else:
             self.use_custom_style_callback = None
         if previous_toplevel is None:
             # Setup our initial state
             self.on_use_custom_style_changed(window)
Ejemplo n.º 18
0
 def sendAction_to_(self, action, to):
     if self.stopTracking:
         return NO
     self.firedOnce = True
     wrapper = wrappermap.wrapper(self)
     if not wrapper.get_disabled():
         wrapper.emit('held-down')
     return YES
 def tile(self):
     NSScrollView.tile(self)
     # tile is called when we need to layout our child view and scrollers.
     # This probably means that we've either hidden or shown a scrollbar so
     # call invalidate_size_request to ensure that things get re-layed out
     # correctly.  (#see 13842)
     wrapper = wrappermap.wrapper(self)
     if wrapper is not None:
         wrapper.invalidate_size_request()
Ejemplo n.º 20
0
 def on_hierarchy_changed(self, widget, previous_toplevel):
     toplevel = widget.get_toplevel()
     if not (toplevel.flags() & gtk.TOPLEVEL):
         toplevel = None
     if previous_toplevel != toplevel:
         if self.use_custom_style_callback:
             old_window = wrappermap.wrapper(previous_toplevel)
             old_window.disconnect(self.use_custom_style_callback)
         if toplevel is not None:
             window = wrappermap.wrapper(toplevel)
             callback_id = window.connect('use-custom-style-changed',
                                          self.on_use_custom_style_changed)
             self.use_custom_style_callback = callback_id
         else:
             self.use_custom_style_callback = None
         if previous_toplevel is None:
             # Setup our initial state
             self.on_use_custom_style_changed(window)
Ejemplo n.º 21
0
 def _calc_current_focus_wrapper(self):
     responder = self.firstResponder()
     while responder:
         wrapper = wrappermap.wrapper(responder)
         # check if we have a wrapper for the view, if not try the parent
         # view
         if wrapper is not None:
             return wrapper
         responder = responder.superview()
     return None
Ejemplo n.º 22
0
 def _calc_current_focus_wrapper(self):
     responder = self.firstResponder()
     while responder:
         wrapper = wrappermap.wrapper(responder)
         # check if we have a wrapper for the view, if not try the parent
         # view
         if wrapper is not None:
             return wrapper
         responder = responder.superview()
     return None
Ejemplo n.º 23
0
 def _on_activate(self, menu_item):
     self.emit("activate")
     gtk_menubar = self._find_menubar()
     if gtk_menubar is not None:
         try:
             menubar = wrappermap.wrapper(gtk_menubar)
         except KeyError:
             logging.exception("menubar activate: " "no wrapper for gtbbk.MenuBar")
         else:
             menubar.emit("activate", self.name)
Ejemplo n.º 24
0
 def sendAction_to_(self, action, to):
     # We override the Cocoa machinery here and just send it to our wrapper
     # widget.
     wrapper = wrappermap.wrapper(self)
     disabled = wrapper.get_disabled()
     if not disabled:
         wrapper.emit('changed', self.floatValue())
     # Total Cocoa we handled it anyway to prevent the event passed to
     # upper layer.
     return YES
Ejemplo n.º 25
0
 def sendAction_to_(self, action, to):
     # We override the Cocoa machinery here and just send it to our wrapper
     # widget.
     wrapper = wrappermap.wrapper(self)
     disabled = wrapper.get_disabled()
     if not disabled:
         wrapper.emit('changed', self.floatValue())
     # Total Cocoa we handled it anyway to prevent the event passed to
     # upper layer.
     return YES
Ejemplo n.º 26
0
 def mouseDown_(self, event):
     self.releaseInbounds = self.stopTracking = self.firedOnce = False
     self.cell().trackMouse_inRect_ofView_untilMouseUp_(
         event, self.bounds(), self, YES)
     wrapper = wrappermap.wrapper(self)
     if not wrapper.get_disabled():
         if self.firedOnce:
             wrapper.emit('released')
         elif self.releaseInbounds:
             wrapper.emit('clicked')
Ejemplo n.º 27
0
 def sendAction_to_(self, action, to):
     # We override the Cocoa machinery here and just send it to our wrapper
     # widget.
     wrapper = wrappermap.wrapper(self)
     disabled = wrapper.get_disabled()
     if not disabled:
         wrapper.emit('clicked')
     # Tell Cocoa we handled it anyway, just not emit the actual clicked
     # event.
     return YES
Ejemplo n.º 28
0
 def sendAction_to_(self, action, to):
     # We override the Cocoa machinery here and just send it to our wrapper
     # widget.
     wrapper = wrappermap.wrapper(self)
     disabled = wrapper.get_disabled()
     if not disabled:
         wrapper.emit('clicked')
     # Tell Cocoa we handled it anyway, just not emit the actual clicked
     # event.
     return YES
Ejemplo n.º 29
0
 def mouseDown_(self, event):
     self.releaseInbounds = self.stopTracking = self.firedOnce = False
     self.cell().trackMouse_inRect_ofView_untilMouseUp_(event,
             self.bounds(), self, YES)
     wrapper = wrappermap.wrapper(self)
     if not wrapper.get_disabled():
         if self.firedOnce:
             wrapper.emit('released')
         elif self.releaseInbounds:
             wrapper.emit('clicked')
Ejemplo n.º 30
0
 def on_get_size(self, widget, cell_area=None):
     wrapper = wrappermap.wrapper(self)
     widget_wrapper = wrappermap.wrapper(widget)
     style = drawing.DrawingStyle(widget_wrapper, use_base_color=True)
     # NOTE: CustomCellRenderer.cell_data_func() sets up its attributes
     # from the model itself, so we don't have to worry about setting them
     # here.
     width, height = wrapper.get_size(style, widget_wrapper.layout_manager)
     x_offset = self.props.xpad
     y_offset = self.props.ypad
     width += self.props.xpad * 2
     height += self.props.ypad * 2
     if cell_area:
         x_offset += cell_area.x
         y_offset += cell_area.x
         extra_width = max(0, cell_area.width - width)
         extra_height = max(0, cell_area.height - height)
         x_offset += int(round(self.props.xalign * extra_width))
         y_offset += int(round(self.props.yalign * extra_height))
     return x_offset, y_offset, width, height
 def _on_activate(self, menu_item):
     self.emit('activate')
     gtk_menubar = self._find_menubar()
     if gtk_menubar is not None:
         try:
             menubar = wrappermap.wrapper(gtk_menubar)
         except KeyError:
             logging.exception('menubar activate: '
                               'no wrapper for gtbbk.MenuBar')
         else:
             menubar.emit('activate', self.name)
Ejemplo n.º 32
0
 def on_get_size(self, widget, cell_area=None):
     wrapper = wrappermap.wrapper(self)
     widget_wrapper = wrappermap.wrapper(widget)
     style = drawing.DrawingStyle(widget_wrapper, use_base_color=True)
     # NOTE: CustomCellRenderer.cell_data_func() sets up its attributes
     # from the model itself, so we don't have to worry about setting them
     # here.
     width, height = wrapper.get_size(style, widget_wrapper.layout_manager)
     x_offset = self.props.xpad
     y_offset = self.props.ypad
     width += self.props.xpad * 2
     height += self.props.ypad * 2
     if cell_area:
         x_offset += cell_area.x
         y_offset += cell_area.x
         extra_width = max(0, cell_area.width - width)
         extra_height = max(0, cell_area.height - height)
         x_offset += int(round(self.props.xalign * extra_width))
         y_offset += int(round(self.props.yalign * extra_height))
     return x_offset, y_offset, width, height
Ejemplo n.º 33
0
 def view_writeColumnData_ToPasteboard_(self, view, data, pasteboard):
     if not self.drag_source:
         return NO
     wrapper = wrappermap.wrapper(view)
     drag_data = self.drag_source.begin_drag(wrapper, data)
     if not drag_data:
         return NO
     pasteboard.declareTypes_owner_((MIRO_DND_ITEM_LOCAL,), self)
     for typ, value in drag_data.items():
         stringval = repr((repr(value), typ))
         pasteboard.setString_forType_(stringval, MIRO_DND_ITEM_LOCAL)
     return YES
 def do_size_request(self, requesition):
     wrapper = wrappermap.wrapper(self)
     width, height = wrapper.size_request(wrapper.layout_manager)
     requesition.width = width
     requesition.height = height
     if self.flags() & gtk.CAN_FOCUS:
         focus_space = (self.style_get_property('focus-padding') +
                 self.style_get_property('focus-line-width'))
         if not wrapper.squish_width:
             requesition.width += focus_space * 2
         if not wrapper.squish_height:
             requesition.height += focus_space * 2
Ejemplo n.º 35
0
 def view_writeColumnData_ToPasteboard_(self, view, data, pasteboard):
     if not self.drag_source:
         return NO
     wrapper = wrappermap.wrapper(view)
     drag_data = self.drag_source.begin_drag(wrapper, data)
     if not drag_data:
         return NO
     pasteboard.declareTypes_owner_((MIRO_DND_ITEM_LOCAL, ), self)
     for typ, value in drag_data.items():
         stringval = repr((repr(value), typ))
         pasteboard.setString_forType_(stringval, MIRO_DND_ITEM_LOCAL)
     return YES
Ejemplo n.º 36
0
    def do_key_press_event(self, event):
        if self.activate_key(event):  # event activated a menu item
            return

        if self.propagate_key_event(event):  # event handled by widget
            return

        ret = keymap.translate_gtk_event(event)
        if ret is not None:
            key, modifiers = ret
            rv = wrappermap.wrapper(self).emit("key-press", key, modifiers)
            if not rv:
                gtk.Window.do_key_press_event(self, event)
 def change_focus_using_wrapper(self, direction):
     my_wrapper = wrappermap.wrapper(self)
     focused_wrapper = self._get_focused_wrapper()
     if direction == gtk.DIR_TAB_FORWARD:
         to_focus = my_wrapper.get_next_tab_focus(focused_wrapper, True)
     elif direction == gtk.DIR_TAB_BACKWARD:
         to_focus = my_wrapper.get_next_tab_focus(focused_wrapper, False)
     else:
         return False
     if to_focus is not None:
         to_focus.focus()
         return True
     return False
    def do_key_press_event(self, event):
        if self.activate_key(event): # event activated a menu item
            return

        if self.propagate_key_event(event): # event handled by widget
            return

        ret = keymap.translate_gtk_event(event)
        if ret is not None:
            key, modifiers = ret
            rv = wrappermap.wrapper(self).emit('key-press', key, modifiers)
            if not rv:
                gtk.Window.do_key_press_event(self, event)
Ejemplo n.º 39
0
 def continueTracking_at_inView_(self, lastPoint, at, view):
     DRAG_THRESHOLD = 15
     wrapper = wrappermap.wrapper(view)
     if not wrapper.get_disabled():
         if (view.last_drag_event != 'right' and
                 at.x > self.start_x + DRAG_THRESHOLD):
             wrapper.emit("dragged-right")
             view.last_drag_event = 'right'
         elif (view.last_drag_event != 'left' and
                 at.x < self.start_x - DRAG_THRESHOLD):
             view.last_drag_event = 'left'
             wrapper.emit("dragged-left")
     return YES
Ejemplo n.º 40
0
 def change_focus_using_wrapper(self, direction):
     my_wrapper = wrappermap.wrapper(self)
     focused_wrapper = self._get_focused_wrapper()
     if direction == gtk.DIR_TAB_FORWARD:
         to_focus = my_wrapper.get_next_tab_focus(focused_wrapper, True)
     elif direction == gtk.DIR_TAB_BACKWARD:
         to_focus = my_wrapper.get_next_tab_focus(focused_wrapper, False)
     else:
         return False
     if to_focus is not None:
         to_focus.focus()
         return True
     return False
Ejemplo n.º 41
0
 def continueTracking_at_inView_(self, lastPoint, at, view):
     DRAG_THRESHOLD = 15
     wrapper = wrappermap.wrapper(view)
     if not wrapper.get_disabled():
         if (view.last_drag_event != 'right'
                 and at.x > self.start_x + DRAG_THRESHOLD):
             wrapper.emit("dragged-right")
             view.last_drag_event = 'right'
         elif (view.last_drag_event != 'left'
               and at.x < self.start_x - DRAG_THRESHOLD):
             view.last_drag_event = 'left'
             wrapper.emit("dragged-left")
     return YES
Ejemplo n.º 42
0
    def moveSliderTo(self, view, pos):
        if view.isVertical():
            size = view.bounds().size.height
        else:
            size = view.bounds().size.width

        slider_amount = self.calc_slider_amount(view, pos, size)
        value = (self.maxValue() - self.minValue()) * slider_amount
        self.setFloatValue_(value)
        wrapper = wrappermap.wrapper(view)
        if not wrapper.get_disabled():
            wrapper.emit('moved', value)
            if self.isContinuous():
                wrapper.emit('changed', value)
Ejemplo n.º 43
0
 def sendKeyDownToWrapper_(self, event):
     """Give a keyDown event to the wrapper for our responder
     
     Return True if the wrapper handled the event
     """
     key = event.charactersIgnoringModifiers()
     if len(key) != 1 or not key.isalnum():
         key = osxmenus.REVERSE_KEYS_MAP.get(key)
     mods = osxmenus.translate_event_modifiers(event)
     wrapper = wrappermap.wrapper(self.responder)
     if isinstance(wrapper, Widget) or isinstance(wrapper, Window):
         if wrapper.emit('key-press', key, mods):
             return True
     return False
Ejemplo n.º 44
0
    def moveSliderTo(self, view, pos):
        if view.isVertical():
            size = view.bounds().size.height
        else:
            size = view.bounds().size.width

        slider_amount = self.calc_slider_amount(view, pos, size)
        value = (self.maxValue() - self.minValue()) * slider_amount
        self.setFloatValue_(value)
        wrapper = wrappermap.wrapper(view)
        if not wrapper.get_disabled():
            wrapper.emit('moved', value)
            if self.isContinuous():
                wrapper.emit('changed', value)
Ejemplo n.º 45
0
 def sendKeyDownToWrapper_(self, event):
     """Give a keyDown event to the wrapper for our responder
     
     Return True if the wrapper handled the event
     """
     key = event.charactersIgnoringModifiers()
     if len(key) != 1 or not key.isalnum():
         key = osxmenus.REVERSE_KEYS_MAP.get(key)
     mods = osxmenus.translate_event_modifiers(event)
     wrapper = wrappermap.wrapper(self.responder)
     if isinstance(wrapper, Widget) or isinstance(wrapper, Window):
         if wrapper.emit('key-press', key, mods):
             return True
     return False
 def _get_focused_wrapper(self):
     """Get the wrapper of the widget with keyboard focus"""
     focused = self.get_focus()
     # some of our widgets created children for their use
     # (GtkSearchTextEntry).  If we don't find a wrapper for
     # focused, try it's parents
     while focused is not None:
         try:
             wrapper = wrappermap.wrapper(focused)
         except KeyError:
             focused = focused.get_parent()
         else:
             return wrapper
     return None
Ejemplo n.º 47
0
 def _get_focused_wrapper(self):
     """Get the wrapper of the widget with keyboard focus"""
     focused = self.get_focus()
     # some of our widgets created children for their use
     # (GtkSearchTextEntry).  If we don't find a wrapper for
     # focused, try it's parents
     while focused is not None:
         try:
             wrapper = wrappermap.wrapper(focused)
         except KeyError:
             focused = focused.get_parent()
         else:
             return wrapper
     return None
Ejemplo n.º 48
0
 def startTrackingAt_inView_(self, at, view):
     wrapper = wrappermap.wrapper(view)
     start_pos = self.get_slider_pos(view)
     if self.isVertical():
         click_pos = at.y
     else:
         click_pos = at.x
     # only move the cursor if the click was outside the slider
     if abs(click_pos - start_pos) > view.knobThickness() / 2:
         self.moveSliderTo(view, click_pos)
         start_pos = click_pos
     view.mouse_tracking_info = MouseTrackingInfo(start_pos, click_pos)
     if not wrapper.get_disabled():
         wrapper.emit('pressed')
     return YES
Ejemplo n.º 49
0
 def startTrackingAt_inView_(self, at, view):
     wrapper = wrappermap.wrapper(view)
     start_pos = self.get_slider_pos(view)
     if self.isVertical():
         click_pos = at.y
     else:
         click_pos = at.x
     # only move the cursor if the click was outside the slider
     if abs(click_pos - start_pos) > view.knobThickness() / 2:
         self.moveSliderTo(view, click_pos)
         start_pos = click_pos
     view.mouse_tracking_info = MouseTrackingInfo(start_pos, click_pos)
     if not wrapper.get_disabled():
         wrapper.emit('pressed')
     return YES
Ejemplo n.º 50
0
 def acceptDrop_dragInfo_parentIter_position_(self, view, drag_info,
         parent, position):
     typ = self.calcType_(drag_info)
     if typ:
         # XXX using eval sucks.
         data = eval(drag_info.draggingPasteboard().stringForType_(MIRO_DND_ITEM_LOCAL))
         ids, _ = data
         ids = eval(ids)
         wrapper = wrappermap.wrapper(view)
         self.drag_dest.accept_drop(wrapper, self.model, typ, 
             drag_info.draggingSourceOperationMask(), parent,
             position, ids)
         return YES
     else:
         return NO
Ejemplo n.º 51
0
 def acceptDrop_dragInfo_parentIter_position_(self, view, drag_info, parent,
                                              position):
     typ = self.calcType_(drag_info)
     if typ:
         # XXX using eval sucks.
         data = eval(drag_info.draggingPasteboard().stringForType_(
             MIRO_DND_ITEM_LOCAL))
         ids, _ = data
         ids = eval(ids)
         wrapper = wrappermap.wrapper(view)
         self.drag_dest.accept_drop(wrapper, self.model, typ,
                                    drag_info.draggingSourceOperationMask(),
                                    parent, position, ids)
         return YES
     else:
         return NO
Ejemplo n.º 52
0
    def drawRect_(self, rect):
        context = drawing.DrawingContext(self, self.bounds(), rect)
        context.style = drawing.DrawingStyle()
        wrapper = wrappermap.wrapper(self)
        wrapper.state = 'normal'
        disabled = wrapper.get_disabled()
        if not disabled:
            if self.state() == NSOnState:
                wrapper.state = 'pressed'
            elif self.mouse_inside:
                wrapper.state = 'hover'
            else:
                wrapper.state = 'normal'

        wrapper.draw(context, self.layout_manager)
        self.layout_manager.reset()
Ejemplo n.º 53
0
    def drawRect_(self, rect):
        context = drawing.DrawingContext(self, self.bounds(), rect)
        context.style = drawing.DrawingStyle()
        wrapper = wrappermap.wrapper(self)
        wrapper.state = 'normal'
        disabled = wrapper.get_disabled()
        if not disabled:
            if self.state() == NSOnState:
                wrapper.state = 'pressed'
            elif self.mouse_inside:
                wrapper.state = 'hover'
            else:
                wrapper.state = 'normal'

        wrapper.draw(context, self.layout_manager)
        self.layout_manager.reset()
Ejemplo n.º 54
0
 def validateDrop_dragInfo_parentIter_position_(self, view, drag_info,
                                                parent, position):
     typ = self.calcType_(drag_info)
     if typ:
         wrapper = wrappermap.wrapper(view)
         drop_action = self.drag_dest.validate_drop(
             wrapper, self.model, typ,
             drag_info.draggingSourceOperationMask(), parent, position)
         if not drop_action:
             return NSDragOperationNone
         if isinstance(drop_action, (tuple, list)):
             drop_action, iter = drop_action
             view.setDropRow_dropOperation_(
                 self.model.row_of_iter(view, iter), NSTableViewDropOn)
         return drop_action
     else:
         return NSDragOperationNone
Ejemplo n.º 55
0
 def validateDrop_dragInfo_parentIter_position_(self, view, drag_info, 
         parent, position):
     typ = self.calcType_(drag_info)
     if typ:
         wrapper = wrappermap.wrapper(view)
         drop_action = self.drag_dest.validate_drop(
             wrapper, self.model, typ,
             drag_info.draggingSourceOperationMask(), parent,
             position)
         if not drop_action:
             return NSDragOperationNone
         if isinstance(drop_action, (tuple, list)):
             drop_action, iter = drop_action
             view.setDropRow_dropOperation_(
                 self.model.row_of_iter(view, iter),
                 NSTableViewDropOn)
         return drop_action
     else:
         return NSDragOperationNone