From ef1f939e4f6e35e4b6659271aead391b78133205 Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Mon, 15 Oct 2007 20:45:06 +0000 Subject: [PATCH] Dmitry Chapyshev - Get rid of hardcoded path to downloader.xml, it properly gets the path now. Also changed the logic slightly: now the file is firstly being searched in the local folder, and only then in system32. - Do a Settings dialog (choose a directory where to download files to, if a user wants to remove installation files after the app has been installed), all options are stored / loaded from the registry. Only the "Update server" option does not work now. - A few GUI/designs fixes and improvements, now it looks better. - Add a button for Settings in the main waindow. - Fixed code formatting in a few places. - Change bitmap to icons on the Update and Help buttons, imho it's the proper way. - Add 3 new categories to the list. - Other misc fixes. - All translated resources are updated, so no translations are lost! svn path=/trunk/; revision=29614 --- rosapps/downloader/download.c | 286 +++++++------ rosapps/downloader/downloader.xml | 6 + rosapps/downloader/lang/de-DE.rc | 28 +- rosapps/downloader/lang/en-US.rc | 28 +- rosapps/downloader/lang/es-ES.rc | 28 +- rosapps/downloader/lang/fr-FR.rc | 28 +- rosapps/downloader/lang/id-ID.rc | 28 +- rosapps/downloader/lang/it-IT.rc | 28 +- rosapps/downloader/lang/ru-RU.rc | 38 +- rosapps/downloader/lang/uk-UA.rc | 28 +- rosapps/downloader/main.c | 429 ++++++++++++++++--- rosapps/downloader/resources.h | 67 +-- rosapps/downloader/resources/11.bmp | Bin 0 -> 1080 bytes rosapps/downloader/resources/12.bmp | Bin 0 -> 1080 bytes rosapps/downloader/resources/13.bmp | Bin 0 -> 1080 bytes rosapps/downloader/resources/help.bmp | Bin 3126 -> 0 bytes rosapps/downloader/resources/help.ico | Bin 0 -> 9774 bytes rosapps/downloader/resources/preferences.ico | Bin 0 -> 9774 bytes rosapps/downloader/resources/update.bmp | Bin 3126 -> 0 bytes rosapps/downloader/resources/update.ico | Bin 0 -> 9774 bytes rosapps/downloader/rsrc.rc | 10 +- rosapps/downloader/xml.c | 4 +- 22 files changed, 790 insertions(+), 246 deletions(-) create mode 100644 rosapps/downloader/resources/11.bmp create mode 100644 rosapps/downloader/resources/12.bmp create mode 100644 rosapps/downloader/resources/13.bmp delete mode 100644 rosapps/downloader/resources/help.bmp create mode 100644 rosapps/downloader/resources/help.ico create mode 100644 rosapps/downloader/resources/preferences.ico delete mode 100644 rosapps/downloader/resources/update.bmp create mode 100644 rosapps/downloader/resources/update.ico diff --git a/rosapps/downloader/download.c b/rosapps/downloader/download.c index 9780e021a9b..78fb19007db 100644 --- a/rosapps/downloader/download.c +++ b/rosapps/downloader/download.c @@ -5,6 +5,7 @@ * 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 @@ -52,17 +53,16 @@ typedef struct _IBindStatusCallbackImpl static HRESULT WINAPI dlQueryInterface(IBindStatusCallback* This, REFIID riid, void** ppvObject) { - if (NULL == ppvObject) + if (NULL == ppvObject) { - return E_POINTER; + return E_POINTER; } - if (IsEqualIID(riid, &IID_IUnknown) || - IsEqualIID(riid, &IID_IBindStatusCallback)) + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IBindStatusCallback)) { - IBindStatusCallback_AddRef( This ); - *ppvObject = This; - return S_OK; + IBindStatusCallback_AddRef( This ); + *ppvObject = This; + return S_OK; } return E_NOINTERFACE; @@ -71,120 +71,119 @@ dlQueryInterface(IBindStatusCallback* This, REFIID riid, void** ppvObject) static ULONG WINAPI dlAddRef(IBindStatusCallback* iface) { - IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface; + IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface; - return InterlockedIncrement(&This->ref); + return InterlockedIncrement(&This->ref); } static ULONG WINAPI dlRelease(IBindStatusCallback* iface) { - IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface; - DWORD ref = InterlockedDecrement(&This->ref); + IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface; + DWORD ref = InterlockedDecrement(&This->ref); - if( !ref ) + if( !ref ) { - DestroyWindow( This->hDialog ); - HeapFree(GetProcessHeap(), 0, This); + DestroyWindow( This->hDialog ); + HeapFree(GetProcessHeap(), 0, This); } - return ref; + return ref; } static HRESULT WINAPI dlOnStartBinding(IBindStatusCallback* iface, DWORD dwReserved, IBinding* pib) { - DPRINT1("OnStartBinding not implemented\n"); + DPRINT1("OnStartBinding not implemented\n"); - return S_OK; + return S_OK; } static HRESULT WINAPI dlGetPriority(IBindStatusCallback* iface, LONG* pnPriority) { - DPRINT1("GetPriority not implemented\n"); + DPRINT1("GetPriority not implemented\n"); - return S_OK; + return S_OK; } static HRESULT WINAPI dlOnLowResource( IBindStatusCallback* iface, DWORD reserved) { - DPRINT1("OnLowResource not implemented\n"); + DPRINT1("OnLowResource not implemented\n"); - return S_OK; + 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]; + IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface; + HWND Item; + LONG r; + WCHAR OldText[100]; - Item = GetDlgItem(This->hDialog, IDC_PROGRESS); - if (NULL != Item && 0 != ulProgressMax) + Item = GetDlgItem(This->hDialog, IDC_PROGRESS); + if (NULL != Item && 0 != ulProgressMax) { - SendMessageW(Item, PBM_SETPOS, (ulProgress * 100) / ulProgressMax, 0); + SendMessageW(Item, PBM_SETPOS, (ulProgress * 100) / ulProgressMax, 0); } - Item = GetDlgItem(This->hDialog, IDC_STATUS); - if (NULL != Item && NULL != szStatusText) + 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_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); + SendMessageW(Item, WM_SETTEXT, 0, (LPARAM) szStatusText); } } - SetLastError(0); - r = GetWindowLongPtrW(This->hDialog, GWLP_USERDATA); - if (0 != r || 0 != GetLastError()) + SetLastError(0); + r = GetWindowLongPtrW(This->hDialog, GWLP_USERDATA); + if (0 != r || 0 != GetLastError()) { - *This->pbCancelled = TRUE; - DPRINT("Cancelled\n"); - return E_ABORT; + *This->pbCancelled = TRUE; + DPRINT("Cancelled\n"); + return E_ABORT; } - return S_OK; + return S_OK; } static HRESULT WINAPI dlOnStopBinding(IBindStatusCallback* iface, HRESULT hresult, LPCWSTR szError) { - DPRINT1("OnStopBinding not implemented\n"); + DPRINT1("OnStopBinding not implemented\n"); - return S_OK; + return S_OK; } static HRESULT WINAPI dlGetBindInfo(IBindStatusCallback* iface, DWORD* grfBINDF, BINDINFO* pbindinfo) { - DPRINT1("GetBindInfo not implemented\n"); + DPRINT1("GetBindInfo not implemented\n"); - return S_OK; + return S_OK; } static HRESULT WINAPI dlOnDataAvailable(IBindStatusCallback* iface, DWORD grfBSCF, DWORD dwSize, FORMATETC* pformatetc, STGMEDIUM* pstgmed) { - DPRINT1("OnDataAvailable implemented\n"); + DPRINT1("OnDataAvailable implemented\n"); - return S_OK; + return S_OK; } static HRESULT WINAPI dlOnObjectAvailable(IBindStatusCallback* iface, REFIID riid, IUnknown* punk) { - DPRINT1("OnObjectAvailable implemented\n"); + DPRINT1("OnObjectAvailable implemented\n"); - return S_OK; + return S_OK; } static const IBindStatusCallbackVtbl dlVtbl = @@ -205,93 +204,124 @@ static const IBindStatusCallbackVtbl dlVtbl = static IBindStatusCallback* CreateDl(HWND Dlg, BOOL *pbCancelled) { - IBindStatusCallbackImpl *This; + IBindStatusCallbackImpl *This; - This = HeapAlloc(GetProcessHeap(), 0, sizeof(IBindStatusCallbackImpl)); - This->vtbl = &dlVtbl; - This->ref = 1; - This->hDialog = Dlg; - This->pbCancelled = pbCancelled; + This = HeapAlloc(GetProcessHeap(), 0, sizeof(IBindStatusCallbackImpl)); + This->vtbl = &dlVtbl; + This->ref = 1; + This->hDialog = Dlg; + This->pbCancelled = pbCancelled; - return (IBindStatusCallback*) This; + 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; + //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; - /* built the path for the download */ - p = wcsrchr(SelectedApplication->Location, L'/'); - if (NULL == p) + /* built the path for the download */ + p = wcsrchr(SelectedApplication->Location, L'/'); + if (NULL == p) { - goto end; + goto end; } - if (! GetTempPathW(MAX_PATH, path)) - { - goto end; - } - wcscat(path, p + 1); + if (RegOpenKey(HKEY_LOCAL_MACHINE, + TEXT("Software\\ReactOS\\Download!"), + &hKey) != ERROR_SUCCESS) + { + goto end; + } + + DWORD dwSize = MAX_PATH; + if (RegQueryValueEx(hKey, + L"DownloadFolder", + NULL, + NULL, + (LPBYTE)&path, + &dwSize) != ERROR_SUCCESS) + { + 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) + /* download it */ + bTempfile = TRUE; + dl = CreateDl(Context, &bCancelled); + r = URLDownloadToFileW(NULL, SelectedApplication->Location, path, 0, dl); + if (NULL != dl) { - IBindStatusCallback_Release(dl); + IBindStatusCallback_Release(dl); } - if (S_OK != r) + if (S_OK != r) { - MessageBoxW(0,Strings[IDS_DOWNLOAD_ERROR],0,0); - goto end; + MessageBoxW(0,Strings[IDS_DOWNLOAD_ERROR],0,0); + goto end; } - else if (bCancelled) + else if (bCancelled) { - goto end; + goto end; } - ShowWindow(Dlg, SW_HIDE); + 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) + /* 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; + goto end; } - CloseHandle(pi.hThread); - WaitForSingleObject(pi.hProcess, INFINITE); - CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + WaitForSingleObject(pi.hProcess, INFINITE); + CloseHandle(pi.hProcess); -end: - if (bTempfile) - { - DeleteFileW(path); - } - EndDialog(Dlg, 0); - return 0; + end: + if (bTempfile) + { + 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; + HANDLE Thread; + DWORD ThreadId; + HWND Item; - switch (Msg) + switch (Msg) { - case WM_INITDIALOG:/* + case WM_INITDIALOG:/* Icon = LoadIconW((HINSTANCE) GetWindowLongPtr(Dlg, GWLP_HINSTANCE), MAKEINTRESOURCEW(IDI_ICON_MAIN)); if (NULL != Icon) @@ -299,12 +329,12 @@ DownloadProc(HWND Dlg, UINT Msg, WPARAM wParam, LPARAM lParam) 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) + 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); + SendMessageW(Item, PBM_SETRANGE, 0, MAKELPARAM(0,100)); + SendMessageW(Item, PBM_SETPOS, 0, 0); }/* Item = GetDlgItem(Dlg, IDC_REMOVE); if (NULL != Item) @@ -320,27 +350,27 @@ DownloadProc(HWND Dlg, UINT Msg, WPARAM wParam, LPARAM lParam) ShowWindow(Item, SW_HIDE); } }*/ - Thread = CreateThread(NULL, 0, ThreadFunc, Dlg, 0, &ThreadId); - if (NULL == Thread) - { - return FALSE; - } - CloseHandle(Thread); - return TRUE; + 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; + 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; + return FALSE; } } diff --git a/rosapps/downloader/downloader.xml b/rosapps/downloader/downloader.xml index 37345616b90..4011aaa24ef 100644 --- a/rosapps/downloader/downloader.xml +++ b/rosapps/downloader/downloader.xml @@ -161,6 +161,12 @@ http://ovh.dl.sourceforge.net/sourceforge/lgames/lmarbles-1.0.6-win32.exe + + + + + + 7-Zip 4.52 diff --git a/rosapps/downloader/lang/de-DE.rc b/rosapps/downloader/lang/de-DE.rc index acc0aadc651..f8291c38ca0 100644 --- a/rosapps/downloader/lang/de-DE.rc +++ b/rosapps/downloader/lang/de-DE.rc @@ -10,28 +10,48 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Abbrechen", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP } +IDD_PROF DIALOGEX 6, 6, 267, 95 +STYLE WS_BORDER | WS_THICKFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Proferences" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +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 "Willkommen im ReactOS Downloader" - IDS_WELCOME "Bitte wдhlen Sie links eine Kategorie. Dies ist Version 1.0." + 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_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_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 runtergeladen werden.\nBitte prьfen sie, ob eine Verbindung zum Internet besteht." + IDS_DOWNLOAD_ERROR "Die Datei konnte nicht runtergeladen 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 "Please, choose the folder..." + IDS_NOTCREATE_REGKEY "Could not create the registry key." + IDS_DOWNLOAD_FOLDER "Download!" + IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!" + IDS_UPDATE_URL "http://svn.reactos.org" END diff --git a/rosapps/downloader/lang/en-US.rc b/rosapps/downloader/lang/en-US.rc index a521e5f2c9e..51cfc8ac2ff 100644 --- a/rosapps/downloader/lang/en-US.rc +++ b/rosapps/downloader/lang/en-US.rc @@ -10,28 +10,48 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP } +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE WS_BORDER | WS_THICKFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Proferences" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +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.0." + 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_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_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_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 "Download!" + IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!" + IDS_UPDATE_URL "http://svn.reactos.org" END diff --git a/rosapps/downloader/lang/es-ES.rc b/rosapps/downloader/lang/es-ES.rc index 21b1558ce3b..6fae38b0002 100644 --- a/rosapps/downloader/lang/es-ES.rc +++ b/rosapps/downloader/lang/es-ES.rc @@ -10,28 +10,48 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP } +IDD_PROF DIALOGEX 6, 6, 267, 95 +STYLE WS_BORDER | WS_THICKFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Proferences" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +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 "Ў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.0." + 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 "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 "Actualizar" IDS_UPDATE "Perdona 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 pulda 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_HELP "Selecciona una categorнa de la izquierda, entonces selecciona una aplicaciуn y pulda 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_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_DOWNLOAD_ERROR "Imposible descargar el archivo.\nPor favor verifica tu conexiуn a internet." 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 "Download!" + IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!" + IDS_UPDATE_URL "http://svn.reactos.org" END diff --git a/rosapps/downloader/lang/fr-FR.rc b/rosapps/downloader/lang/fr-FR.rc index a033abdd473..44e0ee8982f 100644 --- a/rosapps/downloader/lang/fr-FR.rc +++ b/rosapps/downloader/lang/fr-FR.rc @@ -10,28 +10,48 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Annuler", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP } +IDD_PROF DIALOGEX 6, 6, 267, 95 +STYLE WS_BORDER | WS_THICKFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Proferences" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +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 "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.0." + 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_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_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_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 "Please, choose the folder..." + IDS_NOTCREATE_REGKEY "Could not create the registry key." + IDS_DOWNLOAD_FOLDER "Download!" + IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!" + IDS_UPDATE_URL "http://svn.reactos.org" END diff --git a/rosapps/downloader/lang/id-ID.rc b/rosapps/downloader/lang/id-ID.rc index 83842b93839..6911f8d7935 100644 --- a/rosapps/downloader/lang/id-ID.rc +++ b/rosapps/downloader/lang/id-ID.rc @@ -10,28 +10,48 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Batal", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP } +IDD_PROF DIALOGEX 6, 6, 267, 95 +STYLE WS_BORDER | WS_THICKFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Proferences" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +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.0." + 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_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_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_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 "Download!" + IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!" + IDS_UPDATE_URL "http://svn.reactos.org" END diff --git a/rosapps/downloader/lang/it-IT.rc b/rosapps/downloader/lang/it-IT.rc index 50db5bd8dc1..bbde7e4c7f3 100644 --- a/rosapps/downloader/lang/it-IT.rc +++ b/rosapps/downloader/lang/it-IT.rc @@ -10,28 +10,48 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP } +IDD_PROF DIALOGEX 6, 6, 267, 95 +STYLE WS_BORDER | WS_THICKFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Proferences" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +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 "Benvenuto al ReactOS Downloader" - IDS_WELCOME "Scegli una categoria a sinistra. Questa и la versione 1.0." + 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 di download, 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_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_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 "Download del file impossibile.\nVerifica la connessione a Internet." + IDS_DOWNLOAD_ERROR "Download del file impossibile.\nVerifica la connessione a Internet." IDS_VERSION "Versione: " IDS_LICENCE "Licenza: " IDS_MAINTAINER "Manutentore: " 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 "Download!" + IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!" + IDS_UPDATE_URL "http://svn.reactos.org" END diff --git a/rosapps/downloader/lang/ru-RU.rc b/rosapps/downloader/lang/ru-RU.rc index 9af88cd8a5e..6a79a3ea0e2 100644 --- a/rosapps/downloader/lang/ru-RU.rc +++ b/rosapps/downloader/lang/ru-RU.rc @@ -8,32 +8,52 @@ CAPTION " FONT 8, "MS Shell Dlg" { CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12 - LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER + LTEXT "", IDC_STATUS, 10, 30, 200, 17, SS_CENTER PUSHBUTTON "Отмена", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP } +IDD_PROF DIALOGEX 6, 6, 267, 110 +STYLE WS_BORDER | WS_THICKFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Настройки" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +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 Downloader" - IDS_WELCOME_TITLE "Добро пожаловать в ReactOS Downloader" - IDS_WELCOME "Пожалуйста выберите категорию справа. Версия 1.0." + 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_HELP "Выберите категорию слева, затем выберите приложение и нажмите кнопку загрузки. Для получения информации об обновлениях нажмите кнопку рядом с кнопкой справки." IDS_NO_APPS "Извените, на данный момент в этой категории приложений нет, но вы можете помочь добавить их." IDS_CHOOSE_APP "Пожалуйста выберите приложение." IDS_CHOOSE_SUB "Пожалуйста выберите подкатегорию." - IDS_CHOOSE_CATEGORY "Пожалуйста выберите категорию." + IDS_CHOOSE_CATEGORY "Пожалуйста выберите категорию." IDS_CHOOSE_BOTH "Пожалуйста выберите подкатегорию или приложение." IDS_XMLERROR_1 "Не удалось найти xml-файл!" IDS_XMLERROR_2 "Не удалось обработать xml-файл!" - IDS_DOWNLOAD_ERROR "Не удается загрузить файл.\nПожалуйста проверьте ваше подключение к интернет." + IDS_DOWNLOAD_ERROR "Не удается загрузить файл.\nПожалуйста проверьте ваше подключение к интернет." IDS_VERSION "Версия: " IDS_LICENCE "Лицензия: " IDS_MAINTAINER "Производитель: " - IDS_APPS_TITLE "Applications" - IDS_CATS_TITLE "Categories" + 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" END diff --git a/rosapps/downloader/lang/uk-UA.rc b/rosapps/downloader/lang/uk-UA.rc index d018b4b92e1..955faa82d83 100644 --- a/rosapps/downloader/lang/uk-UA.rc +++ b/rosapps/downloader/lang/uk-UA.rc @@ -18,28 +18,48 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Скасувати", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP } +IDD_PROF DIALOGEX 6, 6, 267, 95 +STYLE WS_BORDER | WS_THICKFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Proferences" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +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 "Завантажити ! - Завантажувач ReactOS" IDS_WELCOME_TITLE "Ласкаво просимо у Завантажувач ReactOS" - IDS_WELCOME "Будь ласка виберіть категорію зліва. Це версія 1.0." + IDS_WELCOME "Будь ласка виберіть категорію зліва. Це версія 1.1." IDS_NO_APP_TITLE "Додаток не вибраний" IDS_NO_APP "Будь ласка, виберіть додаток перш ніж натиснути кнопку завантаження. Якщо Вам потрібна допомога, натисніть кнопку зі знаком питання у верхньому правому кутку." IDS_UPDATE_TITLE "Оновити" IDS_UPDATE "Вибачте, дана можливість ще недоступна." IDS_HELP_TITLE "Довідка" - IDS_HELP "Виберіть категорію зліва, потім виберіть додаток і натисніть кнопку завантаження. Для отримання інформації про оновлення натисніть кнопку поряд з кнопкою довідки." + IDS_HELP "Виберіть категорію зліва, потім виберіть додаток і натисніть кнопку завантаження. Для отримання інформації про оновлення натисніть кнопку поряд з кнопкою довідки." IDS_NO_APPS "Вибачте, в цій категорії ще немає додатків. Ви можете допомогти і додати більше додатків." IDS_CHOOSE_APP "Будь ласка виберіть додаток." IDS_CHOOSE_SUB "Будь ласка виберіть підкатегорію." - IDS_CHOOSE_CATEGORY "Будь ласка виберіть категорію." + IDS_CHOOSE_CATEGORY "Будь ласка виберіть категорію." IDS_CHOOSE_BOTH "Будь ласка виберіть підкатегорію або додаток." IDS_XMLERROR_1 "Не вдалося знайти файл xml !" IDS_XMLERROR_2 "Не вдалося обробити файл xml !" - IDS_DOWNLOAD_ERROR "Неможливо завантажити файл.\nБудь ласка перевірте ваше інтернет-з'єднання." + IDS_DOWNLOAD_ERROR "Неможливо завантажити файл.\nБудь ласка перевірте ваше інтернет-з'єднання." IDS_VERSION "Версія: " IDS_LICENCE "Ліцензія: " IDS_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 "Download!" + IDS_UNABLECREATE_FOLDER "Unable to create a folder with this name!" + IDS_UPDATE_URL "http://svn.reactos.org" END diff --git a/rosapps/downloader/main.c b/rosapps/downloader/main.c index d0f410640d2..2a6944478fd 100644 --- a/rosapps/downloader/main.c +++ b/rosapps/downloader/main.c @@ -8,14 +8,14 @@ #include #include #include +#include #include #include +#include #include "resources.h" #include "structures.h" -#define XML_PATH "C:\\ReactOS\\system32\\downloader.xml" - -HWND hwnd, hCategories, hApps, hDownloadButton, hUninstallButton, hUpdateButton, hHelpButton; +HWND hwnd, hCategories, hApps, hDownloadButton, hUninstallButton, hUpdateButton, hHelpButton, hProfButton; HBITMAP hLogo, hUnderline; WCHAR* DescriptionHeadline = L""; WCHAR* DescriptionText = L""; @@ -30,7 +30,8 @@ VOID FreeTree (struct Category* Node); WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT]; -BOOL getUninstaller(WCHAR* RegName, WCHAR* Uninstaller) { +BOOL +getUninstaller(WCHAR* RegName, WCHAR* Uninstaller) { const DWORD ArraySize = 200; @@ -69,7 +70,8 @@ BOOL getUninstaller(WCHAR* RegName, WCHAR* Uninstaller) { return FALSE; } -void ShowMessage (WCHAR* title, WCHAR* message) +void +ShowMessage (WCHAR* title, WCHAR* message) { DescriptionHeadline = title; DescriptionText = message; @@ -77,7 +79,8 @@ void ShowMessage (WCHAR* title, WCHAR* message) UpdateWindow(hwnd); } -void AddItems (HWND hwnd, struct Category* Category, struct Category* Parent) +void +AddItems(HWND hwnd, struct Category* Category, struct Category* Parent) { TV_INSERTSTRUCTW Insert; @@ -99,7 +102,8 @@ void AddItems (HWND hwnd, struct Category* Category, struct Category* Parent) AddItems (hwnd,Category->Children,Category); } -void CategoryChoosen (HWND hwnd, struct Category* Category) +void +CategoryChoosen(HWND hwnd, struct Category* Category) { struct Application* CurrentApplication; TV_INSERTSTRUCTW Insert; @@ -139,39 +143,84 @@ void CategoryChoosen (HWND hwnd, struct Category* Category) } } -BOOL SetupControls (HWND hwnd) +BOOL +SetupControls (HWND hwnd) { TV_INSERTSTRUCTW Insert = {0}; HIMAGELIST hImageList; HINSTANCE hInstance = GetModuleHandle(NULL); WCHAR Cats[MAX_STRING_LENGHT], Apps[MAX_STRING_LENGHT]; + TCHAR Buf[MAX_PATH]; + char Tmp[MAX_PATH]; + int i; + // Getting downloader.xml path + if(!GetSystemDirectory(Buf,sizeof(Buf)/sizeof(char))) return FALSE; + lstrcat((LPTSTR)Buf, L"\\downloader.xml"); + for (i = 0; i < _tcslen(Buf) + 1; i++) Tmp[i] = Buf[i]; + // Parse the XML file - if (ProcessXML (XML_PATH, &Root) == FALSE) + if (!ProcessXML(Tmp, &Root)) return FALSE; - LoadStringW(hInstance, IDS_CATS_TITLE, Cats, MAX_STRING_LENGHT); - LoadStringW(hInstance, IDS_APPS_TITLE, Apps, MAX_STRING_LENGHT); + 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, + 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); - 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)); - hLogo = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_LOGO)); - hUnderline = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_UNDERLINE)); - - hHelpButton = CreateWindowW (L"Button", L"", WS_CHILD|WS_VISIBLE|BS_BITMAP, 550, 10, 40, 40, hwnd, 0, hInstance, NULL); - hUpdateButton = CreateWindowW (L"Button", L"", WS_CHILD|WS_VISIBLE|BS_BITMAP, 500, 10, 40, 40, hwnd, 0, hInstance, NULL); - 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(hHelpButton, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_HELP))); - SendMessageW(hUpdateButton, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP,(LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_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))); + hHelpButton = CreateWindowW(L"Button", L"", + WS_CHILD | WS_VISIBLE | BS_ICON, + 550, 10, 40, 40, + hwnd, 0, hInstance, NULL); + hUpdateButton = CreateWindowW(L"Button", L"", + WS_CHILD | WS_VISIBLE | BS_ICON, + 450, 10, 40, 40, + hwnd, 0, hInstance, NULL); + hProfButton = CreateWindowW(L"Button", L"", + WS_CHILD | WS_VISIBLE | BS_ICON, + 500, 10, 40, 40, + hwnd, 0, hInstance, NULL); + 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 @@ -186,17 +235,34 @@ BOOL SetupControls (HWND hwnd) 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_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); @@ -204,13 +270,15 @@ BOOL SetupControls (HWND hwnd) return TRUE; } -static void ResizeControl (HWND hwnd, int x1, int y1, int x2, int y2) +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) +static void +DrawBitmap (HDC hdc, int x, int y, HBITMAP hBmp) { BITMAP bm; HDC hdcMem = CreateCompatibleDC(hdc); @@ -222,7 +290,8 @@ static void DrawBitmap (HDC hdc, int x, int y, HBITMAP hBmp) DeleteDC(hdcMem); } -static void DrawDescription (HDC hdc, RECT DescriptionRect) +static void +DrawDescription (HDC hdc, RECT DescriptionRect) { int i; HFONT Font; @@ -237,16 +306,16 @@ static void DrawDescription (HDC hdc, RECT DescriptionRect) // 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"); + 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"); + OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, L"Arial"); SelectObject(hdc, Font); - Rect.top += 40; + 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); @@ -257,7 +326,7 @@ void showUninstaller() { int Split_Vertical = 200; RECT Rect; - GetClientRect(hwnd,&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);; } @@ -266,7 +335,7 @@ void hideUninstaller() { int Split_Vertical = 200; RECT Rect; - GetClientRect(hwnd,&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); } @@ -281,10 +350,257 @@ void startUninstaller(WCHAR* Uninstaller) { CloseHandle(pi.hThread); // WaitForSingleObject(pi.hProcess, INFINITE); // If you want to wait for the Unistaller CloseHandle(pi.hProcess); - hideUninstaller(); + hideUninstaller(); } -LRESULT CALLBACK WndProc (HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) +BOOL +SaveSettings(HWND hwnd) +{ + HKEY hKey; + TCHAR szBuf[MAX_PATH]; + + if (RegOpenKey(HKEY_LOCAL_MACHINE, + TEXT("Software\\ReactOS\\Download!"), + &hKey) != ERROR_SUCCESS) + return FALSE; + + SendMessage(GetDlgItem(hwnd, IDC_DOWNLOAD_FOLDER_EDIT), WM_GETTEXT, sizeof(szBuf)/sizeof(TCHAR), (LPARAM)szBuf); + 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; + + SendMessage(GetDlgItem(hwnd, IDC_UPDATE_SERVER_EDIT), WM_GETTEXT, sizeof(szBuf)/sizeof(TCHAR), (LPARAM)szBuf); + if (RegSetValueEx(hKey, + L"UpdateServer", + 0, + REG_SZ, + (LPBYTE)szBuf, + (DWORD)(sizeof(szBuf) / sizeof(TCHAR)))) + return FALSE; + + DWORD dwValue; + if (SendMessage(GetDlgItem(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; + + if (RegOpenKey(HKEY_LOCAL_MACHINE, + TEXT("Software\\ReactOS\\Download!"), + &hKey) != ERROR_SUCCESS) + { + if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, L"Software\\ReactOS\\Download!", + 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) + { + SendMessage(GetDlgItem(hwnd, IDC_DOWNLOAD_FOLDER_EDIT), WM_SETTEXT, -1, (LPARAM)Buf); + } + else + { + if (!GetWindowsDirectory(Buf, sizeof(Buf) / sizeof(TCHAR))) return FALSE; + + TCHAR DPath[256]; + int i; + 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; + SendMessage(GetDlgItem(hwnd, IDC_DOWNLOAD_FOLDER_EDIT), WM_SETTEXT, -1, (LPARAM)DPath); + } + } + + dwSize = MAX_PATH; + if (RegQueryValueEx(hKey, + L"UpdateServer", + NULL, + NULL, + (LPBYTE)&Buf, + &dwSize) == ERROR_SUCCESS) + { + SendMessage(GetDlgItem(hwnd, IDC_UPDATE_SERVER_EDIT), WM_SETTEXT, -1, (LPARAM)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 + { + SendMessage(GetDlgItem(hwnd, IDC_UPDATE_SERVER_EDIT), WM_SETTEXT, -1, (LPARAM)Buf); + } + } + + DWORD dwValue, dwType = REG_DWORD; + dwSize = sizeof(DWORD); + if (RegQueryValueEx(hKey, + L"DeleteInstaller", + NULL, + &dwType, + (LPBYTE)&dwValue, + &dwSize) == ERROR_SUCCESS) + { + if (dwValue == 0x1) + SendMessage(GetDlgItem(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; + SendMessage(GetDlgItem(hwnd, IDC_DOWNLOAD_FOLDER_EDIT), WM_SETTEXT, -1, (LPARAM)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; +} + +LRESULT CALLBACK +WndProc (HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { static RECT DescriptionRect; @@ -321,6 +637,13 @@ LRESULT CALLBACK WndProc (HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { if(HIWORD(wParam) == BN_CLICKED) { + if (lParam == (LPARAM)hProfButton) + { + DialogBox(GetModuleHandle(NULL), + MAKEINTRESOURCE(IDD_PROF), + hwnd, + ProfDlgProc); + } if (lParam == (LPARAM)hDownloadButton) { if(SelectedApplication) @@ -425,7 +748,8 @@ LRESULT CALLBACK WndProc (HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) DescriptionRect = Rect; MoveWindow(hHelpButton, LOWORD(lParam)-50, 10, 40, 40, TRUE); - MoveWindow(hUpdateButton, LOWORD(lParam)-100, 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 @@ -448,8 +772,11 @@ LRESULT CALLBACK WndProc (HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) return DefWindowProc (hwnd, Message, wParam, lParam); } -INT WINAPI wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInst, - LPTSTR lpCmdLine, INT nCmdShow) +INT WINAPI +wWinMain (HINSTANCE hInstance, + HINSTANCE hPrevInst, + LPTSTR lpCmdLine, + INT nCmdShow) { int i; WNDCLASSEXW WndClass = {0}; @@ -477,7 +804,7 @@ INT WINAPI wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInst, WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, - 600, 550, + 650, 550, NULL, NULL, hInstance, NULL); diff --git a/rosapps/downloader/resources.h b/rosapps/downloader/resources.h index 4713dd41c22..81777e0436e 100644 --- a/rosapps/downloader/resources.h +++ b/rosapps/downloader/resources.h @@ -1,11 +1,12 @@ #define IDI_MAIN 0x0 +#define IDI_UPDATE 5000 +#define IDI_HELP 5001 +#define IDI_PROF 5002 #define IDB_UNDERLINE 0x100 #define IDB_LOGO 0x101 -#define IDB_HELP 0x102 -#define IDB_UPDATE 0x103 -#define IDB_DOWNLOAD 0x104 -#define IDB_UNINSTALL 0x105 +#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 @@ -17,33 +18,47 @@ #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 #define IDD_DOWNLOAD 0x100 #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 -#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_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 IDD_PROF 6000 #define STRING_COUNT 20 diff --git a/rosapps/downloader/resources/11.bmp b/rosapps/downloader/resources/11.bmp new file mode 100644 index 0000000000000000000000000000000000000000..94bd89c385442d243bf695c5c9a7cee665c20942 GIT binary patch literal 1080 zcmZvaTTByK7{^D~xQQlS*caafpNKCe-d1Bs3?{zSWK(FVwpEI(i6}yAFSH665o;3_ z6^v1lwulmpRuNDvakVv#LLl2R^~?K(x~ z=W>1*1p>h$sX|_I!dPgd`{`zyrdwOuTA!Ah&5kmwwMl2t-`TZCT0-)E$ET*HY97|t z+k4)=?%iH@B)F_h99ejI2bNqF&i-xQAFXJrj$X5vaUkp9Cta?=t<5!DRvI*$=Db8Z zCAJ6?>4~wXFmaAU>>Af`tRFRj#MqWh{AEso&*y_yp94o*D{3FqviXGtA$@*s0r8N? zq*XIBGrh|#VrGr2fM*F$6#vqImDY4T>>Ncxsu8i7-N?S?gnQ%-4(qiH;kkd7>!j&+ z)w3&O6~is)m>Ndo#{palG~=H(6Ef;5QFOZl@%ySkDf&T4yW#PULzSc9a8N>_aMeL& zmMuIp?Pl00YYw(zL;nfHb!oA==@{y|MzAfT2!Ce$4{Glq&yV}O-+1C7+bv5gE-9{M zS=RIHc{}Ruk8r_Ug-+)XBzf1dTG@asY&IrSRiAKS2(RkqsmP#Mp*8Z-?_`Po6P_N&fdd>8o_Qb^1I*sXp&0&DA)m)@whJw?-lvlXB7-VzKWiw6ZRCE+9 zb?QdL5vF~p)S~G{flXbaC@E%B+=t>#22#|&b6z*G&-{(B3XOf5@ zKF8R4n6Wp2M2KZ?f)K*=eY@5W57+`gkmfhKLKJnscI4InkYp5{XU7qYNJb3fAS0F$ zC6N^>cnpt~<~O*wmlJleK^zSDu2&SG?a8kHZcAob}WIvFBrv*GqFK>Nl7awl2LL0gn!uQt}_{?PVw zm|XaR0(%{ZAp@k2<)}_W*JwXFKRG~3PJ$FAgSM%*^qa@+aLkNgf3ti&hth7u#QY4% z-4qbj2~dlAOMk4b08?H!COorvH2fTjmleqA)QCMepw9-;q<~sWxAgOWi0Zh4MprjR z=00QEJBOU^GCUjWN3?-`Q+X<=O|z+A(O-j&P=^lGUIohT_TSm~>;BT?zixN_gwyd} Hadw11#L_|t literal 0 HcmV?d00001 diff --git a/rosapps/downloader/resources/13.bmp b/rosapps/downloader/resources/13.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bfaa9c0e56849a76a9ef24e6eb9fdbf019d31092 GIT binary patch literal 1080 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 YOSk<10~h#{n-PjfnDB1G|N7~F06nGMYybcN diff --git a/rosapps/downloader/resources/help.ico b/rosapps/downloader/resources/help.ico new file mode 100644 index 0000000000000000000000000000000000000000..e0373ec8db852bb15805d4765705a5d9054763bd GIT binary patch literal 9774 zcmeI1c~n$an!q1gK_MU|1&J*h0n?ex73MvTTK!7VOPgGLQ1Dj*02g>wAn_uVQMO^oqm`ka|Fd8aN_ z)V=Rp@4fH)-Lfn%tEm+lYVqFON^fpi|87~H|65tNR=VA?;)5;gX&pm* zfu{HA6=ySV?mu1)pL0_uSp%PMWfkP_vC?9@Se>4>TlraOR$`YnR$*bGwSLk-E4BCY z*73|_D>o(9+LJ!V%1@hQ#dQj`3JZ=~X`|n=3if1Km6erNZt_4YlmE}3+Hal8OSewt zq+5wSp0>)$imWnZWzLMTQu}qX@-tJc{i!3Yvh$~`oS7r6ti*S%Q&}kuM*aHf*9iO? zfq!TOMC5-`{v%BS%+=(PACuZ7psjyXd+XNrrvA2oCijkL641u(sK4xC_lyXz(QALa zg5q{0;2WWR-u<7-ixy@;pd;irMnf|%tf4)wFZFT)ET0GkRQ3hy#u-)OqfM(tf|N8#sgs8pe{@^DZ z-t-4BtZm)>+8?L}>ivEWyY`1TY`%5&wbBqj?&%LQ1_U@9ZRu}m4D=%|4o537-$EFCd(;aLJa_jeYcxk^|0QsXoM7wSN#(wqR z*FB(lpkH{<~`!05fZPHAQ76-Q0;|L*Gkj3f5Nwi6=4Cr5-QM27L2 z92w5PLprqS{B+t|~9Sap~NplV5(dA!TVy zxA@5LfxmD4uv$Ls5E9?D{nnYoi!Yw8z2&OCRdc^rX<@;(xuX)gJlXHrke{h#a%9-D zAw900J7FZdkZ^j}hW)FOb}t;gWA@Id7WM}0OcI&V(Qu6ZBs`uosb^M>Zl9rD@i z!G|}_ExUXUEj7-Yx%0

GtGLs7UJ49^toZsuBL}-t12%_R5<4ZqAesw$B)_bM|1w z?pZMWi`0>O7meDRI&#m#k3LTsh8DUm9Nb|Xapk7mR|Ue?jeV!4s^WHy>(HhJ8^*kW z{H=+-w@>enouB_b_R_`kmkTeL*TpZFk2|n*42pKoAC8LLnFCI4UxkWW)y@qQdn4+H zUL?Qv&!vTD5q=_f&AL%NGsnG&@t;opV8`DE5tA<#jwmWBx_b5MHFF(Gk3YC_B3e*^ z7Z|W@TK|GCHlw2K%7y7YpSeeVQe^n9z|bmqvKk9w^C`1MWW|FR|FJ?_H&-Sda- zTRa-U*RNkMHrKI?R_>9dl$-j#@{-Jhx`zCz@; zPLEC>-aTXVpFWxJ_Lju=No(GmA%yzCva#2$T)JL#x%gTUuWvq?b!@}5!)p@0S`mi} zq-Mw81~LtHFOI9NaXCw`P3`ed^)4hvgk_9>AK{n2IhYpHdCl-1Du3eJTa$WY6}Dj^ zp&%y6Je4)OVB7rDTjrg}oPi5prA^qk_+zp|7zrjJy>|8(E@Z~{L#$f`!8w|<3i`eSC?Usze6Cii1meV!6akWcSii)5$MSyffVhi`YSB{=(+jAl__1DV2KqM9>p z0P-tKuO>!%;*$^&if~@bqdP4h^vbHCUDl2K!^Uy{g)x}qP60xQ^ZER3)z#H5my5rs zIJI*PsbMW^@RR#u53??F{M*Q9DzekwV}JUH*Ov}>dF7A@rYI>UMA-@N;R3hk&Ha$2 zgcs-bXV;hu6%`dX4`s|^^1F@SJgL{lv474=>Z|sbTqP_X`4OR)PanblP4Rsf_kYoZ zsO!3sJ&g;xgttvID&`C!k7&7gIPcc2TX;dNE}c2b9Kg-2_;)crOa=~)jw|wI5+qZFoM3mhq zLAXX{!dq-9Ye)Pce?toLk8NL@)WwruChFR8@7{J*e}DYIg7=@ph2_z&l7+P&y+)K! zQCd>`?fy@9FB(UXw@r&Wy(^=(w$>xRi*lC z*Dl?1Rb`C-Yigh0Es1(*#o&&rV#I5>Tvk@bv?LnNit=h_1;Vl49iOv@c3}XPBRqXr zx2-b<6Nif8qNzQeatGg&g2>PvsgrP_@Z?tudOt^$NHl8!737+g#mq-MImK*(&tE>5 z6n(#C+CajH8Cbq@XylbMR@RIKf*oyBF&cCeU z)uY~YRo=wG&zDb`|K78Bv84Zt%LcuIBWPJ2+m#5AcRXT`LM%2L$(_j;dkZ(#I4jnS z>Gh-gzp97~+ngLj78rRnXZ3oUs)dA5k+iJX+z8_rZYKWJ@WmD z9qYLT-?z*hmeA#=p2Do<%~NBlZk95*=-aQelB0>$!ak~HalaQ(v^45vQp1bS%(PEu z4P&Y!yt?8>_Vn2LIse1>)PIv0(Qe702=;1JaAQ%yu`e@HSbD2R{BcSDmzG4moIdJ} z%}G)D8y8+ZdqT~wsb+aD8{9RiZo$@zy5EQRPN4~r;Tz+lbYC@E+;V>S7wwyp1~E7( zBJ_UJ?)QB{=P;6<+V7Q}ixLVBwf-Nynqs#e3abZ?)7sIrOi&#A7ti}|dDrh1 zlUve!X^l^i`S+o&CXDu{DF8g>`^Y2z2J#Gmc`~7#@1UMiCZ9fyU4YLGzPkYWWWzqO z&26@qxJQq@|COfGT@r9niMAdwR$x&ssmR3u=Lz(oQW31lRo z(H+>RiY4HLjyANmH|vHBwL>@NwzNlSKj+fewE~wWz)KYX(`|@Js1Im04{V^1Ku@>9 zr%L!~I2b#(Rr=0MVN3Tm%E=(mrl|WSjRta1sfR#X20$K@dRc{}7 zCGb@hfVK6>K%X`!^?8tD`n`Eb<^x1E;Fi%1a0$dElp8{^DwIt^Ng`mEP+|&YIPXJ+ zl2@pz1o*;^bH)z%O8~GM2rOS^KR~}1&$vxWdThx?H#{Z)lTeKaAR#cBPzxEI6puoc zE0lKvnF+igP>r!e$AD*^Shxg2b78|K^n2aU26PXD)ttbZ@I)7IO(;=}e#$-k?r;2~ z+!LrxU^Y*?C=}cRx*1!j1&s~ho4{|z1_(|-IH&6PG5ym!wh5$uD2C;XZfH)xIf3Vl z??8x9&zg8s91Bz@V4Xl;ra>_R+8H}E9vTPD1*9ebp0NSM6Bw^pb=_+NFp~=E)vDjX zo=}Vk6_ilC3czRNXiQ-~0s4$iuus4~(;z>AYXtTq4r4`a)cHX5YVrmFntZ~5wLoBM zWBqY2JmaS%2nynRwE%-c86;Gx0uKtnW9A%4XmSh`3REayp#X)ZL52dx32Z39p~-{J zOZd>tSqM=;M1c{7lCMH_*4aQs`zJ`zsk*5@gjz|c#N7HPzAXTb@k9MlzckkxZ`B7k z3g9S^qkxVk2JjIv`dDpP()doj=h5Hbzv_o3OgvRT zP$|^D0#*tIuxXH`fR=9kE5-|SS+8H$EQBc_rqK^%3Y3{$r=McvG8K{04{HkLqClJY zPyQ#o<%xfP0rv#v6rfX}PNSCsUqCj2JO%U=*we&E*QM?a@F)52BjAjHphiCsDp2U< zdi{~1HIS&$4~q(^U&0$t_fB^iur`JY+tDrlPS2PO)>iu~+vh zjUR+6Aga+1q@q8pre1$UXpQDx8>}i6$3g)v;Hm(7#&-2V=d#WLm96;&TLs(@kjA`g z9AH;7M|3|lxlitE?ALV!!W#X$#&~Wv=x^jdEGtye0t%WnsB1uT0MUxZKxG28ti$0Z z4sfkNJ*KHGu&n^MX6@Jc4&VxeD|0%eI`rVU*uEe0HCkDMl z_duA}Z3Amj=eODc_zLi4;-L8ee$9N@S1V)ETsE9TGjq{%k2^;;eumDH` z4ZCB&KA`&$v}p1G6Pq|_F7z3sdlFzQkfn)%&IRDu%sG8tY3y_l2iOEeHu`~Nfs*Uz zzph0{*$EN|tSrE?i2?X!<^jNL_5!s5W)`4Xpl0moOFW`@CT9q6+n~SXx>@f=H*wb( z>U;*Fjea2duJx~b5hPs!N(&Sxz_dWq0!pzKJGyNcfepj~rY6S~qHzYR1+F%_)qkCb z`aN)M;-!A8ZtzkdY!hD?oBi*pyY@d_2h4{>pmwds0N562+vGv#qV5N}9`u=@`;P88 zsz>LW&OOb&zU%+6w*cQJXW+N-8vqvw-1rWI*HT|Bs#|+?@A0pNIM|mxRj0S{ zJNw`;SltP%n^=MC*zl~01H>*MyNQL`0kxaB!tEw5`n*t`nrFA(&g>-`AwA5{ORx<_#;ARG&z^JU>+KsXr?jt0tDn4rdGHI#%z|d+!nVOa8S@j%@cL zXAbk2qsQ1UuF$GHjn84n;I4T(1|<)}dcVY`Uwp4Qr#NqZNA1Axo%*|H0PpP@|DKxn d5Wl6yd46xLyXQQ=sg~XQd#YuLITu0se*@w9I{g3u literal 0 HcmV?d00001 diff --git a/rosapps/downloader/resources/preferences.ico b/rosapps/downloader/resources/preferences.ico new file mode 100644 index 0000000000000000000000000000000000000000..c2b7757040741faffae408f091efdb7de5bf7762 GIT binary patch literal 9774 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 literal 0 HcmV?d00001 diff --git a/rosapps/downloader/resources/update.bmp b/rosapps/downloader/resources/update.bmp deleted file mode 100644 index d21aeec828f938e2715a001910f8fcc017fc3e91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3126 zcmeHIX;53&6?XskUuHU;X(rR@pSFMU%Sk5V*pq@-i~^np$7^syZHR4*30uInEP+5! z#q0RRj{?lI``B^@N{txi{_8-qLj{F)%An;%GQTPc@967QO2>p+=c`O)01K|ea z|4LK=A8NPEDdh?we|%(!#q1yGf7l0YaNsd_gd-J8%zC5W?fnmYp|LQPE#^mpDSpm6o-)r^dc0#ZQ(y@AK&%_vo<$M;rz z*gL1);c>g&2x2yw)oL}Ei$tQOr6sXgjG`zE_60s!EEXt8rBazp2FjLMi`VPLP!#j| z--X}P)t#Dhh@X;@5(a}&R#x`YKM93Gd4nIIh*C^(SZ!~`e`6B1xVo|mOdv>*^73*Z z?e@zN9C6$nnP@R_6QCQeRrFNH=J|GavQ&Vq$_0_%0SF~bD2n{wj z`S5Yho9UiLIyx!Bg8qM%eSVhpiNklp}Pa9CJmB=W^E=O;&%DL>dHaH)_o)c?iW= zP4@|>P7T-BE2ib+d|pRxJo_%5b?4+z9&RA(L|6Lp`{^eesw$eu$k|Oz1Eeb!%dFGsWY9{-sNV{x7xYRjpuL}E4$rxFO~u~2TdH!co|!Xe$AD15%Y#Sr<#<94fB36s?1 zWZ-$ABzuTnxVX5uy1Kf)zCKiyDXqUDu1TFJ`^y;R%)o;xIQ9dN9+uunuFuRYNlJp{ zPfrC-CnBd3Ts@3KkptUfJ&ogi&Acf^fFO@9Yr=e2nyYQqjnY*jn-2X ztd>{UFYQ*-^iZQ^xWd?9s_7z5H)ks)0-w)kGMQ+UTlX`+-8*1pGMIO?`7bBCv$GE2 zb2@6f%Wuu9XDtBp$+GCNqU6$_!j%E}6Y zAd2bfifaj-#l?kZ&Vada41u_iA`vY%J#Ws-;2$w|QPQxM~{TbWT0@>$m;-XNbyb)b8WMV0meY)8EPGar$d( z!}zjEj9lQYsXD-iu*=dCDsLvbX3c<4xp>i!AiTcz8E$J(&E7^7y9>76Mf>ieV<$N4 zGRR-Y*Q*tCR?DOI#>btVq|>LtT>JzpzvpB2V=xXkx6N9d99fzYqmw>?nNCW{)aWRH zyx7?h4)?wcSpa!=$r)~2euF_J4PvN5G^*hDNymo$e!tCTYp2m#NhC054`cK?pKj(L zbLY_j`OdS>uB=Q7+0QV`?viVF34ykanjKaXpV=ki^jl2& z&CN|XMNWr$J~33(Rc=Y+C{Ax?79rCN*N-l#sKrz6RHsb#^u% zkC%?H1HO>tDXNqoFb`06gQks=kskTswd21^`_pgkp8L#e-@ASKDk`hf(^r<4l_G)i zDaWCa81)*3aKxsZK(*s@GPXgZoDT(O_4=Yqmmnpf+L#RigZ9mffPOnUC;pG$ANydx z!9fc6e83X8C_aDQD3@a%w@x$$Xuyep$Fffj&y4gaxFdqz-aGN}J=CAz^76Vu9w%^n zsHTOCli(rwjUgE{jFRX7`nq zl_n(t=dh>yAn!SVLJEa$psvWQngSD82y90OxrluBYz__wNd&NMqyjl_6gKodG5@dj HE(ZP%SOXt^ diff --git a/rosapps/downloader/resources/update.ico b/rosapps/downloader/resources/update.ico new file mode 100644 index 0000000000000000000000000000000000000000..82b4a1f986a5704602079d57141cf59bb6c1bc1f GIT binary patch literal 9774 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 literal 0 HcmV?d00001 diff --git a/rosapps/downloader/rsrc.rc b/rosapps/downloader/rsrc.rc index b8fabc5e9eb..2ee4e9f146f 100644 --- a/rosapps/downloader/rsrc.rc +++ b/rosapps/downloader/rsrc.rc @@ -1,9 +1,12 @@ 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_HELP BITMAP DISCARDABLE "resources/help.bmp" -IDB_UPDATE BITMAP DISCARDABLE "resources/update.bmp" +//IDB_HELP BITMAP DISCARDABLE "resources/help.bmp" +//IDB_UPDATE BITMAP DISCARDABLE "resources/update.bmp" IDB_DOWNLOAD BITMAP DISCARDABLE "resources/download.bmp" IDB_UNINSTALL BITMAP DISCARDABLE "resources/uninstall.bmp" IDB_UNDERLINE BITMAP DISCARDABLE "resources/underline.bmp" @@ -18,6 +21,9 @@ 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/de-DE.rc" diff --git a/rosapps/downloader/xml.c b/rosapps/downloader/xml.c index 0519fdd67e2..a5c2aafbb3a 100644 --- a/rosapps/downloader/xml.c +++ b/rosapps/downloader/xml.c @@ -170,10 +170,10 @@ BOOL ProcessXML (const char* filename, struct Category* Root) Current = Root; TagOpen = TRUE; - file = fopen(filename, "r"); + file = fopen("downloader.xml", "r"); if(!file) { - file = fopen("downloader.xml", "r"); + file = fopen(filename, "r"); if(!file) { MessageBoxW(0,Strings[IDS_XMLERROR_1],0,0);