/* * PROJECT: PAINT for ReactOS * LICENSE: LGPL * FILE: base/applications/mspaint/dialogs.cpp * PURPOSE: Window procedures of the dialog windows plus launching functions * PROGRAMMERS: Benedikt Freisen */ /* INCLUDES *********************************************************/ #include "precomp.h" #include "dialogs.h" #include /* GLOBALS **********************************************************/ CMirrorRotateDialog mirrorRotateDialog; CAttributesDialog attributesDialog; CStretchSkewDialog stretchSkewDialog; /* FUNCTIONS ********************************************************/ LRESULT CMirrorRotateDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { CheckDlgButton(IDD_MIRRORROTATERB1, BST_CHECKED); CheckDlgButton(IDD_MIRRORROTATERB4, BST_CHECKED); return 0; } LRESULT CMirrorRotateDialog::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { EndDialog(0); return 0; } LRESULT CMirrorRotateDialog::OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { if (IsDlgButtonChecked(IDD_MIRRORROTATERB1)) EndDialog(1); else if (IsDlgButtonChecked(IDD_MIRRORROTATERB2)) EndDialog(2); else if (IsDlgButtonChecked(IDD_MIRRORROTATERB4)) EndDialog(3); else if (IsDlgButtonChecked(IDD_MIRRORROTATERB5)) EndDialog(4); else if (IsDlgButtonChecked(IDD_MIRRORROTATERB6)) EndDialog(5); return 0; } LRESULT CMirrorRotateDialog::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { EndDialog(0); return 0; } LRESULT CMirrorRotateDialog::OnRadioButton3(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { ::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB4), TRUE); ::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB5), TRUE); ::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB6), TRUE); return 0; } LRESULT CMirrorRotateDialog::OnRadioButton12(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { ::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB4), FALSE); ::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB5), FALSE); ::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB6), FALSE); return 0; } LRESULT CAttributesDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { newWidth = imageModel.GetWidth(); newHeight = imageModel.GetHeight(); CheckDlgButton(IDD_ATTRIBUTESRB3, BST_CHECKED); CheckDlgButton(IDD_ATTRIBUTESRB5, BST_CHECKED); SetDlgItemInt(IDD_ATTRIBUTESEDIT1, newWidth, FALSE); SetDlgItemInt(IDD_ATTRIBUTESEDIT2, newHeight, FALSE); if (isAFile) { TCHAR date[100]; TCHAR temp[100]; GetDateFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, date, SIZEOF(date)); GetTimeFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, temp, SIZEOF(temp)); _tcscat(date, _T(" ")); _tcscat(date, temp); CString strSize; strSize.Format(IDS_FILESIZE, fileSize); SetDlgItemText(IDD_ATTRIBUTESTEXT6, date); SetDlgItemText(IDD_ATTRIBUTESTEXT7, strSize); } CString strRes; strRes.Format(IDS_PRINTRES, fileHPPM, fileVPPM); SetDlgItemText(IDD_ATTRIBUTESTEXT8, strRes); return 0; } LRESULT CAttributesDialog::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { EndDialog(0); return 0; } LRESULT CAttributesDialog::OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { EndDialog(1); return 0; } LRESULT CAttributesDialog::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { EndDialog(0); return 0; } LRESULT CAttributesDialog::OnDefault(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { newWidth = imageModel.GetWidth(); newHeight = imageModel.GetHeight(); CheckDlgButton(IDD_ATTRIBUTESRB3, BST_CHECKED); CheckDlgButton(IDD_ATTRIBUTESRB5, BST_CHECKED); SetDlgItemInt(IDD_ATTRIBUTESEDIT1, newWidth, FALSE); SetDlgItemInt(IDD_ATTRIBUTESEDIT2, newHeight, FALSE); return 0; } LRESULT CAttributesDialog::OnRadioButton1(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { CString strNum; strNum.Format(_T("%.3lf"), newWidth / (0.0254 * fileHPPM)); SetDlgItemText(IDD_ATTRIBUTESEDIT1, strNum); strNum.Format(_T("%.3lf"), newHeight / (0.0254 * fileVPPM)); SetDlgItemText(IDD_ATTRIBUTESEDIT2, strNum); return 0; } LRESULT CAttributesDialog::OnRadioButton2(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { CString strNum; strNum.Format(_T("%.3lf"), newWidth * 100.0 / fileHPPM); SetDlgItemText(IDD_ATTRIBUTESEDIT1, strNum); strNum.Format(_T("%.3lf"), newHeight * 100.0 / fileVPPM); SetDlgItemText(IDD_ATTRIBUTESEDIT2, strNum); return 0; } LRESULT CAttributesDialog::OnRadioButton3(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { SetDlgItemInt(IDD_ATTRIBUTESEDIT1, newWidth, FALSE); SetDlgItemInt(IDD_ATTRIBUTESEDIT2, newHeight, FALSE); return 0; } LRESULT CAttributesDialog::OnEdit1(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { if (Edit_GetModify(hWndCtl)) { TCHAR tempS[100]; if (IsDlgButtonChecked(IDD_ATTRIBUTESRB1)) { GetDlgItemText(IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS)); newWidth = max(1, (int) (_tcstod(tempS, NULL) * fileHPPM * 0.0254)); } else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB2)) { GetDlgItemText(IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS)); newWidth = max(1, (int) (_tcstod(tempS, NULL) * fileHPPM / 100)); } else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB3)) { GetDlgItemText(IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS)); newWidth = max(1, _tstoi(tempS)); } Edit_SetModify(hWndCtl, FALSE); } return 0; } LRESULT CAttributesDialog::OnEdit2(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { if (Edit_GetModify(hWndCtl)) { TCHAR tempS[100]; if (IsDlgButtonChecked(IDD_ATTRIBUTESRB1)) { GetDlgItemText(IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS)); newHeight = max(1, (int) (_tcstod(tempS, NULL) * fileVPPM * 0.0254)); } else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB2)) { GetDlgItemText(IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS)); newHeight = max(1, (int) (_tcstod(tempS, NULL) * fileVPPM / 100)); } else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB3)) { GetDlgItemText(IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS)); newHeight = max(1, _tstoi(tempS)); } Edit_SetModify(hWndCtl, FALSE); } return 0; } LRESULT CStretchSkewDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { SetDlgItemInt(IDD_STRETCHSKEWEDITHSTRETCH, 100, FALSE); SetDlgItemInt(IDD_STRETCHSKEWEDITVSTRETCH, 100, FALSE); SetDlgItemInt(IDD_STRETCHSKEWEDITHSKEW, 0, FALSE); SetDlgItemInt(IDD_STRETCHSKEWEDITVSKEW, 0, FALSE); return 0; } LRESULT CStretchSkewDialog::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { EndDialog(0); return 0; } LRESULT CStretchSkewDialog::OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { CString strrcIntNumbers; CString strrcPercentage; CString strrcAngle; BOOL tr1, tr2, tr3, tr4; strrcIntNumbers.LoadString(hProgInstance, IDS_INTNUMBERS); strrcPercentage.LoadString(hProgInstance, IDS_PERCENTAGE); strrcAngle.LoadString(hProgInstance, IDS_ANGLE); percentage.x = GetDlgItemInt(IDD_STRETCHSKEWEDITHSTRETCH, &tr1, FALSE); percentage.y = GetDlgItemInt(IDD_STRETCHSKEWEDITVSTRETCH, &tr2, FALSE); angle.x = GetDlgItemInt(IDD_STRETCHSKEWEDITHSKEW, &tr3, TRUE); angle.y = GetDlgItemInt(IDD_STRETCHSKEWEDITVSKEW, &tr4, TRUE); if (!(tr1 && tr2 && tr3 && tr4)) MessageBox(strrcIntNumbers, NULL, MB_ICONEXCLAMATION); else if (percentage.x < 1 || percentage.x > 500 || percentage.y < 1 || percentage.y > 500) MessageBox(strrcPercentage, NULL, MB_ICONEXCLAMATION); else if (angle.x < -89 || angle.x > 89 || angle.y < -89 || angle.y > 89) MessageBox(strrcAngle, NULL, MB_ICONEXCLAMATION); else EndDialog(1); return 0; } LRESULT CStretchSkewDialog::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { EndDialog(0); return 0; }