/[Frey]/trunk/lib/Frey/IconBrowser.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/Frey/IconBrowser.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 972 - (hide annotations)
Fri Jan 9 19:33:26 2009 UTC (15 years, 4 months ago) by dpavlin
File size: 1991 byte(s)
draw class includes and refactor parts of code
1 dpavlin 553 package Frey::IconBrowser;
2     use Moose;
3    
4     extends 'Frey';
5     with 'Frey::Web';
6 dpavlin 555 with 'Frey::Web::CombineImages';
7 dpavlin 818 with 'Frey::File';
8 dpavlin 553
9 dpavlin 555 use Data::Dump qw/dump/;
10    
11 dpavlin 553 has path => (
12     is => 'rw',
13     isa => 'Str',
14     required => 1,
15     default => 'static/icons/fugue/',
16     );
17    
18 dpavlin 608 has show_names => (
19     is => 'rw',
20     isa => 'Bool',
21     required => 1,
22     default => 1,
23     );
24    
25 dpavlin 553 sub as_markup {
26     my ($self) = @_;
27    
28 dpavlin 608 $self->title( 'icons - ' . $self->path );
29    
30 dpavlin 553 my $extension = '\.(?:png)$';
31 dpavlin 972 my @icons = $self->dir_extension( $self->path, qr{$extension} );
32 dpavlin 553
33 dpavlin 972 my ( $combined_path, $styles ) = $self->combine_images( @icons );
34 dpavlin 553
35 dpavlin 608 my $width = 0;
36     foreach ( @icons ) {
37     my $l = length($_);
38     $width = $l if $l > $width;
39     }
40    
41     $width = 2 if ! $self->show_names;
42    
43     $self->add_css(qq|
44     h1 { font-size: 20px }
45     /* group */
46     div.g {
47     float: left;
48     clear: both;
49     }
50     /* individual icon */
51     div.i {
52     color: #888;
53     width: ${width}ex;
54     float: left;
55     }
56     |);
57    
58     my $html = '<div class="g">';
59 dpavlin 553 my $base;
60    
61     foreach my $icon ( @icons ) {
62     my $name = $icon;
63 dpavlin 972 $name =~ s{^[\w/]*/([^/]+)$extension}{$1};
64 dpavlin 553
65 dpavlin 608 if ( ! $base ) {
66     $base = $name;
67     $html .= qq|<h1>$name</h1>|;
68     }
69    
70 dpavlin 555 my $desc = '';
71 dpavlin 553
72     my $bl = length $base;
73    
74 dpavlin 608 if ( $name =~ m{_} && substr($name, 0, $bl) eq $base ) {
75 dpavlin 553 ($name,$desc) = (
76     substr($name,0,$bl),
77     substr($name,$bl)
78     );
79     } else {
80     $base = $name;
81 dpavlin 560 warn "# new base $base" if $self->debug;
82 dpavlin 608 $html .= qq|
83     </div>
84     <div class="g">
85     <h1>$name</h1>
86     |;
87 dpavlin 553 }
88    
89     # $html .= qq|<img src="/| . $self->path . qq|/$icon" alt="$icon"> <b>$name</b>$desc<br/>\n|;
90     # $html .= qq|<b>$name</b>$desc<br/>\n|;
91    
92 dpavlin 972 my $path = $icon;
93     $path = $self->path . '/' . $icon unless $icon =~ m{[\w/]+/[^/]+$};
94 dpavlin 553
95 dpavlin 555 my $pic = $styles->{$path} || die "can't find pic for $path in ",dump( $styles );
96 dpavlin 608 $html .= ''
97     . qq|<div title="$icon" class="i">$pic|
98     . ( $self->show_names ? qq|<b>$name</b>$desc| : '' )
99     . qq|</div>\n|
100     ;
101 dpavlin 553 }
102    
103    
104 dpavlin 608 $html .= '</div>';
105 dpavlin 553 # $html .= qq|<img src="$combined_path">|;
106     return $html;
107     }
108    
109     1;

  ViewVC Help
Powered by ViewVC 1.1.26