#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (C) 2013 Agustin Zubiaga # 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)