Gtk2::Ex::FormFactory::Combo - A Combo in a FormFactory framework


Gtk2-Ex-FormFactory documentation Contained in the Gtk2-Ex-FormFactory distribution.

Index


Code Index:

NAME

Top

Gtk2::Ex::FormFactory::Combo - A Combo in a FormFactory framework

SYNOPSIS

Top

  Gtk2::Ex::FormFactory::Combo->new (
    presets => List reference of preset values,
    ...
    Gtk2::Ex::FormFactory::Widget attributes
  );

DESCRIPTION

Top

This class implements a text entry with a popdown list of presets in a Gtk2::Ex::FormFactory framework. The content of the entry is the value of the associated application object attribute.

OBJECT HIERARCHY

Top

  Gtk2::Ex::FormFactory::Intro

  Gtk2::Ex::FormFactory::Widget
  +--- Gtk2::Ex::FormFactory::Combo

  Gtk2::Ex::FormFactory::Layout
  Gtk2::Ex::FormFactory::Rules
  Gtk2::Ex::FormFactory::Context
  Gtk2::Ex::FormFactory::Proxy

ATTRIBUTES

Top

Attributes are handled through the common get_ATTR(), set_ATTR() style accessors, but they are mostly passed once to the object constructor and must not be altered after the associated FormFactory was built.

presets = LIST REF [optional]

You may specify a static list of preset values for the Combo with this attribute. If preset is not set, you need to implement the get_ATTR_presets method as explained beyond.

REQUIREMENTS FOR ASSOCIATED APPLICATION OBJECTS

Top

Application objects represented by a Gtk2::Ex::FormFactory::Combo may define additional methods. The naming of the methods listed beyond uses the standard get_ prefix for the attribute read accessor. ATTR needs to be replaced by the actual name of the attribute associated with the widget.

get_ATTR_presets

This method must return a reference to an array containing the presets for this Combo box, but must be implemented only if you didn't specify a static presets list using the presets attribute.

AUTHORS

Top

 Jörn Reder <joern at zyn dot de>

COPYRIGHT AND LICENSE

Top


Gtk2-Ex-FormFactory documentation Contained in the Gtk2-Ex-FormFactory distribution.

package Gtk2::Ex::FormFactory::Combo;

use strict;

use base qw( Gtk2::Ex::FormFactory::Widget );

sub get_type { "combo" }

sub get_presets			{ shift->{presets}			}
sub set_presets			{ shift->{presets}		= $_[1]	}

sub new {
	my $class = shift;
	my %par = @_;
	my ($presets) = $par{'presets'};
	
	my $self = $class->SUPER::new(@_);
	
	$self->set_presets($presets);
	
	return $self;
}


sub object_to_widget {
	my $self = shift;

	my $gtk_combo = $self->get_gtk_widget;
	my $presets   = $self->get_presets ||
			$self->get_proxy->get_attr_presets(
				$self->get_attr, $self->get_name
			);

	$gtk_combo->set_popdown_strings(@{$presets})
		if ref $presets eq 'ARRAY';
	
	$gtk_combo->entry->set_text($self->get_object_value);

	1;
}

sub widget_to_object {
	my $self = shift;
	
	$self->set_object_value ($self->get_gtk_widget->entry->get_text);
	
	1;
}

sub empty_widget {
	my $self = shift;
	
	$self->get_gtk_widget->entry->set_text("");
	
	1;
}

sub backup_widget_value {
	my $self = shift;
	
	$self->set_backup_widget_value ($self->get_gtk_widget->entry->get_text);

	1;
}

sub restore_widget_value {
	my $self = shift;
	
	$self->get_gtk_widget->entry->set_text($self->get_backup_widget_value);
	
	1;
}

sub get_gtk_tip_widgets {
	[ shift->get_gtk_widget->entry ];
}

sub get_gtk_check_widget {
	shift->get_gtk_widget->entry;
}

sub get_widget_check_value {
	$_[0]->get_gtk_check_widget->get_text;
}

sub connect_changed_signal {
	my $self = shift;
	
	$self->get_gtk_widget->entry->signal_connect (
	  changed => sub { $self->widget_value_changed },
	);
	
	1;
}

1;

__END__