Package: ssft
Version: 0.9.11
Severity: normal
Tags: patch
In KDE4, kdialog uses a dbus interface for progress bar operations. Here is
a patch which uses kdialog --progressbar instantiation reference string to
detect whether the (old) dcop or (current) dbus interface should be used for
communicating with progress bar window.
Thanks, Kel.
---
--- a/src/ssft.sh
+++ b/src/ssft.sh
@@ -441,35 +441,51 @@ ssft_progress_bar() {
--percentage "$_l_percent" --auto-close
;;
kdialog)
- _l_kdpbdc="/tmp/kdpbdc-$PID.`date +"%s"`"
- kdialog --progressbar "$_l_title" 100 > "$_l_kdpbdc" 2> /dev/null
- DCOPREF=$( sed -n -e '/^DCOPRef/ {
- s/DCOPRef(\(.*\),ProgressDialog)/\1/;
- p
- }' $_l_kdpbdc);
- rm -f "$_l_kdpbdc"
- dcop $DCOPREF ProgressDialog setAutoClose true
- while read _l_line; do
- _l_percent="`echo $_l_line | sed -n -e '/^[0-9][0-9]*/ {
- p;
- };'`"
- if [ -z "$_l_percent" ]; then
- dcop $DCOPREF ProgressDialog setLabel "$_l_line" 2> /dev/null;
- else
- dcop $DCOPREF ProgressDialog setProgress "$_l_percent" 2> /dev/null;
- fi
- done
- while read _l_line; do
- _l_percent="`echo $_l_line | sed -n -e '/^[0-9][0-9]*/ {
- p;
- };'`"
- if [ -z "$_l_percent" ]; then
- _l_text="$_l_line"
- dcop $DCOPREF ProgressDialog SetLabel "$_l_text"
- else
- dcop $DCOPREF ProgressDialog SetPercent "$_l_percent"
- fi
- done
+ _l_kdpbref="/tmp/kdpbdc-$PID.`date +"%s"`"
+ kdialog --progressbar "$_l_title" 100 > "$_l_kdpbref" 2> /dev/null
+ if grep -q '^DCOPRef' $_l_kdpbref; then
+ DCOPREF=$( sed -n -e '/^DCOPRef/ {
+ s/DCOPRef(\(.*\),ProgressDialog)/\1/;
+ p
+ }' $_l_kdpbref);
+ rm -f "$_l_kdpbref"
+ dcop $DCOPREF ProgressDialog setAutoClose true
+ while read _l_line; do
+ _l_percent="`echo $_l_line | sed -n -e '/^[0-9][0-9]*/ {
+ p;
+ };'`"
+ if [ -z "$_l_percent" ]; then
+ dcop $DCOPREF ProgressDialog setLabel "$_l_line" 2> /dev/null;
+ else
+ dcop $DCOPREF ProgressDialog setProgress "$_l_percent" 2> /dev/null;
+ fi
+ done
+ while read _l_line; do
+ _l_percent="`echo $_l_line | sed -n -e '/^[0-9][0-9]*/ {
+ p;
+ };'`"
+ if [ -z "$_l_percent" ]; then
+ _l_text="$_l_line"
+ dcop $DCOPREF ProgressDialog SetLabel "$_l_text"
+ else
+ dcop $DCOPREF ProgressDialog SetPercent "$_l_percent"
+ fi
+ done
+ else
+ DBUSREF=$(cat $_l_kdpbref)
+ rm -f "$_l_kdpbref"
+ qdbus $DBUSREF Set org.kde.kdialog.ProgressDialog autoClose true
+ while read _l_line; do
+ _l_percent="`echo $_l_line | sed -n -e '/^[0-9][0-9]*/ {
+ p;
+ };'`"
+ if [ -z "$_l_percent" ]; then
+ qdbus $DBUSREF org.kde.kdialog.ProgressDialog.setLabelText "$_l_line"
2> /dev/null;
+ else
+ qdbus $DBUSREF Set org.kde.kdialog.ProgressDialog value "$_l_percent"
2> /dev/null;
+ fi
+ done
+ fi
;;
dialog)
while read _l_line; do
---
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]