aa8a5e70c4
Signed-off-by: James Cameron <quozl@laptop.org>
74 lines
1.9 KiB
Python
74 lines
1.9 KiB
Python
import os
|
|
import time
|
|
|
|
from gi.repository import Gtk
|
|
|
|
from sugar3.graphics import style
|
|
from sugar3.graphics.icon import CellRendererIcon
|
|
from sugar3.graphics.xocolor import XoColor
|
|
from sugar3.graphics.scrollingdetector import ScrollingDetector
|
|
from sugar3.graphics.palettewindow import TreeViewInvoker
|
|
import common
|
|
|
|
|
|
def _scroll_start_cb(event, treeview, invoker):
|
|
print("Scroll starts")
|
|
invoker.detach()
|
|
|
|
|
|
def _scroll_end_cb(event, treeview, invoker):
|
|
print("Scroll ends")
|
|
invoker.attach_treeview(treeview)
|
|
|
|
|
|
test = common.Test()
|
|
test.show()
|
|
|
|
model = Gtk.ListStore(str)
|
|
|
|
data_dir = os.getenv('GTK_DATA_PREFIX', '/usr/')
|
|
|
|
iconlist = os.listdir(os.path.join(data_dir,
|
|
'share/icons/sugar/scalable/actions/'))
|
|
print("Displaying %s icons" % len(iconlist))
|
|
for icon in iconlist:
|
|
icon = os.path.basename(icon)
|
|
icon = icon[:icon.find('.')]
|
|
model.append([icon])
|
|
|
|
scrolled = Gtk.ScrolledWindow()
|
|
scrolled.set_size_request(800, 800)
|
|
treeview = Gtk.TreeView()
|
|
|
|
treeview.set_model(model)
|
|
scrolled.add(treeview)
|
|
test.pack_start(scrolled, True, True, 0)
|
|
test.show_all()
|
|
|
|
col = Gtk.TreeViewColumn()
|
|
treeview.append_column(col)
|
|
|
|
xo_color = XoColor('#FF0000,#00FF00')
|
|
cell_icon = CellRendererIcon()
|
|
cell_icon.props.width = style.GRID_CELL_SIZE
|
|
cell_icon.props.height = style.GRID_CELL_SIZE
|
|
cell_icon.props.size = style.STANDARD_ICON_SIZE
|
|
cell_icon.props.xo_color = xo_color
|
|
|
|
col.pack_start(cell_icon, expand=False)
|
|
col.add_attribute(cell_icon, 'icon-name', 0)
|
|
cell_text = Gtk.CellRendererText()
|
|
col.pack_start(cell_text, expand=True)
|
|
col.add_attribute(cell_text, 'text', 0)
|
|
|
|
invoker = TreeViewInvoker()
|
|
invoker.attach_treeview(treeview)
|
|
|
|
detector = ScrollingDetector(scrolled)
|
|
detector.connect('scroll-start', _scroll_start_cb, treeview, invoker)
|
|
detector.connect('scroll-end', _scroll_end_cb, treeview, invoker)
|
|
|
|
if __name__ == '__main__':
|
|
time_ini = time.time()
|
|
common.main(test)
|