From 293c8b5a7c22ec1136b3b8bb4b92278f4df9c3ba Mon Sep 17 00:00:00 2001 From: Ged Murphy Date: Sat, 11 Apr 2009 16:51:57 +0000 Subject: [PATCH] Move the downloader tool into trunk svn path=/trunk/; revision=40461 --- reactos/base/applications/applications.rbuild | 3 + .../base/applications/downloader/download.c | 402 ++++++++ .../applications/downloader/downloader.rbuild | 26 + .../applications/downloader/downloader.rc | 10 + .../applications/downloader/downloader.xml | 297 ++++++ .../applications/downloader/lang/bg-BG.rc | 60 ++ .../applications/downloader/lang/de-DE.rc | 61 ++ .../applications/downloader/lang/el-GR.rc | 61 ++ .../applications/downloader/lang/en-US.rc | 61 ++ .../applications/downloader/lang/es-ES.rc | 66 ++ .../applications/downloader/lang/fr-FR.rc | 61 ++ .../applications/downloader/lang/id-ID.rc | 61 ++ .../applications/downloader/lang/it-IT.rc | 61 ++ .../applications/downloader/lang/lt-LT.rc | 63 ++ .../applications/downloader/lang/no-NO.rc | 61 ++ .../applications/downloader/lang/pl-PL.rc | 68 ++ .../applications/downloader/lang/ru-RU.rc | 63 ++ .../applications/downloader/lang/sk-SK.rc | 67 ++ .../applications/downloader/lang/uk-UA.rc | 69 ++ reactos/base/applications/downloader/main.c | 922 ++++++++++++++++++ .../applications/downloader/patches/d2fix.c | 36 + .../base/applications/downloader/resources.h | 71 ++ .../applications/downloader/resources/0.bmp | Bin 0 -> 822 bytes .../applications/downloader/resources/1.bmp | Bin 0 -> 822 bytes .../applications/downloader/resources/10.bmp | Bin 0 -> 824 bytes .../applications/downloader/resources/11.bmp | Bin 0 -> 1080 bytes .../applications/downloader/resources/12.bmp | Bin 0 -> 1080 bytes .../applications/downloader/resources/13.bmp | Bin 0 -> 1080 bytes .../applications/downloader/resources/2.bmp | Bin 0 -> 822 bytes .../applications/downloader/resources/3.bmp | Bin 0 -> 822 bytes .../applications/downloader/resources/4.bmp | Bin 0 -> 822 bytes .../applications/downloader/resources/5.bmp | Bin 0 -> 822 bytes .../applications/downloader/resources/6.bmp | Bin 0 -> 822 bytes .../applications/downloader/resources/7.bmp | Bin 0 -> 822 bytes .../applications/downloader/resources/8.bmp | Bin 0 -> 822 bytes .../applications/downloader/resources/9.bmp | Bin 0 -> 824 bytes .../downloader/resources/download.bmp | Bin 0 -> 13914 bytes .../downloader/resources/help.ico | Bin 0 -> 9774 bytes .../downloader/resources/logo.bmp | Bin 0 -> 17414 bytes .../downloader/resources/main.ico | Bin 0 -> 43302 bytes .../downloader/resources/preferences.ico | Bin 0 -> 9774 bytes .../downloader/resources/underline.bmp | Bin 0 -> 170 bytes .../downloader/resources/uninstall.bmp | Bin 0 -> 13914 bytes .../downloader/resources/update.ico | Bin 0 -> 9774 bytes reactos/base/applications/downloader/rsrc.rc | 40 + .../base/applications/downloader/structures.h | 26 + reactos/base/applications/downloader/xml.c | 236 +++++ reactos/boot/bootdata/packages/reactos.dff | 2 + 48 files changed, 2954 insertions(+) create mode 100644 reactos/base/applications/downloader/download.c create mode 100644 reactos/base/applications/downloader/downloader.rbuild create mode 100644 reactos/base/applications/downloader/downloader.rc create mode 100644 reactos/base/applications/downloader/downloader.xml create mode 100644 reactos/base/applications/downloader/lang/bg-BG.rc create mode 100644 reactos/base/applications/downloader/lang/de-DE.rc create mode 100644 reactos/base/applications/downloader/lang/el-GR.rc create mode 100644 reactos/base/applications/downloader/lang/en-US.rc create mode 100644 reactos/base/applications/downloader/lang/es-ES.rc create mode 100644 reactos/base/applications/downloader/lang/fr-FR.rc create mode 100644 reactos/base/applications/downloader/lang/id-ID.rc create mode 100644 reactos/base/applications/downloader/lang/it-IT.rc create mode 100644 reactos/base/applications/downloader/lang/lt-LT.rc create mode 100644 reactos/base/applications/downloader/lang/no-NO.rc create mode 100644 reactos/base/applications/downloader/lang/pl-PL.rc create mode 100644 reactos/base/applications/downloader/lang/ru-RU.rc create mode 100644 reactos/base/applications/downloader/lang/sk-SK.rc create mode 100644 reactos/base/applications/downloader/lang/uk-UA.rc create mode 100644 reactos/base/applications/downloader/main.c create mode 100644 reactos/base/applications/downloader/patches/d2fix.c create mode 100644 reactos/base/applications/downloader/resources.h create mode 100644 reactos/base/applications/downloader/resources/0.bmp create mode 100644 reactos/base/applications/downloader/resources/1.bmp create mode 100644 reactos/base/applications/downloader/resources/10.bmp create mode 100644 reactos/base/applications/downloader/resources/11.bmp create mode 100644 reactos/base/applications/downloader/resources/12.bmp create mode 100644 reactos/base/applications/downloader/resources/13.bmp create mode 100644 reactos/base/applications/downloader/resources/2.bmp create mode 100644 reactos/base/applications/downloader/resources/3.bmp create mode 100644 reactos/base/applications/downloader/resources/4.bmp create mode 100644 reactos/base/applications/downloader/resources/5.bmp create mode 100644 reactos/base/applications/downloader/resources/6.bmp create mode 100644 reactos/base/applications/downloader/resources/7.bmp create mode 100644 reactos/base/applications/downloader/resources/8.bmp create mode 100644 reactos/base/applications/downloader/resources/9.bmp create mode 100644 reactos/base/applications/downloader/resources/download.bmp create mode 100644 reactos/base/applications/downloader/resources/help.ico create mode 100644 reactos/base/applications/downloader/resources/logo.bmp create mode 100644 reactos/base/applications/downloader/resources/main.ico create mode 100644 reactos/base/applications/downloader/resources/preferences.ico create mode 100644 reactos/base/applications/downloader/resources/underline.bmp create mode 100644 reactos/base/applications/downloader/resources/uninstall.bmp create mode 100644 reactos/base/applications/downloader/resources/update.ico create mode 100644 reactos/base/applications/downloader/rsrc.rc create mode 100644 reactos/base/applications/downloader/structures.h create mode 100644 reactos/base/applications/downloader/xml.c diff --git a/reactos/base/applications/applications.rbuild b/reactos/base/applications/applications.rbuild index 30ae12b2501..18b0a759ad4 100644 --- a/reactos/base/applications/applications.rbuild +++ b/reactos/base/applications/applications.rbuild @@ -16,6 +16,9 @@ + + + diff --git a/reactos/base/applications/downloader/download.c b/reactos/base/applications/downloader/download.c new file mode 100644 index 00000000000..1dc77c65b97 --- /dev/null +++ b/reactos/base/applications/downloader/download.c @@ -0,0 +1,402 @@ +/* PROJECT: ReactOS Downloader (was GetFirefox) + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/downloader/download.c + * PURPOSE: Displaying a download dialog + * COPYRIGHT: Copyright 2001 John R. Sheets (for CodeWeavers) + * Copyright 2004 Mike McCormack (for CodeWeavers) + * Copyright 2005 Ge van Geldorp (gvg@reactos.org) + * Copyright 2007 Dmitry Chapyshev (lentind@yandex.ru) + */ +/* + * Based on Wine dlls/shdocvw/shdocvw_main.c + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#define COBJMACROS +#define WIN32_NO_STATUS +#include +#include +#include +#include +#include + +#include "resources.h" +#include "structures.h" + +#define NDEBUG +#include + +extern struct Application* SelectedApplication; +extern WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT]; + +typedef struct _IBindStatusCallbackImpl +{ + const IBindStatusCallbackVtbl *vtbl; + LONG ref; + HWND hDialog; + BOOL *pbCancelled; +} IBindStatusCallbackImpl; + +static HRESULT WINAPI +dlQueryInterface(IBindStatusCallback* This, REFIID riid, void** ppvObject) +{ + if (NULL == ppvObject) + { + return E_POINTER; + } + + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IBindStatusCallback)) + { + IBindStatusCallback_AddRef( This ); + *ppvObject = This; + return S_OK; + } + + return E_NOINTERFACE; +} + +static ULONG WINAPI +dlAddRef(IBindStatusCallback* iface) +{ + IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface; + + return InterlockedIncrement(&This->ref); +} + +static ULONG WINAPI +dlRelease(IBindStatusCallback* iface) +{ + IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface; + DWORD ref = InterlockedDecrement(&This->ref); + + if( !ref ) + { + DestroyWindow( This->hDialog ); + HeapFree(GetProcessHeap(), 0, This); + } + + return ref; +} + +static HRESULT WINAPI +dlOnStartBinding(IBindStatusCallback* iface, DWORD dwReserved, IBinding* pib) +{ + DPRINT1("OnStartBinding not implemented\n"); + + return S_OK; +} + +static HRESULT WINAPI +dlGetPriority(IBindStatusCallback* iface, LONG* pnPriority) +{ + DPRINT1("GetPriority not implemented\n"); + + return S_OK; +} + +static HRESULT WINAPI +dlOnLowResource( IBindStatusCallback* iface, DWORD reserved) +{ + DPRINT1("OnLowResource not implemented\n"); + + return S_OK; +} + +static HRESULT WINAPI +dlOnProgress(IBindStatusCallback* iface, ULONG ulProgress, + ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText) +{ + IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface; + HWND Item; + LONG r; + WCHAR OldText[100]; + + Item = GetDlgItem(This->hDialog, IDC_PROGRESS); + if (NULL != Item && 0 != ulProgressMax) + { + SendMessageW(Item, PBM_SETPOS, ((ULONGLONG)ulProgress * 100) / ulProgressMax, 0); + } + + Item = GetDlgItem(This->hDialog, IDC_STATUS); + if (NULL != Item && NULL != szStatusText) + { + SendMessageW(Item, WM_GETTEXT, sizeof(OldText) / sizeof(OldText[0]), + (LPARAM) OldText); + if (sizeof(OldText) / sizeof(OldText[0]) - 1 <= wcslen(OldText) || 0 != wcscmp(OldText, szStatusText)) + { + SendMessageW(Item, WM_SETTEXT, 0, (LPARAM) szStatusText); + } + } + + SetLastError(0); + r = GetWindowLongPtrW(This->hDialog, GWLP_USERDATA); + if (0 != r || 0 != GetLastError()) + { + *This->pbCancelled = TRUE; + DPRINT("Cancelled\n"); + return E_ABORT; + } + + return S_OK; +} + +static HRESULT WINAPI +dlOnStopBinding(IBindStatusCallback* iface, HRESULT hresult, LPCWSTR szError) +{ + DPRINT1("OnStopBinding not implemented\n"); + + return S_OK; +} + +static HRESULT WINAPI +dlGetBindInfo(IBindStatusCallback* iface, DWORD* grfBINDF, BINDINFO* pbindinfo) +{ + DPRINT1("GetBindInfo not implemented\n"); + + return S_OK; +} + +static HRESULT WINAPI +dlOnDataAvailable(IBindStatusCallback* iface, DWORD grfBSCF, + DWORD dwSize, FORMATETC* pformatetc, STGMEDIUM* pstgmed) +{ + DPRINT1("OnDataAvailable implemented\n"); + + return S_OK; +} + +static HRESULT WINAPI +dlOnObjectAvailable(IBindStatusCallback* iface, REFIID riid, IUnknown* punk) +{ + DPRINT1("OnObjectAvailable implemented\n"); + + return S_OK; +} + +static const IBindStatusCallbackVtbl dlVtbl = +{ + dlQueryInterface, + dlAddRef, + dlRelease, + dlOnStartBinding, + dlGetPriority, + dlOnLowResource, + dlOnProgress, + dlOnStopBinding, + dlGetBindInfo, + dlOnDataAvailable, + dlOnObjectAvailable +}; + +static IBindStatusCallback* +CreateDl(HWND Dlg, BOOL *pbCancelled) +{ + IBindStatusCallbackImpl *This; + + This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IBindStatusCallbackImpl)); + if (!This) + return NULL; + + This->vtbl = &dlVtbl; + This->ref = 1; + This->hDialog = Dlg; + This->pbCancelled = pbCancelled; + + return (IBindStatusCallback*) This; +} + +static DWORD WINAPI +ThreadFunc(LPVOID Context) +{ + //static const WCHAR szUrl[] = DownloadUrl; + IBindStatusCallback *dl; + WCHAR path[MAX_PATH]; + LPWSTR p; + STARTUPINFOW si; + PROCESS_INFORMATION pi; + HWND Dlg = (HWND) Context; + DWORD r; + BOOL bCancelled = FALSE; + BOOL bTempfile = FALSE; + HKEY hKey; + DWORD dwSize = MAX_PATH; + + /* built the path for the download */ + p = wcsrchr(SelectedApplication->Location, L'/'); + if (NULL == p) + { + goto end; + } + + /* Create default download path */ + if (GetWindowsDirectory(path, sizeof(path) / sizeof(WCHAR))) + { + WCHAR DPath[256]; + int i; + for (i = 0; i < 4; i++) + { + if (i == 3) + { + DPath[i] = '\0'; + break; + } + DPath[i] = path[i]; + } + LoadString(GetModuleHandle(NULL), IDS_DOWNLOAD_FOLDER, path, sizeof(path) / sizeof(WCHAR)); + wcscat((LPWSTR)DPath, path); + wcscpy(path, DPath); + } + + if (RegOpenKey(HKEY_LOCAL_MACHINE, + TEXT("Software\\ReactOS\\Downloader"), + &hKey) == ERROR_SUCCESS) + { + if ((RegQueryValueEx(hKey, + L"DownloadFolder", + NULL, + NULL, + (LPBYTE)&path, + &dwSize) != ERROR_SUCCESS) && (path[0] == 0)) + { + goto end; + } + } + + if (GetFileAttributes(path) == 0xFFFFFFFF) + if (!CreateDirectory((LPCTSTR)path,NULL)) + { + goto end; + } + wcscat(path, L"\\"); + wcscat(path, p + 1); + + /* download it */ + bTempfile = TRUE; + dl = CreateDl(Context, &bCancelled); + r = URLDownloadToFileW(NULL, SelectedApplication->Location, path, 0, dl); + if (NULL != dl) + { + IBindStatusCallback_Release(dl); + } + if (S_OK != r) + { + MessageBoxW(0,Strings[IDS_DOWNLOAD_ERROR],0,0); + goto end; + } + else if (bCancelled) + { + goto end; + } + ShowWindow(Dlg, SW_HIDE); + + /* run it */ + memset(&si, 0, sizeof(si)); + si.cb = sizeof(si); + r = CreateProcessW(path, NULL, NULL, NULL, 0, 0, NULL, NULL, &si, &pi); + if (0 == r) + { + goto end; + } + CloseHandle(pi.hThread); + WaitForSingleObject(pi.hProcess, INFINITE); + CloseHandle(pi.hProcess); + + end: + if (bTempfile) + { + if (bCancelled) + DeleteFileW(path); + else + { + DWORD dwSize = sizeof(DWORD); + DWORD dwValue, dwType = REG_DWORD; + if (RegQueryValueEx(hKey, + L"DeleteInstaller", + NULL, + &dwType, + (LPBYTE)&dwValue, + &dwSize) == ERROR_SUCCESS) + if (dwValue == 0x1) + DeleteFileW(path); + RegCloseKey(hKey); + } + } + EndDialog(Dlg, 0); + return 0; +} + +INT_PTR CALLBACK +DownloadProc(HWND Dlg, UINT Msg, WPARAM wParam, LPARAM lParam) +{ + HANDLE Thread; + DWORD ThreadId; + HWND Item; + + switch (Msg) + { + case WM_INITDIALOG:/* + Icon = LoadIconW((HINSTANCE) GetWindowLongPtr(Dlg, GWLP_HINSTANCE), + MAKEINTRESOURCEW(IDI_ICON_MAIN)); + if (NULL != Icon) + { + SendMessageW(Dlg, WM_SETICON, ICON_BIG, (LPARAM) Icon); + SendMessageW(Dlg, WM_SETICON, ICON_SMALL, (LPARAM) Icon); + }*/ + SetWindowLongPtrW(Dlg, GWLP_USERDATA, 0); + Item = GetDlgItem(Dlg, IDC_PROGRESS); + if (NULL != Item) + { + SendMessageW(Item, PBM_SETRANGE, 0, MAKELPARAM(0,100)); + SendMessageW(Item, PBM_SETPOS, 0, 0); + }/* + Item = GetDlgItem(Dlg, IDC_REMOVE); + if (NULL != Item) + { + if (GetShortcutName(ShortcutName) && + INVALID_FILE_ATTRIBUTES != GetFileAttributesW(ShortcutName)) + { + SendMessageW(Item, BM_SETCHECK, BST_CHECKED, 0); + } + else + { + SendMessageW(Item, BM_SETCHECK, BST_UNCHECKED, 0); + ShowWindow(Item, SW_HIDE); + } + }*/ + Thread = CreateThread(NULL, 0, ThreadFunc, Dlg, 0, &ThreadId); + if (NULL == Thread) + { + return FALSE; + } + CloseHandle(Thread); + return TRUE; + + case WM_COMMAND: + if (wParam == IDCANCEL) + { + SetWindowLongPtrW(Dlg, GWLP_USERDATA, 1); + PostMessage(Dlg, WM_CLOSE, 0, 0); + } + return FALSE; + + case WM_CLOSE: + EndDialog(Dlg, 0); + return TRUE; + + default: + return FALSE; + } +} diff --git a/reactos/base/applications/downloader/downloader.rbuild b/reactos/base/applications/downloader/downloader.rbuild new file mode 100644 index 00000000000..6aca8fc5acc --- /dev/null +++ b/reactos/base/applications/downloader/downloader.rbuild @@ -0,0 +1,26 @@ + + + downloader.xml + + . + . + + kernel32 + advapi32 + ntdll + user32 + gdi32 + shell32 + comctl32 + msimg32 + shlwapi + urlmon + uuid + expat + + main.c + xml.c + download.c + downloader.rc + + diff --git a/reactos/base/applications/downloader/downloader.rc b/reactos/base/applications/downloader/downloader.rc new file mode 100644 index 00000000000..e4cdb19724a --- /dev/null +++ b/reactos/base/applications/downloader/downloader.rc @@ -0,0 +1,10 @@ +#include +#include "resources.h" + +#define REACTOS_STR_FILE_DESCRIPTION "Download !\0" +#define REACTOS_STR_INTERNAL_NAME "downloader\0" +#define REACTOS_STR_ORIGINAL_FILENAME "downloader.exe\0" + +#include + +#include "rsrc.rc" diff --git a/reactos/base/applications/downloader/downloader.xml b/reactos/base/applications/downloader/downloader.xml new file mode 100644 index 00000000000..fb29bd30d40 --- /dev/null +++ b/reactos/base/applications/downloader/downloader.xml @@ -0,0 +1,297 @@ + + + + Mozilla Firefox (1.5) + MPL/GPL/LGPL + 1.5.0.12 + The most popular and one of the best free Web Browsers out there. + http://svn.reactos.org/packages/Firefox%20Setup%201.5.0.12.exe + + + Mozilla Firefox (2.0.0.20) + MPL/GPL/LGPL + 2.0.0.20 + The most popular and one of the best free Web Browsers out there. + http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.20/win32/en-US/Firefox%20Setup%202.0.0.20.exe + + + Opera + Freeware + 9.63 + The popular Opera Browser with many advanced features and including a Mail and BitTorrent client. + http://ftp.opera.com/pub/opera/win/963/en/Opera_963_classic_Setup.exe + + + Mozilla Thunderbird (2.0.0.19) + MPL/GPL/LGPL + 2.0.0.19 + The most popular and one of the best free Mail Clients out there. + http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.19/win32/en-US/Thunderbird%20Setup%202.0.0.19.exe + + + SeaMonkey (1.1.14) + 1.1.14 + Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, and Composer bundle you will ever need. + http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/1.1.14/seamonkey-1.1.14.en-US.win32.installer.exe + + + Mozilla ActiveX Control v1.7.12 (ReactOS special) + 1.7.12 + Essential Component to get ReactOS Explorer's and other applications' Internet Browsing feature running. + http://ovh.dl.sourceforge.net/sourceforge/reactos/MozillaControl1712-ReactOS.exe + + + The Off By One Web Browser + The Off By One Browser is a very small and fast web browser with full HTML 3.2 support. + http://offbyone.com/offbyone/images/OffByOneSetup.exe + + + mIRC + Shareware + 6.35 + The most popular client for the Internet Relay Chat (IRC) + http://mirc.bigchief.dk/mirc635.exe + + + This tool allows you to access your Windows shared folders/printers with ReactOS. + http://svn.reactos.org/packages/samba-tng.exe + + + Miranda IM + 0.7.4 + Open source multiprotocol instant messaging application - May not work completely. + http://ovh.dl.sourceforge.net/sourceforge/miranda/miranda-im-v0.7.4-unicode.exe + + + PuTTY version 0.60 + MIT + 0.60 + A free SSH, Telnet, rlogin, and raw TCP client. + http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe + + + + + "AbiWord 2.6.4 (remove only)" + 2.6.4 + Word processor. + http://www.abiword.org/downloads/abiword/2.6.4/Windows/abiword-setup-2.6.4.exe + + + OpenOffice.org 2.4.2 + 2.4.2 + THE Open Source Office Suite. + http://ftp.plusline.de/OpenOffice/stable/2.4.2/OOo_2.4.2_Win32Intel_install_wJRE_en-US.exe + + + OpenOffice.org 3.0.1 + 3.0.1 + THE Open Source Office Suite. + http://ftp.tu-chemnitz.de/pub/openoffice/stable/3.0.1/OOo_3.0.1_Win32Intel_install_en-US.exe + + + + + IrfanView (remove only) + 4.23 + Viewer for all kinds of graphics/audio files/video files. + http://irfanview.tuwien.ac.at/iview423_setup.exe + + + 4.22 + Additional Plugins for supporting more file types. + http://irfanview.tuwien.ac.at/plugins/irfanview_plugins_422_setup.exe + + + Tux Paint 0.9.19 + 0.9.19 + An Open Source bitmap graphics editor geared towards young children. + http://ovh.dl.sourceforge.net/sourceforge/tuxpaint/tuxpaint-0.9.19-win32-installer.exe + + + GlidewrapZbag + 0.84c + glidewrapper needed to run Diablo 2 on ReactOS. + http://www.zeckensack.de/glide/archive/GlideWrapper084c.exe + + + + + msxml3 + 3.0 + MSXML3 is needed for some MSI Installers. + http://download.microsoft.com/download/8/8/8/888f34b7-4f54-4f06-8dac-fa29b19f33dd/msxml3.msi + + + mfc40 + 4.0 + MFC 4 is needed by some applications + http://download.microsoft.com/download/ole/ole2v/3.5/w351/en-us/ole2v.exe + + + + vb5run + 5.0 + Visual Basic 5 Runtime + http://download.microsoft.com/download/vb50pro/utility/1/win98/en-us/msvbvm50.exe + + + + vb6run + 6.0 + Visual Basic 6 Runtime + http://download.microsoft.com/download/vb60pro/install/6/win98me/en-us/vbrun60.exe + + + + vc6run + 6.0 + Visual Studio 6 Runtime + http://download.microsoft.com/download/vc60pro/update/1/w9xnt4/en-us/vc6redistsetup_enu.exe + + + + vc2005run + 7.0 + Visual Studio 2005 Runtime + http://download.microsoft.com/download/d/3/4/d342efa6-3266-4157-a2ec-5174867be706/vcredist_x86.exe + + + + vc2005sp1run + 7.1 + Visual Studio 2005 Runtime SP1 + http://download.microsoft.com/download/e/1/c/e1c773de-73ba-494a-a5ba-f24906ecf088/vcredist_x86.exe + + + + vc2008run + 8.0 + Visual Studio 2008 Runtime + http://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140/vcredist_x86.exe + + + + + + + ReactOS Build Environment 1.2 + 1.2 + Allows you to build the ReactOS Source. For more instructions see ReactOS wiki. + http://ovh.dl.sourceforge.net/sourceforge/reactos/RosBE-1.2.exe + + + MinGW 5.1.3 + 5.1.3 + A Port of the GNU toolchain with GCC, GDB, GNU make, etc. + http://ovh.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.3.exe + + + FreeBASIC 0.18.4b + 0.18.4b + Open Source BASIC Compiler. The BASIC syntax is compatible to QBASIC. + http://ovh.dl.sourceforge.net/sourceforge/fbc/FreeBASIC-v0.18.4b-win32.exe + + + + + ScummVM 0.11.1 + 0.11.1 + SamNMax, Day of Tentacle, etc on ReactOS + http://ovh.dl.sourceforge.net/sourceforge/scummvm/scummvm-0.11.1-win32.exe + + + Diablo II Shareware + 1.4 + Diablo 2 Shareware. zeckensack's glide wrapper is req. to run it. + http://ftp.freenet.de./pub/filepilot/windows/spiele/diabloiidemo.exe + GlidewrapZbag + http://svn.reactos.org/downloads/d2fix.exe + + + Nice Clone of Chip's Challenge originally made for the Atari Lynx. Includes free CCLP2 Graphics Pack, so you dont need the copyrighted Original. + http://www.muppetlabs.com/~breadbox/pub/software/tworld/tworld-1.3.0-win32-CCLP2.exe + + + OpenTTD 0.6.0 + 0.6.0 + Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon. + http://ovh.dl.sourceforge.net/sourceforge/openttd/openttd-0.6.0-win32.exe + + + LBreakout2 2.4.1 + 2.4.1 + Breakout Clone using SDL libs. + http://ovh.dl.sourceforge.net/sourceforge/lgames/lbreakout2-2.4.1-win32.exe + + + LGeneral 1.1 + 1.1 + Panzer General Clone using SDL libs. + http://ovh.dl.sourceforge.net/sourceforge/lgames/lgeneral-1.1-win32.exe + + + LMarbles 1.0.6 + 1.0.6 + Atomix Clone using SDL libs. + http://ovh.dl.sourceforge.net/sourceforge/lgames/lmarbles-1.0.6-win32.exe + + + WinBoard 4.2.7b + 4.2.7b + GPL 3 + WinBoard is a graphical chessboard for the Windows/ReactOS that can serve as a user interface for GNU Chess, Crafty, and other chess engines, for the Internet Chess Servers, and for electronic mail correspondence chess. + http://ftp.gnu.org/gnu/winboard/winboard-4_2_7b.exe + + + + + + + + + + + 7-Zip 4.57 + 4.57 + Utility to create and open 7zip, zip, tar, rar and other archive files. + http://ovh.dl.sourceforge.net/sourceforge/sevenzip/7z457.exe + + + µTorrent + 1.8 + Small and fast BitTorrent Client + http://download.utorrent.com/1.8.2/utorrent-1.8.2.upx.exe + + + Audiograbber 1.83 SE + 1.83 SE + A very good CD Ripper/Audio File Converter. + http://www.audiograbber.de/files/4898276276/agsetup183se.exe + + + + + 5.10.00.3610 + Unzip in the "ReactOS" folder then restart ReactOS twice. + http://svn.reactos.org/packages/ac97_vbox.exe + + + + + 1.2.13 + Needed for many Open Source Games to run. You need 7-Zip or a similar Utility to extract it. + http://www.libsdl.org/release/SDL-1.2.13-win32.zip + + + 1.2.8 + Needed for some Open Source Games to run. You need 7-Zip or a similar Utility to extract it. + http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.8-win32.zip + + + 0.72 + DOSBox is a DOS emulator. + http://ovh.dl.sourceforge.net/sourceforge/dosbox/DOSBox0.72-win32-installer.exe + + + diff --git a/reactos/base/applications/downloader/lang/bg-BG.rc b/reactos/base/applications/downloader/lang/bg-BG.rc new file mode 100644 index 00000000000..ee1a13978e5 --- /dev/null +++ b/reactos/base/applications/downloader/lang/bg-BG.rc @@ -0,0 +1,60 @@ +LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT + +IDD_DOWNLOAD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Ñâàëÿíå..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Îòêàç", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Ïðåäïî÷èòàíèÿ" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Ïàïêà çà ñâàëÿíå:", -1, 6, 10, 144, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Èçáîð...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Èçòðèâàíå íà èíñòàëàöèîííèòå ôàéëîâå ñëåä ñëàãàíåòî", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Ñúðâúð ñ îáíîâÿâàíèÿ:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&Äîáðå", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&Îòêàç", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Ñâàëè! - Ñâàëÿ÷úò íà ÐåàêòÎÑ" + IDS_WELCOME_TITLE "Ñâàëÿ÷úò íà ÐåàêòÎÑ âè ïðèâåòñòâà" + IDS_WELCOME "Èçáåðåòå ðàçäåë îòëÿâî. Òîâà å èçäàíèå 1.1." + IDS_NO_APP_TITLE "Íå å èçáðàíî ïðèëîæåíèå" + IDS_NO_APP "Èçáåðåòå ïðèëîæåíèå, ïðåäè äà íàòèñíåòî êëàâèøà „Ñâàëÿíå”. Àêî èìàòå íóæäà îò ïîìîù, íàòèñíåòå âúïðîñèòåëíàòà â ãîðíèÿ äåñåí úãúë." + IDS_UPDATE_TITLE "Îáíîâÿâàíå" + IDS_UPDATE "Òàçè âúçìîæíîñò âñå îùå íå å ãîòîâà." + IDS_HELP_TITLE "Ïîìîù" + IDS_HELP "Èçáåðåòå ðàçäåë îòëÿâî, ñëåä òîâà èçáåðåòå ïðèëîæåíèå è íàòèñíåòå „Ñâàëÿíå”. Çà äà îñúâðåìåíèòå ñâåäåíèÿòà çà ïðèëîæåíèåòî, íàòèñíåòå êîï÷åòî äî „Íàïðåä”." + IDS_NO_APPS "Çà ñúæàëåíèå â òîçè ðàçäåë âñå îùå íÿìà ïðèëîæåíèÿ. Ìîæåòå äà ïîìîãíåòå è äà äîáàâèòå îùå ïðèëîæåíèÿ." + IDS_CHOOSE_APP "Èçáåðåòå ïðèëîæåíèå." + IDS_CHOOSE_SUB "Èçáåðåòå ïîäðàçäåë." + IDS_CHOOSE_CATEGORY "Èçáåðåòå ðàçäåë." + IDS_CHOOSE_BOTH "Èçáåðåòå ïîäðàçäåë èëè ïðèëîæåíèå." + IDS_XMLERROR_1 "Xml ôàéëúò íå å îòêðèò !" + IDS_XMLERROR_2 "Ðàçáîðúò íà XML ôàéëà å íåóñïåøåí!" + IDS_DOWNLOAD_ERROR "Ñâàëÿíåòî íà ôàéëà íåâúçìîæíî.\nÏðîâåðåòå âðúçêàòà ñè ñ èíòåðíåò." + IDS_VERSION "Èçäàíèå: " + IDS_LICENCE "Ðàçðåøèòåëíî: " + IDS_MAINTAINER "Ïîääúðæàù: " + IDS_APPS_TITLE "Ïðèëîæåíèÿ" + IDS_CATS_TITLE "Ðàçäåëè" + IDS_CHOOSE_FOLDER "Èçáåðåòå ïàïêàòà..." + IDS_NOTCREATE_REGKEY "Íåóñïåøíî ñúçäàâàíå íà êëþ÷ â ðåãèñòúðà." + IDS_DOWNLOAD_FOLDER "Ñâàëÿ÷" + IDS_UNABLECREATE_FOLDER "Íåóñïåøíî ñúçäàâàíå íà ïàïêà ñ òîâà èìå!" + IDS_UPDATE_URL "http://svn.reactos.org" + TTT_HELPBUTTON, "Ïîìîù çà ñâàëÿ÷à" + TTT_UPDATEBUTTON, "Âñå îùå íå å ãîòîâî" + TTT_PROFBUTTON, "Ïîçâîëÿâà íàñòðîéêà íà ñâàëÿ÷à" +END diff --git a/reactos/base/applications/downloader/lang/de-DE.rc b/reactos/base/applications/downloader/lang/de-DE.rc new file mode 100644 index 00000000000..27184de338c --- /dev/null +++ b/reactos/base/applications/downloader/lang/de-DE.rc @@ -0,0 +1,61 @@ +LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Download..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Abbrechen", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Einstellungen" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Download Ordner:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "W&ähle...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Installationsdateien nach dem Setup löschen", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Update Server:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&Abbrechen", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Download ! - ReactOS Downloader" + IDS_WELCOME_TITLE "Willkommen im ReactOS Downloader" + IDS_WELCOME "Bitte wählen Sie links eine Kategorie. Dies ist Version 1.1." + IDS_NO_APP_TITLE "Keine Anwendung ausgewählt" + IDS_NO_APP "Bitte wählen Sie eine Anwendung, bevor Sie die Download-Schaltfläche betätigen. Wenn Sie Hilfe benötigen, drücken Sie die Hilfe-Schaltfläche in der oberen rechten Ecke." + IDS_UPDATE_TITLE "Update" + IDS_UPDATE "Diese Funktion wurde noch nicht implementiert." + IDS_HELP_TITLE "Hilfe" + IDS_HELP "Wählen Sie links eine Kategorie, wählen Sie eine Anwendung und drücken Sie die Download-Schaltfläche. Um die Anwendungsinformationen zu aktualisieren, drücken Sie die Schaltfläche neben der Hilfe-Schaltfläche." + IDS_NO_APPS "In dieser Kategorie sind bisher noch keine Anwendungen. Sie können helfen, indem Sie Anwendungen hinzufügen." + IDS_CHOOSE_APP "Bitte wählen Sie eine Anwendung." + IDS_CHOOSE_SUB "Bitte wählen Sie eine Unterkategorie." + IDS_CHOOSE_CATEGORY "Bitte wählen Sie eine Kategorie." + IDS_CHOOSE_BOTH "Bitte wählen Sie eine Unterkategorie oder eine Anwendung." + IDS_XMLERROR_1 "XML Datei nicht gefunden!" + IDS_XMLERROR_2 "XML Datei kann nicht verarbeitet werden!" + IDS_DOWNLOAD_ERROR "Die Datei konnte nicht heruntergeladen werden.\nBitte prüfen sie, ob eine Verbindung zum Internet besteht." + IDS_VERSION "Version: " + IDS_LICENCE "Lizenz: " + IDS_MAINTAINER "Maintainer: " + IDS_APPS_TITLE "Anwendungen" + IDS_CATS_TITLE "Kategorien" + IDS_CHOOSE_FOLDER "Bitte wählen Sie den Ordner..." + IDS_NOTCREATE_REGKEY "Registryschlüssel könnte nicht erstellt werden." + IDS_DOWNLOAD_FOLDER "Downloader" + IDS_UNABLECREATE_FOLDER "Es konnte kein Ordner mit diesem Namen erstellt werden!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s wird benötigt um %s ausführen zu können. Soll %s jetzt installiert werden?" + TTT_HELPBUTTON "Hilfe über den Downloader" + TTT_UPDATEBUTTON "Noch nicht vorhanden" + TTT_PROFBUTTON "Konfiguriert den Downloader" +END diff --git a/reactos/base/applications/downloader/lang/el-GR.rc b/reactos/base/applications/downloader/lang/el-GR.rc new file mode 100644 index 00000000000..ad044670b60 --- /dev/null +++ b/reactos/base/applications/downloader/lang/el-GR.rc @@ -0,0 +1,61 @@ +LANGUAGE LANG_GREEK, SUBLANG_DEFAULT + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Download..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "¢êõñï", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "ÐñïôéìÞóåéò" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "ÖÜêåëïò ËÞøåùí:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Å&ðéëïãÞ...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&ÄéáãñáöÞ áñ÷åßùí åãêáôÜóôáóçò ìåôÜ ôçí åãêáôÜóôáóç", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "ÄéáêïìéóôÞò åíçìåñþóåùí:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&¢êõñï", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Download ! - ReactOS Downloader" + IDS_WELCOME_TITLE "Êáëþò Þëèáôå óôïí ReactOS Downloader" + IDS_WELCOME "Ðáñáêáëþ åðéëÝîôå êáôçãïñßá óôá áñéóôåñÜ. ÁõôÞ åßíáé ç Ýêäïóç 1.1." + IDS_NO_APP_TITLE "Äåí åðéëÝ÷èçêå åöáñìïãÞ" + IDS_NO_APP "Please select a Application before you click the download button, if you need assistance please click on the question mark button on the top right corner." + IDS_UPDATE_TITLE "ÅíçìÝñùóç" + IDS_UPDATE "Sorry this feature is not implemented yet." + IDS_HELP_TITLE "ÂïÞèåéá" + IDS_HELP "ÅðéëÝîôå êáôçãïñßá óôá áñéóôåñÜ, ìåôÜ åðéëÝîôå ìéá åöáñìïãÞ êáé ðáôÞóôå ôï êïõìðß download. To update the application information click the button next to the help button." + IDS_NO_APPS "Sorry, there no applications in this category yet. You can help and add more applications." + IDS_CHOOSE_APP "Ðáñáêáëþ åðéëÝîôå ìéá åöáñìïãÞ." + IDS_CHOOSE_SUB "Ðáñáêáëþ åðéëÝîôå ìéá õðïêáôçãïñßá." + IDS_CHOOSE_CATEGORY "Ðáñáêáëþ åðéëÝîôå ìéá êáôçãïñßá." + IDS_CHOOSE_BOTH "Ðáñáêáëþ åðéëÝîôå ìéá õðïêáôçãïñßá Þ ìéá åöáñìïãÞ." + IDS_XMLERROR_1 "Äå âñÝèçêå ôï áñ÷åßï xml !" + IDS_XMLERROR_2 "Could not parse the xml file !" + IDS_DOWNLOAD_ERROR "Äåí Þôáí äõíáôü ôï êáôÝâáóìá ôïõ áñ÷åßïõ.\nÐáñáêáëïýìå åëÝîôå ôçí internet óýíäåóÞ óáò." + IDS_VERSION "¸êäïóç: " + IDS_LICENCE "¢äåéá: " + IDS_MAINTAINER "Maintainer: " + IDS_APPS_TITLE "ÅöáñìïãÝò" + IDS_CATS_TITLE "Êáôçãïñßåò" + IDS_CHOOSE_FOLDER "Ðáñáêáëþ, åðéëÝîôå ôïí êáôÜëïãï..." + IDS_NOTCREATE_REGKEY "Could not create the registry key." + IDS_DOWNLOAD_FOLDER "Downloader" + IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s åßíáé áðáéôïýìåíï ãéá ôçí åêôÝëåóç ôïõ %s. Íá åãêáôáóôáèåß ôï %s ôþñá;" + TTT_HELPBUTTON "Âñåßôå âïÞèåéá ãéá ôïí downloader" + TTT_UPDATEBUTTON "¼÷é áêüìá äéáèÝóéìï" + TTT_PROFBUTTON "Let you configure the downloader" +END diff --git a/reactos/base/applications/downloader/lang/en-US.rc b/reactos/base/applications/downloader/lang/en-US.rc new file mode 100644 index 00000000000..9c6031cb427 --- /dev/null +++ b/reactos/base/applications/downloader/lang/en-US.rc @@ -0,0 +1,61 @@ +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Download..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Preferences" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Download folder:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "C&hoose...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Delete installation files after setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Update server:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&Cancel", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Download ! - ReactOS Downloader" + IDS_WELCOME_TITLE "Welcome to the ReactOS Downloader" + IDS_WELCOME "Please choose a category on the left. This is version 1.1." + IDS_NO_APP_TITLE "No application selected" + IDS_NO_APP "Please select a Application before you click the download button, if you need assistance please click on the question mark button on the top right corner." + IDS_UPDATE_TITLE "Update" + IDS_UPDATE "Sorry this feature is not implemented yet." + IDS_HELP_TITLE "Help" + IDS_HELP "Choose a category on the left, then choose a application and click the download button. To update the application information click the button next to the help button." + IDS_NO_APPS "Sorry, there no applications in this category yet. You can help and add more applications." + IDS_CHOOSE_APP "Please choose an application." + IDS_CHOOSE_SUB "Please choose a subcategory." + IDS_CHOOSE_CATEGORY "Please choose a category." + IDS_CHOOSE_BOTH "Please choose a subcategory or an application." + IDS_XMLERROR_1 "Could not find the xml file !" + IDS_XMLERROR_2 "Could not parse the xml file !" + IDS_DOWNLOAD_ERROR "Unable to download the file.\nPlease check your internet connection." + IDS_VERSION "Version: " + IDS_LICENCE "Licence: " + IDS_MAINTAINER "Maintainer: " + IDS_APPS_TITLE "Applications" + IDS_CATS_TITLE "Categories" + IDS_CHOOSE_FOLDER "Please, choose the folder..." + IDS_NOTCREATE_REGKEY "Could not create the registry key." + IDS_DOWNLOAD_FOLDER "Downloader" + IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s is required to run %s. Should %s be installed now?" + TTT_HELPBUTTON "Get help about the downloader" + TTT_UPDATEBUTTON "Not yet available" + TTT_PROFBUTTON "Let you configure the downloader" +END diff --git a/reactos/base/applications/downloader/lang/es-ES.rc b/reactos/base/applications/downloader/lang/es-ES.rc new file mode 100644 index 00000000000..ed4d08abbc3 --- /dev/null +++ b/reactos/base/applications/downloader/lang/es-ES.rc @@ -0,0 +1,66 @@ +/* + *Spanish Language resource file + * Actualizado Javier Remacha 2007-12-01,2007-12-31 + */ + +LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Descargar..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Cancelar", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Preferencias" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Carpeta de descarga:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Seleccionar...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Borrar archivos de instalación tras la instalación", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Actualizar servidor:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&Aceptar", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&Cancelar", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "¡Descargar! - Descargador de ReactOS" + IDS_WELCOME_TITLE "Bienvenido al descargador de ReactOS" + IDS_WELCOME "Por favor selecciona una categoría de la izquierda. Esta es la versión 1.1." + IDS_NO_APP_TITLE "Ninguna aplicación seleccionada" + IDS_NO_APP "Por favor seleccione una Aplicación antes de pulsar el botón de Descarga, si necesita asistencia por favor pulsa el botón con la interrogación en la esquina superior derecha." + IDS_UPDATE_TITLE "Actualizar" + IDS_UPDATE "Perdón esta característica no a sido implementada todavía." + IDS_HELP_TITLE "Ayuda" + IDS_HELP "Selecciona una categoría de la izquierda, entonces selecciona una aplicación y pulsa el botón de descargar. Para actualizar la información de la aplicación pulsa el botón junto al botón de ayuda." + IDS_NO_APPS "Perdón, aun no hay ninguna aplicación en esta categoría. Puedes ayudar y añadir más aplicaciones." + IDS_CHOOSE_APP "Por favor selecciona una aplicación." + IDS_CHOOSE_SUB "Por favor selecciona una subcategoría." + IDS_CHOOSE_CATEGORY "Por favor selecciona una categoría." + IDS_CHOOSE_BOTH "Por favor selecciona una subcategoria o una aplicación." + IDS_XMLERROR_1 "¡No se a encontrado el archivo xml!" + IDS_XMLERROR_2 "¡No se ha podido analizar el archivo xml!" + IDS_DOWNLOAD_ERROR "Imposible descargar el archivo.\nPor favor verifica tu conexión a internet." + IDS_VERSION "Versión: " + IDS_LICENCE "Licencia: " + IDS_MAINTAINER "Mantenido por: " + IDS_APPS_TITLE "Aplicaciones" + IDS_CATS_TITLE "Categorias" + IDS_CHOOSE_FOLDER "Por favor, seleccione la carpeta..." + IDS_NOTCREATE_REGKEY "No se puede crear la llave del registro." + IDS_DOWNLOAD_FOLDER "Downloader" + IDS_UNABLECREATE_FOLDER "¡Imposible crear una carpeta con este nombre!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s en necesario para ejecutar %s. ¿Desea instalar %s ahora?" + TTT_HELPBUTTON "Obtenga ayuda acerca de Downloader" + TTT_UPDATEBUTTON "No disponible todavía" + TTT_PROFBUTTON "Le permite configurar Downloader" +END diff --git a/reactos/base/applications/downloader/lang/fr-FR.rc b/reactos/base/applications/downloader/lang/fr-FR.rc new file mode 100644 index 00000000000..eb3ae76a6b3 --- /dev/null +++ b/reactos/base/applications/downloader/lang/fr-FR.rc @@ -0,0 +1,61 @@ +LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Téléchargement..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Annuler", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Préférences" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Répertoire de téléchargement :", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "C&hoisir...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "Supprimer les fichiers après l'installation", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Serveur de mise-à-jour :", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "Annuler", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Télécharger ! - Téléchargeur de ReactOS" + IDS_WELCOME_TITLE "Bienvenue dans le Téléchargeur de ReactOS" + IDS_WELCOME "Veuillez choisir une catégorie sur la gauche. C'est la version 1.1." + IDS_NO_APP_TITLE "Aucune application selectionnée" + IDS_NO_APP "Veuillez sélectionner une application avant de cliquer sur le bouton Télécharger, si vous avez besoin d'aide, veuillez cliquer sur le point d'interrogation dans le coin supérieur droit." + IDS_UPDATE_TITLE "Mise à jour" + IDS_UPDATE "Désolé, cette fonctionnalité n'est pas encore implémentée." + IDS_HELP_TITLE "Aide" + IDS_HELP "Choisissez une catégorie sur la gauche, puis choisissez une application et cliquez sur le bouton Télécharger. Pour mettre à jour les informations sur l'application, cliquez sur le bouton à côté du bouton d'aide." + IDS_NO_APPS "Désolé, il n'y a pas encore d'application dans cette catégorie. Vous pouvez contribuer et ajouter plus d'applications." + IDS_CHOOSE_APP "Veuillez choisir une application." + IDS_CHOOSE_SUB "Veuillez choisir une sous-catégorie." + IDS_CHOOSE_CATEGORY "Veuillez choisir une catégorie." + IDS_CHOOSE_BOTH "Veuillez choisir une sous-catégorie ou une application." + IDS_XMLERROR_1 "Impossible de trouver le fichier xml !" + IDS_XMLERROR_2 "Impossible d'analyser le fichier xml !" + IDS_DOWNLOAD_ERROR "Impossible de télécharger le fichier.\nVeuillez vérifier votre connexion Internet." + IDS_VERSION "Version: " + IDS_LICENCE "Licence: " + IDS_MAINTAINER "Maintainer: " + IDS_APPS_TITLE "Applications" + IDS_CATS_TITLE "Catégories" + IDS_CHOOSE_FOLDER "Veuillez choisir le répertoire..." + IDS_NOTCREATE_REGKEY "Échec lors de la création de la clé registre." + IDS_DOWNLOAD_FOLDER "Downloader" + IDS_UNABLECREATE_FOLDER "Échec lors du répertoire avec ce nom !" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s est nécessaire pour lancer %s. Voulez-vous installer %s maintenant ?" + TTT_HELPBUTTON "Obtenez de l'aide à propros du téléchargeur" + TTT_UPDATEBUTTON "Pas encore disponible" + TTT_PROFBUTTON "Vous permet de configurer le téléchargeur" +END diff --git a/reactos/base/applications/downloader/lang/id-ID.rc b/reactos/base/applications/downloader/lang/id-ID.rc new file mode 100644 index 00000000000..1b88e2cf3a8 --- /dev/null +++ b/reactos/base/applications/downloader/lang/id-ID.rc @@ -0,0 +1,61 @@ +LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Download..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Batal", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Proferences" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Download folder:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "C&hoose...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Delete installation files after setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Update server:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&Cancel", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Download ! - ReactOS Downloader" + IDS_WELCOME_TITLE "Selamat datang di ReactOS Downloader" + IDS_WELCOME "Silahkan pilih kategori di sebelah kiri. Ini versi 1.1." + IDS_NO_APP_TITLE "Tidak ada aplikasi yang dipilih" + IDS_NO_APP "Silahkan pilih Aplikasi sebelum anda mengklik tombol download, jika anda membutuhkan asistensi silahkan klik pada tombol di sudut kanan atas." + IDS_UPDATE_TITLE "Mutakhirkan" + IDS_UPDATE "Maaf fitur ini belum diimplementasikan." + IDS_HELP_TITLE "Bantuan" + IDS_HELP "Pilih kategori di sisi kiri, lalu pilih aplikasi dan klik tombol download. Untuk memutakhirkan informasi aplikasi klik tombol disebelah tombol bantuan." + IDS_NO_APPS "Maaf, belum ada aplikasi dalam kategori ini. Anda dapat membantu dan menambahkan aplikasi lebih banyak." + IDS_CHOOSE_APP "Silahkan pilih aplikasi." + IDS_CHOOSE_SUB "Silahkan pilih subkategori." + IDS_CHOOSE_CATEGORY "Silahkan pilih kategori." + IDS_CHOOSE_BOTH "Silahkan pilih subkategori atau aplikasi." + IDS_XMLERROR_1 "Tidak dapat menemukan file xml !" + IDS_XMLERROR_2 "Tidak dapat mengurai file xml !" + IDS_DOWNLOAD_ERROR "Tidak bisa mendownload file.\nSilahkan periksa koneksi internet anda." + IDS_VERSION "Versi: " + IDS_LICENCE "Lisensi: " + IDS_MAINTAINER "Pemelihara: " + IDS_APPS_TITLE "Applications" + IDS_CATS_TITLE "Categories" + IDS_CHOOSE_FOLDER "Please, choose the folder..." + IDS_NOTCREATE_REGKEY "Could not create the registry key." + IDS_DOWNLOAD_FOLDER "Downloader" + IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s is required to run %s. Should %s be installed now?" + TTT_HELPBUTTON "Get help about the downloader" + TTT_UPDATEBUTTON "Not yet available" + TTT_PROFBUTTON "Let you configure the downloader" +END diff --git a/reactos/base/applications/downloader/lang/it-IT.rc b/reactos/base/applications/downloader/lang/it-IT.rc new file mode 100644 index 00000000000..925dc6b51f1 --- /dev/null +++ b/reactos/base/applications/downloader/lang/it-IT.rc @@ -0,0 +1,61 @@ +LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Scarica..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Annulla", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Preferenze" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Cartella dove scaricare:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Scegliere...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Cancellare i file di installazione dopo il setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Server per gli aggiornamenti:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&Annulla", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Scarica ! - ReactOS Downloader" + IDS_WELCOME_TITLE "Benvenuto al ReactOS Downloader" + IDS_WELCOME "Scegli una categoria a sinistra. Questa è la versione 1.1." + IDS_NO_APP_TITLE "Nessuna applicazione selezionata" + IDS_NO_APP "Scegli una Applicazione prima di premere il bottone Scarica, se serve assistenza clicca sul punto di domanda nell'angolo in alto a destra." + IDS_UPDATE_TITLE "Aggiorna" + IDS_UPDATE "Funzione non ancora implementata." + IDS_HELP_TITLE "Aiuto" + IDS_HELP "Scegli una categoria a sinistra, poi scegli una applicazione e clicca il bottone download. Per aggiornare le informazioni sulla applicazione clicca il bottone accanto a quello di aiuto." + IDS_NO_APPS "Non ci sono ancora applicazioni in questa categoria. Puoi aiutare aggiungendone altre." + IDS_CHOOSE_APP "Scegli una applicazione." + IDS_CHOOSE_SUB "Scegli una sottocategoria." + IDS_CHOOSE_CATEGORY "Scegli una categoria." + IDS_CHOOSE_BOTH "Scegli una sottocategoria o una applicazione." + IDS_XMLERROR_1 "File xml non trovato !" + IDS_XMLERROR_2 "Impossibile trattare il contenuto del file xml !" + IDS_DOWNLOAD_ERROR "Scaricamento del file impossibile.\nVerificare la connessione a Internet." + IDS_VERSION "Versione: " + IDS_LICENCE "Licenza: " + IDS_MAINTAINER "Manutentore: " + IDS_APPS_TITLE "Applicazioni" + IDS_CATS_TITLE "Categorie" + IDS_CHOOSE_FOLDER "Scegliere una cartella..." + IDS_NOTCREATE_REGKEY "Impossibile creare la chiave del registry." + IDS_DOWNLOAD_FOLDER "Scarica" + IDS_UNABLECREATE_FOLDER "Impossibile creare una cartella con questo nome!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s è necessario per la esecuzione di %s. Si vuole procedere alla installazione di %s?" + TTT_HELPBUTTON "Informazioni su ReactOS Downloader" + TTT_UPDATEBUTTON "Non disponibile" + TTT_PROFBUTTON "Permette la configurazione del downloader" +END diff --git a/reactos/base/applications/downloader/lang/lt-LT.rc b/reactos/base/applications/downloader/lang/lt-LT.rc new file mode 100644 index 00000000000..cf5be5ff85e --- /dev/null +++ b/reactos/base/applications/downloader/lang/lt-LT.rc @@ -0,0 +1,63 @@ +/* Translation by Vytis "CMan" Girdþijauskas (cman@cman.us) */ + +LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Siunèiama..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Atðaukti", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Nuostatos" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Siuntø katalogas:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Pasirinkti...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Naikinti diegimo bylas baigus diegimà", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Atnaujinimø serveris:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&Atðaukti", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Download ! - ReactOS atsiuntimø tvarkytuvë" + IDS_WELCOME_TITLE "Jus sveikina ReactOS atsiuntimø tvarkytuvë" + IDS_WELCOME "Praðome pasirinkti kategorijà kairëje. \nÈia yra versija 1.1." + IDS_NO_APP_TITLE "Nepasirinkta programa" + IDS_NO_APP "Praðome pasirinkti programà prieð paspaudþiant siuntimo mygtukà, jei jums reikalinga pagalba, praðome spausti ant klaustuko virðutiniame deðiniajame kampe." + IDS_UPDATE_TITLE "Atnaujinti" + IDS_UPDATE "Atsipraðome, bet ði funkcija dar nesukurta." + IDS_HELP_TITLE "Pagalba" + IDS_HELP "Pasirinkite kategorijà kairëje, tuomet pasirinkite programà ir spauskite siuntimo mygtukà. Norëdami atnaujinti programos informacijà, spaukite mygtukà, kuris yra ðalia nuostatø mygtuko." + IDS_NO_APPS "Atsipraðome, bet ðioje kategorijoje programø dar nëra. Jûs galite padëti pridëdami daugiau programø." + IDS_CHOOSE_APP "Praðome pasirinkti programà." + IDS_CHOOSE_SUB "Praðome pasirinkti pokategorá." + IDS_CHOOSE_CATEGORY "Praðome pasirinkti kategorijà." + IDS_CHOOSE_BOTH "Praðome pasirinkti pokategorá arba programà." + IDS_XMLERROR_1 "Nepavyko rasti xml bylos!" + IDS_XMLERROR_2 "Nepavyko nuskaityti xml bylos!" + IDS_DOWNLOAD_ERROR "Nepavyko parsiøsti bylos.\nPraðome patikrinti interneto ryðá." + IDS_VERSION "Versija: " + IDS_LICENCE "Licencija: " + IDS_MAINTAINER "Palaikymas: " + IDS_APPS_TITLE "Programos" + IDS_CATS_TITLE "Kategorijos" + IDS_CHOOSE_FOLDER "Praðome pasirinkti katalogà..." + IDS_NOTCREATE_REGKEY "Nepavyko sukurti registro rakto." + IDS_DOWNLOAD_FOLDER "Downloader" + IDS_UNABLECREATE_FOLDER "Nepavyko sukurti katalogo su ðiuo vardu!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s reikalingas paleisti %s. Diegti %s dabar?" + TTT_HELPBUTTON "Pateikia informacijà apie naudojimàsi programa" + TTT_UPDATEBUTTON "Dar nëra" + TTT_PROFBUTTON "Leidþia konfiguruoti programà" +END diff --git a/reactos/base/applications/downloader/lang/no-NO.rc b/reactos/base/applications/downloader/lang/no-NO.rc new file mode 100644 index 00000000000..0a03c9bfa43 --- /dev/null +++ b/reactos/base/applications/downloader/lang/no-NO.rc @@ -0,0 +1,61 @@ +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Nedlasting..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Prosess1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Avbryt", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Innstillinger" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Nedlastingsmappe:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "V&elg...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Slett installasjonsfiler etter innstallering", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Oppdater server:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&Avbryt", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Nedlasting ! - ReactOS Nedlasting" + IDS_WELCOME_TITLE "Velkommen til ReactOS Nedlasting" + IDS_WELCOME "Vennligst velg en kategori til høyre. Dette er versjon 1.1." + IDS_NO_APP_TITLE "Ingen applikasjoner er valgt" + IDS_NO_APP "Vennligst velg en applikasjon før du klikker på nedlasting knappen, hvis du trenger hjelp vennligst klikk på spørsmålsmerke knappen på toppen i høyre hjørne." + IDS_UPDATE_TITLE "Oppdater" + IDS_UPDATE "Beklager denne funksjonen er ikke implementert ennå." + IDS_HELP_TITLE "Hjelp" + IDS_HELP "Velg en kategori til venstre, også velg en applikasjon og klikk på nedlastings knappen. For å oppdatere applikasjon informasjonen klikk på knappen neste etter hjelp knappen." + IDS_NO_APPS "Beklager, det er ingen applikasjoner i denne kategorien ennå. Du kan hjelpe og legge til flere applikasjoner." + IDS_CHOOSE_APP "Vennligst velg en applikasjon." + IDS_CHOOSE_SUB "Vennligst velg en underkategori." + IDS_CHOOSE_CATEGORY "Vennligst velg en kategori." + IDS_CHOOSE_BOTH "Vennligst velg en underkategori eller en applikasjon." + IDS_XMLERROR_1 "Kan ikke finne xml filen !" + IDS_XMLERROR_2 "Kan ikke analysere xml filen !" + IDS_DOWNLOAD_ERROR "Ikke mulig å laste ned filen.\nVennligst sjekk din internett forbindelse." + IDS_VERSION "Versjon: " + IDS_LICENCE "Lisens: " + IDS_MAINTAINER "Produsent: " + IDS_APPS_TITLE "Applikasjoner" + IDS_CATS_TITLE "Kategori" + IDS_CHOOSE_FOLDER "Vennligst, velg mappen..." + IDS_NOTCREATE_REGKEY "Kan ikke opprette registernøkkel." + IDS_DOWNLOAD_FOLDER "Nedlasting" + IDS_UNABLECREATE_FOLDER "Ikke mulig å opprette mappe med dette navnet!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s trengs å bli kjørt %s. Skal %s bli innstallert nå?" + TTT_HELPBUTTON "Få hjelp om nedlastingen" + TTT_UPDATEBUTTON "Ikke ennå tilgjengelig" + TTT_PROFBUTTON "La deg konfigurere nedlastingen" +END diff --git a/reactos/base/applications/downloader/lang/pl-PL.rc b/reactos/base/applications/downloader/lang/pl-PL.rc new file mode 100644 index 00000000000..adcc2d49efd --- /dev/null +++ b/reactos/base/applications/downloader/lang/pl-PL.rc @@ -0,0 +1,68 @@ +/* + * translated by Caemyr - Olaf Siejka (Feb, 2008) + * Use ReactOS forum PM or IRC to contact me + * http://www.reactos.org + * IRC: irc.freenode.net #reactos-pl; + */ + +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Œci¹gaj..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Anuluj", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Ustawienia" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Katalog do œci¹gania:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Wybierz...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Skasuj œci¹gniête pliki po zainstalowaniu programu", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Uaktualnij:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&Anuluj", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Œci¹gnij ! - Mened¿er pobierania dla ReactOS" + IDS_WELCOME_TITLE "Witamy w Œci¹gnij dla ReactOS" + IDS_WELCOME "Proszê wybraæ kategoriê po lewej. Wersja programu: 1.1." + IDS_NO_APP_TITLE "Nie wybrano programu" + IDS_NO_APP "Proszê wybraæ program, przed klikniêciem w przycisk Œci¹gnij. W razie problemów kliknij w znak zapytania, w prawym górnym rogu okna." + IDS_UPDATE_TITLE "Uaktualnij" + IDS_UPDATE "Przepraszamy, ta opcja nie jest jeszcze dostêpna." + IDS_HELP_TITLE "Pomoc" + IDS_HELP "Wybierz kategoriê po lewej, nastêpnie wybierz program i kliknij w przycisk Œci¹gnij. Aby uaktualniæ listê programów, naciœnij przycisk obok przycisku Pomocy." + IDS_NO_APPS "Przepraszamy, nie ma programów w tej kategorii. Mo¿esz pomóc nam w wyborze nowych programów." + IDS_CHOOSE_APP "Proszê wybraæ program." + IDS_CHOOSE_SUB "Proszê wybraæ podkategoriê." + IDS_CHOOSE_CATEGORY "Proszê wybraæ kategoriê." + IDS_CHOOSE_BOTH "Proszê wybraæ podkategoriê albo program." + IDS_XMLERROR_1 "Plik XML nie zosta³ znaleziony !" + IDS_XMLERROR_2 "Nie uda³o siê przetworzyæ pliku XML !" + IDS_DOWNLOAD_ERROR "Sci¹ganie pliku nieudane.\nProszê sprawdziæ po³¹czenie z internetem." + IDS_VERSION "Wersja: " + IDS_LICENCE "Licenccja: " + IDS_MAINTAINER "Opiekun: " + IDS_APPS_TITLE "Programy" + IDS_CATS_TITLE "Kategorie" + IDS_CHOOSE_FOLDER "Proszê wybraæ katalog..." + IDS_NOTCREATE_REGKEY "Nie uda³o siê utworzyæ kluczy rejestru." + IDS_DOWNLOAD_FOLDER "Pobrane" + IDS_UNABLECREATE_FOLDER "Nie uda³o siê stworzyæ katalogu o tej nazwie!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s jest wymagany do uruchomienia %s. Czy chcesz zainstalowaæ %s w tej chwili?" + TTT_HELPBUTTON "Pomoc Mened¿era pobierania" + TTT_UPDATEBUTTON "Niedostêpne" + TTT_PROFBUTTON "Ustawienia Mened¿era pobierania" +END diff --git a/reactos/base/applications/downloader/lang/ru-RU.rc b/reactos/base/applications/downloader/lang/ru-RU.rc new file mode 100644 index 00000000000..386592561e2 --- /dev/null +++ b/reactos/base/applications/downloader/lang/ru-RU.rc @@ -0,0 +1,63 @@ +//Russian language file. (Dmitry Chapyshev, 2007.06.21) + +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Çàãðóçêà..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 17, SS_CENTER + PUSHBUTTON "Îòìåíà", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Íàñòðîéêè" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Ïàïêà äëÿ çàêà÷êè:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Âûáðàòü...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Óäàëÿòü óñòàíîâî÷íûå ôàéëû ïîñëå óñòàíîâêè", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Ñåðâåð îáíîâëåíèé:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "Î&òìåíà", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Ñêà÷àòü! - Ìåíåäæåð çàêà÷åê ReactOS" + IDS_WELCOME_TITLE "Äîáðî ïîæàëîâàòü â Ìåíåäæåð çàêà÷åê ReactOS" + IDS_WELCOME "Ïîæàëóéñòà âûáåðèòå êàòåãîðèþ ñïðàâà. Âåðñèÿ 1.1" + IDS_NO_APP_TITLE "Ïðèëîæåíèå íå âûáðàíî" + IDS_NO_APP "Ïîæàëóéñòà, âûáåðèòå ïðèëîæåíèå ïðåæäå, ÷åì íàæàòü êíîïêó çàãðóçêè. Åñëè âàì íóæíà ñïðàâêà, òî íàæìèòå êíîïêó ñî çíàêîì âîïðîñà â âåðõíåì ïðàâîì óãëó." + IDS_UPDATE_TITLE "Îáíîâèòü" + IDS_UPDATE "Èçâèíèòå, äàííàÿ âîçìîæíîñòü íà äàííûì ìîìåíò íåäîñòóïíà." + IDS_HELP_TITLE "Ñïðàâêà" + IDS_HELP "Âûáåðèòå êàòåãîðèþ ñëåâà, çàòåì âûáåðèòå ïðèëîæåíèå è íàæìèòå êíîïêó çàãðóçêè. Äëÿ ïîëó÷åíèÿ èíôîðìàöèè îá îáíîâëåíèÿõ íàæìèòå êíîïêó ðÿäîì ñ êíîïêîé ñïðàâêè." + IDS_NO_APPS "Èçâåíèòå, íà äàííûé ìîìåíò â ýòîé êàòåãîðèè ïðèëîæåíèé íåò, íî âû ìîæåòå ïîìî÷ü äîáàâèòü èõ." + IDS_CHOOSE_APP "Ïîæàëóéñòà âûáåðèòå ïðèëîæåíèå." + IDS_CHOOSE_SUB "Ïîæàëóéñòà âûáåðèòå ïîäêàòåãîðèþ." + IDS_CHOOSE_CATEGORY "Ïîæàëóéñòà âûáåðèòå êàòåãîðèþ." + IDS_CHOOSE_BOTH "Ïîæàëóéñòà âûáåðèòå ïîäêàòåãîðèþ èëè ïðèëîæåíèå." + IDS_XMLERROR_1 "Íå óäàëîñü íàéòè xml-ôàéë!" + IDS_XMLERROR_2 "Íå óäàëîñü îáðàáîòàòü xml-ôàéë!" + IDS_DOWNLOAD_ERROR "Íå óäàåòñÿ çàãðóçèòü ôàéë.\nÏîæàëóéñòà ïðîâåðüòå âàøå ïîäêëþ÷åíèå ê èíòåðíåò." + IDS_VERSION "Âåðñèÿ: " + IDS_LICENCE "Ëèöåíçèÿ: " + IDS_MAINTAINER "Ïðîèçâîäèòåëü: " + IDS_APPS_TITLE "Ïðèëîæåíèÿ" + IDS_CATS_TITLE "Êàòåãîðèè" + IDS_CHOOSE_FOLDER "Ïîæàëóéñòâà âûáåðèòå ïàïêó..." + IDS_NOTCREATE_REGKEY "Íå óäàëîñü ñîçäàòü êëþ÷ â ðååñòðå." + IDS_DOWNLOAD_FOLDER "Downloader" + IDS_UNABLECREATE_FOLDER "Íå óäàëîñü ñîçäàòü ïàïêó ñ òàêèì èìåíåì!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s òðåáóåòñÿ äëÿ çàïóñêà %s. Óñòàíîâèòü %s?" + TTT_HELPBUTTON "Ïîêàçàòü ñïðàâêó ïðîãðàììû" + TTT_UPDATEBUTTON "Ñåé÷àñ íåäîñòóïíî" + TTT_PROFBUTTON "Âûïîëíèòü íàñòðîéêó ïðîãðàììû" +END diff --git a/reactos/base/applications/downloader/lang/sk-SK.rc b/reactos/base/applications/downloader/lang/sk-SK.rc new file mode 100644 index 00000000000..9258d705f1e --- /dev/null +++ b/reactos/base/applications/downloader/lang/sk-SK.rc @@ -0,0 +1,67 @@ +/* TRANSLATOR: Mário Kaèmár /Mario Kacmar/ aka Kario (kario@szm.sk) + * DATE OF TR: 21-01-2008 + * LastChange: 31-10-2008 + */ + + +LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Sahujem ..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Zruši", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Nastavenia" //Preferencies +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Prieèinok sahovania:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Vybra ...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Odstráni inštalaèné súbory po nainštalovaní", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Aktualizova server:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&Zruši", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "ahaj! - Downloader systému ReactOS" + IDS_WELCOME_TITLE "Vitajte v programe Downloader systému ReactOS" + IDS_WELCOME "Vyberte, prosím, kategóriu na ¾avej strane. Toto je verzia 1.1." + IDS_NO_APP_TITLE "Nie je vybraný žiadny program" + IDS_NO_APP "Vyberte, prosím, program predtým než kliknete na tlaèidlo stiahnu. Ak potrebujete pomoc, kliknite, prosím, na tlaèidlo otáznika v pravom hornom rohu." + IDS_UPDATE_TITLE "Aktualizova" + IDS_UPDATE "Prepáète, ale táto funkcia zatia¾ nie je implementovaná." + IDS_HELP_TITLE "Pomocník" + IDS_HELP "Vyberte kategóriu na ¾avej strane, potom vyberte program a kliknite na tlaèidlo stiahnu. Pre aktualizáciu informácii o programe kliknite na tlaèidlo ved¾a tlaèidla pomoc." + IDS_NO_APPS "Prepáète, ale zatia¾ sa v tejto kategórii nenachádzajú žiadne programy. Môžete pomôc a prida viac programov." + IDS_CHOOSE_APP "Vyberte program, prosím." + IDS_CHOOSE_SUB "Vyberte podkategóriu, prosím." + IDS_CHOOSE_CATEGORY "Vyberte kategóriu, prosím." + IDS_CHOOSE_BOTH "Vyberte podkategóriu alebo program, prosím." + IDS_XMLERROR_1 "Nepodarilo sa nájs súbor xml!" + IDS_XMLERROR_2 "Nepodarilo sa správne analyzova súbor xml!" + IDS_DOWNLOAD_ERROR "Nepodarilo sa stiahnu súbor.\nSkontrolujte, prosím, pripojenie do siete internet." + IDS_VERSION "Verzia: " + IDS_LICENCE "Licencia: " + IDS_MAINTAINER "Údržbár: " //Maintainer + IDS_APPS_TITLE "Programy" + IDS_CATS_TITLE "Kategórie" + IDS_CHOOSE_FOLDER "Vyberte, prosím, prieèinok ..." + IDS_NOTCREATE_REGKEY "Nepodarilo sa vytvori k¾úè registra." + IDS_DOWNLOAD_FOLDER "Downloader" + IDS_UNABLECREATE_FOLDER "Nie je možné vytvori prieèinok s týmto názvom!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s je potrebný pre spustenie %s. Má sa %s nainštalova teraz?" + TTT_HELPBUTTON "Získa nápoveï k programu downloader" + TTT_UPDATEBUTTON "Zatia¾ nie je k dispozícií" + TTT_PROFBUTTON "Dovolí Vám konfigurova program downloader" +END diff --git a/reactos/base/applications/downloader/lang/uk-UA.rc b/reactos/base/applications/downloader/lang/uk-UA.rc new file mode 100644 index 00000000000..b43a863cde4 --- /dev/null +++ b/reactos/base/applications/downloader/lang/uk-UA.rc @@ -0,0 +1,69 @@ +/* + * PROJECT: ReactOS Downloader + * LICENSE: GPL - See COPYING in the top level directory + * FILE: rosapps/downloader/lang/uk-UA.rc + * PURPOSE: Ukraianian Language File for Downloader + * TRANSLATOR: Artem Reznikov + */ + +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT + +IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Çàâàíòàæåííÿ..." +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 + LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP +END + +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE +CAPTION "Íàñòðîéêè" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Ïàïêà äëÿ çàâàíòàæåííÿ:", -1, 6, 10, 140, 8 + EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&Âèáðàòè...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14 + AUTOCHECKBOX "&Âèäàëÿòè íàñòàíîâí³ ôàéëè ï³ñëÿ óñòàíîâêè", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP + LTEXT "Ñåðâåð îíîâëåíü:", -1, 6, 55, 140, 8 + EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP + DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15 + PUSHBUTTON "&Ñêàñóâàòè", IDCANCEL, 207, 90, 54, 15 +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_WINDOW_TITLE "Çàâàíòàæèòè ! - Çàâàíòàæóâà÷ ReactOS" + IDS_WELCOME_TITLE "Ëàñêàâî ïðîñèìî ó Çàâàíòàæóâà÷ ReactOS" + IDS_WELCOME "Áóäü ëàñêà âèáåð³òü êàòåãîð³þ çë³âà. Öå âåðñ³ÿ 1.1." + IDS_NO_APP_TITLE "Äîäàòîê íå âèáðàíèé" + IDS_NO_APP "Áóäü ëàñêà, âèáåð³òü äîäàòîê ïåðø í³æ íàòèñíóòè êíîïêó çàâàíòàæåííÿ. ßêùî Âàì ïîòð³áíà äîïîìîãà, íàòèñí³òü êíîïêó ç³ çíàêîì ïèòàííÿ ó âåðõíüîìó ïðàâîìó êóòêó." + IDS_UPDATE_TITLE "Îíîâèòè" + IDS_UPDATE "Âèáà÷òå, äàíà ìîæëèâ³ñòü ùå íåäîñòóïíà." + IDS_HELP_TITLE "Äîâ³äêà" + IDS_HELP "Âèáåð³òü êàòåãîð³þ çë³âà, ïîò³ì âèáåð³òü äîäàòîê ³ íàòèñí³òü êíîïêó çàâàíòàæåííÿ. Äëÿ îòðèìàííÿ ³íôîðìàö³¿ ïðî îíîâëåííÿ íàòèñí³òü êíîïêó ïîðÿä ç êíîïêîþ äîâ³äêè." + IDS_NO_APPS "Âèáà÷òå, â ö³é êàòåãî𳿠ùå íåìຠäîäàòê³â. Âè ìîæåòå äîïîìîãòè ³ äîäàòè á³ëüøå äîäàòê³â." + IDS_CHOOSE_APP "Áóäü ëàñêà âèáåð³òü äîäàòîê." + IDS_CHOOSE_SUB "Áóäü ëàñêà âèáåð³òü ï³äêàòåãîð³þ." + IDS_CHOOSE_CATEGORY "Áóäü ëàñêà âèáåð³òü êàòåãîð³þ." + IDS_CHOOSE_BOTH "Áóäü ëàñêà âèáåð³òü ï³äêàòåãîð³þ àáî äîäàòîê." + IDS_XMLERROR_1 "Íå âäàëîñÿ çíàéòè ôàéë XML !" + IDS_XMLERROR_2 "Íå âäàëîñÿ îáðîáèòè ôàéë XML !" + IDS_DOWNLOAD_ERROR "Íåìîæëèâî çàâàíòàæèòè ôàéë.\nÁóäü ëàñêà ïåðåâ³ðòå âàøå ³íòåðíåò-ç'ºäíàííÿ." + IDS_VERSION "Âåðñ³ÿ: " + IDS_LICENCE "˳öåíç³ÿ: " + IDS_MAINTAINER "Âèðîáíèê: " + IDS_APPS_TITLE "Äîäàòêè" + IDS_CATS_TITLE "Êàòåãîð³¿" + IDS_CHOOSE_FOLDER "Áóäü ëàñêà âèáåð³òü ïàïêó..." + IDS_NOTCREATE_REGKEY "Íå âäàëîñÿ ñòâîðèòè êëþ÷ ó ðåºñòð³." + IDS_DOWNLOAD_FOLDER "Downloader" + IDS_UNABLECREATE_FOLDER "Íå âäàëîñÿ ñòâîðèòè ïàïêó ç òàêèì ³ì'ÿì!" + IDS_UPDATE_URL "http://svn.reactos.org" + IDS_INSTALL_DEP "%s ïîòð³áíèé ùîá çàïóñòèòè %s. Âñòàíîâèòè %s çàðàç?" + TTT_HELPBUTTON "Îòðèìàéòè äîïîìîãó ïðî çàâàíòàæóâà÷" + TTT_UPDATEBUTTON "Ïîêè ùî íå äîñòóïíî" + TTT_PROFBUTTON "Íàëàøòóâàòè çàâàíòàæóâà÷" +END diff --git a/reactos/base/applications/downloader/main.c b/reactos/base/applications/downloader/main.c new file mode 100644 index 00000000000..5e14ecb2de6 --- /dev/null +++ b/reactos/base/applications/downloader/main.c @@ -0,0 +1,922 @@ +/* PROJECT: ReactOS Downloader + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/downloader/xml.c + * PURPOSE: Main program + * PROGRAMMERS: Maarten Bosma, Lester Kortenhoeven, Dmitry Chapyshev + */ + +#include +#include +#include +#include +#include +#include +#include +#include "resources.h" +#include "structures.h" + +HWND hwnd, hCategories, hApps, hDownloadButton, hUninstallButton, hUpdateButton, hHelpButton, hProfButton; +HBITMAP hLogo, hUnderline; +WCHAR* DescriptionHeadline = L""; +WCHAR* DescriptionText = L""; +WCHAR ApplicationText[700]; + +struct Category Root; +struct Application* SelectedApplication; + +INT_PTR CALLBACK DownloadProc (HWND, UINT, WPARAM, LPARAM); +BOOL ProcessXML (const char* filename, struct Category* Root); +VOID FreeTree (struct Category* Node); +WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT]; + + +BOOL +getUninstaller(WCHAR* RegName, WCHAR* Uninstaller) { + HKEY hKey1; + HKEY hKey2; + DWORD Type = 0; + DWORD Size = MAX_PATH; + WCHAR Value[MAX_PATH]; + WCHAR KeyName[MAX_PATH]; + LONG i = 0; + + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",0,KEY_READ,&hKey1) == ERROR_SUCCESS) { + while (RegEnumKeyExW(hKey1,i,KeyName,&Size,NULL,NULL,NULL,NULL) == ERROR_SUCCESS) { + ++i; + RegOpenKeyExW(hKey1,KeyName,0,KEY_READ,&hKey2); + Size = MAX_PATH; + if (RegQueryValueExW(hKey2,L"DisplayName",0,&Type,(LPBYTE)Value,&Size) == ERROR_SUCCESS) { + Size = MAX_PATH; + if (StrCmpW(Value,RegName) == 0) { + if (RegQueryValueExW(hKey2,L"UninstallString",0,&Type,(LPBYTE)Uninstaller,&Size) == ERROR_SUCCESS) { + RegCloseKey(hKey2); + RegCloseKey(hKey1); + return TRUE; + } else { + RegCloseKey(hKey2); + RegCloseKey(hKey1); + return FALSE; + } + } + } + RegCloseKey(hKey2); + Size = MAX_PATH; + } + RegCloseKey(hKey1); + } + return FALSE; +} + +void +ShowMessage (WCHAR* title, WCHAR* message) +{ + DescriptionHeadline = title; + DescriptionText = message; + InvalidateRect(hwnd,NULL,TRUE); + UpdateWindow(hwnd); +} + +void +AddItems(HWND hwnd, struct Category* Category, struct Category* Parent) +{ + TV_INSERTSTRUCTW Insert; + + Insert.item.lParam = (LPARAM)Category; + Insert.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;; + Insert.item.pszText = Category->Name; + Insert.item.cchTextMax = lstrlenW(Category->Name); + Insert.item.iImage = Category->Icon; + Insert.item.iSelectedImage = Category->Icon; + Insert.hInsertAfter = TVI_LAST; + Insert.hParent = Category->Parent ? Category->Parent->TreeviewItem : TVI_ROOT; + + Category->TreeviewItem = (HTREEITEM)SendMessage(hwnd, TVM_INSERTITEM, 0, (LPARAM)&Insert); + + if(Category->Next) + AddItems (hwnd,Category->Next,Parent); + + if(Category->Children) + AddItems (hwnd,Category->Children,Category); +} + +void +CategoryChoosen(HWND hwnd, struct Category* Category) +{ + struct Application* CurrentApplication; + TV_INSERTSTRUCTW Insert; + WCHAR Uninstaller[200]; + SelectedApplication = NULL; + + if(Category->Children && !Category->Apps) + ShowMessage(Category->Name, Strings[IDS_CHOOSE_SUB]); + else if(!Category->Children && Category->Apps) + ShowMessage(Category->Name, Strings[IDS_CHOOSE_APP]); + else if(Category->Children && Category->Apps) + ShowMessage(Category->Name, Strings[IDS_CHOOSE_BOTH]); + else + ShowMessage(Category->Name, Strings[IDS_NO_APPS]); + + (void)TreeView_DeleteItem(hwnd, TVI_ROOT); + (void)TreeView_DeleteItem(hwnd, TVI_ROOT); // Delete twice to bypass bug in windows + + Insert.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE; + Insert.hInsertAfter = TVI_LAST; + Insert.hParent = TVI_ROOT; + + CurrentApplication = Category->Apps; + while(CurrentApplication) + { + Insert.item.lParam = (LPARAM)CurrentApplication; + Insert.item.pszText = CurrentApplication->Name; + Insert.item.cchTextMax = lstrlenW(CurrentApplication->Name); + Insert.item.iImage = 10; + if(StrCmpW(CurrentApplication->RegName,L"")) { + if(getUninstaller(CurrentApplication->RegName, Uninstaller)) + Insert.item.iImage = 9; + } + SendMessage(hwnd, TVM_INSERTITEM, 0, (LPARAM)&Insert); + CurrentApplication = CurrentApplication->Next; + } +} + +BOOL CreateToolTip(HWND hwndTool, HWND hDlg, WCHAR* pText) +{ + HWND hwndTip; + TOOLINFO toolInfo; + + if (!hwndTool || !hDlg || !pText) + return FALSE; + + hwndTip = CreateWindowExW(0, TOOLTIPS_CLASS, NULL, + WS_POPUP |TTS_ALWAYSTIP | TTS_BALLOON, + CW_USEDEFAULT, CW_USEDEFAULT, + CW_USEDEFAULT, CW_USEDEFAULT, + hDlg, NULL, + GetModuleHandle(NULL), NULL); + if (!hwndTip) + return FALSE; + + ZeroMemory(&toolInfo, sizeof(TOOLINFO)); + toolInfo.cbSize = sizeof(toolInfo); + toolInfo.hwnd = hDlg; + toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS; + toolInfo.uId = (UINT_PTR)hwndTool; + toolInfo.lpszText = pText; + SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo); + + return TRUE; +} + +BOOL +SetupControls (HWND hwnd) +{ + TV_INSERTSTRUCTW Insert = {0}; + HIMAGELIST hImageList; + HINSTANCE hInstance = GetModuleHandle(NULL); + WCHAR Cats[MAX_STRING_LENGHT], Apps[MAX_STRING_LENGHT]; + WCHAR Tooltip1[MAX_STRING_LENGHT], Tooltip2[MAX_STRING_LENGHT], Tooltip3[MAX_STRING_LENGHT]; + char Buf[MAX_PATH]; + + // Getting downloader.xml path + if(!GetSystemDirectoryA(Buf,sizeof(Buf))) return FALSE; + strcat(Buf, "\\downloader.xml"); + + // Parse the XML file + if (!ProcessXML(Buf, &Root)) + return FALSE; + + LoadStringW(hInstance, IDS_CATS_TITLE, Cats, MAX_STRING_LENGHT); + LoadStringW(hInstance, IDS_APPS_TITLE, Apps, MAX_STRING_LENGHT); + + // Set up the controls + hCategories = CreateWindowExW(0, WC_TREEVIEWW, Cats, + WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS, + 0, 0, 0, 0, hwnd, NULL, hInstance, NULL); + + hApps = CreateWindowExW(0, WC_TREEVIEWW, Apps, + WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS, + 0, 0, 0, 0, hwnd, NULL, hInstance, NULL); + + hLogo = LoadBitmap(GetModuleHandle(NULL), + MAKEINTRESOURCE(IDB_LOGO)); + hUnderline = LoadBitmap(GetModuleHandle(NULL), + MAKEINTRESOURCE(IDB_UNDERLINE)); + + hHelpButton = CreateWindowW(L"Button", L"", + WS_CHILD | WS_VISIBLE | BS_ICON, + 550, 10, 40, 40, + hwnd, 0, hInstance, NULL); + LoadString(hInstance, TTT_HELPBUTTON, Tooltip1, MAX_STRING_LENGHT); + CreateToolTip(hHelpButton, hwnd, Tooltip1); + + hUpdateButton = CreateWindowW(L"Button", L"", + WS_CHILD | WS_VISIBLE | BS_ICON, + 450, 10, 40, 40, + hwnd, 0, hInstance, NULL); + LoadString(hInstance, TTT_UPDATEBUTTON, Tooltip2, MAX_STRING_LENGHT); + CreateToolTip(hUpdateButton, hwnd, Tooltip2); + + hProfButton = CreateWindowW(L"Button", L"", + WS_CHILD | WS_VISIBLE | BS_ICON, + 500, 10, 40, 40, + hwnd, 0, hInstance, NULL); + LoadString(hInstance, TTT_PROFBUTTON, Tooltip3, MAX_STRING_LENGHT); + CreateToolTip(hProfButton, hwnd, Tooltip3); + + hDownloadButton = CreateWindowW(L"Button", L"", + WS_CHILD | WS_VISIBLE | BS_BITMAP, + 330, 505, 140, 33, + hwnd, 0, hInstance, NULL); + + hUninstallButton = CreateWindowW(L"Button", L"", + WS_CHILD | WS_VISIBLE | BS_BITMAP, + 260, 505, 140, 33, + hwnd, 0, hInstance, NULL); + + SendMessageW(hProfButton, + BM_SETIMAGE, + (WPARAM)IMAGE_ICON, + (LPARAM)(HANDLE)LoadIcon(hInstance,MAKEINTRESOURCE(IDI_PROF))); + SendMessageW(hHelpButton, + BM_SETIMAGE, + (WPARAM)IMAGE_ICON, + (LPARAM)(HANDLE)LoadIcon(hInstance, MAKEINTRESOURCE(IDI_HELP))); + SendMessageW(hUpdateButton, + BM_SETIMAGE, + (WPARAM)IMAGE_ICON, + (LPARAM)(HANDLE)LoadIcon(hInstance, MAKEINTRESOURCE(IDI_UPDATE))); + SendMessageW(hDownloadButton, + BM_SETIMAGE, + (WPARAM)IMAGE_BITMAP, + (LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_DOWNLOAD))); + SendMessageW(hUninstallButton, + BM_SETIMAGE, + (WPARAM)IMAGE_BITMAP, + (LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_UNINSTALL))); + ShowWindow(hUninstallButton, SW_HIDE); + + // Set deflaut entry for hApps + Insert.item.mask = TVIF_TEXT|TVIF_IMAGE; + Insert.item.pszText = Strings[IDS_CHOOSE_CATEGORY]; + Insert.item.cchTextMax = lstrlenW(Strings[IDS_CHOOSE_CATEGORY]); + Insert.item.iImage = 0; + SendMessage(hApps, TVM_INSERTITEM, 0, (LPARAM)&Insert); + + // Create Tree Icons + hImageList = ImageList_Create(16, 16, ILC_COLORDDB, 1, 1); + SendMessageW(hCategories, TVM_SETIMAGELIST, TVSIL_NORMAL, (LPARAM)(HIMAGELIST)hImageList); + SendMessageW(hApps, TVM_SETIMAGELIST, TVSIL_NORMAL, (LPARAM)(HIMAGELIST)hImageList); + + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_0)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_1)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_2)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_3)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_4)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_5)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_6)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_7)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_8)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_9)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_10)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_11)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_12)), NULL); + ImageList_Add(hImageList, + LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_13)), NULL); + + // Fill the TreeViews + AddItems (hCategories, Root.Children, NULL); + + return TRUE; +} + +static void +ResizeControl (HWND hwnd, int x1, int y1, int x2, int y2) +{ + // Make resizing a little easier + MoveWindow(hwnd, x1, y1, x2-x1, y2-y1, TRUE); +} + +static void +DrawBitmap (HDC hdc, int x, int y, HBITMAP hBmp) +{ + BITMAP bm; + HDC hdcMem = CreateCompatibleDC(hdc); + + SelectObject(hdcMem, hBmp); + GetObject(hBmp, sizeof(bm), &bm); + TransparentBlt(hdc, x, y, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, 0xFFFFFF); + + DeleteDC(hdcMem); +} + +static void +DrawDescription (HDC hdc, RECT DescriptionRect) +{ + int i; + HFONT Font; + RECT Rect = {DescriptionRect.left+5, DescriptionRect.top+3, DescriptionRect.right-2, DescriptionRect.top+22}; + + // Backgroud + Rectangle(hdc, DescriptionRect.left, DescriptionRect.top, DescriptionRect.right, DescriptionRect.bottom); + + // Underline + for (i=DescriptionRect.left+1;iRegName, L"")) { + if(getUninstaller(App->RegName, Uninstaller)) { + return TRUE; + } + } + return FALSE; +} + +struct Application* GetDependency(const WCHAR* Dependency) +{ + struct Category* Category = Root.Children; + + while (Category->Next) + { + while (Category->Apps) + { + if(StrCmpW(Category->Apps->RegName, Dependency) == 0) + return Category->Apps; + Category->Apps = Category->Apps->Next; + } + Category = Category->Next; + } + return NULL; +} + +LRESULT CALLBACK +WndProc (HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) +{ + static RECT DescriptionRect; + struct Application* AppToInstall; + WCHAR InstallDep[260]; + WCHAR InstallDepBuffer[260]; + WCHAR Title[260]; + + switch (Message) + { + case WM_CREATE: + { + if(!SetupControls(hwnd)) + return -1; + ShowMessage(Strings[IDS_WELCOME_TITLE], Strings[IDS_WELCOME]); + } + break; + + case WM_PAINT: + { + PAINTSTRUCT ps; + HDC hdc = BeginPaint(hwnd, &ps); + HDC BackbufferHdc = CreateCompatibleDC(hdc); + HBITMAP BackbufferBmp = CreateCompatibleBitmap(hdc, ps.rcPaint.right, ps.rcPaint.bottom); + SelectObject(BackbufferHdc, BackbufferBmp); + + FillRect(BackbufferHdc, &ps.rcPaint, CreateSolidBrush(RGB(235,235,235))); + DrawBitmap(BackbufferHdc, 10, 12, hLogo); + DrawDescription(BackbufferHdc, DescriptionRect); + + BitBlt(hdc, 0, 0, ps.rcPaint.right, ps.rcPaint.bottom, BackbufferHdc, 0, 0, SRCCOPY); + DeleteObject(BackbufferBmp); + DeleteDC(BackbufferHdc); + EndPaint(hwnd, &ps); + } + break; + + case WM_COMMAND: + { + if(HIWORD(wParam) == BN_CLICKED) + { + if (lParam == (LPARAM)hProfButton) + { + DialogBox(GetModuleHandle(NULL), + MAKEINTRESOURCE(IDD_PROF), + hwnd, + ProfDlgProc); + } + if (lParam == (LPARAM)hDownloadButton) + { + if(SelectedApplication) + { + /* install dependencies */ + if(StrCmpW(SelectedApplication->Depends, L"")) + { + AppToInstall = SelectedApplication; + SelectedApplication = GetDependency(SelectedApplication->Depends); + if (SelectedApplication) + if (!IsApplicationInstalled(SelectedApplication)) + { + LoadString(GetModuleHandle(NULL), IDS_INSTALL_DEP, InstallDep, sizeof(InstallDep) / sizeof(WCHAR)); + LoadString(GetModuleHandle(NULL), IDS_WINDOW_TITLE, Title, sizeof(Title) / sizeof(WCHAR)); + _snwprintf(InstallDepBuffer, sizeof(InstallDepBuffer) / sizeof(WCHAR), InstallDep, SelectedApplication->Name, AppToInstall->Name, SelectedApplication->Name); + if (MessageBox(hwnd, InstallDepBuffer, Title, MB_YESNO | MB_ICONINFORMATION) == IDYES) + { + DialogBoxW(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDD_DOWNLOAD), 0, DownloadProc); + } + } + SelectedApplication = AppToInstall; + } + + /* download and install the app */ + DialogBoxW(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDD_DOWNLOAD), 0, DownloadProc); + + /* install req. hacks to get it working */ + if(StrCmpW(SelectedApplication->PostInstallAction, L"")) + { + AppToInstall = SelectedApplication; + CopyMemory(SelectedApplication->Location, SelectedApplication->PostInstallAction, sizeof(SelectedApplication->Location)); + DialogBoxW(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDD_DOWNLOAD), 0, DownloadProc); + SelectedApplication = AppToInstall; + } + } + else + ShowMessage(Strings[IDS_NO_APP_TITLE], Strings[IDS_NO_APP]); + } + else if (lParam == (LPARAM)hUninstallButton) + { + if(SelectedApplication) + { + WCHAR Uninstaller[200]; + if(StrCmpW(SelectedApplication->RegName, L"")) { + if(getUninstaller(SelectedApplication->RegName, Uninstaller)) + startUninstaller(Uninstaller); + } + } + } + else if (lParam == (LPARAM)hUpdateButton) + { + ShowMessage(Strings[IDS_UPDATE_TITLE], Strings[IDS_UPDATE]); + } + else if (lParam == (LPARAM)hHelpButton) + { + ShowMessage(Strings[IDS_HELP_TITLE], Strings[IDS_HELP]); + } + } + } + break; + + case WM_NOTIFY: + { + LPNMHDR data = (LPNMHDR)lParam; + WCHAR Uninstaller[200]; + + if(data->code == TVN_SELCHANGED) + { + BOOL bShowUninstaller = FALSE; + if(data->hwndFrom == hCategories) + { + struct Category* Category = (struct Category*) ((LPNMTREEVIEW)lParam)->itemNew.lParam; + CategoryChoosen (hApps, Category); + } + else if(data->hwndFrom == hApps) + { + SelectedApplication = (struct Application*) ((LPNMTREEVIEW)lParam)->itemNew.lParam; + if(SelectedApplication) + { + ApplicationText[0]=L'\0'; + if(StrCmpW(SelectedApplication->Version, L"")) { + StrCatW(ApplicationText, Strings[IDS_VERSION]); + StrCatW(ApplicationText, SelectedApplication->Version); + StrCatW(ApplicationText, L"\n"); + } + if(StrCmpW(SelectedApplication->Licence, L"")) { + StrCatW(ApplicationText, Strings[IDS_LICENCE]); + StrCatW(ApplicationText, SelectedApplication->Licence); + StrCatW(ApplicationText, L"\n"); + } + if(StrCmpW(SelectedApplication->Maintainer, L"")) { + StrCatW(ApplicationText, Strings[IDS_MAINTAINER]); + StrCatW(ApplicationText, SelectedApplication->Maintainer); + StrCatW(ApplicationText, L"\n"); + } + if(StrCmpW(SelectedApplication->Licence, L"") || StrCmpW(SelectedApplication->Version, L"") || StrCmpW(SelectedApplication->Maintainer, L"")) + StrCatW(ApplicationText, L"\n"); + StrCatW(ApplicationText, SelectedApplication->Description); + ShowMessage(SelectedApplication->Name, ApplicationText); + if(StrCmpW(SelectedApplication->RegName, L"")) { + if(getUninstaller(SelectedApplication->RegName, Uninstaller)) { + bShowUninstaller = TRUE; + } + } + } + } + if (bShowUninstaller) + showUninstaller(); + else + hideUninstaller(); + } + } + break; + + case WM_SIZING: + { + LPRECT pRect = (LPRECT)lParam; + if (pRect->right-pRect->left < 520) + pRect->right = pRect->left + 520; + + if (pRect->bottom-pRect->top < 300) + pRect->bottom = pRect->top + 300; + } + break; + + case WM_SIZE: + { + int Split_Hozizontal = (HIWORD(lParam)-(45+60))/2 + 60; + int Split_Vertical = 200; + RECT Rect; + + ResizeControl(hCategories, 10, 60, Split_Vertical, HIWORD(lParam)-10); + ResizeControl(hApps, Split_Vertical+5, 60, LOWORD(lParam)-10, Split_Hozizontal); + SetRect(&Rect, Split_Vertical+5, Split_Hozizontal+5, LOWORD(lParam)-10, HIWORD(lParam)-50); + DescriptionRect = Rect; + + MoveWindow(hHelpButton, LOWORD(lParam)-50, 10, 40, 40, TRUE); + MoveWindow(hUpdateButton, LOWORD(lParam)-150, 10, 40, 40, TRUE); + MoveWindow(hProfButton, LOWORD(lParam)-100, 10, 40, 40, TRUE); + if(IsWindowVisible(hUninstallButton)) + MoveWindow(hDownloadButton, (Split_Vertical+LOWORD(lParam))/2, HIWORD(lParam)-45, 140, 35, TRUE); + else + MoveWindow(hDownloadButton, (Split_Vertical+LOWORD(lParam))/2-70, HIWORD(lParam)-45, 140, 35, TRUE); + MoveWindow(hUninstallButton, (Split_Vertical+LOWORD(lParam))/2-140, HIWORD(lParam)-45, 140, 35, TRUE); + } + break; + + case WM_DESTROY: + { + DeleteObject(hLogo); + if(Root.Children) + FreeTree(Root.Children); + PostQuitMessage(0); + return 0; + } + break; + } + + return DefWindowProc (hwnd, Message, wParam, lParam); +} + +INT WINAPI +wWinMain (HINSTANCE hInstance, + HINSTANCE hPrevInst, + LPTSTR lpCmdLine, + INT nCmdShow) +{ + int i; + WNDCLASSEXW WndClass = {0}; + MSG msg; + + InitCommonControls(); + + // Load strings + for(i=0; i +#include + +int main() +{ + + HKEY hKey; + DWORD dwVal = 1; + DWORD dwSize = MAX_PATH; + DWORD lpdwDisposition = 0; + CHAR szBuf[MAX_PATH]; + + printf("%s", "Setting Diablo 2 commandline parameters to -w -glide..."); + + if (RegCreateKeyExA (HKEY_CURRENT_USER, + "SOFTWARE\\Blizzard Entertainment\\Diablo II Shareware", + 0, + NULL, + 0, + KEY_ALL_ACCESS, + NULL, + &hKey, + &lpdwDisposition)); + { + strcpy(szBuf, "-w -glide"); + + RegSetValueExA(hKey, "UseCmdLine", 0, REG_DWORD, (LPCSTR)&dwVal, sizeof(dwVal)); + RegSetValueExA(hKey, "CmdLine", 0, REG_SZ, (LPCSTR)szBuf, strlen(szBuf)+1); + + RegCloseKey(hKey); + printf("%s", "done."); + + } + + return 0; +} diff --git a/reactos/base/applications/downloader/resources.h b/reactos/base/applications/downloader/resources.h new file mode 100644 index 00000000000..172ed9a4c1f --- /dev/null +++ b/reactos/base/applications/downloader/resources.h @@ -0,0 +1,71 @@ +/* Icons */ +#define IDI_MAIN 0x0 +#define IDI_UPDATE 5000 +#define IDI_HELP 5001 +#define IDI_PROF 5002 +/* Bitmaps */ +#define IDB_UNDERLINE 0x100 +#define IDB_LOGO 0x101 +#define IDB_DOWNLOAD 0x102 +#define IDB_UNINSTALL 0x103 +#define IDB_TREEVIEW_ICON_0 0x900 +#define IDB_TREEVIEW_ICON_1 0x901 +#define IDB_TREEVIEW_ICON_2 0x902 +#define IDB_TREEVIEW_ICON_3 0x903 +#define IDB_TREEVIEW_ICON_4 0x904 +#define IDB_TREEVIEW_ICON_5 0x905 +#define IDB_TREEVIEW_ICON_6 0x906 +#define IDB_TREEVIEW_ICON_7 0x907 +#define IDB_TREEVIEW_ICON_8 0x908 +#define IDB_TREEVIEW_ICON_9 0x909 +#define IDB_TREEVIEW_ICON_10 0x910 +#define IDB_TREEVIEW_ICON_11 0x911 +#define IDB_TREEVIEW_ICON_12 0x912 +#define IDB_TREEVIEW_ICON_13 0x913 +/* Dialogs */ +#define IDD_DOWNLOAD 0x100 +#define IDD_PROF 6000 +/* Controls */ +#define IDC_PROGRESS 0x1000 +#define IDC_STATUS 0x1001 +#define IDC_REMOVE 0x1002 +#define IDC_DOWNLOAD_FOLDER_EDIT 0x1003 +#define IDC_CHOOSE_BUTTON 0x1004 +#define IDC_UPDATE_SERVER_EDIT 0x1005 +#define IDC_DELINST_FILES_CHECKBOX 0x1006 +/* Strings */ +#define IDS_WINDOW_TITLE 0 +#define IDS_WELCOME_TITLE 1 +#define IDS_WELCOME 2 +#define IDS_NO_APP_TITLE 3 +#define IDS_NO_APP 4 +#define IDS_UPDATE_TITLE 5 +#define IDS_UPDATE 6 +#define IDS_HELP_TITLE 7 +#define IDS_HELP 8 +#define IDS_NO_APPS 9 +#define IDS_CHOOSE_APP 10 +#define IDS_CHOOSE_SUB 11 +#define IDS_CHOOSE_CATEGORY 12 +#define IDS_CHOOSE_BOTH 13 +#define IDS_XMLERROR_1 14 +#define IDS_XMLERROR_2 15 +#define IDS_DOWNLOAD_ERROR 16 +#define IDS_VERSION 17 +#define IDS_LICENCE 18 +#define IDS_MAINTAINER 19 +#define IDS_APPS_TITLE 20 +#define IDS_CATS_TITLE 21 +#define IDS_CHOOSE_FOLDER 22 +#define IDS_NOTCREATE_REGKEY 23 +#define IDS_DOWNLOAD_FOLDER 24 +#define IDS_UNABLECREATE_FOLDER 25 +#define IDS_UPDATE_URL 26 +#define IDS_INSTALL_DEP 27 +/* Tool tips */ +#define TTT_HELPBUTTON 50 +#define TTT_UPDATEBUTTON 51 +#define TTT_PROFBUTTON 52 +/* Other */ +#define STRING_COUNT 20 +#define MAX_STRING_LENGHT 0x100 diff --git a/reactos/base/applications/downloader/resources/0.bmp b/reactos/base/applications/downloader/resources/0.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e31ccefe73705c02c8be8d33e3ce0fd0af4754e9 GIT binary patch literal 822 zcmZ?rHDhJ~12Z700mK4O%*Y@C7H0s;ACiM$hyVk_e^g*QC1cKsji_Sycr3+Mik%_h zi)%jr_=Zm%Ob)2N`tmZHC3#A1!Iz)ifeGWJf$AHtugaW%5rfGX=wEry~qOX@E!Z@jvSZ+oJ^{xp-*^%b{P zIIk#CY72t94WgcHmLCYs@#k0)!o4PncXJ%y&LsXlDKh(W(l5=4+ubc*?+I}miuzf8 z>G#E^tZD+c=gaPK$}r5v1?c(A|t#N7Ee zcgL=6R%!`^`xiYts~opIIGulF=EO@I=UmxtF*!ACAxe0n#T?K(yC0uhedln?u_coA mUYPNPseb#z({XECk==l%2AK;q-)KU7_#%96KvqvMJp%yX)*;6L literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/1.bmp b/reactos/base/applications/downloader/resources/1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b5d584bf20682e940a6727526d9d288ff20a00c8 GIT binary patch literal 822 zcmZ?rHDhJ~12Z700mK4O%*Y@C7H0s;U+0BjhyVk_e-Kk^2F{4(>5<9AZqg0X-NxQx?s-Uy?Y-$dW5X&{rmSD zX0*5as4OpVJ~X@Yz!5 zzr8VVORdk|-lTiSHhy{g{Nc3==ML|E^5h9b{iiq2dqZ^h^(Jj?44D~kx-8%2!phdO z%bLzCZn%AD?eCx8ZXH^;uq@{D+m{gahZgs(tO&ZhfAQgk?Hiht_D-+9xT5*o;;Iv~ z@()cf+A*Q{$eilsMV{+Biy-P376l!elK1)blV9JzUf8;5-^84IJ7?V9GV$`N=4~xe z)8mY0#2EoS)gNI3QQs4+b8ddwÏKe_Yx)Ry-bx4t>I@#^}%B?TVyGwf$3noW;2 z1bV;2TM44R%TM*poPs+$=lpne=f{H+f1aNE`QXIq#Z8NH-R5UF%ucpklw}7}@1qP+ zKO@x%7&1p@SA2VL^8cr2|6gAI|N8o;+ecSdhAzo>Uta9FFw+j`o(bVb5cT`!bu2G* zKe@Q&&AlssKRy5d<;DNcFaCae|M1N2(+lhNOw2nttq2$|i!0(G>Ve_e6Qpx&R>{}5 z&)z+`{rla+|9^k~|M&0n%Lk`cOGV^Dq=(b9a!=37J3J|Eb(v33 pkk*046VVhyxIl+(>M5NRZ4L~IP9K#?F%~Q8(>}d^j#V*{f&hdJIMDzA literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/10.bmp b/reactos/base/applications/downloader/resources/10.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d0825e8fb7960913de3052c6650fc4bca54283e0 GIT binary patch literal 824 zcmbu6v1)@*7=>*+7drM4@&u)G_dZ9TK|&IO=&X_@QN$%78In=V5|XHmrC^kxi$)}a znF4tLp*`GNMA|f=^oM)7T)%Vv|6HG*A8!~^57=v1cVFv@xhMD6_#WNTMJ}*?{JVC$ z-3zJX@p#b;4A>+|w%aWZXCy^YW>$*QB6b{1>Sg+U9b=@@0)oS%h%5fZ;1@A!Pqay)BL)o@%Sr*2ll9ET?X0zFDw=v9YHtYBMC7;n{8fMX literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/11.bmp b/reactos/base/applications/downloader/resources/11.bmp new file mode 100644 index 0000000000000000000000000000000000000000..94bd89c385442d243bf695c5c9a7cee665c20942 GIT binary patch literal 1080 zcmZvaTTByK7{^D~xQQlS*caafpNKCe-d1Bs3?{zSWK(FVwpEI(i6}yAFSH665o;3_ z6^v1lwulmpRuNDvakVv#LLl2R^~?K(x~ z=W>1*1p>h$sX|_I!dPgd`{`zyrdwOuTA!Ah&5kmwwMl2t-`TZCT0-)E$ET*HY97|t z+k4)=?%iH@B)F_h99ejI2bNqF&i-xQAFXJrj$X5vaUkp9Cta?=t<5!DRvI*$=Db8Z zCAJ6?>4~wXFmaAU>>Af`tRFRj#MqWh{AEso&*y_yp94o*D{3FqviXGtA$@*s0r8N? zq*XIBGrh|#VrGr2fM*F$6#vqImDY4T>>Ncxsu8i7-N?S?gnQ%-4(qiH;kkd7>!j&+ z)w3&O6~is)m>Ndo#{palG~=H(6Ef;5QFOZl@%ySkDf&T4yW#PULzSc9a8N>_aMeL& zmMuIp?Pl00YYw(zL;nfHb!oA==@{y|MzAfT2!Ce$4{Glq&yV}O-+1C7+bv5gE-9{M zS=RIHc{}Ruk8r_Ug-+)XBzf1dTG@asY&IrSRiAKS2(RkqsmP#Mp*8Z-?_`Po6P_N&fdd>8o_Qb^1I*sXp&0&DA)m)@whJw?-lvlXB7-VzKWiw6ZRCE+9 zb?QdL5vF~p)S~G{flXbaC@E%B+=t>#22#|&b6z*G&-{(B3XOf5@ zKF8R4n6Wp2M2KZ?f)K*=eY@5W57+`gkmfhKLKJnscI4InkYp5{XU7qYNJb3fAS0F$ zC6N^>cnpt~<~O*wmlJleK^zSDu2&SG?a8kHZcAob}WIvFBrv*GqFK>Nl7awl2LL0gn!uQt}_{?PVw zm|XaR0(%{ZAp@k2<)}_W*JwXFKRG~3PJ$FAgSM%*^qa@+aLkNgf3ti&hth7u#QY4% z-4qbj2~dlAOMk4b08?H!COorvH2fTjmleqA)QCMepw9-;q<~sWxAgOWi0Zh4MprjR z=00QEJBOU^GCUjWN3?-`Q+X<=O|z+A(O-j&P=^lGUIohT_TSm~>;BT?zixN_gwyd} Hadw11#L_|t literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/13.bmp b/reactos/base/applications/downloader/resources/13.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bfaa9c0e56849a76a9ef24e6eb9fdbf019d31092 GIT binary patch literal 1080 zcma))OD_Xa6vv0y*@#bIX<;pP#NGyFVZ}G#8wgd?7oWhGPV2F-kf=vhQm=>vZIHAT zp%iJ_NlSGwolcK?E_X7m1~>WNbMBq{KfiNtrn{%3fup0H%&kOC->TzUNXBvX?di{_45 z_bKz3qnRJt+oflBj}B-&4WGfn@)87sK^o1z>KyxI{A@03@Ue!R%>u@1k9m!L#y^Ri z8T`NcXEn_Hmwevf|Mh;%PdGZ`N3Y@rzn0(Xu(nO|{1AD2H}7^Hlc;V6x8K?Q3yM;c zZ*$p4$a!5_@+tnn#@qhUVL5Vn4!3s+h+SV9_rFgjYw~SQzCijl2J)(f{iaf>3Vz?9 z1yK0yKayp+;#}`QzhbdiIzyol_nV}}1<*7N?vnSAd(J_rRDwB=2;&puqoipL^WTJi zwOE8`JO=4Z26SDgcNKkJMUaFpLGl#B(FebC~qAH%}h`iUVcQ)B_#-@87?p7p^Vcd3fp0LreFZIC$*%!982=-n;kf z*Ds(fR`ozFK=lt^yqU3X*W9fKuk2a=>h-Oziw{4xbV19PT^vun-6`ObDOhLr&*4BiBQ}d6` zt+}vy=Jxg^;ziD%gd{)tLxz4U~FtGDJeO7 z_H110f#Tue;Xudq_V%t`z1rK`TU}kfpr8Pc`fuO90kr^K-qh4&Z*Q-ts8~=^^z8X_ zJX(JJ`qkdv?&{_i8yCBAR08u^g!7!J~(Gw5;E>arfRmKr2q2I<cfbrqWHv%f~N&^5CH+7u= literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/4.bmp b/reactos/base/applications/downloader/resources/4.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5df366dd321ba1f05bf24233aedd4fd2f2ee7a4c GIT binary patch literal 822 zcmbV}O-lk%6ow~S2Q9;2(5h9q3O{DXc4?NOq68ug5~3UNW73Ue{ehqmK?>X$1#WfS zZ)oGvtqVb1DfDh-$t)oK+!l}Zf;1AIE2?)7@@c6&G+ zP9_t}vN#c-TwV{06^jKr&~iK;)6H!zF+Q100)Po$DCGH^&*!7jh@ldRL_8h`BVZ;1 zrU%I9FNDwKEHaD5qSNWn%H@H%2|UjR0497UbFSX+7njXugg*=!YcqpbNSSE{Oe0|E zepC13^`H+6_z#5d_xrQijLRE_;l@6n&y6L|Zx?>KTu!G`kH-V^L)>b${>OhgSMK)R OeO{iQ{yy*HL-!pLj!icJ literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/5.bmp b/reactos/base/applications/downloader/resources/5.bmp new file mode 100644 index 0000000000000000000000000000000000000000..fd5099eded63601871b9b7fdc3fa5a771ebf6696 GIT binary patch literal 822 zcmbV}TWHf@6vs2x;bjQQKsJU7>cf20!BBiqhTx0N3)_RT7a59z;EQ|kLGT8G1DOmI z?2vYww{^A(8(x@}xx}v5>9%(3Elrj-iOJd|?YA~*)9KkFbIdnC{@>x`e}3mAU%uv( zO_kWnYJ%7Rd+VQFfz__~7}RIC7~3!~?AQM;2ffhfn5ci{+T2f6Sa48vA5r%lZ?sR0 z(BitOO~aFz1wTJF=Mu8ARw^$ofgpiLFrjp4II!As?BfhL@ob@oNk2_xEUff`mu-UL z5R`W-5lR5GI%ka*la*kQ+RsU!(z$!2&>7{9_{eH!@Wgk@Obc!~?^f~vm@K%#LoYZF zXb~Ho-c5ud{*?o-7@fYK5P$@1mG7cO@J(N4_PgU7oxx4c5D1d0w*;6_TF2jr^Lt#e z?L_2am}?8Bj!!WM19XEsUi01yX3cnb+t=k&8}lozxS5qNMffYxpY37pbcj6@;!cIw z=4s}DpWf%A_Ik)&6Y;hD0I%GdPj{u{ZdU2$lrC1jla#I}(pSlaj+k(GDtYt=17nT( zwS%5Vq}an}ts?Rx&7R3y7Zx82==QwSGMRWLqH{5^%}?#Lc@4gUh}I8z@tkUx3Y4aQ z&S`c<8<5n8Y_@fZ9z)tSMyj)UI(-R)PcCY31vi5!f4(S`${$c^1nF;brQVEsc9ME2 zsT~2Ts*eE7;2}Pl0ICJQdNZ^4K*gGx zAOvIpU4^E;y}cbM2oE0s%K1H*WOw^Z*ScQa#*iBGm)k1_2QDFdjM$ls$a(2#_Qa H0n;-8-_=#w literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/7.bmp b/reactos/base/applications/downloader/resources/7.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1c8007b117d1675bdd79c617728a92a080dab064 GIT binary patch literal 822 zcmaiu%}T>i5QQTy-3V@6y7US904@bzMqEg-E2)*J3zcp}i$4+ZCvMW(RB6RDlq!PS zL|j-AS_P|V5(qXB2ztoKC8Pl_bBDPz-#K?CrV@i(a1zMlxWj*UfEx|^9OffKbg98{ zPf9*BIY#k%r~dqRKvwqGVC{g1~OX6WnUQDQXQc+Xq%ow*v-S zA;=$7Fq)>9E0-vs^?jc{rA!j25b62Ukto)$Zx|dV`|CnchG$VO#X5thRWYTwe`xFp z0_yP2%$8usaV*>Jn&ziroR!YWnKC1(K=ZrTJ3Ki?;ks_C{f_0)VgJG~EFph3^*j$k z2GBIK%uABQnydh6+IE=72v0j`MkMHWz6|8Z0>IETEen}BqoA)NFaacq9fciY>t84K BaXbJ3 literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/8.bmp b/reactos/base/applications/downloader/resources/8.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e30064272fd41a97b138de957e3b50c225ecb587 GIT binary patch literal 822 zcmZ?rHDhJ~12Z700mK4O%*Y@C7H0s;U+0BjhyVk_e~Q8R2j3WC&H>T0_rC}l22=x7 zdEnlUgAYLrJX-$z`E%##2cVkeSAJ9;{Wbsk-z%?vhC#M zejk2>-4=-Az4v|^E_!dY_+$5(A2ToioO$WzjEg@owLlbax%s{S%oo>H@BP<*sy^~< z`o$m9E_|N~MCZO8dhi42Fkm=9yboj_c<@7Y#xtwMuX;~?@m=>mX6wf(=e_~aFTSWKw}~5 zApt(;+$YJ2kEAC*$>06XeZ_0V>Cb#tzs}wDE_K`6bvM2M6`#Hbbq`P%#0zuJeH80| z=)dY^-NE-7GoAu%l$h{n`q_^_#Sh=0#~nn=ymKF2mOM?{`bxa-zDV!=>1VJjhByqO rWykHWsheNOO}IDh^n0u(Llh%xIduQ)mYbgmDn{0V=0RjLNn!&4R40Oq literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/9.bmp b/reactos/base/applications/downloader/resources/9.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1e28d936e2bd036696932e328b6b9954aa2f5a4e GIT binary patch literal 824 zcmbtQ&nts*82_@819Ef~N*XCm?+z}zVMGp+QC!u^a-cZSSZiZjb9iHG^KKzO=AuTE z8Z$1;i3hq2mUx#6f7(7Mv=PU zD)bH_xWNo6Bs5sDAfsapy>@sa{J0}bi7?@Etw4$yXbE~jUV0fBuMMkL3 z%gE)u3%q!6-v(Io2W!FTEZPQ9Zh~ZkZ3Y7l#18pBXPLr2^br<(3aPxAZLqsgC2>V& ze5aKN{P6e<7M-B@6*Tpsf0Dqj%=qFC>w~qFM2h>R;k3N&WUZ1=IXcI7@^`RS<%dD- J%s=&veF7ImWL^LO literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/download.bmp b/reactos/base/applications/downloader/resources/download.bmp new file mode 100644 index 0000000000000000000000000000000000000000..09ff0a35183eb3c856996e634aef9e4f5acff51c GIT binary patch literal 13914 zcmeHL`%_g_6t)=?XGer7 zJ9qj9`g(eMI=YaHTP>|On{PBXHWgKtjosmRsvxcYT3usZJviV)3Jj3IV-_-tOuYbC zUs@B`LBsb4?+@G^xZRHpf}PUd+SaOR(KKGKt*y1)>)~`ZbaKp+yz=6@n%buN2Jj&T z21wn8y4{bt&>-)oQC&iOq3hS)?(OP9{88WBPi$ML3ftS4zp`xKy9ui`n&!5fx4?%K z7$8v?v5Bw^p>qFhrwHQqh4UG31Mw5kt%yCo*(&IQ{;-lwW^{uh5_qk;%@^z~TBe-TuF>XYjU zld6M|qsh%-PMrrLy40`5xz)5a3Gm{>e_x>g`9F5-SbIDB(BKelSC3#Kb}0B$rc42J z`m|}=z6k?IfB_Ryzppnie&FUU0uDrEj9~;EfmGZsq|4piO-xMSxr2j4;^{Nr@7)It zZcCOj{iI>Cl@%}mV<<4ekc^N7Fr+>)JTx@>&|2@}{oa~m7MB7hT?w?T4Y6w2YSp;a zqx1Osx?@xKxDVVDhE87(nKp$f(kY!D}D8*1+%bL(Ra0VfRCQ^qsIzoNMf=f2%f{!l6Dme1yf#8T4rOT z`{IVbww6}XfBfh#7-ADq*6?)XIhecy{}p}gclDxEA<-?VuNMZG7p|XB>W4Hi9BT$7RgC0`w zkr&X6&yZl^j}1Za9G;f6iz){^F0rHyY2v4YNt@{BBR?^7$-kWyV3=rx#Ko3c`-9#m z+KWG}++&vIqsU!rUa;Q0cmpyuq1<2B%KSmwT?*gXqIxrac}_!xF%}JZOAFX%^=eW= z%aw%!OdMF43qAobM7U7vkXG<%B6`rx4NX|O*k81{fY&$5b9h?P?q|zB10E|1XC)Q} z>N7tbwoqol;XNOv^QgPO*JkgEpES9FwI@HW*gZ2paD0}J*#%!k-dY7RRrpU+uYL36Abi1k56&&#3Al{Gbvg`GejcJ@FF@F_;Vj;699A`Q3}`{g9<(!1URF~f%j(3 z0v^F+Mwv(uG~?|)_0jn00FWDSiGgu82{25=2uT1#g7~pq^+nS54DFTk+AC?=%c`DA zw8cf=Iu}JPD2VtVKYT`3fSJnEB;_kzJLeIrQO7o?#WtnJHl`{YR5SN`B$Ooa3I((w zXK-bO2!{ya4c)K62Y^Z$(HNrO(@~Dw6!h>Ku+%XmqsSWe9d;AFRpBfnB=3^AUEs+O z!VW!XD5sc?y+f+dQxV32i0cG~*xkn5>v$iSDnkT5YonP*EkYX?u@H2sw#uzoxu_t@ zF>lA53t_XeLuO_KD9)~WHStTd$ogbOq>JgUg*1hx8&VFwA!q3D#aT>q5$dPDAAyfX zuZP$U%n%*rD0++oDKbu3Bcm)slD?lov5KC+xk<;J4E^Pfz{Y^vsG^PcKJ~EMpcM{~Bw^8I*U3 z_=m;rKp5#Q6+LKh;9lyv6d?KcdN8RH^0g66x|S0jQ?LwNoL!JOEc;CxH<32L1TGn} z3nVqz!up|e2afTo2!Nv#pFVKGgRK|vodG#gYcGFZ5{GiPFn`y)3*ob~Lf=W>JR{9- za`Ni`Dn|$lu4IUnAjm8%qe=*JG#a)fO-KSnyh4u7_g=xxVM$SpbN;URPjY0JzQsoE zZ=JGk+-Y5{8_7OGZNaflHw0XpF%)rTltd$mkC84(nvevD7@{04FNrRMk4O#FfvNBXWuFaahnrTEv-A5{)E2M!F% zrg|fCG%;z_$a92y0;)Ir-X-G9D2YZAA0u6oG$9EPF(jU&Nl9MMnj;Zgvgr9DAYSV% z&&oNH`1bXDVSlDsl%v$1s^spAiJj%Yc9i_mR`hdg{^6Us2X18V(`4Z7b<(#>jK6z7 zlXV$vOazdl@w=SSOn2(uXAL#U&veGvk}+}wRK#qVM0XYKC7lFS4^A)Nx literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/help.ico b/reactos/base/applications/downloader/resources/help.ico new file mode 100644 index 0000000000000000000000000000000000000000..e0373ec8db852bb15805d4765705a5d9054763bd GIT binary patch literal 9774 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 literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/logo.bmp b/reactos/base/applications/downloader/resources/logo.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4f10e49d3ef89219dc40f7bec9a329fe1f587a66 GIT binary patch literal 17414 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 literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/preferences.ico b/reactos/base/applications/downloader/resources/preferences.ico new file mode 100644 index 0000000000000000000000000000000000000000..c2b7757040741faffae408f091efdb7de5bf7762 GIT binary patch literal 9774 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 literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/underline.bmp b/reactos/base/applications/downloader/resources/underline.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7facc72707b46d036a8062f874816c620a6661a9 GIT binary patch literal 170 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 literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/resources/update.ico b/reactos/base/applications/downloader/resources/update.ico new file mode 100644 index 0000000000000000000000000000000000000000..82b4a1f986a5704602079d57141cf59bb6c1bc1f GIT binary patch literal 9774 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 literal 0 HcmV?d00001 diff --git a/reactos/base/applications/downloader/rsrc.rc b/reactos/base/applications/downloader/rsrc.rc new file mode 100644 index 00000000000..f504bad5dc7 --- /dev/null +++ b/reactos/base/applications/downloader/rsrc.rc @@ -0,0 +1,40 @@ +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +IDI_MAIN ICON DISCARDABLE "resources/main.ico" +IDI_UPDATE ICON DISCARDABLE "resources/update.ico" +IDI_HELP ICON DISCARDABLE "resources/help.ico" +IDI_PROF ICON DISCARDABLE "resources/preferences.ico" +IDB_LOGO BITMAP DISCARDABLE "resources/logo.bmp" +IDB_DOWNLOAD BITMAP DISCARDABLE "resources/download.bmp" +IDB_UNINSTALL BITMAP DISCARDABLE "resources/uninstall.bmp" +IDB_UNDERLINE BITMAP DISCARDABLE "resources/underline.bmp" +IDB_TREEVIEW_ICON_0 BITMAP DISCARDABLE "resources/0.bmp" +IDB_TREEVIEW_ICON_1 BITMAP DISCARDABLE "resources/1.bmp" +IDB_TREEVIEW_ICON_2 BITMAP DISCARDABLE "resources/2.bmp" +IDB_TREEVIEW_ICON_3 BITMAP DISCARDABLE "resources/3.bmp" +IDB_TREEVIEW_ICON_4 BITMAP DISCARDABLE "resources/4.bmp" +IDB_TREEVIEW_ICON_5 BITMAP DISCARDABLE "resources/5.bmp" +IDB_TREEVIEW_ICON_6 BITMAP DISCARDABLE "resources/6.bmp" +IDB_TREEVIEW_ICON_7 BITMAP DISCARDABLE "resources/7.bmp" +IDB_TREEVIEW_ICON_8 BITMAP DISCARDABLE "resources/8.bmp" +IDB_TREEVIEW_ICON_9 BITMAP DISCARDABLE "resources/9.bmp" +IDB_TREEVIEW_ICON_10 BITMAP DISCARDABLE "resources/10.bmp" +IDB_TREEVIEW_ICON_11 BITMAP DISCARDABLE "resources/11.bmp" +IDB_TREEVIEW_ICON_12 BITMAP DISCARDABLE "resources/12.bmp" +IDB_TREEVIEW_ICON_13 BITMAP DISCARDABLE "resources/13.bmp" + + +#include "lang/bg-BG.rc" +#include "lang/de-DE.rc" +#include "lang/el-GR.rc" +#include "lang/en-US.rc" +#include "lang/es-ES.rc" +#include "lang/fr-FR.rc" +#include "lang/id-ID.rc" +#include "lang/it-IT.rc" +#include "lang/no-NO.rc" +#include "lang/pl-PL.rc" +#include "lang/lt-LT.rc" +#include "lang/ru-RU.rc" +#include "lang/sk-SK.rc" +#include "lang/uk-UA.rc" diff --git a/reactos/base/applications/downloader/structures.h b/reactos/base/applications/downloader/structures.h new file mode 100644 index 00000000000..7aeee667866 --- /dev/null +++ b/reactos/base/applications/downloader/structures.h @@ -0,0 +1,26 @@ + +struct Application +{ + WCHAR Name[0x100]; + WCHAR RegName[0x100]; + WCHAR Version[0x100]; + WCHAR Maintainer[0x100]; + WCHAR Licence[0x100]; + WCHAR Description[0x400]; + WCHAR Location[0x100]; + WCHAR Depends[0x100]; + WCHAR PostInstallAction[0x100]; + struct Application* Next; +}; + +struct Category +{ + WCHAR Name[0x100]; + //WCHAR Description[0x100]; + int Icon; + HANDLE TreeviewItem; + struct Application* Apps; + struct Category* Next; + struct Category* Children; + struct Category* Parent; +}; diff --git a/reactos/base/applications/downloader/xml.c b/reactos/base/applications/downloader/xml.c new file mode 100644 index 00000000000..588f020ba52 --- /dev/null +++ b/reactos/base/applications/downloader/xml.c @@ -0,0 +1,236 @@ +/* PROJECT: ReactOS Downloader + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base\applications\downloader\xml.c + * PURPOSE: Parsing of application information xml files + * PROGRAMMERS: Maarten Bosma, Lester Kortenhoeven + */ + +#include +#include +#include +#include +#include +#include "structures.h" +#include "resources.h" + +BOOL TagOpen; +struct Category* Current; +struct Application* CurrentApplication; +char CurrentTag [0x100]; +extern WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT]; + +void tag_opened (void* usrdata, const char* tag, const char** arg) +{ + int i; + + if(!strcmp(tag, "tree") && !CurrentApplication) + { + // check version + } + + else if(!strcmp(tag, "category") && !CurrentApplication) + { + if (!Current) + { + Current = malloc(sizeof(struct Category)); + memset(Current, 0, sizeof(struct Category)); + } + else if (TagOpen) + { + Current->Children = malloc(sizeof(struct Category)); + memset(Current->Children, 0, sizeof(struct Category)); + Current->Children->Parent = Current; + Current = Current->Children; + } + else + { + Current->Next = malloc(sizeof(struct Category)); + memset(Current->Next, 0, sizeof(struct Category)); + Current->Next->Parent = Current->Parent; + Current = Current->Next; + } + TagOpen = TRUE; + + for (i=0; arg[i]; i+=2) + { + if(!strcmp(arg[i], "name")) + { + MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, Current->Name, 0x100); + } + if(!strcmp(arg[i], "icon")) + { + Current->Icon = atoi(arg[i+1]); + } + } + } + + else if(!strcmp(tag, "application") && !CurrentApplication) + { + if(Current->Apps) + { + CurrentApplication = Current->Apps; + while(CurrentApplication->Next) + CurrentApplication = CurrentApplication->Next; + CurrentApplication->Next = malloc(sizeof(struct Application)); + memset(CurrentApplication->Next, 0, sizeof(struct Application)); + CurrentApplication = CurrentApplication->Next; + } + else + { + Current->Apps = malloc(sizeof(struct Application)); + memset(Current->Apps, 0, sizeof(struct Application)); + CurrentApplication = Current->Apps; + } + + for (i=0; arg[i]; i+=2) + { + if(!strcmp(arg[i], "name")) + { + MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentApplication->Name, 0x100); + } + } + } + else if (CurrentApplication) + { + strncpy(CurrentTag, tag, 0x100); + } + else + MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0); +} + + +void text (void* usrdata, const char* data, int len) +{ + if (!CurrentApplication) + return; + + if(!strcmp(CurrentTag, "maintainer")) + { + int currentlengt = lstrlenW(CurrentApplication->Maintainer); + MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Maintainer[currentlengt], 0x100-currentlengt); + } + else if(!strcmp(CurrentTag, "regname")) + { + int currentlengt = lstrlenW(CurrentApplication->RegName); + MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->RegName[currentlengt], 0x100-currentlengt); + } + else if(!strcmp(CurrentTag, "description")) + { + int currentlengt = lstrlenW(CurrentApplication->Description); + MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Description[currentlengt], 0x400-currentlengt); + } + else if(!strcmp(CurrentTag, "location")) + { + int currentlengt = lstrlenW(CurrentApplication->Location); + MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Location[currentlengt], 0x100-currentlengt); + } + else if(!strcmp(CurrentTag, "version")) + { + int currentlengt = lstrlenW(CurrentApplication->Version); + MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Version[currentlengt], 0x400-currentlengt); + } + else if(!strcmp(CurrentTag, "licence")) + { + int currentlengt = lstrlenW(CurrentApplication->Licence); + MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Licence[currentlengt], 0x100-currentlengt); + } + else if(!strcmp(CurrentTag, "depends")) + { + int currentlengt = lstrlenW(CurrentApplication->Depends); + MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Depends[currentlengt], 0x100-currentlengt); + } + else if(!strcmp(CurrentTag, "postinstallaction")) + { + int currentlengt = lstrlenW(CurrentApplication->PostInstallAction); + MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->PostInstallAction[currentlengt], 0x100-currentlengt); + } +} + +void tag_closed (void* tree, const char* tag) +{ + CurrentTag[0] = 0; + + if(!strcmp(tag, "category")) + { + if (TagOpen) + { + TagOpen = FALSE; + } + else + { + Current = Current->Parent; + } + } + else if(!strcmp(tag, "application")) + { + CurrentApplication = NULL; + } +} + +BOOL ProcessXML (const char* filename, struct Category* Root) +{ + int done = 0; + char buffer[255]; + FILE* file; + XML_Parser parser; + + if(Current) + return FALSE; + + Current = Root; + TagOpen = TRUE; + + file = fopen("downloader.xml", "r"); + if(!file) + { + file = fopen(filename, "r"); + if(!file) + { + MessageBoxW(0,Strings[IDS_XMLERROR_1],0,0); + return FALSE; + } + } + + parser = XML_ParserCreate(NULL); + XML_SetElementHandler(parser, tag_opened, tag_closed); + XML_SetCharacterDataHandler(parser, text); + + while (!done) + { + size_t len = fread (buffer, 1, sizeof(buffer), file); + done = len < sizeof(buffer); + + if(!XML_Parse(parser, buffer, len, done)) + { + MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0); + return FALSE; + } + } + + XML_ParserFree(parser); + fclose(file); + + return TRUE; +} + +void FreeApps (struct Application* Apps) +{ + if (Apps->Next) + FreeApps(Apps->Next); + + free(Apps); +} + +void FreeTree (struct Category* Node) +{ + if (Node->Children) + FreeTree(Node->Children); + + if (Node->Next) + FreeTree(Node->Next); + + if (Node->Apps) + FreeApps(Node->Apps); + + free(Node); +} diff --git a/reactos/boot/bootdata/packages/reactos.dff b/reactos/boot/bootdata/packages/reactos.dff index 03bc4af0424..1cc42cb4156 100644 --- a/reactos/boot/bootdata/packages/reactos.dff +++ b/reactos/boot/bootdata/packages/reactos.dff @@ -41,6 +41,8 @@ base\applications\cmdutils\lodctr\lodctr.exe 1 base\applications\cmdutils\more\more.exe 1 base\applications\cmdutils\xcopy\xcopy.exe 1 base\applications\control\control.exe 1 +base\applications\downloader\downloader.exe 1 +base\applications\downloader\downloader.xml 1 base\applications\dxdiag\dxdiag.exe 1 base\applications\fontview\fontview.exe 1 base\applications\mscutils\devmgmt\devmgmt.exe 1