LinuxForum.Fans
Тема

Прогрессбар + gtkdialog + sh

Автор: system-root 4 сообщений 2010 просмотров
#62910

есть скрипт:

text
#! /usr/bin/gtkdialog -e
###################################
function choose() {
if [ "$ppm8" == "true" ]; then 
TYPE=ppm8
elif [ "$ppm16" == "true" ]; then 
TYPE=ppm16
elif [ "$tiff8" == "true" ]; then 
TYPE=tiff8
elif [ "$tiff16" == "true" ]; then 
TYPE=tiff16
elif [ "$png8" == "true" ]; then 
TYPE=png8
elif [ "$png16" == "true" ]; then 
TYPE=png16
elif [ "$jpeg" == "true" ]; then 
TYPE=jpeg
fi
##################################
if [ -d $FILE_DIRECTORY ]; then
for file in "$FILE_DIRECTORY/*"
do
/usr/bin/ufraw-batch "--out-type=$TYPE" $file 
done
fi
}

# # Some action types are still missing. See execute_action() for more # information. # export MAIN_DIALOG=' <vbox> <frame Widgets> <radiobutton> <label>ppm8</label> <variable>ppm8</variable> </radiobutton> <radiobutton> <label>ppm16</label> <variable>ppm16</variable> </radiobutton> <radiobutton> <label>tiff8</label> <variable>tiff8</variable> </radiobutton> <radiobutton> <label>tiff16</label> <variable>tiff16</variable> </radiobutton> <radiobutton> <label>png8</label> <variable>png8</variable> </radiobutton> <radiobutton> <label>png16</label> <variable>png16</variable> </radiobutton> <radiobutton> <label>jpeg</label> <variable>jpeg</variable> </radiobutton> </frame> <frame Directory> <hbox> <entry accept="directory"> <label>Select a Directory</label> <variable>FILE_DIRECTORY</variable> </entry> <button> <input file stock="gtk-open"></input> <action type="fileselect">FILE_DIRECTORY</action> </button> </hbox> </frame>

<hbox> <button ok> <action>choose</action> <action type="exit">MAIN_DIALOG</action> </button> <button cancel></button> </hbox> </vbox> '

поможете прикрутить сюда прогресс бар?
нужно просто поставить ufraw-batch и gtkdialog, взять RAW фото, например это - http://slil.ru/29503862
скопировать её раз 5 и запустить этот скрипт на конвертацию.
и вот из того что вы увидите в консоли, как можно получить прогресс?
может использовать "ожидание" файлов с выбранным расширением в целевой директории?
или как то ещё? я уже не соображаю ничего. поможете?

#63368

прогресс бар сделал, кто бы помог теперь чтоб кнопка отмена отменяла работу приложения в цикле?

text

#! /usr/bin/gtkdialog -e
###################################
function choose() {
if [ "$ppm8" == "true" ]; then 
TYPE=ppm8
elif [ "$ppm16" == "true" ]; then 
TYPE=ppm16
elif [ "$tiff8" == "true" ]; then 
TYPE=tiff8
elif [ "$tiff16" == "true" ]; then 
TYPE=tiff16
elif [ "$png8" == "true" ]; then 
TYPE=png8
elif [ "$png16" == "true" ]; then 
TYPE=png16
elif [ "$jpeg" == "true" ]; then 
TYPE=jpeg
fi
if [ "$overwrite" == "true" ]; then
OVERWRITE="--overwrite"
else
OVERWRITE=""
fi
##################################
    if [ "$FILE_DIRECTORY" != "" ]; then
    echo ok
    continue
    else 
echo "fuuuck"
exit 0;
    fi
I=0
BEGIN=$(ls $FILE_DIRECTORY | wc -l)
for file in "$FILE_DIRECTORY/*"
do
        for f in $file
        do

persent=$((I+=1)) qwerty=$(echo $persent/$BEGIN*100|bc -l| awk -F . '{print $1}') echo "$(basename $f) $qwerty %..." echo "$qwerty" /usr/bin/ufraw-batch "--out-type=$TYPE" "--silent" "$OVERWRITE" "$f" done; done;

echo "100" echo "готово" } ####################################

# # Some action types are still missing. See execute_action() for more # information. # export BAR_DIALOG=' <window title="ufraw-batch" resizable="false"> <vbox> <frame статус:> <progressbar> <variable>PROGRESS_BAR</variable> <label>тупим</label> <input>choose</input> <action type="refresh">ENTRY</action> <action type="closewindow">BAR_DIALOG</action> <action>echo "готово"</action> </progressbar> </frame> <hbox> <button> <label>Close</label> <action type="exit">BAR_DIALOG</action> </button> </hbox> </vbox> </window> '

export SDIALOG=' <window title="ufraw-batch" resizable="false"> <vbox> <text> <label>This is an other dialog window.</label> </text> <button> <label>Close</label> <action type="exit">MAIN_DIALOG</action> <action type="closewindow">SDIALOG</action> </button> </vbox> </window> '

export MAIN_DIALOG=' <window title="ufraw-batch" resizable="false">

<vbox> <frame формат файла:> <radiobutton> <label>ppm8</label> <variable>ppm8</variable> </radiobutton> <radiobutton> <label>ppm16</label> <variable>ppm16</variable> </radiobutton> <radiobutton> <label>tiff8</label> <variable>tiff8</variable> </radiobutton> <radiobutton> <label>tiff16</label> <variable>tiff16</variable> </radiobutton> <radiobutton> <label>png8</label> <variable>png8</variable> </radiobutton> <radiobutton> <label>png16</label> <variable>png16</variable> </radiobutton> <radiobutton> <label>jpeg</label> <variable>jpeg</variable> </radiobutton> </frame> <frame> <checkbox active="true"> <label>перезаписывать?</label> <variable>overwrite</variable> </checkbox> </frame> <frame обзор> <hbox> <entry accept="directory"> <label>Select a Directory</label> <variable>FILE_DIRECTORY</variable> </entry> <button> <input file stock="gtk-open"></input> <action type="fileselect">FILE_DIRECTORY</action> </button> </hbox> </frame>

<hbox> <button ok> <action type="launch">BAR_DIALOG</action> </button> <button> <label>Close</label> <action type="exit">MAIN_DIALOG</action> </button> </hbox> </vbox> </window> '

#63495

задача - остановить цикл for путём установки переменной.
как пробовал:
в цикле запускается функция br которая должна опрашивать переменную BR и если та true - делать break 2;
но она нихрена не делает. если убрать if то всё работает.
что-то с видимостью переменных? или опять ошибся с ковычкой..
хелп
#

text
function set_br()     {
    export BR=true
    
                }
#
function br()     {
    if [ "$BR" == "true" ]; then
    echo "try out. BR = $BR"
    break 2;
    exit;
    fi
            }
#
function choose() {
FILE_DIRECTORY=/tmp
    if [ "$FILE_DIRECTORY" != "" ]; then
    echo ok
    else 
    echo "fuuuck"
    exit 0;
    fi
I=0
BEGIN=$(ls $FILE_DIRECTORY | wc -l)
for file in "$FILE_DIRECTORY/*"
do
        
        for f in $file
        do
        br
        

persent=$((I+=1)) qwerty=$(echo $persent/$BEGIN*100|bc -l| awk -F . '{print $1}') echo "$qwerty" sleep 0.3 done; done;

echo "готово" }

#63682

Вот так:

text
BR="true"
if test "$BR" = "true"; then echo "try out. BR = $BR";

Или вот так:

text
BR="true"
if [ "$BR" = "true" ]; then echo "try out. BR = $BR";

export BR=true
вместо
BR="true"
тоже работает.

И еще возьмите на заметку что вместо

text
#BEGIN=$(ls ~)

можно:

text
#BEGIN=`ls ~`

Одно и тоже, только в первом случае команду выполняет shell как свою собственную, а во втором - запускает программу. Поэтому:
BEGIN=$(echo $BR)
выведет true, а
BEGIN=`echo $BR`
не выведет ничего.

Войдите или зарегистрируйтесь, чтобы ответить.