|  |  |  | @ -4,6 +4,7 @@ use Tk;@@ -4,6 +4,7 @@ use Tk; | 
			
		
	
		
			
				
					|  |  |  |  | use Tk::Font; | 
			
		
	
		
			
				
					|  |  |  |  | use Tk::ColorChoice; | 
			
		
	
		
			
				
					|  |  |  |  | use base 'Tk::Frame'; | 
			
		
	
		
			
				
					|  |  |  |  | use Data::Dumper; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | use strict; | 
			
		
	
		
			
				
					|  |  |  |  | use warnings; | 
			
		
	
	
		
			
				
					|  |  |  | @ -89,27 +90,27 @@ sub toggleTag@@ -89,27 +90,27 @@ sub toggleTag | 
			
		
	
		
			
				
					|  |  |  |  | 		print "tag names gotten\n"; | 
			
		
	
		
			
				
					|  |  |  |  |                 if ($cur_tag =~ /$tag/i) | 
			
		
	
		
			
				
					|  |  |  |  |                 { | 
			
		
	
		
			
				
					|  |  |  |  |                         # tag is not defined for this range - add it from the composite tag name and then add the resulting | 
			
		
	
		
			
				
					|  |  |  |  |                         # tag, creating it if necessary | 
			
		
	
		
			
				
					|  |  |  |  |                         return unless $cur_tag ne ""; | 
			
		
	
		
			
				
					|  |  |  |  |                         # tag is defined for this region - remove it | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                         return if $cur_tag eq ""; | 
			
		
	
		
			
				
					|  |  |  |  |                         $self->{text}->tagRemove($cur_tag, 'insert'); | 
			
		
	
		
			
				
					|  |  |  |  | 			print "tagremove $cur_tag\n"; | 
			
		
	
		
			
				
					|  |  |  |  |                         $cur_tag =~ s/$tag//i; | 
			
		
	
		
			
				
					|  |  |  |  | 			print "creating tag\n"; | 
			
		
	
		
			
				
					|  |  |  |  |                         $self->create_tag($cur_tag); | 
			
		
	
		
			
				
					|  |  |  |  | 			print "tag created\n"; | 
			
		
	
		
			
				
					|  |  |  |  |                         $self->insert('insert', '%%%ignore%%%', [$cur_tag, 'elide']); | 
			
		
	
		
			
				
					|  |  |  |  |                         $self->tagAdd($cur_tag, 'insert'); | 
			
		
	
		
			
				
					|  |  |  |  |                         $self->{$button}->configure(-relief => 'flat'); | 
			
		
	
		
			
				
					|  |  |  |  | 			print "done\n"; | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 else | 
			
		
	
		
			
				
					|  |  |  |  |                 { | 
			
		
	
		
			
				
					|  |  |  |  |                         # tag not enabled for this range - remove it | 
			
		
	
		
			
				
					|  |  |  |  |                         # tag not enabled for this range - add it | 
			
		
	
		
			
				
					|  |  |  |  |                         $self->{text}->tagRemove($cur_tag, 'insert'); | 
			
		
	
		
			
				
					|  |  |  |  |                         $cur_tag .= $tag; | 
			
		
	
		
			
				
					|  |  |  |  | 			return unless $cur_tag && $cur_tag ne ""; | 
			
		
	
		
			
				
					|  |  |  |  |                         $self->create_tag($cur_tag); | 
			
		
	
		
			
				
					|  |  |  |  |                         $self->insert('insert', '%%%ignore%%%', [$cur_tag, 'elide']); | 
			
		
	
		
			
				
					|  |  |  |  |                         $self->tagAdd($cur_tag, 'insert'); | 
			
		
	
		
			
				
					|  |  |  |  | 			print "tagadd $cur_tag\n"; | 
			
		
	
		
			
				
					|  |  |  |  |                         $self->{$button}->configure(-relief => 'sunken'); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
	
		
			
				
					|  |  |  | @ -146,7 +147,9 @@ sub toggleTag@@ -146,7 +147,9 @@ sub toggleTag | 
			
		
	
		
			
				
					|  |  |  |  | 	    unless($removed) | 
			
		
	
		
			
				
					|  |  |  |  | 	    { | 
			
		
	
		
			
				
					|  |  |  |  | 		$self->create_tag($new_tag); | 
			
		
	
		
			
				
					|  |  |  |  | 		return unless $tag; | 
			
		
	
		
			
				
					|  |  |  |  | 		$self->{text}->tagAdd($tag, $self->{text}->tagRanges('sel')); | 
			
		
	
		
			
				
					|  |  |  |  | 		print "Added $tag\n"; | 
			
		
	
		
			
				
					|  |  |  |  |                 $self->{$tag}->configure(-relief => 'sunken'); | 
			
		
	
		
			
				
					|  |  |  |  | 	    } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
	
		
			
				
					|  |  |  | @ -183,32 +186,36 @@ sub to_html@@ -183,32 +186,36 @@ sub to_html | 
			
		
	
		
			
				
					|  |  |  |  |         my ($self, $start, $end) = @_; | 
			
		
	
		
			
				
					|  |  |  |  |         $start ||= '0.0'; | 
			
		
	
		
			
				
					|  |  |  |  |         $end ||= 'end'; | 
			
		
	
		
			
				
					|  |  |  |  |         my @tags = $self->{text}->tagNames; | 
			
		
	
		
			
				
					|  |  |  |  |         my $res; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         my ($res, $temp); | 
			
		
	
		
			
				
					|  |  |  |  |         my $pos = '1.0'; | 
			
		
	
		
			
				
					|  |  |  |  |         my $chars; | 
			
		
	
		
			
				
					|  |  |  |  |         my %curtags; | 
			
		
	
		
			
				
					|  |  |  |  |         my %chartags; | 
			
		
	
		
			
				
					|  |  |  |  |         my (@addtags, @deltags); | 
			
		
	
		
			
				
					|  |  |  |  | 	my $chars = 0; | 
			
		
	
		
			
				
					|  |  |  |  | 	my ($curtag, $prevtag) = ("", ""); | 
			
		
	
		
			
				
					|  |  |  |  | 	my %all_tags; | 
			
		
	
		
			
				
					|  |  |  |  |         while($self->{text}->index($pos) != $self->{text}->index('end')) | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |                 %chartags = (); | 
			
		
	
		
			
				
					|  |  |  |  |                 $chartags{$_} = 1 for $self->{text}->tagNames($pos); | 
			
		
	
		
			
				
					|  |  |  |  |                 delete $chartags{'elide'}; | 
			
		
	
		
			
				
					|  |  |  |  |                 delete $chartags{'sel'}; | 
			
		
	
		
			
				
					|  |  |  |  |                 for (keys %chartags) | 
			
		
	
		
			
				
					|  |  |  |  | 	    print Dumper([$self->{text}->tagNames($pos)]) . "\n"; | 
			
		
	
		
			
				
					|  |  |  |  | 	    $all_tags{$_} = $_ for $self->{text}->tagNames($pos); | 
			
		
	
		
			
				
					|  |  |  |  | 	    delete @all_tags{'elide', 'sel', ''}; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	    $curtag = (keys %all_tags)[0]; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	    print Dumper(\%all_tags); | 
			
		
	
		
			
				
					|  |  |  |  | 	    print $self->{text}->get($pos) . "\n"; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	    if($curtag =~ /$prevtag/) | 
			
		
	
		
			
				
					|  |  |  |  | 	    { | 
			
		
	
		
			
				
					|  |  |  |  |                         push @addtags, $_ unless $curtags{$_} | 
			
		
	
		
			
				
					|  |  |  |  | 		($temp = $curtag) =~ s/$prevtag//; | 
			
		
	
		
			
				
					|  |  |  |  | 		$res .= $temp; | 
			
		
	
		
			
				
					|  |  |  |  | 	    } | 
			
		
	
		
			
				
					|  |  |  |  |                 for (keys %curtags) | 
			
		
	
		
			
				
					|  |  |  |  | 	    else | 
			
		
	
		
			
				
					|  |  |  |  | 	    { | 
			
		
	
		
			
				
					|  |  |  |  |                         push @deltags, $_ if !$chartags{$_}; | 
			
		
	
		
			
				
					|  |  |  |  | 		($temp = $prevtag) =~ s/$curtag//; | 
			
		
	
		
			
				
					|  |  |  |  | 		$res .= end_tag($temp); | 
			
		
	
		
			
				
					|  |  |  |  | 	    } | 
			
		
	
		
			
				
					|  |  |  |  |                 %curtags = (); | 
			
		
	
		
			
				
					|  |  |  |  |                 $curtags{$_} = 1 for keys %chartags; | 
			
		
	
		
			
				
					|  |  |  |  |                 $res .= $_ for @addtags; | 
			
		
	
		
			
				
					|  |  |  |  |                 $res .= end_tag($_) for @deltags; | 
			
		
	
		
			
				
					|  |  |  |  |                 @deltags = @addtags = (); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	    $prevtag = $curtag; | 
			
		
	
		
			
				
					|  |  |  |  | 	     | 
			
		
	
		
			
				
					|  |  |  |  |             $res .= $self->{text}->get($pos); | 
			
		
	
		
			
				
					|  |  |  |  |             $pos = $self->{text}->index('0.0 + ' . ++$chars . " chars"); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
	
		
			
				
					|  |  |  | @ -218,7 +225,7 @@ sub to_html@@ -218,7 +225,7 @@ sub to_html | 
			
		
	
		
			
				
					|  |  |  |  | sub end_tag | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |         my ($tag) = @_; | 
			
		
	
		
			
				
					|  |  |  |  |         $tag =~ s/^</<\//; | 
			
		
	
		
			
				
					|  |  |  |  |         $tag =~ s/^</<\//g; | 
			
		
	
		
			
				
					|  |  |  |  |         return $tag; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |