Page 2 of 5

Re: GUI интерфейс.

Posted: Sun Jun 12, 2011 8:42 pm
by boss911
boss911 wrote:Запускаем ProgDVB. Обычный режим окна, кликаем по списку каналов, потом стрелки вверх\вниз переключают каналы.
Все правильно работает.
boss911 wrote:Переходим в фулскрин, стрелки переключают (проверил для надежности: кликаем по списку в фулскрине, каналы переключаются).
Снова все правильно работает.
boss911 wrote:Выходим в обычный режим, кликаем по списку, каналы стрелками уже не переключаются.
- не правильно.

Почему после выхода из фулскрина, когда кликну по списку каналов, стрелки клавиатуры уже не переключает каналы? Почему в первом случае (цитате), при клике в обычном режиме по списку каналов стрелки переключают каналы?

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 5:53 am
by Prog
Вот я уже третье сообщение пытаюсь понять что именно не так. Вообще говоря глюк первое, после клика в список кнопки должен получать он и никакого переключения быть не должно. Но там тоже ньюансы. B HID модуль и неизвестно что после было

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 7:11 am
by boss911
Prog

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

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

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 11:24 am
by Prog
Пока не кликните мимо спика - нет. Список (GUI) это тоже контрол который тоже работает с кнопками и делает это с пользой для пользователя. Вот, в соседней ветки просили как раз всегда кнопками переключатся именно по этому списку, а не пепеключать каналы.

То есть проблема от того что клавиатура используется вами и как ДУ и как клавиатура. И требуется переключение между этими двумя вариантами. Вот клик в экран или в подходящий контрол как раз переключает. Но история эта увы бесконечная. Там ещё много вариантов поведения. Например, что делать когда GUI в фокусе но есть OSD итд.

С другой стороны если вам нужно только переключения, то почему бы не использовать ch+/ch- повесив их на удобные не используемые кнопки?

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 11:51 am
by Yuri
Prog wrote: То есть проблема от того что клавиатура используется вами и как ДУ и как клавиатура. И требуется переключение между этими двумя вариантами. Вот клик в экран или в подходящий контрол как раз переключает. Но история эта увы бесконечная. Там ещё много вариантов поведения. Например, что делать когда GUI в фокусе но есть OSD итд.
Предлагал же уже - сделать отдельно cinema mode, как в Powerdvd сделано - фуллскрин онли, управление только с ДУ (клавиатура как частный случай оного ДУ), соответственно никаких окошек, меню и списков - все точно через OSD. Сделать, кстати, совсем несложно - при его выборе производить отключение всплывающих контролов/менюшек (проще говоря, не обрабатывать сообщения мыши) и фокус ввода на фуллскрин окно жеско забирать.

В этом режиме, кстати, можно легко радикально решить проблему с фокусом ввода, через RegisterHotKey() - зарегистрированным хоткеям все равно, какое окно сверху, их сообщения все равно попадут туда, куда было назначено при их регистрации. Соответственно, в обработчик сворачивания/разворачивания окна добавить убирание/восстановление этих самых хоткеев, от силы пара десятков строчек кода.

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 11:53 am
by Prog
Не сказал бы я что сделать новый интерфейс фактически целиком, это совсем не сложно.

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 12:36 pm
by Yuri
А зачем "сделать новый"? Фичи-то нужные все и так уже есть (ну да, OSD меню можно было бы сделать пофункциональнее, но это терпит, ради, скажем, сканирования спутника и в обычный режим перейти можно), все, что нужно - это в "новом" режиме отключить ненужные фичи того фуллскрин режима, который есть сейчас? Т.е. просто-напросто отключить в нем обработку событий мыши (=всплывающие окна не появятся) и фокус ввода не отдавать (=клавиатура будет работать как пульт ДУ онли)?

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 12:56 pm
by Prog
да оно так примерно и есть если мыш не трогать.

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 1:08 pm
by Yuri
в 6.63 ее все еще приходится трогать :( при запуске, дабы основное окно таки получило фокус ввода и стало по нажатиям соответствующих клавиш открывать osd.

PS кстати, а насколько сложно пофиксить в фуллскрин режиме обработку alt+f4 (=стандартная для винды команда закрыть программу)? Закрывать при необходимости - сейчас тоже приходится через мышку, на alt+f4 реакции в фуллскрине практически никогда нет.

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 1:16 pm
by Prog
Не пробовал. Но есть же стандартный выход и возможность повесить на него кнопку.

Всё не могу понять что у вас с fullscreen. Само окно ProgDVB в фокусе? На какиелибо кнопки реагирует?

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 1:30 pm
by Yuri
стартую в фуллскрине = фокус где-то не там (а как посмотреть, если ничего, кроме прогдвб, в фуллскрин режиме и не видно, на то он и фуллскрин), на кнопки реакции нет вообще никакой. Кликаю 1 раз мышкой на любом месте фуллскрин окна = все становится нормально. До 6.63 такого не было.
В ранних версиях 6.63 та же фигня была не только при старте, но и при выходе компа из спящего режима, потом в одной из последних версий этот баг пропал.

Мб это связано с изменением механизма загрузки аддона? Потеря фокуса при просыпании исчезла приблизительно тогда же, когда работа с аддоном пофикшена была, уж не знаю, совпадение это или нет. Мб просто добавить в код вызов SetForegroundWindow(...) сразу после завершения всех стартовых загрузок (т.е. тогда, когда на экране появляется поток/osd) и посмотреть, пропадет ли данный глюк?

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 1:42 pm
by Yuri
Вдогонку к предыдущему:

Переключил на загрузку в обычный режим, запустил. Как и предполагал - при старте окно ПрогДВБ не становится "верхним"/"активным", т.е. фокус ввода получает то ли аддон, то ли еще фиг поймешь что. Соответственно реакции на клавиатуру нет, до тех пор, пока альт-табом или мышкой не сделаю ПрогДВБ активным окном.

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 1:50 pm
by Prog
Когда то уже спрашивал, спрошу ещё раз. Как именно вы переключаетесь в fullscreen? То есть последовательность действий.

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 2:13 pm
by Yuri
никакой особой последовательности, просто запускаю и все.
ПрогДВБ стартует в том режиме, в котором последний раз был штатно закрыт. В моем случае это фуллскрин режим. Соответственно, при запуске через иконку на панели задач/в стартменю (или при старте windows, поскольку ProgDVB у меня стоит в стартапе) - сразу запускается в фуллскрине.

Но дело-то в том, что и не в фуллскрине - хоть через иконку, хоть после рестарта винды ПрогДВБ 6.63 не становится у меня активным окном. <=6.61.3 становился.

Re: GUI интерфейс.

Posted: Mon Jun 13, 2011 2:20 pm
by Yuri
Попробовал отключить acamd. Без него - стартует правильно, т.е. окно ПрогДВБ сразу становится активным и фокус не теряет.
Т.е. догадка оказалась верной, сей баг вылез из-за изменения механики загрузки плагина. Вот добавление после оной загрузки вызова SetForegroundWindow() и вылечит его напрочь.
Ну или сравнить исходные коды (старый, до 6.62 и нынешний) той части программы, которая за загрузку плагинов отвечает - мб в нынешнем флаг, отвечающий за параметры загрузки, неверно проставлен, там, где вызов CreateProcess идет (если, конечно, загрузка плагина через него реализована) - структуру StartupInfo посмотреть стоит, параметры dwFlags и wShowWindow.