mirror of
https://github.com/reactos/reactos.git
synced 2025-05-20 17:45:06 +00:00
- 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:
parent
8f5ae98c4f
commit
6ca1f0de19
22 changed files with 787 additions and 174 deletions
|
@ -38,6 +38,76 @@ ShowAvailableAppInfo(INT Index)
|
|||
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
|
||||
EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc)
|
||||
|
@ -75,10 +145,10 @@ EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc)
|
|||
hFind = FindFirstFileW(szPath, &FindFileData);
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
if (GetFileAttributesW(szCabPath) == 0xFFFFFFFF)
|
||||
DownloadApplicationsDB(APPLICATION_DATEBASE_URL);
|
||||
if (GetFileAttributesW(szCabPath) == INVALID_FILE_ATTRIBUTES)
|
||||
DownloadApplicationsDB(APPLICATION_DATEBASE_URL);
|
||||
|
||||
ExtractFilesFromCab(szCabPath, szAppsPath);
|
||||
ExtractFilesFromCab(szCabPath, szAppsPath);
|
||||
hFind = FindFirstFileW(szPath, &FindFileData);
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
return FALSE;
|
||||
|
|
|
@ -84,6 +84,7 @@ UninstallApplication(INT Index, BOOL bModify)
|
|||
WCHAR szModify[] = L"ModifyPath";
|
||||
WCHAR szUninstall[] = L"UninstallString";
|
||||
WCHAR szPath[MAX_PATH];
|
||||
WCHAR szAppName[MAX_STR_LEN];
|
||||
DWORD dwType, dwSize;
|
||||
INT ItemIndex;
|
||||
LVITEM Item;
|
||||
|
@ -103,6 +104,9 @@ UninstallApplication(INT Index, BOOL bModify)
|
|||
ItemIndex = Index;
|
||||
}
|
||||
|
||||
ListView_GetItemText(hListView, ItemIndex, 0, szAppName, sizeof(szAppName) / sizeof(WCHAR));
|
||||
WriteLogMessage(EVENTLOG_SUCCESS, MSG_SUCCESS_REMOVE, szAppName);
|
||||
|
||||
ZeroMemory(&Item, sizeof(LVITEM));
|
||||
|
||||
Item.mask = LVIF_PARAM;
|
||||
|
|
|
@ -4,7 +4,7 @@ IDR_MAINMENU MENU
|
|||
BEGIN
|
||||
POPUP "&Ôàéë"
|
||||
BEGIN
|
||||
MENUITEM "Íà&ñòðîéêè", ID_SETTINGS, GRAYED
|
||||
MENUITEM "Íà&ñòðîéêè", ID_SETTINGS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Èç&õîä", ID_EXIT
|
||||
END
|
||||
|
@ -44,22 +44,39 @@ BEGIN
|
|||
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
|
||||
CAPTION "Íàñòðîéêè"
|
||||
CAPTION "Settings"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "Äîáðå", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Îòêàç", IDCANCEL, 320, 212, 60, 14
|
||||
GROUPBOX "General", -1, 4, 2, 240, 61
|
||||
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
|
||||
|
||||
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
|
||||
CAPTION "Ñâàëÿíå è ñëàãàíå"
|
||||
CAPTION "Program installation"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "Äîáðå", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Îòêàç", IDCANCEL, 320, 212, 60, 14
|
||||
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
|
||||
|
||||
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
|
||||
|
||||
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
|
@ -163,5 +180,7 @@ BEGIN
|
|||
IDS_AVAILABLEFORINST "Íàëè÷íî çà ñëàãàíå"
|
||||
IDS_UPDATES "Îáíîâëåíèÿ"
|
||||
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
|
||||
|
|
|
@ -4,7 +4,7 @@ IDR_MAINMENU MENU
|
|||
BEGIN
|
||||
POPUP "&Datei"
|
||||
BEGIN
|
||||
MENUITEM "&Einstellungen", ID_SETTINGS, GRAYED
|
||||
MENUITEM "&Einstellungen", ID_SETTINGS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Beenden", ID_EXIT
|
||||
END
|
||||
|
@ -44,22 +44,39 @@ BEGIN
|
|||
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
|
||||
CAPTION "Einstellungen"
|
||||
CAPTION "Settings"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Abbrechen", IDCANCEL, 320, 212, 60, 14
|
||||
GROUPBOX "General", -1, 4, 2, 240, 61
|
||||
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
|
||||
|
||||
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
|
||||
CAPTION "Herunterladen und installieren"
|
||||
CAPTION "Program installation"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Abbrechen", IDCANCEL, 320, 212, 60, 14
|
||||
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
|
||||
|
||||
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
|
||||
|
||||
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
|
@ -163,5 +180,7 @@ BEGIN
|
|||
IDS_AVAILABLEFORINST "Zur Installation verfügbar"
|
||||
IDS_UPDATES "Updates"
|
||||
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
|
||||
|
|
|
@ -4,7 +4,7 @@ IDR_MAINMENU MENU
|
|||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&Settings", ID_SETTINGS, GRAYED
|
||||
MENUITEM "&Settings", ID_SETTINGS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit", ID_EXIT
|
||||
END
|
||||
|
@ -44,22 +44,39 @@ BEGIN
|
|||
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
|
||||
CAPTION "Settings"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 320, 212, 60, 14
|
||||
GROUPBOX "General", -1, 4, 2, 240, 61
|
||||
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
|
||||
|
||||
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
|
||||
CAPTION "Download and Install"
|
||||
CAPTION "Program installation"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 320, 212, 60, 14
|
||||
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
|
||||
|
||||
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
|
||||
|
||||
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
|
@ -156,12 +173,14 @@ BEGIN
|
|||
IDS_UNINSTALL "Uninstall"
|
||||
IDS_MODIFY "Modify"
|
||||
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_URL "http://www.reactos.org"
|
||||
IDS_INSTALLED "Installed"
|
||||
IDS_AVAILABLEFORINST "Available for installation"
|
||||
IDS_UPDATES "Updates"
|
||||
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
|
||||
|
|
|
@ -4,7 +4,7 @@ IDR_MAINMENU MENU
|
|||
BEGIN
|
||||
POPUP "&Archivo"
|
||||
BEGIN
|
||||
MENUITEM "&Ajustes", ID_SETTINGS, GRAYED
|
||||
MENUITEM "&Ajustes", ID_SETTINGS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sa&lir", ID_EXIT
|
||||
END
|
||||
|
@ -44,22 +44,39 @@ BEGIN
|
|||
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
|
||||
CAPTION "Ajustes"
|
||||
CAPTION "Settings"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "Aceptar", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 320, 212, 60, 14
|
||||
GROUPBOX "General", -1, 4, 2, 240, 61
|
||||
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
|
||||
|
||||
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
|
||||
CAPTION "Descargar e Instalar"
|
||||
CAPTION "Program installation"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "Aceptar", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 320, 212, 60, 14
|
||||
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
|
||||
|
||||
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
|
||||
|
||||
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
|
@ -156,12 +173,14 @@ BEGIN
|
|||
IDS_UNINSTALL "Desinstalar"
|
||||
IDS_MODIFY "Modificar"
|
||||
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_URL "http://www.reactos.org"
|
||||
IDS_INSTALLED "Instaladas"
|
||||
IDS_AVAILABLEFORINST "Disponible para instalación"
|
||||
IDS_UPDATES "Actualizaciones"
|
||||
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
|
||||
|
|
|
@ -4,7 +4,7 @@ IDR_MAINMENU MENU
|
|||
BEGIN
|
||||
POPUP "ファイル(&F)"
|
||||
BEGIN
|
||||
MENUITEM "設定(&S)", ID_SETTINGS, GRAYED
|
||||
MENUITEM "<EFBFBD>Ý’è(&S)", ID_SETTINGS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "終了(&X)", ID_EXIT
|
||||
END
|
||||
|
@ -44,22 +44,39 @@ BEGIN
|
|||
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
|
||||
CAPTION "設定"
|
||||
FONT 9, "MS UI Gothic"
|
||||
CAPTION "Settings"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "キャンセル", IDCANCEL, 320, 212, 60, 14
|
||||
GROUPBOX "General", -1, 4, 2, 240, 61
|
||||
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
|
||||
|
||||
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
|
||||
CAPTION "ダウンロードとインストール"
|
||||
FONT 9, "MS UI Gothic"
|
||||
CAPTION "Program installation"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "キャンセル", IDCANCEL, 320, 212, 60, 14
|
||||
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
|
||||
|
||||
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
|
||||
|
||||
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
|
@ -163,5 +180,7 @@ BEGIN
|
|||
IDS_AVAILABLEFORINST "インストール可能\"
|
||||
IDS_UPDATES "アップデート"
|
||||
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
|
||||
|
|
|
@ -4,7 +4,7 @@ IDR_MAINMENU MENU
|
|||
BEGIN
|
||||
POPUP "&Fil"
|
||||
BEGIN
|
||||
MENUITEM "&Innstillinger", ID_SETTINGS, GRAYED
|
||||
MENUITEM "&Innstillinger", ID_SETTINGS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "A&vslutt", ID_EXIT
|
||||
END
|
||||
|
@ -44,22 +44,39 @@ BEGIN
|
|||
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
|
||||
CAPTION "Innstillinger"
|
||||
CAPTION "Settings"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Avbryt", IDCANCEL, 320, 212, 60, 14
|
||||
GROUPBOX "General", -1, 4, 2, 240, 61
|
||||
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
|
||||
|
||||
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
|
||||
CAPTION "Last ned og installere"
|
||||
CAPTION "Program installation"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Avbryt", IDCANCEL, 320, 212, 60, 14
|
||||
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
|
||||
|
||||
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
|
||||
|
||||
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
|
@ -163,5 +180,7 @@ BEGIN
|
|||
IDS_AVAILABLEFORINST "Tilgjengelig for installasjon"
|
||||
IDS_UPDATES "Oppdateringer"
|
||||
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
|
||||
|
|
|
@ -6,7 +6,7 @@ IDR_MAINMENU MENU
|
|||
BEGIN
|
||||
POPUP "&Plik"
|
||||
BEGIN
|
||||
MENUITEM "&Ustawienia", ID_SETTINGS, GRAYED
|
||||
MENUITEM "&Ustawienia", ID_SETTINGS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Wyjœcie", ID_EXIT
|
||||
END
|
||||
|
@ -46,22 +46,39 @@ BEGIN
|
|||
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
|
||||
CAPTION "Ustawienia"
|
||||
CAPTION "Settings"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Anuluj", IDCANCEL, 320, 212, 60, 14
|
||||
GROUPBOX "General", -1, 4, 2, 240, 61
|
||||
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
|
||||
|
||||
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
|
||||
CAPTION "Œci¹gnij i zainstaluj"
|
||||
CAPTION "Program installation"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Anuluj", IDCANCEL, 320, 212, 60, 14
|
||||
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
|
||||
|
||||
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
|
||||
|
||||
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
|
@ -165,5 +182,7 @@ BEGIN
|
|||
IDS_AVAILABLEFORINST "Dostêpne"
|
||||
IDS_UPDATES "Uaktualnienia"
|
||||
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
|
||||
|
|
|
@ -4,7 +4,7 @@ IDR_MAINMENU MENU
|
|||
BEGIN
|
||||
POPUP "&Ôàéë"
|
||||
BEGIN
|
||||
MENUITEM "&Ïàðàìåòðû", ID_SETTINGS, GRAYED
|
||||
MENUITEM "&Параметры", ID_SETTINGS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Âûõîä", ID_EXIT
|
||||
END
|
||||
|
@ -44,22 +44,39 @@ BEGIN
|
|||
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
|
||||
CAPTION "Ïàðàìåòðû"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Îòìåíà", IDCANCEL, 320, 212, 60, 14
|
||||
GROUPBOX "Общие", -1, 4, 2, 240, 61
|
||||
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
|
||||
|
||||
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
|
||||
CAPTION "Ñêà÷àòü è óñòàíîâèòü"
|
||||
CAPTION "Установка программы"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Îòìåíà", IDCANCEL, 320, 212, 60, 14
|
||||
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
|
||||
|
||||
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
|
||||
|
||||
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
|
@ -113,7 +130,7 @@ BEGIN
|
|||
IDS_INFO_UPDATEINFO "\nÈíôîðìàöèÿ îá îáíîâëåíèÿõ: "
|
||||
IDS_INFO_INFOABOUT "\nÈíôîðìàöèÿ î ïðîãðàììå: "
|
||||
IDS_INFO_COMMENTS "\nÊîììåíòàðèè: "
|
||||
IDS_INFO_INSTLOCATION "\nÓñòàíîâëåíî èç: "
|
||||
IDS_INFO_INSTLOCATION "\nУстановлено в: "
|
||||
IDS_INFO_INSTALLSRC "\nÈñòî÷íèê óñòàíîâêè: "
|
||||
IDS_INFO_UNINSTALLSTR "\nÑòðîêà äëÿ óäàëåíèÿ: "
|
||||
IDS_INFO_MODIFYPATH "\nÑòðîêà äëÿ èçìåíåíèÿ: "
|
||||
|
@ -163,5 +180,7 @@ BEGIN
|
|||
IDS_AVAILABLEFORINST "Äîñòóïíî äëÿ óñòàíîâêè"
|
||||
IDS_UPDATES "Îáíîâëåíèÿ"
|
||||
IDS_APPLICATIONS "Ïðèëîæåíèÿ"
|
||||
IDS_DOWNLOAD_FOLDER "Downloads"
|
||||
IDS_CHOOSE_FOLDER_TEXT "Выберите папку, которая будет использоваться для загрузки программ:"
|
||||
IDS_CHOOSE_FOLDER_ERROR "Вы указали несуществующую папку!"
|
||||
IDS_USER_NOT_ADMIN "Вы должны быть администратором для запуска ""Менеджера приложений ReactOS""!"
|
||||
END
|
||||
|
|
|
@ -9,7 +9,7 @@ IDR_MAINMENU MENU
|
|||
BEGIN
|
||||
POPUP "&Súbor"
|
||||
BEGIN
|
||||
MENUITEM "&Nastavenia", ID_SETTINGS, GRAYED
|
||||
MENUITEM "&Nastavenia", ID_SETTINGS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "S&konèi<C3A8>", ID_EXIT
|
||||
END
|
||||
|
@ -49,22 +49,39 @@ BEGIN
|
|||
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
|
||||
CAPTION "Nastavenia"
|
||||
CAPTION "Settings"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Zruši<C5A1>", IDCANCEL, 320, 212, 60, 14
|
||||
GROUPBOX "General", -1, 4, 2, 240, 61
|
||||
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
|
||||
|
||||
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
|
||||
CAPTION "Stiahnu<6E> a nainštalova<76>"
|
||||
CAPTION "Program installation"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "OK", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "Zruši<C5A1>", IDCANCEL, 320, 212, 60, 14
|
||||
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
|
||||
|
||||
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
|
||||
|
||||
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
|
@ -168,5 +185,7 @@ BEGIN
|
|||
IDS_AVAILABLEFORINST "Dostupné pre nainštalovanie"
|
||||
IDS_UPDATES "Aktualizá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
|
||||
|
|
|
@ -12,7 +12,7 @@ IDR_MAINMENU MENU
|
|||
BEGIN
|
||||
POPUP "&Ôàéë"
|
||||
BEGIN
|
||||
MENUITEM "&Íàëàøòóâàííÿ", ID_SETTINGS, GRAYED
|
||||
MENUITEM "&Íàëàøòóâàííÿ", ID_SETTINGS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Â&èõ³ä", ID_EXIT
|
||||
END
|
||||
|
@ -52,22 +52,39 @@ BEGIN
|
|||
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
|
||||
CAPTION "Íàëàøòóâàííÿ"
|
||||
CAPTION "Settings"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "Òàê", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "ͳ", IDCANCEL, 320, 212, 60, 14
|
||||
GROUPBOX "General", -1, 4, 2, 240, 61
|
||||
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
|
||||
|
||||
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
|
||||
CAPTION "Çàâàíòàæèòè ³ âñòàíîâèòè"
|
||||
CAPTION "Program installation"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "Òàê", IDOK, 255, 212, 60, 14
|
||||
PUSHBUTTON "ͳ", IDCANCEL, 320, 212, 60, 14
|
||||
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
|
||||
|
||||
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
|
||||
|
||||
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
|
||||
|
@ -171,5 +188,7 @@ BEGIN
|
|||
IDS_AVAILABLEFORINST "Äîñòóïí³ äëÿ âñòàíîâëåííÿ"
|
||||
IDS_UPDATES "Îíîâëåííÿ"
|
||||
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
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include <urlmon.h>
|
||||
|
||||
static PAPPLICATION_INFO AppInfo;
|
||||
static HICON hIcon = NULL;
|
||||
|
||||
typedef struct _IBindStatusCallbackImpl
|
||||
{
|
||||
|
@ -220,32 +221,12 @@ ThreadFunc(LPVOID Context)
|
|||
DWORD r;
|
||||
BOOL bCancelled = FALSE;
|
||||
BOOL bTempfile = FALSE;
|
||||
HKEY hKey = NULL;
|
||||
DWORD dwSize = MAX_PATH;
|
||||
BOOL bCab = FALSE;
|
||||
|
||||
/* built the path for the download */
|
||||
p = wcsrchr(AppInfo->szUrlDownload, L'/');
|
||||
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 (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) - 1] == 'b')
|
||||
{
|
||||
bCab = TRUE;
|
||||
if (!GetCurrentDirectoryW(MAX_PATH, path))
|
||||
goto end;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (RegOpenKeyW(HKEY_LOCAL_MACHINE,
|
||||
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);
|
||||
}
|
||||
wcscpy(path, SettingsInfo.szDownloadDir);
|
||||
}
|
||||
}
|
||||
else goto end;
|
||||
|
||||
if (GetFileAttributesW(path) == 0xFFFFFFFF)
|
||||
if (GetFileAttributesW(path) == INVALID_FILE_ATTRIBUTES)
|
||||
{
|
||||
if (!CreateDirectoryW(path, NULL))
|
||||
goto end;
|
||||
|
@ -292,36 +259,30 @@ ThreadFunc(LPVOID Context)
|
|||
dl = CreateDl(Context, &bCancelled);
|
||||
r = URLDownloadToFileW(NULL, AppInfo->szUrlDownload, path, 0, dl);
|
||||
if (dl) IBindStatusCallback_Release(dl);
|
||||
if (S_OK != r)
|
||||
{
|
||||
MessageBoxW(0, L"Download error!", NULL, 0);
|
||||
goto end;
|
||||
}
|
||||
else if (bCancelled)
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
if (S_OK != r) goto end;
|
||||
else if (bCancelled) goto end;
|
||||
|
||||
ShowWindow(Dlg, SW_HIDE);
|
||||
|
||||
/* run it */
|
||||
memset(&si, 0, sizeof(si));
|
||||
si.cb = sizeof(si);
|
||||
r = CreateProcessW(path, NULL, NULL, NULL, 0, 0, NULL, NULL, &si, &pi);
|
||||
if (0 == r)
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
if (0 == r) goto end;
|
||||
|
||||
CloseHandle(pi.hThread);
|
||||
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||
CloseHandle(pi.hProcess);
|
||||
|
||||
end:
|
||||
if (bTempfile)
|
||||
{
|
||||
if (bCancelled)
|
||||
DeleteFileW(path);
|
||||
}
|
||||
end:
|
||||
if (bTempfile)
|
||||
{
|
||||
if (bCancelled || (SettingsInfo.bDelInstaller && !bCab))
|
||||
DeleteFileW(path);
|
||||
}
|
||||
|
||||
EndDialog(Dlg, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -337,6 +298,13 @@ DownloadDlgProc(HWND Dlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
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);
|
||||
Item = GetDlgItem(Dlg, IDC_DOWNLOAD_PROGRESS);
|
||||
if (Item)
|
||||
|
@ -359,6 +327,7 @@ DownloadDlgProc(HWND Dlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
|||
return FALSE;
|
||||
|
||||
case WM_CLOSE:
|
||||
if (hIcon) DestroyIcon(hIcon);
|
||||
EndDialog(Dlg, 0);
|
||||
return TRUE;
|
||||
|
||||
|
@ -376,6 +345,8 @@ DownloadApplication(INT Index)
|
|||
AppInfo = (PAPPLICATION_INFO) ListViewGetlParam(Index);
|
||||
if (!AppInfo) return FALSE;
|
||||
|
||||
WriteLogMessage(EVENTLOG_SUCCESS, MSG_SUCCESS_INSTALL, AppInfo->szName);
|
||||
|
||||
DialogBoxW(hInst,
|
||||
MAKEINTRESOURCEW(IDD_DOWNLOAD_DIALOG),
|
||||
hMainWnd,
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
#define EXTRACT_FILLFILELIST 0x00000001
|
||||
#define EXTRACT_EXTRACTFILES 0x00000002
|
||||
|
||||
static HANDLE hLog = NULL;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int erfOper;
|
||||
|
@ -244,3 +246,106 @@ ExtractFilesFromCab(LPWSTR lpCabName, LPWSTR lpOutputPath)
|
|||
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -5,8 +5,11 @@
|
|||
#include <commctrl.h>
|
||||
#include <richedit.h>
|
||||
#include <shlwapi.h>
|
||||
#include <shlobj.h>
|
||||
#include <wchar.h>
|
||||
|
||||
#include <rappsmsg.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
#define APPLICATION_DATEBASE_URL L"http://opendn.org/rappmgr.cab"
|
||||
|
@ -55,9 +58,9 @@ typedef struct
|
|||
{
|
||||
INT Category;
|
||||
WCHAR szName[MAX_PATH];
|
||||
WCHAR szRegName[MAX_PATH];
|
||||
WCHAR szRegName[MAX_PATH];
|
||||
WCHAR szVersion[MAX_PATH];
|
||||
WCHAR szLicence[MAX_PATH];
|
||||
WCHAR szLicence[MAX_PATH];
|
||||
WCHAR szDesc[MAX_PATH];
|
||||
WCHAR szSize[MAX_PATH];
|
||||
WCHAR szUrlSite[MAX_PATH];
|
||||
|
@ -66,10 +69,27 @@ typedef struct
|
|||
|
||||
} 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 */
|
||||
typedef BOOL (CALLBACK *AVAILENUMPROC)(APPLICATION_INFO Info);
|
||||
BOOL EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc);
|
||||
BOOL ShowAvailableAppInfo(INT Index);
|
||||
BOOL UpdateAppsDB(VOID);
|
||||
|
||||
/* installdlg.c */
|
||||
BOOL InstallApplication(INT Index);
|
||||
|
@ -86,6 +106,9 @@ BOOL IsInstalledApplication(LPWSTR lpRegName, BOOL IsUserKey);
|
|||
extern HWND hMainWnd;
|
||||
extern HINSTANCE hInst;
|
||||
extern INT SelectedEnumType;
|
||||
extern SETTINGS_INFO SettingsInfo;
|
||||
VOID SaveSettings(HWND hwnd);
|
||||
VOID FillDafaultSettings(PSETTINGS_INFO pSettingsInfo);
|
||||
|
||||
/* listview.c */
|
||||
extern HWND hListView;
|
||||
|
@ -111,6 +134,9 @@ VOID SetWelcomeText(VOID);
|
|||
VOID ShowPopupMenu(HWND hwnd, UINT MenuID);
|
||||
BOOL StartProcess(LPWSTR lpPath, BOOL Wait);
|
||||
BOOL ExtractFilesFromCab(LPWSTR lpCabName, LPWSTR lpOutputPath);
|
||||
VOID InitLogs(VOID);
|
||||
VOID FreeLogs(VOID);
|
||||
BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPWSTR lpMsg);
|
||||
|
||||
/* parser.c */
|
||||
INT ParserGetString(LPCWSTR section, LPCWSTR entry, LPWSTR buffer, UINT len, LPCWSTR filename);
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<group>
|
||||
<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>
|
||||
|
||||
<library>advapi32</library>
|
||||
|
@ -12,6 +15,8 @@
|
|||
<library>shlwapi</library>
|
||||
<library>ntdll</library>
|
||||
|
||||
<dependency>rappsmsg</dependency>
|
||||
|
||||
<file>aboutdlg.c</file>
|
||||
<file>available.c</file>
|
||||
<file>installdlg.c</file>
|
||||
|
@ -29,3 +34,7 @@
|
|||
<file>winmain.c</file>
|
||||
<file>rapps.rc</file>
|
||||
</module>
|
||||
<module name="rappsmsg" type="messageheader">
|
||||
<file>rappsmsg.mc</file>
|
||||
</module>
|
||||
</group>
|
||||
|
|
|
@ -37,4 +37,6 @@ IDI_CAT_VIDEO ICON DISCARDABLE "res/cats/video.ico"
|
|||
|
||||
1 24 DISCARDABLE "manifest.xml"
|
||||
|
||||
#include <rappsmsg.rc>
|
||||
|
||||
#include "rsrc.rc"
|
||||
|
|
28
reactos/base/applications/rapps/rappsmsg.mc
Normal file
28
reactos/base/applications/rapps/rappsmsg.mc
Normal 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
|
|
@ -36,6 +36,16 @@
|
|||
#define IDC_STATUSBAR 1000
|
||||
#define IDC_DOWNLOAD_PROGRESS 1001
|
||||
#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 */
|
||||
#define IDD_SETTINGS_DIALOG 300
|
||||
|
@ -74,7 +84,9 @@
|
|||
#define IDS_AVAILABLEFORINST 110
|
||||
#define IDS_UPDATES 111
|
||||
#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 */
|
||||
#define IDS_TOOLTIP_INSTALL 200
|
||||
|
|
|
@ -8,6 +8,48 @@
|
|||
|
||||
#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
|
||||
INT_PTR CALLBACK
|
||||
|
@ -17,7 +59,8 @@ SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
|
||||
NewSettingsInfo = SettingsInfo;
|
||||
InitSettingsControls(hDlg, SettingsInfo);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -25,10 +68,67 @@ SettingsDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
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:
|
||||
{
|
||||
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:
|
||||
EndDialog(hDlg, LOWORD(wParam));
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -26,7 +26,7 @@ static const TBBUTTON Buttons[] =
|
|||
{ 5, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0},
|
||||
{ 3, ID_REFRESH, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {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}
|
||||
};
|
||||
|
||||
|
|
|
@ -13,7 +13,70 @@ HINSTANCE hInst;
|
|||
HIMAGELIST hImageListView = NULL;
|
||||
HIMAGELIST hImageTreeView = NULL;
|
||||
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
|
||||
FreeInstalledAppList(VOID)
|
||||
|
@ -226,6 +289,15 @@ InitCategoriesList(VOID)
|
|||
BOOL
|
||||
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) &&
|
||||
CreateToolBar(hwnd) &&
|
||||
CreateListView(hwnd) &&
|
||||
|
@ -347,7 +419,7 @@ MainWndOnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
HDWP hdwp = BeginDeferWindowPos(5);
|
||||
INT SearchBarWidth = GetWindowWidth(hSearchBar);
|
||||
INT RichPos = GetWindowHeight(hRichEdit);
|
||||
INT NewPos = GetClientWindowHeight(hMainWnd) - (RichPos + SPLIT_WIDTH + GetWindowHeight(hStatusBar));
|
||||
INT NewPos = HIWORD(lParam) - (RichPos + SPLIT_WIDTH + GetWindowHeight(hStatusBar));
|
||||
INT VSplitterPos;
|
||||
|
||||
/* Size status bar */
|
||||
|
@ -387,7 +459,7 @@ MainWndOnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
while (NewPos < SPLIT_WIDTH + GetWindowHeight(hToolBar))
|
||||
{
|
||||
RichPos--;
|
||||
NewPos = GetClientWindowHeight(hMainWnd) - (RichPos +
|
||||
NewPos = HIWORD(lParam) - (RichPos +
|
||||
SPLIT_WIDTH + GetWindowHeight(hStatusBar));
|
||||
}
|
||||
SetHSplitterPos(NewPos);
|
||||
|
@ -408,7 +480,7 @@ MainWndOnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
0,
|
||||
VSplitterPos + SPLIT_WIDTH,
|
||||
GetHSplitterPos() + SPLIT_WIDTH,
|
||||
GetClientWindowWidth(hMainWnd) - (VSplitterPos + SPLIT_WIDTH),
|
||||
LOWORD(lParam) - (VSplitterPos + SPLIT_WIDTH),
|
||||
RichPos,
|
||||
SWP_NOZORDER|SWP_NOACTIVATE);
|
||||
|
||||
|
@ -418,7 +490,7 @@ MainWndOnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
0,
|
||||
VSplitterPos + SPLIT_WIDTH,
|
||||
GetHSplitterPos(),
|
||||
GetClientWindowWidth(hMainWnd) - (VSplitterPos + SPLIT_WIDTH),
|
||||
LOWORD(lParam) - (VSplitterPos + SPLIT_WIDTH),
|
||||
SPLIT_WIDTH,
|
||||
SWP_NOZORDER|SWP_NOACTIVATE);
|
||||
|
||||
|
@ -433,6 +505,9 @@ MainWindowProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
|
|||
case WM_CREATE:
|
||||
if (!InitControls(hwnd))
|
||||
PostMessage(hwnd, WM_CLOSE, 0, 0);
|
||||
|
||||
if (SettingsInfo.bUpdateAtStart)
|
||||
UpdateAppsDB();
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
|
@ -624,12 +699,18 @@ MainWindowProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
case WM_DESTROY:
|
||||
{
|
||||
ShowWindow(hwnd, SW_HIDE);
|
||||
SaveSettings(hwnd);
|
||||
|
||||
FreeLogs();
|
||||
|
||||
if (IS_AVAILABLE_ENUM(SelectedEnumType))
|
||||
FreeAvailableAppList();
|
||||
if (IS_INSTALLED_ENUM(SelectedEnumType))
|
||||
FreeInstalledAppList();
|
||||
if (hImageListView) ImageList_Destroy(hImageListView);
|
||||
if (hImageTreeView) ImageList_Destroy(hImageTreeView);
|
||||
|
||||
PostQuitMessage(0);
|
||||
return 0;
|
||||
}
|
||||
|
@ -645,9 +726,19 @@ wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nSh
|
|||
WNDCLASSEXW WndClass = {0};
|
||||
WCHAR szWindowClass[] = L"ROSAPPMGR";
|
||||
WCHAR szWindowName[MAX_STR_LEN];
|
||||
WCHAR szErrorText[MAX_STR_LEN];
|
||||
HANDLE hMutex = NULL;
|
||||
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);
|
||||
if ((!hMutex) || (GetLastError() == ERROR_ALREADY_EXISTS))
|
||||
{
|
||||
|
@ -660,7 +751,12 @@ wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nSh
|
|||
return 1;
|
||||
}
|
||||
|
||||
hInst = hInstance;
|
||||
if (!LoadSettings())
|
||||
{
|
||||
FillDafaultSettings(&SettingsInfo);
|
||||
}
|
||||
|
||||
InitLogs();
|
||||
|
||||
InitCommonControls();
|
||||
|
||||
|
|
Loading…
Reference in a new issue