mirror of
https://github.com/ONLYOFFICE/desktop-apps.git
synced 2026-04-07 14:09:22 +08:00
Merge pull request #807 from ONLYOFFICE/feature/context_menu_37924_r1
Add feature 37924: add .docxf to context menu
This commit is contained in:
@ -1807,61 +1807,46 @@ end;
|
||||
|
||||
procedure AddContextMenuNewItems;
|
||||
var
|
||||
langs: TArrayOfValues;
|
||||
args, regpath: String;
|
||||
progpath, oldValue: String;
|
||||
argsArray: TArrayOfString;
|
||||
dir, regpath, progpath, oldValue: String;
|
||||
langs, args, values: TArrayOfString;
|
||||
version: TWindowsVersion;
|
||||
i: Integer;
|
||||
begin
|
||||
AddKeyValue(langs, 'cs', 'cs-CZ:new.docx:new.pptx:new.xlsx');
|
||||
AddKeyValue(langs, 'de', 'de-DE:new.docx:new.pptx:new.xlsx');
|
||||
AddKeyValue(langs, 'es', 'es-ES:new.docx:new.pptx:new.xlsx');
|
||||
AddKeyValue(langs, 'fr', 'fr-FR:new.docx:new.pptx:new.xlsx');
|
||||
AddKeyValue(langs, 'it_IT', 'it-IT:new.docx:new.pptx:new.xlsx');
|
||||
AddKeyValue(langs, 'pt_BR', 'pt-BR:new.docx:new.pptx:new.xlsx');
|
||||
AddKeyValue(langs, 'ru', 'ru-RU:new.docx:new.pptx:new.xlsx');
|
||||
langs := ['az-Latn-AZ', 'bg-BG', 'cs-CZ', 'de-DE', 'el-GR', 'en-GB', 'en-US', 'es-ES',
|
||||
'eu-ES', 'fr-FR', 'gl-ES', 'hy-AM', 'it-IT', 'ja-JP', 'ko-KR', 'lv-LV',
|
||||
'ms-MY', 'nl-NL', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sk-SK', 'sv-SE',
|
||||
'tr-TR', 'uk-UA', 'vi-VN', 'zh-CN', 'zh-TW'];
|
||||
|
||||
if not TryGetValue(langs, ExpandConstant('{language}'), args) then
|
||||
args := '.:mm_new.docx:mm_new.pptx:mm_new.xlsx';
|
||||
|
||||
Explode(argsArray, args, ':');
|
||||
|
||||
if argsArray[0] = '.' then
|
||||
progpath := ExpandConstant('{app}\converter\empty')
|
||||
else progpath := ExpandConstant('{app}\converter\empty\' + argsArray[0]);
|
||||
|
||||
regpath := ExpandConstant('Software\Classes\.docx\{#ASCC_REG_PREFIX}.Document.12\ShellNew');
|
||||
if not RegKeyExists(HKEY_LOCAL_MACHINE, regpath) then
|
||||
begin
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'IconPath', ExpandConstant('{app}\{#iconsExe},7'));
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'FileName', progpath + '\' + argsArray[1]);
|
||||
end;
|
||||
|
||||
regpath := ExpandConstant('Software\Classes\.pptx\{#ASCC_REG_PREFIX}.Show.12\ShellNew');
|
||||
if not RegKeyExists(HKEY_LOCAL_MACHINE, regpath) then
|
||||
begin
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'IconPath', ExpandConstant('{app}\{#iconsExe},9'));
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'FileName', progpath + '\' + argsArray[2]);
|
||||
end;
|
||||
|
||||
regpath := ExpandConstant('Software\Classes\.xlsx\{#ASCC_REG_PREFIX}.Sheet.12\ShellNew');
|
||||
if not RegKeyExists(HKEY_LOCAL_MACHINE, regpath) then
|
||||
begin
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'IconPath', ExpandConstant('{app}\{#iconsExe},10'));
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'FileName', progpath + '\' + argsArray[3]);
|
||||
dir := 'en-US';
|
||||
for i := 0 to GetArrayLength(langs) - 1 do begin
|
||||
if langs[i] = ExpandConstant('{language}') then begin
|
||||
dir := langs[i];
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
|
||||
args := ['new.docx:.docx:.Document.12:7',
|
||||
'new.pptx:.pptx:.Show.12:9',
|
||||
'new.xlsx:.xlsx:.Sheet.12:10'
|
||||
#ifdef _ONLYOFFICE
|
||||
,'new.docxf:.docxf:.Docxf:13'
|
||||
#endif
|
||||
];
|
||||
|
||||
GetWindowsVersionEx(version);
|
||||
if version.Major = 10 then begin
|
||||
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docx', '', oldValue);
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docx', '{#ASCC_REG_PREFIX}', oldValue);
|
||||
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.xlsx', '', oldValue);
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.xlsx', '{#ASCC_REG_PREFIX}', oldValue);
|
||||
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '', oldValue);
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '{#ASCC_REG_PREFIX}', oldValue);
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docx', '', '{#ASCC_REG_PREFIX}.Document.12')
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.xlsx', '', '{#ASCC_REG_PREFIX}.Sheet.12')
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '', '{#ASCC_REG_PREFIX}.Show.12')
|
||||
progpath := ExpandConstant('{app}\converter\empty\' + dir);
|
||||
for i := 0 to GetArrayLength(args) - 1 do begin
|
||||
Explode(values, args[i],':');
|
||||
regpath := ExpandConstant('Software\Classes\' + values[1] + '\{#ASCC_REG_PREFIX}' + values[2] + '\ShellNew');
|
||||
if not RegKeyExists(HKEY_LOCAL_MACHINE, regpath) then begin
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'IconPath', ExpandConstant('{app}\{#iconsExe},' + values[3]));
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'FileName', progpath + '\' + values[0]);
|
||||
end;
|
||||
if version.Major = 10 then begin
|
||||
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\' + values[1], '', oldValue);
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\' + values[1], '{#ASCC_REG_PREFIX}', oldValue);
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\' + values[1], '', '{#ASCC_REG_PREFIX}' + values[2]);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -2012,6 +1997,9 @@ begin
|
||||
RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE, ExpandConstant('Software\Classes\.docx\{#ASCC_REG_PREFIX}.Document.12'));
|
||||
RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE, ExpandConstant('Software\Classes\.pptx\{#ASCC_REG_PREFIX}.Show.12'));
|
||||
RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE, ExpandConstant('Software\Classes\.xlsx\{#ASCC_REG_PREFIX}.Sheet.12'));
|
||||
#ifdef _ONLYOFFICE
|
||||
RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE, ExpandConstant('Software\Classes\.docxf\{#ASCC_REG_PREFIX}.Docxf'));
|
||||
#endif
|
||||
|
||||
GetWindowsVersionEx(version);
|
||||
if version.Major = 10 then begin
|
||||
@ -2021,6 +2009,11 @@ begin
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.xlsx', '', oldValue);
|
||||
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '{#ASCC_REG_PREFIX}', oldValue) then
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '', oldValue);
|
||||
#ifdef _ONLYOFFICE
|
||||
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docxf', '{#ASCC_REG_PREFIX}', oldValue) then
|
||||
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docxf', '', oldValue);
|
||||
RegDeleteValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docxf', '{#ASCC_REG_PREFIX}');
|
||||
#endif
|
||||
RegDeleteValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docx', '{#ASCC_REG_PREFIX}');
|
||||
RegDeleteValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.xlsx', '{#ASCC_REG_PREFIX}');
|
||||
RegDeleteValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '{#ASCC_REG_PREFIX}');
|
||||
|
||||
Reference in New Issue
Block a user