Происхождение использования в модальном диалоговом окне «сохранение изменений» команды «закрыть без сохранения», отсутствие клавиатурных ускорителей и способы взаимодействия с этими диалоговыми окнами

Поскольку функция проверки жестко кодирует столбец 1, то в цикле for вместо

color=check( );

ты должен сделать

color = i == i ? check() : "someDefaultColor"

Или передайте iфункции проверки (check(i)), и функции проверки проверят, что переданное значение равно 1.

2
14.09.2019, 00:39
3 ответа

Я полагаю, что GTK/GNOME заимствует немало рекомендаций по дизайну пользовательского интерфейса от Apple macOS и ее предков.

Я думаю, что у Mac были довольно строгие правила оформления диалоговых окон:

  • Ввод всегда будет ускорителем для «сделать стандартную/безопасную вещь», т. е. «Сохранить» или «Сохранить как...» в ваших примерах, что-то вроде «универсального утверждения». На это намекает более толстая граница кнопок «Сохранить/Сохранить как».
  • Esc всегда будет кнопкой «стоп, я не хочу этого в конце концов», вызывая эквивалент «Отмена» в ваших примерах. Другими словами, «универсальный отрицательный» ускоритель.
  • ..и поскольку вариант "закрыть без сохранения" является деструктивным вариантом (, он приводит к потере данных ), на самом деле его должно быть труднее выбрать, чем другие. Так что он не получит ни один из универсальных ускорителей.

Возможно, вы захотите прочитать классический документ Macintosh Human Interface Guidelines или, по крайней мере, части, относящиеся к диалоговым окнам(Обратная связь и диалог , начиная со страницы 33 PDF-файла, и всю главу 6, посвященную диалоговым окнам, начиная со страницы 199. )Хотя в GTK были внесены некоторые изменения, этот старый документ является очень четким описанием философии дизайна, к которой могут стремиться дизайнеры пользовательского интерфейса.

В GNOME также есть собственные рекомендации по пользовательскому интерфейсу. В частности, он явно определяет, что ускорители (, известные как клавиши доступа в их терминологии ), указываются только при удерживании Alt .

3
27.01.2020, 21:51

Этот диалог действительно предоставлен Gtk.

Ускорители есть; по умолчанию они не указаны, но если зажать Alt , вы их увидите. В Gedit это w для «Закрыть без сохранения», c для «Отмена» и s для «Сохранить как...». Вы можете также используйте Esc для отмены и Enter для сохранения.

4
27.01.2020, 21:51

Относительно происхождения я привожу несколько примеров из классического редактора unix "vi" (и "vim" ).

В vim после команды "выход" "q":

   E37: No write since last change (add ! to override)

Это отображается на красном (! )нижняя строка. Теперь вам нужно решить, хотите ли выq!(действительно выйти из безымянного «буфера» -файла еще нет )илиw my file(записать так, как файл «мой файл»(w! my fileперезаписывает )), а затем q. Или просто продолжайте -это не модально, просто строка исчезает.

(с существующим файлом wqсохранить в существующий файл с последующим выходом)

В еще более классическом "vi" (1976 (! )говорит википедия):

No write since last change (:quit! overrides) 

Здесь нет указаний на то, что q означает выход. Вы найдете его в man ex.

quit abbr: q
         Causes ex to terminate.  No automatic write of the editor buffer
         to a file is performed.  However, ex issues a warning message [...]

Или в vim, послеh[elp] quit

:q[uit]      Quit the current window.  Quit Vim if this is the last
             window.  This fails when changes have been made [...]

И элемент управления -C снова дает (на vim):

Type  :qa!  and press <Enter> to abandon all changes and exit Vim

Если вы читаете это в первый раз, это похоже на плохо отформатированное оскорбление.:Напечатайте "qa", идиот . На самом деле это означает точку с запятой :для командного режима, qa для выхода из всех файлов/окон и "!" заставить бросить.

Выйти из редактора никогда не было просто --и не может быть. Ваши примеры тоже это показывают.

Я рад, что первый ключ ответа(Altдля отображения )решает основную проблему.

Кнопка «Сохранить (как )(... )» также очень непоследовательна :возвышенное и libreoffice, кажется, пишет непосредственно в «Новый» файл или документ «Без названия 1». Pluma не хватает точек! О, я вижу :, это называется "Несохраненный документ 1",поэтому, конечно, «сохранить как» означает «сохранить как...», а не «сохранить как есть». Кому понадобился бы такой парадоксон в своей папке?

Я хочу сказать, :что нельзя называть "linux" недружественным . Все изо всех сил стараются настроить полезную среду рабочего стола в графическом интерфейсе , работающем на linux.

queue up my actions entirely from the keyboard.

хм, похоже, вам нравится использовать vim в терминале;)

Теперь я посмотрю, не смогу ли я сделать свой vim более дружелюбным . Это действительно не должно быть на красной строке ошибки -фона...

0
27.01.2020, 21:51

Теги

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