Move the downloader tool into trunk
svn path=/trunk/; revision=40461
|
@ -16,6 +16,9 @@
|
|||
<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>
|
||||
|
|
402
reactos/base/applications/downloader/download.c
Normal file
|
@ -0,0 +1,402 @@
|
|||
/* PROJECT: ReactOS Downloader (was GetFirefox)
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: base/applications/downloader/download.c
|
||||
* PURPOSE: Displaying a download dialog
|
||||
* COPYRIGHT: Copyright 2001 John R. Sheets (for CodeWeavers)
|
||||
* Copyright 2004 Mike McCormack (for CodeWeavers)
|
||||
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
|
||||
* Copyright 2007 Dmitry Chapyshev (lentind@yandex.ru)
|
||||
*/
|
||||
/*
|
||||
* Based on Wine dlls/shdocvw/shdocvw_main.c
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#define COBJMACROS
|
||||
#define WIN32_NO_STATUS
|
||||
#include <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;
|
||||
}
|
||||
}
|
26
reactos/base/applications/downloader/downloader.rbuild
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?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>
|
10
reactos/base/applications/downloader/downloader.rc
Normal file
|
@ -0,0 +1,10 @@
|
|||
#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"
|
297
reactos/base/applications/downloader/downloader.xml
Normal file
|
@ -0,0 +1,297 @@
|
|||
<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>
|
60
reactos/base/applications/downloader/lang/bg-BG.rc
Normal file
|
@ -0,0 +1,60 @@
|
|||
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_DOWNLOAD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Сваляне..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Отказ", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Предпочитания"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Папка за сваляне:", -1, 6, 10, 144, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Избор...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Изтриване на инсталационните файлове след слагането", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Сървър с обновявания:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&Добре", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&Отказ", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Свали! - Свалячът на РеактОС"
|
||||
IDS_WELCOME_TITLE "Свалячът на РеактОС ви приветства"
|
||||
IDS_WELCOME "Изберете раздел отляво. Това е издание 1.1."
|
||||
IDS_NO_APP_TITLE "Не е избрано приложение"
|
||||
IDS_NO_APP "Изберете приложение, преди да натиснето клавиша „Сваляне”. Ако имате нужда от помощ, натиснете въпросителната в горния десен ъгъл."
|
||||
IDS_UPDATE_TITLE "Обновяване"
|
||||
IDS_UPDATE "Тази възможност все още не е готова."
|
||||
IDS_HELP_TITLE "Помощ"
|
||||
IDS_HELP "Изберете раздел отляво, след това изберете приложение и натиснете „Сваляне”. За да осъвремените сведенията за приложението, натиснете копчето до „Напред”."
|
||||
IDS_NO_APPS "За съжаление в този раздел все още няма приложения. Можете да помогнете и да добавите още приложения."
|
||||
IDS_CHOOSE_APP "Изберете приложение."
|
||||
IDS_CHOOSE_SUB "Изберете подраздел."
|
||||
IDS_CHOOSE_CATEGORY "Изберете раздел."
|
||||
IDS_CHOOSE_BOTH "Изберете подраздел или приложение."
|
||||
IDS_XMLERROR_1 "Xml файлът не е открит !"
|
||||
IDS_XMLERROR_2 "Разборът на XML файла е неуспешен!"
|
||||
IDS_DOWNLOAD_ERROR "Свалянето на файла невъзможно.\nПроверете връзката си с интернет."
|
||||
IDS_VERSION "Издание: "
|
||||
IDS_LICENCE "Разрешително: "
|
||||
IDS_MAINTAINER "Поддържащ: "
|
||||
IDS_APPS_TITLE "Приложения"
|
||||
IDS_CATS_TITLE "Раздели"
|
||||
IDS_CHOOSE_FOLDER "Изберете папката..."
|
||||
IDS_NOTCREATE_REGKEY "Неуспешно създаване на ключ в регистъра."
|
||||
IDS_DOWNLOAD_FOLDER "Сваляч"
|
||||
IDS_UNABLECREATE_FOLDER "Неуспешно създаване на папка с това име!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
TTT_HELPBUTTON, "Помощ за сваляча"
|
||||
TTT_UPDATEBUTTON, "Все още не е готово"
|
||||
TTT_PROFBUTTON, "Позволява настройка на сваляча"
|
||||
END
|
61
reactos/base/applications/downloader/lang/de-DE.rc
Normal file
|
@ -0,0 +1,61 @@
|
|||
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Download..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Abbrechen", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Einstellungen"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Download Ordner:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "W&ähle...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Installationsdateien nach dem Setup löschen", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Update Server:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&Abbrechen", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
|
||||
IDS_WELCOME_TITLE "Willkommen im ReactOS Downloader"
|
||||
IDS_WELCOME "Bitte wählen Sie links eine Kategorie. Dies ist Version 1.1."
|
||||
IDS_NO_APP_TITLE "Keine Anwendung ausgewählt"
|
||||
IDS_NO_APP "Bitte wählen Sie eine Anwendung, bevor Sie die Download-Schaltfläche betätigen. Wenn Sie Hilfe benötigen, drücken Sie die Hilfe-Schaltfläche in der oberen rechten Ecke."
|
||||
IDS_UPDATE_TITLE "Update"
|
||||
IDS_UPDATE "Diese Funktion wurde noch nicht implementiert."
|
||||
IDS_HELP_TITLE "Hilfe"
|
||||
IDS_HELP "Wählen Sie links eine Kategorie, wählen Sie eine Anwendung und drücken Sie die Download-Schaltfläche. Um die Anwendungsinformationen zu aktualisieren, drücken Sie die Schaltfläche neben der Hilfe-Schaltfläche."
|
||||
IDS_NO_APPS "In dieser Kategorie sind bisher noch keine Anwendungen. Sie können helfen, indem Sie Anwendungen hinzufügen."
|
||||
IDS_CHOOSE_APP "Bitte wählen Sie eine Anwendung."
|
||||
IDS_CHOOSE_SUB "Bitte wählen Sie eine Unterkategorie."
|
||||
IDS_CHOOSE_CATEGORY "Bitte wählen Sie eine Kategorie."
|
||||
IDS_CHOOSE_BOTH "Bitte wählen Sie eine Unterkategorie oder eine Anwendung."
|
||||
IDS_XMLERROR_1 "XML Datei nicht gefunden!"
|
||||
IDS_XMLERROR_2 "XML Datei kann nicht verarbeitet werden!"
|
||||
IDS_DOWNLOAD_ERROR "Die Datei konnte nicht heruntergeladen werden.\nBitte prüfen sie, ob eine Verbindung zum Internet besteht."
|
||||
IDS_VERSION "Version: "
|
||||
IDS_LICENCE "Lizenz: "
|
||||
IDS_MAINTAINER "Maintainer: "
|
||||
IDS_APPS_TITLE "Anwendungen"
|
||||
IDS_CATS_TITLE "Kategorien"
|
||||
IDS_CHOOSE_FOLDER "Bitte wählen Sie den Ordner..."
|
||||
IDS_NOTCREATE_REGKEY "Registryschlüssel könnte nicht erstellt werden."
|
||||
IDS_DOWNLOAD_FOLDER "Downloader"
|
||||
IDS_UNABLECREATE_FOLDER "Es konnte kein Ordner mit diesem Namen erstellt werden!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s wird benötigt um %s ausführen zu können. Soll %s jetzt installiert werden?"
|
||||
TTT_HELPBUTTON "Hilfe über den Downloader"
|
||||
TTT_UPDATEBUTTON "Noch nicht vorhanden"
|
||||
TTT_PROFBUTTON "Konfiguriert den Downloader"
|
||||
END
|
61
reactos/base/applications/downloader/lang/el-GR.rc
Normal file
|
@ -0,0 +1,61 @@
|
|||
LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Download..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "¢êõñï", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "ÐñïôéìÞóåéò"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "ÖÜêåëïò ËÞøåùí:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "Å&ðéëïãÞ...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&ÄéáãñáöÞ áñ÷åßùí åãêáôÜóôáóçò ìåôÜ ôçí åãêáôÜóôáóç", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "ÄéáêïìéóôÞò åíçìåñþóåùí:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&¢êõñï", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
|
||||
IDS_WELCOME_TITLE "Êáëþò Þëèáôå óôïí ReactOS Downloader"
|
||||
IDS_WELCOME "Ðáñáêáëþ åðéëÝîôå êáôçãïñßá óôá áñéóôåñÜ. ÁõôÞ åßíáé ç Ýêäïóç 1.1."
|
||||
IDS_NO_APP_TITLE "Äåí åðéëÝ÷èçêå åöáñìïãÞ"
|
||||
IDS_NO_APP "Please select a Application before you click the download button, if you need assistance please click on the question mark button on the top right corner."
|
||||
IDS_UPDATE_TITLE "ÅíçìÝñùóç"
|
||||
IDS_UPDATE "Sorry this feature is not implemented yet."
|
||||
IDS_HELP_TITLE "ÂïÞèåéá"
|
||||
IDS_HELP "ÅðéëÝîôå êáôçãïñßá óôá áñéóôåñÜ, ìåôÜ åðéëÝîôå ìéá åöáñìïãÞ êáé ðáôÞóôå ôï êïõìðß download. To update the application information click the button next to the help button."
|
||||
IDS_NO_APPS "Sorry, there no applications in this category yet. You can help and add more applications."
|
||||
IDS_CHOOSE_APP "Ðáñáêáëþ åðéëÝîôå ìéá åöáñìïãÞ."
|
||||
IDS_CHOOSE_SUB "Ðáñáêáëþ åðéëÝîôå ìéá õðïêáôçãïñßá."
|
||||
IDS_CHOOSE_CATEGORY "Ðáñáêáëþ åðéëÝîôå ìéá êáôçãïñßá."
|
||||
IDS_CHOOSE_BOTH "Ðáñáêáëþ åðéëÝîôå ìéá õðïêáôçãïñßá Þ ìéá åöáñìïãÞ."
|
||||
IDS_XMLERROR_1 "Äå âñÝèçêå ôï áñ÷åßï xml !"
|
||||
IDS_XMLERROR_2 "Could not parse the xml file !"
|
||||
IDS_DOWNLOAD_ERROR "Äåí Þôáí äõíáôü ôï êáôÝâáóìá ôïõ áñ÷åßïõ.\nÐáñáêáëïýìå åëÝîôå ôçí internet óýíäåóÞ óáò."
|
||||
IDS_VERSION "¸êäïóç: "
|
||||
IDS_LICENCE "¢äåéá: "
|
||||
IDS_MAINTAINER "Maintainer: "
|
||||
IDS_APPS_TITLE "ÅöáñìïãÝò"
|
||||
IDS_CATS_TITLE "Êáôçãïñßåò"
|
||||
IDS_CHOOSE_FOLDER "Ðáñáêáëþ, åðéëÝîôå ôïí êáôÜëïãï..."
|
||||
IDS_NOTCREATE_REGKEY "Could not create the registry key."
|
||||
IDS_DOWNLOAD_FOLDER "Downloader"
|
||||
IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s åßíáé áðáéôïýìåíï ãéá ôçí åêôÝëåóç ôïõ %s. Íá åãêáôáóôáèåß ôï %s ôþñá;"
|
||||
TTT_HELPBUTTON "Âñåßôå âïÞèåéá ãéá ôïí downloader"
|
||||
TTT_UPDATEBUTTON "¼÷é áêüìá äéáèÝóéìï"
|
||||
TTT_PROFBUTTON "Let you configure the downloader"
|
||||
END
|
61
reactos/base/applications/downloader/lang/en-US.rc
Normal file
|
@ -0,0 +1,61 @@
|
|||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Download..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Preferences"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Download folder:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "C&hoose...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Delete installation files after setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Update server:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&Cancel", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
|
||||
IDS_WELCOME_TITLE "Welcome to the ReactOS Downloader"
|
||||
IDS_WELCOME "Please choose a category on the left. This is version 1.1."
|
||||
IDS_NO_APP_TITLE "No application selected"
|
||||
IDS_NO_APP "Please select a Application before you click the download button, if you need assistance please click on the question mark button on the top right corner."
|
||||
IDS_UPDATE_TITLE "Update"
|
||||
IDS_UPDATE "Sorry this feature is not implemented yet."
|
||||
IDS_HELP_TITLE "Help"
|
||||
IDS_HELP "Choose a category on the left, then choose a application and click the download button. To update the application information click the button next to the help button."
|
||||
IDS_NO_APPS "Sorry, there no applications in this category yet. You can help and add more applications."
|
||||
IDS_CHOOSE_APP "Please choose an application."
|
||||
IDS_CHOOSE_SUB "Please choose a subcategory."
|
||||
IDS_CHOOSE_CATEGORY "Please choose a category."
|
||||
IDS_CHOOSE_BOTH "Please choose a subcategory or an application."
|
||||
IDS_XMLERROR_1 "Could not find the xml file !"
|
||||
IDS_XMLERROR_2 "Could not parse the xml file !"
|
||||
IDS_DOWNLOAD_ERROR "Unable to download the file.\nPlease check your internet connection."
|
||||
IDS_VERSION "Version: "
|
||||
IDS_LICENCE "Licence: "
|
||||
IDS_MAINTAINER "Maintainer: "
|
||||
IDS_APPS_TITLE "Applications"
|
||||
IDS_CATS_TITLE "Categories"
|
||||
IDS_CHOOSE_FOLDER "Please, choose the folder..."
|
||||
IDS_NOTCREATE_REGKEY "Could not create the registry key."
|
||||
IDS_DOWNLOAD_FOLDER "Downloader"
|
||||
IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s is required to run %s. Should %s be installed now?"
|
||||
TTT_HELPBUTTON "Get help about the downloader"
|
||||
TTT_UPDATEBUTTON "Not yet available"
|
||||
TTT_PROFBUTTON "Let you configure the downloader"
|
||||
END
|
66
reactos/base/applications/downloader/lang/es-ES.rc
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
*Spanish Language resource file
|
||||
* Actualizado Javier Remacha 2007-12-01,2007-12-31
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Descargar..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Preferencias"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Carpeta de descarga:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Seleccionar...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Borrar archivos de instalación tras la instalación", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Actualizar servidor:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&Aceptar", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&Cancelar", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "¡Descargar! - Descargador de ReactOS"
|
||||
IDS_WELCOME_TITLE "Bienvenido al descargador de ReactOS"
|
||||
IDS_WELCOME "Por favor selecciona una categoría de la izquierda. Esta es la versión 1.1."
|
||||
IDS_NO_APP_TITLE "Ninguna aplicación seleccionada"
|
||||
IDS_NO_APP "Por favor seleccione una Aplicación antes de pulsar el botón de Descarga, si necesita asistencia por favor pulsa el botón con la interrogación en la esquina superior derecha."
|
||||
IDS_UPDATE_TITLE "Actualizar"
|
||||
IDS_UPDATE "Perdón esta característica no a sido implementada todavía."
|
||||
IDS_HELP_TITLE "Ayuda"
|
||||
IDS_HELP "Selecciona una categoría de la izquierda, entonces selecciona una aplicación y pulsa el botón de descargar. Para actualizar la información de la aplicación pulsa el botón junto al botón de ayuda."
|
||||
IDS_NO_APPS "Perdón, aun no hay ninguna aplicación en esta categoría. Puedes ayudar y añadir más aplicaciones."
|
||||
IDS_CHOOSE_APP "Por favor selecciona una aplicación."
|
||||
IDS_CHOOSE_SUB "Por favor selecciona una subcategoría."
|
||||
IDS_CHOOSE_CATEGORY "Por favor selecciona una categoría."
|
||||
IDS_CHOOSE_BOTH "Por favor selecciona una subcategoria o una aplicación."
|
||||
IDS_XMLERROR_1 "¡No se a encontrado el archivo xml!"
|
||||
IDS_XMLERROR_2 "¡No se ha podido analizar el archivo xml!"
|
||||
IDS_DOWNLOAD_ERROR "Imposible descargar el archivo.\nPor favor verifica tu conexión a internet."
|
||||
IDS_VERSION "Versión: "
|
||||
IDS_LICENCE "Licencia: "
|
||||
IDS_MAINTAINER "Mantenido por: "
|
||||
IDS_APPS_TITLE "Aplicaciones"
|
||||
IDS_CATS_TITLE "Categorias"
|
||||
IDS_CHOOSE_FOLDER "Por favor, seleccione la carpeta..."
|
||||
IDS_NOTCREATE_REGKEY "No se puede crear la llave del registro."
|
||||
IDS_DOWNLOAD_FOLDER "Downloader"
|
||||
IDS_UNABLECREATE_FOLDER "¡Imposible crear una carpeta con este nombre!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s en necesario para ejecutar %s. ¿Desea instalar %s ahora?"
|
||||
TTT_HELPBUTTON "Obtenga ayuda acerca de Downloader"
|
||||
TTT_UPDATEBUTTON "No disponible todavía"
|
||||
TTT_PROFBUTTON "Le permite configurar Downloader"
|
||||
END
|
61
reactos/base/applications/downloader/lang/fr-FR.rc
Normal file
|
@ -0,0 +1,61 @@
|
|||
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Téléchargement..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Annuler", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Préférences"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Répertoire de téléchargement :", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "C&hoisir...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "Supprimer les fichiers après l'installation", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Serveur de mise-à-jour :", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "Annuler", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Télécharger ! - Téléchargeur de ReactOS"
|
||||
IDS_WELCOME_TITLE "Bienvenue dans le Téléchargeur de ReactOS"
|
||||
IDS_WELCOME "Veuillez choisir une catégorie sur la gauche. C'est la version 1.1."
|
||||
IDS_NO_APP_TITLE "Aucune application selectionnée"
|
||||
IDS_NO_APP "Veuillez sélectionner une application avant de cliquer sur le bouton Télécharger, si vous avez besoin d'aide, veuillez cliquer sur le point d'interrogation dans le coin supérieur droit."
|
||||
IDS_UPDATE_TITLE "Mise à jour"
|
||||
IDS_UPDATE "Désolé, cette fonctionnalité n'est pas encore implémentée."
|
||||
IDS_HELP_TITLE "Aide"
|
||||
IDS_HELP "Choisissez une catégorie sur la gauche, puis choisissez une application et cliquez sur le bouton Télécharger. Pour mettre à jour les informations sur l'application, cliquez sur le bouton à côté du bouton d'aide."
|
||||
IDS_NO_APPS "Désolé, il n'y a pas encore d'application dans cette catégorie. Vous pouvez contribuer et ajouter plus d'applications."
|
||||
IDS_CHOOSE_APP "Veuillez choisir une application."
|
||||
IDS_CHOOSE_SUB "Veuillez choisir une sous-catégorie."
|
||||
IDS_CHOOSE_CATEGORY "Veuillez choisir une catégorie."
|
||||
IDS_CHOOSE_BOTH "Veuillez choisir une sous-catégorie ou une application."
|
||||
IDS_XMLERROR_1 "Impossible de trouver le fichier xml !"
|
||||
IDS_XMLERROR_2 "Impossible d'analyser le fichier xml !"
|
||||
IDS_DOWNLOAD_ERROR "Impossible de télécharger le fichier.\nVeuillez vérifier votre connexion Internet."
|
||||
IDS_VERSION "Version: "
|
||||
IDS_LICENCE "Licence: "
|
||||
IDS_MAINTAINER "Maintainer: "
|
||||
IDS_APPS_TITLE "Applications"
|
||||
IDS_CATS_TITLE "Catégories"
|
||||
IDS_CHOOSE_FOLDER "Veuillez choisir le répertoire..."
|
||||
IDS_NOTCREATE_REGKEY "Échec lors de la création de la clé registre."
|
||||
IDS_DOWNLOAD_FOLDER "Downloader"
|
||||
IDS_UNABLECREATE_FOLDER "Échec lors du répertoire avec ce nom !"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s est nécessaire pour lancer %s. Voulez-vous installer %s maintenant ?"
|
||||
TTT_HELPBUTTON "Obtenez de l'aide à propros du téléchargeur"
|
||||
TTT_UPDATEBUTTON "Pas encore disponible"
|
||||
TTT_PROFBUTTON "Vous permet de configurer le téléchargeur"
|
||||
END
|
61
reactos/base/applications/downloader/lang/id-ID.rc
Normal file
|
@ -0,0 +1,61 @@
|
|||
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Download..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Batal", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Proferences"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Download folder:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "C&hoose...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Delete installation files after setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Update server:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&Cancel", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
|
||||
IDS_WELCOME_TITLE "Selamat datang di ReactOS Downloader"
|
||||
IDS_WELCOME "Silahkan pilih kategori di sebelah kiri. Ini versi 1.1."
|
||||
IDS_NO_APP_TITLE "Tidak ada aplikasi yang dipilih"
|
||||
IDS_NO_APP "Silahkan pilih Aplikasi sebelum anda mengklik tombol download, jika anda membutuhkan asistensi silahkan klik pada tombol di sudut kanan atas."
|
||||
IDS_UPDATE_TITLE "Mutakhirkan"
|
||||
IDS_UPDATE "Maaf fitur ini belum diimplementasikan."
|
||||
IDS_HELP_TITLE "Bantuan"
|
||||
IDS_HELP "Pilih kategori di sisi kiri, lalu pilih aplikasi dan klik tombol download. Untuk memutakhirkan informasi aplikasi klik tombol disebelah tombol bantuan."
|
||||
IDS_NO_APPS "Maaf, belum ada aplikasi dalam kategori ini. Anda dapat membantu dan menambahkan aplikasi lebih banyak."
|
||||
IDS_CHOOSE_APP "Silahkan pilih aplikasi."
|
||||
IDS_CHOOSE_SUB "Silahkan pilih subkategori."
|
||||
IDS_CHOOSE_CATEGORY "Silahkan pilih kategori."
|
||||
IDS_CHOOSE_BOTH "Silahkan pilih subkategori atau aplikasi."
|
||||
IDS_XMLERROR_1 "Tidak dapat menemukan file xml !"
|
||||
IDS_XMLERROR_2 "Tidak dapat mengurai file xml !"
|
||||
IDS_DOWNLOAD_ERROR "Tidak bisa mendownload file.\nSilahkan periksa koneksi internet anda."
|
||||
IDS_VERSION "Versi: "
|
||||
IDS_LICENCE "Lisensi: "
|
||||
IDS_MAINTAINER "Pemelihara: "
|
||||
IDS_APPS_TITLE "Applications"
|
||||
IDS_CATS_TITLE "Categories"
|
||||
IDS_CHOOSE_FOLDER "Please, choose the folder..."
|
||||
IDS_NOTCREATE_REGKEY "Could not create the registry key."
|
||||
IDS_DOWNLOAD_FOLDER "Downloader"
|
||||
IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s is required to run %s. Should %s be installed now?"
|
||||
TTT_HELPBUTTON "Get help about the downloader"
|
||||
TTT_UPDATEBUTTON "Not yet available"
|
||||
TTT_PROFBUTTON "Let you configure the downloader"
|
||||
END
|
61
reactos/base/applications/downloader/lang/it-IT.rc
Normal file
|
@ -0,0 +1,61 @@
|
|||
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Scarica..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Annulla", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Preferenze"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Cartella dove scaricare:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Scegliere...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Cancellare i file di installazione dopo il setup", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Server per gli aggiornamenti:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&Annulla", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Scarica ! - ReactOS Downloader"
|
||||
IDS_WELCOME_TITLE "Benvenuto al ReactOS Downloader"
|
||||
IDS_WELCOME "Scegli una categoria a sinistra. Questa è la versione 1.1."
|
||||
IDS_NO_APP_TITLE "Nessuna applicazione selezionata"
|
||||
IDS_NO_APP "Scegli una Applicazione prima di premere il bottone Scarica, se serve assistenza clicca sul punto di domanda nell'angolo in alto a destra."
|
||||
IDS_UPDATE_TITLE "Aggiorna"
|
||||
IDS_UPDATE "Funzione non ancora implementata."
|
||||
IDS_HELP_TITLE "Aiuto"
|
||||
IDS_HELP "Scegli una categoria a sinistra, poi scegli una applicazione e clicca il bottone download. Per aggiornare le informazioni sulla applicazione clicca il bottone accanto a quello di aiuto."
|
||||
IDS_NO_APPS "Non ci sono ancora applicazioni in questa categoria. Puoi aiutare aggiungendone altre."
|
||||
IDS_CHOOSE_APP "Scegli una applicazione."
|
||||
IDS_CHOOSE_SUB "Scegli una sottocategoria."
|
||||
IDS_CHOOSE_CATEGORY "Scegli una categoria."
|
||||
IDS_CHOOSE_BOTH "Scegli una sottocategoria o una applicazione."
|
||||
IDS_XMLERROR_1 "File xml non trovato !"
|
||||
IDS_XMLERROR_2 "Impossibile trattare il contenuto del file xml !"
|
||||
IDS_DOWNLOAD_ERROR "Scaricamento del file impossibile.\nVerificare la connessione a Internet."
|
||||
IDS_VERSION "Versione: "
|
||||
IDS_LICENCE "Licenza: "
|
||||
IDS_MAINTAINER "Manutentore: "
|
||||
IDS_APPS_TITLE "Applicazioni"
|
||||
IDS_CATS_TITLE "Categorie"
|
||||
IDS_CHOOSE_FOLDER "Scegliere una cartella..."
|
||||
IDS_NOTCREATE_REGKEY "Impossibile creare la chiave del registry."
|
||||
IDS_DOWNLOAD_FOLDER "Scarica"
|
||||
IDS_UNABLECREATE_FOLDER "Impossibile creare una cartella con questo nome!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s è necessario per la esecuzione di %s. Si vuole procedere alla installazione di %s?"
|
||||
TTT_HELPBUTTON "Informazioni su ReactOS Downloader"
|
||||
TTT_UPDATEBUTTON "Non disponibile"
|
||||
TTT_PROFBUTTON "Permette la configurazione del downloader"
|
||||
END
|
63
reactos/base/applications/downloader/lang/lt-LT.rc
Normal file
|
@ -0,0 +1,63 @@
|
|||
/* Translation by Vytis "CMan" Girdþijauskas (cman@cman.us) */
|
||||
|
||||
LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Siunèiama..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Atðaukti", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Nuostatos"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Siuntø katalogas:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Pasirinkti...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Naikinti diegimo bylas baigus diegimà", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Atnaujinimø serveris:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&Atðaukti", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Download ! - ReactOS atsiuntimø tvarkytuvë"
|
||||
IDS_WELCOME_TITLE "Jus sveikina ReactOS atsiuntimø tvarkytuvë"
|
||||
IDS_WELCOME "Praðome pasirinkti kategorijà kairëje. \nÈia yra versija 1.1."
|
||||
IDS_NO_APP_TITLE "Nepasirinkta programa"
|
||||
IDS_NO_APP "Praðome pasirinkti programà prieð paspaudþiant siuntimo mygtukà, jei jums reikalinga pagalba, praðome spausti ant klaustuko virðutiniame deðiniajame kampe."
|
||||
IDS_UPDATE_TITLE "Atnaujinti"
|
||||
IDS_UPDATE "Atsipraðome, bet ði funkcija dar nesukurta."
|
||||
IDS_HELP_TITLE "Pagalba"
|
||||
IDS_HELP "Pasirinkite kategorijà kairëje, tuomet pasirinkite programà ir spauskite siuntimo mygtukà. Norëdami atnaujinti programos informacijà, spaukite mygtukà, kuris yra ðalia nuostatø mygtuko."
|
||||
IDS_NO_APPS "Atsipraðome, bet ðioje kategorijoje programø dar nëra. Jûs galite padëti pridëdami daugiau programø."
|
||||
IDS_CHOOSE_APP "Praðome pasirinkti programà."
|
||||
IDS_CHOOSE_SUB "Praðome pasirinkti pokategorá."
|
||||
IDS_CHOOSE_CATEGORY "Praðome pasirinkti kategorijà."
|
||||
IDS_CHOOSE_BOTH "Praðome pasirinkti pokategorá arba programà."
|
||||
IDS_XMLERROR_1 "Nepavyko rasti xml bylos!"
|
||||
IDS_XMLERROR_2 "Nepavyko nuskaityti xml bylos!"
|
||||
IDS_DOWNLOAD_ERROR "Nepavyko parsiøsti bylos.\nPraðome patikrinti interneto ryðá."
|
||||
IDS_VERSION "Versija: "
|
||||
IDS_LICENCE "Licencija: "
|
||||
IDS_MAINTAINER "Palaikymas: "
|
||||
IDS_APPS_TITLE "Programos"
|
||||
IDS_CATS_TITLE "Kategorijos"
|
||||
IDS_CHOOSE_FOLDER "Praðome pasirinkti katalogà..."
|
||||
IDS_NOTCREATE_REGKEY "Nepavyko sukurti registro rakto."
|
||||
IDS_DOWNLOAD_FOLDER "Downloader"
|
||||
IDS_UNABLECREATE_FOLDER "Nepavyko sukurti katalogo su ðiuo vardu!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s reikalingas paleisti %s. Diegti %s dabar?"
|
||||
TTT_HELPBUTTON "Pateikia informacijà apie naudojimàsi programa"
|
||||
TTT_UPDATEBUTTON "Dar nëra"
|
||||
TTT_PROFBUTTON "Leidþia konfiguruoti programà"
|
||||
END
|
61
reactos/base/applications/downloader/lang/no-NO.rc
Normal file
|
@ -0,0 +1,61 @@
|
|||
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Nedlasting..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Prosess1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Avbryt", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Innstillinger"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Nedlastingsmappe:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "V&elg...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Slett installasjonsfiler etter innstallering", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Oppdater server:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&Avbryt", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Nedlasting ! - ReactOS Nedlasting"
|
||||
IDS_WELCOME_TITLE "Velkommen til ReactOS Nedlasting"
|
||||
IDS_WELCOME "Vennligst velg en kategori til høyre. Dette er versjon 1.1."
|
||||
IDS_NO_APP_TITLE "Ingen applikasjoner er valgt"
|
||||
IDS_NO_APP "Vennligst velg en applikasjon før du klikker på nedlasting knappen, hvis du trenger hjelp vennligst klikk på spørsmålsmerke knappen på toppen i høyre hjørne."
|
||||
IDS_UPDATE_TITLE "Oppdater"
|
||||
IDS_UPDATE "Beklager denne funksjonen er ikke implementert ennå."
|
||||
IDS_HELP_TITLE "Hjelp"
|
||||
IDS_HELP "Velg en kategori til venstre, også velg en applikasjon og klikk på nedlastings knappen. For å oppdatere applikasjon informasjonen klikk på knappen neste etter hjelp knappen."
|
||||
IDS_NO_APPS "Beklager, det er ingen applikasjoner i denne kategorien ennå. Du kan hjelpe og legge til flere applikasjoner."
|
||||
IDS_CHOOSE_APP "Vennligst velg en applikasjon."
|
||||
IDS_CHOOSE_SUB "Vennligst velg en underkategori."
|
||||
IDS_CHOOSE_CATEGORY "Vennligst velg en kategori."
|
||||
IDS_CHOOSE_BOTH "Vennligst velg en underkategori eller en applikasjon."
|
||||
IDS_XMLERROR_1 "Kan ikke finne xml filen !"
|
||||
IDS_XMLERROR_2 "Kan ikke analysere xml filen !"
|
||||
IDS_DOWNLOAD_ERROR "Ikke mulig å laste ned filen.\nVennligst sjekk din internett forbindelse."
|
||||
IDS_VERSION "Versjon: "
|
||||
IDS_LICENCE "Lisens: "
|
||||
IDS_MAINTAINER "Produsent: "
|
||||
IDS_APPS_TITLE "Applikasjoner"
|
||||
IDS_CATS_TITLE "Kategori"
|
||||
IDS_CHOOSE_FOLDER "Vennligst, velg mappen..."
|
||||
IDS_NOTCREATE_REGKEY "Kan ikke opprette registernøkkel."
|
||||
IDS_DOWNLOAD_FOLDER "Nedlasting"
|
||||
IDS_UNABLECREATE_FOLDER "Ikke mulig å opprette mappe med dette navnet!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s trengs å bli kjørt %s. Skal %s bli innstallert nå?"
|
||||
TTT_HELPBUTTON "Få hjelp om nedlastingen"
|
||||
TTT_UPDATEBUTTON "Ikke ennå tilgjengelig"
|
||||
TTT_PROFBUTTON "La deg konfigurere nedlastingen"
|
||||
END
|
68
reactos/base/applications/downloader/lang/pl-PL.rc
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* translated by Caemyr - Olaf Siejka (Feb, 2008)
|
||||
* Use ReactOS forum PM or IRC to contact me
|
||||
* http://www.reactos.org
|
||||
* IRC: irc.freenode.net #reactos-pl;
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Ściągaj..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Anuluj", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Ustawienia"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Katalog do ściągania:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Wybierz...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Skasuj ściągnięte pliki po zainstalowaniu programu", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Uaktualnij:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&Anuluj", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Ściągnij ! - Menedżer pobierania dla ReactOS"
|
||||
IDS_WELCOME_TITLE "Witamy w Ściągnij dla ReactOS"
|
||||
IDS_WELCOME "Proszę wybrać kategorię po lewej. Wersja programu: 1.1."
|
||||
IDS_NO_APP_TITLE "Nie wybrano programu"
|
||||
IDS_NO_APP "Proszę wybrać program, przed kliknięciem w przycisk Ściągnij. W razie problemów kliknij w znak zapytania, w prawym górnym rogu okna."
|
||||
IDS_UPDATE_TITLE "Uaktualnij"
|
||||
IDS_UPDATE "Przepraszamy, ta opcja nie jest jeszcze dostępna."
|
||||
IDS_HELP_TITLE "Pomoc"
|
||||
IDS_HELP "Wybierz kategorię po lewej, następnie wybierz program i kliknij w przycisk Ściągnij. Aby uaktualnić listę programów, naciśnij przycisk obok przycisku Pomocy."
|
||||
IDS_NO_APPS "Przepraszamy, nie ma programów w tej kategorii. Możesz pomóc nam w wyborze nowych programów."
|
||||
IDS_CHOOSE_APP "Proszę wybrać program."
|
||||
IDS_CHOOSE_SUB "Proszę wybrać podkategorię."
|
||||
IDS_CHOOSE_CATEGORY "Proszę wybrać kategorię."
|
||||
IDS_CHOOSE_BOTH "Proszę wybrać podkategorię albo program."
|
||||
IDS_XMLERROR_1 "Plik XML nie został znaleziony !"
|
||||
IDS_XMLERROR_2 "Nie udało się przetworzyć pliku XML !"
|
||||
IDS_DOWNLOAD_ERROR "Sciąganie pliku nieudane.\nProszę sprawdzić połączenie z internetem."
|
||||
IDS_VERSION "Wersja: "
|
||||
IDS_LICENCE "Licenccja: "
|
||||
IDS_MAINTAINER "Opiekun: "
|
||||
IDS_APPS_TITLE "Programy"
|
||||
IDS_CATS_TITLE "Kategorie"
|
||||
IDS_CHOOSE_FOLDER "Proszę wybrać katalog..."
|
||||
IDS_NOTCREATE_REGKEY "Nie udało się utworzyć kluczy rejestru."
|
||||
IDS_DOWNLOAD_FOLDER "Pobrane"
|
||||
IDS_UNABLECREATE_FOLDER "Nie udało się stworzyć katalogu o tej nazwie!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s jest wymagany do uruchomienia %s. Czy chcesz zainstalować %s w tej chwili?"
|
||||
TTT_HELPBUTTON "Pomoc Menedżera pobierania"
|
||||
TTT_UPDATEBUTTON "Niedostępne"
|
||||
TTT_PROFBUTTON "Ustawienia Menedżera pobierania"
|
||||
END
|
63
reactos/base/applications/downloader/lang/ru-RU.rc
Normal file
|
@ -0,0 +1,63 @@
|
|||
//Russian language file. (Dmitry Chapyshev, 2007.06.21)
|
||||
|
||||
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Загрузка..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 17, SS_CENTER
|
||||
PUSHBUTTON "Отмена", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Настройки"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Папка для закачки:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Выбрать...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Удалять установочные файлы после установки", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Сервер обновлений:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "О&тмена", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Скачать! - Менеджер закачек ReactOS"
|
||||
IDS_WELCOME_TITLE "Добро пожаловать в Менеджер закачек ReactOS"
|
||||
IDS_WELCOME "Пожалуйста выберите категорию справа. Версия 1.1"
|
||||
IDS_NO_APP_TITLE "Приложение не выбрано"
|
||||
IDS_NO_APP "Пожалуйста, выберите приложение прежде, чем нажать кнопку загрузки. Если вам нужна справка, то нажмите кнопку со знаком вопроса в верхнем правом углу."
|
||||
IDS_UPDATE_TITLE "Обновить"
|
||||
IDS_UPDATE "Извините, данная возможность на данным момент недоступна."
|
||||
IDS_HELP_TITLE "Справка"
|
||||
IDS_HELP "Выберите категорию слева, затем выберите приложение и нажмите кнопку загрузки. Для получения информации об обновлениях нажмите кнопку рядом с кнопкой справки."
|
||||
IDS_NO_APPS "Извените, на данный момент в этой категории приложений нет, но вы можете помочь добавить их."
|
||||
IDS_CHOOSE_APP "Пожалуйста выберите приложение."
|
||||
IDS_CHOOSE_SUB "Пожалуйста выберите подкатегорию."
|
||||
IDS_CHOOSE_CATEGORY "Пожалуйста выберите категорию."
|
||||
IDS_CHOOSE_BOTH "Пожалуйста выберите подкатегорию или приложение."
|
||||
IDS_XMLERROR_1 "Не удалось найти xml-файл!"
|
||||
IDS_XMLERROR_2 "Не удалось обработать xml-файл!"
|
||||
IDS_DOWNLOAD_ERROR "Не удается загрузить файл.\nПожалуйста проверьте ваше подключение к интернет."
|
||||
IDS_VERSION "Версия: "
|
||||
IDS_LICENCE "Лицензия: "
|
||||
IDS_MAINTAINER "Производитель: "
|
||||
IDS_APPS_TITLE "Приложения"
|
||||
IDS_CATS_TITLE "Категории"
|
||||
IDS_CHOOSE_FOLDER "Пожалуйства выберите папку..."
|
||||
IDS_NOTCREATE_REGKEY "Не удалось создать ключ в реестре."
|
||||
IDS_DOWNLOAD_FOLDER "Downloader"
|
||||
IDS_UNABLECREATE_FOLDER "Не удалось создать папку с таким именем!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s требуется для запуска %s. Установить %s?"
|
||||
TTT_HELPBUTTON "Показать справку программы"
|
||||
TTT_UPDATEBUTTON "Сейчас недоступно"
|
||||
TTT_PROFBUTTON "Выполнить настройку программы"
|
||||
END
|
67
reactos/base/applications/downloader/lang/sk-SK.rc
Normal file
|
@ -0,0 +1,67 @@
|
|||
/* TRANSLATOR: Mário Kaèmár /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||
* DATE OF TR: 21-01-2008
|
||||
* LastChange: 31-10-2008
|
||||
*/
|
||||
|
||||
|
||||
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "S<>ahujem ..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Zruši<C5A1>", 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<>ahovania:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Vybra<72> ...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Odstráni<6E> inštalaèné súbory po nainštalovaní", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Aktualizova<76> server:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&Zruši<C5A1>", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "<22>ahaj! - Downloader systému ReactOS"
|
||||
IDS_WELCOME_TITLE "Vitajte v programe Downloader systému ReactOS"
|
||||
IDS_WELCOME "Vyberte, prosím, kategóriu na ¾avej strane. Toto je verzia 1.1."
|
||||
IDS_NO_APP_TITLE "Nie je vybraný žiadny program"
|
||||
IDS_NO_APP "Vyberte, prosím, program predtým než kliknete na tlaèidlo stiahnu<6E>. Ak potrebujete pomoc, kliknite, prosím, na tlaèidlo otáznika v pravom hornom rohu."
|
||||
IDS_UPDATE_TITLE "Aktualizova<76>"
|
||||
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<6E>. Pre aktualizáciu informácii o programe kliknite na tlaèidlo ved¾a tlaèidla pomoc."
|
||||
IDS_NO_APPS "Prepáète, ale zatia¾ sa v tejto kategórii nenachádzajú žiadne programy. Môžete pomôc<C3B4> a prida<64> 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<6A> súbor xml!"
|
||||
IDS_XMLERROR_2 "Nepodarilo sa správne analyzova<76> súbor xml!"
|
||||
IDS_DOWNLOAD_ERROR "Nepodarilo sa stiahnu<6E> súbor.\nSkontrolujte, prosím, pripojenie do siete internet."
|
||||
IDS_VERSION "Verzia: "
|
||||
IDS_LICENCE "Licencia: "
|
||||
IDS_MAINTAINER "Údržbár: " //Maintainer
|
||||
IDS_APPS_TITLE "Programy"
|
||||
IDS_CATS_TITLE "Kategórie"
|
||||
IDS_CHOOSE_FOLDER "Vyberte, prosím, prieèinok ..."
|
||||
IDS_NOTCREATE_REGKEY "Nepodarilo sa vytvori<72> k¾úè registra."
|
||||
IDS_DOWNLOAD_FOLDER "Downloader"
|
||||
IDS_UNABLECREATE_FOLDER "Nie je možné vytvori<72> prieèinok s týmto názvom!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s je potrebný pre spustenie %s. Má sa %s nainštalova<76> teraz?"
|
||||
TTT_HELPBUTTON "Získa<6B> nápoveï k programu downloader"
|
||||
TTT_UPDATEBUTTON "Zatia¾ nie je k dispozícií"
|
||||
TTT_PROFBUTTON "Dovolí Vám konfigurova<76> program downloader"
|
||||
END
|
69
reactos/base/applications/downloader/lang/uk-UA.rc
Normal file
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* PROJECT: ReactOS Downloader
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: rosapps/downloader/lang/uk-UA.rc
|
||||
* PURPOSE: Ukraianian Language File for Downloader
|
||||
* TRANSLATOR: Artem Reznikov
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_DOWNLOAD DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Çàâàíòàæåííÿ..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
|
||||
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
|
||||
PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_PROF DIALOGEX 6, 6, 267, 110
|
||||
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Íàñòðîéêè"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Ïàïêà äëÿ çàâàíòàæåííÿ:", -1, 6, 10, 140, 8
|
||||
EDITTEXT IDC_DOWNLOAD_FOLDER_EDIT, 6, 20, 205, 14, WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Âèáðàòè...", IDC_CHOOSE_BUTTON, 216, 20, 45, 14
|
||||
AUTOCHECKBOX "&Âèäàëÿòè íàñòàíîâí³ ôàéëè ï³ñëÿ óñòàíîâêè", IDC_DELINST_FILES_CHECKBOX, 8, 40, 210, 10, WS_GROUP
|
||||
LTEXT "Ñåðâåð îíîâëåíü:", -1, 6, 55, 140, 8
|
||||
EDITTEXT IDC_UPDATE_SERVER_EDIT, 6, 65, 255, 14, WS_VISIBLE | WS_TABSTOP
|
||||
DEFPUSHBUTTON "&OK", IDOK, 147, 90, 54, 15
|
||||
PUSHBUTTON "&Ñêàñóâàòè", IDCANCEL, 207, 90, 54, 15
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_WINDOW_TITLE "Çàâàíòàæèòè ! - Çàâàíòàæóâà÷ ReactOS"
|
||||
IDS_WELCOME_TITLE "Ëàñêàâî ïðîñèìî ó Çàâàíòàæóâà÷ ReactOS"
|
||||
IDS_WELCOME "Áóäü ëàñêà âèáåð³òü êàòåãîð³þ çë³âà. Öå âåðñ³ÿ 1.1."
|
||||
IDS_NO_APP_TITLE "Äîäàòîê íå âèáðàíèé"
|
||||
IDS_NO_APP "Áóäü ëàñêà, âèáåð³òü äîäàòîê ïåðø í³æ íàòèñíóòè êíîïêó çàâàíòàæåííÿ. ßêùî Âàì ïîòð³áíà äîïîìîãà, íàòèñí³òü êíîïêó ç³ çíàêîì ïèòàííÿ ó âåðõíüîìó ïðàâîìó êóòêó."
|
||||
IDS_UPDATE_TITLE "Îíîâèòè"
|
||||
IDS_UPDATE "Âèáà÷òå, äàíà ìîæëèâ³ñòü ùå íåäîñòóïíà."
|
||||
IDS_HELP_TITLE "Äîâ³äêà"
|
||||
IDS_HELP "Âèáåð³òü êàòåãîð³þ çë³âà, ïîò³ì âèáåð³òü äîäàòîê ³ íàòèñí³òü êíîïêó çàâàíòàæåííÿ. Äëÿ îòðèìàííÿ ³íôîðìàö³¿ ïðî îíîâëåííÿ íàòèñí³òü êíîïêó ïîðÿä ç êíîïêîþ äîâ³äêè."
|
||||
IDS_NO_APPS "Âèáà÷òå, â ö³é êàòåãî𳿠ùå íåìຠäîäàòê³â. Âè ìîæåòå äîïîìîãòè ³ äîäàòè á³ëüøå äîäàòê³â."
|
||||
IDS_CHOOSE_APP "Áóäü ëàñêà âèáåð³òü äîäàòîê."
|
||||
IDS_CHOOSE_SUB "Áóäü ëàñêà âèáåð³òü ï³äêàòåãîð³þ."
|
||||
IDS_CHOOSE_CATEGORY "Áóäü ëàñêà âèáåð³òü êàòåãîð³þ."
|
||||
IDS_CHOOSE_BOTH "Áóäü ëàñêà âèáåð³òü ï³äêàòåãîð³þ àáî äîäàòîê."
|
||||
IDS_XMLERROR_1 "Íå âäàëîñÿ çíàéòè ôàéë XML !"
|
||||
IDS_XMLERROR_2 "Íå âäàëîñÿ îáðîáèòè ôàéë XML !"
|
||||
IDS_DOWNLOAD_ERROR "Íåìîæëèâî çàâàíòàæèòè ôàéë.\nÁóäü ëàñêà ïåðåâ³ðòå âàøå ³íòåðíåò-ç'ºäíàííÿ."
|
||||
IDS_VERSION "Âåðñ³ÿ: "
|
||||
IDS_LICENCE "˳öåíç³ÿ: "
|
||||
IDS_MAINTAINER "Âèðîáíèê: "
|
||||
IDS_APPS_TITLE "Äîäàòêè"
|
||||
IDS_CATS_TITLE "Êàòåãîð³¿"
|
||||
IDS_CHOOSE_FOLDER "Áóäü ëàñêà âèáåð³òü ïàïêó..."
|
||||
IDS_NOTCREATE_REGKEY "Íå âäàëîñÿ ñòâîðèòè êëþ÷ ó ðåºñòð³."
|
||||
IDS_DOWNLOAD_FOLDER "Downloader"
|
||||
IDS_UNABLECREATE_FOLDER "Íå âäàëîñÿ ñòâîðèòè ïàïêó ç òàêèì ³ì'ÿì!"
|
||||
IDS_UPDATE_URL "http://svn.reactos.org"
|
||||
IDS_INSTALL_DEP "%s ïîòð³áíèé ùîá çàïóñòèòè %s. Âñòàíîâèòè %s çàðàç?"
|
||||
TTT_HELPBUTTON "Îòðèìàéòè äîïîìîãó ïðî çàâàíòàæóâà÷"
|
||||
TTT_UPDATEBUTTON "Ïîêè ùî íå äîñòóïíî"
|
||||
TTT_PROFBUTTON "Íàëàøòóâàòè çàâàíòàæóâà÷"
|
||||
END
|
922
reactos/base/applications/downloader/main.c
Normal file
|
@ -0,0 +1,922 @@
|
|||
/* PROJECT: ReactOS Downloader
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: base/applications/downloader/xml.c
|
||||
* PURPOSE: Main program
|
||||
* PROGRAMMERS: Maarten Bosma, Lester Kortenhoeven, Dmitry Chapyshev
|
||||
*/
|
||||
|
||||
#include <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;
|
||||
}
|
36
reactos/base/applications/downloader/patches/d2fix.c
Normal file
|
@ -0,0 +1,36 @@
|
|||
#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;
|
||||
}
|
71
reactos/base/applications/downloader/resources.h
Normal file
|
@ -0,0 +1,71 @@
|
|||
/* Icons */
|
||||
#define IDI_MAIN 0x0
|
||||
#define IDI_UPDATE 5000
|
||||
#define IDI_HELP 5001
|
||||
#define IDI_PROF 5002
|
||||
/* Bitmaps */
|
||||
#define IDB_UNDERLINE 0x100
|
||||
#define IDB_LOGO 0x101
|
||||
#define IDB_DOWNLOAD 0x102
|
||||
#define IDB_UNINSTALL 0x103
|
||||
#define IDB_TREEVIEW_ICON_0 0x900
|
||||
#define IDB_TREEVIEW_ICON_1 0x901
|
||||
#define IDB_TREEVIEW_ICON_2 0x902
|
||||
#define IDB_TREEVIEW_ICON_3 0x903
|
||||
#define IDB_TREEVIEW_ICON_4 0x904
|
||||
#define IDB_TREEVIEW_ICON_5 0x905
|
||||
#define IDB_TREEVIEW_ICON_6 0x906
|
||||
#define IDB_TREEVIEW_ICON_7 0x907
|
||||
#define IDB_TREEVIEW_ICON_8 0x908
|
||||
#define IDB_TREEVIEW_ICON_9 0x909
|
||||
#define IDB_TREEVIEW_ICON_10 0x910
|
||||
#define IDB_TREEVIEW_ICON_11 0x911
|
||||
#define IDB_TREEVIEW_ICON_12 0x912
|
||||
#define IDB_TREEVIEW_ICON_13 0x913
|
||||
/* Dialogs */
|
||||
#define IDD_DOWNLOAD 0x100
|
||||
#define IDD_PROF 6000
|
||||
/* Controls */
|
||||
#define IDC_PROGRESS 0x1000
|
||||
#define IDC_STATUS 0x1001
|
||||
#define IDC_REMOVE 0x1002
|
||||
#define IDC_DOWNLOAD_FOLDER_EDIT 0x1003
|
||||
#define IDC_CHOOSE_BUTTON 0x1004
|
||||
#define IDC_UPDATE_SERVER_EDIT 0x1005
|
||||
#define IDC_DELINST_FILES_CHECKBOX 0x1006
|
||||
/* Strings */
|
||||
#define IDS_WINDOW_TITLE 0
|
||||
#define IDS_WELCOME_TITLE 1
|
||||
#define IDS_WELCOME 2
|
||||
#define IDS_NO_APP_TITLE 3
|
||||
#define IDS_NO_APP 4
|
||||
#define IDS_UPDATE_TITLE 5
|
||||
#define IDS_UPDATE 6
|
||||
#define IDS_HELP_TITLE 7
|
||||
#define IDS_HELP 8
|
||||
#define IDS_NO_APPS 9
|
||||
#define IDS_CHOOSE_APP 10
|
||||
#define IDS_CHOOSE_SUB 11
|
||||
#define IDS_CHOOSE_CATEGORY 12
|
||||
#define IDS_CHOOSE_BOTH 13
|
||||
#define IDS_XMLERROR_1 14
|
||||
#define IDS_XMLERROR_2 15
|
||||
#define IDS_DOWNLOAD_ERROR 16
|
||||
#define IDS_VERSION 17
|
||||
#define IDS_LICENCE 18
|
||||
#define IDS_MAINTAINER 19
|
||||
#define IDS_APPS_TITLE 20
|
||||
#define IDS_CATS_TITLE 21
|
||||
#define IDS_CHOOSE_FOLDER 22
|
||||
#define IDS_NOTCREATE_REGKEY 23
|
||||
#define IDS_DOWNLOAD_FOLDER 24
|
||||
#define IDS_UNABLECREATE_FOLDER 25
|
||||
#define IDS_UPDATE_URL 26
|
||||
#define IDS_INSTALL_DEP 27
|
||||
/* Tool tips */
|
||||
#define TTT_HELPBUTTON 50
|
||||
#define TTT_UPDATEBUTTON 51
|
||||
#define TTT_PROFBUTTON 52
|
||||
/* Other */
|
||||
#define STRING_COUNT 20
|
||||
#define MAX_STRING_LENGHT 0x100
|
BIN
reactos/base/applications/downloader/resources/0.bmp
Normal file
After Width: | Height: | Size: 822 B |
BIN
reactos/base/applications/downloader/resources/1.bmp
Normal file
After Width: | Height: | Size: 822 B |
BIN
reactos/base/applications/downloader/resources/10.bmp
Normal file
After Width: | Height: | Size: 824 B |
BIN
reactos/base/applications/downloader/resources/11.bmp
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
reactos/base/applications/downloader/resources/12.bmp
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
reactos/base/applications/downloader/resources/13.bmp
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
reactos/base/applications/downloader/resources/2.bmp
Normal file
After Width: | Height: | Size: 822 B |
BIN
reactos/base/applications/downloader/resources/3.bmp
Normal file
After Width: | Height: | Size: 822 B |
BIN
reactos/base/applications/downloader/resources/4.bmp
Normal file
After Width: | Height: | Size: 822 B |
BIN
reactos/base/applications/downloader/resources/5.bmp
Normal file
After Width: | Height: | Size: 822 B |
BIN
reactos/base/applications/downloader/resources/6.bmp
Normal file
After Width: | Height: | Size: 822 B |
BIN
reactos/base/applications/downloader/resources/7.bmp
Normal file
After Width: | Height: | Size: 822 B |
BIN
reactos/base/applications/downloader/resources/8.bmp
Normal file
After Width: | Height: | Size: 822 B |
BIN
reactos/base/applications/downloader/resources/9.bmp
Normal file
After Width: | Height: | Size: 824 B |
BIN
reactos/base/applications/downloader/resources/download.bmp
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
reactos/base/applications/downloader/resources/help.ico
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
reactos/base/applications/downloader/resources/logo.bmp
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
reactos/base/applications/downloader/resources/main.ico
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
reactos/base/applications/downloader/resources/preferences.ico
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
reactos/base/applications/downloader/resources/underline.bmp
Normal file
After Width: | Height: | Size: 170 B |
BIN
reactos/base/applications/downloader/resources/uninstall.bmp
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
reactos/base/applications/downloader/resources/update.ico
Normal file
After Width: | Height: | Size: 9.5 KiB |
40
reactos/base/applications/downloader/rsrc.rc
Normal file
|
@ -0,0 +1,40 @@
|
|||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
||||
IDI_MAIN ICON DISCARDABLE "resources/main.ico"
|
||||
IDI_UPDATE ICON DISCARDABLE "resources/update.ico"
|
||||
IDI_HELP ICON DISCARDABLE "resources/help.ico"
|
||||
IDI_PROF ICON DISCARDABLE "resources/preferences.ico"
|
||||
IDB_LOGO BITMAP DISCARDABLE "resources/logo.bmp"
|
||||
IDB_DOWNLOAD BITMAP DISCARDABLE "resources/download.bmp"
|
||||
IDB_UNINSTALL BITMAP DISCARDABLE "resources/uninstall.bmp"
|
||||
IDB_UNDERLINE BITMAP DISCARDABLE "resources/underline.bmp"
|
||||
IDB_TREEVIEW_ICON_0 BITMAP DISCARDABLE "resources/0.bmp"
|
||||
IDB_TREEVIEW_ICON_1 BITMAP DISCARDABLE "resources/1.bmp"
|
||||
IDB_TREEVIEW_ICON_2 BITMAP DISCARDABLE "resources/2.bmp"
|
||||
IDB_TREEVIEW_ICON_3 BITMAP DISCARDABLE "resources/3.bmp"
|
||||
IDB_TREEVIEW_ICON_4 BITMAP DISCARDABLE "resources/4.bmp"
|
||||
IDB_TREEVIEW_ICON_5 BITMAP DISCARDABLE "resources/5.bmp"
|
||||
IDB_TREEVIEW_ICON_6 BITMAP DISCARDABLE "resources/6.bmp"
|
||||
IDB_TREEVIEW_ICON_7 BITMAP DISCARDABLE "resources/7.bmp"
|
||||
IDB_TREEVIEW_ICON_8 BITMAP DISCARDABLE "resources/8.bmp"
|
||||
IDB_TREEVIEW_ICON_9 BITMAP DISCARDABLE "resources/9.bmp"
|
||||
IDB_TREEVIEW_ICON_10 BITMAP DISCARDABLE "resources/10.bmp"
|
||||
IDB_TREEVIEW_ICON_11 BITMAP DISCARDABLE "resources/11.bmp"
|
||||
IDB_TREEVIEW_ICON_12 BITMAP DISCARDABLE "resources/12.bmp"
|
||||
IDB_TREEVIEW_ICON_13 BITMAP DISCARDABLE "resources/13.bmp"
|
||||
|
||||
|
||||
#include "lang/bg-BG.rc"
|
||||
#include "lang/de-DE.rc"
|
||||
#include "lang/el-GR.rc"
|
||||
#include "lang/en-US.rc"
|
||||
#include "lang/es-ES.rc"
|
||||
#include "lang/fr-FR.rc"
|
||||
#include "lang/id-ID.rc"
|
||||
#include "lang/it-IT.rc"
|
||||
#include "lang/no-NO.rc"
|
||||
#include "lang/pl-PL.rc"
|
||||
#include "lang/lt-LT.rc"
|
||||
#include "lang/ru-RU.rc"
|
||||
#include "lang/sk-SK.rc"
|
||||
#include "lang/uk-UA.rc"
|
26
reactos/base/applications/downloader/structures.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
|
||||
struct Application
|
||||
{
|
||||
WCHAR Name[0x100];
|
||||
WCHAR RegName[0x100];
|
||||
WCHAR Version[0x100];
|
||||
WCHAR Maintainer[0x100];
|
||||
WCHAR Licence[0x100];
|
||||
WCHAR Description[0x400];
|
||||
WCHAR Location[0x100];
|
||||
WCHAR Depends[0x100];
|
||||
WCHAR PostInstallAction[0x100];
|
||||
struct Application* Next;
|
||||
};
|
||||
|
||||
struct Category
|
||||
{
|
||||
WCHAR Name[0x100];
|
||||
//WCHAR Description[0x100];
|
||||
int Icon;
|
||||
HANDLE TreeviewItem;
|
||||
struct Application* Apps;
|
||||
struct Category* Next;
|
||||
struct Category* Children;
|
||||
struct Category* Parent;
|
||||
};
|
236
reactos/base/applications/downloader/xml.c
Normal file
|
@ -0,0 +1,236 @@
|
|||
/* PROJECT: ReactOS Downloader
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: base\applications\downloader\xml.c
|
||||
* PURPOSE: Parsing of application information xml files
|
||||
* PROGRAMMERS: Maarten Bosma, Lester Kortenhoeven
|
||||
*/
|
||||
|
||||
#include <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);
|
||||
}
|
|
@ -41,6 +41,8 @@ base\applications\cmdutils\lodctr\lodctr.exe 1
|
|||
base\applications\cmdutils\more\more.exe 1
|
||||
base\applications\cmdutils\xcopy\xcopy.exe 1
|
||||
base\applications\control\control.exe 1
|
||||
base\applications\downloader\downloader.exe 1
|
||||
base\applications\downloader\downloader.xml 1
|
||||
base\applications\dxdiag\dxdiag.exe 1
|
||||
base\applications\fontview\fontview.exe 1
|
||||
base\applications\mscutils\devmgmt\devmgmt.exe 1
|
||||
|
|