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

the proper way to do inheritance



Following is an example of how I currently fo inheritance.  Is this the "right"
way?  I remember there being some discussion earlier on changes to how Gtk2-Perl
was doing inheritance, but it referenced things I am not doing (like the type
system).  I have had no problems with this style, but I am wondering if there is
a better/more robust way of doing OO with Gtk2-Perl.

package GnomeSQLEditor::Editor;

	use strict;

	use Gtk2;
	use Gnome2;

	use base 'Gtk2::Notebook';

	sub new {
		my ($class, $text) = @_;
		my $self           = $class->SUPER::new(@_);
		$self->{sql}       = Gtk2::TextView->new;
		$self->{status}    = Gtk2::TextView->new;
		$self->{dirty}     = 0;
		my $pane      = Gtk2::VPaned->new;
		my $sw_sql    = Gtk2::ScrolledWindow->new;
		my $sw_status = Gtk2::ScrolledWindow->new;

		$self->append_page($pane, Gtk2::Label->new("Editor"));
		$pane->pack1($sw_sql, 1, 0);
		$sw_sql->add($self->{sql});
		$pane->pack2($sw_status, 1, 1);
		$sw_status->add($self->{status});

		$self->set_tab_pos('bottom'); #FIXME: this should be an option

		$self->{sql}->modify_font(
			Gtk2::Pango::FontDescription->from_string(
				"Monospace 12" #FIXME: should be an option
			)
		);

		my $buffer = $self->{sql}->get_buffer;
		$buffer->set_text($text);
		$buffer->signal_connect(
			'changed',
			sub { $self->{dirty} = 1 }
		);
		
		$self->show_all;

		return bless $self, $class;
	}

	sub is_dirty { $_[0]->{'dirty'} }

	sub get_text {
		my $self   = shift;
		my $buffer = $self->{'sql'}->get_buffer;
		$buffer->get_text($buffer->get_bounds, 0);
	}

	sub execute {...}
	sub open    {...}
	sub close   {...}
	sub save    {...}
	sub save_as {...}



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