+++ Данная задача создана размножением задачи 4054 +++ Для выбранного в списке драйвера должна быть возможность указать, загружать его или нет (флажок "Load a driver"). Также для него должно определяться, загружен драйвер или нет (должно отображаться либо "Driver is loaded", либо "Driver is not loaded"). Для проверки, загружен ли драйвер, надо вызывать static int is_loaded(dongle_t dongle); Если не загружен, функция будет возвращать 0. При установке флажка "Load a driver" надо вызывать static void set_start(dongle_t dongle); enum dongle_t { guardant, hasp, katran_lpt, katran_usb, sentinel, smartkey3 };
Откатил патчи: commit 14f3b820b9c72881edaf59cdab4dbccd05a37b1e Author: Ilya Shpigor <shpigor@etersoft.ru> Date: Tue Jun 30 16:08:35 2009 +0400 winecfg: Add dongles tab (eterbug #4054) и commit b784493bdb9d2f1a93f3ca9179e716dab08227ea Author: Vitaly Lipatov <lav@etersoft.ru> Date: Fri Jul 31 19:37:50 2009 +0400 winecfg: replace dongles status with driver status Насколько я понимаю, из *.rc файлов исчезли все структуры STRINGTABLE DISCARDABLE. Надо разобраться как теперь задаются нужные названия и переделать патчи
Вернул окаченный патч. Выяснил что структуры STRINGTABLE DISCARDABLE определены в winecfg.rc
Задал структуры STRINGTABLE DISCARDABLE в winecfg.rc. Обнаружил ошибку при определении страницы в окне свойств.
(В ответ на comment #3) > Задал структуры STRINGTABLE DISCARDABLE в winecfg.rc. Обнаружил ошибку при > определении страницы в окне свойств. Проблема определения страницы в окне свойств решена.
Сделал перевод строк содержащихся в структурах STRINGTABLE и DISCARDABLE.
При изменении в конфигурации драйверов должно появляется сообщение следующего рода "Изменение конфигурации. Для принятия изменений все программы должны быть закрыты...". Проверил на eterhack, данного сообщения не обнаружил. Проверил на стандартном вайне, сообщение появляется только при нажатии на управляющие клавиши, при изменении конфигурации мышкой оповещение изменения конфигурации не появляется.
Замена в winecfg файлов eterhack на 1.0.12 не дала результатов. Выяснил порядок вызова функций до появления окна с сообщением: trace:winecfg:apply () trace:winecfg:process_setting Setting L"System\\CurrentControlSet\\Services\\NKey":L"Start" to 'L""' trace:winecfg:set_config_key subkey=L"System\\CurrentControlSet\\Services\\NKey": name=L"Start", value=0x1621e8, type=4 trace:winecfg:free_setting destroying 0x15f430: L"System\\CurrentControlSet\\Services\\NKey" trace:winecfg:process_setting Setting L"System\\CurrentControlSet\\Services\\UPKey":L"Start" to 'L""' trace:winecfg:set_config_key subkey=L"System\\CurrentControlSet\\Services\\UPKey": name=L"Start", value=0x1622c8, type=4 trace:winecfg:free_setting destroying 0x162200: L"System\\CurrentControlSet\\Services\\UPKey"
(В ответ на comment #7) > Замена в winecfg файлов eterhack на 1.0.12 не дала результатов. Не надо файлы менять. Это способ сравнения с оригинальным wine, а не версии с одной багой с версией с другой багой. > Выяснил порядок вызова функций до появления окна с сообщением: Это проще сделать, глядя на исходный код. Думаю, стоит написать на русском, как необходимое поведение должно быть реализовано.
Сообщение изменения конфигурации ключей в 1.0.12 находится в dlls/propsheet.c в функции PROPSHEET_DoCommand. Сделать по аналогии в eterhack не получилось; решено в winecfg сделать новую проверку на изменение в конфигурации и вывод соответствующее сообщение.
Сделал вывод сообщения об изменении конфигурации ключей. Т.к. обработчик нажатия кнопок "ОК" и "Применить" описаны в dlls/comctl32/propsheet.c b , при включении в файл где описаны ключи (programs/winecfg/dongleui.c) получилась конфликтная ситуация; вынес описание функции, фиксирующей изменение в ключах, в отдельный файл.
проблему увидел. попытался адаптировать коммит 14f3b820b9c72881edaf59cdab4dbccd05a37b1e. проблема пока не решена. посмотрел, что сделано было у grosso. нужно попробовать приложить его к eterhack.
вкладка появилась. теперь, нужно сделать чтобы надписи были на русском. решаю эту проблему.
отправил патч на wine-patches@
внес изменения в патч: добавил потерянные файлы, перенес описание формы из winecfg.rc в En.rc и Ru.rc. отправил на wine-patches@
переделал патч. убрал в нем изменения в comctl32, поскольку все эти изменения по сути относятся к баге 6890. а то, что требовалось здесь, то есть вкладка со списком драйверов ключей реализована. отправил на wine-patches@.
сделал, вывод предложения о перезагрузке, не затрагивая comctl32, но получилось плохо, поскольку обработчик кнопки ОК, продолжает свою работу, даже после появления окошка с диалогом о перезагрузке. попытался исправить, не смог.
ранее текст сообщения выводился плохо, решил проблему. работаю над фиксированием факта внесения изменнений.
исправил функцию фиксирующую изменения. сделал фиксацию изменения не только по нажатию кнопки, но и по щелчку мышкой. отправил патч на wine-patches@
исправляю багу
внес изменения в winecfg/main.c убрал дублирующиеся куски winecfg/winecfg.rc поместил строки из сообщения в файл ресурсов ru.po сделал перевод строк из сообщения winecfg/winecfg.h winecfg/dongleui.c переименовал функцию, фиксирующую изменения, теперь fixed_dongles_changes() отправил на wine-patches@.
видимо, дело в том, что в po файле, изменения были сохранены неверно. решаю проблему.
Приложил патч
патч принят
Закрываем баги, принятые более года назад, и до сих пор не закрытые.