- Implement "Settings" dialog.

- Implement save of position of a window
- Implement installation/deinstallation logs
- Implement auto updating programs list at start
- Remove unused code from loaddlg.c
- Some small changes bug fixes

svn path=/trunk/; revision=43081
This commit is contained in:
Dmitry Chapyshev 2009-09-19 16:04:38 +00:00
parent 8f5ae98c4f
commit 6ca1f0de19
22 changed files with 787 additions and 174 deletions

View file

@ -38,6 +38,76 @@ ShowAvailableAppInfo(INT Index)
return TRUE; return TRUE;
} }
static BOOL
DeleteCurrentAppsDB(VOID)
{
HANDLE hFind = INVALID_HANDLE_VALUE;
WIN32_FIND_DATAW FindFileData;
WCHAR szCabPath[MAX_PATH];
WCHAR szSearchPath[MAX_PATH];
WCHAR szPath[MAX_PATH];
WCHAR szTmp[MAX_PATH];
if (!GetCurrentDirectoryW(MAX_PATH, szPath))
return FALSE;
swprintf(szCabPath, L"%s\\rappmgr.cab", szPath);
if (GetFileAttributesW(szCabPath) != INVALID_FILE_ATTRIBUTES)
{
if (!DeleteFileW(szCabPath))
return FALSE;
}
wcscat(szPath, L"\\rapps\\");
swprintf(szSearchPath, L"%s*.txt", szPath);
hFind = FindFirstFileW(szSearchPath, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
return TRUE;
do
{
swprintf(szTmp, L"%s%s", szPath, FindFileData.cFileName);
if (!DeleteFileW(szTmp))
{
FindClose(hFind);
return FALSE;
}
}
while (FindNextFileW(hFind, &FindFileData) != 0);
FindClose(hFind);
return TRUE;
}
BOOL
UpdateAppsDB(VOID)
{
WCHAR szPath[MAX_PATH];
WCHAR szAppsPath[MAX_PATH];
WCHAR szCabPath[MAX_PATH];
if (!DeleteCurrentAppsDB())
return FALSE;
DownloadApplicationsDB(APPLICATION_DATEBASE_URL);
if (!GetCurrentDirectoryW(MAX_PATH, szPath))
return FALSE;
swprintf(szCabPath, L"%s\\rappmgr.cab", szPath);
wcscat(szPath, L"\\rapps\\");
wcscpy(szAppsPath, szPath);
ExtractFilesFromCab(szCabPath, szAppsPath);
return TRUE;
}
BOOL BOOL
EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc) EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc)
@ -75,10 +145,10 @@ EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc)
hFind = FindFirstFileW(szPath, &FindFileData); hFind = FindFirstFileW(szPath, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE) if (hFind == INVALID_HANDLE_VALUE)
{ {
if (GetFileAttributesW(szCabPath) == 0xFFFFFFFF) if (GetFileAttributesW(szCabPath) == INVALID_FILE_ATTRIBUTES)
DownloadApplicationsDB(APPLICATION_DATEBASE_URL); DownloadApplicationsDB(APPLICATION_DATEBASE_URL);
ExtractFilesFromCab(szCabPath, szAppsPath); ExtractFilesFromCab(szCabPath, szAppsPath);
hFind = FindFirstFileW(szPath, &FindFileData); hFind = FindFirstFileW(szPath, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE) if (hFind == INVALID_HANDLE_VALUE)
return FALSE; return FALSE;

View file

@ -84,6 +84,7 @@ UninstallApplication(INT Index, BOOL bModify)
WCHAR szModify[] = L"ModifyPath"; WCHAR szModify[] = L"ModifyPath";
WCHAR szUninstall[] = L"UninstallString"; WCHAR szUninstall[] = L"UninstallString";
WCHAR szPath[MAX_PATH]; WCHAR szPath[MAX_PATH];
WCHAR szAppName[MAX_STR_LEN];
DWORD dwType, dwSize; DWORD dwType, dwSize;
INT ItemIndex; INT ItemIndex;
LVITEM Item; LVITEM Item;
@ -103,6 +104,9 @@ UninstallApplication(INT Index, BOOL bModify)
ItemIndex = Index; ItemIndex = Index;
} }
ListView_GetItemText(hListView, ItemIndex, 0, szAppName, sizeof(szAppName) / sizeof(WCHAR));
WriteLogMessage(EVENTLOG_SUCCESS, MSG_SUCCESS_REMOVE, szAppName);
ZeroMemory(&Item, sizeof(LVITEM)); ZeroMemory(&Item, sizeof(LVITEM));
Item.mask = LVIF_PARAM; Item.mask = LVIF_PARAM;

View file

@ -4,7 +4,7 @@ IDR_MAINMENU MENU
BEGIN BEGIN
POPUP "&Ôàéë" POPUP "&Ôàéë"
BEGIN BEGIN
MENUITEM "Íà&ñòðîéêè", ID_SETTINGS, GRAYED MENUITEM "Íà&ñòðîéêè", ID_SETTINGS
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Èç&õîä", ID_EXIT MENUITEM "Èç&õîä", ID_EXIT
END END
@ -44,22 +44,39 @@ BEGIN
END END
END END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Íàñòðîéêè" CAPTION "Settings"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "Äîáðå", IDOK, 255, 212, 60, 14 GROUPBOX "General", -1, 4, 2, 240, 61
PUSHBUTTON "Îòêàç", IDCANCEL, 320, 212, 60, 14 AUTOCHECKBOX "&Save window position", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Update the list of accessible programs at start", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "&Log of installation and removal of programs", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Downloading", -1, 4, 65, 240, 51
LTEXT "Folder for downloadings:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Choose", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Delete installers of programs after installation", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 181, 124, 60, 14
END END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ñâàëÿíå è ñëàãàíå" CAPTION "Program installation"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "Äîáðå", IDOK, 255, 212, 60, 14 LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
PUSHBUTTON "Îòêàç", IDCANCEL, 320, 212, 60, 14
AUTORADIOBUTTON "&Install from a disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Download and install", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 150, 78, 60, 14
END END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
@ -163,5 +180,7 @@ BEGIN
IDS_AVAILABLEFORINST "Íàëè÷íî çà ñëàãàíå" IDS_AVAILABLEFORINST "Íàëè÷íî çà ñëàãàíå"
IDS_UPDATES "Îáíîâëåíèÿ" IDS_UPDATES "Îáíîâëåíèÿ"
IDS_APPLICATIONS "Ïðèëîæåíèÿ" IDS_APPLICATIONS "Ïðèëîæåíèÿ"
IDS_DOWNLOAD_FOLDER "Ñâàëÿíèÿ" IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for downloading of programs:"
IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS Applications Manager""!"
END END

View file

@ -4,7 +4,7 @@ IDR_MAINMENU MENU
BEGIN BEGIN
POPUP "&Datei" POPUP "&Datei"
BEGIN BEGIN
MENUITEM "&Einstellungen", ID_SETTINGS, GRAYED MENUITEM "&Einstellungen", ID_SETTINGS
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "&Beenden", ID_EXIT MENUITEM "&Beenden", ID_EXIT
END END
@ -44,22 +44,39 @@ BEGIN
END END
END END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Einstellungen" CAPTION "Settings"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 GROUPBOX "General", -1, 4, 2, 240, 61
PUSHBUTTON "Abbrechen", IDCANCEL, 320, 212, 60, 14 AUTOCHECKBOX "&Save window position", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Update the list of accessible programs at start", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "&Log of installation and removal of programs", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Downloading", -1, 4, 65, 240, 51
LTEXT "Folder for downloadings:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Choose", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Delete installers of programs after installation", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 181, 124, 60, 14
END END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Herunterladen und installieren" CAPTION "Program installation"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
PUSHBUTTON "Abbrechen", IDCANCEL, 320, 212, 60, 14
AUTORADIOBUTTON "&Install from a disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Download and install", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 150, 78, 60, 14
END END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
@ -163,5 +180,7 @@ BEGIN
IDS_AVAILABLEFORINST "Zur Installation verfügbar" IDS_AVAILABLEFORINST "Zur Installation verfügbar"
IDS_UPDATES "Updates" IDS_UPDATES "Updates"
IDS_APPLICATIONS "Anwendungen" IDS_APPLICATIONS "Anwendungen"
IDS_DOWNLOAD_FOLDER "Downloads" IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for downloading of programs:"
IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS Applications Manager""!"
END END

View file

@ -4,7 +4,7 @@ IDR_MAINMENU MENU
BEGIN BEGIN
POPUP "&File" POPUP "&File"
BEGIN BEGIN
MENUITEM "&Settings", ID_SETTINGS, GRAYED MENUITEM "&Settings", ID_SETTINGS
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "E&xit", ID_EXIT MENUITEM "E&xit", ID_EXIT
END END
@ -44,22 +44,39 @@ BEGIN
END END
END END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Settings" CAPTION "Settings"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 GROUPBOX "General", -1, 4, 2, 240, 61
PUSHBUTTON "Cancel", IDCANCEL, 320, 212, 60, 14 AUTOCHECKBOX "&Save window position", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Update the list of accessible programs at start", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "&Log of installation and removal of programs", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Downloading", -1, 4, 65, 240, 51
LTEXT "Folder for downloadings:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Choose", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Delete installers of programs after installation", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 181, 124, 60, 14
END END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Download and Install" CAPTION "Program installation"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
PUSHBUTTON "Cancel", IDCANCEL, 320, 212, 60, 14
AUTORADIOBUTTON "&Install from a disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Download and install", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 150, 78, 60, 14
END END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
@ -156,12 +173,14 @@ BEGIN
IDS_UNINSTALL "Uninstall" IDS_UNINSTALL "Uninstall"
IDS_MODIFY "Modify" IDS_MODIFY "Modify"
IDS_APPS_COUNT "Applications count: %d" IDS_APPS_COUNT "Applications count: %d"
IDS_WELCOME_TITLE "Welcome to ReactOS Application Manager!\n\n" IDS_WELCOME_TITLE "Welcome to ReactOS Applications Manager!\n\n"
IDS_WELCOME_TEXT "Choose a category on the left, then choose a application for install or uninstall.\nReactOS Web Site: " IDS_WELCOME_TEXT "Choose a category on the left, then choose a application for install or uninstall.\nReactOS Web Site: "
IDS_WELCOME_URL "http://www.reactos.org" IDS_WELCOME_URL "http://www.reactos.org"
IDS_INSTALLED "Installed" IDS_INSTALLED "Installed"
IDS_AVAILABLEFORINST "Available for installation" IDS_AVAILABLEFORINST "Available for installation"
IDS_UPDATES "Updates" IDS_UPDATES "Updates"
IDS_APPLICATIONS "Applications" IDS_APPLICATIONS "Applications"
IDS_DOWNLOAD_FOLDER "Downloads" IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for downloading of programs:"
IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS Applications Manager""!"
END END

View file

@ -4,7 +4,7 @@ IDR_MAINMENU MENU
BEGIN BEGIN
POPUP "&Archivo" POPUP "&Archivo"
BEGIN BEGIN
MENUITEM "&Ajustes", ID_SETTINGS, GRAYED MENUITEM "&Ajustes", ID_SETTINGS
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Sa&lir", ID_EXIT MENUITEM "Sa&lir", ID_EXIT
END END
@ -44,22 +44,39 @@ BEGIN
END END
END END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ajustes" CAPTION "Settings"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "Aceptar", IDOK, 255, 212, 60, 14 GROUPBOX "General", -1, 4, 2, 240, 61
PUSHBUTTON "Cancelar", IDCANCEL, 320, 212, 60, 14 AUTOCHECKBOX "&Save window position", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Update the list of accessible programs at start", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "&Log of installation and removal of programs", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Downloading", -1, 4, 65, 240, 51
LTEXT "Folder for downloadings:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Choose", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Delete installers of programs after installation", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 181, 124, 60, 14
END END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Descargar e Instalar" CAPTION "Program installation"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "Aceptar", IDOK, 255, 212, 60, 14 LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
PUSHBUTTON "Cancelar", IDCANCEL, 320, 212, 60, 14
AUTORADIOBUTTON "&Install from a disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Download and install", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 150, 78, 60, 14
END END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
@ -156,12 +173,14 @@ BEGIN
IDS_UNINSTALL "Desinstalar" IDS_UNINSTALL "Desinstalar"
IDS_MODIFY "Modificar" IDS_MODIFY "Modificar"
IDS_APPS_COUNT "Cantidad de aplicaciones: %d" IDS_APPS_COUNT "Cantidad de aplicaciones: %d"
IDS_WELCOME_TITLE "Bienvenido a ReactOS Application Manager!\n\n" IDS_WELCOME_TITLE "Bienvenido a ReactOS Applications Manager!\n\n"
IDS_WELCOME_TEXT "Seleccione una categoría a la izquierda, posteriormente seleccione la aplicación a instalar o desinstalar.\nReactOS Web: " IDS_WELCOME_TEXT "Seleccione una categoría a la izquierda, posteriormente seleccione la aplicación a instalar o desinstalar.\nReactOS Web: "
IDS_WELCOME_URL "http://www.reactos.org" IDS_WELCOME_URL "http://www.reactos.org"
IDS_INSTALLED "Instaladas" IDS_INSTALLED "Instaladas"
IDS_AVAILABLEFORINST "Disponible para instalación" IDS_AVAILABLEFORINST "Disponible para instalación"
IDS_UPDATES "Actualizaciones" IDS_UPDATES "Actualizaciones"
IDS_APPLICATIONS "Aplicaciones" IDS_APPLICATIONS "Aplicaciones"
IDS_DOWNLOAD_FOLDER "Descargas" IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for downloading of programs:"
IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS Applications Manager""!"
END END

View file

@ -4,7 +4,7 @@ IDR_MAINMENU MENU
BEGIN BEGIN
POPUP "ファイル(&F)" POPUP "ファイル(&F)"
BEGIN BEGIN
MENUITEM "設定(&S)", ID_SETTINGS, GRAYED MENUITEM "<EFBFBD>Ýè(&S)", ID_SETTINGS
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "終了(&X)", ID_EXIT MENUITEM "終了(&X)", ID_EXIT
END END
@ -44,22 +44,39 @@ BEGIN
END END
END END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "設定" CAPTION "Settings"
FONT 9, "MS UI Gothic" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 GROUPBOX "General", -1, 4, 2, 240, 61
PUSHBUTTON "キャンセル", IDCANCEL, 320, 212, 60, 14 AUTOCHECKBOX "&Save window position", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Update the list of accessible programs at start", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "&Log of installation and removal of programs", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Downloading", -1, 4, 65, 240, 51
LTEXT "Folder for downloadings:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Choose", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Delete installers of programs after installation", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 181, 124, 60, 14
END END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ダウンロードとインストール" CAPTION "Program installation"
FONT 9, "MS UI Gothic" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
PUSHBUTTON "キャンセル", IDCANCEL, 320, 212, 60, 14
AUTORADIOBUTTON "&Install from a disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Download and install", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 150, 78, 60, 14
END END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
@ -163,5 +180,7 @@ BEGIN
IDS_AVAILABLEFORINST "インストール可能\" IDS_AVAILABLEFORINST "インストール可能\"
IDS_UPDATES "アップデート" IDS_UPDATES "アップデート"
IDS_APPLICATIONS "アプリケーション" IDS_APPLICATIONS "アプリケーション"
IDS_DOWNLOAD_FOLDER "ダウンロード" IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for downloading of programs:"
IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS Applications Manager""!"
END END

View file

@ -4,7 +4,7 @@ IDR_MAINMENU MENU
BEGIN BEGIN
POPUP "&Fil" POPUP "&Fil"
BEGIN BEGIN
MENUITEM "&Innstillinger", ID_SETTINGS, GRAYED MENUITEM "&Innstillinger", ID_SETTINGS
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "A&vslutt", ID_EXIT MENUITEM "A&vslutt", ID_EXIT
END END
@ -44,22 +44,39 @@ BEGIN
END END
END END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Innstillinger" CAPTION "Settings"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 GROUPBOX "General", -1, 4, 2, 240, 61
PUSHBUTTON "Avbryt", IDCANCEL, 320, 212, 60, 14 AUTOCHECKBOX "&Save window position", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Update the list of accessible programs at start", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "&Log of installation and removal of programs", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Downloading", -1, 4, 65, 240, 51
LTEXT "Folder for downloadings:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Choose", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Delete installers of programs after installation", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 181, 124, 60, 14
END END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Last ned og installere" CAPTION "Program installation"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
PUSHBUTTON "Avbryt", IDCANCEL, 320, 212, 60, 14
AUTORADIOBUTTON "&Install from a disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Download and install", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 150, 78, 60, 14
END END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
@ -163,5 +180,7 @@ BEGIN
IDS_AVAILABLEFORINST "Tilgjengelig for installasjon" IDS_AVAILABLEFORINST "Tilgjengelig for installasjon"
IDS_UPDATES "Oppdateringer" IDS_UPDATES "Oppdateringer"
IDS_APPLICATIONS "Programmer" IDS_APPLICATIONS "Programmer"
IDS_DOWNLOAD_FOLDER "Nedlastinger" IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for downloading of programs:"
IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS Applications Manager""!"
END END

View file

@ -6,7 +6,7 @@ IDR_MAINMENU MENU
BEGIN BEGIN
POPUP "&Plik" POPUP "&Plik"
BEGIN BEGIN
MENUITEM "&Ustawienia", ID_SETTINGS, GRAYED MENUITEM "&Ustawienia", ID_SETTINGS
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "&Wyjœcie", ID_EXIT MENUITEM "&Wyjœcie", ID_EXIT
END END
@ -46,22 +46,39 @@ BEGIN
END END
END END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ustawienia" CAPTION "Settings"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 GROUPBOX "General", -1, 4, 2, 240, 61
PUSHBUTTON "Anuluj", IDCANCEL, 320, 212, 60, 14 AUTOCHECKBOX "&Save window position", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Update the list of accessible programs at start", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "&Log of installation and removal of programs", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Downloading", -1, 4, 65, 240, 51
LTEXT "Folder for downloadings:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Choose", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Delete installers of programs after installation", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 181, 124, 60, 14
END END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Œci¹gnij i zainstaluj" CAPTION "Program installation"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
PUSHBUTTON "Anuluj", IDCANCEL, 320, 212, 60, 14
AUTORADIOBUTTON "&Install from a disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Download and install", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 150, 78, 60, 14
END END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
@ -165,5 +182,7 @@ BEGIN
IDS_AVAILABLEFORINST "Dostêpne" IDS_AVAILABLEFORINST "Dostêpne"
IDS_UPDATES "Uaktualnienia" IDS_UPDATES "Uaktualnienia"
IDS_APPLICATIONS "Aplikacje" IDS_APPLICATIONS "Aplikacje"
IDS_DOWNLOAD_FOLDER "Œci¹gniête" IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for downloading of programs:"
IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS Applications Manager""!"
END END

View file

@ -4,7 +4,7 @@ IDR_MAINMENU MENU
BEGIN BEGIN
POPUP "&Ôàéë" POPUP "&Ôàéë"
BEGIN BEGIN
MENUITEM "&Ïàðàìåòðû", ID_SETTINGS, GRAYED MENUITEM "&Параметры", ID_SETTINGS
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "&Âûõîä", ID_EXIT MENUITEM "&Âûõîä", ID_EXIT
END END
@ -44,22 +44,39 @@ BEGIN
END END
END END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ïàðàìåòðû" CAPTION "Ïàðàìåòðû"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 GROUPBOX "Общие", -1, 4, 2, 240, 61
PUSHBUTTON "Îòìåíà", IDCANCEL, 320, 212, 60, 14 AUTOCHECKBOX "&Сохранять положение окна", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Обновлять список доступных программ при запуске", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "&Вести лог установки/удаления программ", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Загрузка", -1, 4, 65, 240, 51
LTEXT "Папка для загрузок:", -1, 16, 75, 77, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "В&ыбрать", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Удалять инсталляторы программ после установки", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "По умолчанию", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Отмена", IDCANCEL, 181, 124, 60, 14
END END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ñêà÷àòü è óñòàíîâèòü" CAPTION "Установка программы"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
PUSHBUTTON "Îòìåíà", IDCANCEL, 320, 212, 60, 14
AUTORADIOBUTTON "&Установить с диска", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Скачать и установить", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Отмена", IDCANCEL, 150, 78, 60, 14
END END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
@ -113,7 +130,7 @@ BEGIN
IDS_INFO_UPDATEINFO "\nÈíôîðìàöèÿ îá îáíîâëåíèÿõ: " IDS_INFO_UPDATEINFO "\nÈíôîðìàöèÿ îá îáíîâëåíèÿõ: "
IDS_INFO_INFOABOUT "\nÈíôîðìàöèÿ î ïðîãðàììå: " IDS_INFO_INFOABOUT "\nÈíôîðìàöèÿ î ïðîãðàììå: "
IDS_INFO_COMMENTS "\nÊîììåíòàðèè: " IDS_INFO_COMMENTS "\nÊîììåíòàðèè: "
IDS_INFO_INSTLOCATION "\nÓñòàíîâëåíî èç: " IDS_INFO_INSTLOCATION "\nУстановлено в: "
IDS_INFO_INSTALLSRC "\nÈñòî÷íèê óñòàíîâêè: " IDS_INFO_INSTALLSRC "\nÈñòî÷íèê óñòàíîâêè: "
IDS_INFO_UNINSTALLSTR "\nÑòðîêà äëÿ óäàëåíèÿ: " IDS_INFO_UNINSTALLSTR "\nÑòðîêà äëÿ óäàëåíèÿ: "
IDS_INFO_MODIFYPATH "\nÑòðîêà äëÿ èçìåíåíèÿ: " IDS_INFO_MODIFYPATH "\nÑòðîêà äëÿ èçìåíåíèÿ: "
@ -163,5 +180,7 @@ BEGIN
IDS_AVAILABLEFORINST "Äîñòóïíî äëÿ óñòàíîâêè" IDS_AVAILABLEFORINST "Äîñòóïíî äëÿ óñòàíîâêè"
IDS_UPDATES "Îáíîâëåíèÿ" IDS_UPDATES "Îáíîâëåíèÿ"
IDS_APPLICATIONS "Ïðèëîæåíèÿ" IDS_APPLICATIONS "Ïðèëîæåíèÿ"
IDS_DOWNLOAD_FOLDER "Downloads" IDS_CHOOSE_FOLDER_TEXT "Выберите папку, которая будет использоваться для загрузки программ:"
IDS_CHOOSE_FOLDER_ERROR "Вы указали несуществующую папку!"
IDS_USER_NOT_ADMIN "Вы должны быть администратором для запуска ""Менеджера приложений ReactOS""!"
END END

View file

@ -9,7 +9,7 @@ IDR_MAINMENU MENU
BEGIN BEGIN
POPUP "&Súbor" POPUP "&Súbor"
BEGIN BEGIN
MENUITEM "&Nastavenia", ID_SETTINGS, GRAYED MENUITEM "&Nastavenia", ID_SETTINGS
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "S&konèi<C3A8>", ID_EXIT MENUITEM "S&konèi<C3A8>", ID_EXIT
END END
@ -49,22 +49,39 @@ BEGIN
END END
END END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Nastavenia" CAPTION "Settings"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 GROUPBOX "General", -1, 4, 2, 240, 61
PUSHBUTTON "Zruši<C5A1>", IDCANCEL, 320, 212, 60, 14 AUTOCHECKBOX "&Save window position", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Update the list of accessible programs at start", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "&Log of installation and removal of programs", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Downloading", -1, 4, 65, 240, 51
LTEXT "Folder for downloadings:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Choose", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Delete installers of programs after installation", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 181, 124, 60, 14
END END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Stiahnu<6E> a nainštalova<76>" CAPTION "Program installation"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14 LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
PUSHBUTTON "Zruši<C5A1>", IDCANCEL, 320, 212, 60, 14
AUTORADIOBUTTON "&Install from a disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Download and install", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 150, 78, 60, 14
END END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
@ -168,5 +185,7 @@ BEGIN
IDS_AVAILABLEFORINST "Dostupné pre nainštalovanie" IDS_AVAILABLEFORINST "Dostupné pre nainštalovanie"
IDS_UPDATES "Aktualizácie" IDS_UPDATES "Aktualizácie"
IDS_APPLICATIONS "Aplikácie" IDS_APPLICATIONS "Aplikácie"
IDS_DOWNLOAD_FOLDER "S<>ahovania" // Downloads IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for downloading of programs:"
IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS Applications Manager""!"
END END

View file

@ -12,7 +12,7 @@ IDR_MAINMENU MENU
BEGIN BEGIN
POPUP "&Ôàéë" POPUP "&Ôàéë"
BEGIN BEGIN
MENUITEM "&Íàëàøòóâàííÿ", ID_SETTINGS, GRAYED MENUITEM "&Íàëàøòóâàííÿ", ID_SETTINGS
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Â&èõ³ä", ID_EXIT MENUITEM "Â&èõ³ä", ID_EXIT
END END
@ -52,22 +52,39 @@ BEGIN
END END
END END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Íàëàøòóâàííÿ" CAPTION "Settings"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "Òàê", IDOK, 255, 212, 60, 14 GROUPBOX "General", -1, 4, 2, 240, 61
PUSHBUTTON "ͳ", IDCANCEL, 320, 212, 60, 14 AUTOCHECKBOX "&Save window position", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Update the list of accessible programs at start", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "&Log of installation and removal of programs", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Downloading", -1, 4, 65, 240, 51
LTEXT "Folder for downloadings:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Choose", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Delete installers of programs after installation", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Default", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 181, 124, 60, 14
END END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 386, 231 IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Çàâàíòàæèòè ³ âñòàíîâèòè" CAPTION "Program installation"
FONT 8, "MS Shell Dlg" FONT 8, "MS Shell Dlg"
BEGIN BEGIN
PUSHBUTTON "Òàê", IDOK, 255, 212, 60, 14 LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
PUSHBUTTON "ͳ", IDCANCEL, 320, 212, 60, 14
AUTORADIOBUTTON "&Install from a disk (CD or DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Download and install", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Cancel", IDCANCEL, 150, 78, 60, 14
END END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76 IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
@ -171,5 +188,7 @@ BEGIN
IDS_AVAILABLEFORINST "Äîñòóïí³ äëÿ âñòàíîâëåííÿ" IDS_AVAILABLEFORINST "Äîñòóïí³ äëÿ âñòàíîâëåííÿ"
IDS_UPDATES "Îíîâëåííÿ" IDS_UPDATES "Îíîâëåííÿ"
IDS_APPLICATIONS "Äîäàòêè" IDS_APPLICATIONS "Äîäàòêè"
IDS_DOWNLOAD_FOLDER "Çàâàíòàæåííÿ" IDS_CHOOSE_FOLDER_TEXT "Choose a folder which will be used for downloading of programs:"
IDS_CHOOSE_FOLDER_ERROR "You have specified a nonexistent folder!"
IDS_USER_NOT_ADMIN "You should be administrator for start ""ReactOS Applications Manager""!"
END END

View file

@ -37,6 +37,7 @@
#include <urlmon.h> #include <urlmon.h>
static PAPPLICATION_INFO AppInfo; static PAPPLICATION_INFO AppInfo;
static HICON hIcon = NULL;
typedef struct _IBindStatusCallbackImpl typedef struct _IBindStatusCallbackImpl
{ {
@ -220,32 +221,12 @@ ThreadFunc(LPVOID Context)
DWORD r; DWORD r;
BOOL bCancelled = FALSE; BOOL bCancelled = FALSE;
BOOL bTempfile = FALSE; BOOL bTempfile = FALSE;
HKEY hKey = NULL; BOOL bCab = FALSE;
DWORD dwSize = MAX_PATH;
/* built the path for the download */ /* built the path for the download */
p = wcsrchr(AppInfo->szUrlDownload, L'/'); p = wcsrchr(AppInfo->szUrlDownload, L'/');
if (!p) goto end; if (!p) goto end;
/* Create default download path */
if (GetWindowsDirectoryW(path, sizeof(path) / sizeof(WCHAR)))
{
WCHAR DPath[MAX_PATH];
int i;
for (i = 0; i < 4; i++)
{
if (i == 3)
{
DPath[i] = '\0';
break;
}
DPath[i] = path[i];
}
LoadStringW(hInst, IDS_DOWNLOAD_FOLDER, path, sizeof(path) / sizeof(WCHAR));
wcscat(DPath, path);
wcscpy(path, DPath);
}
if (wcslen(AppInfo->szUrlDownload) > 4) if (wcslen(AppInfo->szUrlDownload) > 4)
{ {
if (AppInfo->szUrlDownload[wcslen(AppInfo->szUrlDownload) - 4] == '.' && if (AppInfo->szUrlDownload[wcslen(AppInfo->szUrlDownload) - 4] == '.' &&
@ -253,32 +234,18 @@ ThreadFunc(LPVOID Context)
AppInfo->szUrlDownload[wcslen(AppInfo->szUrlDownload) - 2] == 'a' && AppInfo->szUrlDownload[wcslen(AppInfo->szUrlDownload) - 2] == 'a' &&
AppInfo->szUrlDownload[wcslen(AppInfo->szUrlDownload) - 1] == 'b') AppInfo->szUrlDownload[wcslen(AppInfo->szUrlDownload) - 1] == 'b')
{ {
bCab = TRUE;
if (!GetCurrentDirectoryW(MAX_PATH, path)) if (!GetCurrentDirectoryW(MAX_PATH, path))
goto end; goto end;
} }
else else
{ {
if (RegOpenKeyW(HKEY_LOCAL_MACHINE, wcscpy(path, SettingsInfo.szDownloadDir);
L"Software\\ReactOS\\rappmgr",
&hKey) == ERROR_SUCCESS)
{
if ((RegQueryValueExW(hKey,
L"DownloadFolder",
NULL,
NULL,
(LPBYTE)&path,
&dwSize) != ERROR_SUCCESS) && (path[0] == 0))
{
RegCloseKey(hKey);
goto end;
}
RegCloseKey(hKey);
}
} }
} }
else goto end; else goto end;
if (GetFileAttributesW(path) == 0xFFFFFFFF) if (GetFileAttributesW(path) == INVALID_FILE_ATTRIBUTES)
{ {
if (!CreateDirectoryW(path, NULL)) if (!CreateDirectoryW(path, NULL))
goto end; goto end;
@ -292,36 +259,30 @@ ThreadFunc(LPVOID Context)
dl = CreateDl(Context, &bCancelled); dl = CreateDl(Context, &bCancelled);
r = URLDownloadToFileW(NULL, AppInfo->szUrlDownload, path, 0, dl); r = URLDownloadToFileW(NULL, AppInfo->szUrlDownload, path, 0, dl);
if (dl) IBindStatusCallback_Release(dl); if (dl) IBindStatusCallback_Release(dl);
if (S_OK != r) if (S_OK != r) goto end;
{ else if (bCancelled) goto end;
MessageBoxW(0, L"Download error!", NULL, 0);
goto end;
}
else if (bCancelled)
{
goto end;
}
ShowWindow(Dlg, SW_HIDE); ShowWindow(Dlg, SW_HIDE);
/* run it */ /* run it */
memset(&si, 0, sizeof(si)); memset(&si, 0, sizeof(si));
si.cb = sizeof(si); si.cb = sizeof(si);
r = CreateProcessW(path, NULL, NULL, NULL, 0, 0, NULL, NULL, &si, &pi); r = CreateProcessW(path, NULL, NULL, NULL, 0, 0, NULL, NULL, &si, &pi);
if (0 == r) if (0 == r) goto end;
{
goto end;
}
CloseHandle(pi.hThread); CloseHandle(pi.hThread);
WaitForSingleObject(pi.hProcess, INFINITE); WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess); CloseHandle(pi.hProcess);
end: end:
if (bTempfile) if (bTempfile)
{ {
if (bCancelled) if (bCancelled || (SettingsInfo.bDelInstaller && !bCab))
DeleteFileW(path); DeleteFileW(path);
} }
EndDialog(Dlg, 0); EndDialog(Dlg, 0);
return 0; return 0;
} }
@ -337,6 +298,13 @@ DownloadDlgProc(HWND Dlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
hIcon = LoadIconW(hInst, MAKEINTRESOURCEW(IDI_MAIN));
if (hIcon)
{
SendMessageW(Dlg, WM_SETICON, ICON_BIG, (LPARAM) hIcon);
SendMessageW(Dlg, WM_SETICON, ICON_SMALL, (LPARAM) hIcon);
}
SetWindowLongPtrW(Dlg, GWLP_USERDATA, 0); SetWindowLongPtrW(Dlg, GWLP_USERDATA, 0);
Item = GetDlgItem(Dlg, IDC_DOWNLOAD_PROGRESS); Item = GetDlgItem(Dlg, IDC_DOWNLOAD_PROGRESS);
if (Item) if (Item)
@ -359,6 +327,7 @@ DownloadDlgProc(HWND Dlg, UINT Msg, WPARAM wParam, LPARAM lParam)
return FALSE; return FALSE;
case WM_CLOSE: case WM_CLOSE:
if (hIcon) DestroyIcon(hIcon);
EndDialog(Dlg, 0); EndDialog(Dlg, 0);
return TRUE; return TRUE;
@ -376,6 +345,8 @@ DownloadApplication(INT Index)
AppInfo = (PAPPLICATION_INFO) ListViewGetlParam(Index); AppInfo = (PAPPLICATION_INFO) ListViewGetlParam(Index);
if (!AppInfo) return FALSE; if (!AppInfo) return FALSE;
WriteLogMessage(EVENTLOG_SUCCESS, MSG_SUCCESS_INSTALL, AppInfo->szName);
DialogBoxW(hInst, DialogBoxW(hInst,
MAKEINTRESOURCEW(IDD_DOWNLOAD_DIALOG), MAKEINTRESOURCEW(IDD_DOWNLOAD_DIALOG),
hMainWnd, hMainWnd,

View file

@ -13,6 +13,8 @@
#define EXTRACT_FILLFILELIST 0x00000001 #define EXTRACT_FILLFILELIST 0x00000001
#define EXTRACT_EXTRACTFILES 0x00000002 #define EXTRACT_EXTRACTFILES 0x00000002
static HANDLE hLog = NULL;
typedef struct typedef struct
{ {
int erfOper; int erfOper;
@ -244,3 +246,106 @@ ExtractFilesFromCab(LPWSTR lpCabName, LPWSTR lpOutputPath)
return FALSE; return FALSE;
} }
VOID
InitLogs(VOID)
{
WCHAR szBuf[MAX_PATH] = L"SYSTEM\\CurrentControlSet\\Services\\EventLog\\ReactOS Application Manager\\ReactOS Application Manager";
WCHAR szPath[MAX_PATH];
DWORD dwCategoryNum = 1;
DWORD dwDisp, dwData;
HKEY hKey;
if (!SettingsInfo.bLogEnabled) return;
if (RegCreateKeyExW(HKEY_LOCAL_MACHINE,
szBuf, 0, NULL,
REG_OPTION_NON_VOLATILE,
KEY_WRITE, NULL, &hKey, &dwDisp) != ERROR_SUCCESS)
{
return;
}
if (!GetCurrentDirectoryW(MAX_PATH, szPath)) return;
wcscat(szPath, L"\\rapps.exe");
if (RegSetValueExW(hKey,
L"EventMessageFile",
0,
REG_EXPAND_SZ,
(LPBYTE)szPath,
(DWORD)(wcslen(szPath) + 1) * sizeof(WCHAR)) != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return;
}
dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE |
EVENTLOG_INFORMATION_TYPE;
if (RegSetValueExW(hKey,
L"TypesSupported",
0,
REG_DWORD,
(LPBYTE)&dwData,
sizeof(DWORD)) != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return;
}
if (RegSetValueExW(hKey,
L"CategoryMessageFile",
0,
REG_EXPAND_SZ,
(LPBYTE)szPath,
(DWORD)(wcslen(szPath) + 1) * sizeof(WCHAR)) != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return;
}
if (RegSetValueExW(hKey,
L"CategoryCount",
0,
REG_DWORD,
(LPBYTE)&dwCategoryNum,
sizeof(DWORD)) != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return;
}
RegCloseKey(hKey);
hLog = RegisterEventSourceW(NULL, L"ReactOS Application Manager");
}
VOID
FreeLogs(VOID)
{
if (hLog) DeregisterEventSource(hLog);
}
BOOL
WriteLogMessage(WORD wType, DWORD dwEventID, LPWSTR lpMsg)
{
if (!SettingsInfo.bLogEnabled) return TRUE;
if (!ReportEventW(hLog,
wType,
0,
dwEventID,
NULL,
1,
0,
(LPCWSTR*)&lpMsg,
NULL))
{
return FALSE;
}
return TRUE;
}

View file

@ -5,8 +5,11 @@
#include <commctrl.h> #include <commctrl.h>
#include <richedit.h> #include <richedit.h>
#include <shlwapi.h> #include <shlwapi.h>
#include <shlobj.h>
#include <wchar.h> #include <wchar.h>
#include <rappsmsg.h>
#include "resource.h" #include "resource.h"
#define APPLICATION_DATEBASE_URL L"http://opendn.org/rappmgr.cab" #define APPLICATION_DATEBASE_URL L"http://opendn.org/rappmgr.cab"
@ -55,9 +58,9 @@ typedef struct
{ {
INT Category; INT Category;
WCHAR szName[MAX_PATH]; WCHAR szName[MAX_PATH];
WCHAR szRegName[MAX_PATH]; WCHAR szRegName[MAX_PATH];
WCHAR szVersion[MAX_PATH]; WCHAR szVersion[MAX_PATH];
WCHAR szLicence[MAX_PATH]; WCHAR szLicence[MAX_PATH];
WCHAR szDesc[MAX_PATH]; WCHAR szDesc[MAX_PATH];
WCHAR szSize[MAX_PATH]; WCHAR szSize[MAX_PATH];
WCHAR szUrlSite[MAX_PATH]; WCHAR szUrlSite[MAX_PATH];
@ -66,10 +69,27 @@ typedef struct
} APPLICATION_INFO, *PAPPLICATION_INFO; } APPLICATION_INFO, *PAPPLICATION_INFO;
typedef struct
{
BOOL bSaveWndPos;
BOOL bUpdateAtStart;
BOOL bLogEnabled;
WCHAR szDownloadDir[MAX_PATH];
BOOL bDelInstaller;
/* Window Pos */
BOOL Maximized;
INT Left;
INT Top;
INT Right;
INT Bottom;
} SETTINGS_INFO, *PSETTINGS_INFO;
/* available.c */ /* available.c */
typedef BOOL (CALLBACK *AVAILENUMPROC)(APPLICATION_INFO Info); typedef BOOL (CALLBACK *AVAILENUMPROC)(APPLICATION_INFO Info);
BOOL EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc); BOOL EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc);
BOOL ShowAvailableAppInfo(INT Index); BOOL ShowAvailableAppInfo(INT Index);
BOOL UpdateAppsDB(VOID);
/* installdlg.c */ /* installdlg.c */
BOOL InstallApplication(INT Index); BOOL InstallApplication(INT Index);
@ -86,6 +106,9 @@ BOOL IsInstalledApplication(LPWSTR lpRegName, BOOL IsUserKey);
extern HWND hMainWnd; extern HWND hMainWnd;
extern HINSTANCE hInst; extern HINSTANCE hInst;
extern INT SelectedEnumType; extern INT SelectedEnumType;
extern SETTINGS_INFO SettingsInfo;
VOID SaveSettings(HWND hwnd);
VOID FillDafaultSettings(PSETTINGS_INFO pSettingsInfo);
/* listview.c */ /* listview.c */
extern HWND hListView; extern HWND hListView;
@ -111,6 +134,9 @@ VOID SetWelcomeText(VOID);
VOID ShowPopupMenu(HWND hwnd, UINT MenuID); VOID ShowPopupMenu(HWND hwnd, UINT MenuID);
BOOL StartProcess(LPWSTR lpPath, BOOL Wait); BOOL StartProcess(LPWSTR lpPath, BOOL Wait);
BOOL ExtractFilesFromCab(LPWSTR lpCabName, LPWSTR lpOutputPath); BOOL ExtractFilesFromCab(LPWSTR lpCabName, LPWSTR lpOutputPath);
VOID InitLogs(VOID);
VOID FreeLogs(VOID);
BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPWSTR lpMsg);
/* parser.c */ /* parser.c */
INT ParserGetString(LPCWSTR section, LPCWSTR entry, LPWSTR buffer, UINT len, LPCWSTR filename); INT ParserGetString(LPCWSTR section, LPCWSTR entry, LPWSTR buffer, UINT len, LPCWSTR filename);

View file

@ -1,4 +1,7 @@
<group>
<module name="rapps" type="win32gui" installbase="system32" installname="rapps.exe" unicode="yes"> <module name="rapps" type="win32gui" installbase="system32" installname="rapps.exe" unicode="yes">
<include base="ReactOS">include/reactos</include>
<include base="rapps" root="intermediate">.</include>
<include base="rapps">.</include> <include base="rapps">.</include>
<library>advapi32</library> <library>advapi32</library>
@ -12,6 +15,8 @@
<library>shlwapi</library> <library>shlwapi</library>
<library>ntdll</library> <library>ntdll</library>
<dependency>rappsmsg</dependency>
<file>aboutdlg.c</file> <file>aboutdlg.c</file>
<file>available.c</file> <file>available.c</file>
<file>installdlg.c</file> <file>installdlg.c</file>
@ -29,3 +34,7 @@
<file>winmain.c</file> <file>winmain.c</file>
<file>rapps.rc</file> <file>rapps.rc</file>
</module> </module>
<module name="rappsmsg" type="messageheader">
<file>rappsmsg.mc</file>
</module>
</group>

View file

@ -37,4 +37,6 @@ IDI_CAT_VIDEO ICON DISCARDABLE "res/cats/video.ico"
1 24 DISCARDABLE "manifest.xml" 1 24 DISCARDABLE "manifest.xml"
#include <rappsmsg.rc>
#include "rsrc.rc" #include "rsrc.rc"

View file

@ -0,0 +1,28 @@
MessageIdTypedef=ULONG
SeverityNames=(Success=0x0:STATUS_SEVERITY_SUCCESS
Informational=0x1:STATUS_SEVERITY_INFORMATIONAL
Warning=0x2:STATUS_SEVERITY_WARNING
Error=0x3:STATUS_SEVERITY_ERROR)
FacilityNames=(System=0x0:FACILITY_SYSTEM Application=0xFFF)
LanguageNames=(English=0x409:MSG00409)
MessageId=1
Severity=Success
Facility=Application
SymbolicName=MSG_SUCCESS_INSTALL
Language=English
Installation of the program "%1" is called.
.
MessageId=2
Severity=Success
Facility=Application
SymbolicName=MSG_SUCCESS_REMOVE
Language=English
Removal of the program "%1" is called.
.
; EOF

View file

@ -36,6 +36,16 @@
#define IDC_STATUSBAR 1000 #define IDC_STATUSBAR 1000
#define IDC_DOWNLOAD_PROGRESS 1001 #define IDC_DOWNLOAD_PROGRESS 1001
#define IDC_DOWNLOAD_STATUS 1002 #define IDC_DOWNLOAD_STATUS 1002
#define IDC_SAVE_WINDOW_POS 1003
#define IDC_UPDATE_AVLIST 1004
#define IDC_DOWNLOAD_DIR_EDIT 1005
#define IDC_DEL_AFTER_INSTALL 1006
#define IDC_LOG_ENABLED 1007
#define IDC_CHOOSE 1008
#define IDC_DEFAULT_SETTINGS 1009
#define IDC_INSTALL_TEXT 1010
#define IDC_CD_INSTALL 1011
#define IDC_DOWNLOAD_INSTALL 1012
/* Dialogs */ /* Dialogs */
#define IDD_SETTINGS_DIALOG 300 #define IDD_SETTINGS_DIALOG 300
@ -74,7 +84,9 @@
#define IDS_AVAILABLEFORINST 110 #define IDS_AVAILABLEFORINST 110
#define IDS_UPDATES 111 #define IDS_UPDATES 111
#define IDS_APPLICATIONS 112 #define IDS_APPLICATIONS 112
#define IDS_DOWNLOAD_FOLDER 113 #define IDS_CHOOSE_FOLDER_TEXT 113
#define IDS_CHOOSE_FOLDER_ERROR 114
#define IDS_USER_NOT_ADMIN 115
/* Tooltips */ /* Tooltips */
#define IDS_TOOLTIP_INSTALL 200 #define IDS_TOOLTIP_INSTALL 200

View file

@ -8,6 +8,48 @@
#include "rapps.h" #include "rapps.h"
SETTINGS_INFO NewSettingsInfo;
#define IS_CHECKED(a, b) \
a = (SendDlgItemMessage(hDlg, b, BM_GETCHECK, 0, 0) == BST_CHECKED) ? TRUE : FALSE
BOOL
ChooseFolder(HWND hwnd)
{
BROWSEINFO fi;
LPCITEMIDLIST lpItemList;
WCHAR szPath[MAX_PATH], szBuf[MAX_STR_LEN];
LoadStringW(hInst, IDS_CHOOSE_FOLDER_TEXT, szBuf, sizeof(szBuf) / sizeof(TCHAR));
ZeroMemory(&fi, sizeof(BROWSEINFO));
fi.hwndOwner = hwnd;
fi.lpszTitle = szBuf;
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 (wcslen(szPath) == 0) return FALSE;
SetDlgItemTextW(hwnd, IDC_DOWNLOAD_DIR_EDIT, szPath);
return TRUE;
}
static VOID
InitSettingsControls(HWND hDlg, SETTINGS_INFO Info)
{
SendDlgItemMessage(hDlg, IDC_SAVE_WINDOW_POS, BM_SETCHECK, Info.bSaveWndPos, 0);
SendDlgItemMessage(hDlg, IDC_UPDATE_AVLIST, BM_SETCHECK, Info.bUpdateAtStart, 0);
SendDlgItemMessage(hDlg, IDC_LOG_ENABLED, BM_SETCHECK, Info.bLogEnabled, 0);
SendDlgItemMessage(hDlg, IDC_DEL_AFTER_INSTALL, BM_SETCHECK, Info.bDelInstaller, 0);
SetWindowTextW(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT),
Info.szDownloadDir);
}
static static
INT_PTR CALLBACK INT_PTR CALLBACK
@ -17,7 +59,8 @@ SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
{ {
NewSettingsInfo = SettingsInfo;
InitSettingsControls(hDlg, SettingsInfo);
} }
break; break;
@ -25,10 +68,67 @@ SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{ {
switch (LOWORD(wParam)) switch (LOWORD(wParam))
{ {
case IDC_CHOOSE:
ChooseFolder(hDlg);
break;
case IDC_SAVE_WINDOW_POS:
IS_CHECKED(NewSettingsInfo.bSaveWndPos, IDC_SAVE_WINDOW_POS);
break;
case IDC_UPDATE_AVLIST:
IS_CHECKED(NewSettingsInfo.bUpdateAtStart, IDC_UPDATE_AVLIST);
break;
case IDC_LOG_ENABLED:
IS_CHECKED(NewSettingsInfo.bLogEnabled, IDC_LOG_ENABLED);
break;
case IDC_DEL_AFTER_INSTALL:
IS_CHECKED(NewSettingsInfo.bDelInstaller, IDC_DEL_AFTER_INSTALL);
break;
case IDC_DEFAULT_SETTINGS:
FillDafaultSettings(&NewSettingsInfo);
InitSettingsControls(hDlg, NewSettingsInfo);
break;
case IDOK: case IDOK:
{
WCHAR szDir[MAX_PATH];
DWORD dwAttr;
GetWindowTextW(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT),
szDir, MAX_PATH);
dwAttr = GetFileAttributesW(szDir);
if (dwAttr != INVALID_FILE_ATTRIBUTES &&
(dwAttr & FILE_ATTRIBUTE_DIRECTORY))
{
wcscpy(NewSettingsInfo.szDownloadDir, szDir);
}
else
{
WCHAR szMsgText[MAX_STR_LEN];
LoadStringW(hInst,
IDS_CHOOSE_FOLDER_ERROR,
szMsgText, sizeof(szMsgText) / sizeof(WCHAR));
MessageBoxW(hDlg, szMsgText, NULL, MB_OK | MB_ICONERROR);
SetFocus(GetDlgItem(hDlg, IDC_DOWNLOAD_DIR_EDIT));
break;
}
SettingsInfo = NewSettingsInfo;
SaveSettings(GetParent(hDlg));
EndDialog(hDlg, LOWORD(wParam));
}
break;
case IDCANCEL: case IDCANCEL:
EndDialog(hDlg, LOWORD(wParam)); EndDialog(hDlg, LOWORD(wParam));
break; break;
} }
} }
break; break;

View file

@ -26,7 +26,7 @@ static const TBBUTTON Buttons[] =
{ 5, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, { 5, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0},
{ 3, ID_REFRESH, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, 0}, { 3, ID_REFRESH, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, 0},
{ 5, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, { 5, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0},
{ 4, ID_SETTINGS, TBSTATE_INDETERMINATE, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, 0}, { 4, ID_SETTINGS, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, 0},
{ 5, ID_EXIT, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, 0} { 5, ID_EXIT, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, 0}
}; };

View file

@ -13,7 +13,70 @@ HINSTANCE hInst;
HIMAGELIST hImageListView = NULL; HIMAGELIST hImageListView = NULL;
HIMAGELIST hImageTreeView = NULL; HIMAGELIST hImageTreeView = NULL;
INT SelectedEnumType = ENUM_ALL_COMPONENTS; INT SelectedEnumType = ENUM_ALL_COMPONENTS;
SETTINGS_INFO SettingsInfo;
VOID
FillDafaultSettings(PSETTINGS_INFO pSettingsInfo)
{
pSettingsInfo->bSaveWndPos = TRUE;
pSettingsInfo->bUpdateAtStart = FALSE;
pSettingsInfo->bLogEnabled = TRUE;
wcscpy(pSettingsInfo->szDownloadDir, L"C:\\Downloads");
pSettingsInfo->bDelInstaller = FALSE;
pSettingsInfo->Maximized = FALSE;
pSettingsInfo->Left = 0;
pSettingsInfo->Top = 0;
pSettingsInfo->Right = 680;
pSettingsInfo->Bottom = 450;
}
static BOOL
LoadSettings(VOID)
{
HKEY hKey;
DWORD dwSize;
if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS\\rapps", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
{
dwSize = sizeof(SETTINGS_INFO);
if (RegQueryValueExW(hKey, L"Settings", NULL, NULL, (LPBYTE)&SettingsInfo, &dwSize) == ERROR_SUCCESS)
{
RegCloseKey(hKey);
return TRUE;
}
RegCloseKey(hKey);
}
return FALSE;
}
VOID
SaveSettings(HWND hwnd)
{
WINDOWPLACEMENT wp;
HKEY hKey;
if (SettingsInfo.bSaveWndPos)
{
wp.length = sizeof(WINDOWPLACEMENT);
GetWindowPlacement(hwnd, &wp);
SettingsInfo.Left = wp.rcNormalPosition.left;
SettingsInfo.Top = wp.rcNormalPosition.top;
SettingsInfo.Right = wp.rcNormalPosition.right;
SettingsInfo.Bottom = wp.rcNormalPosition.bottom;
SettingsInfo.Maximized = (IsZoomed(hwnd) || (wp.flags & WPF_RESTORETOMAXIMIZED));
}
if (RegCreateKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS\\rapps", 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS)
{
RegSetValueEx(hKey, L"Settings", 0, REG_BINARY, (LPBYTE)&SettingsInfo, sizeof(SETTINGS_INFO));
RegCloseKey(hKey);
}
}
VOID VOID
FreeInstalledAppList(VOID) FreeInstalledAppList(VOID)
@ -226,6 +289,15 @@ InitCategoriesList(VOID)
BOOL BOOL
InitControls(HWND hwnd) InitControls(HWND hwnd)
{ {
if (SettingsInfo.bSaveWndPos)
{
MoveWindow(hwnd, SettingsInfo.Left, SettingsInfo.Top,
SettingsInfo.Right - SettingsInfo.Left,
SettingsInfo.Bottom - SettingsInfo.Top, TRUE);
if (SettingsInfo.Maximized) ShowWindow(hwnd, SW_MAXIMIZE);
}
if (CreateStatusBar(hwnd) && if (CreateStatusBar(hwnd) &&
CreateToolBar(hwnd) && CreateToolBar(hwnd) &&
CreateListView(hwnd) && CreateListView(hwnd) &&
@ -347,7 +419,7 @@ MainWndOnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
HDWP hdwp = BeginDeferWindowPos(5); HDWP hdwp = BeginDeferWindowPos(5);
INT SearchBarWidth = GetWindowWidth(hSearchBar); INT SearchBarWidth = GetWindowWidth(hSearchBar);
INT RichPos = GetWindowHeight(hRichEdit); INT RichPos = GetWindowHeight(hRichEdit);
INT NewPos = GetClientWindowHeight(hMainWnd) - (RichPos + SPLIT_WIDTH + GetWindowHeight(hStatusBar)); INT NewPos = HIWORD(lParam) - (RichPos + SPLIT_WIDTH + GetWindowHeight(hStatusBar));
INT VSplitterPos; INT VSplitterPos;
/* Size status bar */ /* Size status bar */
@ -387,7 +459,7 @@ MainWndOnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
while (NewPos < SPLIT_WIDTH + GetWindowHeight(hToolBar)) while (NewPos < SPLIT_WIDTH + GetWindowHeight(hToolBar))
{ {
RichPos--; RichPos--;
NewPos = GetClientWindowHeight(hMainWnd) - (RichPos + NewPos = HIWORD(lParam) - (RichPos +
SPLIT_WIDTH + GetWindowHeight(hStatusBar)); SPLIT_WIDTH + GetWindowHeight(hStatusBar));
} }
SetHSplitterPos(NewPos); SetHSplitterPos(NewPos);
@ -408,7 +480,7 @@ MainWndOnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
0, 0,
VSplitterPos + SPLIT_WIDTH, VSplitterPos + SPLIT_WIDTH,
GetHSplitterPos() + SPLIT_WIDTH, GetHSplitterPos() + SPLIT_WIDTH,
GetClientWindowWidth(hMainWnd) - (VSplitterPos + SPLIT_WIDTH), LOWORD(lParam) - (VSplitterPos + SPLIT_WIDTH),
RichPos, RichPos,
SWP_NOZORDER|SWP_NOACTIVATE); SWP_NOZORDER|SWP_NOACTIVATE);
@ -418,7 +490,7 @@ MainWndOnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
0, 0,
VSplitterPos + SPLIT_WIDTH, VSplitterPos + SPLIT_WIDTH,
GetHSplitterPos(), GetHSplitterPos(),
GetClientWindowWidth(hMainWnd) - (VSplitterPos + SPLIT_WIDTH), LOWORD(lParam) - (VSplitterPos + SPLIT_WIDTH),
SPLIT_WIDTH, SPLIT_WIDTH,
SWP_NOZORDER|SWP_NOACTIVATE); SWP_NOZORDER|SWP_NOACTIVATE);
@ -433,6 +505,9 @@ MainWindowProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
case WM_CREATE: case WM_CREATE:
if (!InitControls(hwnd)) if (!InitControls(hwnd))
PostMessage(hwnd, WM_CLOSE, 0, 0); PostMessage(hwnd, WM_CLOSE, 0, 0);
if (SettingsInfo.bUpdateAtStart)
UpdateAppsDB();
break; break;
case WM_COMMAND: case WM_COMMAND:
@ -624,12 +699,18 @@ MainWindowProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
case WM_DESTROY: case WM_DESTROY:
{ {
ShowWindow(hwnd, SW_HIDE);
SaveSettings(hwnd);
FreeLogs();
if (IS_AVAILABLE_ENUM(SelectedEnumType)) if (IS_AVAILABLE_ENUM(SelectedEnumType))
FreeAvailableAppList(); FreeAvailableAppList();
if (IS_INSTALLED_ENUM(SelectedEnumType)) if (IS_INSTALLED_ENUM(SelectedEnumType))
FreeInstalledAppList(); FreeInstalledAppList();
if (hImageListView) ImageList_Destroy(hImageListView); if (hImageListView) ImageList_Destroy(hImageListView);
if (hImageTreeView) ImageList_Destroy(hImageTreeView); if (hImageTreeView) ImageList_Destroy(hImageTreeView);
PostQuitMessage(0); PostQuitMessage(0);
return 0; return 0;
} }
@ -645,9 +726,19 @@ wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nSh
WNDCLASSEXW WndClass = {0}; WNDCLASSEXW WndClass = {0};
WCHAR szWindowClass[] = L"ROSAPPMGR"; WCHAR szWindowClass[] = L"ROSAPPMGR";
WCHAR szWindowName[MAX_STR_LEN]; WCHAR szWindowName[MAX_STR_LEN];
WCHAR szErrorText[MAX_STR_LEN];
HANDLE hMutex = NULL; HANDLE hMutex = NULL;
MSG Msg; MSG Msg;
hInst = hInstance;
if (!IsUserAnAdmin())
{
LoadStringW(hInst, IDS_USER_NOT_ADMIN, szErrorText, sizeof(szErrorText) / sizeof(WCHAR));
MessageBox(0, szErrorText, NULL, MB_OK | MB_ICONWARNING);
return 1;
}
hMutex = CreateMutexW(NULL, FALSE, szWindowClass); hMutex = CreateMutexW(NULL, FALSE, szWindowClass);
if ((!hMutex) || (GetLastError() == ERROR_ALREADY_EXISTS)) if ((!hMutex) || (GetLastError() == ERROR_ALREADY_EXISTS))
{ {
@ -660,7 +751,12 @@ wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nSh
return 1; return 1;
} }
hInst = hInstance; if (!LoadSettings())
{
FillDafaultSettings(&SettingsInfo);
}
InitLogs();
InitCommonControls(); InitCommonControls();