Как оставить открытым окно в Kdialog --menu?

Изображение пользователя Sabalt.

Приветствую. Как оставить открытым окно в kdialog --menu после нажатия кнопки?

#!/bin/bash
choice=$(kdialog --menu "CHOOSE
ONE:" 1 "RED" 2 "YELLOW" 3 "GREEN");

if  [ "$?" = 0 ]; then
if  [ "$choice" = 1 ]; then
kdialog --msgbox "YOU CHOSE RED";
elif [ "$choice" = 2 ]; then
kdialog --msgbox "YOU CHOSE YELLOW";
elif [ "$choice" = 3 ]; then
kdialog --msgbox "YOU CHOSE GREEN";
else
kdialog --error "ERROR";
fi;
elif [ "$?" = 1 ];then
kdialog --sorry "YOU CHOSE CANCEL" | exec
else
kdialog --error "ERROR";
fi;

Нужно оставить окно открытым после выбора пункта меню, чтобы можно было выбрать и другие варианты.

+1
Chibiko - 25 Май, 2015 - 18:45
Изображение пользователя Chibiko.

1) Сделать цикл. Пока не завершится - не закрывать. Т.е. следующее окно открываться будет "поверх" предыдущего.
2) Сделать функцию. И после каждого вызова её теребонькать.
Т.е. Вызываем функцию выбора цветов. Выбрал цвет - вызываем ещё функцию в функции. И так пока не выберет Cancel например )
3) Переписать на PyQT например. Или на C/C++.

0
Sabalt - 25 Май, 2015 - 20:31
Изображение пользователя Sabalt.

Спасибо за ответ.
Попробовал сваять функцию, близко но не то. Пока показывает сообщение, основное меню не доступно.

Как сделать поверх? Видимо, цикл. Что примерно использовать?
Переписать на PyQT например. Или на C/C++. совсем не судьба. Я с этим-то справится не могу )
0
Chibiko - 25 Май, 2015 - 20:48
Изображение пользователя Chibiko.

Я заюзал zenity для одного своего проекта. Но смысл приблизительно представляю что вам надо.
Вот гляньте моё кривое поделие. Там легко понять и разобраться как я эти циклы рисовал. Главное разобраться где какая функция фунциклирует... 8)

Ну вот тут сам "запускатр", а дальше понятно где искать "функции".
Готовый пакет можно пощупать тут

0
Sabalt - 25 Май, 2015 - 23:31
Изображение пользователя Sabalt.

Пока так решил:

Но все равно не нравится. Окно "моргает".
Спасибо за подсказку.
+1
Chibiko - 26 Май, 2015 - 00:53
Изображение пользователя Chibiko.

Вот поэтому я привык работать с zenity.
Старое окошко исчезает (зачем оно вообще глаза мозолить?), появляется новое, и в общем так:

Прошу прощения за отступы. Чтобы заработало надо поставить zenity.
Чтобы вылезали модульные окна, которые "поверх", надо юзать qt-аргументы. В zenity и kdialog это не очень реализуемо.
А всё потому что после "выбора" окошко удаляется / исчезает. И оставить его как-бы не очень получится. По крайней мере я пока не знаю как его заставить после выбора не исчезать.
Т.е. без перезапуска новое не появится. А у нас в условии(while) стоит - показывать каждый раз новое ))

0
Sabalt - 26 Май, 2015 - 02:26
Изображение пользователя Sabalt.

Ну пока остановился на подобном варианте, только в kdialog. С Qdbus не получилось.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры