Ticket #3992: 0001-NetworkView-add-the-custom-SugarPalette-instead-of-t.patch

File 0001-NetworkView-add-the-custom-SugarPalette-instead-of-t.patch, 7.9 KB (added by erikos, 12 years ago)

NetworkView: add the custom SugarPalette instead of the GTK.Menu based one

  • src/jarabe/desktop/networkviews.py

    From e9ea1d3cc107fd728a33d2661611d1bf5762f931 Mon Sep 17 00:00:00 2001
    From: Simon Schampijer <simon@laptop.org>
    Date: Tue, 16 Oct 2012 15:33:18 +0200
    Subject: [PATCH shell] NetworkView: add the custom SugarPalette instead of
     the GTK.Menu based one, part of SL #3992
    
    The Gtk.Menu triggers a Palette popdown in a long press (and actually as well
    a long click). There is not realy a way around that so we go with our custom
    Palettes.
    
    This adds the custom Palette for the SugarAdhocView, the WirelessNetworkView
    and the OlpcMeshView.
    
    Use the toggle_palette property from the invoker in order to popup/popdown
    Palette on left click or tap.
    
    Fix appearance of AdHoc icons as well, error introduced
    in 02218ea3e0c4ac2edaa8b08dbc066f2d22f29e8a.
    
    Signed-off-by: Simon Schampijer <simon@laptop.org>
    ---
     src/jarabe/desktop/networkviews.py | 75 +++++++++++++++++++++++---------------
     1 file changed, 46 insertions(+), 29 deletions(-)
    
    diff --git a/src/jarabe/desktop/networkviews.py b/src/jarabe/desktop/networkviews.py
    index c7d21c6..f72b2d2 100644
    a b import uuid 
    2424import dbus
    2525import glib
    2626
     27from gi.repository import Gtk
     28
    2729from sugar3.graphics.icon import Icon
    2830from sugar3.graphics.xocolor import XoColor
    2931from sugar3.graphics import xocolor
    3032from sugar3.graphics import style
    3133from sugar3.graphics.icon import get_icon_state
    3234from sugar3.graphics import palette
    33 from sugar3.graphics.menuitem import MenuItem
     35from sugar3.graphics.palettemenuitem import PaletteMenuItem
     36from sugar3.graphics.palettemenuitem import PaletteMenuItemSeparator
    3437from sugar3 import profile
    3538
    3639from jarabe.view.pulsingicon import EventPulsingIcon
    class WirelessNetworkView(EventPulsingIcon): 
    122125        label = glib.markup_escape_text(self._display_name)
    123126        p = palette.Palette(primary_text=label, icon=self._palette_icon)
    124127
    125         self._connect_item = MenuItem(_('Connect'), 'dialog-ok')
     128        self.menu_box = Gtk.VBox()
     129
     130        self._connect_item = PaletteMenuItem(_('Connect'))
     131        icon = Icon(icon_size=Gtk.IconSize.MENU, icon_name='dialog-ok')
     132        self._connect_item.set_image(icon)
    126133        self._connect_item.connect('activate', self.__connect_activate_cb)
    127         p.menu.append(self._connect_item)
     134        self.menu_box.add(self._connect_item)
     135
     136        self._disconnect_item = PaletteMenuItem(_('Disconnect'))
     137        icon = Icon(icon_size=Gtk.IconSize.MENU, icon_name='media-eject')
     138        self._disconnect_item.set_image(icon)
     139        self._disconnect_item.connect('activate', self.__disconnect_activate_cb)
     140        self.menu_box.add(self._disconnect_item)
    128141
    129         self._disconnect_item = MenuItem(_('Disconnect'), 'media-eject')
    130         self._disconnect_item.connect('activate',
    131                                         self._disconnect_activate_cb)
    132         p.menu.append(self._disconnect_item)
     142        p.set_content(self.menu_box)
     143        self.menu_box.show_all()
    133144
    134145        self.connect_to_palette_pop_events(p)
    135146
    class WirelessNetworkView(EventPulsingIcon): 
    261272        else:
    262273            self.props.alpha = 1.0
    263274
    264     def _disconnect_activate_cb(self, item):
     275    def __disconnect_activate_cb(self, item):
    265276        ap_paths = self._access_points.keys()
    266277        network.disconnect_access_points(ap_paths)
    267278
    class SugarAdhocView(EventPulsingIcon): 
    464475        get_adhoc_manager_instance().connect('state-changed',
    465476                                             self.__state_changed_cb)
    466477
    467         self.connect('button-release-event', self.__button_release_event_cb)
    468478
    469479        pulse_color = XoColor('%s,%s' % (style.COLOR_BUTTON_GREY.get_svg(),
    470480                                         style.COLOR_TRANSPARENT.get_svg()))
    class SugarAdhocView(EventPulsingIcon): 
    473483                                       (profile.get_color().get_stroke_color(),
    474484                                        style.COLOR_TRANSPARENT.get_svg()))
    475485        self.props.base_color = self._state_color
     486        self.palette_invoker.props.toggle_palette = True
    476487        self._palette = self._create_palette()
    477488        self.set_palette(self._palette)
    478489        self._palette_icon.props.xo_color = self._state_color
    class SugarAdhocView(EventPulsingIcon): 
    486497        palette_ = palette.Palette(glib.markup_escape_text(text),
    487498                                   icon=self._palette_icon)
    488499
    489         self._connect_item = MenuItem(_('Connect'), 'dialog-ok')
     500        self.menu_box = Gtk.VBox()
     501
     502        self._connect_item = PaletteMenuItem(_('Connect'))
     503        icon = Icon(icon_size=Gtk.IconSize.MENU, icon_name='dialog-ok')
     504        self._connect_item.set_image(icon)
    490505        self._connect_item.connect('activate', self.__connect_activate_cb)
    491         palette_.menu.append(self._connect_item)
    492         self._connect_item.show()
     506        self.menu_box.add(self._connect_item)
    493507
    494         self._disconnect_item = MenuItem(_('Disconnect'), 'media-eject')
    495         self._disconnect_item.connect('activate',
    496                                       self.__disconnect_activate_cb)
    497         palette_.menu.append(self._disconnect_item)
     508        self._disconnect_item = PaletteMenuItem(_('Disconnect'))
     509        icon = Icon(icon_size=Gtk.IconSize.MENU, icon_name='media-eject')
     510        self._disconnect_item.set_image(icon)
     511        self._disconnect_item.connect('activate', self.__disconnect_activate_cb)
     512        self.menu_box.add(self._disconnect_item)
    498513
    499         self.connect_to_palette_pop_events(palette)
     514        palette_.set_content(self.menu_box)
     515        self.menu_box.show_all()
     516        self._disconnect_item.hide()
    500517
    501         return palette_
     518        self.connect_to_palette_pop_events(palette_)
    502519
    503     def __button_release_event_cb(self, icon, event):
    504         self._palette.popup(immediate=True,
    505                             state=palette.Palette.SECONDARY)
     520        return palette_
    506521
    507522    def __connect_activate_cb(self, icon):
    508523        get_adhoc_manager_instance().activate_channel(self._channel)
    class OlpcMeshView(EventPulsingIcon): 
    592607        self._active = False
    593608        device = mesh_mgr.mesh_device
    594609
    595         self.connect('button-release-event', self.__button_release_event_cb)
    596 
    597610        interface_props = dbus.Interface(device, dbus.PROPERTIES_IFACE)
    598611        interface_props.Get(network.NM_DEVICE_IFACE, 'State',
    599612                            reply_handler=self.__get_device_state_reply_cb,
    class OlpcMeshView(EventPulsingIcon): 
    615628                                         style.COLOR_TRANSPARENT.get_svg()))
    616629        self.props.pulse_color = pulse_color
    617630        self.props.base_color = profile.get_color()
     631        self.palette_invoker.props.toggle_palette = True
    618632        self._palette = self._create_palette()
    619633        self.set_palette(self._palette)
    620634
    class OlpcMeshView(EventPulsingIcon): 
    622636        text = _('Mesh Network %d') % (self._channel, )
    623637        _palette = palette.Palette(glib.markup_escape_text(text))
    624638
    625         self._connect_item = MenuItem(_('Connect'), 'dialog-ok')
     639        self.menu_box = Gtk.VBox()
     640
     641        self._connect_item = PaletteMenuItem(_('Connect'))
     642        icon = Icon(icon_size=Gtk.IconSize.MENU, icon_name='dialog-ok')
     643        self._connect_item.set_image(icon)
    626644        self._connect_item.connect('activate', self.__connect_activate_cb)
    627         _palette.menu.append(self._connect_item)
     645        self.menu_box.add(self._connect_item)
     646
     647        _palette_.set_content(self.menu_box)
     648        self.menu_box.show_all()
    628649
    629650        return _palette
    630651
    class OlpcMeshView(EventPulsingIcon): 
    691712    def __connect_activate_cb(self, icon):
    692713        self._connect()
    693714
    694     def __button_release_event_cb(self, icon, event):
    695         self._palette.popup(immediate=True,
    696                             state=palette.Palette.SECONDARY)
    697 
    698715    def _connect(self):
    699716        self._mesh_mgr.user_activate_channel(self._channel)
    700717