Compress-Deflate7
view release on metacpan or search on metacpan
7zip/CPP/7zip/UI/Far/FarUtils.cpp view on Meta::CPAN
return BOOLToBool(m_Data.Control(pluginHandle, command, param));
}
bool CStartupInfo::ControlRequestActivePanel(int command, void *param)
{
return Control(INVALID_HANDLE_VALUE, command, param);
}
bool CStartupInfo::ControlGetActivePanelInfo(PanelInfo &panelInfo)
{
return ControlRequestActivePanel(FCTL_GETPANELINFO, &panelInfo);
}
bool CStartupInfo::ControlSetSelection(const PanelInfo &panelInfo)
{
return ControlRequestActivePanel(FCTL_SETSELECTION, (void *)&panelInfo);
}
bool CStartupInfo::ControlGetActivePanelCurrentItemInfo(
PluginPanelItem &pluginPanelItem)
{
PanelInfo panelInfo;
if(!ControlGetActivePanelInfo(panelInfo))
return false;
if(panelInfo.ItemsNumber <= 0)
throw "There are no items";
pluginPanelItem = panelInfo.PanelItems[panelInfo.CurrentItem];
return true;
}
bool CStartupInfo::ControlGetActivePanelSelectedOrCurrentItems(
CObjectVector<PluginPanelItem> &pluginPanelItems)
{
pluginPanelItems.Clear();
PanelInfo panelInfo;
if(!ControlGetActivePanelInfo(panelInfo))
return false;
if(panelInfo.ItemsNumber <= 0)
throw "There are no items";
if (panelInfo.SelectedItemsNumber == 0)
pluginPanelItems.Add(panelInfo.PanelItems[panelInfo.CurrentItem]);
else
for (int i = 0; i < panelInfo.SelectedItemsNumber; i++)
pluginPanelItems.Add(panelInfo.SelectedItems[i]);
return true;
}
bool CStartupInfo::ControlClearPanelSelection()
{
PanelInfo panelInfo;
if(!ControlGetActivePanelInfo(panelInfo))
return false;
for (int i = 0; i < panelInfo.ItemsNumber; i++)
panelInfo.PanelItems[i].Flags &= ~PPIF_SELECTED;
return ControlSetSelection(panelInfo);
}
////////////////////////////////////////////////
// menu function
int CStartupInfo::Menu(
int x,
int y,
int maxHeight,
unsigned int flags,
const char *title,
const char *aBottom,
const char *helpTopic,
int *breakKeys,
int *breakCode,
struct FarMenuItem *items,
int numItems)
{
return m_Data.Menu(m_Data.ModuleNumber, x, y, maxHeight, flags, (char *)title,
(char *)aBottom, (char *)helpTopic, breakKeys, breakCode, items, numItems);
}
int CStartupInfo::Menu(
unsigned int flags,
const char *title,
const char *helpTopic,
struct FarMenuItem *items,
int numItems)
{
return Menu(-1, -1, 0, flags, title, NULL, helpTopic, NULL,
NULL, items, numItems);
}
int CStartupInfo::Menu(
unsigned int flags,
const char *title,
const char *helpTopic,
const CSysStringVector &items,
int selectedItem)
{
CRecordVector<FarMenuItem> farMenuItems;
for(int i = 0; i < items.Size(); i++)
{
FarMenuItem item;
item.Checked = 0;
item.Separator = 0;
item.Selected = (i == selectedItem);
CSysString reducedString = items[i].Left(sizeof(item.Text) / sizeof(item.Text[0]) - 1);
MyStringCopy(item.Text, (const char *)GetOemString(reducedString));
farMenuItems.Add(item);
}
return Menu(flags, title, helpTopic, &farMenuItems.Front(), farMenuItems.Size());
}
//////////////////////////////////
// CScreenRestorer
CScreenRestorer::~CScreenRestorer()
{
Restore();
}
void CScreenRestorer::Save()
{
if(m_Saved)
return;
m_HANDLE = g_StartupInfo.SaveScreen();
m_Saved = true;
}
void CScreenRestorer::Restore()
{
if(m_Saved)
{
g_StartupInfo.RestoreScreen(m_HANDLE);
m_Saved = false;
}
};
static AString DWORDToString(DWORD number)
{
char buffer[32];
_ultoa(number, buffer, 10);
return buffer;
}
void PrintErrorMessage(const char *message, int code)
{
AString tmp = message;
tmp += " #";
tmp += DWORDToString(code);
g_StartupInfo.ShowMessage(tmp);
}
void PrintErrorMessage(const char *message, const char *text)
{
AString tmp = message;
tmp += ":\n";
tmp += text;
g_StartupInfo.ShowMessageLines(tmp);
}
void PrintErrorMessage(const char *message, const wchar_t *text)
{
PrintErrorMessage(message, UnicodeStringToMultiByte(text, CP_OEMCP));
}
bool WasEscPressed()
{
#ifdef UNDER_CE
return false;
#else
( run in 0.758 second using v1.01-cache-2.11-cpan-39bf76dae61 )