Dmitry Chapyshev <lentind@yandex.ru>

- 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
This commit is contained in:
Aleksey Bragin 2007-10-15 20:45:06 +00:00
parent bda7147058
commit ef1f939e4f
22 changed files with 790 additions and 246 deletions

View file

@ -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
@ -57,8 +58,7 @@ dlQueryInterface(IBindStatusCallback* This, REFIID riid, void** ppvObject)
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;
@ -135,8 +135,7 @@ dlOnProgress(IBindStatusCallback* iface, ULONG ulProgress,
{
SendMessageW(Item, WM_GETTEXT, sizeof(OldText) / sizeof(OldText[0]),
(LPARAM) OldText);
if (sizeof(OldText) / sizeof(OldText[0]) - 1 <= wcslen(OldText) ||
0 != wcscmp(OldText, szStatusText))
if (sizeof(OldText) / sizeof(OldText[0]) - 1 <= wcslen(OldText) || 0 != wcscmp(OldText, szStatusText))
{
SendMessageW(Item, WM_SETTEXT, 0, (LPARAM) szStatusText);
}
@ -229,6 +228,7 @@ ThreadFunc(LPVOID Context)
DWORD r;
BOOL bCancelled = FALSE;
BOOL bTempfile = FALSE;
HKEY hKey;
/* built the path for the download */
p = wcsrchr(SelectedApplication->Location, L'/');
@ -236,10 +236,30 @@ ThreadFunc(LPVOID Context)
{
goto end;
}
if (! GetTempPathW(MAX_PATH, path))
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 */
@ -273,10 +293,20 @@ ThreadFunc(LPVOID Context)
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
end:
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;

View file

@ -161,6 +161,12 @@
<location>http://ovh.dl.sourceforge.net/sourceforge/lgames/lmarbles-1.0.6-win32.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.52</regname>

View file

@ -10,11 +10,26 @@ 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"
@ -34,4 +49,9 @@ BEGIN
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

View file

@ -10,11 +10,26 @@ 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"
@ -34,4 +49,9 @@ BEGIN
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

View file

@ -10,11 +10,26 @@ 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"
@ -34,4 +49,9 @@ BEGIN
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

View file

@ -10,11 +10,26 @@ 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"
@ -34,4 +49,9 @@ BEGIN
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

View file

@ -10,11 +10,26 @@ 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"
@ -34,4 +49,9 @@ BEGIN
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

View file

@ -10,11 +10,26 @@ 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"
@ -34,4 +49,9 @@ BEGIN
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

View file

@ -8,15 +8,30 @@ 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 "Обновить"
@ -34,6 +49,11 @@ BEGIN
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

View file

@ -18,11 +18,26 @@ 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 "Îíîâèòè"
@ -42,4 +57,9 @@ BEGIN
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

View file

@ -8,14 +8,14 @@
#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"
#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);
// 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,
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);
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(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)));
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;
@ -246,7 +315,7 @@ static void DrawDescription (HDC hdc, RECT DescriptionRect)
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 += 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);
@ -284,7 +353,254 @@ void startUninstaller(WCHAR* Uninstaller) {
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);

View file

@ -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,10 +18,17 @@
#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
@ -44,6 +52,13 @@
#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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

View file

@ -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"

View file

@ -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);