2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-19 12:46:03 +00:00

50_Signalbot: improved uiTable error handling

git-svn-id: https://svn.fhem.de/fhem/trunk@25592 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Adimarantis 2022-01-30 19:50:17 +00:00
parent 2ed59dadc5
commit fb3880e872

View File

@ -1,6 +1,6 @@
############################################## ##############################################
#$Id$ #$Id$
my $Signalbot_VERSION="3.5"; my $Signalbot_VERSION="3.6";
# Simple Interface to Signal CLI running as Dbus service # Simple Interface to Signal CLI running as Dbus service
# Author: Adimarantis # Author: Adimarantis
# License: GPL # License: GPL
@ -413,6 +413,7 @@ sub Signalbot_Set($@) { #
} else { } else {
my $png=Signalbot_getPNG($hash,$file); my $png=Signalbot_getPNG($hash,$file);
return "File not found: $file" if !defined $png; return "File not found: $file" if !defined $png;
return $png if ($png =~ /^Error:.*/);
push @newatt, $png; push @newatt, $png;
} }
} }
@ -1962,6 +1963,7 @@ sub Signalbot_getPNG(@) {
$svg=Signalbot_DOIFAsPng($shash,@special); $svg=Signalbot_DOIFAsPng($shash,@special);
} }
return undef if !defined $svg; return undef if !defined $svg;
return $svg if ($svg =~ /^Error:.*/);
return Signalbot_copyToFile($svg,"png"); return Signalbot_copyToFile($svg,"png");
} }
return; return;
@ -2012,7 +2014,7 @@ Signalbot_DOIFAsPng($@)
my $table=$hash->{$target}{table}; my $table=$hash->{$target}{table};
# "Error: uiTable/uiState not defined" # "Error: uiTable/uiState not defined"
return undef if (!defined $table); return "Error: $target not defined in $hash->{NAME}" if (!defined $table);
my $id=0; my $id=0;
my $cmd; my $cmd;
@ -2044,30 +2046,29 @@ Signalbot_DOIFAsPng($@)
if (defined $cmd && $cmd ne "") { if (defined $cmd && $cmd ne "") {
$cmd="package ui_Table;"."$cmd".";"; $cmd="package ui_Table;"."$cmd".";";
$svgdata=eval($cmd); $svgdata=eval($cmd);
print $@; return if $@;
} else { } else {
#print "Error: uiTable format error (no card)"; return "Error: uiTable format error";
return undef;
} }
# "Error: getting data from card" return "Error: getting converting uiTable to SVG for $cmd" if (! defined $svgdata);
return undef if (! defined $svgdata);
$svgdata='<?xml version="1.0" encoding="UTF-8"?> <svg>'.$svgdata.'</svg>'; $svgdata='<?xml version="1.0" encoding="UTF-8"?> <svg>'.$svgdata.'</svg>';
my $ret;
eval { eval {
require Image::LibRSVG; require Image::LibRSVG;
$rsvg = new Image::LibRSVG(); $rsvg = new Image::LibRSVG();
if ($sizex != -1 && $sizey !=-1) { if ($sizex != -1 && $sizey !=-1) {
$rsvg->loadFromStringAtZoomWithMax($svgdata, $zoom, $zoom, $sizex, $sizey ); $ret=$rsvg->loadFromStringAtZoomWithMax($svgdata, $zoom, $zoom, $sizex, $sizey );
} else { } else {
$rsvg->loadFromStringAtZoom($svgdata, $zoom, $zoom); $ret=$rsvg->loadFromStringAtZoom($svgdata, $zoom, $zoom);
} }
$pngImg = $rsvg->getImageBitmap(); $pngImg = $rsvg->getImageBitmap() if $ret;
}; };
if (defined $pngImg && $pngImg ne "") { if (defined $pngImg && $pngImg ne "") {
return $pngImg if $pngImg; return $pngImg if $pngImg;
} }
return; return "Error: Converting SVG to PNG for $cmd";
} }
#Get OSRelease Version #Get OSRelease Version