Provide fast access to all sub-widgets in Toolbar

This commit is contained in:
Aleksey Lim 2009-07-13 03:11:39 +00:00
parent 5d2c5b98ff
commit 165b9e1e05
2 changed files with 40 additions and 29 deletions

View File

@ -46,5 +46,7 @@ tollbarbutton_4 = ToolbarButton(
icon_name='document-save') icon_name='document-save')
toolbar.top.insert(tollbarbutton_4, -1) toolbar.top.insert(tollbarbutton_4, -1)
print [i.props.page for i in toolbar.subs]
window.show_all() window.show_all()
gtk.main() gtk.main()

View File

@ -115,74 +115,84 @@ class Toolbar(gtk.VBox):
def __init__(self, padding=style.TOOLBOX_HORIZONTAL_PADDING): def __init__(self, padding=style.TOOLBOX_HORIZONTAL_PADDING):
gtk.VBox.__init__(self) gtk.VBox.__init__(self)
self._top = gtk.Toolbar() self.__top = gtk.Toolbar()
self._top.owner = self self.__top.owner = self
top_widget = _align(gtk.EventBox, self._top) top_widget = _align(gtk.EventBox, self.__top)
self.pack_start(top_widget) self.pack_start(top_widget)
self.props.padding = padding self.props.padding = padding
self.modify_bg(gtk.STATE_NORMAL, self.modify_bg(gtk.STATE_NORMAL,
style.COLOR_TOOLBAR_GREY.get_gdk_color()) style.COLOR_TOOLBAR_GREY.get_gdk_color())
self._notebook = gtk.Notebook() self.__notebook = gtk.Notebook()
self._notebook.set_show_border(False) self.__notebook.set_show_border(False)
self._notebook.set_show_tabs(False) self.__notebook.set_show_tabs(False)
self._notebook.show() self.__notebook.show()
self._notebook.connect('notify::page', lambda notebook, pspec: self.__notebook.connect('notify::page', lambda notebook, pspec:
self.emit('current-toolbar-changed', notebook.props.page)) self.emit('current-toolbar-changed', notebook.props.page))
self._top.connect('remove', self._remove_cb) self.__top.connect('remove', self.__remove_cb)
top = property(lambda self: self._top) top = property(lambda self: self.__top)
def get_padding(self): def get_padding(self):
return self._top.parent.props.left_padding return self.__top.parent.props.left_padding
def set_padding(self, pad): def set_padding(self, pad):
self._top.parent.set_padding(0, 0, pad, pad) self.__top.parent.set_padding(0, 0, pad, pad)
padding = gobject.property(type=object, padding = gobject.property(type=object,
getter=get_padding, setter=set_padding) getter=get_padding, setter=set_padding)
def get_subs(self):
out = []
for i in range(self.top.get_n_items()):
page = self.top.get_nth_item(i)
if isinstance(page, ToolbarButton):
out.append(page)
return out
subs = property(get_subs)
def modify_bg(self, state, color): def modify_bg(self, state, color):
if state == gtk.STATE_NORMAL: if state == gtk.STATE_NORMAL:
self._bg = color self._bg = color
self._top.parent.parent.modify_bg(state, color) self.__top.parent.parent.modify_bg(state, color)
self._top.modify_bg(state, color) self.__top.modify_bg(state, color)
def _remove_cb(self, sender, widget): def __remove_cb(self, sender, widget):
if not isinstance(widget, ToolbarButton): if not isinstance(widget, ToolbarButton):
return return
page_no = self._notebook.page_num(widget._page) page_no = self.__notebook.page_num(widget._page)
if page_no != -1: if page_no != -1:
self._notebook.remove_page(page_no) self.__notebook.remove_page(page_no)
if widget.palette: if widget.palette:
widget.palette.popdown(immediate=True) widget.palette.popdown(immediate=True)
def _expanded_page(self): def _expanded_page(self):
if self._notebook.parent is None: if self.__notebook.parent is None:
return None return None
page_no = self._notebook.get_current_page() page_no = self.__notebook.get_current_page()
return self._notebook.get_nth_page(page_no) return self.__notebook.get_nth_page(page_no)
def _shrink_page(self, page): def _shrink_page(self, page):
page_no = self._notebook.page_num(page) page_no = self.__notebook.page_num(page)
if page_no == -1: if page_no == -1:
return return
self._notebook.remove_page(page_no) self.__notebook.remove_page(page_no)
self.remove(self._notebook) self.remove(self.__notebook)
def _expand_page(self, page): def _expand_page(self, page):
for i in range(self._notebook.get_n_pages()): for i in range(self.__notebook.get_n_pages()):
self._notebook.remove_page(0) self.__notebook.remove_page(0)
_setup_page(page, self._bg, self.props.padding) _setup_page(page, self._bg, self.props.padding)
self._notebook.append_page(page) self.__notebook.append_page(page)
if self._notebook.parent is None: if self.__notebook.parent is None:
self.pack_start(self._notebook) self.pack_start(self.__notebook)
class _Box(gtk.EventBox): class _Box(gtk.EventBox):
def __init__(self): def __init__(self):
@ -284,7 +294,6 @@ class _Palette(gtk.Window):
#if self.window: #if self.window:
# self.window.set_accept_focus(accept_focus) # self.window.set_accept_focus(accept_focus)
def popup(self, immediate=False): def popup(self, immediate=False):
self._popdown_anim.stop() self._popdown_anim.stop()