Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/7zip/UI/Far/FarUtils.cpp')
-rw-r--r--CPP/7zip/UI/Far/FarUtils.cpp158
1 files changed, 107 insertions, 51 deletions
diff --git a/CPP/7zip/UI/Far/FarUtils.cpp b/CPP/7zip/UI/Far/FarUtils.cpp
index 14343522..28a4ada9 100644
--- a/CPP/7zip/UI/Far/FarUtils.cpp
+++ b/CPP/7zip/UI/Far/FarUtils.cpp
@@ -2,6 +2,7 @@
#include "StdAfx.h"
+#include "../../../Common/IntToString.h"
#include "../../../Common/StringConvert.h"
#ifndef UNDER_CE
@@ -35,8 +36,8 @@ const char *CStartupInfo::GetMsgString(int messageId)
int CStartupInfo::ShowMessage(unsigned int flags,
const char *helpTopic, const char **items, int numItems, int numButtons)
{
- return m_Data.Message(m_Data.ModuleNumber, flags, (char *)helpTopic,
- (char **)items, numItems, numButtons);
+ return m_Data.Message(m_Data.ModuleNumber, flags, helpTopic,
+ items, numItems, numButtons);
}
namespace NMessageID
@@ -50,12 +51,40 @@ namespace NMessageID
};
}
-int CStartupInfo::ShowMessage(const char *message)
+int CStartupInfo::ShowWarningWithOk(const char **items, int numItems)
{
- const char *items[]= { GetMsgString(NMessageID::kError), message, GetMsgString(NMessageID::kOk) };
- return ShowMessage(FMSG_WARNING, NULL, items, ARRAY_SIZE(items), 1);
+ return ShowMessage(FMSG_WARNING | FMSG_MB_OK, NULL, items, numItems, 0);
}
+extern const char *g_PluginName_for_Error;
+
+void CStartupInfo::SetErrorTitle(AString &s)
+{
+ if (g_PluginName_for_Error)
+ {
+ s += g_PluginName_for_Error;
+ s += ": ";
+ }
+ s += GetMsgString(NMessageID::kError);
+}
+
+int CStartupInfo::ShowErrorMessage(const char *message)
+{
+ AString s;
+ SetErrorTitle(s);
+ const char *items[]= { s, message };
+ return ShowWarningWithOk(items, ARRAY_SIZE(items));
+}
+
+int CStartupInfo::ShowErrorMessage2(const char *m1, const char *m2)
+{
+ AString s;
+ SetErrorTitle(s);
+ const char *items[]= { s, m1, m2 };
+ return ShowWarningWithOk(items, ARRAY_SIZE(items));
+}
+
+/*
static void SplitString(const AString &srcString, AStringVector &destStrings)
{
destStrings.Clear();
@@ -80,7 +109,9 @@ static void SplitString(const AString &srcString, AStringVector &destStrings)
if (!string.IsEmpty())
destStrings.Add(string);
}
+*/
+/*
int CStartupInfo::ShowMessageLines(const char *message)
{
AStringVector strings;
@@ -94,10 +125,22 @@ int CStartupInfo::ShowMessageLines(const char *message)
return ShowMessage(FMSG_WARNING, NULL, items, pos, 1);
}
+*/
+
+/*
+int CStartupInfo::ShowMessageLines(const char *message)
+{
+ AString s = GetMsgString(NMessageID::kError);
+ s.Add_LF();
+ s += message;
+ return ShowMessage(FMSG_WARNING | FMSG_MB_OK | FMSG_ALLINONE, NULL,
+ (const char **)(const char *)s, 1, 0);
+}
+*/
int CStartupInfo::ShowMessage(int messageId)
{
- return ShowMessage(GetMsgString(messageId));
+ return ShowErrorMessage(GetMsgString(messageId));
}
int CStartupInfo::ShowDialog(int X1, int Y1, int X2, int Y2,
@@ -129,14 +172,14 @@ void CStartupInfo::InitDialogItems(const CInitDialogItem *srcItems,
destItem.X2 = srcItem.X2;
destItem.Y2 = srcItem.Y2;
destItem.Focus = GetBOOLValue(srcItem.Focus);
- if(srcItem.HistoryName != NULL)
+ if (srcItem.HistoryName != NULL)
destItem.History = srcItem.HistoryName;
else
destItem.Selected = GetBOOLValue(srcItem.Selected);
destItem.Flags = srcItem.Flags;
destItem.DefaultButton = GetBOOLValue(srcItem.DefaultButton);
- if(srcItem.DataMessageId < 0)
+ if (srcItem.DataMessageId < 0)
MyStringCopy(destItem.Data, srcItem.DataString);
else
MyStringCopy(destItem.Data, GetMsgString(srcItem.DataMessageId));
@@ -220,7 +263,7 @@ CSysString CStartupInfo::QueryRegKeyValue(HKEY parentKey, const CSysString &keyN
return valueDefault;
CSysString value;
- if(regKey.QueryValue(valueName, value) != ERROR_SUCCESS)
+ if (regKey.QueryValue(valueName, value) != ERROR_SUCCESS)
return valueDefault;
return value;
@@ -234,7 +277,7 @@ UInt32 CStartupInfo::QueryRegKeyValue(HKEY parentKey, const CSysString &keyName,
return valueDefault;
UInt32 value;
- if(regKey.QueryValue(valueName, value) != ERROR_SUCCESS)
+ if (regKey.QueryValue(valueName, value) != ERROR_SUCCESS)
return valueDefault;
return value;
@@ -248,7 +291,7 @@ bool CStartupInfo::QueryRegKeyValue(HKEY parentKey, const CSysString &keyName,
return valueDefault;
bool value;
- if(regKey.QueryValue(valueName, value) != ERROR_SUCCESS)
+ if (regKey.QueryValue(valueName, value) != ERROR_SUCCESS)
return valueDefault;
return value;
@@ -278,9 +321,9 @@ bool CStartupInfo::ControlGetActivePanelCurrentItemInfo(
PluginPanelItem &pluginPanelItem)
{
PanelInfo panelInfo;
- if(!ControlGetActivePanelInfo(panelInfo))
+ if (!ControlGetActivePanelInfo(panelInfo))
return false;
- if(panelInfo.ItemsNumber <= 0)
+ if (panelInfo.ItemsNumber <= 0)
throw "There are no items";
pluginPanelItem = panelInfo.PanelItems[panelInfo.CurrentItem];
return true;
@@ -291,9 +334,9 @@ bool CStartupInfo::ControlGetActivePanelSelectedOrCurrentItems(
{
pluginPanelItems.Clear();
PanelInfo panelInfo;
- if(!ControlGetActivePanelInfo(panelInfo))
+ if (!ControlGetActivePanelInfo(panelInfo))
return false;
- if(panelInfo.ItemsNumber <= 0)
+ if (panelInfo.ItemsNumber <= 0)
throw "There are no items";
if (panelInfo.SelectedItemsNumber == 0)
pluginPanelItems.Add(panelInfo.PanelItems[panelInfo.CurrentItem]);
@@ -306,7 +349,7 @@ bool CStartupInfo::ControlGetActivePanelSelectedOrCurrentItems(
bool CStartupInfo::ControlClearPanelSelection()
{
PanelInfo panelInfo;
- if(!ControlGetActivePanelInfo(panelInfo))
+ if (!ControlGetActivePanelInfo(panelInfo))
return false;
for (int i = 0; i < panelInfo.ItemsNumber; i++)
panelInfo.PanelItems[i].Flags &= ~PPIF_SELECTED;
@@ -375,7 +418,7 @@ CScreenRestorer::~CScreenRestorer()
}
void CScreenRestorer::Save()
{
- if(m_Saved)
+ if (m_Saved)
return;
m_HANDLE = g_StartupInfo.SaveScreen();
m_Saved = true;
@@ -383,41 +426,67 @@ void CScreenRestorer::Save()
void CScreenRestorer::Restore()
{
- if(m_Saved)
+ if (m_Saved)
{
g_StartupInfo.RestoreScreen(m_HANDLE);
m_Saved = false;
}
};
-static AString DWORDToString(DWORD number)
+int PrintErrorMessage(const char *message, unsigned code)
{
- char buffer[32];
- _ultoa(number, buffer, 10);
- return buffer;
+ AString s = message;
+ s += " #";
+ char temp[16];
+ ConvertUInt32ToString((UInt32)code, temp);
+ s += temp;
+ return g_StartupInfo.ShowErrorMessage(s);
}
-void PrintErrorMessage(const char *message, int code)
+int PrintErrorMessage(const char *message, const char *text)
{
- AString tmp = message;
- tmp += " #";
- tmp += DWORDToString(code);
- g_StartupInfo.ShowMessage(tmp);
+ return g_StartupInfo.ShowErrorMessage2(message, text);
}
-void PrintErrorMessage(const char *message, const char *text)
+
+static void ReduceString(UString &s, unsigned size)
{
- AString tmp = message;
- tmp += ":\n";
- tmp += text;
- g_StartupInfo.ShowMessageLines(tmp);
+ if (s.Len() > size)
+ {
+ if (size > 5)
+ size -= 5;
+ s.Delete(size / 2, s.Len() - size);
+ s.Insert(size / 2, L" ... ");
+ }
}
-void PrintErrorMessage(const char *message, const wchar_t *text)
+int PrintErrorMessage(const char *message, const wchar_t *name, unsigned maxLen)
{
- PrintErrorMessage(message, UnicodeStringToMultiByte(text, CP_OEMCP));
+ UString s = name;
+ ReduceString(s, maxLen);
+ return PrintErrorMessage(message, UnicodeStringToMultiByte(s, CP_OEMCP));
}
+int ShowSysErrorMessage(DWORD errorCode)
+{
+ UString message = NError::MyFormatMessage(errorCode);
+ return g_StartupInfo.ShowErrorMessage(UnicodeStringToMultiByte(message, CP_OEMCP));
+}
+
+int ShowLastErrorMessage()
+{
+ return ShowSysErrorMessage(::GetLastError());
+}
+
+int ShowSysErrorMessage(DWORD errorCode, const wchar_t *name)
+{
+ UString s = NError::MyFormatMessage(errorCode);
+ AString s1 = UnicodeStringToMultiByte(s, CP_OEMCP);
+ AString s2 = UnicodeStringToMultiByte(name, CP_OEMCP);
+ return g_StartupInfo.ShowErrorMessage2(s1, s2);
+}
+
+
bool WasEscPressed()
{
#ifdef UNDER_CE
@@ -425,19 +494,19 @@ bool WasEscPressed()
#else
NConsole::CIn inConsole;
HANDLE handle = ::GetStdHandle(STD_INPUT_HANDLE);
- if(handle == INVALID_HANDLE_VALUE)
+ if (handle == INVALID_HANDLE_VALUE)
return true;
inConsole.Attach(handle);
for (;;)
{
DWORD numEvents;
- if(!inConsole.GetNumberOfEvents(numEvents))
+ if (!inConsole.GetNumberOfEvents(numEvents))
return true;
- if(numEvents == 0)
+ if (numEvents == 0)
return false;
INPUT_RECORD event;
- if(!inConsole.ReadEvent(event, numEvents))
+ if (!inConsole.ReadEvent(event, numEvents))
return true;
if (event.EventType == KEY_EVENT &&
event.Event.KeyEvent.bKeyDown &&
@@ -447,17 +516,4 @@ bool WasEscPressed()
#endif
}
-void ShowErrorMessage(DWORD errorCode)
-{
- UString message = NError::MyFormatMessage(errorCode);
- message.RemoveChar(L'\x0D');
- message.Replace(L'\x0A', L' ');
- g_StartupInfo.ShowMessage(UnicodeStringToMultiByte(message, CP_OEMCP));
-}
-
-void ShowLastErrorMessage()
-{
- ShowErrorMessage(::GetLastError());
-}
-
}