Сайт | Скачать | Видео | Wiki

Автор Тема: Скрипт диалога с пользователем  (Прочитано 16452 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Скрипт диалога с пользователем
« Ответ #31 : 01 Июнь 2019, 12:47:06 »
Фокус переносится на сообщение. Т.е. "вырываете из рук"
Теперь понял, что меня так раздражало в pra.
Пробую написать на gtk (си), GTK_WINDOW_POPUP не перехватывает фокус, но пока не получается hbox.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Скрипт диалога с пользователем
« Ответ #32 : 01 Июнь 2019, 13:35:38 »
но пока не получается hbox
Получилось :)
Код
# include <gtk/gtk.h>
//# include <stdio.h>
//# include <stdlib.h>
int main( int argc, char *argv[])
{
GtkWidget *window, *image, *button, *box;

gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_POPUP);
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
/* gtk_window_set_default_size(GTK_WINDOW(window), 200, 80);*/
box = gtk_hbox_new (FALSE,0);
gtk_container_add (GTK_CONTAINER (window), box);

image = gtk_image_new_from_file ("/usr/share/pixmaps/info.svg");
gtk_container_add (GTK_CONTAINER(box), image);


button = gtk_button_new_with_label("\n Здесь находится \n ваше сообщение \n");
gtk_container_add (GTK_CONTAINER(box), button);
/* Клик по тексту закроет окно */
g_signal_connect_swapped(G_OBJECT(button),"clicked",G_CALLBACK(gtk_widget_destroy),G_OBJECT(window));

gtk_widget_show_all(window);

g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

gtk_main();
return 0;
}
« Последнее редактирование: 01 Июнь 2019, 13:39:48 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Скрипт диалога с пользователем
« Ответ #33 : 01 Июнь 2019, 19:16:07 »
 Какие ключи у ntf?
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re: Скрипт диалога с пользователем
« Ответ #35 : 01 Июнь 2019, 19:21:32 »
ntf --help
Вывод сообщения
Use: /usr/local/bin/ntf [-hlp=URL] [-[ieaqw][n]] "заголовок" ["текст"]
    /usr/local/bin/ntf -l "т|е|к|ст" ["заголовок"] ["текст"]
    /usr/local/bin/ntf -c ["заголовок"] ["путь"]
    /usr/local/bin/ntf -f ["*.txt|*.html"] ["заголовок"] ["текст"]
    /usr/local/bin/ntf -3 "gtk-yes|yes да|1=gtk-no|no|2" ["Заголовок"] ["текст"]
    /usr/local/bin/ntf -3 "\
gtk-yes
yes да
1
\
gtk-no
no
2" ["Заголовок"] ["текст"]
    Вместо '-3' можно использовать '-k' (--checklist) или '-r' (--radiolist)
    В этом случае в 1м поле можно задать дефолт 'true' или 'false'
   
    /usr/local/bin/ntf --test - демонстрация возможностей
   
    -hlp= - работает только первым параметром и только с невсплывающими сообщениями на yad
    i - информация  (всплывающее)
    e - ошибка (всплывающее)
    a - авария
    q - вопрос (да=0)
    w - сообщение с кнопкой ОК
    l - выбор из списка
    3 - выбор из списка с иконкой и скрытым полем
    n - число секунд показа сообщения
    c - выбор файла (каталога)
    f - выбор файла (опционально с фильтром вида: "*.txt|*.html")

i,e выдают всплывающее сообщение. Скрипт проверяет наличие в системе : mate-notification-daemon notify-osd notifyd yad xpupsay conky conky-(без поддержки ico) yaf-splash gxmessage. Выводит сообщение первым найденным способом .

a,w выводят интерактивное сообщение (требуется нажать кнопку). Скрипт проверяет наличие в системе : yad Xdialog. Выводит сообщение первым найденным способом.

q - вопрос. Обработка : [ "`ntf -q "Выключить" "ПК?"`" ] && shutdown -h now.
Или через [ "$?" = "0" ] && exit (1-нет 0-да)

Cпособ вывода и прочие параметры можно указать в ~/.config/ntf.conf.
ntf v. 190522
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Скрипт диалога с пользователем
« Ответ #36 : 01 Июнь 2019, 19:23:48 »
 Спасибо, но уже сам разобрался. Перезагрузился в pra и посмотрел. Что-то, мне кажется, много лишнего.
Понятно, часто используется -i, -e, возможно -q, но остальное??
« Последнее редактирование: 01 Июнь 2019, 19:26:56 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Скрипт диалога с пользователем
« Ответ #37 : 02 Июнь 2019, 03:49:57 »
-w тоже пользуется и выбор файла -c, например в puppybt я использовал
« Последнее редактирование: 02 Июнь 2019, 03:51:41 от Pro »
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Скрипт диалога с пользователем
« Ответ #38 : 02 Июнь 2019, 07:55:19 »
-w тоже пользуется
Цитата
w - сообщение с кнопкой ОК
Не понимаю смысла. Понятно, вопрос или предупреждение с кнопками "Да" и "Нет", но сообщение с подтверждением?
Сама надпись является кнопкой, и если не задать --timeout|-t будет висеть, пока не кликнешь.

Обнаружил, что не один я "дурью маюсь" :). Видать назрело.
« Последнее редактирование: 02 Июнь 2019, 09:23:11 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Скрипт диалога с пользователем
« Ответ #39 : 02 Июнь 2019, 12:57:26 »
Пробую написать на gtk (си)
Будет чужеродно смотреться на ДЕ со своим нотификатором
Лучше универсально - через notify-send
Перезагрузился в pra и посмотрел. Что-то, мне кажется, много лишнего.
Все ключи используются. Лишнее - только исторические слои с conky и т.п.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Скрипт диалога с пользователем
« Ответ #40 : 02 Июнь 2019, 16:27:47 »
notify-send
Для работы notify-send требуется libnotify и демон notifyd (или его аналог). Само сообщение отправляется через dbus. Не слишком ли для вывода нескольких строчек? Это как поехать на дачу через Пекин по транссибу.
Будет чужеродно смотреться на ДЕ со своим нотификатором
Есть свой нотификатор - пользуйся на здоровье. А если нет?
Все ключи используются.
Приму к сведению. Но пока есть то, что есть.
Код
msg-gtk2-64 -q "Это вопрос требующий подтверждения"
Кнопки с ключом -q появляются автоматически, таймаут блокируется.
« Последнее редактирование: 02 Июнь 2019, 21:55:17 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Скрипт диалога с пользователем
« Ответ #41 : 03 Июнь 2019, 09:19:45 »
Не слишком ли для вывода нескольких строчек?
Это стандарт. Практически необходимый компонент любого ДЕ
Можно и без него, конечно - но это уже другая история личных предпочтений. От многих прог сообщений не будет
Из легких вариантов - dunst (без ТК зависимостей)
Есть аналог от которого я отказался - http://wiki.puppyrus.org/soft/notify#cow-notify . Есть допиленный исходник

 
msg-gtk2-64
Чем это лучше yad\gtkdialog? Проблема с "вырыванием мыши" актуальна только для всплывающих сообщений

Что-то Вы последнее время догнали те вещи, которые реализованы в пра уже несколько лет как. И ходите по старым граблям и изобретаете велосипеды. Вместо того, чтобы доработать имеющееся для общей пользы или переписать совместимо
Т.е. опять "свободное творчество" без общественнополезного результата

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Скрипт диалога с пользователем
« Ответ #42 : 03 Июнь 2019, 09:39:09 »
Это стандарт. Практически необходимый компонент любого ДЕ
Навязывание заведомо сложного и тяжёлого стандарта - это и есть прогрессивизм в чистом виде.
Т.е. опять "свободное творчество" без общественнополезного результата
Да, творчество. Мне интересен сам процесс. А если под ногами не будешь путаться, может и результат будет.
На сегодняшний день:
Код
# msg-gtk2-64 -h
Notification GPL2 DdShurick
Version 0.0b

Usage: ntf [n N sec] [eiqw] "text message"

-e | --error "message"
-i | --info "message"
-q | --question "question yes no"
-w | --warning "warning yes no"
-n | --timeout N sec
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Скрипт диалога с пользователем
« Ответ #43 : 03 Июнь 2019, 09:42:43 »
которые реализованы в пра уже несколько лет как.
Ключевое слово как реализованы.
чтобы доработать имеющееся для общей пользы или переписать совместимо
Не пытайся меня эксплуатировать. Не выйдет.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: Скрипт диалога с пользователем
« Ответ #44 : 03 Июнь 2019, 17:55:48 »
 notify-gtk2.pfs (x86_64)
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64