Test: 02_RSS mit alignments

Begonnen von betateilchen, 12 November 2013, 13:29:56

Vorheriges Thema - Nächstes Thema

betateilchen

Hallo Boris,

ich habe die textbox jetzt getestet und folgende Vorschläge (wie schon weiter oben erwähnt)

1. das text-align wird aus $params{thalign} übernommen (man kann ja auch irgendwann anders als im Blocksatz darstellen wollen!)

2. das linespacing wird aus der textbox-Definition übernommen und nicht aus einem eigenen $params{}. Da dieser Parameter nur innerhalb der textbox vorkommt, sollte er auch direkt dort mit angegeben werden (die $boxwidth ist ja auch kein eigenes Kommando)

Der Aufruf einer textbox würde damit so aussehen:

thalign "justified"
textbox 10 150 380 4 { "bla bla bla" }


Das funktioniert bei mir im Moment alles problemlos.

Ob die genaue Positionierung aller Elemente nach Deiner diesbezüglichen Änderungen funktioniert, habe ich noch nicht vollständig getestet. Aber soweit ich das jetzt getestet habe, sieht es ganz gut aus.


my @valid_halign = qw(left center right justified);

...

sub
RSS_itemTextBox {
#        my ($S,$x,$y,$boxwidth,$text,%params)= @_;
        my ($S,$x,$y,$boxwidth,$sp,$text,%params)= @_;
        return unless(defined($text));
       
        if($params{useTextWrap}) {
              if((0 < $boxwidth) && ($boxwidth < 1)) { $boxwidth*= $S->width; }
              my $wrapbox = GD::Text::Wrap->new($S,
                      color  => RSS_color($S, $params{rgb}),
#                      line_space => $params{linespace},
                      line_space => $sp,
                      text => $text,
                      );
              $wrapbox->set_font($params{font}, $params{pt});
#              $wrapbox->set(align => 'justified', width => $boxwidth);
              $wrapbox->set(align => $params{thalign}, width => $boxwidth);
              my ($left, $top, $right, $bottom) = $wrapbox->draw($x, $y);
              return $bottom;
        } else {
              RSS_itemText($S,$x,$y,$text,%params);
              return $y;
        }
}

...

          } elsif($cmd eq "textbox") {
            ($x,$y,$boxwidth,$sp,$text)= split("[ \t]+", $def, 5);
            ($x,$y)= RSS_xy($S, $x,$y,%params);
            my $txt= AnalyzePerlCommand(undef, $text);
            #Debug "$name: ($x,$y) $txt";
            $y= RSS_itemTextBox($S,$x,$y,$boxwidth,$sp,$txt,%params);
            $params{x} = $x;
            $params{y} = $y;



Viele Grüße
Udo
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

Zitat von: betateilchen am 09 Dezember 2013, 21:29:51


          }  elsif($cmd eq "img") {
            ($x,$y,$scale,$imgtype,$srctype,$arg)= split("[ \t]+", $def,6);
++           ($x,$y)= RSS_xy($S, $x,$y,%params);
++           $params{x} = $x;
++           $params{y} = $y;
            my $arg= AnalyzePerlCommand(undef, $arg);
            RSS_itemImg($S,$x,$y,$scale,$imgtype,$srctype,$arg,%params);


Ich hatte das Vorschieben des Cursors bei Bildern absichtlich ausgelassen.

Nachdem ich nun nochmal darüber nachgedacht habe, werde ich es einbauen.

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

Hallo Udo,

ich kümmere mich am Wochenende darum. Jetzt bin ich erstmal weg.

Das linespacing hat default 0 (wie es mir gefällt). Ob es ins textbox-Kommando kommt oder ein extra Kommando, ist m.E. im Moment noch Geschmacksache. Und dann tendiere ich eher dazu, es so zu belassen, wie es implementiert und dokumentiert ist.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

#33
Zitat von: Dr. Boris Neubert am 09 Dezember 2013, 23:00:50Das linespacing hat default 0 (wie es mir gefällt). Ob es ins textbox-Kommando kommt oder ein extra Kommando, ist m.E. im Moment noch Geschmacksache. Und dann tendiere ich eher dazu, es so zu belassen, wie es implementiert und dokumentiert ist.

Meine Tendenz ist eher umgekehrt. Ich fände es sehr viel logischer, das linespacing in der textbox Definition anzugeben. Wie schon gesagt: Es ist ein Parameter, der ausschließlich in der textbox relevant ist (im Gegensatz zu rgb oder pt, wo es durchaus Sinn macht, den Parameter abzuspeichern, da er von mehreren Elementen benutzt wird) Eine 0 kann man ja immer noch in der textbox Anweisung mitgeben, wenn man die unbedingt haben möchte.

Zitat von: Dr. Boris Neubert am 09 Dezember 2013, 22:57:30
Ich hatte das Vorschieben des Cursors bei Bildern absichtlich ausgelassen.

Nachdem ich nun nochmal darüber nachgedacht habe, werde ich es einbauen.

Es geht nicht um das Vorschieben des Cursors und auch nicht um Nachdenken *g* sondern einfach darum, dass es ohne die aufgezeigte Änderung (zumindest ohne die erste der drei Zeilen) schlichtweg nicht mehr funktioniert!

Wenn Du nämlich ein "halign center" vorgibst und dann ein "img 0.5 300 ..." definierst, wird die halbe Bildbreite von 0.5 abgezogen und dann z.B. bei einem Plot mit (x=-399.5 y=300) anstatt (x=400 y=300)gearbeitet, weil das Auflösen der 0.5 in eine absolute Position komplett fehlte. Das sah bei meinen ersten Tests optisch zwar aus wie rechtsbündig, war es aber nicht, wie das Debuggen letztendlich zeigte.

Ob man die zweite und dritte Zeile braucht, kann man diskutieren. Aber die erste Zeile muss auf jeden Fall rein.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#34
Zitat von: Dr. Boris Neubert am 09 Dezember 2013, 23:00:50Das linespacing hat default 0 (wie es mir gefällt). Ob es ins textbox-Kommando kommt oder ein extra Kommando, ist m.E. im Moment noch Geschmacksache.

Nur mal noch so der Hinweis, wenn es um "default" geht: Wenn ich in einen RSS ein img einbinde, das ich NICHT skalieren möchte, muss ich den Skalierungsfaktor 1 trotzdem mit angeben. Genau die gleiche "Geschmacksfrage" - Du scheinst irgendwie einen sehr schwankenden Geschmack zu haben... :)

Ich persönlich bevorzuge lieber Einheitlichkeit, um nicht bei jedem tag in der Layoutdatei überlegen zu müssen, wo ich nun welchen Wert angeben muss. Ein Grund mehr, der für mich dafür spricht, das linespacing in die textbox-Angabe zu packen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

Zitat von: betateilchen am 09 Dezember 2013, 21:29:51

          }  elsif($cmd eq "img") {
            ($x,$y,$scale,$imgtype,$srctype,$arg)= split("[ \t]+", $def,6);
++           ($x,$y)= RSS_xy($S, $x,$y,%params);
++           $params{x} = $x;
++           $params{y} = $y;
            my $arg= AnalyzePerlCommand(undef, $arg);
            RSS_itemImg($S,$x,$y,$scale,$imgtype,$srctype,$arg,%params);


Eingecheckt.
bn
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

Zitat von: betateilchen am 09 Dezember 2013, 22:00:39
1. das text-align wird aus $params{thalign} übernommen (man kann ja auch irgendwann anders als im Blocksatz darstellen wollen!)

Eingecheckt!
bn
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!