diff options
author | Daniel Francis <francis@sugarlabs.org> | 2012-10-23 12:57:06 (GMT) |
---|---|---|
committer | Daniel Francis <francis@sugarlabs.org> | 2012-10-23 12:57:06 (GMT) |
commit | 9c7c915efa9d1815ea2e47f29ff549781d50c083 (patch) | |
tree | 12af6185de444135dc87573012f33afb6c8af7c9 /itemgroup.py |
Initial commit
Moved from git.sl.org/sweetener/sweetener
Signed-off-by: Daniel Francis <francis@sugarlabs.org>
Diffstat (limited to 'itemgroup.py')
-rw-r--r-- | itemgroup.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/itemgroup.py b/itemgroup.py new file mode 100644 index 0000000..3e4780e --- /dev/null +++ b/itemgroup.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 S. Daniel Francis <francis@sugarlabs.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. + +import gobject +import gtk + + +class ItemGroup(gobject.GObject): + def __init__(self, box, name=None, icon=None): + gobject.GObject.__init__(self) + self.items = [] + self.first_important = True + self.item = gtk.MenuItem(name) + box.menubar.append(self.item) + self.menu = gtk.Menu() + self.item.set_submenu(self.menu) + self.menu.show() + self.item.show() + self.activity = box._parent + self.accel_group = box._parent.accel_group + self.toolbar = box.toolbar + + def append_item(self, item): + item.accel_group = self.accel_group + menuitem = item.get_menu_item() + menuitem.show() + self.menu.append(menuitem) + if item.important: + if self.first_important and len(self.toolbar): + separator = gtk.SeparatorToolItem() + separator.show() + self.toolbar.insert(separator, -1) + self.first_important = False + tool_item = item.get_tool_item() + self.toolbar.insert(tool_item, -1) + tool_item.show() + self.items.append(item) + + def append_separator(self, important=False): + menuitem = gtk.SeparatorMenuItem() + menuitem.show() + self.menu.append(menuitem) + if important: + toolitem = gtk.SeparatorToolItem() + toolitem.show() + self.toolbar.insert(toolitem, -1) + return toolitem + + +class GhostGroup(ItemGroup): + + def __init__(self, box, name): + ItemGroup.__init__(self, box, name) + + +class SubGroup(ItemGroup): + def __init__(self, group, name=None): + gobject.GObject.__init__(self) + self.items = [] + self.item = gtk.MenuItem(name) + group.menu.append(self.item) + self.menu = gtk.Menu() + self.item.set_submenu(self.menu) + self.menu.show() + self.item.show() + self.accel_group = group.accel_group + self.toolbar = group.toolbar + self.first_important = True |