From e0a75aea9f534e16e30f33f28c874f91eb31c4e7 Mon Sep 17 00:00:00 2001 From: =?utf-8?q?Miko=C5=82aj_Zalewski?= Date: Sat, 1 Mar 2008 23:13:39 +0100 Subject: [PATCH] wrc: convert standard control classes names into ids also for UTF-8 resource files --- tools/wrc/parser.y | 71 ++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 50 insertions(+), 21 deletions(-) diff --git a/tools/wrc/parser.y b/tools/wrc/parser.y index 94ce44c..6b16c71 100644 --- a/tools/wrc/parser.y +++ b/tools/wrc/parser.y @@ -2079,34 +2079,63 @@ byebye: return ctrl; } +static int get_class_idW(WCHAR *cc) +{ + WCHAR szBUTTON[] = {'B','U','T','T','O','N',0}; + WCHAR szCOMBOBOX[] = {'C','O','M','B','O','B','O','X',0}; + WCHAR szLISTBOX[] = {'L','I','S','T','B','O','X',0}; + WCHAR szEDIT[] = {'E','D','I','T',0}; + WCHAR szSTATIC[] = {'S','T','A','T','I','C',0}; + WCHAR szSCROLLBAR[] = {'S','C','R','O','L','L','B','A','R',0}; + + if(!strcmpiW(szBUTTON, cc)) + return CT_BUTTON; + if(!strcmpiW(szCOMBOBOX, cc)) + return CT_COMBOBOX; + if(!strcmpiW(szLISTBOX, cc)) + return CT_LISTBOX; + if(!strcmpiW(szEDIT, cc)) + return CT_EDIT; + if(!strcmpiW(szSTATIC, cc)) + return CT_STATIC; + if(!strcmpiW(szSCROLLBAR, cc)) + return CT_SCROLLBAR; + + return -1; +} + +static int get_class_idA(char *cc) +{ + if(!strcasecmp("BUTTON", cc)) + return CT_BUTTON; + if(!strcasecmp("COMBOBOX", cc)) + return CT_COMBOBOX; + if(!strcasecmp("LISTBOX", cc)) + return CT_LISTBOX; + if(!strcasecmp("EDIT", cc)) + return CT_EDIT; + if(!strcasecmp("STATIC", cc)) + return CT_STATIC; + if(!strcasecmp("SCROLLBAR", cc)) + return CT_SCROLLBAR; + + return -1; +} + + static name_id_t *convert_ctlclass(name_id_t *cls) { - char *cc = NULL; int iclass; if(cls->type == name_ord) return cls; assert(cls->type == name_str); - if(cls->type == str_unicode) - { - yyerror("Don't yet support unicode class comparison"); - } - else - cc = cls->name.s_name->str.cstr; - - if(!strcasecmp("BUTTON", cc)) - iclass = CT_BUTTON; - else if(!strcasecmp("COMBOBOX", cc)) - iclass = CT_COMBOBOX; - else if(!strcasecmp("LISTBOX", cc)) - iclass = CT_LISTBOX; - else if(!strcasecmp("EDIT", cc)) - iclass = CT_EDIT; - else if(!strcasecmp("STATIC", cc)) - iclass = CT_STATIC; - else if(!strcasecmp("SCROLLBAR", cc)) - iclass = CT_SCROLLBAR; - else + if(cls->name.s_name->type == str_unicode) + iclass = get_class_idW(cls->name.s_name->str.wstr); + else + iclass = get_class_idA(cls->name.s_name->str.cstr); + + if (iclass == -1) return cls; /* No default, return user controlclass */ free(cls->name.s_name->str.cstr); -- 1.4.4.2