Schrift
[thread]5343[/thread]

Tk::Text Text farbig darstellen

Leser: 3


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
pktm
 2007-06-27 00:10
#46535 #46535
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich habe ein Text-Widget in das ich Text einfüge.
Diesen Text verarbeite ich vor.
Kann ich in diesem vorverarbeiteten Text irgendwie Codes einbauen, damit der später, wenn er in das Text-Widget eingefügt wird farbig erscheint?

Geht das irgendwie?

Ich glaube ja eher weniger, aber Fragen schadet selten :)

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-06-27 00:24
#46536 #46536
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dafür gibt es Tags. Wurd letzt auch hier im Forum besprochen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2007-06-27 00:29
#46537 #46537
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ein Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use strict;
use warnings;
use Tk::Text;
use Tk;

my $mw = tkinit;
my $text = $mw->Text()->pack;

$text->insert('end','Dies ist ein roter Test' );
$text->tagAdd('red_text',1.13,1.18);

$text->tagConfigure('red_text', -foreground => 'red');

MainLoop;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Sucher
 2007-06-27 11:52
#46538 #46538
User since
2007-03-26
47 Artikel
BenutzerIn
[default_avatar]
[quote=renee,26.06.2007, 22:29]Ein Beispiel:
Code (perl): (dl )
$text->tagAdd('red_text',1.13,1.18);
[/quote]
Hallo,

die floats sollte man vielleicht besser quoten: Hier funktioniert es zwar - aber bei einem Index wie 1.10 würde es schiefgehen. (Das stringifiziert zu '1.1', was nicht das wäre, was man erwartet hat...)

Grüße,\n\n

<!--EDIT|Sucher|1182930862-->
pktm
 2007-06-27 11:53
#46539 #46539
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ja aber ich weis ja garnicht, wo der Text eingefügt wird.
Das ist so, ich habe da dieses Programm dass meine Apache-Error-Log überwacht. Und da habe ich jetzt eingebaut, dass man für überwachte Dateien eine Methode angeben kann, die auf jede Zeile angewandt wird.
Momentan schmeißst die mir nur die Zeitangaben raus weil die zuviel PLatz weg nehmen und bricht mir die Fehlermeldungen schön um, so dass ich sie besser lesen kann.

Diese Methode sieht so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Konfiguration für die Anzeige der Logs.
my %dateieinstellungen = (
   'absoluter_dateiname.log' => {
       myfunc => sub{
           my $zeile = shift; # die gelesene Zeile
           my $textw = shift; # Text-Widget

           # Timestampd und dergleichen entfernen
           $zeile =~ s/^\[.+\]//;

           # Zeilen aufteilen in Fehlermeldung und Fehlerquelle, und umbrechen
           $zeile =~ s/\, (referer\: http\:\/\/)/\n\t$1/;

           # Fehlermeldung rot markieren.
           # ???

           return $zeile;
       },
   },
);


Und da stellt sic mir jetzt die Frage, ob ich das dort irgendwie machen kann.
Oder sollte ich es so machen, dass man in dieser Funktion seinen Kram selbst in das Text-Widget einfügen soll?

Momentag wird das Ergebnis dieser Funktion an anderer Stelle ausgelesen und in das Text-Widget eingefügt.

Idee hinter der ganzen Sache ist, für bestimmte Dateien Konfigurationen anlegen zu können, die ein Stück Code enthalten der was mit der Zeile macht, die eingefügt wird.

Grüße, pktm\n\n

<!--EDIT|pktm|1182930940-->
http://www.intergastro-service.de (mein erstes CMS :) )
Sucher
 2007-06-27 11:59
#46540 #46540
User since
2007-03-26
47 Artikel
BenutzerIn
[default_avatar]
Hallo,
du übergibst eine Referenz auf das Textwidget an die Sub.
Willst du den Text direkt einfügen? Warum gibst du die Zeile zurück?

Grüße,\n\n

<!--EDIT|Sucher|1182931212-->
pktm
 2007-06-27 12:04
#46541 #46541
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Das Textwidget habe ich nur an die Sub übergeben, weil ich dachte, dass ich das bräuchte um diese Tags einzufügen. Aber dafür brauche ich ja offensichtlich den Index des eigefügten Strings.
Stell die einfach vor, das Widget wäre noch nicht übergeben worden :)

Edit: die Zeile gebe ich zurück, weil diese Funktion nicht zwingend Bestandteil des Programmes ist.
Man soll sich sowas als Konfigurationsdatei anlegen können, z.B. wenn man eine bestimmte Darstellung haben möchte, aber es soll nicht zwingend da sein.\n\n

<!--EDIT|pktm|1182931607-->
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-06-27 12:32
#46542 #46542
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl

use strict;
use warnings;
use Tk::Text;
use Tk;

my $mw = tkinit;
my $text = $mw->Text()->pack;

my $line = 0;

while( my $inhalt = <DATA> ){
    $text->insert('end',$inhalt );
    ++$line;
    
    if( $inhalt =~ /^Fehler:/ ){
        $text->tagAdd('red_text',$line . ".0" , $line . "." . length $inhalt);
        $text->tagConfigure('red_text', -foreground => 'red');
    }

}


MainLoop;

__DATA__
Dies ist ein Test!
Fehler: Laeuft nicht
Eine Zeile dazwischen.
Noch eine Zeile
Fehler: fehlerhafte Zeile
Fehler: noch ein Fehler
Alles ok!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Sucher
 2007-06-27 12:38
#46543 #46543
User since
2007-03-26
47 Artikel
BenutzerIn
[default_avatar]
Hallo,

wenn du das Textwidget schon verfügbar hast, dann kannst du doch einfach
Code: (dl )
$text->insert('end',$line,'red_text');

schreiben.
Sonst müsstest du diese Information eben in eine Datenstruktur (oder ein Objekt) stecken und an den GUI-Teil deines Programms weiterreichen.

Grüße,
renee
 2007-06-27 12:55
#46544 #46544
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich habe mal einen Wiki:Artikel dazu gemacht.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2007-06-27 00:10.