diff options
author | Igor Pavlov <ipavlov@users.sourceforge.net> | 2007-08-27 04:00:00 +0400 |
---|---|---|
committer | Kornel LesiĆski <kornel@geekhood.net> | 2016-05-28 02:15:54 +0300 |
commit | 051769bbc577aeede90558b6ab5c9be187940ca0 (patch) | |
tree | e6330cb80f2d4a526d8aa27812528e053b0cda90 /CPP/7zip/UI/Far | |
parent | 33ccab7e728a996800e166d849fe1e92a17e1afe (diff) |
4.53 beta
Diffstat (limited to 'CPP/7zip/UI/Far')
-rwxr-xr-x | CPP/7zip/UI/Far/ExtractEngine.cpp | 2 | ||||
-rwxr-xr-x | CPP/7zip/UI/Far/ExtractEngine.h | 2 | ||||
-rwxr-xr-x | CPP/7zip/UI/Far/Far.dsp | 8 | ||||
-rwxr-xr-x | CPP/7zip/UI/Far/FarPlugin.h | 5 | ||||
-rwxr-xr-x | CPP/7zip/UI/Far/Messages.h | 9 | ||||
-rwxr-xr-x | CPP/7zip/UI/Far/Plugin.cpp | 196 | ||||
-rwxr-xr-x | CPP/7zip/UI/Far/Plugin.h | 4 | ||||
-rwxr-xr-x | CPP/7zip/UI/Far/UpdateCallback100.cpp | 5 | ||||
-rwxr-xr-x | CPP/7zip/UI/Far/UpdateCallback100.h | 1 | ||||
-rwxr-xr-x | CPP/7zip/UI/Far/makefile | 1 |
10 files changed, 131 insertions, 102 deletions
diff --git a/CPP/7zip/UI/Far/ExtractEngine.cpp b/CPP/7zip/UI/Far/ExtractEngine.cpp index d9499a04..c6583aae 100755 --- a/CPP/7zip/UI/Far/ExtractEngine.cpp +++ b/CPP/7zip/UI/Far/ExtractEngine.cpp @@ -106,7 +106,7 @@ STDMETHODIMP CExtractCallBackImp::AskOverwrite( return S_OK; } -STDMETHODIMP CExtractCallBackImp::PrepareOperation(const wchar_t *name, INT32 /* askExtractMode */, const UINT64 * /* position */) +STDMETHODIMP CExtractCallBackImp::PrepareOperation(const wchar_t *name, bool /* isFolder */, INT32 /* askExtractMode */, const UINT64 * /* position */) { m_CurrentFilePath = name; return S_OK; diff --git a/CPP/7zip/UI/Far/ExtractEngine.h b/CPP/7zip/UI/Far/ExtractEngine.h index ee17ff55..5cccf6ef 100755 --- a/CPP/7zip/UI/Far/ExtractEngine.h +++ b/CPP/7zip/UI/Far/ExtractEngine.h @@ -28,7 +28,7 @@ public: const wchar_t *existName, const FILETIME *existTime, const UINT64 *existSize, const wchar_t *newName, const FILETIME *newTime, const UINT64 *newSize, INT32 *result); - STDMETHOD (PrepareOperation)(const wchar_t *name, INT32 askExtractMode, const UINT64 *position); + STDMETHOD (PrepareOperation)(const wchar_t *name, bool isFolder, INT32 askExtractMode, const UINT64 *position); STDMETHOD(MessageError)(const wchar_t *message); STDMETHOD(SetOperationResult)(INT32 resultEOperationResult, bool encrypted); diff --git a/CPP/7zip/UI/Far/Far.dsp b/CPP/7zip/UI/Far/Far.dsp index 2cddd717..9856f41f 100755 --- a/CPP/7zip/UI/Far/Far.dsp +++ b/CPP/7zip/UI/Far/Far.dsp @@ -410,6 +410,14 @@ SOURCE=..\Common\OpenArchive.h # End Source File # Begin Source File +SOURCE=..\..\Common\ProgressUtils.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\Common\ProgressUtils.h +# End Source File +# Begin Source File + SOURCE=..\Common\PropIDUtils.cpp # End Source File # Begin Source File diff --git a/CPP/7zip/UI/Far/FarPlugin.h b/CPP/7zip/UI/Far/FarPlugin.h index f61bbcb4..a1c9715b 100755 --- a/CPP/7zip/UI/Far/FarPlugin.h +++ b/CPP/7zip/UI/Far/FarPlugin.h @@ -456,11 +456,12 @@ struct PluginInfo char *CommandPrefix; }; +const int kInfoPanelLineSize = 80; struct InfoPanelLine { - char Text[80]; - char Data[80]; + char Text[kInfoPanelLineSize]; + char Data[kInfoPanelLineSize]; int Separator; }; diff --git a/CPP/7zip/UI/Far/Messages.h b/CPP/7zip/UI/Far/Messages.h index 7a36ab30..9d3060a1 100755 --- a/CPP/7zip/UI/Far/Messages.h +++ b/CPP/7zip/UI/Far/Messages.h @@ -46,6 +46,15 @@ enum EEnum kBlock, kComment, kPosition, + kNumSubFolders, + kNumSubFiles, + kUnpackVer, + kVolume, + kIsVolume, + kOffset, + kLinks, + kNumBlocks, + kNumVolumes, kGetPasswordTitle, kEnterPasswordForFile, diff --git a/CPP/7zip/UI/Far/Plugin.cpp b/CPP/7zip/UI/Far/Plugin.cpp index fde53756..d0957a40 100755 --- a/CPP/7zip/UI/Far/Plugin.cpp +++ b/CPP/7zip/UI/Far/Plugin.cpp @@ -50,7 +50,7 @@ CPlugin::~CPlugin() { } -static void MyGetFileTime(IFolderFolder *anArchiveFolder, UINT32 itemIndex, +static void MyGetFileTime(IFolderFolder *anArchiveFolder, UInt32 itemIndex, PROPID propID, FILETIME &fileTime) { NCOM::CPropVariant propVariant; @@ -69,7 +69,7 @@ static void MyGetFileTime(IFolderFolder *anArchiveFolder, UINT32 itemIndex, } } -void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UINT32 itemIndex) +void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UInt32 itemIndex) { NCOM::CPropVariant propVariant; if (_folder->GetProperty(itemIndex, kpidName, &propVariant) != S_OK) @@ -103,13 +103,13 @@ void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UINT32 itemIndex) if (_folder->GetProperty(itemIndex, kpidSize, &propVariant) != S_OK) throw 271932; - UINT64 length; + UInt64 length; if (propVariant.vt == VT_EMPTY) length = 0; else length = ::ConvertPropVariantToUInt64(propVariant); - panelItem.FindData.nFileSizeLow = UINT32(length); - panelItem.FindData.nFileSizeHigh = UINT32(length >> 32); + panelItem.FindData.nFileSizeLow = (UInt32)length; + panelItem.FindData.nFileSizeHigh = (UInt32)(length >> 32); MyGetFileTime(_folder, itemIndex, kpidCreationTime, panelItem.FindData.ftCreationTime); MyGetFileTime(_folder, itemIndex, kpidLastAccessTime, panelItem.FindData.ftLastAccessTime); @@ -125,8 +125,8 @@ void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UINT32 itemIndex) length = 0; else length = ::ConvertPropVariantToUInt64(propVariant); - panelItem.PackSize = UINT32(length); - panelItem.PackSizeHigh = UINT32(length >> 32); + panelItem.PackSize = UInt32(length); + panelItem.PackSizeHigh = UInt32(length >> 32); panelItem.Flags = 0; panelItem.NumberOfLinks = 0; @@ -139,8 +139,6 @@ void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UINT32 itemIndex) panelItem.Reserved[0] = 0; panelItem.Reserved[1] = 0; panelItem.Reserved[2] = 0; - - } int CPlugin::GetFindData(PluginPanelItem **panelItems, @@ -151,22 +149,22 @@ int CPlugin::GetFindData(PluginPanelItem **panelItems, { /* screenRestorer.Save(); - const char *aMsgItems[]= + const char *msgItems[]= { g_StartupInfo.GetMsgString(NMessageID::kWaitTitle), g_StartupInfo.GetMsgString(NMessageID::kReadingList) }; - g_StartupInfo.ShowMessage(0, NULL, aMsgItems, - sizeof(aMsgItems) / sizeof(aMsgItems[0]), 0); + g_StartupInfo.ShowMessage(0, NULL, msgItems, + sizeof(msgItems) / sizeof(msgItems[0]), 0); */ } - UINT32 numItems; + UInt32 numItems; _folder->GetNumberOfItems(&numItems); *panelItems = new PluginPanelItem[numItems]; try { - for(UINT32 i = 0; i < numItems; i++) + for (UInt32 i = 0; i < numItems; i++) { PluginPanelItem &panelItem = (*panelItems)[i]; ReadPluginPanelItem(panelItem, i); @@ -185,8 +183,8 @@ int CPlugin::GetFindData(PluginPanelItem **panelItems, void CPlugin::FreeFindData(struct PluginPanelItem *panelItems, int itemsNumber) { - for(int i = 0; i < itemsNumber; i++) - if(panelItems[i].Description != NULL) + for (int i = 0; i < itemsNumber; i++) + if (panelItems[i].Description != NULL) delete []panelItems[i].Description; delete []panelItems; } @@ -196,7 +194,7 @@ void CPlugin::EnterToDirectory(const UString &aDirName) { CMyComPtr<IFolderFolder> newFolder; _folder->BindToFolder(aDirName, &newFolder); - if(newFolder == NULL) + if (newFolder == NULL) if (aDirName.IsEmpty()) return; else @@ -232,7 +230,7 @@ int CPlugin::SetDirectory(const char *aszDir, int /* opMode */) } UStringVector pathParts; SplitPathToParts(path, pathParts); - for(int i = 0; i < pathParts.Size(); i++) + for (int i = 0; i < pathParts.Size(); i++) EnterToDirectory(pathParts[i]); } GetCurrentDir(); @@ -249,9 +247,10 @@ void CPlugin::GetPathParts(UStringVector &pathParts) folderItem->BindToParentFolder(&newFolder); if (newFolder == NULL) break; - CMyComBSTR name; - folderItem->GetName(&name); - pathParts.Insert(0, (const wchar_t *)name); + NCOM::CPropVariant prop; + if (folderItem->GetFolderProperty(kpidName, &prop) == S_OK) + if (prop.vt == VT_BSTR) + pathParts.Insert(0, (const wchar_t *)prop.bstrVal); folderItem = newFolder; } } @@ -304,16 +303,24 @@ static CPROPIDToName kPROPIDToName[] = { kpidGroup, NMessageID::kGroup }, { kpidBlock, NMessageID::kBlock }, { kpidComment, NMessageID::kComment }, - { kpidPosition, NMessageID::kPosition } - + { kpidPosition, NMessageID::kPosition }, + { kpidNumSubFolders, NMessageID::kNumSubFolders }, + { kpidNumSubFiles, NMessageID::kNumSubFiles }, + { kpidUnpackVer, NMessageID::kUnpackVer }, + { kpidVolume, NMessageID::kVolume }, + { kpidIsVolume, NMessageID::kIsVolume }, + { kpidOffset, NMessageID::kOffset }, + { kpidLinks, NMessageID::kLinks }, + { kpidNumBlocks, NMessageID::kNumBlocks }, + { kpidNumVolumes, NMessageID::kNumVolumes } }; static const int kNumPROPIDToName = sizeof(kPROPIDToName) / sizeof(kPROPIDToName[0]); static int FindPropertyToName(PROPID propID) { - for(int i = 0; i < kNumPROPIDToName; i++) - if(kPROPIDToName[i].PropID == propID) + for (int i = 0; i < kNumPROPIDToName; i++) + if (kPROPIDToName[i].PropID == propID) return i; return -1; } @@ -353,8 +360,8 @@ static const int kNumPropertyIDInfos = sizeof(kPropertyIDInfos) / static int FindPropertyInfo(PROPID propID) { - for(int i = 0; i < kNumPropertyIDInfos; i++) - if(kPropertyIDInfos[i].PropID == propID) + for (int i = 0; i < kNumPropertyIDInfos; i++) + if (kPropertyIDInfos[i].PropID == propID) return i; return -1; } @@ -376,7 +383,7 @@ void CPlugin::AddColumn(PROPID propID) int index = FindPropertyInfo(propID); if (index >= 0) { - for(int i = 0; i < m_ProxyHandler->m_InternalProperties.Size(); i++) + for (int i = 0; i < m_ProxyHandler->m_InternalProperties.Size(); i++) { const CArchiveItemProperty &aHandlerProperty = m_ProxyHandler->m_InternalProperties[i]; if (aHandlerProperty.ID == propID) @@ -385,11 +392,11 @@ void CPlugin::AddColumn(PROPID propID) if (i == m_ProxyHandler->m_InternalProperties.Size()) return; - const CPropertyIDInfo &aPropertyIDInfo = kPropertyIDInfos[index]; - SmartAddToString(PanelModeColumnTypes, aPropertyIDInfo.FarID); - char aTmp[32]; - itoa(aPropertyIDInfo.Width, aTmp, 10); - SmartAddToString(PanelModeColumnWidths, aTmp); + const CPropertyIDInfo &propertyIDInfo = kPropertyIDInfos[index]; + SmartAddToString(PanelModeColumnTypes, propertyIDInfo.FarID); + char tmp[32]; + itoa(propertyIDInfo.Width, tmp, 10); + SmartAddToString(PanelModeColumnWidths, tmp); return; } } @@ -425,7 +432,7 @@ void CPlugin::GetOpenPluginInfo(struct OpenPluginInfo *info) UString(L':') + name + UString(L' '); - if(!m_CurrentDir.IsEmpty()) + if (!m_CurrentDir.IsEmpty()) { // m_PannelTitle += '\\'; m_PannelTitle += m_CurrentDir; @@ -434,44 +441,56 @@ void CPlugin::GetOpenPluginInfo(struct OpenPluginInfo *info) MyStringCopy(m_PannelTitleBuffer, (const char *)UnicodeStringToMultiByte(m_PannelTitle, CP_OEMCP)); info->PanelTitle = m_PannelTitleBuffer; - memset(m_InfoLines,0,sizeof(m_InfoLines)); - MyStringCopy(m_InfoLines[0].Text,""); + memset(m_InfoLines, 0, sizeof(m_InfoLines)); + MyStringCopy(m_InfoLines[0].Text, ""); m_InfoLines[0].Separator = TRUE; MyStringCopy(m_InfoLines[1].Text, g_StartupInfo.GetMsgString(NMessageID::kArchiveType)); MyStringCopy(m_InfoLines[1].Data, (const char *)UnicodeStringToMultiByte(_archiveTypeName, CP_OEMCP)); int numItems = 2; - UINT32 numProps; - if (m_ArchiveHandler->GetNumberOfArchiveProperties(&numProps) == S_OK) + + CMyComPtr<IFolderProperties> folderProperties; + _folder.QueryInterface(IID_IFolderProperties, &folderProperties); + if (folderProperties) { - for (UINT32 i = 0; i < numProps && numItems < 30; i++) + UInt32 numProps; + if (folderProperties->GetNumberOfFolderProperties(&numProps) == S_OK) { - CMyComBSTR name; - PROPID propID; - VARTYPE vt; - if (m_ArchiveHandler->GetArchivePropertyInfo(i, &name, &propID, &vt) != S_OK) - continue; - - InfoPanelLine &item = m_InfoLines[numItems]; - int index = FindPropertyToName(propID); - if (index < 0) + for (UInt32 i = 0; i < numProps && numItems < kNumInfoLinesMax; i++) { - if (name != 0) - MyStringCopy(item.Text, (const char *)UnicodeStringToMultiByte( - (const wchar_t *)name, CP_OEMCP)); + CMyComBSTR name; + PROPID propID; + VARTYPE vt; + if (folderProperties->GetFolderPropertyInfo(i, &name, &propID, &vt) != S_OK) + continue; + + InfoPanelLine &item = m_InfoLines[numItems]; + int index = FindPropertyToName(propID); + AString s; + if (index < 0) + { + if (name != 0) + s = (const char *)UnicodeStringToMultiByte((const wchar_t *)name, CP_OEMCP); + } else - MyStringCopy(item.Text, ""); + s = g_StartupInfo.GetMsgString(kPROPIDToName[index].PluginID); + + if (s.Length() > (kInfoPanelLineSize - 1)) + s = s.Left(kInfoPanelLineSize - 1); + MyStringCopy(item.Text, (const char *)s); + + NCOM::CPropVariant propVariant; + if (_folder->GetFolderProperty(propID, &propVariant) != S_OK) + continue; + s = ConvertPropertyToString2(propVariant, propID); + s.Replace((char)0xA, ' '); + s.Replace((char)0xD, ' '); + if (s.Length() > (kInfoPanelLineSize - 1)) + s = s.Left(kInfoPanelLineSize - 1); + MyStringCopy(item.Data, (const char *)s); + numItems++; } - else - MyStringCopy(item.Text, g_StartupInfo.GetMsgString(kPROPIDToName[index].PluginID)); - - NCOM::CPropVariant propVariant; - if (m_ArchiveHandler->GetArchiveProperty(propID, &propVariant) != S_OK) - continue; - CSysString s = ConvertPropertyToString2(propVariant, propID); - MyStringCopy(item.Data, (const char *)s); - numItems++; } } @@ -539,15 +558,15 @@ HRESULT CPlugin::ShowAttributesWindow() int itemIndex = pluginPanelItem.UserData; CObjectVector<CArchiveItemProperty> properties; - UINT32 numProps; - RINOK(m_ArchiveHandler->GetNumberOfProperties(&numProps)); + UInt32 numProps; + RINOK(_folder->GetNumberOfProperties(&numProps)); int i; for (i = 0; i < (int)numProps; i++) { CMyComBSTR name; PROPID propID; VARTYPE vt; - RINOK(m_ArchiveHandler->GetPropertyInfo(i, &name, &propID, &vt)); + RINOK(_folder->GetPropertyInfo(i, &name, &propID, &vt)); CArchiveItemProperty destProperty; destProperty.Type = vt; destProperty.ID = propID; @@ -556,29 +575,13 @@ HRESULT CPlugin::ShowAttributesWindow() AString propName; { if (name != NULL) - destProperty.Name = UnicodeStringToMultiByte( - (const wchar_t *)name, CP_OEMCP); + destProperty.Name = UnicodeStringToMultiByte((const wchar_t *)name, CP_OEMCP); else - destProperty.Name = "Error"; + destProperty.Name = "?"; } properties.Add(destProperty); } - /* - LPCITEMIDLIST aProperties; - if (index < m_FolderItem->m_DirSubItems.Size()) - { - const CArchiveFolderItem &anItem = m_FolderItem->m_DirSubItems[index]; - aProperties = anItem.m_Properties; - } - else - { - const CArchiveFolderFileItem &anItem = - m_FolderItem->m_FileSubItems[index - m_FolderItem->m_DirSubItems.Size()]; - aProperties = anItem.m_Properties; - } - */ - int size = 2; CRecordVector<CInitDialogItem> initDialogItems; @@ -586,7 +589,7 @@ HRESULT CPlugin::ShowAttributesWindow() CInitDialogItem initDialogItem = { DI_DOUBLEBOX, 3, 1, xSize - 4, size - 2, false, false, 0, false, NMessageID::kProperties, NULL, NULL }; initDialogItems.Add(initDialogItem); - AStringVector aValues; + AStringVector values; for (i = 0; i < properties.Size(); i++) { @@ -605,10 +608,9 @@ HRESULT CPlugin::ShowAttributesWindow() initDialogItems.Add(initDialogItem); NCOM::CPropVariant propVariant; - RINOK(_folder->GetProperty(itemIndex, - property.ID, &propVariant)); - CSysString aString = ConvertPropertyToString2(propVariant, property.ID); - aValues.Add(aString); + RINOK(_folder->GetProperty(itemIndex, property.ID, &propVariant)); + CSysString s = ConvertPropertyToString2(propVariant, property.ID); + values.Add(s); { CInitDialogItem initDialogItem = @@ -617,18 +619,18 @@ HRESULT CPlugin::ShowAttributesWindow() } } - int numLines = aValues.Size(); - for(i = 0; i < numLines; i++) + int numLines = values.Size(); + for (i = 0; i < numLines; i++) { CInitDialogItem &initDialogItem = initDialogItems[1 + i * 2 + 1]; - initDialogItem.DataString = aValues[i]; + initDialogItem.DataString = values[i]; } int numDialogItems = initDialogItems.Size(); CRecordVector<FarDialogItem> dialogItems; dialogItems.Reserve(numDialogItems); - for(i = 0; i < numDialogItems; i++) + for (i = 0; i < numDialogItems; i++) dialogItems.Add(FarDialogItem()); g_StartupInfo.InitDialogItems(&initDialogItems.Front(), &dialogItems.Front(), numDialogItems); @@ -653,17 +655,17 @@ HRESULT CPlugin::ShowAttributesWindow() } size = numLines + 6; xSize = maxLen + kSpace + maxLen2 + 5; - FarDialogItem &aFirstDialogItem = dialogItems.Front(); - aFirstDialogItem.Y2 = size - 2; - aFirstDialogItem.X2 = xSize - 4; + FarDialogItem &firstDialogItem = dialogItems.Front(); + firstDialogItem.Y2 = size - 2; + firstDialogItem.X2 = xSize - 4; /* int askCode = */ g_StartupInfo.ShowDialog(xSize, size, NULL, &dialogItems.Front(), numDialogItems); return S_OK; } -int CPlugin::ProcessKey(int aKey, unsigned int controlState) +int CPlugin::ProcessKey(int key, unsigned int controlState) { - if (controlState == PKF_CONTROL && aKey == 'A') + if (controlState == PKF_CONTROL && key == 'A') { HRESULT result = ShowAttributesWindow(); if (result == S_OK) @@ -672,7 +674,7 @@ int CPlugin::ProcessKey(int aKey, unsigned int controlState) return FALSE; throw "Error"; } - if ((controlState & PKF_ALT) != 0 && aKey == VK_F6) + if ((controlState & PKF_ALT) != 0 && key == VK_F6) { UString folderPath; if (!NFile::NDirectory::GetOnlyDirPrefix(m_FileName, folderPath)) diff --git a/CPP/7zip/UI/Far/Plugin.h b/CPP/7zip/UI/Far/Plugin.h index 736fc7d0..d9b99fa9 100755 --- a/CPP/7zip/UI/Far/Plugin.h +++ b/CPP/7zip/UI/Far/Plugin.h @@ -13,6 +13,8 @@ #include "FarUtils.h" +const UInt32 kNumInfoLinesMax = 30; // Change it; + class CPlugin { NWindows::NCOM::CComInitializer m_ComInitializer; @@ -20,7 +22,7 @@ class CPlugin UString m_PannelTitle; - InfoPanelLine m_InfoLines[30]; // Change it; + InfoPanelLine m_InfoLines[kNumInfoLinesMax]; char m_FileNameBuffer[1024]; char m_CurrentDirBuffer[1024]; diff --git a/CPP/7zip/UI/Far/UpdateCallback100.cpp b/CPP/7zip/UI/Far/UpdateCallback100.cpp index 96699174..ce4fa05e 100755 --- a/CPP/7zip/UI/Far/UpdateCallback100.cpp +++ b/CPP/7zip/UI/Far/UpdateCallback100.cpp @@ -10,6 +10,11 @@ using namespace NFar; +STDMETHODIMP CUpdateCallback100Imp::SetNumFiles(UInt64 /* numFiles */) +{ + return S_OK; +} + STDMETHODIMP CUpdateCallback100Imp::SetTotal(UINT64 aSize) { if (m_ProgressBox != 0) diff --git a/CPP/7zip/UI/Far/UpdateCallback100.h b/CPP/7zip/UI/Far/UpdateCallback100.h index 87c55dc3..f12193e9 100755 --- a/CPP/7zip/UI/Far/UpdateCallback100.h +++ b/CPP/7zip/UI/Far/UpdateCallback100.h @@ -26,6 +26,7 @@ public: STDMETHOD(DeleteOperation)(const wchar_t *aName); STDMETHOD(OperationResult)(INT32 aOperationResult); STDMETHOD(UpdateErrorMessage)(const wchar_t *message); + STDMETHOD(SetNumFiles)(UInt64 numFiles); private: CMyComPtr<IInFolderArchive> m_ArchiveHandler; diff --git a/CPP/7zip/UI/Far/makefile b/CPP/7zip/UI/Far/makefile index 2e22d862..1210e961 100755 --- a/CPP/7zip/UI/Far/makefile +++ b/CPP/7zip/UI/Far/makefile @@ -43,6 +43,7 @@ WIN_OBJS = \ 7ZIP_COMMON_OBJS = \ $O\FilePathAutoRename.obj \ $O\FileStreams.obj \ + $O\ProgressUtils.obj \ $O\StreamUtils.obj \ UI_COMMON_OBJS = \ |