Re: Gridlines in Gtk2::TreeView
- From: muppet <scott asofyet org>
- To: gtk-perl mailing list <gtk-perl-list gnome org>
- Subject: Re: Gridlines in Gtk2::TreeView
- Date: Fri, 27 Aug 2004 19:21:20 -0400
this is really a question for gtk-app-devel-list, as it's not actually
perl-specific.
On Aug 27, 2004, at 5:51 PM, ofey aikon wrote:
Is there a way I can get gridlines separating columns (and rows too,
perhaps) using Gtk2::Treeview. Like a spreadsheet, for example. Its
much easier to spot which cell belongs to which column that way.
TreeView is explicitly not designed to be a grid, so doing
spreadsheetish things with it will be hard.
Is this something that should be done using themes ?
my gut says yes, but i don't know any particulars.
Is there an alternate solution to my problem ?
an Evil But Fun solution to try would be to create a custom cell
renderer that simply draws a skinny vertical separator, and pack one of
those into each of the columns after the first. this could have
performance problems if you have a lot of data (since you'll be
marshaling a *lot* of vfunc calls to perl), and would not be terribly
theme-friendly, but it would be an interesting experiement.
alternatively, you could set the background color for every other
column's renderer to a different color to create vertical striping,
like this:
use strict;
use Gtk2 -init;
use Glib ':constants';
my $ncols = 10;
my $nrows = 10;
# list store with a bunch of columns and several rows of random data
my $model = Gtk2::ListStore->new (('Glib::String')x$ncols);
for (1..$nrows) {
$model->set ($model->append,
map { $_, sprintf ("%8.3f", rand) } 0..$ncols-1);
}
# view with a text renderer for each column
my $view = Gtk2::TreeView->new ($model);
for (0..$ncols-1) {
my $cell = Gtk2::CellRendererText->new;
# make every other cell gray. this uses a hardcoded color, so it
# won't play nicely with themes, but at least shows that it's easy
# to set the color once you figure out what you want it to be.
# there's also the cell-background-gdk property if you have a
# Gtk2::Gdk::Color instead of a string.
$cell->set (cell_background => '#eeeeee')
if $_ % 2;
$view->append_column (Gtk2::TreeViewColumn->new_with_attributes
("col $_", $cell, text => $_));
}
my $window = Gtk2::Window->new;
$window->signal_connect (destroy => sub {Gtk2->main_quit});
$window->add ($view);
$window->show_all;
Gtk2->main;
--
Holy crap, dude, we have kids!
-- Elysse, six days after giving birth to twins
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]