diff options
Diffstat (limited to 'widgets.py')
-rw-r--r-- | widgets.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/widgets.py b/widgets.py new file mode 100644 index 0000000..821b60c --- /dev/null +++ b/widgets.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright (C) 2013 Agustin Zubiaga <aguz@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 St, Fifth Floor, Boston, MA 02110-1301 USA + +from gi.repository import Gtk +from gi.repository import Gdk +from gi.repository import GdkPixbuf + +import os +from sugar3.activity import activity +from sugar3.graphics import style + +ICONS_DIR = os.path.join(activity.get_bundle_path(), "icons") + + +def get_icon(icon_id): + icon_path = os.path.join(ICONS_DIR, icon_id + ".svg") + if not os.path.exists(icon_path): + icon_path = os.path.join(ICONS_DIR, "bluetooth.svg") + + return icon_path + + +class DeviceList(Gtk.TreeView): + + def __init__(self): + super(DeviceList, self).__init__() + + self.model = Gtk.ListStore(GdkPixbuf.Pixbuf, str, str) + self.set_model(self.model) + + column = Gtk.TreeViewColumn() + cell = Gtk.CellRendererPixbuf() + column.pack_start(cell, False) + column.add_attribute(cell, "pixbuf", 0) + self.append_column(column) + + column = Gtk.TreeViewColumn() + cell = Gtk.CellRendererText() + column.pack_start(cell, False) + column.add_attribute(cell, "text", 1) + self.append_column(column) + + column = Gtk.TreeViewColumn() + cell = Gtk.CellRendererText() + column.pack_start(cell, False) + column.add_attribute(cell, "text", 2) + self.append_column(column) + + #self.modify_base(Gdk.Color(255, 255, 255)) + + def add_device(self, i): + icon = get_icon(i["Icon"]) + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(icon, + style.MEDIUM_ICON_SIZE, style.MEDIUM_ICON_SIZE) + self.model.append([pixbuf, i["Name"], i["Address"]]) + + def set_devices(self, devices): + for i in devices: + self.add_device(i)
\ No newline at end of file |