Bug 6916

Summary: Надо добавить в winecfg вкладку для управления загрузкой драйверов ключей
Product: WINE@Etersoft Reporter: Виталий Перов <vitperov>
Component: Ключи защиты ; Системы защиты ; Файл лицензииAssignee: Роман Дадьков <romand>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: critical    
Priority: P2 CC: amorozov, kondratyuk, lav, sonner
Version: 2.0   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 4054    
Bug Blocks: 42, 5101, 6890, 7399    
Deadline: 2011-09-23   

Description Виталий Перов 2011-02-15 17:27:02 MSK
+++ Данная задача создана размножением задачи 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
};
Comment 1 Виталий Перов 2011-02-15 17:32:55 MSK
Откатил патчи:

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. Надо разобраться как теперь задаются нужные названия и переделать патчи
Comment 2 Иван Загарский 2011-02-18 21:39:07 MSK
Вернул окаченный патч. Выяснил что структуры STRINGTABLE DISCARDABLE определены в winecfg.rc
Comment 3 Иван Загарский 2011-02-23 18:56:02 MSK
Задал структуры STRINGTABLE DISCARDABLE в winecfg.rc. Обнаружил ошибку при определении страницы в окне свойств.
Comment 4 Иван Загарский 2011-02-24 16:31:02 MSK
(В ответ на comment #3)
> Задал структуры STRINGTABLE DISCARDABLE в winecfg.rc. Обнаружил ошибку при
> определении страницы в окне свойств.
Проблема определения страницы в окне свойств решена.
Comment 5 Иван Загарский 2011-02-24 19:40:36 MSK
Сделал перевод строк содержащихся в структурах STRINGTABLE и DISCARDABLE.
Comment 6 Иван Загарский 2011-02-28 20:43:37 MSK
При изменении в конфигурации драйверов должно появляется сообщение следующего рода "Изменение конфигурации. Для принятия изменений все программы должны быть закрыты...". Проверил на eterhack, данного сообщения не обнаружил. Проверил на стандартном вайне, сообщение появляется только при нажатии на управляющие клавиши, при изменении конфигурации мышкой оповещение изменения конфигурации не появляется.
Comment 7 Иван Загарский 2011-03-01 21:27:29 MSK
Замена в 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 8 Vitaly Lipatov 2011-03-01 22:11:00 MSK
(В ответ на comment #7)
> Замена в winecfg файлов eterhack на 1.0.12 не дала результатов.
Не надо файлы менять. Это способ сравнения с оригинальным wine, а не версии с одной багой с версией с другой багой.

> Выяснил порядок вызова функций до появления окна с сообщением:
Это проще сделать, глядя на исходный код.

Думаю, стоит написать на русском, как необходимое поведение должно быть реализовано.
Comment 9 Иван Загарский 2011-03-05 20:25:51 MSK
Сообщение изменения конфигурации ключей в 1.0.12 находится в dlls/propsheet.c в функции PROPSHEET_DoCommand. Сделать по аналогии в eterhack не получилось; решено в winecfg сделать новую проверку на изменение в конфигурации и вывод соответствующее сообщение.
Comment 10 Иван Загарский 2011-03-12 22:33:05 MSK
Сделал вывод сообщения об изменении конфигурации ключей. Т.к. обработчик нажатия кнопок "ОК" и "Применить" описаны в dlls/comctl32/propsheet.c b , при включении в файл где описаны ключи (programs/winecfg/dongleui.c) получилась конфликтная ситуация; вынес описание функции, фиксирующей изменение в ключах, в отдельный файл.
Comment 12 Роман Дадьков 2011-09-12 21:19:34 MSK
проблему увидел.
попытался адаптировать коммит 14f3b820b9c72881edaf59cdab4dbccd05a37b1e. проблема пока не решена. 
посмотрел, что сделано было у grosso. нужно попробовать приложить его к eterhack.
Comment 13 Роман Дадьков 2011-09-13 11:31:03 MSK
вкладка появилась. теперь, нужно сделать чтобы надписи были на русском. решаю эту проблему.
Comment 14 Роман Дадьков 2011-09-14 12:29:27 MSK
отправил патч на wine-patches@
Comment 15 Роман Дадьков 2011-09-14 21:49:46 MSK
внес изменения в патч: добавил потерянные файлы, перенес описание формы из winecfg.rc в En.rc и Ru.rc.
отправил на wine-patches@
Comment 16 Роман Дадьков 2011-09-16 14:16:25 MSK
переделал патч. убрал в нем изменения в comctl32, поскольку все эти изменения по сути относятся к баге 6890. а то, что требовалось здесь, то есть вкладка со списком драйверов ключей реализована.
отправил на wine-patches@.
Comment 17 Роман Дадьков 2011-09-18 16:51:31 MSK
сделал, вывод предложения о перезагрузке, не затрагивая comctl32, но получилось плохо, поскольку обработчик кнопки ОК, продолжает свою работу, даже после появления окошка с диалогом о перезагрузке.
попытался исправить, не смог.
Comment 18 Роман Дадьков 2011-09-19 11:53:42 MSK
ранее текст сообщения выводился плохо, решил проблему.
работаю над фиксированием факта внесения изменнений.
Comment 19 Роман Дадьков 2011-09-19 22:20:16 MSK
исправил функцию фиксирующую изменения. 
сделал фиксацию изменения не только по нажатию кнопки, но и по щелчку мышкой.
отправил патч на wine-patches@
Comment 20 Роман Дадьков 2011-09-27 11:52:42 MSK
исправляю багу
Comment 21 Роман Дадьков 2011-09-28 13:52:16 MSK
внес изменения в 
winecfg/main.c убрал дублирующиеся куски
winecfg/winecfg.rc поместил строки из сообщения в файл ресурсов
ru.po сделал перевод строк из сообщения
winecfg/winecfg.h winecfg/dongleui.c переименовал функцию, фиксирующую изменения, теперь fixed_dongles_changes()
отправил на wine-patches@.
Comment 22 Роман Дадьков 2011-09-29 14:08:36 MSK
видимо, дело в том, что в po файле, изменения были сохранены неверно.
решаю проблему.
Comment 23 Роман Дадьков 2011-09-30 18:53:26 MSK
отправил патч на wine-patches@
Comment 24 Александр Морозов 2011-10-03 11:20:45 MSK
Приложил патч
Comment 25 Роман Дадьков 2011-10-03 11:27:32 MSK
патч принят
Comment 26 Vitaly Lipatov 2014-09-12 02:50:25 MSK
Закрываем баги, принятые более года назад, и до сих пор не закрытые.