https://git.reactos.org/?p=reactos.git;a=commitdiff;h=58f8fa9ec89c9f7ae2ffd…
commit 58f8fa9ec89c9f7ae2ffde7870d17fd4313ab21d
Author: Alexander Shaposhnikov <sanchaez(a)reactos.org>
AuthorDate: Tue Jan 2 22:45:59 2018 +0200
[RAPPS] Make selection global
- Added a 'Selected for installation' category that shows what was selected.
Selection is now kept between categories.
- New string is added to resources.
ru-RU.rc and uk-UA.rc strings are translated.
CORE-13789
---
base/applications/rapps/available.cpp | 42 ++++++++++++++++++-----------
base/applications/rapps/gui.cpp | 40 ++++++++++++++++++++++++---
base/applications/rapps/include/available.h | 2 ++
base/applications/rapps/include/defines.h | 3 ++-
base/applications/rapps/include/resource.h | 2 ++
base/applications/rapps/lang/bg-BG.rc | 1 +
base/applications/rapps/lang/cs-CZ.rc | 1 +
base/applications/rapps/lang/de-DE.rc | 1 +
base/applications/rapps/lang/en-US.rc | 1 +
base/applications/rapps/lang/es-ES.rc | 1 +
base/applications/rapps/lang/fr-FR.rc | 1 +
base/applications/rapps/lang/he-IL.rc | 1 +
base/applications/rapps/lang/it-IT.rc | 1 +
base/applications/rapps/lang/ja-JP.rc | 1 +
base/applications/rapps/lang/no-NO.rc | 1 +
base/applications/rapps/lang/pl-PL.rc | 1 +
base/applications/rapps/lang/pt-BR.rc | 1 +
base/applications/rapps/lang/ro-RO.rc | 1 +
base/applications/rapps/lang/ru-RU.rc | 1 +
base/applications/rapps/lang/sk-SK.rc | 1 +
base/applications/rapps/lang/sq-AL.rc | 1 +
base/applications/rapps/lang/sv-SE.rc | 1 +
base/applications/rapps/lang/tr-TR.rc | 1 +
base/applications/rapps/lang/uk-UA.rc | 1 +
base/applications/rapps/lang/zh-CN.rc | 1 +
base/applications/rapps/lang/zh-TW.rc | 1 +
base/applications/rapps/rapps.rc | 1 +
27 files changed, 92 insertions(+), 19 deletions(-)
diff --git a/base/applications/rapps/available.cpp
b/base/applications/rapps/available.cpp
index b396e1dbb7..19101cef14 100644
--- a/base/applications/rapps/available.cpp
+++ b/base/applications/rapps/available.cpp
@@ -19,12 +19,9 @@
// CAvailableApplicationInfo
CAvailableApplicationInfo::CAvailableApplicationInfo(const ATL::CStringW&
sFileNameParam)
- : m_IsInstalled(FALSE), m_HasLanguageInfo(FALSE), m_HasInstalledVersion(FALSE)
+ : m_IsSelected(FALSE), m_LicenseType(LICENSE_NONE), m_sFileName(sFileNameParam),
+ m_IsInstalled(FALSE), m_HasLanguageInfo(FALSE), m_HasInstalledVersion(FALSE)
{
- m_LicenseType = LICENSE_NONE;
-
- m_sFileName = sFileNameParam;
-
RetrieveGeneralInfo();
}
@@ -355,17 +352,15 @@ BOOL CAvailableApps::Enum(INT EnumType, AVAILENUMPROC lpEnumProc)
m_InfoList.AddTail(Info);
skip_if_cached:
- if (Info->m_Category == FALSE)
- continue;
-
- if (EnumType != Info->m_Category && EnumType != ENUM_ALL_AVAILABLE)
- continue;
-
- Info->RefreshAppInfo();
-
- if (lpEnumProc)
- lpEnumProc(Info, m_Strings.szAppsPath.GetString());
+ if (EnumType == Info->m_Category
+ || EnumType == ENUM_ALL_AVAILABLE
+ || (EnumType == ENUM_CAT_SELECTED && Info->m_IsSelected))
+ {
+ Info->RefreshAppInfo();
+ if (lpEnumProc)
+ lpEnumProc(Info, m_Strings.szAppsPath.GetString());
+ }
} while (FindNextFileW(hFind, &FindFileData) != 0);
FindClose(hFind);
@@ -407,6 +402,23 @@ ATL::CSimpleArray<CAvailableApplicationInfo>
CAvailableApps::FindInfoList(const
return result;
}
+ATL::CSimpleArray<CAvailableApplicationInfo> CAvailableApps::GetSelected() const
+{
+ ATL::CSimpleArray<CAvailableApplicationInfo> result;
+ POSITION CurrentListPosition = m_InfoList.GetHeadPosition();
+ CAvailableApplicationInfo* Info;
+
+ while (CurrentListPosition != NULL)
+ {
+ Info = m_InfoList.GetNext(CurrentListPosition);
+ if (Info->m_IsSelected)
+ {
+ result.Add(*Info);
+ }
+ }
+ return result;
+}
+
const ATL::CStringW& CAvailableApps::GetFolderPath() const
{
return m_Strings.szPath;
diff --git a/base/applications/rapps/gui.cpp b/base/applications/rapps/gui.cpp
index 62d1a1961b..4118acbca5 100644
--- a/base/applications/rapps/gui.cpp
+++ b/base/applications/rapps/gui.cpp
@@ -542,6 +542,30 @@ public:
if (bHasCheckboxes)
{
SetItemState(item, INDEXTOSTATEIMAGEMASK((fCheck) ? 2 : 1),
LVIS_STATEIMAGEMASK);
+ SetSelected(item, fCheck);
+ }
+ }
+
+ VOID SetSelected(INT item, BOOL value)
+ {
+ if (item < 0)
+ {
+ for (INT i = 0; i >= 0; i = GetNextItem(i, LVNI_ALL))
+ {
+ CAvailableApplicationInfo* pAppInfo = (CAvailableApplicationInfo*)
GetItemData(i);
+ if (pAppInfo)
+ {
+ pAppInfo->m_IsSelected = value;
+ }
+ }
+ }
+ else
+ {
+ CAvailableApplicationInfo* pAppInfo = (CAvailableApplicationInfo*)
GetItemData(item);
+ if (pAppInfo)
+ {
+ pAppInfo->m_IsSelected = value;
+ }
}
}
@@ -735,6 +759,8 @@ private:
AddCategory(hRootItemInstalled, IDS_APPLICATIONS, IDI_APPS);
AddCategory(hRootItemInstalled, IDS_UPDATES, IDI_APPUPD);
+ AddCategory(TVI_ROOT, IDS_SELECTEDFORINST, IDI_SELECTEDFORINST);
+
hRootItemAvailable = AddCategory(TVI_ROOT, IDS_AVAILABLEFORINST, IDI_CATEGORY);
AddCategory(hRootItemAvailable, IDS_CAT_AUDIO, IDI_CAT_AUDIO);
AddCategory(hRootItemAvailable, IDS_CAT_VIDEO, IDI_CAT_VIDEO);
@@ -1081,6 +1107,10 @@ private:
case IDS_CAT_VIDEO:
UpdateApplicationsList(ENUM_CAT_VIDEO);
break;
+
+ case IDS_SELECTEDFORINST:
+ UpdateApplicationsList(ENUM_CAT_SELECTED);
+ break;
}
}
@@ -1153,7 +1183,7 @@ private:
/* Check if the item is checked */
if ((pnic->uNewState & LVIS_STATEIMAGEMASK) &&
!bUpdating)
{
- BOOL checked = ListView_GetCheckState(pnic->hdr.hwndFrom,
pnic->iItem);
+ BOOL checked = m_ListView->GetCheckState(pnic->iItem);
/* FIXME: HAX!
- preventing decremention below zero as a safeguard for ReactOS
In ReactOS this action is triggered whenever user changes
*selection*, but should be only when *checkbox* state toggled
@@ -1165,6 +1195,10 @@ private:
: ((nSelectedApps > 0)
? -1
: 0);
+
+ /* Update item's selection status */
+ m_ListView->SetSelected(pnic->iItem, checked);
+
UpdateStatusBarText();
}
}
@@ -1399,7 +1433,7 @@ private:
{
if (nSelectedApps > 0)
{
-
CDownloadManager::DownloadListOfApplications(m_ListView->GetCheckedItems());
+
CDownloadManager::DownloadListOfApplications(m_AvailableApps.GetSelected());
UpdateApplicationsList(-1);
}
else if
(CDownloadManager::DownloadApplication(m_ListView->GetSelectedData()))
@@ -1541,6 +1575,7 @@ private:
ListView_SetItemText(hListView, Index, 1,
const_cast<LPWSTR>(Info->m_szVersion.GetString()));
ListView_SetItemText(hListView, Index, 2,
const_cast<LPWSTR>(Info->m_szDesc.GetString()));
+ ListView_SetCheckState(hListView, Index, Info->m_IsSelected);
return TRUE;
}
@@ -1565,7 +1600,6 @@ private:
bUpdating = TRUE;
m_ListView->SetRedraw(FALSE);
- nSelectedApps = 0;
if (EnumType < 0)
{
EnumType = SelectedEnumType;
diff --git a/base/applications/rapps/include/available.h
b/base/applications/rapps/include/available.h
index 1e9a1df63b..adf4c73aec 100644
--- a/base/applications/rapps/include/available.h
+++ b/base/applications/rapps/include/available.h
@@ -25,6 +25,7 @@ inline BOOL IsLicenseType(INT x)
struct CAvailableApplicationInfo
{
INT m_Category;
+ BOOL m_IsSelected;
LicenseType m_LicenseType;
ATL::CStringW m_szName;
ATL::CStringW m_szRegName;
@@ -106,6 +107,7 @@ public:
CAvailableApplicationInfo* FindInfo(const ATL::CStringW& szAppName) const;
ATL::CSimpleArray<CAvailableApplicationInfo> FindInfoList(const
ATL::CSimpleArray<ATL::CStringW> &arrAppsNames) const;
+ ATL::CSimpleArray<CAvailableApplicationInfo> GetSelected() const;
const ATL::CStringW& GetFolderPath() const;
const ATL::CStringW& GetAppPath() const;
diff --git a/base/applications/rapps/include/defines.h
b/base/applications/rapps/include/defines.h
index 7934e96b23..159bcdc504 100644
--- a/base/applications/rapps/include/defines.h
+++ b/base/applications/rapps/include/defines.h
@@ -50,13 +50,14 @@ enum AppsCategories
ENUM_CAT_DRIVERS,
ENUM_CAT_LIBS,
ENUM_CAT_OTHER,
+ ENUM_CAT_SELECTED,
ENUM_ALL_INSTALLED,
ENUM_INSTALLED_APPLICATIONS = 31,
ENUM_UPDATES = 32,
ENUM_INSTALLED_MIN = ENUM_ALL_INSTALLED,
ENUM_INSTALLED_MAX = ENUM_UPDATES,
ENUM_AVAILABLE_MIN = ENUM_ALL_AVAILABLE,
- ENUM_AVAILABLE_MAX = ENUM_CAT_OTHER,
+ ENUM_AVAILABLE_MAX = ENUM_CAT_SELECTED,
};
inline BOOL IsAvailableEnum(INT x)
diff --git a/base/applications/rapps/include/resource.h
b/base/applications/rapps/include/resource.h
index 9dd6764a47..b035f02807 100644
--- a/base/applications/rapps/include/resource.h
+++ b/base/applications/rapps/include/resource.h
@@ -13,6 +13,7 @@
#define IDI_CATEGORY 19
#define IDI_UPDATE_DB 20
#define IDI_CHECK_ALL 21
+#define IDI_SELECTEDFORINST 22
/* Icons for categories */
#define IDI_CAT_AUDIO 50
@@ -108,6 +109,7 @@
#define IDS_SELECT_ALL 126
#define IDS_INSTALL_SELECTED 127
#define IDS_UNABLE_TO_INSTALL 128
+#define IDS_SELECTEDFORINST 129
/* Tooltips */
#define IDS_TOOLTIP_INSTALL 200
diff --git a/base/applications/rapps/lang/bg-BG.rc
b/base/applications/rapps/lang/bg-BG.rc
index 4b5fe9acf8..b9fb94f09f 100644
--- a/base/applications/rapps/lang/bg-BG.rc
+++ b/base/applications/rapps/lang/bg-BG.rc
@@ -214,6 +214,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/cs-CZ.rc
b/base/applications/rapps/lang/cs-CZ.rc
index 2ac4d2e26a..52ad40bdd2 100644
--- a/base/applications/rapps/lang/cs-CZ.rc
+++ b/base/applications/rapps/lang/cs-CZ.rc
@@ -215,6 +215,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/de-DE.rc
b/base/applications/rapps/lang/de-DE.rc
index d86a0513e2..4182c8c1a4 100644
--- a/base/applications/rapps/lang/de-DE.rc
+++ b/base/applications/rapps/lang/de-DE.rc
@@ -210,6 +210,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Schreibfehler. Prüfen Sie die Kapazität des
Datenträgers!"
IDS_SELECT_ALL "Alle/Keine"
IDS_INSTALL_SELECTED "Ausgewählte Installieren"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/en-US.rc
b/base/applications/rapps/lang/en-US.rc
index 048344532d..82a6aa0937 100644
--- a/base/applications/rapps/lang/en-US.rc
+++ b/base/applications/rapps/lang/en-US.rc
@@ -210,6 +210,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/es-ES.rc
b/base/applications/rapps/lang/es-ES.rc
index 1467f24cef..97bf043e33 100644
--- a/base/applications/rapps/lang/es-ES.rc
+++ b/base/applications/rapps/lang/es-ES.rc
@@ -213,6 +213,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "No se ha podido escribir en el disco duro, es posible que
no quede espacio libre."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/fr-FR.rc
b/base/applications/rapps/lang/fr-FR.rc
index c438ecc0e4..59b9291ce1 100644
--- a/base/applications/rapps/lang/fr-FR.rc
+++ b/base/applications/rapps/lang/fr-FR.rc
@@ -210,6 +210,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Impossible d'écrire sur le disque. Votre disque
pourrait être plein."
IDS_SELECT_ALL "Sélectionner/Désélectionner tout"
IDS_INSTALL_SELECTED "Installer les sélectionnés"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/he-IL.rc
b/base/applications/rapps/lang/he-IL.rc
index 9df4d56199..b1498345c9 100644
--- a/base/applications/rapps/lang/he-IL.rc
+++ b/base/applications/rapps/lang/he-IL.rc
@@ -212,6 +212,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/it-IT.rc
b/base/applications/rapps/lang/it-IT.rc
index 0af2db3da7..9c7008dade 100644
--- a/base/applications/rapps/lang/it-IT.rc
+++ b/base/applications/rapps/lang/it-IT.rc
@@ -210,6 +210,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Impossibile scrivere su disco: lo spazio libero potrebbe
essere esaurito."
IDS_SELECT_ALL "Seleziona/Deseleziona Tutte"
IDS_INSTALL_SELECTED "Installa le selezionate"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/ja-JP.rc
b/base/applications/rapps/lang/ja-JP.rc
index 53bf912e22..7b5df0b7c8 100644
--- a/base/applications/rapps/lang/ja-JP.rc
+++ b/base/applications/rapps/lang/ja-JP.rc
@@ -210,6 +210,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/no-NO.rc
b/base/applications/rapps/lang/no-NO.rc
index aea5c416cb..aa7bbb1bb8 100644
--- a/base/applications/rapps/lang/no-NO.rc
+++ b/base/applications/rapps/lang/no-NO.rc
@@ -209,6 +209,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/pl-PL.rc
b/base/applications/rapps/lang/pl-PL.rc
index 5f3214d998..9dc447ce66 100644
--- a/base/applications/rapps/lang/pl-PL.rc
+++ b/base/applications/rapps/lang/pl-PL.rc
@@ -218,6 +218,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Nie można zapisać na dysku. Dysk może być pełny."
IDS_SELECT_ALL "Zaznacz/Odznacz Wszystko"
IDS_INSTALL_SELECTED "Instaluj Zaznaczone"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/pt-BR.rc
b/base/applications/rapps/lang/pt-BR.rc
index 8f1fe5015e..47e495d390 100644
--- a/base/applications/rapps/lang/pt-BR.rc
+++ b/base/applications/rapps/lang/pt-BR.rc
@@ -212,6 +212,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/ro-RO.rc
b/base/applications/rapps/lang/ro-RO.rc
index b3886d5f4a..d13d72a2f1 100644
--- a/base/applications/rapps/lang/ro-RO.rc
+++ b/base/applications/rapps/lang/ro-RO.rc
@@ -219,6 +219,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Eșec la scrierea pe disc. Una din cauze poate fi atingerea
limitei de capacitate."
IDS_SELECT_ALL "Selectează/Deselectează Toate"
IDS_INSTALL_SELECTED "Instalează selecționate"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/ru-RU.rc
b/base/applications/rapps/lang/ru-RU.rc
index 97c6a328e6..5f0788c9b6 100644
--- a/base/applications/rapps/lang/ru-RU.rc
+++ b/base/applications/rapps/lang/ru-RU.rc
@@ -210,6 +210,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Не удалось записать данные на диск. Возможно, недостаточно
свободного места на диске."
IDS_SELECT_ALL "Выбрать все"
IDS_INSTALL_SELECTED "Установить выбранное"
+ IDS_SELECTEDFORINST "Выбрано для установки"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/sk-SK.rc
b/base/applications/rapps/lang/sk-SK.rc
index c65e4b6ec8..fa324aaf4a 100644
--- a/base/applications/rapps/lang/sk-SK.rc
+++ b/base/applications/rapps/lang/sk-SK.rc
@@ -215,6 +215,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/sq-AL.rc
b/base/applications/rapps/lang/sq-AL.rc
index 9d9f72c6a0..1656ce58e5 100644
--- a/base/applications/rapps/lang/sq-AL.rc
+++ b/base/applications/rapps/lang/sq-AL.rc
@@ -214,6 +214,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/sv-SE.rc
b/base/applications/rapps/lang/sv-SE.rc
index 223e54c099..4bfaa9a23c 100644
--- a/base/applications/rapps/lang/sv-SE.rc
+++ b/base/applications/rapps/lang/sv-SE.rc
@@ -217,6 +217,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/tr-TR.rc
b/base/applications/rapps/lang/tr-TR.rc
index 34f0c693e5..c3a49db6c3 100644
--- a/base/applications/rapps/lang/tr-TR.rc
+++ b/base/applications/rapps/lang/tr-TR.rc
@@ -212,6 +212,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Diske yazılamıyor. Disk dolu olabilir."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/uk-UA.rc
b/base/applications/rapps/lang/uk-UA.rc
index 4b6325da8f..97aa1a6f27 100644
--- a/base/applications/rapps/lang/uk-UA.rc
+++ b/base/applications/rapps/lang/uk-UA.rc
@@ -218,6 +218,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Записк на диск неможливий. Можливо, на диску недостатньо
містця."
IDS_SELECT_ALL "Вибрати все"
IDS_INSTALL_SELECTED "Встановити обране"
+ IDS_SELECTEDFORINST "Обрані для встановлення"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/zh-CN.rc
b/base/applications/rapps/lang/zh-CN.rc
index a482d8ecb4..2ab1e036dd 100644
--- a/base/applications/rapps/lang/zh-CN.rc
+++ b/base/applications/rapps/lang/zh-CN.rc
@@ -212,6 +212,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "无法写入磁盘。磁盘可能已满。"
IDS_SELECT_ALL "全选/全反选"
IDS_INSTALL_SELECTED "安装已选中的"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/lang/zh-TW.rc
b/base/applications/rapps/lang/zh-TW.rc
index 236eee3b90..2636d7e4a1 100644
--- a/base/applications/rapps/lang/zh-TW.rc
+++ b/base/applications/rapps/lang/zh-TW.rc
@@ -212,6 +212,7 @@ BEGIN
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
IDS_SELECT_ALL "Select/Deselect All"
IDS_INSTALL_SELECTED "Install Selected"
+ IDS_SELECTEDFORINST "Selected for installation"
END
STRINGTABLE
diff --git a/base/applications/rapps/rapps.rc b/base/applications/rapps/rapps.rc
index d200e179be..4d4c796c2e 100644
--- a/base/applications/rapps/rapps.rc
+++ b/base/applications/rapps/rapps.rc
@@ -40,6 +40,7 @@ IDI_CAT_OTHER ICON "res/cats/other.ico"
IDI_CAT_SCIENCE ICON "res/cats/science.ico"
IDI_CAT_TOOLS ICON "res/cats/tools.ico"
IDI_CAT_VIDEO ICON "res/cats/video.ico"
+IDI_SELECTEDFORINST ICON "res/select.ico"
/* Accelerators -- key bindings */
HOTKEYS ACCELERATORS