<directory name="control">
<xi:include href="control/control.rbuild" />
</directory>
+ <directory name="downloader">
+ <xi:include href="downloader/downloader.rbuild" />
+ </directory>
<directory name="dxdiag">
<xi:include href="dxdiag/dxdiag.rbuild" />
</directory>
--- /dev/null
+/* 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 <windows.h>
+#include <commctrl.h>
+#include <shlobj.h>
+#include <shlwapi.h>
+#include <urlmon.h>
+
+#include "resources.h"
+#include "structures.h"
+
+#define NDEBUG
+#include <debug.h>
+
+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;
+ }
+}
--- /dev/null
+<?xml version="1.0"?>
+<group xmlns:xi="http://www.w3.org/2001/XInclude">
+ <installfile installbase="system32">downloader.xml</installfile>
+ <module name="downloader" type="win32gui" installbase="system32" installname="downloader.exe" unicode="yes">
+ <include base="downloader">.</include>
+ <include base="expat">.</include>
+
+ <library>kernel32</library>
+ <library>advapi32</library>
+ <library>ntdll</library>
+ <library>user32</library>
+ <library>gdi32</library>
+ <library>shell32</library>
+ <library>comctl32</library>
+ <library>msimg32</library>
+ <library>shlwapi</library>
+ <library>urlmon</library>
+ <library>uuid</library>
+ <library>expat</library>
+
+ <file>main.c</file>
+ <file>xml.c</file>
+ <file>download.c</file>
+ <file>downloader.rc</file>
+ </module>
+</group>
--- /dev/null
+#include <windows.h>
+#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 <reactos/version.rc>
+
+#include "rsrc.rc"
--- /dev/null
+<tree Version="1"> <!-- Application version this tree is made for -->
+ <category name="Internet & Network" icon="1">
+ <application name="Firefox 1.5">
+ <regname>Mozilla Firefox (1.5)</regname>
+ <licence>MPL/GPL/LGPL</licence>
+ <version>1.5.0.12</version>
+ <description>The most popular and one of the best free Web Browsers out there.</description>
+ <location>http://svn.reactos.org/packages/Firefox%20Setup%201.5.0.12.exe</location>
+ </application>
+ <application name="Firefox 2.0">
+ <regname>Mozilla Firefox (2.0.0.20)</regname>
+ <licence>MPL/GPL/LGPL</licence>
+ <version>2.0.0.20</version>
+ <description>The most popular and one of the best free Web Browsers out there.</description>
+ <location>http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.20/win32/en-US/Firefox%20Setup%202.0.0.20.exe</location>
+ </application>
+ <application name="Opera">
+ <regname>Opera</regname>
+ <licence>Freeware</licence>
+ <version>9.63</version>
+ <description>The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.</description>
+ <location>http://ftp.opera.com/pub/opera/win/963/en/Opera_963_classic_Setup.exe</location>
+ </application>
+ <application name="Thunderbird 2.0">
+ <regname>Mozilla Thunderbird (2.0.0.19)</regname>
+ <licence>MPL/GPL/LGPL</licence>
+ <version>2.0.0.19</version>
+ <description>The most popular and one of the best free Mail Clients out there.</description>
+ <location>http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.19/win32/en-US/Thunderbird%20Setup%202.0.0.19.exe</location>
+ </application>
+ <application name="SeaMonkey">
+ <regname>SeaMonkey (1.1.14)</regname>
+ <version>1.1.14</version>
+ <description>Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, and Composer bundle you will ever need.</description>
+ <location>http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/1.1.14/seamonkey-1.1.14.en-US.win32.installer.exe</location>
+ </application>
+ <application name="Mozilla ActiveX Control">
+ <regname>Mozilla ActiveX Control v1.7.12 (ReactOS special)</regname>
+ <version>1.7.12</version>
+ <description>Essential Component to get ReactOS Explorer's and other applications' Internet Browsing feature running.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/reactos/MozillaControl1712-ReactOS.exe</location>
+ </application>
+ <application name="Off By One Browser">
+ <regname>The Off By One Web Browser</regname>
+ <description>The Off By One Browser is a very small and fast web browser with full HTML 3.2 support.</description>
+ <location>http://offbyone.com/offbyone/images/OffByOneSetup.exe</location>
+ </application>
+ <application name="mIRC">
+ <regname>mIRC</regname>
+ <licence>Shareware</licence>
+ <version>6.35</version>
+ <description>The most popular client for the Internet Relay Chat (IRC)</description>
+ <location>http://mirc.bigchief.dk/mirc635.exe</location>
+ </application>
+ <application name="Samba TNG">
+ <description>This tool allows you to access your Windows shared folders/printers with ReactOS.</description>
+ <location>http://svn.reactos.org/packages/samba-tng.exe</location>
+ </application>
+ <application name="Miranda IM">
+ <regname>Miranda IM</regname>
+ <version>0.7.4</version>
+ <description>Open source multiprotocol instant messaging application - May not work completely.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/miranda/miranda-im-v0.7.4-unicode.exe</location>
+ </application>
+ <application name="Putty">
+ <regname>PuTTY version 0.60</regname>
+ <licence>MIT</licence>
+ <version>0.60</version>
+ <description>A free SSH, Telnet, rlogin, and raw TCP client.</description>
+ <location>http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe</location>
+ </application>
+ </category>
+ <category name="Office" icon="2">
+ <application name="Abiword">
+ <regname>"AbiWord 2.6.4 (remove only)"</regname>
+ <version>2.6.4</version>
+ <description>Word processor.</description>
+ <location>http://www.abiword.org/downloads/abiword/2.6.4/Windows/abiword-setup-2.6.4.exe</location>
+ </application>
+ <application name="OpenOffice 2.4">
+ <regname>OpenOffice.org 2.4.2</regname>
+ <version>2.4.2</version>
+ <description>THE Open Source Office Suite.</description>
+ <location>http://ftp.plusline.de/OpenOffice/stable/2.4.2/OOo_2.4.2_Win32Intel_install_wJRE_en-US.exe</location>
+ </application>
+ <application name="OpenOffice 3.0">
+ <regname>OpenOffice.org 3.0.1</regname>
+ <version>3.0.1</version>
+ <description>THE Open Source Office Suite.</description>
+ <location>http://ftp.tu-chemnitz.de/pub/openoffice/stable/3.0.1/OOo_3.0.1_Win32Intel_install_en-US.exe</location>
+ </application>
+ </category>
+ <category name="Graphics" icon="3">
+ <application name="IrfanView">
+ <regname>IrfanView (remove only)</regname>
+ <version>4.23</version>
+ <description>Viewer for all kinds of graphics/audio files/video files.</description>
+ <location>http://irfanview.tuwien.ac.at/iview423_setup.exe</location>
+ </application>
+ <application name="IrfanView Plugins">
+ <version>4.22</version>
+ <description>Additional Plugins for supporting more file types.</description>
+ <location>http://irfanview.tuwien.ac.at/plugins/irfanview_plugins_422_setup.exe</location>
+ </application>
+ <application name="TuxPaint">
+ <regname>Tux Paint 0.9.19</regname>
+ <version>0.9.19</version>
+ <description>An Open Source bitmap graphics editor geared towards young children.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/tuxpaint/tuxpaint-0.9.19-win32-installer.exe</location>
+ </application>
+ <application name="zeckensack's glide wrapper">
+ <regname>GlidewrapZbag</regname>
+ <version>0.84c</version>
+ <description>glidewrapper needed to run Diablo 2 on ReactOS.</description>
+ <location>http://www.zeckensack.de/glide/archive/GlideWrapper084c.exe</location>
+ </application>
+ </category>
+ <category name="Libraries" icon="4">
+ <application name="Microsoft XML 3">
+ <regname>msxml3</regname>
+ <version>3.0</version>
+ <description>MSXML3 is needed for some MSI Installers.</description>
+ <location>http://download.microsoft.com/download/8/8/8/888f34b7-4f54-4f06-8dac-fa29b19f33dd/msxml3.msi</location>
+ </application>
+ <application name="OLE Viewer and Microsoft Foundation Classes version 4">
+ <regname>mfc40</regname>
+ <version>4.0</version>
+ <description>MFC 4 is needed by some applications</description>
+ <location>http://download.microsoft.com/download/ole/ole2v/3.5/w351/en-us/ole2v.exe</location>
+ </application>
+
+ <application name="Visual Basic 5 Runtime">
+ <regname>vb5run</regname>
+ <version>5.0</version>
+ <description>Visual Basic 5 Runtime</description>
+ <location>http://download.microsoft.com/download/vb50pro/utility/1/win98/en-us/msvbvm50.exe</location>
+ </application>
+
+ <application name="Visual Basic 6 Runtime">
+ <regname>vb6run</regname>
+ <version>6.0</version>
+ <description>Visual Basic 6 Runtime</description>
+ <location>http://download.microsoft.com/download/vb60pro/install/6/win98me/en-us/vbrun60.exe</location>
+ </application>
+
+ <application name="Visual Studio 6 Runtime">
+ <regname>vc6run</regname>
+ <version>6.0</version>
+ <description>Visual Studio 6 Runtime</description>
+ <location>http://download.microsoft.com/download/vc60pro/update/1/w9xnt4/en-us/vc6redistsetup_enu.exe</location>
+ </application>
+
+ <application name="Visual Studio 2005 Runtime">
+ <regname>vc2005run</regname>
+ <version>7.0</version>
+ <description>Visual Studio 2005 Runtime</description>
+ <location>http://download.microsoft.com/download/d/3/4/d342efa6-3266-4157-a2ec-5174867be706/vcredist_x86.exe</location>
+ </application>
+
+ <application name="Visual Studio 2005 Runtime SP1">
+ <regname>vc2005sp1run</regname>
+ <version>7.1</version>
+ <description>Visual Studio 2005 Runtime SP1</description>
+ <location>http://download.microsoft.com/download/e/1/c/e1c773de-73ba-494a-a5ba-f24906ecf088/vcredist_x86.exe</location>
+ </application>
+
+ <application name="Visual Studio 2008 Runtime">
+ <regname>vc2008run</regname>
+ <version>8.0</version>
+ <description>Visual Studio 2008 Runtime</description>
+ <location>http://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140/vcredist_x86.exe</location>
+ </application>
+ </category>
+ <category name="Multimedia" icon="4">
+ </category>
+ <category name="Development" icon="5">
+ <application name="ReactOS Build Environment">
+ <regname>ReactOS Build Environment 1.2</regname>
+ <version>1.2</version>
+ <description>Allows you to build the ReactOS Source. For more instructions see ReactOS wiki.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/reactos/RosBE-1.2.exe</location>
+ </application>
+ <application name="MinGW">
+ <regname>MinGW 5.1.3</regname>
+ <version>5.1.3</version>
+ <description>A Port of the GNU toolchain with GCC, GDB, GNU make, etc.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.3.exe</location>
+ </application>
+ <application name="FreeBASIC">
+ <regname>FreeBASIC 0.18.4b</regname>
+ <version>0.18.4b</version>
+ <description>Open Source BASIC Compiler. The BASIC syntax is compatible to QBASIC.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/fbc/FreeBASIC-v0.18.4b-win32.exe</location>
+ </application>
+ </category>
+ <category name="Games & Fun" icon="6">
+ <application name="ScummVM">
+ <regname>ScummVM 0.11.1</regname>
+ <version>0.11.1</version>
+ <description>SamNMax, Day of Tentacle, etc on ReactOS</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/scummvm/scummvm-0.11.1-win32.exe</location>
+ </application>
+ <application name="Diablo 2 Shareware">
+ <regname>Diablo II Shareware</regname>
+ <version>1.4</version>
+ <description>Diablo 2 Shareware. zeckensack's glide wrapper is req. to run it.</description>
+ <location>http://ftp.freenet.de./pub/filepilot/windows/spiele/diabloiidemo.exe</location>
+ <depends>GlidewrapZbag</depends>
+ <postinstallaction>http://svn.reactos.org/downloads/d2fix.exe</postinstallaction>
+ </application>
+ <application name="Tile World">
+ <description>Nice Clone of Chip's Challenge originally made for the Atari Lynx. Includes free CCLP2 Graphics Pack, so you dont need the copyrighted Original.</description>
+ <location>http://www.muppetlabs.com/~breadbox/pub/software/tworld/tworld-1.3.0-win32-CCLP2.exe</location>
+ </application>
+ <application name="OpenTTD">
+ <regname>OpenTTD 0.6.0</regname>
+ <version>0.6.0</version>
+ <description>Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/openttd/openttd-0.6.0-win32.exe</location>
+ </application>
+ <application name="LBreakout2">
+ <regname>LBreakout2 2.4.1</regname>
+ <version>2.4.1</version>
+ <description>Breakout Clone using SDL libs.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/lgames/lbreakout2-2.4.1-win32.exe</location>
+ </application>
+ <application name="LGeneral">
+ <regname>LGeneral 1.1</regname>
+ <version>1.1</version>
+ <description>Panzer General Clone using SDL libs.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/lgames/lgeneral-1.1-win32.exe</location>
+ </application>
+ <application name="LMarbles">
+ <regname>LMarbles 1.0.6</regname>
+ <version>1.0.6</version>
+ <description>Atomix Clone using SDL libs.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/lgames/lmarbles-1.0.6-win32.exe</location>
+ </application>
+ <application name="WinBoard">
+ <regname>WinBoard 4.2.7b</regname>
+ <version>4.2.7b</version>
+ <licence>GPL 3</licence>
+ <description>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.</description>
+ <location>http://ftp.gnu.org/gnu/winboard/winboard-4_2_7b.exe</location>
+ </application>
+ </category>
+ <category name="Science" icon="11">
+ </category>
+ <category name="Edutainment" icon="12">
+ </category>
+ <category name="Engineering" icon="13">
+ </category>
+ <category name="Tools" icon="7">
+ <application name="7-Zip">
+ <regname>7-Zip 4.57</regname>
+ <version>4.57</version>
+ <description>Utility to create and open 7zip, zip, tar, rar and other archive files.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/sevenzip/7z457.exe</location>
+ </application>
+ <application name="uTorrent">
+ <regname>µTorrent</regname>
+ <version>1.8</version>
+ <description>Small and fast BitTorrent Client</description>
+ <location>http://download.utorrent.com/1.8.2/utorrent-1.8.2.upx.exe</location>
+ </application>
+ <application name="Audio Grabber">
+ <regname>Audiograbber 1.83 SE</regname>
+ <version>1.83 SE</version>
+ <description>A very good CD Ripper/Audio File Converter.</description>
+ <location>http://www.audiograbber.de/files/4898276276/agsetup183se.exe</location>
+ </application>
+ </category>
+ <category name="Drivers" icon="8">
+ <application name="AC97 Driver for VirtualBox">
+ <version>5.10.00.3610</version>
+ <description>Unzip in the "ReactOS" folder then restart ReactOS twice.</description>
+ <location>http://svn.reactos.org/packages/ac97_vbox.exe</location>
+ </application>
+ </category>
+ <category name="Others" icon="8">
+ <application name="Simple Direct Media Layer (SDL) Runtime">
+ <version>1.2.13</version>
+ <description>Needed for many Open Source Games to run. You need 7-Zip or a similar Utility to extract it.</description>
+ <location>http://www.libsdl.org/release/SDL-1.2.13-win32.zip</location>
+ </application>
+ <application name="Simple Direct Media Layer (SDL) Mixer">
+ <version>1.2.8</version>
+ <description>Needed for some Open Source Games to run. You need 7-Zip or a similar Utility to extract it.</description>
+ <location>http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.8-win32.zip</location>
+ </application>
+ <application name="DOSBox">
+ <version>0.72</version>
+ <description>DOSBox is a DOS emulator.</description>
+ <location>http://ovh.dl.sourceforge.net/sourceforge/dosbox/DOSBox0.72-win32-installer.exe</location>
+ </application>
+ </category>
+</tree>
--- /dev/null
+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 "Èçáåðåòå ïðèëîæåíèå, ïðåäè äà íàòèñíåòî êëàâèøà \84Ñâàëÿíå\94. Àêî èìàòå íóæäà îò ïîìîù, íàòèñíåòå âúïðîñèòåëíàòà â ãîðíèÿ äåñåí úãúë."
+ IDS_UPDATE_TITLE "Îáíîâÿâàíå"
+ IDS_UPDATE "Òàçè âúçìîæíîñò âñå îùå íå å ãîòîâà."
+ IDS_HELP_TITLE "Ïîìîù"
+ IDS_HELP "Èçáåðåòå ðàçäåë îòëÿâî, ñëåä òîâà èçáåðåòå ïðèëîæåíèå è íàòèñíåòå \84Ñâàëÿíå\94. Çà äà îñúâðåìåíèòå ñâåäåíèÿòà çà ïðèëîæåíèåòî, íàòèñíåòå êîï÷åòî äî \84Íàïðåä\94."
+ 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
--- /dev/null
+LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL\r
+\r
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Download..."\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12\r
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER\r
+ PUSHBUTTON "Abbrechen", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP\r
+END\r
+\r
+IDD_PROF DIALOGEX 6, 6, 267, 110\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Einstellungen"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ LTEXT "Download Ordner:", -1, 6, 10, 140, 8\r
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP\r
+ PUSHBUTTON "W&ähle...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14\r
+ AUTOCHECKBOX "&Installationsdateien nach dem Setup löschen", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP\r
+ LTEXT "Update Server:", -1, 6, 55, 140, 8\r
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP\r
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15\r
+ PUSHBUTTON "&Abbrechen", IDCANCEL, 207, 90, 54, 15\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+ IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"\r
+ IDS_WELCOME_TITLE "Willkommen im ReactOS Downloader"\r
+ IDS_WELCOME "Bitte wählen Sie links eine Kategorie. Dies ist Version 1.1."\r
+ IDS_NO_APP_TITLE "Keine Anwendung ausgewählt"\r
+ 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."\r
+ IDS_UPDATE_TITLE "Update"\r
+ IDS_UPDATE "Diese Funktion wurde noch nicht implementiert."\r
+ IDS_HELP_TITLE "Hilfe"\r
+ 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."\r
+ IDS_NO_APPS "In dieser Kategorie sind bisher noch keine Anwendungen. Sie können helfen, indem Sie Anwendungen hinzufügen."\r
+ IDS_CHOOSE_APP "Bitte wählen Sie eine Anwendung."\r
+ IDS_CHOOSE_SUB "Bitte wählen Sie eine Unterkategorie."\r
+ IDS_CHOOSE_CATEGORY "Bitte wählen Sie eine Kategorie."\r
+ IDS_CHOOSE_BOTH "Bitte wählen Sie eine Unterkategorie oder eine Anwendung."\r
+ IDS_XMLERROR_1 "XML Datei nicht gefunden!"\r
+ IDS_XMLERROR_2 "XML Datei kann nicht verarbeitet werden!"\r
+ IDS_DOWNLOAD_ERROR "Die Datei konnte nicht heruntergeladen werden.\nBitte prüfen sie, ob eine Verbindung zum Internet besteht."\r
+ IDS_VERSION "Version: "\r
+ IDS_LICENCE "Lizenz: "\r
+ IDS_MAINTAINER "Maintainer: "\r
+ IDS_APPS_TITLE "Anwendungen"\r
+ IDS_CATS_TITLE "Kategorien"\r
+ IDS_CHOOSE_FOLDER "Bitte wählen Sie den Ordner..."\r
+ IDS_NOTCREATE_REGKEY "Registryschlüssel könnte nicht erstellt werden."\r
+ IDS_DOWNLOAD_FOLDER "Downloader"\r
+ IDS_UNABLECREATE_FOLDER "Es konnte kein Ordner mit diesem Namen erstellt werden!"\r
+ IDS_UPDATE_URL "http://svn.reactos.org"\r
+ IDS_INSTALL_DEP "%s wird benötigt um %s ausführen zu können. Soll %s jetzt installiert werden?"\r
+ TTT_HELPBUTTON "Hilfe über den Downloader"\r
+ TTT_UPDATEBUTTON "Noch nicht vorhanden"\r
+ TTT_PROFBUTTON "Konfiguriert den Downloader"\r
+END\r
--- /dev/null
+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
--- /dev/null
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r
+\r
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Download..."\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12\r
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER\r
+ PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP\r
+END\r
+\r
+IDD_PROF DIALOGEX 6, 6, 267, 110\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Preferences"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ LTEXT "Download folder:", -1, 6, 10, 140, 8\r
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP\r
+ PUSHBUTTON "C&hoose...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14\r
+ AUTOCHECKBOX "&Delete installation files after setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP\r
+ LTEXT "Update server:", -1, 6, 55, 140, 8\r
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP\r
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15\r
+ PUSHBUTTON "&Cancel", IDCANCEL, 207, 90, 54, 15\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+ IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"\r
+ IDS_WELCOME_TITLE "Welcome to the ReactOS Downloader"\r
+ IDS_WELCOME "Please choose a category on the left. This is version 1.1."\r
+ IDS_NO_APP_TITLE "No application selected"\r
+ 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."\r
+ IDS_UPDATE_TITLE "Update"\r
+ IDS_UPDATE "Sorry this feature is not implemented yet."\r
+ IDS_HELP_TITLE "Help"\r
+ 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."\r
+ IDS_NO_APPS "Sorry, there no applications in this category yet. You can help and add more applications."\r
+ IDS_CHOOSE_APP "Please choose an application."\r
+ IDS_CHOOSE_SUB "Please choose a subcategory."\r
+ IDS_CHOOSE_CATEGORY "Please choose a category."\r
+ IDS_CHOOSE_BOTH "Please choose a subcategory or an application."\r
+ IDS_XMLERROR_1 "Could not find the xml file !"\r
+ IDS_XMLERROR_2 "Could not parse the xml file !"\r
+ IDS_DOWNLOAD_ERROR "Unable to download the file.\nPlease check your internet connection."\r
+ IDS_VERSION "Version: "\r
+ IDS_LICENCE "Licence: "\r
+ IDS_MAINTAINER "Maintainer: "\r
+ IDS_APPS_TITLE "Applications"\r
+ IDS_CATS_TITLE "Categories"\r
+ IDS_CHOOSE_FOLDER "Please, choose the folder..."\r
+ IDS_NOTCREATE_REGKEY "Could not create the registry key."\r
+ IDS_DOWNLOAD_FOLDER "Downloader"\r
+ IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!"\r
+ IDS_UPDATE_URL "http://svn.reactos.org"\r
+ IDS_INSTALL_DEP "%s is required to run %s. Should %s be installed now?"\r
+ TTT_HELPBUTTON "Get help about the downloader"\r
+ TTT_UPDATEBUTTON "Not yet available"\r
+ TTT_PROFBUTTON "Let you configure the downloader"\r
+END\r
--- /dev/null
+/*\r
+ *Spanish Language resource file\r
+ * Actualizado Javier Remacha 2007-12-01,2007-12-31\r
+ */\r
+\r
+LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL\r
+\r
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Descargar..."\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12\r
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER\r
+ PUSHBUTTON "Cancelar", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP\r
+END\r
+\r
+IDD_PROF DIALOGEX 6, 6, 267, 110\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Preferencias"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ LTEXT "Carpeta de descarga:", -1, 6, 10, 140, 8\r
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP\r
+ PUSHBUTTON "&Seleccionar...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14\r
+ AUTOCHECKBOX "&Borrar archivos de instalación tras la instalación", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP\r
+ LTEXT "Actualizar servidor:", -1, 6, 55, 140, 8\r
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP\r
+ DEFPUSHBUTTON "&Aceptar", IDOK, 147, 90, 54, 15\r
+ PUSHBUTTON "&Cancelar", IDCANCEL, 207, 90, 54, 15\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+ IDS_WINDOW_TITLE "¡Descargar! - Descargador de ReactOS"\r
+ IDS_WELCOME_TITLE "Bienvenido al descargador de ReactOS"\r
+ IDS_WELCOME "Por favor selecciona una categoría de la izquierda. Esta es la versión 1.1."\r
+ IDS_NO_APP_TITLE "Ninguna aplicación seleccionada"\r
+ 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."\r
+ IDS_UPDATE_TITLE "Actualizar"\r
+ IDS_UPDATE "Perdón esta característica no a sido implementada todavía."\r
+ IDS_HELP_TITLE "Ayuda"\r
+ 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."\r
+ IDS_NO_APPS "Perdón, aun no hay ninguna aplicación en esta categoría. Puedes ayudar y añadir más aplicaciones."\r
+ IDS_CHOOSE_APP "Por favor selecciona una aplicación."\r
+ IDS_CHOOSE_SUB "Por favor selecciona una subcategoría."\r
+ IDS_CHOOSE_CATEGORY "Por favor selecciona una categoría."\r
+ IDS_CHOOSE_BOTH "Por favor selecciona una subcategoria o una aplicación."\r
+ IDS_XMLERROR_1 "¡No se a encontrado el archivo xml!"\r
+ IDS_XMLERROR_2 "¡No se ha podido analizar el archivo xml!"\r
+ IDS_DOWNLOAD_ERROR "Imposible descargar el archivo.\nPor favor verifica tu conexión a internet."\r
+ IDS_VERSION "Versión: "\r
+ IDS_LICENCE "Licencia: "\r
+ IDS_MAINTAINER "Mantenido por: "\r
+ IDS_APPS_TITLE "Aplicaciones"\r
+ IDS_CATS_TITLE "Categorias"\r
+ IDS_CHOOSE_FOLDER "Por favor, seleccione la carpeta..."\r
+ IDS_NOTCREATE_REGKEY "No se puede crear la llave del registro."\r
+ IDS_DOWNLOAD_FOLDER "Downloader"\r
+ IDS_UNABLECREATE_FOLDER "¡Imposible crear una carpeta con este nombre!"\r
+ IDS_UPDATE_URL "http://svn.reactos.org"\r
+ IDS_INSTALL_DEP "%s en necesario para ejecutar %s. ¿Desea instalar %s ahora?"\r
+ TTT_HELPBUTTON "Obtenga ayuda acerca de Downloader"\r
+ TTT_UPDATEBUTTON "No disponible todavía"\r
+ TTT_PROFBUTTON "Le permite configurar Downloader"\r
+END\r
--- /dev/null
+LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL\r
+\r
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Téléchargement..."\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12\r
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER\r
+ PUSHBUTTON "Annuler", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP\r
+END\r
+\r
+IDD_PROF DIALOGEX 6, 6, 267, 110\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Préférences"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ LTEXT "Répertoire de téléchargement :", -1, 6, 10, 140, 8\r
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP\r
+ PUSHBUTTON "C&hoisir...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14\r
+ AUTOCHECKBOX "Supprimer les fichiers après l'installation", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP\r
+ LTEXT "Serveur de mise-à-jour :", -1, 6, 55, 140, 8\r
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP\r
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15\r
+ PUSHBUTTON "Annuler", IDCANCEL, 207, 90, 54, 15\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+ IDS_WINDOW_TITLE "Télécharger ! - Téléchargeur de ReactOS"\r
+ IDS_WELCOME_TITLE "Bienvenue dans le Téléchargeur de ReactOS"\r
+ IDS_WELCOME "Veuillez choisir une catégorie sur la gauche. C'est la version 1.1."\r
+ IDS_NO_APP_TITLE "Aucune application selectionnée"\r
+ 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."\r
+ IDS_UPDATE_TITLE "Mise à jour"\r
+ IDS_UPDATE "Désolé, cette fonctionnalité n'est pas encore implémentée."\r
+ IDS_HELP_TITLE "Aide"\r
+ 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."\r
+ 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."\r
+ IDS_CHOOSE_APP "Veuillez choisir une application."\r
+ IDS_CHOOSE_SUB "Veuillez choisir une sous-catégorie."\r
+ IDS_CHOOSE_CATEGORY "Veuillez choisir une catégorie."\r
+ IDS_CHOOSE_BOTH "Veuillez choisir une sous-catégorie ou une application."\r
+ IDS_XMLERROR_1 "Impossible de trouver le fichier xml !"\r
+ IDS_XMLERROR_2 "Impossible d'analyser le fichier xml !"\r
+ IDS_DOWNLOAD_ERROR "Impossible de télécharger le fichier.\nVeuillez vérifier votre connexion Internet."\r
+ IDS_VERSION "Version: "\r
+ IDS_LICENCE "Licence: "\r
+ IDS_MAINTAINER "Maintainer: "\r
+ IDS_APPS_TITLE "Applications"\r
+ IDS_CATS_TITLE "Catégories"\r
+ IDS_CHOOSE_FOLDER "Veuillez choisir le répertoire..."\r
+ IDS_NOTCREATE_REGKEY "Échec lors de la création de la clé registre."\r
+ IDS_DOWNLOAD_FOLDER "Downloader"\r
+ IDS_UNABLECREATE_FOLDER "Échec lors du répertoire avec ce nom !"\r
+ IDS_UPDATE_URL "http://svn.reactos.org"\r
+ IDS_INSTALL_DEP "%s est nécessaire pour lancer %s. Voulez-vous installer %s maintenant ?"\r
+ TTT_HELPBUTTON "Obtenez de l'aide à propros du téléchargeur"\r
+ TTT_UPDATEBUTTON "Pas encore disponible"\r
+ TTT_PROFBUTTON "Vous permet de configurer le téléchargeur"\r
+END\r
--- /dev/null
+LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT\r
+\r
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Download..."\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12\r
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER\r
+ PUSHBUTTON "Batal", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP\r
+END\r
+\r
+IDD_PROF DIALOGEX 6, 6, 267, 110\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Proferences"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ LTEXT "Download folder:", -1, 6, 10, 140, 8\r
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP\r
+ PUSHBUTTON "C&hoose...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14\r
+ AUTOCHECKBOX "&Delete installation files after setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP\r
+ LTEXT "Update server:", -1, 6, 55, 140, 8\r
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP\r
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15\r
+ PUSHBUTTON "&Cancel", IDCANCEL, 207, 90, 54, 15\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+ IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"\r
+ IDS_WELCOME_TITLE "Selamat datang di ReactOS Downloader"\r
+ IDS_WELCOME "Silahkan pilih kategori di sebelah kiri. Ini versi 1.1."\r
+ IDS_NO_APP_TITLE "Tidak ada aplikasi yang dipilih"\r
+ IDS_NO_APP "Silahkan pilih Aplikasi sebelum anda mengklik tombol download, jika anda membutuhkan asistensi silahkan klik pada tombol di sudut kanan atas."\r
+ IDS_UPDATE_TITLE "Mutakhirkan"\r
+ IDS_UPDATE "Maaf fitur ini belum diimplementasikan."\r
+ IDS_HELP_TITLE "Bantuan"\r
+ IDS_HELP "Pilih kategori di sisi kiri, lalu pilih aplikasi dan klik tombol download. Untuk memutakhirkan informasi aplikasi klik tombol disebelah tombol bantuan."\r
+ IDS_NO_APPS "Maaf, belum ada aplikasi dalam kategori ini. Anda dapat membantu dan menambahkan aplikasi lebih banyak."\r
+ IDS_CHOOSE_APP "Silahkan pilih aplikasi."\r
+ IDS_CHOOSE_SUB "Silahkan pilih subkategori."\r
+ IDS_CHOOSE_CATEGORY "Silahkan pilih kategori."\r
+ IDS_CHOOSE_BOTH "Silahkan pilih subkategori atau aplikasi."\r
+ IDS_XMLERROR_1 "Tidak dapat menemukan file xml !"\r
+ IDS_XMLERROR_2 "Tidak dapat mengurai file xml !"\r
+ IDS_DOWNLOAD_ERROR "Tidak bisa mendownload file.\nSilahkan periksa koneksi internet anda."\r
+ IDS_VERSION "Versi: "\r
+ IDS_LICENCE "Lisensi: "\r
+ IDS_MAINTAINER "Pemelihara: "\r
+ IDS_APPS_TITLE "Applications"\r
+ IDS_CATS_TITLE "Categories"\r
+ IDS_CHOOSE_FOLDER "Please, choose the folder..."\r
+ IDS_NOTCREATE_REGKEY "Could not create the registry key."\r
+ IDS_DOWNLOAD_FOLDER "Downloader"\r
+ IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!"\r
+ IDS_UPDATE_URL "http://svn.reactos.org"\r
+ IDS_INSTALL_DEP "%s is required to run %s. Should %s be installed now?"\r
+ TTT_HELPBUTTON "Get help about the downloader"\r
+ TTT_UPDATEBUTTON "Not yet available"\r
+ TTT_PROFBUTTON "Let you configure the downloader"\r
+END\r
--- /dev/null
+LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL\r
+\r
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Scarica..."\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12\r
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER\r
+ PUSHBUTTON "Annulla", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP\r
+END\r
+\r
+IDD_PROF DIALOGEX 6, 6, 267, 110\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Preferenze"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ LTEXT "Cartella dove scaricare:", -1, 6, 10, 140, 8\r
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP\r
+ PUSHBUTTON "&Scegliere...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14\r
+ AUTOCHECKBOX "&Cancellare i file di installazione dopo il setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP\r
+ LTEXT "Server per gli aggiornamenti:", -1, 6, 55, 140, 8\r
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP\r
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15\r
+ PUSHBUTTON "&Annulla", IDCANCEL, 207, 90, 54, 15\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+ IDS_WINDOW_TITLE "Scarica ! - ReactOS Downloader"\r
+ IDS_WELCOME_TITLE "Benvenuto al ReactOS Downloader"\r
+ IDS_WELCOME "Scegli una categoria a sinistra. Questa è la versione 1.1."\r
+ IDS_NO_APP_TITLE "Nessuna applicazione selezionata"\r
+ 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."\r
+ IDS_UPDATE_TITLE "Aggiorna"\r
+ IDS_UPDATE "Funzione non ancora implementata."\r
+ IDS_HELP_TITLE "Aiuto"\r
+ 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."\r
+ IDS_NO_APPS "Non ci sono ancora applicazioni in questa categoria. Puoi aiutare aggiungendone altre."\r
+ IDS_CHOOSE_APP "Scegli una applicazione."\r
+ IDS_CHOOSE_SUB "Scegli una sottocategoria."\r
+ IDS_CHOOSE_CATEGORY "Scegli una categoria."\r
+ IDS_CHOOSE_BOTH "Scegli una sottocategoria o una applicazione."\r
+ IDS_XMLERROR_1 "File xml non trovato !"\r
+ IDS_XMLERROR_2 "Impossibile trattare il contenuto del file xml !"\r
+ IDS_DOWNLOAD_ERROR "Scaricamento del file impossibile.\nVerificare la connessione a Internet."\r
+ IDS_VERSION "Versione: "\r
+ IDS_LICENCE "Licenza: "\r
+ IDS_MAINTAINER "Manutentore: "\r
+ IDS_APPS_TITLE "Applicazioni"\r
+ IDS_CATS_TITLE "Categorie"\r
+ IDS_CHOOSE_FOLDER "Scegliere una cartella..."\r
+ IDS_NOTCREATE_REGKEY "Impossibile creare la chiave del registry."\r
+ IDS_DOWNLOAD_FOLDER "Scarica"\r
+ IDS_UNABLECREATE_FOLDER "Impossibile creare una cartella con questo nome!"\r
+ IDS_UPDATE_URL "http://svn.reactos.org"\r
+ IDS_INSTALL_DEP "%s è necessario per la esecuzione di %s. Si vuole procedere alla installazione di %s?"\r
+ TTT_HELPBUTTON "Informazioni su ReactOS Downloader"\r
+ TTT_UPDATEBUTTON "Non disponibile"\r
+ TTT_PROFBUTTON "Permette la configurazione del downloader"\r
+END\r
--- /dev/null
+/* 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
--- /dev/null
+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
--- /dev/null
+/*
+ * 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 "\8cci¹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 \9cci¹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 \9cci¹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 "\8cci¹gnij ! - Mened¿er pobierania dla ReactOS"
+ IDS_WELCOME_TITLE "Witamy w \8cci¹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 \8cci¹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 \8cci¹gnij. Aby uaktualniæ listê programów, naci\9cnij 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
--- /dev/null
+//Russian language file. (Dmitry Chapyshev, 2007.06.21)\r
+\r
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT\r
+\r
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Çàãðóçêà..."\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12\r
+ LTEXT "", IDC_STATUS, 10, 30, 200, 17, SS_CENTER\r
+ PUSHBUTTON "Îòìåíà", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP\r
+END\r
+\r
+IDD_PROF DIALOGEX 6, 6, 267, 110\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Íàñòðîéêè"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ LTEXT "Ïàïêà äëÿ çàêà÷êè:", -1, 6, 10, 140, 8\r
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP\r
+ PUSHBUTTON "&Âûáðàòü...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14\r
+ AUTOCHECKBOX "&Óäàëÿòü óñòàíîâî÷íûå ôàéëû ïîñëå óñòàíîâêè", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP\r
+ LTEXT "Ñåðâåð îáíîâëåíèé:", -1, 6, 55, 140, 8\r
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP\r
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15\r
+ PUSHBUTTON "Î&òìåíà", IDCANCEL, 207, 90, 54, 15\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+ IDS_WINDOW_TITLE "Ñêà÷àòü! - Ìåíåäæåð çàêà÷åê ReactOS"\r
+ IDS_WELCOME_TITLE "Äîáðî ïîæàëîâàòü â Ìåíåäæåð çàêà÷åê ReactOS"\r
+ IDS_WELCOME "Ïîæàëóéñòà âûáåðèòå êàòåãîðèþ ñïðàâà. Âåðñèÿ 1.1"\r
+ IDS_NO_APP_TITLE "Ïðèëîæåíèå íå âûáðàíî"\r
+ IDS_NO_APP "Ïîæàëóéñòà, âûáåðèòå ïðèëîæåíèå ïðåæäå, ÷åì íàæàòü êíîïêó çàãðóçêè. Åñëè âàì íóæíà ñïðàâêà, òî íàæìèòå êíîïêó ñî çíàêîì âîïðîñà â âåðõíåì ïðàâîì óãëó."\r
+ IDS_UPDATE_TITLE "Îáíîâèòü"\r
+ IDS_UPDATE "Èçâèíèòå, äàííàÿ âîçìîæíîñòü íà äàííûì ìîìåíò íåäîñòóïíà."\r
+ IDS_HELP_TITLE "Ñïðàâêà"\r
+ IDS_HELP "Âûáåðèòå êàòåãîðèþ ñëåâà, çàòåì âûáåðèòå ïðèëîæåíèå è íàæìèòå êíîïêó çàãðóçêè. Äëÿ ïîëó÷åíèÿ èíôîðìàöèè îá îáíîâëåíèÿõ íàæìèòå êíîïêó ðÿäîì ñ êíîïêîé ñïðàâêè."\r
+ IDS_NO_APPS "Èçâåíèòå, íà äàííûé ìîìåíò â ýòîé êàòåãîðèè ïðèëîæåíèé íåò, íî âû ìîæåòå ïîìî÷ü äîáàâèòü èõ."\r
+ IDS_CHOOSE_APP "Ïîæàëóéñòà âûáåðèòå ïðèëîæåíèå."\r
+ IDS_CHOOSE_SUB "Ïîæàëóéñòà âûáåðèòå ïîäêàòåãîðèþ."\r
+ IDS_CHOOSE_CATEGORY "Ïîæàëóéñòà âûáåðèòå êàòåãîðèþ."\r
+ IDS_CHOOSE_BOTH "Ïîæàëóéñòà âûáåðèòå ïîäêàòåãîðèþ èëè ïðèëîæåíèå."\r
+ IDS_XMLERROR_1 "Íå óäàëîñü íàéòè xml-ôàéë!"\r
+ IDS_XMLERROR_2 "Íå óäàëîñü îáðàáîòàòü xml-ôàéë!"\r
+ IDS_DOWNLOAD_ERROR "Íå óäàåòñÿ çàãðóçèòü ôàéë.\nÏîæàëóéñòà ïðîâåðüòå âàøå ïîäêëþ÷åíèå ê èíòåðíåò."\r
+ IDS_VERSION "Âåðñèÿ: "\r
+ IDS_LICENCE "Ëèöåíçèÿ: "\r
+ IDS_MAINTAINER "Ïðîèçâîäèòåëü: "\r
+ IDS_APPS_TITLE "Ïðèëîæåíèÿ"\r
+ IDS_CATS_TITLE "Êàòåãîðèè"\r
+ IDS_CHOOSE_FOLDER "Ïîæàëóéñòâà âûáåðèòå ïàïêó..."\r
+ IDS_NOTCREATE_REGKEY "Íå óäàëîñü ñîçäàòü êëþ÷ â ðååñòðå."\r
+ IDS_DOWNLOAD_FOLDER "Downloader"\r
+ IDS_UNABLECREATE_FOLDER "Íå óäàëîñü ñîçäàòü ïàïêó ñ òàêèì èìåíåì!"\r
+ IDS_UPDATE_URL "http://svn.reactos.org"\r
+ IDS_INSTALL_DEP "%s òðåáóåòñÿ äëÿ çàïóñêà %s. Óñòàíîâèòü %s?"\r
+ TTT_HELPBUTTON "Ïîêàçàòü ñïðàâêó ïðîãðàììû"\r
+ TTT_UPDATEBUTTON "Ñåé÷àñ íåäîñòóïíî"\r
+ TTT_PROFBUTTON "Âûïîëíèòü íàñòðîéêó ïðîãðàììû"\r
+END\r
--- /dev/null
+/* 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 "S\9dahujem ..."
+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\9ai\9d", 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 s\9dahovania:", -1, 6, 10, 140, 8
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
+ PUSHBUTTON "&Vybra\9d ...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
+ AUTOCHECKBOX "&Odstráni\9d in\9atalaèné súbory po nain\9atalovaní", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
+ LTEXT "Aktualizova\9d 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\9ai\9d", IDCANCEL, 207, 90, 54, 15
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_WINDOW_TITLE "\8dahaj! - 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ý \9eiadny program"
+ IDS_NO_APP "Vyberte, prosím, program predtým ne\9e kliknete na tlaèidlo stiahnu\9d. Ak potrebujete pomoc, kliknite, prosím, na tlaèidlo otáznika v pravom hornom rohu."
+ IDS_UPDATE_TITLE "Aktualizova\9d"
+ 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\9d. 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ú \9eiadne programy. Mô\9eete pomôc\9d a prida\9d 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\9d súbor xml!"
+ IDS_XMLERROR_2 "Nepodarilo sa správne analyzova\9d súbor xml!"
+ IDS_DOWNLOAD_ERROR "Nepodarilo sa stiahnu\9d súbor.\nSkontrolujte, prosím, pripojenie do siete internet."
+ IDS_VERSION "Verzia: "
+ IDS_LICENCE "Licencia: "
+ IDS_MAINTAINER "Údr\9ebá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\9d k¾úè registra."
+ IDS_DOWNLOAD_FOLDER "Downloader"
+ IDS_UNABLECREATE_FOLDER "Nie je mo\9ené vytvori\9d 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\9atalova\9d teraz?"
+ TTT_HELPBUTTON "Získa\9d nápoveï k programu downloader"
+ TTT_UPDATEBUTTON "Zatia¾ nie je k dispozícií"
+ TTT_PROFBUTTON "Dovolí Vám konfigurova\9d program downloader"
+END
--- /dev/null
+/*\r
+ * PROJECT: ReactOS Downloader\r
+ * LICENSE: GPL - See COPYING in the top level directory\r
+ * FILE: rosapps/downloader/lang/uk-UA.rc\r
+ * PURPOSE: Ukraianian Language File for Downloader\r
+ * TRANSLATOR: Artem Reznikov\r
+ */\r
+\r
+LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT\r
+\r
+IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Çàâàíòàæåííÿ..."\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12\r
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER\r
+ PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP\r
+END\r
+\r
+IDD_PROF DIALOGEX 6, 6, 267, 110\r
+STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE\r
+CAPTION "Íàñòðîéêè"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+ LTEXT "Ïàïêà äëÿ çàâàíòàæåííÿ:", -1, 6, 10, 140, 8\r
+ EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP\r
+ PUSHBUTTON "&Âèáðàòè...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14\r
+ AUTOCHECKBOX "&Âèäàëÿòè íàñòàíîâí³ ôàéëè ï³ñëÿ óñòàíîâêè", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP\r
+ LTEXT "Ñåðâåð îíîâëåíü:", -1, 6, 55, 140, 8\r
+ EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP\r
+ DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15\r
+ PUSHBUTTON "&Ñêàñóâàòè", IDCANCEL, 207, 90, 54, 15\r
+END\r
+\r
+STRINGTABLE DISCARDABLE\r
+BEGIN\r
+ IDS_WINDOW_TITLE "Çàâàíòàæèòè ! - Çàâàíòàæóâà÷ ReactOS"\r
+ IDS_WELCOME_TITLE "Ëàñêàâî ïðîñèìî ó Çàâàíòàæóâà÷ ReactOS"\r
+ IDS_WELCOME "Áóäü ëàñêà âèáåð³òü êàòåãîð³þ çë³âà. Öå âåðñ³ÿ 1.1."\r
+ IDS_NO_APP_TITLE "Äîäàòîê íå âèáðàíèé"\r
+ IDS_NO_APP "Áóäü ëàñêà, âèáåð³òü äîäàòîê ïåðø í³æ íàòèñíóòè êíîïêó çàâàíòàæåííÿ. ßêùî Âàì ïîòð³áíà äîïîìîãà, íàòèñí³òü êíîïêó ç³ çíàêîì ïèòàííÿ ó âåðõíüîìó ïðàâîìó êóòêó."\r
+ IDS_UPDATE_TITLE "Îíîâèòè"\r
+ IDS_UPDATE "Âèáà÷òå, äàíà ìîæëèâ³ñòü ùå íåäîñòóïíà."\r
+ IDS_HELP_TITLE "Äîâ³äêà"\r
+ IDS_HELP "Âèáåð³òü êàòåãîð³þ çë³âà, ïîò³ì âèáåð³òü äîäàòîê ³ íàòèñí³òü êíîïêó çàâàíòàæåííÿ. Äëÿ îòðèìàííÿ ³íôîðìàö³¿ ïðî îíîâëåííÿ íàòèñí³òü êíîïêó ïîðÿä ç êíîïêîþ äîâ³äêè."\r
+ IDS_NO_APPS "Âèáà÷òå, â ö³é êàòåãî𳿠ùå íåìຠäîäàòê³â. Âè ìîæåòå äîïîìîãòè ³ äîäàòè á³ëüøå äîäàòê³â."\r
+ IDS_CHOOSE_APP "Áóäü ëàñêà âèáåð³òü äîäàòîê."\r
+ IDS_CHOOSE_SUB "Áóäü ëàñêà âèáåð³òü ï³äêàòåãîð³þ."\r
+ IDS_CHOOSE_CATEGORY "Áóäü ëàñêà âèáåð³òü êàòåãîð³þ."\r
+ IDS_CHOOSE_BOTH "Áóäü ëàñêà âèáåð³òü ï³äêàòåãîð³þ àáî äîäàòîê."\r
+ IDS_XMLERROR_1 "Íå âäàëîñÿ çíàéòè ôàéë XML !"\r
+ IDS_XMLERROR_2 "Íå âäàëîñÿ îáðîáèòè ôàéë XML !"\r
+ IDS_DOWNLOAD_ERROR "Íåìîæëèâî çàâàíòàæèòè ôàéë.\nÁóäü ëàñêà ïåðåâ³ðòå âàøå ³íòåðíåò-ç'ºäíàííÿ."\r
+ IDS_VERSION "Âåðñ³ÿ: "\r
+ IDS_LICENCE "˳öåíç³ÿ: "\r
+ IDS_MAINTAINER "Âèðîáíèê: "\r
+ IDS_APPS_TITLE "Äîäàòêè"\r
+ IDS_CATS_TITLE "Êàòåãîð³¿"\r
+ IDS_CHOOSE_FOLDER "Áóäü ëàñêà âèáåð³òü ïàïêó..."\r
+ IDS_NOTCREATE_REGKEY "Íå âäàëîñÿ ñòâîðèòè êëþ÷ ó ðåºñòð³."\r
+ IDS_DOWNLOAD_FOLDER "Downloader"\r
+ IDS_UNABLECREATE_FOLDER "Íå âäàëîñÿ ñòâîðèòè ïàïêó ç òàêèì ³ì'ÿì!"\r
+ IDS_UPDATE_URL "http://svn.reactos.org"\r
+ IDS_INSTALL_DEP "%s ïîòð³áíèé ùîá çàïóñòèòè %s. Âñòàíîâèòè %s çàðàç?"\r
+ TTT_HELPBUTTON "Îòðèìàéòè äîïîìîãó ïðî çàâàíòàæóâà÷"\r
+ TTT_UPDATEBUTTON "Ïîêè ùî íå äîñòóïíî"\r
+ TTT_PROFBUTTON "Íàëàøòóâàòè çàâàíòàæóâà÷"\r
+END\r
--- /dev/null
+/* 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 <windows.h>
+#include <commctrl.h>
+#include <richedit.h>
+#include <tchar.h>
+#include <stdio.h>
+#include <shlwapi.h>
+#include <shlobj.h>
+#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;i<DescriptionRect.right-1;i++)
+ DrawBitmap(hdc, i, DescriptionRect.top+22, hUnderline); // less code then stretching ;)
+
+ // Headline
+ Font = CreateFont(-16 , 0, 0, 0, FW_EXTRABOLD, FALSE, FALSE, FALSE, ANSI_CHARSET,
+ OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, L"Arial");
+ SelectObject(hdc, Font);
+ DrawTextW(hdc, DescriptionHeadline, lstrlenW(DescriptionHeadline), &Rect, DT_SINGLELINE|DT_NOPREFIX);
+ DeleteObject(Font);
+
+ // Description
+ Font = CreateFont(-13 , 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET,
+ OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, L"Arial");
+ SelectObject(hdc, Font);
+ Rect.top += 50;
+ Rect.bottom = DescriptionRect.bottom-2;
+ DrawTextW(hdc, DescriptionText, lstrlenW(DescriptionText), &Rect, DT_WORDBREAK|DT_NOPREFIX); // ToDo: Call TabbedTextOut to draw a nice table
+ DeleteObject(Font);
+
+}
+
+void showUninstaller() {
+ int Split_Vertical = 200;
+ RECT Rect;
+
+ GetClientRect(hwnd,&Rect);
+ ShowWindow(hUninstallButton,SW_SHOW);
+ MoveWindow(hDownloadButton,(Split_Vertical+Rect.right-Rect.left)/2,Rect.bottom-Rect.top-45,140,35,TRUE);;
+}
+
+void hideUninstaller() {
+ int Split_Vertical = 200;
+ RECT Rect;
+
+ GetClientRect(hwnd,&Rect);
+ ShowWindow(hUninstallButton,SW_HIDE);
+ MoveWindow(hDownloadButton,(Split_Vertical+Rect.right-Rect.left)/2-70,Rect.bottom-Rect.top-45,140,35,TRUE);
+}
+
+void startUninstaller(WCHAR* Uninstaller) {
+ STARTUPINFOW si;
+ PROCESS_INFORMATION pi;
+
+ memset(&si, 0, sizeof(si));
+ si.cb = sizeof(si);
+ CreateProcessW(NULL,Uninstaller,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
+ CloseHandle(pi.hThread);
+ // WaitForSingleObject(pi.hProcess, INFINITE); // If you want to wait for the Unistaller
+ CloseHandle(pi.hProcess);
+ hideUninstaller();
+}
+
+BOOL
+SaveSettings(HWND hwnd)
+{
+ HKEY hKey;
+ TCHAR szBuf[MAX_PATH];
+ DWORD dwValue;
+
+ if (RegOpenKey(HKEY_LOCAL_MACHINE,
+ TEXT("Software\\ReactOS\\Downloader"),
+ &hKey) != ERROR_SUCCESS)
+ return FALSE;
+
+ GetDlgItemText(hwnd, IDC_DOWNLOAD_FOLDER_EDIT, szBuf, sizeof(szBuf) / sizeof(TCHAR));
+ if (GetFileAttributes(szBuf) == 0xFFFFFFFF)
+ if (!CreateDirectory((LPCTSTR)szBuf,NULL))
+ {
+ LoadString(GetModuleHandle(NULL), IDS_UNABLECREATE_FOLDER, szBuf, sizeof(szBuf) / sizeof(TCHAR));
+ MessageBox(hwnd, (LPCTSTR)szBuf, NULL, MB_ICONSTOP);
+ return FALSE;
+ }
+ if (RegSetValueEx(hKey,
+ L"DownloadFolder",
+ 0,
+ REG_SZ,
+ (LPBYTE)szBuf,
+ (DWORD)(sizeof(szBuf) / sizeof(TCHAR))))
+ return FALSE;
+
+ GetDlgItemText(hwnd, IDC_UPDATE_SERVER_EDIT, szBuf, sizeof(szBuf) / sizeof(TCHAR));
+ if (RegSetValueEx(hKey,
+ L"UpdateServer",
+ 0,
+ REG_SZ,
+ (LPBYTE)szBuf,
+ (DWORD)(sizeof(szBuf) / sizeof(TCHAR))))
+ return FALSE;
+
+ if (SendDlgItemMessage(hwnd, IDC_DELINST_FILES_CHECKBOX, BM_GETCHECK, 0, 0) == BST_CHECKED)
+ dwValue = 0x1;
+ else
+ dwValue = 0x0;
+ if (RegSetValueEx(hKey,
+ L"DeleteInstaller",
+ 0,
+ REG_DWORD,
+ (LPBYTE)&dwValue,
+ sizeof(DWORD)))
+ return FALSE;
+
+ RegCloseKey(hKey);
+
+ return TRUE;
+}
+
+BOOL
+InitProfDlg(HWND hwnd)
+{
+ HKEY hKey;
+ TCHAR Buf[MAX_PATH];
+ DWORD dwDisp, dwSize;
+ DWORD dwValue, dwType = REG_DWORD;
+
+ if (RegOpenKey(HKEY_LOCAL_MACHINE,
+ TEXT("Software\\ReactOS\\Downloader"),
+ &hKey) != ERROR_SUCCESS)
+ {
+ if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, L"Software\\ReactOS\\Downloader",
+ 0, NULL, REG_OPTION_NON_VOLATILE,
+ KEY_WRITE, NULL, &hKey, &dwDisp))
+ {
+ LoadString(GetModuleHandle(NULL), IDS_NOTCREATE_REGKEY, Buf, sizeof(Buf) / sizeof(TCHAR));
+ MessageBox(hwnd, (LPCTSTR)Buf, NULL, MB_ICONSTOP);
+ return FALSE;
+ }
+ }
+
+ dwSize = MAX_PATH;
+ if (RegQueryValueEx(hKey,
+ L"DownloadFolder",
+ NULL,
+ NULL,
+ (LPBYTE)&Buf,
+ &dwSize) == ERROR_SUCCESS)
+ {
+ SetDlgItemText(hwnd, IDC_DOWNLOAD_FOLDER_EDIT, Buf);
+ }
+ else
+ {
+ TCHAR DPath[256];
+ int i;
+
+ if (!GetWindowsDirectory(Buf, sizeof(Buf) / sizeof(TCHAR))) return FALSE;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (i == 3)
+ {
+ DPath[i] = '\0';
+ break;
+ }
+ DPath[i] = Buf[i];
+ }
+ LoadString(GetModuleHandle(NULL), IDS_DOWNLOAD_FOLDER, Buf, sizeof(Buf) / sizeof(TCHAR));
+ lstrcat((LPTSTR)DPath, Buf);
+ if (RegSetValueEx(hKey,
+ L"DownloadFolder",
+ 0,
+ REG_SZ,
+ (LPBYTE)DPath,
+ (DWORD)(sizeof(DPath) / sizeof(TCHAR))))
+ return FALSE;
+ else
+ {
+ if (GetFileAttributes(DPath) == 0xFFFFFFFF)
+ if (!CreateDirectory((LPCTSTR)DPath,NULL)) return FALSE;
+ SetDlgItemText(hwnd, IDC_DOWNLOAD_FOLDER_EDIT, DPath);
+ }
+ }
+
+ dwSize = MAX_PATH;
+ if (RegQueryValueEx(hKey,
+ L"UpdateServer",
+ NULL,
+ NULL,
+ (LPBYTE)&Buf,
+ &dwSize) == ERROR_SUCCESS)
+ {
+ SetDlgItemText(hwnd, IDC_UPDATE_SERVER_EDIT, Buf);
+ }
+ else
+ {
+ LoadString(GetModuleHandle(NULL), IDS_UPDATE_URL, Buf, sizeof(Buf) / sizeof(TCHAR));
+ if (RegSetValueEx(hKey,
+ L"UpdateServer",
+ 0,
+ REG_SZ,
+ (LPBYTE)Buf,
+ (DWORD)(sizeof(Buf) / sizeof(TCHAR))))
+ return FALSE;
+ else
+ {
+ SetDlgItemText(hwnd, IDC_UPDATE_SERVER_EDIT, Buf);
+ }
+ }
+
+ dwSize = sizeof(DWORD);
+ if (RegQueryValueEx(hKey,
+ L"DeleteInstaller",
+ NULL,
+ &dwType,
+ (LPBYTE)&dwValue,
+ &dwSize) == ERROR_SUCCESS)
+ {
+ if (dwValue == 0x1)
+ SendDlgItemMessage(hwnd, IDC_DELINST_FILES_CHECKBOX, BM_SETCHECK, 1, 1);
+ }
+ else
+ {
+ dwValue = 0x0;
+ if (RegSetValueEx(hKey,
+ L"DeleteInstaller",
+ 0,
+ REG_DWORD,
+ (LPBYTE)&dwValue,
+ sizeof(DWORD)))
+ return FALSE;
+ }
+
+ RegCloseKey(hKey);
+
+ return TRUE;
+}
+
+BOOL
+ChooseFolder(HWND hwnd)
+{
+ BROWSEINFO fi;
+ LPCITEMIDLIST lpItemList;
+ TCHAR szPath[MAX_PATH],Buf[256];
+
+ ZeroMemory(&fi, sizeof(BROWSEINFO));
+ fi.hwndOwner = hwnd;
+ LoadString(GetModuleHandle(NULL), IDS_CHOOSE_FOLDER, Buf, sizeof(Buf) / sizeof(TCHAR));
+ fi.lpszTitle = (LPCTSTR)Buf;
+ fi.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_BROWSEFORCOMPUTER | BIF_NEWDIALOGSTYLE;
+ fi.lpfn = NULL;
+ fi.lParam = -1;
+ fi.iImage = 0;
+
+ if(!(lpItemList = SHBrowseForFolder(&fi))) return FALSE;
+ SHGetPathFromIDList(lpItemList, szPath);
+
+ if (_tcslen(szPath) == 0) return FALSE;
+ SetDlgItemText(hwnd, IDC_DOWNLOAD_FOLDER_EDIT, szPath);
+
+ return TRUE;
+}
+
+INT_PTR CALLBACK
+ProfDlgProc(HWND hDlg,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+ static HICON hIcon;
+ UNREFERENCED_PARAMETER(lParam);
+
+ switch (message)
+ {
+ case WM_INITDIALOG:
+ {
+ hIcon = LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_MAIN),IMAGE_ICON,16,16,0);
+ SendMessage(hDlg,WM_SETICON,ICON_SMALL,(LPARAM)hIcon);
+ InitProfDlg(hDlg);
+ }
+ break;
+
+ case WM_COMMAND:
+ {
+ switch (wParam)
+ {
+ case IDC_CHOOSE_BUTTON:
+ ChooseFolder(hDlg);
+ break;
+ case IDOK:
+ {
+ SaveSettings(hDlg);
+ DestroyIcon(hIcon);
+ EndDialog(hDlg,LOWORD(wParam));
+ return TRUE;
+ }
+ break;
+ case IDCANCEL:
+ {
+ DestroyIcon(hIcon);
+ EndDialog(hDlg,LOWORD(wParam));
+ return TRUE;
+ }
+ break;
+ }
+ }
+ break;
+ }
+
+ return FALSE;
+}
+
+BOOL IsApplicationInstalled(struct Application* App)
+{
+ WCHAR Uninstaller[200];
+ if(StrCmpW(App->RegName, 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<STRING_COUNT; i++)
+ LoadStringW(hInstance, i, Strings[i], MAX_STRING_LENGHT); // if you know a better method please tell me.
+
+ // Create the window
+ WndClass.cbSize = sizeof(WNDCLASSEX);
+ WndClass.lpszClassName = L"Downloader";
+ WndClass.lpfnWndProc = WndProc;
+ WndClass.hInstance = hInstance;
+ WndClass.style = CS_HREDRAW | CS_VREDRAW;
+ WndClass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN));
+ WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
+
+ RegisterClassExW(&WndClass);
+
+ hwnd = CreateWindowW(L"Downloader",
+ Strings[IDS_WINDOW_TITLE],
+ WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN,
+ CW_USEDEFAULT,
+ CW_USEDEFAULT,
+ 720, 550,
+ NULL, NULL,
+ hInstance,
+ NULL);
+
+ // Show it
+ ShowWindow(hwnd, SW_SHOW);
+ UpdateWindow(hwnd);
+
+ // Message Loop
+ while(GetMessage(&msg,NULL,0,0))
+ {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+
+ return 0;
+}
--- /dev/null
+#include <windows.h>
+#include <stdio.h>
+
+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;
+}
--- /dev/null
+/* 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
--- /dev/null
+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"
--- /dev/null
+
+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;
+};
--- /dev/null
+/* 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 <libs/expat/expat.h>
+#include <string.h>
+#include <stdio.h>
+#include <windows.h>
+#include <shlwapi.h>
+#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);
+}
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