예제 #1
0
LPTSTR PartitionInfo::GetSizeAsString(PFormat *pFormat)
{
	const double sizeInMB = (double) m_PartitionLength / (1024 * 1024);
	String fmt(_T("%.2f "));
	if (sizeInMB < 1024.0)
	{
		fmt += GetLangString(IDS_ISO_MB);
		pFormat->Format(fmt.c_str(), sizeInMB);
	}
	else
	{
		const double sizeInGB = sizeInMB / 1024;
		if (sizeInGB < 1024.0)
		{
			fmt += GetLangString(IDS_ISO_GB);
			pFormat->Format(fmt.c_str(), sizeInGB);
		}
		else
		{
			fmt += GetLangString(IDS_ISO_TB);
			pFormat->Format(fmt.c_str(), sizeInGB / 1024);
		}
	}
	return pFormat->buffer;
}
예제 #2
0
void CAboutDlg::InitLang()
{
	if (HaveLangStrings())
	{
		this->SetWindowText(GetLangString(0x00901002));
		this->GetDlgItem(IDOK)->SetWindowText(GetLangString(0x00901001));
		this->GetDlgItem(IDC_STATIC_LICENSE)->SetWindowText(GetLangString(0x00901003));
	}
}
예제 #3
0
파일: CopyDlg.cpp 프로젝트: zyzil/zhed
/**
 * @brief Copy the bytes.
 * @param [in] hDlg Handle to the dialog.
 * @return TRUE if bytes were copied, FALSE otherwise.
 */
BOOL CopyDlg::Apply(HWindow* pDlg)
{
	const int bufSize = 64;
	TCHAR buf[bufSize + 1] = {0};
	int iOffset;
	int iNumberOfBytes;
	if (pDlg->GetDlgItemText(IDC_COPY_STARTOFFSET, buf, bufSize) &&
		!offset_parse(buf, iOffset))
	{
		MessageBox(pDlg, GetLangString(IDS_OFFSET_START_ERROR), MB_ICONERROR);
		return FALSE;
	}
	if (pDlg->IsDlgButtonChecked(IDC_COPY_OFFSET))
	{
		if (pDlg->GetDlgItemText(IDC_COPY_OFFSETEDIT, buf, bufSize) &&
			!offset_parse(buf, iNumberOfBytes))
		{
			MessageBox(pDlg, GetLangString(IDS_OFFSET_END_ERROR), MB_ICONERROR);
			return FALSE;
		}
		iNumberOfBytes = iNumberOfBytes - iOffset + 1;
	}
	else
	{// Get number of bytes.
		if (pDlg->GetDlgItemText(IDC_COPY_BYTECOUNT, buf, bufSize) &&
			_stscanf(buf, _T("%d"), &iNumberOfBytes) == 0)
		{
			MessageBox(pDlg, GetLangString(IDS_BYTES_NOT_KNOWN), MB_ICONERROR);
			return FALSE;
		}
	}
	// Can requested number be cut?
	// DataArray.GetLength ()-iCutOffset = number of bytes from current pos. to end.
	if (m_dataArray.GetLength() - iOffset < iNumberOfBytes)
	{
		MessageBox(pDlg, GetLangString(IDS_COPY_TOO_MANY), MB_ICONERROR);
		return FALSE;
	}
	// Transfer to clipboard.
	int destlen = Text2BinTranslator::iBytes2BytecodeDestLen(&m_dataArray[iOffset], iNumberOfBytes);
	HGLOBAL hGlobal = GlobalAlloc(GHND, destlen);
	if (hGlobal == 0)
	{
		// Not enough memory for clipboard.
		MessageBox(pDlg, GetLangString(IDS_COPY_NO_MEM), MB_ICONERROR);
		return FALSE;
	}
	WaitCursor wc;
	char* pd = (char *)GlobalLock(hGlobal);
	Text2BinTranslator::iTranslateBytesToBC(pd, &m_dataArray[iOffset], iNumberOfBytes);
	GlobalUnlock(hGlobal);
	pwnd->OpenClipboard();
	EmptyClipboard();
	SetClipboardData(CF_TEXT, hGlobal);
	CloseClipboard();
	return TRUE;
}
예제 #4
0
파일: idt.cpp 프로젝트: derekdreery/frhed
int CDropTarget::PopupDropMenu(POINTL pt)
{
	HMenu *pMenu = HMenu::CreatePopupMenu();
	pMenu->InsertMenu(0, MF_BYPOSITION | MF_STRING, 1, GetLangString(IDS_DD_MENU_MOVE));
	pMenu->InsertMenu(1, MF_BYPOSITION | MF_STRING, 2, GetLangString(IDS_DD_MENU_COPY));
	pMenu->InsertMenu(2, MF_BYPOSITION | MF_SEPARATOR, 0, 0);
	pMenu->InsertMenu(3, MF_BYPOSITION | MF_STRING, 0, GetLangString(IDS_DD_MENU_CANCEL));
	int choice = pMenu->TrackPopupMenuEx(TPM_NONOTIFY|TPM_RIGHTBUTTON|TPM_RETURNCMD, pt.x, pt.y, hexwnd.pwnd);
	pMenu->DestroyMenu();
	return choice;
}
예제 #5
0
//-------------------------------------------------------------------
// SimpleString replacedata contains data to replace with.
bool ReplaceDlg::replace_selected_data(HWindow *pDlg)
{
    if (!bSelected)
    {
        MessageBox(pDlg, GetLangString(IDS_REPL_NO_DATA), MB_ICONERROR);
        return false;
    }
    int i = iGetStartOfSelection();
    int n = iGetEndOfSelection() - i + 1;
    SimpleArray<BYTE> olddata(n, &m_dataArray[i]);
    if (strReplaceWithData.IsEmpty())
    {
        // Selected data is to be deleted, since replace-with data is empty string.
        if (!m_dataArray.Replace(i, n, 0, 0))
        {
            MessageBox(pDlg, GetLangString(IDS_REPL_CANT_DELETE), MB_ICONERROR);
            return FALSE;
        }
        push_undorecord(i, olddata, olddata.GetLength(), NULL, 0);
        bSelected = false;
        iCurByte = iStartOfSelection;
    }
    else if (bPasteAsText)
    {
        // Replace with non-zero-length data.
        if (!m_dataArray.Replace(i, n, (const BYTE *)(const char *)strReplaceWithData, strReplaceWithData.StrLen()))
        {
            MessageBox(pDlg, GetLangString(IDS_REPL_FAILED), MB_ICONERROR);
            return false;
        }
        push_undorecord(i, olddata, olddata.GetLength(), (const BYTE *)(const char *)strReplaceWithData, strReplaceWithData.StrLen());
        iEndOfSelection = iStartOfSelection + strReplaceWithData.StrLen() - 1;
    }
    else
    {
        // Input string contains special-syntax-coded binary data.
        SimpleArray<BYTE> out;
        if (!transl_text_to_binary(out))
        {
            MessageBox(pDlg, GetLangString(IDS_REPL_CANNOT_CONVERT), MB_ICONERROR);
            return false;
        }
        if (!m_dataArray.Replace(i, n, out, out.GetLength()))
        {
            MessageBox(pDlg, GetLangString(IDS_REPL_FAILED), MB_ICONERROR);
            return false;
        }
        push_undorecord(i, olddata, olddata.GetLength(), out, out.GetLength());
        iEndOfSelection = iStartOfSelection + out.GetLength() - 1;
    }
    bFilestatusChanged = true;
    return true;
}
예제 #6
0
void ReplaceDlg::replace_directed(HWindow *pDlg, int finddir, bool showCount)
{
    bool case_sensitive = pDlg->IsDlgButtonChecked(IDC_MATCHCASE_CHECK) == BST_CHECKED;
    GetDlgItemText(pDlg, IDC_TO_REPLACE_EDIT, strToReplaceData);
    GetDlgItemText(pDlg, IDC_REPLACEWITH_EDIT, strReplaceWithData);
    bPasteAsText = pDlg->IsDlgButtonChecked(IDC_USETRANSLATION_CHECK) == BST_UNCHECKED;
    //------------------
    // Don't do anything if to-replace and replace-with data are same.
    Text2BinTranslator tr_find(strToReplaceData), tr_replace(strReplaceWithData);
    if (tr_find.bCompareBin(tr_replace, iCharacterSet, iBinaryMode))
    {
        MessageBox(pDlg, GetLangString(IDS_REPL_SAME_STRS), MB_ICONERROR);
        return;
    }
    WaitCursor wc;
    int occ_num = 0;
    HWindow *pwndFocus = HWindow::GetFocus();
    if (EnableDlgItem(pDlg, IDC_REPLACE_BUTTON, FALSE) == FALSE)
    {
        // Don't lose focus.
        if (!pwndFocus->IsWindowEnabled())
            pDlg->SetFocus();
        occ_num++;
        replace_selected_data(pDlg);
    }
    if (finddir)
    {
        while (find_and_select_data(finddir, case_sensitive))
        {
            occ_num++;
            replace_selected_data(pDlg);
        };
    }
    if (occ_num)
    {
        set_wnd_title();
        adjust_view_for_selection();
        resize_window();
        synch_sibling();

        if (showCount)
        {
            TCHAR tbuf[100];
            _stprintf(tbuf, GetLangString(IDS_REPL_COUNT), occ_num);
            MessageBox(pDlg, tbuf, MB_ICONINFORMATION);
        }
    }
}
예제 #7
0
/**
 * @brief Go to offset user gave to the dialog.
 * @param [in] hDlg Handle of Goto-dialog.
 * @return TRUE if new offset was applied, FALSE for invalid offset.
 */
BOOL GoToDlg::Apply(HWindow *pDlg)
{
	TCHAR buffer[EditLen + 1];
	int offset, i = 0, r = 0;
	pDlg->GetDlgItemText(IDC_GOTO_OFFSET, buffer, RTL_NUMBER_OF(buffer));
	// For a relative jump, read offset from 2nd character on.
	if (buffer[0] == '+' || buffer[0] == '-')
		r = 1;
	if (!offset_parse(buffer + r, offset))
	{
		MessageBox(pDlg, GetLangString(IDS_OFFSET_ERROR), MB_ICONERROR);
		return FALSE;
	}
	if (r)
	{
		// Relative jump.
		if (buffer[0] == '-' )
			offset = -offset;
		offset += iCurByte;
	}
	
	// Absolute jump.
	// Check limits and jump to begin/end if out of limits
	if (offset < 0)
		offset = 0;
	if (offset >= m_dataArray.GetLength())
		offset = m_dataArray.GetLength() - 1;

	iCurByte = offset;
	snap_caret();
	return TRUE;
}
예제 #8
0
/**
 * @brief Apply the manipulation.
 * @param [in] hDlg Handle to the dialog.
 * @param [in] wParam Command user selected.
 * @return TRUE if bytes were copied, FALSE otherwise.
 */
BOOL BitManipDlg::Apply(HWindow *pDlg, WPARAM wParam)
{
	BYTE cBitValue = 0;
	if (pDlg->IsDlgButtonChecked(IDC_MANIPBITS_BIT8))
		cBitValue |= 128;
	if (pDlg->IsDlgButtonChecked(IDC_MANIPBITS_BIT7))
		cBitValue |= 64;
	if (pDlg->IsDlgButtonChecked(IDC_MANIPBITS_BIT6))
		cBitValue |= 32;
	if (pDlg->IsDlgButtonChecked(IDC_MANIPBITS_BIT5))
		cBitValue |= 16;
	if (pDlg->IsDlgButtonChecked(IDC_MANIPBITS_BIT4))
		cBitValue |= 8;
	if (pDlg->IsDlgButtonChecked(IDC_MANIPBITS_BIT3))
		cBitValue |= 4;
	if (pDlg->IsDlgButtonChecked(IDC_MANIPBITS_BIT2))
		cBitValue |= 2;
	if (pDlg->IsDlgButtonChecked(IDC_MANIPBITS_BIT1))
		cBitValue |= 1;
	if (wParam == IDOK)
	{
		BYTE ch = m_dataArray[iCurByte];
		m_dataArray[iCurByte] = cBitValue;
		push_undorecord(iCurByte, &ch, 1, &m_dataArray[iCurByte], 1);
		bFilestatusChanged = true;
		repaint();
		return TRUE;
	}
	TCHAR buf[64];
	_sntprintf(buf, RTL_NUMBER_OF(buf), GetLangString(IDS_BITMANIP_VALUE),
		(BYTE)cBitValue, (signed char)cBitValue, (BYTE)cBitValue);
	pDlg->SetDlgItemText(IDC_MANIPBITS_VALUE, buf);
	return FALSE;
}
예제 #9
0
/**
 * @brief Initialize the dialog.
 * @param [in] hDlg Handle to the dialog.
 */
BOOL BitManipDlg::OnInitDialog(HWindow *pDlg)
{
	TCHAR buf[64];
	_sntprintf(buf, RTL_NUMBER_OF(buf), GetLangString(IDS_BITMANIP_AT_OFFSET), iCurByte, iCurByte);
	pDlg->SetDlgItemText(IDC_MANIPBITS, buf);
	BYTE cBitValue = m_dataArray[iCurByte];
	if (cBitValue & 1)
		pDlg->CheckDlgButton(IDC_MANIPBITS_BIT1, BST_CHECKED);
	if (cBitValue & 2)
		pDlg->CheckDlgButton(IDC_MANIPBITS_BIT2, BST_CHECKED);
	if (cBitValue & 4)
		pDlg->CheckDlgButton(IDC_MANIPBITS_BIT3, BST_CHECKED);
	if (cBitValue & 8)
		pDlg->CheckDlgButton(IDC_MANIPBITS_BIT4, BST_CHECKED);
	if (cBitValue & 16)
		pDlg->CheckDlgButton(IDC_MANIPBITS_BIT5, BST_CHECKED);
	if (cBitValue & 32)
		pDlg->CheckDlgButton(IDC_MANIPBITS_BIT6, BST_CHECKED);
	if (cBitValue & 64)
		pDlg->CheckDlgButton(IDC_MANIPBITS_BIT7, BST_CHECKED);
	if (cBitValue & 128)
		pDlg->CheckDlgButton(IDC_MANIPBITS_BIT8, BST_CHECKED);
	Apply(pDlg, 0);
	return TRUE;
}
예제 #10
0
		// Добавляет линейку кнопок.
		void AddButtons(int ButtonCount, const int* MessageIDs, int defaultButtonIndex = 0, int cancelButtonIndex = -1)
		{
			int LineY = m_NextY++;
			T *PrevButton = nullptr;

			for (int i = 0; i < ButtonCount; i++)
			{
				T *NewButton = AddDialogItem(DI_BUTTON, GetLangString(MessageIDs[i]));
				NewButton->Flags = DIF_CENTERGROUP;
				NewButton->Y1 = NewButton->Y2 = LineY;
				if (PrevButton)
				{
					NewButton->X1 = PrevButton->X2 + 1;
				}
				else
				{
					NewButton->X1 = 2 + m_Indent;
					m_FirstButtonID = m_DialogItemsCount - 1;
				}
				NewButton->X2 = NewButton->X1 + ItemWidth(*NewButton);

				if (defaultButtonIndex == i)
				{
					NewButton->Flags |= DIF_DEFAULTBUTTON;
				}
				if (cancelButtonIndex == i)
					m_CancelButtonID = m_DialogItemsCount - 1;

				PrevButton = NewButton;
			}
		}
예제 #11
0
void CAboutDlg::SetBuildInfo()
{
	CString szBuildInfo = _T("");

	szBuildInfo.Format(_T("%s %s,"),
		HaveLangStrings() ? GetLangString(0x00901004) : _T("Version"),
		ENCWAVTOAC3_VERSION);

#if defined(_WIN32) & !defined(_WIN64)
	szBuildInfo += _T(" x86, Win32");
#else
	szBuildInfo += _T(" AMD64, Win64");
#endif // _WIN32

#if defined(_UNICODE)
	szBuildInfo += _T(" Unicode");
#else
	szBuildInfo += _T(" Ansi");
#endif // _UNICODE

#if defined(_DEBUG)
	szBuildInfo += _T(" DEBUG");
#endif // _DEBUG

	szBuildInfo += _T(", ");
	szBuildInfo += __DATE__;
	szBuildInfo += _T(" ");
	szBuildInfo += __TIME__;

	szBuildInfo += theApp.m_bIsPortable ? _T(" (Portable)") : _T(" (Roaming)");

	this->m_StcBuildInfo.SetWindowText(szBuildInfo);
}
예제 #12
0
		// Добавляет сепаратор.
		void AddSeparator(int MessageId=-1)
		{
			T *Separator = AddDialogItem(DI_TEXT, MessageId == -1 ? L"" : GetLangString(MessageId));
			Separator->Flags = DIF_SEPARATOR;
			Separator->X1 = 3;
			Separator->Y1 = Separator->Y2 = NextY++;
		}
예제 #13
0
LanguageList & CLanguage::GetLangList (void)
{
    if (m_LanguageList.size() > 0)
    {
        return m_LanguageList;
    }

    CPath LanguageFiles(g_Settings->LoadStringVal(Setting_LanguageDir),"*.pj.Lang");
    if (LanguageFiles.FindFirst())
    {
        do
        {
            LanguageFile File; //We temporally store the values in here to added to the list

			File.Filename = (std::string &)LanguageFiles;
            File.LanguageName = GetLangString(LanguageFiles,LANGUAGE_NAME);

            if (File.LanguageName.length() == 0)
            {
                continue;
            }

            //get the name of the language from inside the file
            m_LanguageList.push_back(File);
        } while (LanguageFiles.FindNext());
    }
    return m_LanguageList;
}
예제 #14
0
		// Добавляет сепаратор, кнопки OK и Cancel.
		void AddOKCancel(int OKMessageId, int CancelMessageId, bool Separator=true)
		{
			if (Separator)
				AddSeparator();

			T *OKButton = AddDialogItem(DI_BUTTON, GetLangString(OKMessageId));
			OKButton->Flags = DIF_CENTERGROUP|DIF_DEFAULTBUTTON;
			OKButton->Y1 = OKButton->Y2 = NextY++;
			OKButtonID = DialogItemsCount-1;

			if(CancelMessageId != -1)
			{
				T *CancelButton = AddDialogItem(DI_BUTTON, GetLangString(CancelMessageId));
				CancelButton->Flags = DIF_CENTERGROUP;
				CancelButton->Y1 = CancelButton->Y2 = OKButton->Y1;
			}
		}
예제 #15
0
		// Начинает располагать поля диалога внутри single box
		void StartSingleBox(int MessageId=-1, bool LeftAlign=false)
		{
			T *SingleBox = AddDialogItem(DI_SINGLEBOX, MessageId == -1 ? L"" : GetLangString(MessageId));
			SingleBox->Flags = LeftAlign ? DIF_LEFTTEXT : DIF_NONE;
			SingleBox->X1 = 5;
			SingleBox->Y1 = m_NextY++;
			m_Indent = 2;
			m_SingleBoxIndex = m_DialogItemsCount - 1;
		}
예제 #16
0
/**
 * @brief Handle dialog commands.
 * @param [in] hDlg Hanle to the dialog.
 * @param [in] wParam The command to handle.
 * @param [in] lParam Optional parameter for the command.
 * @return TRUE if the command was handled, FALSE otherwise.
 */
BOOL SelectBlockDlg::OnCommand(HWindow *pDlg, WPARAM wParam, LPARAM lParam)
{
	TCHAR buf[128];
	int iStartOfSelSetting = 0;
	int iEndOfSelSetting =  0;
	int maxb;
	switch (wParam)
	{
	case IDOK:
		if (pDlg->GetDlgItemText(IDC_BLOCKSEL_OFFSET, buf, 128) &&
			!offset_parse(buf, iStartOfSelSetting))
		{
			MessageBox(pDlg, GetLangString(IDS_OFFSET_START_ERROR), MB_ICONERROR);
			return TRUE;
		}
		if (pDlg->GetDlgItemText(IDC_BLOCKSEL_OFFSETEND, buf, 128) &&
			!offset_parse(buf, iEndOfSelSetting))
		{
			MessageBox(pDlg, GetLangString(IDS_OFFSET_END_ERROR), MB_ICONERROR);
			return TRUE;
		}
		//make the selection valid if it is not
		maxb = m_dataArray.GetUpperBound();
		if (iStartOfSelSetting < 0)
			iStartOfSelSetting = 0;
		if (iStartOfSelSetting > maxb)
			iStartOfSelSetting = maxb;
		if (iEndOfSelSetting < 0)
			iEndOfSelSetting = 0;
		if (iEndOfSelSetting > maxb)
			iEndOfSelSetting = maxb;
		iStartOfSelection = iStartOfSelSetting;
		iEndOfSelection = iEndOfSelSetting;
		bSelected = true;
		adjust_view_for_selection();
		repaint();
		// fall through
	case IDCANCEL:
		pDlg->EndDialog(wParam);
		return TRUE;
	}
	return FALSE;
}
예제 #17
0
DialogItemEx *DialogBuilder::AddCheckbox(lng TextMessageId, Bool3Option& Value)
{
	const auto Item = AddDialogItem(DI_CHECKBOX, GetLangString(TextMessageId));
	Item->Flags |= DIF_3STATE;
	SetNextY(Item);
	Item->X2 = Item->X1 + ItemWidth(*Item);
	Item->Selected = Value;
	SetLastItemBinding(CreateCheckBoxBinding(Value));
	return Item;
}
예제 #18
0
		// Добавляет кнопку справа от элемента RelativeTo.
		T *AddButtonAfter(T *RelativeTo, int LabelId)
		{
			T *Item = AddDialogItem(DI_BUTTON, GetLangString(LabelId));
			Item->Y1 = Item->Y2 = RelativeTo->Y1;
			Item->X1 = RelativeTo->X1 + ItemWidth(*RelativeTo) - 1 + 2;

			DialogItemBinding<T> *Binding = FindBinding(RelativeTo);
			if (Binding)
				Binding->AfterLabelID = GetItemID(Item);

			return Item;
		}
예제 #19
0
DialogItemEx *DialogBuilder::AddCheckbox(lng TextMessageId, IntOption& Value, int Mask, bool ThreeState)
{
	const auto Item = AddDialogItem(DI_CHECKBOX, GetLangString(TextMessageId));
	if (ThreeState && !Mask)
		Item->Flags |= DIF_3STATE;
	SetNextY(Item);
	Item->X2 = Item->X1 + ItemWidth(*Item);
	if (!Mask)
		Item->Selected = Value;
	else
		Item->Selected = (Value & Mask) != 0;
	SetLastItemBinding(CreateCheckBoxBinding(Value, Mask));
	return Item;
}
예제 #20
0
		// Добавляет чекбокс.
		T *AddCheckbox(int TextMessageId, int *Value, int Mask=0, bool ThreeState=false)
		{
			T *Item = AddDialogItem(DI_CHECKBOX, GetLangString(TextMessageId));
			if (ThreeState && !Mask)
				Item->Flags |= DIF_3STATE;
			SetNextY(Item);
			Item->X2 = Item->X1 + ItemWidth(*Item);
			if (!Mask)
				Item->Selected = *Value;
			else
				Item->Selected = (*Value & Mask) != 0;
			SetLastItemBinding(CreateCheckBoxBinding(Value, Mask));
			return Item;
		}
예제 #21
0
/**
 * @brief Initialize the dialog.
 * @param [in] hDlg Handle to the dialog.
 * @return TRUE.
 */
BOOL OpenPartiallyDlg::OnInitDialog(HWindow* pDlg)
{
	INT64 iPLFileLen = _filelengthi64(filehandle);
	TCHAR buf[128] = {0};
	pDlg->SetDlgItemText(IDC_OPENPARTIAL_OFFSET, _T("x0"));
	_sntprintf(buf, RTL_NUMBER_OF(buf) - 1, GetLangString(IDS_PARTIAL_LOAD_BYTES), iPLFileLen);
	pDlg->SetDlgItemText(IDC_OPENPARTIAL_BYTECOUNT, buf);
	_sntprintf(buf, RTL_NUMBER_OF(buf) - 1, _T("%lld"), iPLFileLen);
	pDlg->SetDlgItemText(IDC_OPENPARTIAL_BYTES, buf);
	pDlg->CheckDlgButton(IDC_OPENPARTIAL_BEGINOFF, BST_CHECKED);
	const UINT state = bShowFileStatsPL ? BST_CHECKED : BST_UNCHECKED;
	pDlg->CheckDlgButton(IDC_OPENPARTIAL_RELOFFSET, state);
	return TRUE;
}
예제 #22
0
void ReplaceDlg::find_directed(HWindow *pDlg, int finddir)
{
    GetDlgItemText(pDlg, IDC_TO_REPLACE_EDIT, strToReplaceData);
    bool case_sensitive = pDlg->IsDlgButtonChecked(IDC_MATCHCASE_CHECK) == BST_CHECKED;
    if (find_and_select_data(finddir, case_sensitive))
    {
        adjust_view_for_selection();
        repaint();
        synch_sibling();
        EnableDlgItem(pDlg, IDC_REPLACE_BUTTON, TRUE);
    }
    else
    {
        MessageBox(pDlg, GetLangString(IDS_FIND_CANNOT_FIND), MB_ICONWARNING);
    }
}
예제 #23
0
		// Добавляет указанную текстовую строку слева от элемента RelativeTo.
		T *AddTextBefore(T *RelativeTo, int LabelId)
		{
			T *Item = AddDialogItem(DI_TEXT, GetLangString(LabelId));
			Item->Y1 = Item->Y2 = RelativeTo->Y1;
			Item->X1 = 5 + m_Indent;
			Item->X2 = Item->X1 + ItemWidth(*Item) - 1;

			intptr_t RelativeToWidth = RelativeTo->X2 - RelativeTo->X1;
			RelativeTo->X1 = Item->X2 + 2;
			RelativeTo->X2 = RelativeTo->X1 + RelativeToWidth;

			DialogItemBinding<T> *Binding = FindBinding(RelativeTo);
			if (Binding)
				Binding->BeforeLabelID = GetItemID(Item);

			return Item;
		}
예제 #24
0
		FarDialogItem *AddListControl(FARDIALOGITEMTYPES Type, int *SelectedItem, wchar_t *Text, int Width, int Height, const int MessageIDs [], size_t ItemCount, FARDIALOGITEMFLAGS ItemFlags)
		{
			const wchar_t** ItemsText = nullptr;
			if (MessageIDs)
			{
				ItemsText = new const wchar_t*[ItemCount];
				for (size_t i = 0; i < ItemCount; i++)
				{
					ItemsText[i] = GetLangString(MessageIDs[i]);
				}
			}

			FarDialogItem* result = AddListControl(Type, SelectedItem, Text, Width, Height, ItemsText, ItemCount, ItemFlags);

			delete [] ItemsText;

			return result;
		}
예제 #25
0
		// Добавляет группу радиокнопок.
		void AddRadioButtons(int *Value, int OptionCount, const int MessageIDs[], bool FocusOnSelected=false)
		{
			for(int i=0; i<OptionCount; i++)
			{
				T *Item = AddDialogItem(DI_RADIOBUTTON, GetLangString(MessageIDs[i]));
				SetNextY(Item);
				Item->X2 = Item->X1 + ItemWidth(*Item);
				if (!i)
					Item->Flags |= DIF_GROUP;
				if (*Value == i)
				{
					Item->Selected = TRUE;
					if (FocusOnSelected)
						Item->Flags |= DIF_FOCUS;
				}
				SetLastItemBinding(CreateRadioButtonBinding(Value));
			}
		}
예제 #26
0
/**
 * @brief Show HTML help.
 * This function shows HTML help, with given command and path.
 * @param [in] uCommand How/what to open in help (TOC etc).
 * @param [in] path Additional relative path inside help file to open.
 * @param [in] hParentWindow Window opening this help.
 */
void ShowHtmlHelp(UINT uCommand, LPCTSTR path, HWindow *pParentWindow)
{
	TCHAR fullHelpPath[MAX_PATH];
	GetModuleFileName(NULL, fullHelpPath, MAX_PATH);
	PathRemoveFileSpec(fullHelpPath);
	PathAppend(fullHelpPath, HtmlHelpFile);
	if (!PathFileExists(fullHelpPath))
	{
		TCHAR msg[500];
		_sntprintf(msg, RTL_NUMBER_OF(msg), GetLangString(IDS_ERR_HELP_NOT_FOUND), fullHelpPath);
		MessageBox(pParentWindow, msg, MB_ICONERROR);
		return;
	}

	if (uCommand == HELP_CONTEXT)
	{
		if (path != NULL)
		{
			TCHAR fullpath[MAX_PATH] = {0};
			_sntprintf(fullpath, MAX_PATH, _T("%s::/%s"), fullHelpPath, path);
			HtmlHelp(NULL, fullpath, HH_DISPLAY_TOPIC, NULL);
		}
		else
		{
			HtmlHelp(NULL, fullHelpPath, HH_DISPLAY_TOPIC, NULL);
		}
	}
	else if (uCommand == HELP_FINDER)
	{
		HtmlHelp(NULL, fullHelpPath, HH_DISPLAY_SEARCH, NULL);
	}
	else if (uCommand == HELP_CONTENTS)
	{
		HtmlHelp(NULL, fullHelpPath, HH_DISPLAY_TOC, NULL);
	}
}
예제 #27
0
		PluginDialogBuilder(const PluginStartupInfo &aInfo, const GUID &aPluginId, const GUID &aId, int TitleMessageID, const wchar_t *aHelpTopic, FARWINDOWPROC aDlgProc=nullptr, void* aUserParam=nullptr, FARDIALOGFLAGS aFlags = FDLG_NONE)
			: Info(aInfo), DialogHandle(nullptr), HelpTopic(aHelpTopic), PluginId(aPluginId), Id(aId), DlgProc(aDlgProc), UserParam(aUserParam), Flags(aFlags)
		{
			AddBorder(GetLangString(TitleMessageID));
		}
예제 #28
0
		// Добавляет сепаратор.
		void AddSeparator(int MessageId=-1)
		{
			return AddSeparator(MessageId == -1 ? L"" : GetLangString(MessageId));
		}
예제 #29
0
		// Добавляет статический текст, расположенный на отдельной строке в диалоге.
		T *AddText(int LabelId)
		{
			T *Item = AddDialogItem(DI_TEXT, LabelId == -1 ? L"" : GetLangString(LabelId));
			SetNextY(Item);
			return Item;
		}
예제 #30
0
		T *AddTextAfter(T *RelativeTo, int LabelId, int skip=1)
		{
			return AddTextAfter(RelativeTo, GetLangString(LabelId), skip);
		}