GBrowse
view release on metacpan or search on metacpan
lib/Bio/Graphics/Browser2/Render/HTML.pm view on Meta::CPAN
return '' if $state eq 'off';
my $visible = exists $page_settings->{section_visible}{$id} ?
$page_settings->{section_visible}{$id} : $state eq 'open';
return $self->toggle_section({on=>$visible,%args},
$id,
b($label),
@body);
}
sub toggle_section {
my $self = shift;
my %config = ref $_[0] eq 'HASH' ? %{shift()} : ();
my ($name,$section_title,@section_body) = @_;
my $visible = $config{on};
my $buttons = $self->data_source->button_url;
my $plus = "$buttons/plus.png";
my $minus = "$buttons/minus.png";
my $break = div({-id=>"${name}_break",
-style=>$visible ? 'display:none' : 'display:block'
},' ');
my $show_ctl = div({-id=>"${name}_show",
-class=>'ctl_hidden',
-style=>$visible ? 'display:none' : 'display:inline',
-onClick=>"visibility('$name',1)"
},
img({-src=>$plus,-alt=>'+'}).' '.span({-class=>'tctl'},$section_title));
my $hide_ctl = div({-id=>"${name}_hide",
-class=>'ctl_visible',
-style=>$visible ? 'display:inline' : 'display:none',
-onClick=>"visibility('$name',0)"
},
img({-src=>$minus,-alt=>'-'}).' '.span({-class=>'tctl',-id=>"${name}_title"},$section_title));
my $content = div({-id => $name,
-style=>$visible ? 'display:inline' : 'display:none',
-class => 'el_visible'},
@section_body);
my @class = (-class=>'toggleable');
my @result = $config{nodiv} ? (div({-style=>'float:left',@class},
$show_ctl.$hide_ctl),$content)
:$config{tight}? (div({-style=>'float:left;position:absolute;z-index:10',@class},
$show_ctl.$hide_ctl).$break,$content)
: div({@class},$show_ctl.$hide_ctl,$content);
return wantarray ? @result : "@result";
}
sub can_generate_pdf {
my $self = shift;
my $source = $self->data_source;
return $CAN_PDF if defined $CAN_PDF;
return $CAN_PDF = $source->global_setting('generate pdf')
if defined $source->global_setting('generate pdf');
return $CAN_PDF=1 if `which svg2pdf`;
return $CAN_PDF=0 unless `which inkscape`;
# see whether we have the needed .inkscape and .gnome2 directories
my $home = (getpwuid($<))[7];
my $user = (getpwuid($<))[0];
my $inkscape_dir = File::Spec->catfile($home,'.config','inkscape');
my $gnome2_dir = File::Spec->catfile($home,'.gnome2');
if (-e $inkscape_dir && -w $inkscape_dir
&& -e $gnome2_dir && -w $gnome2_dir) {
return $CAN_PDF=1;
} else {
print STDERR
join(' ',
qq(GBROWSE NOTICE: To enable PDF generation, please enter the directory "$home"),
qq(and run the commands:),
qq("sudo mkdir -p .config/inkscape .gnome2"),
qq(and "sudo chown $user .config/inkscape .gnome2". ),
qq(To turn off this message add "generate pdf = 0"),
qq(to the [GENERAL] section of your GBrowse.conf configuration file.)
);
return $CAN_PDF=0;
}
}
# Truncated version (of track_config) for displaying citation only:
sub display_citation {
my $self = shift;
my $label = shift;
my $state = $self->state();
my $data_source = $self->data_source();
my $segment = $self->thin_segment;
my $length = $segment ? $segment->length : 0;
my $slabel = $data_source->semantic_label($label,$length);
my $key = $self->label2key($slabel);
my @stylesheets;
my @style = shellwords($self->setting('stylesheet') || '/gbrowse2/gbrowse.css');
for my $s (@style) {
my ($url,$media) = $s =~ /^([^\(]+)(?:\((.+)\))?/;
$media ||= 'all';
push @stylesheets, CGI::Link({-rel=>'stylesheet',
-type=>'text/css',
-href=>$self->globals->resolve_path($url,'url'),
-media=>$media});
}
my $return_html = start_html(-title => $key, -head => \@stylesheets);
my $cit_txt = citation( $data_source, $label, $self->language ) || $self->translate('NO_CITATION');
if (my ($lim) = $slabel =~ /\:(\d+)$/) {
$key .= " (at >$lim bp)";
}
my $citation = div({-class => 'searchbody', -style => 'padding:10px;width:70%'}, h4(escape($key)), $cit_txt);
$return_html
.= table( TR( td( { -valign => 'top' }, $citation ) ) );
$return_html .= end_html();
return $return_html;
}
sub format_autocomplete {
my $self = shift;
( run in 2.105 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )