Nowe posty

Autor Wątek: KDialog --progressbar (jak sterować za pomocą skryptu paskiem postępu)  (Przeczytany 5895 razy)

hacker2048

  • Gość
Uruchamiam w swoim skrypcie za pomocą polecenia:

kdialog --progressbar "jakiś text" 5

okienko postępu wykonywania skryptu.

Skrypt ma do wykonania 5 poleceń po kolei, w jaki sposób mogę zrobić by po wykonaniu każdego z poleceń pasek postępu w oknie kdialog przesunął się o te 20%.

hacker2048

  • Gość
KDialog --progressbar (jak sterować za pomocą skryptu paskiem postępu)
« Odpowiedź #1 dnia: 2008-11-29, 14:38:05 »
ok, sposób na poruszanie paska znalazłem:
dcop kdialog-6455 ProgressDialog setProgress X

Tylko problem mam tu kolejny, skąd skrypt ma wiedzieć jaki nr otrzyma kdialog,
ponieważ za każdym razem proces dostaje inny nr (kdialog-xxxx).

arctgx

  • Gość
KDialog --progressbar (jak sterować za pomocą skryptu paskiem postępu)
« Odpowiedź #2 dnia: 2008-11-29, 15:07:22 »
Gdyby 6455 był zarazem numerem procesu, można by spróbować pgrepa, np. z opcją -n, do wskazania numeru. Ale nie wiem czy wystarczyłoby Ci to w sytuacji działania kilku kdialogów, z których nie chciałbyś wybierać ostatnio powstałego.

hacker2048

  • Gość
KDialog --progressbar (jak sterować za pomocą skryptu paskiem postępu)
« Odpowiedź #3 dnia: 2008-11-29, 16:18:29 »
tzn w jaki sposób mam go urzyć bo nie bardzo rozumiem, możesz podać przyklad.

Po wydaniu polecenia
kdialog --progressbar "Jakiś tam tekst..." 5
pojawia się okienko kdialog a w konsoli, tak jak na załączonym screenie.

hacker2048

  • Gość
KDialog --progressbar (jak sterować za pomocą skryptu paskiem postępu)
« Odpowiedź #4 dnia: 2008-11-29, 16:49:49 »
Ok, już mam sposób,może i "na około" ale działa.

clear
kdialog --progressbar "JAkiś tam sobie tekst..." 5
zmienna1=$(pgrep -u skynet kdialog)
let zmienna2=$zmienna1-1 #konieczne bo pgrep podaje nr o 1 wyższy niż faktycznie ma kdialog

#polecenie 1

dcop kdialog-$zmienna2 ProgressDialog setProgress 1

#polecenie 2

dcop kdialog-$zmienna2 ProgressDialog setProgress 2

#polecenie 3

dcop kdialog-$zmienna2 ProgressDialog setProgress 3

#polecenie 4

dcop kdialog-$zmienna2 ProgressDialog setProgress 4

#polecenie 5

dcop kdialog-$zmienna2 ProgressDialog setProgress 5

sleep 3

dcop kdialog-$zmienna2 ProgressDialog close

arctgx

  • Gość
KDialog --progressbar (jak sterować za pomocą skryptu paskiem postępu)
« Odpowiedź #5 dnia: 2008-11-29, 18:13:11 »
Zobacz jeszcze w man pgrep, dlaczego o opcji -n wspomniałem.

hacker2048

  • Gość
KDialog --progressbar (jak sterować za pomocą skryptu paskiem postępu)
« Odpowiedź #6 dnia: 2008-11-29, 20:37:01 »
No opcja -n będzie zwracała ostatni uruchomiony kdialog a nie konkretny ale zauważ tak jak napisałem ten skrypt, na samym początku ustala
zmienna1=$(pgrep -u skynet kdialog)
let zmienna2=$zmienna1-1
więc skrypt będzie sterował tylko ty konkretnym oknem kdialog.

Mam racje czy coś pochrzaniłem ??

arctgx

  • Gość
KDialog --progressbar (jak sterować za pomocą skryptu paskiem postępu)
« Odpowiedź #7 dnia: 2008-11-30, 02:34:13 »
Zauważ że w przypadku działania kilku procesów zawierających w nazwie łańcuch "kdialog", pgrep wypisze PIDy ich wszystkich. Dlatego trzeba jakoś wyróżnić jeden, by tego uniknąć. Sam próbowałbym albo przez datę stworzenia (np. -n), albo przez podanie PIDu rodzica czyli procesu, który uruchomił okienko kdialog. Nie wiem jednak czy tym rodzicem jest sam skrypt (PID powłoki skryptu siedzi w $$), czy dcop.

hacker2048

  • Gość
KDialog --progressbar (jak sterować za pomocą skryptu paskiem postępu)
« Odpowiedź #8 dnia: 2008-11-30, 15:33:09 »
Wydaje mi się że to nie dcop tworzy proces, tylko sam terminal. Ale jeszcze sprawdze.