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]