LINUX.ORG.RU
ФорумTalks

[gtk] Те самые диалоги, да-да


0

1

История первая.

Диалог открытия/сохранения файлов у Gtk. Ситуация: приложение не указало используемый каталог. Какой каталог должен быть отображен в диалоге? Здравый смысл подсказывает нам, что это должен быть current working directory. Так оно и работало.

Потом пришел добрый человек и решил облегчить жизнь людям, которые про такое понятие как cwd, никогда ничего не слышали. (Гном же для «просто пользователя», вы в курсе. Так, кто сейчас выкрикнул «Gtk — это не гном»? Cядь, заткнись и читкани HIGца, твое мнение никого не волнует.) Добрый человек реализовал запоминание последнего использованного каталога:

case RELOAD_EMPTY:
- /* The user didn't explicitly give us a folder to
- * display, so we'll use the cwd
+ /* The user didn't explicitly give us a folder to display, so we'll
+ * use the saved one from the last invocation of the file chooser
*/
- current_working_dir = g_get_current_dir ();
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (impl),
- current_working_dir);
- g_free (current_working_dir);
+ folder = get_file_for_last_folder_opened (impl);
+ gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (impl), folder, NULL);
+ g_object_unref (folder);

Ок, выглядит разумно, по крайней мере. Дальше веселее.

В тот же день (буквально; история коммитов не врёт) пришел другой добрый, но глупый человек (или умный, но злой? нельзя же быть настолько глупым?). И сделал это:

case RELOAD_EMPTY:
- /* The user didn't explicitly give us a folder to display, so we'll
- * use the saved one from the last invocation of the file chooser
- */
- folder = get_file_for_last_folder_opened (impl);
- gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (impl), folder, NULL);
- g_object_unref (folder);
+ recent_shortcut_handler (impl);
break;

------------------------------------------------

История вторая.

Допустим, мы сошли с ума и решили попользоваться этим вашим списком recently used. Пусть это будет какой-нибудь, прости господи, Totem. Пусть мы вчера смотрели в нём /media/data/Видео/Unforgettable/Unforgettable.S01E07.HDTV.XviD-ASAP.avi. Сегодня мы желаем посмотреть — правильно! — /media/data/Видео/Unforgettable/Unforgettable.S01E08.HDTV.XviD-ASAP.avi. И вот мы открываем этот диалог, видим список недавно использованных файлов с пунктом Unforgettable.S01E07.HDTV.XviD-ASAP.avi на первом месте, иии...

А? Что-что? Кто там из угла робко бормочет «щелкнуть правой кнопкой и выбрать в контекстном меню Open Folder»? Нет такого пункта, запомни! Пришло время пересмотреть седьмую серию! Седьмая серия сама не пересмотрится!

------------------------------------------------

История третья.

В настройках объекта, отвечающего за отображение recently used есть такая опция show_not_found. Вполне логично, что её имеет смысл всегда держать выключенной, потому что имена удаленных файлов вряд ли кому-то могут понадобиться в этом списке.

Вот только в виджете GtkRecentChooserMenu эта опция не работает. Если вы пользовались gnome-panel, то вы видели этот виджет — это то самое подменю с недавними документами в главном меню гнома. И несуществующие файлы вы в нём тоже наверняка видели, да-да.

Я наткнулся на эти грабли при попытке добавить поддержку списка recently used в меню lxpanelx. Для обхода бага пришлось сделать кустомный фильтр и фильтровать файлы вручную. (Кстати, при этом фильтр поначалу сегфолтился, потому что Gtk зануляет поле, которое не должно занулять, и для обхода и этого бага тоже пришлось пошаманить.)

А вот команда гнома на всём протяжении существования Gnome2 этот баг не заметила. Ну файлы какие-то левые в меню, фигня, да кому это надо вообще. Впрочем, я давно подозреваю, что все девелоперы гнома сидят на макоси.

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

------------------------------------------------

Боженька, убей их всех!

Ты просто не умеешь общаться с гномописателями. Пиши так: «Я принес вам новый хиг, братья! Теперь в GtkRecentChooserMenu не будут (<-- это ключевое слово) отображаться удаленные файлы!!!11!»

abraziv_whiskey ★★★★★ ()
Ответ на: комментарий от abraziv_whiskey

не будут (<-- это ключевое слово)

Черт побери. Тонко, но верно.

geekless ★★ ()
Ответ на: комментарий от PolarFox

Это отход от устоев. Боженька уже занес карающую десницу. Или шуйцу, ежли он левша.

abraziv_whiskey ★★★★★ ()
Ответ на: комментарий от PolarFox

О, да. Лучше писать программы на C. В аду, зато тепло.

Deleted ()

готов подписать петицию чтобы все пользователи кед скидывались по рублю на молоко для пользователей гномов и гтк. А то жрут свой кактус в сухомятку.

yax123 ★★★★ ()
Ответ на: комментарий от belous_k_a

То, что там показано, это даже может иметь смысл для неопытного пользователя. Заметь, там речь идёт о диалоге сохранения. Я говорил о диалоге открытия в первую очередь. То, что я описал — это просто чистый, концентрированный абсурд.

geekless ★★ ()
Ответ на: комментарий от belous_k_a

В любом случае,

1. Я не могу перейти в cwd.

2. Я не могу перейти в каталог «вот этого недавно открытого документа».

3. Я не могу удалить лишние элементы из списка недавних.

4. Я не могу скрыть часть точек монтирования из боковой панели. (И не могу добавить те, которые gtk с какого-то перепугу посчитал ненужными там.)

5. Я не могу настроить, что я хочу видеть по умолчанию в диалоге отрытия: список недавних, cwd, home или использованный в прошлый раз каталог.

Можно еще долго продолжать, что я там не могу. Enjoy your HIG.

geekless ★★ ()
Ответ на: комментарий от geekless

Пекло яке, попробуй это фиксануть но как уже сказали с «не будет» %)

FiXer ★★☆☆☆ ()

Создай соответствующий баг в багзиле GTK с полным переводом текста топика. Американцы хоть и тупые, но вдруг до них дойдет.

bhfq ★★★★★ ()

История 1: нечего обсуждать

История 2: надуманная, такая же как и «В диалоге открытия файла нельзя создать новую директорию»

История 3:

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

Это же история. Вполне естественно посмотреть какие файлы открывались, даже если их уже нет.

По-моему вся эта истерия просто от переутомления. Не работай так много, отдохни.

sdio ★★★★★ ()
Ответ на: комментарий от sdio

нечего обсуждать

Что нечего обсуждать? То, что убрали полезное свойство «открывать последнюю директорию» и добавили бесполезное «открывать список последних файлов»? В самом деле обсуждать нечего, и так ясно, что маразм.

надуманная, такая же как и «В диалоге открытия файла нельзя создать новую директорию»

Сравнил жопу с пальцем. Так и скажи: диалог открытия сделан не для людей, а для галочки напротив параграфа в HIGе. Кто-нибудь хоть раз им пользовался так, как это задумано by design?

Почему нельзя одним щелчком перейти в cwd? Почему нельзя одним щелчком перейти в каталог, из которого я открывал предыдущий файл? Нахер мне предлагают снова и снова открывать один и тот же файл?

Вполне естественно посмотреть какие файлы открывались, даже если их уже нет.

Это было бы естественно, если бы оттуда можно было перейти в каталог того файла, которого уже нет, чтобы сделать там что-тот полезное, например открыть другой файл. Тупо пялиться на названия, с которыми ничего нельзя сделать, даже скопировать... ты там сказал — такая же херня, как и «„В диалоге открытия файла нельзя создать новую директорию“? Даже еще абсурднее.

Между тем, всё, что умеет гномопанель, это тупо открыть файл в дефолтном приложении. (Даже не в том, в котором я этот файл на самом деле открывал — это отдельный фейл. Если я правил картинку в gimp-е, мне это меню откроет её в дефолтном вьюере. Если я правил html-файл в емаксе, мне откроют его в фирефохе. Лол, ок, крутая бесполезная фича.)

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

geekless ★★ ()
Ответ на: комментарий от sdio

Багрепорт и патчи ты им отправил?

Багрепорт на баг виджета давно висит в трекере. Остальное описанное это не баги реализации, а баги дизайна. По этим вопросам с разрабами понимания не достичь.

geekless ★★ ()
Ответ на: комментарий от geekless

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

Что показательно? Баг надо исправить. Мое понятие о юзабилити не обязано совпадать с твоим, так же как и твое не совпадает с понятиями разработчиков. Вопрос почему это заставляет тебя всех называть идиотами?

Я смотрю, кто занимается разработкой часто не могут придержать свое ЧСВ, примеров на ЛОРе больше одного.

sdio ★★★★★ ()
Ответ на: комментарий от sdio

Вопрос почему это заставляет тебя всех называть идиотами?

В треде слово идиот впервые только что употребил ты. Может у тебя переутомление? Ты отдохни.

Мое понятие о юзабилити не обязано совпадать с твоим, так же как и твое не совпадает с понятиями разработчиков.

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

geekless ★★ ()
Ответ на: комментарий от geekless

В треде слово идиот впервые только что употребил ты.

Я озвучил явно, то чем сквозит все твое исходное сообщение.

sdio ★★★★★ ()
Ответ на: комментарий от geekless

слово идиот

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

GotF ★★★★★ ()
Ответ на: комментарий от Kosyak

потому что gtk рисует через cairo, а cairo пофиг на fonts.conf и нужно править иксовые ресурсы. Тогда всё ок

lazyklimm ★★★★★ ()

Согласен, гткшные диалоги скатываются в такое же УГ, куда давно скатились кутешные.

Eddy_Em ☆☆☆☆☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.