Ticket #4272: helpbutton.py.diff

File helpbutton.py.diff, 3.6 KB (added by humitos, 11 years ago)

A work in progress. I have to wait...

  • helpbutton.py

    diff --git a/helpbutton.py b/helpbutton.py
    index 3a4c286..34ddf24 100644
    a b from gi.repository import Gdk 
    2525from gi.repository import GObject
    2626
    2727from sugar3.graphics.toolbutton import ToolButton
     28from sugar3.graphics.palette import ToolInvoker
    2829from sugar3.graphics.icon import Icon
    2930from sugar3.graphics import style
    3031
    class HelpButton(Gtk.ToolItem): 
    3435    def __init__(self, **kwargs):
    3536        GObject.GObject.__init__(self)
    3637
    37         help_button = ToolButton('toolbar-help')
    38         help_button.set_tooltip(_('Help'))
    39         self.add(help_button)
     38        self.help_button = ToolButton('toolbar-help')
     39        self.help_button.set_tooltip(_('Help'))
     40        self.add(self.help_button)
    4041
    41         self._palette = help_button.get_palette()
     42        # import epdb;epdb.set_trace()
    4243
    43         sw = Gtk.ScrolledWindow()
    44         sw.set_size_request(int(Gdk.Screen.width() / 2.8),
    45             Gdk.Screen.height() - style.GRID_CELL_SIZE * 3)
    46         sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
     44        self._palette_invoker = ToolInvoker()
     45        self._palette = None  # help_button.get_palette()
     46        # self._palette = help_button.get_palette()
     47
     48        self._palette_invoker.attach_tool(self)
     49        self._palette_invoker.props.toggle_palette = True
     50        self._palette_invoker.props.lock_palette = True
    4751
    4852        self._max_text_width = int(Gdk.Screen.width() / 3) - 600
     53
     54        # content of the palette
     55        # alignment = Gtk.Alignment()
     56        # alignment.props.left
    4957        self._vbox = Gtk.Box()
     58        self._vbox.set_border_width(10)
    5059        self._vbox.set_orientation(Gtk.Orientation.VERTICAL)
    5160        self._vbox.set_homogeneous(False)
    5261
    53         hbox = Gtk.Box()
    54         hbox.pack_start(self._vbox, False, True, 0)
    55 
    56         sw.add_with_viewport(hbox)
    57 
    58         self._palette.set_content(sw)
    59         sw.show_all()
     62        # self.create_palette()
    6063
    61         help_button.connect('clicked', self.__help_button_clicked_cb)
     64    #     help_button.connect('clicked', self.__help_button_clicked_cb)
    6265
    63     def __help_button_clicked_cb(self, button):
    64         self._palette.popup(immediate=True, state=1)
     66    # def __help_button_clicked_cb(self, button):
     67    #     self._palette.popup(immediate=True, state=1)
    6568
    6669    def add_section(self, section_text):
    6770        hbox = Gtk.Box()
    class HelpButton(Gtk.ToolItem): 
    8487            hbox.add(_icon)
    8588        hbox.show_all()
    8689        self._vbox.pack_start(hbox, False, False, padding=5)
     90
     91    def create_palette(self):
     92        self._palette = self.help_button.get_palette()
     93
     94        sw = Gtk.ScrolledWindow()
     95        sw.set_size_request(int(Gdk.Screen.width() / 2.8),
     96            Gdk.Screen.height() - style.GRID_CELL_SIZE * 3)
     97        sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
     98
     99        hbox = Gtk.Box()
     100        hbox.pack_start(self._vbox, False, True, 0)
     101
     102        sw.add_with_viewport(hbox)
     103
     104        self._palette.set_content(sw)
     105        sw.show_all()
     106        return self._palette
     107
     108    def set_expanded(self, expanded):
     109        import logging
     110        logging.debug('### set_expanded')
     111        if not expanded:
     112            self._palette_invoker.notify_popdown()
     113            return
     114
     115    def get_palette_invoker(self):
     116        return self._palette_invoker
     117
     118    def set_palette_invoker(self, palette_invoker):
     119        self._palette_invoker.detach()
     120        self._palette_invoker = palette_invoker
     121
     122    palette_invoker = GObject.property(
     123        type=object, setter=set_palette_invoker, getter=get_palette_invoker)