File Coverage

lib/Gtk2/Ex/MindMapView/ContentFactory.pm
Criterion Covered Total %
statement 10 12 83.3
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 14 16 87.5


line stmt bran cond sub pod time code
1             package Gtk2::Ex::MindMapView::ContentFactory;
2              
3             our $VERSION = '0.000001';
4              
5 9     9   54 use warnings;
  9         16  
  9         312  
6 9     9   50 use strict;
  9         14  
  9         1081  
7 9     9   47 use Carp;
  9         32  
  9         709  
8              
9 9     9   6765 use Gtk2::Ex::MindMapView::Content::EllipsisText;
  0            
  0            
10             use Gtk2::Ex::MindMapView::Content::Picture;
11             use Gtk2::Ex::MindMapView::Content::Uri;
12              
13             use Gtk2::Ex::MindMapView::ArgUtils;
14              
15             use List::Util;
16              
17             use Glib ':constants';
18              
19             sub new
20             {
21             my $class = shift(@_);
22              
23             my @attributes = @_;
24              
25             my $self = {};
26              
27             bless $self, $class;
28              
29             my %attributes = @attributes;
30              
31             args_valid(\%attributes, qw(view font_desc text_color_gdk));
32              
33             args_required(\%attributes, qw(view));
34              
35             args_store($self, \%attributes);
36              
37             if (!($self->{view}->isa('Gtk2::Ex::MindMapView')))
38             {
39             carp "Invalid Gtk2::Ex::MindMapView argument.\n";
40             }
41              
42             arg_default($self, "font_desc", Gtk2::Pango::FontDescription->from_string("Ariel Normal 10"));
43              
44             arg_default($self, "text_color_gdk", Gtk2::Gdk::Color->parse('black'));
45              
46             return $self;
47             }
48              
49              
50             sub create_content
51             {
52             my ($self, @attributes) = @_;
53              
54             my %attributes = @attributes;
55              
56             args_valid(\%attributes, qw(type text uri pixbuf browser font_desc text_color_gdk));
57              
58             args_required(\%attributes, qw(type));
59              
60             my $type = $attributes{type};
61              
62             my $text = $attributes{text};
63              
64             my $uri = $attributes{uri};
65              
66             my $browser = $attributes{browser};
67              
68             my $pixbuf = $attributes{pixbuf};
69              
70             my $font_desc = (defined $attributes{font_desc}) ?
71             $attributes{font_desc} : $self->{font_desc};
72              
73             my $text_color_gdk = (defined $attributes{text_color_gdk}) ?
74             $attributes{text_color_gdk} : $self->{text_color_gdk};
75              
76             if ($type eq 'Gtk2::Ex::MindMapView::Content::EllipsisText')
77             {
78             return Gtk2::Ex::MindMapView::Content::EllipsisText->new(
79             group=>$self->{view}->root,
80             text=>$text,
81             font_desc=>$font_desc,
82             text_color_gdk=>$text_color_gdk);
83             }
84              
85             if ($type eq 'Gtk2::Ex::MindMapView::Content::Picture')
86             {
87             return Gtk2::Ex::MindMapView::Content::Picture->new(
88             group=>$self->{view}->root,
89             pixbuf=>$pixbuf);
90             }
91              
92              
93             if ($type eq 'Gtk2::Ex::MindMapView::Content::Uri')
94             {
95             return Gtk2::Ex::MindMapView::Content::Uri->new(
96             group=>$self->{view}->root,
97             browser=>$browser,
98             text=>$text, uri=>$uri,
99             font_desc=>$font_desc,
100             text_color_gdk=>$text_color_gdk);
101             }
102              
103             croak "Unexpected content type: $type\n";
104             }
105              
106              
107             1; # Magic true value required at end of module
108             __END__