[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Text view vertical scroll problem



Well thanks a bunch for pointing out the problem, the underlying problem,
and the fundamental problem of using the old version of Gtk.  I thought I
was golden using Stephen Wilhelm's tutorial, but it looks like that is all
in older Gtk.  By any chance, is a Perl-Gtk2 tutorial being
updated/created?  My impression from the gtk2-perl sourceforge site is
"no."

muppet wrote:

> On Wednesday, February 25, 2004, at 10:55 PM, Adam Preble wrote:
>
> > The code is:
> >
> > use Gtk;
>
> please do not write new programs with Gtk-Perl.  both Gtk-Perl and the
> 1.x series of gtk+ that it binds are obsolete, and have been for some
> time.
>
> gtk2-perl, at http://gtk2-perl.sf.net ,  is the currently maintained
> and supported perl binding for gtk+.  the Gtk2::TextView /
> Gtk2::TextBuffer stuff is a little more complicated but far more
> powerful than Gtk::Text ever thought of being.  and horizontal
> scrolling works fine with it.
>
> that said, your problem is very simple:
>
> these two lines:
>    $scrolled_window = new Gtk::ScrolledWindow( $text->hadj, $text->vadj
> );
>    ...
>    $scrolled_window->add_with_viewport( $text );
>
> should be
>    $scrolled_window = new Gtk::ScrolledWindow;
>    ...
>    $scrolled_window->add( $text );
>
> The text widget natively knows how to scroll, so all you have to do is
> add it to a scrolled window and gtk+ takes care of the rest.  by using
> a viewport you confused gtk+; the viewports are for use with widgets
> that *don't* know how to scroll themselves, like vboxen, layouts, or
> drawing areas.
>
> and, again, your whole program would be quite a bit shorter in
> gtk2-perl, where the Gtk2::Dialog takes care of a lot of stuff you had
> to do yourself:
>
> #use Glib qw(TRUE FALSE);  # can do this in 1.040
> use Glib;
> use Gtk2;
> use strict;
>
> use constant TRUE => 1;
> use constant FALSE => !TRUE;
>
> init Gtk2;
>
> my ($window, $scrolled_window, $textview);
>
> # Create a new dialog window for the scrolled window
> $window = new Gtk2::Dialog "Scrolled Window Example", undef, [],
>                             'gtk-close' => 'close';
> $window->set_default_response ('close');
> $window->signal_connect( response => sub { Gtk2->main_quit; } );
> #$window->set_border_width( 0 );
> $window->set_default_size( 300, 300 );
>
> # Create the Text widget
> $textview = new Gtk2::TextView;
> $textview->set (editable => FALSE);
>
> # Load this file into the text window
> $/ = undef;
> open FILE, $0 or die "can't open $0: $!\n";
> my $text = <FILE>;
> close FILE;
>
> my $textbuffer = $textview->get_buffer;
> $textbuffer->create_tag ('mono', family => 'Monospace'); # fixed-width
> font
> $textbuffer->insert_with_tags_by_name ($textbuffer->get_start_iter,
>                                         $text, 'mono');
>
> # Create a new scrolled window
> $scrolled_window = new Gtk2::ScrolledWindow;
> $scrolled_window->set_border_width( 5 );
> $scrolled_window->set_shadow_type( 'etched-in' );
> $scrolled_window->set_policy( "automatic", "automatic" );
>
> $window->vbox->pack_start( $scrolled_window, TRUE, TRUE, 0 );
> $scrolled_window->show();
>
> # Add text view to the scrolled window
> $scrolled_window->add( $textview );
> $textview->show();
>
> $window->show();
>
> main Gtk2;
>
> --
> "it's hard to be eventful when you have this much style."
>     - me, rationalizing yet another night of sitting at home.




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]