Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 8484 - Добавить в интерфейс VirtualBox поле отбора   Make a simular bug
Summary: Добавить в интерфейс VirtualBox поле отбора
Status: CLOSED FIXED
Alias: None
Product: Отдел прикладного ПО
Classification: Внутреннее (Etersoft)
Component: Общее (show other bugs)
Version: не указана
Hardware: PC All
: P4 minor
Target Milestone: ---
Assignee: Sergey Mitrofanov
QA Contact: Vitaly Lipatov
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
In work:
Reported: 2012-05-23 19:55 MSK by Vitaly Lipatov
Modified: 2014-11-22 02:30 MSK (History)
9 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments
Пример поля отбора (70.92 KB, image/png)
2012-05-23 19:55 MSK, Vitaly Lipatov
Details
Патч, добавляющий строку поиска для отбора ВМ по имени. (9.33 KB, patch)
2012-08-17 12:35 MSK, Sergey Mitrofanov
Details | Diff
Версия 2 патча со строкой поиска (9.15 KB, patch)
2012-09-11 14:06 MSK, Sergey Mitrofanov
Details | Diff
Версия 3 патча со строкой поиска (7.82 KB, patch)
2012-09-11 14:06 MSK, Евгений Синельников
Details | Diff
Версия 4 патча со строкой поиска (9.19 KB, patch)
2012-08-22 18:25 MSK, Sergey Mitrofanov
Details | Diff
Версия 5 патча со строкой поиска (9.20 KB, patch)
2012-08-22 19:07 MSK, Sergey Mitrofanov
Details | Diff
Версия 6 патча со строкой поиска (9.42 KB, patch)
2012-08-25 18:55 MSK, Sergey Mitrofanov
Details | Diff
Версия 7 патча со строкой поиска (21.60 KB, patch)
2012-08-28 16:55 MSK, Sergey Mitrofanov
Details | Diff
Версия 8 патча со строкой поиска (21.64 KB, patch)
2012-09-11 14:06 MSK, Sergey Mitrofanov
Details | Diff
Версия 9 патча со строкой поиска (25.48 KB, patch)
2012-08-31 19:29 MSK, Sergey Mitrofanov
Details | Diff
Иконка 1 (672 bytes, image/png)
2012-08-30 21:52 MSK, Sergey Mitrofanov
Details
Иконка 2 (1.35 KB, image/png)
2012-08-30 21:52 MSK, Sergey Mitrofanov
Details
Версия 10 патча со строкой поиска (30.62 KB, patch)
2012-08-31 21:20 MSK, Sergey Mitrofanov
Details | Diff
Версия 11 патча со строкой поиска (33.18 KB, patch)
2012-09-11 14:06 MSK, Sergey Mitrofanov
Details | Diff
Версия 12 патча со строкой поиска (33.16 KB, patch)
2012-09-11 14:06 MSK, Sergey Mitrofanov
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2012-05-23 19:55:36 MSK
Created attachment 2512 [details]
Пример поля отбора

При использовании большого количества машин в VirtualBox возникает проблема
с поиском нужной машины. Она усугубляется тем, что машины выводятся в списке в порядке их добавления, или ещё каком-то, но никак не в алфавитном, и никак это не управляется.

Есть предложение добавить в главное окно поле отбора, чтобы при начале набора в нём список перестраивался, выводя только совпадающие записи.

Пример того, где (поле над списком систем) и как поле могло бы быть размещено, в приложении.

P.S.
Чтобы получить гит-репозиторий с пакетом virtualbox, достаточно выполнить
$ rpmgp -g virtualbox
Comment 1 Польщиков Илья 2012-06-01 17:24:40 MSK
Пока VirtualBox чинили посмотрел проект начал разбираться. Написан он на QT, что не очень знакомо мне. Нужно время разобраться.
Comment 2 Sergey Mitrofanov 2012-07-20 16:53:16 MSK
У меня почему-то на builder64 никак не хочет собираться virtualbox. По-моему следует рассматривать всё, исходя из класса UIBootTable.
Comment 3 Vitaly Lipatov 2012-07-22 16:36:42 MSK
У меня и у других отлично собирается через $ rpmbb.
Очень странно. Завтра постараюсь быть на связи после 14, если что.
Поставил те же пакеты на просто builder, можно пробовать там.
Comment 4 Sergey Mitrofanov 2012-07-23 10:07:04 MSK
Увеличил размер буфера в консоли, вот что выдает rpmbb на builder64 
kmk: *** No rule to make target `/home/sergeym/RPM/BUILD/VirtualBox-4.1.12_OSE/src/recompiler/Makefile.kmk'.  Stop.
ошибка: Неверный код возврата из /home/sergeym/tmp/rpm-tmp.36947 (%build)


Ошибки сборки пакетов:
    Неверный код возврата из /home/sergeym/tmp/rpm-tmp.36947 (%build)
Comment 5 Sergey Mitrofanov 2012-07-23 10:21:00 MSK
С классом я немного ошибся. Окошко, в котором располагаются созданные машины, и его логика работы располагается где-то в UIVMListView и VBoxSelectorWnd. Это в каталоге Frontends/VirtualBox/src/selector/
Comment 6 Sergey Mitrofanov 2012-07-23 17:05:45 MSK
Потратил кучу времени на попытки собрать в пакет и запустить. Собирать получается через раз, как будто программа живет своей жизнью. Запускаться не хочет.
Comment 7 Евгений Синельников 2012-07-27 01:05:35 MSK
В общем, отладка VirtualBox - дело не простое.

Во-первых, сборка работает только из рабочего каталога, который прибит гвоздями к %vboxdir, который задан как %_libdir/virtualbox.

Во-вторых, программы должны запускаться только от рута, причём через suid атрибуты файла и это причина, по которой рабочий каталог прибит гвоздями:
[sin@snote virtualbox]$ grep 4710 virtualbox.spec
%attr(4710,root,vboxusers) %vboxdir/VBoxHeadless
%attr(4710,root,vboxusers) %vboxdir/VBoxNetDHCP
%attr(4710,root,vboxusers) %vboxdir/VBoxNetAdpCtl
%attr(4710,root,vboxusers) %vboxdir/VBoxSDL
%attr(4710,root,vboxusers) %vboxdir/VirtualBox

В-третьих, suid'ные программы не получится отлаживать в каталоге смонтированном через в опцией nosuid, а именно с этой опцией монтируется обычно /home, также смонтирован у нас и /srv.
Так что отладка в рабочем каталоге, в принципе, проблематизирована даже не сборочным результатом, а нашим же рабочим окружением.

Минимальный набор действий, который позволяет задать правильные права доступа выглядит вот так:
# chown root:vboxusers VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl VBoxSDL VirtualBox
# chmod 4710 VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl VBoxSDL VirtualBox
# chown root . *.r0 *.gc *.so VBox* components/ components/VBox*


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

commit 53f8bef377d6b65b800a8b83d270818200ba6b8c
    Add vbox-debug.sh script for debugging
    
    Using: rpm -bb --enable debug
        or gear-rpm -bb --enable debug

commit 187c476b30ea3b4c2f0429e0016a2ba2814e0dce
    Update spec file for debug build in source directory

При сборке с опцией debug прибитый каталог vboxdir задаётся в каталоге сборки проекта и сборка отваливается на стадии %install примерно с таким выводом на экран:
VirtualBox not installable due debug build enabled
Run: /home/sin/RPM/BUILD/VirtualBox-4.1.18_OSE/vbox-debug.sh
  or /home/sin/RPM/BUILD/VirtualBox-4.1.18_OSE/vbox-debug.sh ./VirtualBox

Но проблемы nosuid это не решает, но я здесь и повлиять никак не могу...
Последние коммиты доступны по адресу (ветка master):
 http://git.altlinux.org/people/sin/packages/virtualbox.git
Версию VirtualBox там нужно поставить 4.1.18 при сборке:
$ gear-rpm --commit -bi --enable debug
Comment 8 Sergey Mitrofanov 2012-07-27 12:31:42 MSK
Может оказаться полезным - http://fossies.org/linux/misc/VirtualBox-4.1.18.tar.gz/dox/index.html
Comment 9 Sergey Mitrofanov 2012-08-06 16:11:49 MSK
Разобрались с VirtualBox (как собирать). На данный момент набросал дизайн, соединил сигнал со слотом.
Comment 10 Sergey Mitrofanov 2012-08-07 15:27:49 MSK
На данный момент работает, возможны проблемы с перетаскиванием машин. Так же ещё не тестировалось удаление/добавление машин. Есть небольшая заминка при очистке строки поиска.
Comment 11 Sergey Mitrofanov 2012-08-08 13:07:35 MSK
Баг - если кликнуть на машину, если в строке поиска что-то есть, то информация о машине появляется/пропадает в правой части окна.
Comment 12 Sergey Mitrofanov 2012-08-10 15:26:56 MSK
Предварительно первая версия готова. Пока присутствует баг с Drag&Drop, так что я просто отключил эту возможность до исправления.
Comment 13 Sergey Mitrofanov 2012-08-14 12:54:12 MSK
Исправил баг с Drag&Drop. Drag&Drop возможен только при пустой строке поиска.
Прикладываю патч.
Comment 14 Sergey Mitrofanov 2012-08-14 12:56:09 MSK
Created attachment 2557 [details]
Патч, добавляющий строку поиска для отбора ВМ по имени.
Comment 15 Евгений Синельников 2012-08-14 13:06:29 MSK
Вышла бета-версия 4.2.0 (вариант для сборки доступен у меня на альтовом гите), чтобы облегчить портирование этого улучшения, кроме патча, следует держать отдельную ветку с данным изменением.
Comment 16 Евгений Синельников 2012-08-14 13:11:15 MSK
Просмотрел патч. Думаю не стоит вносить в него улучшения в оформлении чужого кода. Я имею в виду добавление фигурных скобочек, вставку и удаление пустых строк и т.п. Такие изменения ничего, по сути, не вносят, а проблемы при совместной работе, включая объединения кода с будущими версиями, добавляют без надобности.
Comment 17 Sergey Mitrofanov 2012-08-15 22:33:08 MSK
Внес исправления в патч, код привел к общему стилю.
Comment 18 Sergey Mitrofanov 2012-08-15 22:33:52 MSK
Created attachment 2561 [details]
Версия 2 патча со строкой поиска
Comment 19 Евгений Синельников 2012-08-22 11:56:12 MSK
Created attachment 2565 [details]
Версия 3 патча со строкой поиска

Поправил и приложил патч в очередную сборку для проверки. В исправленном патче убраны лишние детали, о которых я уже указывал:
- убрана вставка "лишних" фигурных скобок, в оригинальный код;
- восстановлено удаление и вставка пустых строк;
- удалены пробельные символы в пустых строках.
http://git.altlinux.org/people/sin/packages/virtualbox.git?p=virtualbox.git;a=shortlog;h=refs/heads/search

Работает, но выглядит не нужным, для многих пользователей. Думаю, внести ряд дополнений:
- показывать строку поиска по клавише CTRL+F (по умолчанию, не показывать, если не выставлена настройка);
- добавить в меню настройки (вкладка Общие) опцию - "показывать строку поиска" с указанием в подсказке комментария, о удобстве при большом списке виртуальных машин.
- сохранять настройку "показывать строку поиска" в общем списке настроек приложения.

После внесения этих дополнений можно будет попытаться пробросить этот патч в апстрим.
Comment 20 Sergey Mitrofanov 2012-08-22 17:47:57 MSK
Пока что добавил работу со строкой поиска по CTRL + F. Не понял, зачем так мудрить с настройками. При запуске программы можно не показывать строку поиска. Кому надо - сам вызовет. А делать checkbox, разрешающий вызов строки поиска будет излишним, по-моему.
На данный момент поведение строки поиска такое - если в строке поиска был текст, то сокрытие строки по CTRL+F вызовет очистку строки поиска и соответственно будет выведен весь лист машин. В принципе можно придумать любой режим работы. Главное, чтоб пользователю удобно было.
Comment 21 Sergey Mitrofanov 2012-08-22 18:00:20 MSK
Created attachment 2566 [details]
Версия 4 патча со строкой поиска
Comment 22 Денис Баранов 2012-08-22 18:08:19 MSK
На данный момент мы делаем эту надстройку для себя, в свободное время попытаемся добавить настройки в меню. Пока багу можно закрывать как отложенную, если строка поиска корректно работает.
Comment 23 Sergey Mitrofanov 2012-08-22 18:25:12 MSK
Created attachment 2567 [details]
Версия 5 патча со строкой поиска
Comment 24 Sergey Mitrofanov 2012-08-22 18:25:38 MSK
Исправил небольшой косячек.
Comment 25 Sergey Mitrofanov 2012-08-22 19:07:13 MSK
После старта фокус сразу на строке поиска.
Comment 26 Sergey Mitrofanov 2012-08-22 19:07:48 MSK
Created attachment 2568 [details]
Версия 6 патча со строкой поиска
Comment 27 Sergey Mitrofanov 2012-08-23 13:36:00 MSK
Единственная настройка, которую я бы внес - "показывать строку поиска при старте".
Comment 28 Sergey Mitrofanov 2012-08-23 18:55:40 MSK
Добавил checkbox. Добавил его в штатную систему работы настроек VirtualBox. Осталось только сделать, чтобы он влиял на наличие строки поиска при запуске программы, а так же перевести его и добавить подсказку, как было написано ранее.
Comment 29 Евгений Синельников 2012-08-23 19:42:51 MSK
Собственно, я имел в виду как раз то, что ты делаешь: "показывать строку поиска при старте".

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

Относительно метода отображения строки поиска хочу добавить, что логично оформить действие showHideSearchLine(), которое будет доступно, как по CTRL+F,так и в Машина->Строка Поиска (Machine->Search Line).

Я хочу собрать этот вариант сразу в сизиф.
Comment 30 Евгений Синельников 2012-08-24 01:04:57 MSK
Сделал сборку на основе последнего патча - там есть ошибка деиницализации, которая проявляется при закрытии приложения:
[sin@snote virtualbox]$ VirtualBox
Ошибка сегментирования

Сборка без патча такого эффекта не даёт.

Изменения, с которыми проводилась сборка доступны в репозитории (ветка search):
http://git.altlinux.org/people/sin/packages/virtualbox.git
Comment 31 Станислав Коробейников 2012-08-24 14:48:26 MSK
Мне кажется, что строка поиска нужна сразу. Оболочку открывают, что бы зупустить машину. Для этого её нужно найти. Лишнее нажатие ctrl-f ни к чему. 

(В ответ на comment #29)
> В текущем варианте, без настройки, я думаю более разумно не показывать строку
> поиска при старте.
Comment 32 Sergey Mitrofanov 2012-08-25 17:15:48 MSK
(В ответ на comment #31)
> Мне кажется, что строка поиска нужна сразу. Оболочку открывают, что бы
> зупустить машину. Для этого её нужно найти. Лишнее нажатие ctrl-f ни к чему. 
> 
> (В ответ на comment #29)
> > В текущем варианте, без настройки, я думаю более разумно не показывать строку
> > поиска при старте.
Опция "показывать при старте" для того и нужна. У нас машин много, поэтому галочку поставил и забыл. У кого штук 5 ясное дело она не нужна, и строка поиска не будет глаза мазолить.
Comment 33 Sergey Mitrofanov 2012-08-25 18:54:56 MSK
Сделал новую версию патча. Теперь настройка показать/скрыть при старте работает. Какой текст поставить как подсказку при наведении мыши? Представляю что-то вроде: "When checked, the search line will be visible after VirtualBox started. It is useful when there are a lot of VMs in thi list and you want to search some VMs." Подправте плз ошибки.
На тему бага при закрытии программы - к сожалению не удается повторить у себя. Баг проявляется всегда, независимо от того, что есть в строке поиска / какие машины есть в списке / какие машины запущены?
Comment 34 Sergey Mitrofanov 2012-08-25 18:55:51 MSK
Created attachment 2572 [details]
Версия 7 патча со строкой поиска
Comment 35 Sergey Mitrofanov 2012-08-27 17:34:05 MSK
Избавиться от списка, в котором приходится дополнительно хранить все машины, нельзя, по-моему. Или же придется заводить списки индексов и тп, но это как-то слишком запутанно.
Comment 36 Sergey Mitrofanov 2012-08-28 16:54:42 MSK
Исправил небольшой баг - после поиска считалось, что список машин пуст.
Comment 37 Sergey Mitrofanov 2012-08-28 16:55:30 MSK
Created attachment 2576 [details]
Версия 8 патча со строкой поиска
Comment 38 Sergey Mitrofanov 2012-08-29 19:15:57 MSK
Осталось собрать и поставить на virtualbox
Comment 39 Sergey Mitrofanov 2012-08-30 18:41:55 MSK
"Относительно метода отображения строки поиска хочу добавить, что логично
оформить действие showHideSearchLine(), которое будет доступно, как по
CTRL+F,так и в Машина->Строка Поиска (Machine->Search Line)."
Ранее было  доступно только по Ctrl+F. Теперь появилось действие в меню, как написано выше. Благодаря этому действию удалось задействовать штатный механизм работы с горячими клавишами, который уже есть в VirtualBox. Осталось иконку добавить и найти, где вызывается деструктор созданных действий.
Comment 40 Sergey Mitrofanov 2012-08-30 18:42:54 MSK
Created attachment 2580 [details]
Версия 9 патча со строкой поиска
Comment 41 Sergey Mitrofanov 2012-08-30 21:51:30 MSK
Пока не удается прикрутить иконки. Сами иконки прикладываю.
Comment 42 Sergey Mitrofanov 2012-08-30 21:52:14 MSK
Created attachment 2581 [details]
Иконка 1
Comment 43 Sergey Mitrofanov 2012-08-30 21:52:52 MSK
Created attachment 2582 [details]
Иконка 2
Comment 44 Sergey Mitrofanov 2012-08-31 19:28:56 MSK
Прикрутил иконки. Новый патч.
Comment 45 Sergey Mitrofanov 2012-08-31 19:29:36 MSK
Created attachment 2583 [details]
Версия 10 патча со строкой поиска
Comment 46 Sergey Mitrofanov 2012-08-31 21:20:12 MSK
Исправил опечатку в коде, добавил перевод
Comment 47 Sergey Mitrofanov 2012-08-31 21:20:50 MSK
Created attachment 2584 [details]
Версия 11 патча со строкой поиска
Comment 48 Sergey Mitrofanov 2012-09-11 12:45:05 MSK
(В ответ на comment #30)
> Сделал сборку на основе последнего патча - там есть ошибка деиницализации,
> которая проявляется при закрытии приложения:
> [sin@snote virtualbox]$ VirtualBox
> Ошибка сегментирования
> 
> Сборка без патча такого эффекта не даёт.
> 
> Изменения, с которыми проводилась сборка доступны в репозитории (ветка search):
> http://git.altlinux.org/people/sin/packages/virtualbox.git
 Подтверждаю, есть такая бага. К сожалению проявилась только после запуска на VirtualBox. При запуске собранного примера на builder64 такого не было.
Comment 49 Sergey Mitrofanov 2012-09-11 13:27:23 MSK
Разобрались, где падает. Падает на удалении delete searchLine. Осталось исправить.
Comment 50 Sergey Mitrofanov 2012-09-11 14:06:43 MSK
Created attachment 2598 [details]
Версия 12 патча со строкой поиска
Comment 51 Sergey Mitrofanov 2012-09-11 14:07:22 MSK
Добавил новый патч. По идее падать больше не должно.
Comment 52 Константин Кондратюк 2012-09-11 14:12:47 MSK
Может, обсуждалось уже?

Фичреквест для будущего развития: кнопка сброса фильтра.
Вижу удобный пример в roundcube. В нашем варианте кнопка, видимо, становится активной при непустом поле поиска. Нажатие на кнопку - сброс фильтра и обновление информации о машинах.
Comment 53 Sergey Mitrofanov 2012-10-30 13:00:31 MSK
Решено
Comment 54 Vitaly Lipatov 2014-11-22 02:30:58 MSK
Закрываю решённые более 180 дней назад.