Как сделать GUI для сценариев удара? [закрытый]

Я знаю, что опаздываю на вечеринку с этим, но для будущих гуглеров ...

Я думаю, что лучшее решение этой проблемы дано здесь

. Ранее принятый ответ - тестирование самого почтовика (внутри спецификации контроллера). Все, что вам следует здесь проверить, - это то, что Mailer получит указание доставить что-то с правильными параметрами.

Затем вы можете проверить Mailer в другом месте, чтобы убедиться, что он правильно реагирует на эти параметры.

ReservationMailer.should_receive (: verify_email) .with (an_instance_of (Reservation))

64
задан lauriys 4 February 2012 в 14:39
поделиться

9 ответов

Прежде чем использовать диалоги графического интерфейса пользователя, подумайте об использовании подсказок консоли. Довольно часто можно обойтись простым "т / п?" подсказки, которые в bash достигаются с помощью команды read ..

read -p "Do something? ";
if [ $REPLY == "y" ]; then
    echo yay;
fi

Если приглашение консоли просто не помогает, Zenity действительно прост в использовании , например:

      zenity --error --text="Testing..."
      zenity --question --text="Continue?"

Это работает только в Linux / Gnome (или, скорее, оно будет установлено только по умолчанию в таких системах). Метод read будет работать практически на любой платформе (включая безголовые машины или через SSH)

Если вам нужно что-то более сложное, чем то, что предоставляет read или Zenity, «переход на C ++» действительно лучший метод (хотя я бы рекомендовал Python / Ruby вместо C ++ для таких задач по замене сценария оболочки)

Я хочу сделать простой интерфейс для какой-то странной игры, индикатор выполнения для здоровья или что-то в этом роде - это пример того, что я хочу. Переменная «ЗДОРОВЬЕ» равна 34, поэтому заполните индикатор выполнения до 34/100

В качестве сценария командной строки он будет использовать Python:

$ export HEALTH=34
$ python -c "import os; print '*' * int(os.environ.get('HEALTH', 0))"
**********************************

Или для нормализации значений от 1 до 78 (чтобы вы не получить перенос строк при стандартном размере терминала):

$ python -c "import os; print '*' * int((int(os.environ.get('HEALTH', 0)) / 100.0) * 78)"

Zenity также имеет Диалог прогресса ,

#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
  --title="Update System Logs" \
  --text="Scanning mail logs..." \
  --percentage=0

if [ "$?" = -1 ] ; then
        zenity --error \
          --text="Update canceled."
fi

Как я уже говорил, если Zenity не может делать то, что вам нужно, попробуйте написать свою игру как «правильный» сценарий в Python / Ruby / Perl / C ++ / и т. д., поскольку это звучит так, будто вы раздвигаете границы того, что может делать сценарий оболочки ..

62
ответ дан 24 November 2019 в 15:48
поделиться

есть команда под названием dialog , который использует библиотеку ncurses. « Dialog - это программа, которая позволит вам задавать различные вопросы или отображать сообщения с помощью диалоговых окон из сценария оболочки. Реализованы эти типы диалоговых окон (хотя не все обязательно скомпилированы в диалог) »

см. http://pwet.fr/man/linux/commandes/dialog

14
ответ дан 24 November 2019 в 15:48
поделиться

Если вы хотите написать графический интерфейс в bash zenity - лучший способ. Вот что вы можете с ним сделать:

Application Options:
  --calendar                                     Display calendar dialog
  --entry                                        Display text entry dialog
  --error                                        Display error dialog
  --info                                         Display info dialog
  --file-selection                               Display file selection dialog
  --list                                         Display list dialog
  --notification                                 Display notification
  --progress                                     Display progress indication dialog
  --question                                     Display question dialog
  --warning                                      Display warning dialog
  --scale                                        Display scale dialog
  --text-info                                    Display text information dialog

Комбинируя эти виджеты, вы можете создавать довольно удобные графические интерфейсы. Конечно, он не такой гибкий, как набор инструментов, интегрированный в язык программирования, но в некоторых случаях действительно полезен.

21
ответ дан 24 November 2019 в 15:48
поделиться

Вы можете использовать диалог , который основан на ncurses или whiptail , который основан на сленге ]. 120] Я думаю, что у обоих есть привязки GTK или Tcl / Tk.

11
ответ дан 24 November 2019 в 15:48
поделиться

Что ж, если вы можете использовать Tcl / Tk в своей среде, вам, вероятно, следует написать сценарий TCL и использовать его. Вы также можете посмотреть желание .

13
ответ дан 24 November 2019 в 15:48
поделиться

Для этого вы можете gtk-server . Gtk-server - это программа, которая работает в фоновом режиме и предоставляет текстовый интерфейс, позволяющий другим программам (включая сценарии bash) управлять им. В нем есть примеры для Bash ( http://www.gtk-server.org/demo-ipc.bash.txt , http://www.gtk-server.org/demo-fifo .bash.txt )

6
ответ дан 24 November 2019 в 15:48
поделиться

Если у вас установлен Qt / KDE, вы можете использовать kdialog , который открывает диалоговое окно Qt. Вы можете легко указать отображение диалогового окна Да / Нет, ОК / Отмена, простого ввода текста, ввода пароля и т. Д. После этого у вас будет доступ к возвращаемым значениям из этих диалоговых окон в оболочке.

3
ответ дан 24 November 2019 в 15:48
поделиться

Очевидно, кто-то написал интерфейс bash для GTK +. Я не уверен, что вы сможете легко заставить его работать, но, возможно, стоит попробовать. Вы можете найти ее здесь:

http://home.eol.ca/~parkw/index.html#gtk

2
ответ дан 24 November 2019 в 15:48
поделиться

Пожалуйста, загляните в мою библиотеку: http://sites.google.com/site/easybashgui

Она предназначена для обработки, с одним и тем же набором команд, безразлично всех четырех больших инструментов "kdialog", "Xdialog", "cdialog" и "zenity", в зависимости от того, запущен X или нет, если D.E. - KDE или Gnome или другой. Есть 15 различных функций (среди них две под названием "progress" и "adjust")...

Пока :-)

6
ответ дан 24 November 2019 в 15:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: