https://git.reactos.org/?p=reactos.git;a=commitdiff;h=361a2ce4f70379a512e23…
commit 361a2ce4f70379a512e237cd37c6e66c077140a9
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Wed Jan 5 16:26:05 2022 +0900
Commit: GitHub <noreply(a)github.com>
CommitDate: Wed Jan 5 16:26:05 2022 +0900
[MSPAINT] Implement the text tool (#4237)
- Add CFontsDialog and IDD_FONTS.
- Rewrite CTextEditWindow.
- Implement TOOL_TEXT tool.
- Add the font-related settings.
CORE-17949
---
base/applications/mspaint/dialogs.cpp | 330 +++++++++++++++
base/applications/mspaint/dialogs.h | 34 ++
base/applications/mspaint/drawing.cpp | 48 ++-
base/applications/mspaint/globalvar.h | 5 +-
base/applications/mspaint/icons/fontstoolbar.bmp | Bin 0 -> 3126 bytes
base/applications/mspaint/imgarea.cpp | 35 +-
base/applications/mspaint/imgarea.h | 4 +
base/applications/mspaint/lang/bg-BG.rc | 17 +
base/applications/mspaint/lang/cs-CZ.rc | 17 +
base/applications/mspaint/lang/de-DE.rc | 17 +
base/applications/mspaint/lang/en-GB.rc | 17 +
base/applications/mspaint/lang/en-US.rc | 17 +
base/applications/mspaint/lang/es-ES.rc | 17 +
base/applications/mspaint/lang/et-EE.rc | 17 +
base/applications/mspaint/lang/eu-ES.rc | 17 +
base/applications/mspaint/lang/fr-FR.rc | 17 +
base/applications/mspaint/lang/he-IL.rc | 17 +
base/applications/mspaint/lang/hu-HU.rc | 17 +
base/applications/mspaint/lang/id-ID.rc | 17 +
base/applications/mspaint/lang/it-IT.rc | 17 +
base/applications/mspaint/lang/ja-JP.rc | 17 +
base/applications/mspaint/lang/nl-NL.rc | 17 +
base/applications/mspaint/lang/no-NO.rc | 17 +
base/applications/mspaint/lang/pl-PL.rc | 17 +
base/applications/mspaint/lang/pt-BR.rc | 17 +
base/applications/mspaint/lang/pt-PT.rc | 17 +
base/applications/mspaint/lang/ro-RO.rc | 17 +
base/applications/mspaint/lang/ru-RU.rc | 17 +
base/applications/mspaint/lang/sk-SK.rc | 17 +
base/applications/mspaint/lang/sq-AL.rc | 17 +
base/applications/mspaint/lang/sv-SE.rc | 17 +
base/applications/mspaint/lang/tr-TR.rc | 17 +
base/applications/mspaint/lang/uk-UA.rc | 17 +
base/applications/mspaint/lang/vi-VN.rc | 17 +
base/applications/mspaint/lang/zh-CN.rc | 17 +
base/applications/mspaint/lang/zh-HK.rc | 17 +
base/applications/mspaint/lang/zh-TW.rc | 17 +
base/applications/mspaint/main.cpp | 14 +-
base/applications/mspaint/mouse.cpp | 81 +++-
base/applications/mspaint/palettemodel.cpp | 2 +
base/applications/mspaint/precomp.h | 1 +
base/applications/mspaint/registry.cpp | 74 +++-
base/applications/mspaint/registry.h | 10 +
base/applications/mspaint/resource.h | 16 +
base/applications/mspaint/rsrc.rc | 1 +
base/applications/mspaint/selectionmodel.cpp | 5 +
base/applications/mspaint/selectionmodel.h | 1 +
base/applications/mspaint/textedit.cpp | 498 +++++++++++++++++++++--
base/applications/mspaint/textedit.h | 63 ++-
base/applications/mspaint/toolsmodel.cpp | 17 +
base/applications/mspaint/toolsmodel.h | 8 +-
base/applications/mspaint/winproc.cpp | 24 +-
52 files changed, 1684 insertions(+), 97 deletions(-)
diff --git a/base/applications/mspaint/dialogs.cpp
b/base/applications/mspaint/dialogs.cpp
index 09a3e5cebfb..a21fb45db69 100644
--- a/base/applications/mspaint/dialogs.cpp
+++ b/base/applications/mspaint/dialogs.cpp
@@ -19,6 +19,7 @@
CMirrorRotateDialog mirrorRotateDialog;
CAttributesDialog attributesDialog;
CStretchSkewDialog stretchSkewDialog;
+CFontsDialog fontsDialog;
/* FUNCTIONS ********************************************************/
@@ -258,3 +259,332 @@ LRESULT CStretchSkewDialog::OnCancel(WORD wNotifyCode, WORD wID,
HWND hWndCtl, B
EndDialog(0);
return 0;
}
+
+static INT CALLBACK
+EnumFontFamProc(ENUMLOGFONT *lpelf, NEWTEXTMETRIC *lpntm, INT FontType, LPARAM lParam)
+{
+ CSimpleArray<CString>& arrFontNames =
*reinterpret_cast<CSimpleArray<CString>*>(lParam);
+ LPTSTR name = lpelf->elfLogFont.lfFaceName;
+ if (name[0] == TEXT('@')) // Vertical fonts
+ return TRUE;
+
+ for (INT i = 0; i < arrFontNames.GetSize(); ++i)
+ {
+ if (arrFontNames[i] == name) // Already exists
+ return TRUE;
+ }
+
+ arrFontNames.Add(name);
+ return TRUE;
+}
+
+// TODO: AutoComplete font names
+// TODO: Vertical text
+CFontsDialog::CFontsDialog()
+{
+}
+
+void CFontsDialog::InitFontNames()
+{
+ // List the fonts
+ CSimpleArray<CString> arrFontNames;
+ HDC hDC = CreateCompatibleDC(NULL);
+ if (hDC)
+ {
+ EnumFontFamilies(hDC, NULL, (FONTENUMPROC)EnumFontFamProc,
+ reinterpret_cast<LPARAM>(&arrFontNames));
+ DeleteDC(hDC);
+ }
+
+ // Actually add them to the combobox
+ HWND hwndNames = GetDlgItem(IDD_FONTSNAMES);
+ SendMessage(hwndNames, CB_RESETCONTENT, 0, 0);
+ for (INT i = 0; i < arrFontNames.GetSize(); ++i)
+ {
+ ComboBox_AddString(hwndNames, arrFontNames[i]);
+ }
+
+ ::SetWindowText(hwndNames, registrySettings.strFontName);
+}
+
+void CFontsDialog::InitFontSizes()
+{
+ static const INT s_sizes[] =
+ {
+ 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72
+ };
+
+ HWND hwndSizes = GetDlgItem(IDD_FONTSSIZES);
+ ComboBox_ResetContent(hwndSizes);
+
+ TCHAR szText[16];
+ for (UINT i = 0; i < _countof(s_sizes); ++i)
+ {
+ wsprintf(szText, TEXT("%d"), s_sizes[i]);
+ INT iItem = ComboBox_AddString(hwndSizes, szText);
+ if (s_sizes[i] == (INT)registrySettings.PointSize)
+ ComboBox_SetCurSel(hwndSizes, iItem);
+ }
+
+ if (ComboBox_GetCurSel(hwndSizes) == CB_ERR)
+ {
+ wsprintf(szText, TEXT("%d"), (INT)registrySettings.PointSize);
+ ::SetWindowText(hwndSizes, szText);
+ }
+}
+
+void CFontsDialog::InitToolbar()
+{
+ HWND hwndToolbar = GetDlgItem(IDD_FONTSTOOLBAR);
+ SendMessage(hwndToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
+ SendMessage(hwndToolbar, TB_SETBITMAPSIZE, 0, MAKELPARAM(16, 16));
+ SendMessage(hwndToolbar, TB_SETBUTTONWIDTH, 0, MAKELPARAM(20, 20));
+
+ TBADDBITMAP AddBitmap;
+ AddBitmap.hInst = hProgInstance;
+ AddBitmap.nID = IDB_FONTSTOOLBAR;
+ SendMessage(hwndToolbar, TB_ADDBITMAP, 4, (LPARAM)&AddBitmap);
+
+ HIMAGELIST himl = ImageList_LoadImage(hProgInstance,
MAKEINTRESOURCE(IDB_FONTSTOOLBAR),
+ 16, 8, RGB(255, 0, 255), IMAGE_BITMAP,
+ LR_CREATEDIBSECTION);
+ SendMessage(hwndToolbar, TB_SETIMAGELIST, 0, (LPARAM)himl);
+
+ TBBUTTON buttons[] =
+ {
+ { 0, IDM_BOLD, TBSTATE_ENABLED, TBSTYLE_CHECK },
+ { 1, IDM_ITALIC, TBSTATE_ENABLED, TBSTYLE_CHECK },
+ { 2, IDM_UNDERLINE, TBSTATE_ENABLED, TBSTYLE_CHECK },
+ { 3, IDM_VERTICAL, 0, TBSTYLE_CHECK }, // TODO:
+ };
+ SendMessage(hwndToolbar, TB_ADDBUTTONS, _countof(buttons), (LPARAM)&buttons);
+
+ SendMessage(hwndToolbar, TB_CHECKBUTTON, IDM_BOLD, registrySettings.Bold);
+ SendMessage(hwndToolbar, TB_CHECKBUTTON, IDM_ITALIC, registrySettings.Italic);
+ SendMessage(hwndToolbar, TB_CHECKBUTTON, IDM_UNDERLINE, registrySettings.Underline);
+}
+
+LRESULT CFontsDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ // TODO: Tooltips
+ InitFontNames();
+ InitFontSizes();
+ InitToolbar();
+
+ if (registrySettings.FontsPositionX != 0 || registrySettings.FontsPositionY != 0)
+ {
+ SetWindowPos(NULL,
+ registrySettings.FontsPositionX, registrySettings.FontsPositionY,
+ 0, 0,
+ SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOZORDER);
+ SendMessage(DM_REPOSITION, 0, 0);
+ }
+
+ if (!registrySettings.ShowTextTool)
+ ShowWindow(SW_HIDE);
+
+ return TRUE;
+}
+
+LRESULT CFontsDialog::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ ShowWindow(SW_HIDE); // Just hide. Recycle for optimization
+ return 0;
+}
+
+void CFontsDialog::OnFontName(UINT codeNotify)
+{
+ HWND hwndNames = GetDlgItem(IDD_FONTSNAMES);
+ INT iItem = CB_ERR;
+ UINT cch;
+ TCHAR szText[LF_FACESIZE];
+
+ switch (codeNotify)
+ {
+ case CBN_SELCHANGE:
+ iItem = ComboBox_GetCurSel(hwndNames);
+ cch = ComboBox_GetLBTextLen(hwndNames, iItem);
+ if (iItem != CB_ERR && 0 < cch && cch <
_countof(szText))
+ {
+ ComboBox_GetLBText(hwndNames, iItem, szText);
+ }
+ break;
+
+ case CBN_EDITCHANGE:
+ GetDlgItemText(IDD_FONTSNAMES, szText, _countof(szText));
+ iItem = ComboBox_FindStringExact(hwndNames, -1, szText);
+ break;
+ }
+
+ if (iItem != CB_ERR && registrySettings.strFontName.CompareNoCase(szText) !=
0)
+ {
+ registrySettings.strFontName = szText;
+ toolsModel.NotifyToolChanged();
+ }
+}
+
+void CFontsDialog::OnFontSize(UINT codeNotify)
+{
+ HWND hwndSizes = GetDlgItem(IDD_FONTSSIZES);
+ WCHAR szText[8];
+ INT iItem, PointSize = 0;
+ UINT cch;
+
+ switch (codeNotify)
+ {
+ case CBN_SELCHANGE:
+ iItem = ComboBox_GetCurSel(hwndSizes);
+ cch = ComboBox_GetLBTextLen(hwndSizes, iItem);
+ if (iItem != CB_ERR && 0 < cch && cch <
_countof(szText))
+ {
+ ComboBox_GetLBText(hwndSizes, iItem, szText);
+ PointSize = _ttoi(szText);
+ }
+ break;
+
+ case CBN_EDITCHANGE:
+ ::GetWindowText(hwndSizes, szText, _countof(szText));
+ PointSize = _ttoi(szText);
+ break;
+ }
+
+ if (PointSize > 0)
+ {
+ registrySettings.PointSize = PointSize;
+ toolsModel.NotifyToolChanged();
+ }
+}
+
+LRESULT CFontsDialog::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ UINT id = LOWORD(wParam);
+ UINT codeNotify = HIWORD(wParam);
+ HWND hwndToolbar = GetDlgItem(IDD_FONTSTOOLBAR);
+ BOOL bChecked = ::SendMessage(hwndToolbar, TB_ISBUTTONCHECKED, id, 0);
+
+ switch (id)
+ {
+ case IDCANCEL:
+ ShowWindow(SW_HIDE);
+ registrySettings.ShowTextTool = FALSE;
+ break;
+
+ case IDD_FONTSNAMES:
+ OnFontName(codeNotify);
+ break;
+
+ case IDD_FONTSSIZES:
+ OnFontSize(codeNotify);
+ break;
+
+ case IDM_BOLD:
+ registrySettings.Bold = bChecked;
+ toolsModel.NotifyToolChanged();
+ break;
+
+ case IDM_ITALIC:
+ registrySettings.Italic = bChecked;
+ toolsModel.NotifyToolChanged();
+ break;
+
+ case IDM_UNDERLINE:
+ registrySettings.Underline = bChecked;
+ toolsModel.NotifyToolChanged();
+ break;
+
+ case IDM_VERTICAL:
+ // TODO:
+ break;
+ }
+ return 0;
+}
+
+LRESULT CFontsDialog::OnNotify(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ NMHDR *pnmhdr = reinterpret_cast<NMHDR *>(lParam);
+ if (pnmhdr->code == TTN_NEEDTEXT)
+ {
+ LPTOOLTIPTEXT pToolTip = reinterpret_cast<LPTOOLTIPTEXT>(lParam);
+ pToolTip->hinst = hProgInstance;
+ switch (pnmhdr->idFrom)
+ {
+ case IDM_BOLD: pToolTip->lpszText = MAKEINTRESOURCE(IDS_BOLD);
break;
+ case IDM_ITALIC: pToolTip->lpszText = MAKEINTRESOURCE(IDS_ITALIC);
break;
+ case IDM_UNDERLINE: pToolTip->lpszText = MAKEINTRESOURCE(IDS_UNDERLINE);
break;
+ case IDM_VERTICAL: pToolTip->lpszText = MAKEINTRESOURCE(IDS_VERTICAL);
break;
+
+ default:
+ break;
+ }
+ }
+ return 0;
+}
+
+LRESULT CFontsDialog::OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ RECT rc;
+ GetWindowRect(&rc);
+ registrySettings.FontsPositionX = rc.left;
+ registrySettings.FontsPositionY = rc.top;
+ return 0;
+}
+
+LRESULT CFontsDialog::OnToolsModelToolChanged(UINT nMsg, WPARAM wParam, LPARAM lParam,
BOOL& bHandled)
+{
+ if (wParam != TOOL_TEXT)
+ ShowWindow(SW_HIDE);
+
+ return 0;
+}
+
+LRESULT CFontsDialog::OnMeasureItem(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ if (wParam == IDD_FONTSNAMES)
+ {
+ LPMEASUREITEMSTRUCT pMeasureItem =
reinterpret_cast<LPMEASUREITEMSTRUCT>(lParam);
+ RECT rc;
+ ::GetClientRect(GetDlgItem(IDD_FONTSNAMES), &rc);
+ pMeasureItem->itemWidth = rc.right - rc.left;
+ pMeasureItem->itemHeight = GetSystemMetrics(SM_CYVSCROLL);
+ return TRUE;
+ }
+ return 0;
+}
+
+LRESULT CFontsDialog::OnDrawItem(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ // TODO: Owner-draw the font types
+ if (wParam == IDD_FONTSNAMES)
+ {
+ LPDRAWITEMSTRUCT pDrawItem = reinterpret_cast<LPDRAWITEMSTRUCT>(lParam);
+ if (pDrawItem->itemID == (UINT)-1)
+ return TRUE;
+
+ SetBkMode(pDrawItem->hDC, TRANSPARENT);
+
+ HWND hwndItem = pDrawItem->hwndItem;
+ RECT rcItem = pDrawItem->rcItem;
+ if (pDrawItem->itemState & ODS_SELECTED)
+ {
+ FillRect(pDrawItem->hDC, &rcItem, GetSysColorBrush(COLOR_HIGHLIGHT));
+ SetTextColor(pDrawItem->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
+ }
+ else
+ {
+ FillRect(pDrawItem->hDC, &rcItem, GetSysColorBrush(COLOR_WINDOW));
+ SetTextColor(pDrawItem->hDC, GetSysColor(COLOR_WINDOWTEXT));
+ }
+
+ TCHAR szText[LF_FACESIZE];
+ szText[0] = 0;
+ ComboBox_GetLBText(hwndItem, pDrawItem->itemID, szText);
+ rcItem.left += 24;
+ DrawText(pDrawItem->hDC, szText, -1, &rcItem, DT_LEFT | DT_VCENTER |
DT_SINGLELINE);
+
+ if (pDrawItem->itemState & ODS_FOCUS)
+ ::DrawFocusRect(pDrawItem->hDC, &pDrawItem->rcItem);
+
+ return TRUE;
+ }
+ return 0;
+}
diff --git a/base/applications/mspaint/dialogs.h b/base/applications/mspaint/dialogs.h
index 8d7aefe444d..0df4f48e409 100644
--- a/base/applications/mspaint/dialogs.h
+++ b/base/applications/mspaint/dialogs.h
@@ -86,3 +86,37 @@ public:
POINT percentage;
POINT angle;
};
+
+class CFontsDialog : public CDialogImpl<CFontsDialog>
+{
+public:
+ enum { IDD = IDD_FONTS };
+
+ CFontsDialog();
+ void InitFontNames();
+ void InitFontSizes();
+ void InitToolbar();
+
+ BEGIN_MSG_MAP(CFontsDialog)
+ MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
+ MESSAGE_HANDLER(WM_CLOSE, OnClose)
+ MESSAGE_HANDLER(WM_COMMAND, OnCommand)
+ MESSAGE_HANDLER(WM_MOVE, OnMove)
+ MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
+ MESSAGE_HANDLER(WM_TOOLSMODELTOOLCHANGED, OnToolsModelToolChanged)
+ MESSAGE_HANDLER(WM_MEASUREITEM, OnMeasureItem)
+ MESSAGE_HANDLER(WM_DRAWITEM, OnDrawItem)
+ END_MSG_MAP()
+
+protected:
+ LRESULT OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnNotify(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnToolsModelToolChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled);
+ LRESULT OnMeasureItem(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnDrawItem(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ void OnFontSize(UINT codeNotify);
+ void OnFontName(UINT codeNotify);
+};
diff --git a/base/applications/mspaint/drawing.cpp
b/base/applications/mspaint/drawing.cpp
index e118184aecb..d7453ff198a 100644
--- a/base/applications/mspaint/drawing.cpp
+++ b/base/applications/mspaint/drawing.cpp
@@ -229,7 +229,7 @@ RectSel(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2)
{
HBRUSH oldBrush;
LOGBRUSH logbrush;
- HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_DOT, 1, 0x00000000));
+ HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_DOT, 1,
GetSysColor(COLOR_HIGHLIGHT)));
UINT oldRop = GetROP2(hdc);
SetROP2(hdc, R2_NOTXORPEN);
@@ -276,20 +276,34 @@ SelectionFrame(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, DWORD
system_selecti
void
Text(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LPCTSTR
lpchText, HFONT font, LONG style)
{
- HFONT oldFont;
- RECT rect = {x1, y1, x2, y2};
- COLORREF oldColor;
- COLORREF oldBkColor;
- int oldBkMode;
- oldFont = (HFONT) SelectObject(hdc, font);
- oldColor = SetTextColor(hdc, fg);
- oldBkColor = SetBkColor(hdc, bg);
- oldBkMode = SetBkMode(hdc, TRANSPARENT);
- if (style == 0)
- Rect(hdc, x1, y1, x2, y2, bg, bg, 1, 2);
- DrawText(hdc, lpchText, -1, &rect, DT_EDITCONTROL);
- SelectObject(hdc, oldFont);
- SetTextColor(hdc, oldColor);
- SetBkColor(hdc, oldBkColor);
- SetBkMode(hdc, oldBkMode);
+ INT iSaveDC = SaveDC(hdc); // We will modify the clipping region. Save now.
+
+ RECT rc;
+ SetRect(&rc, x1, y1, x2, y2);
+
+ if (style == 0) // Transparent
+ {
+ SetBkMode(hdc, TRANSPARENT);
+ GetBkColor(hdc);
+ }
+ else // Opaque
+ {
+ SetBkMode(hdc, OPAQUE);
+ SetBkColor(hdc, bg);
+
+ HBRUSH hbr = CreateSolidBrush(bg);
+ FillRect(hdc, &rc, hbr); // Fill the background
+ DeleteObject(hbr);
+ }
+
+ IntersectClipRect(hdc, rc.left, rc.top, rc.right, rc.bottom);
+
+ HGDIOBJ hFontOld = SelectObject(hdc, font);
+ SetTextColor(hdc, fg);
+ const UINT uFormat = DT_LEFT | DT_TOP | DT_EDITCONTROL | DT_NOPREFIX | DT_NOCLIP |
+ DT_EXPANDTABS | DT_WORDBREAK;
+ DrawText(hdc, lpchText, -1, &rc, uFormat);
+ SelectObject(hdc, hFontOld);
+
+ RestoreDC(hdc, iSaveDC); // Restore
}
diff --git a/base/applications/mspaint/globalvar.h
b/base/applications/mspaint/globalvar.h
index a639f620be1..071baecb4dc 100644
--- a/base/applications/mspaint/globalvar.h
+++ b/base/applications/mspaint/globalvar.h
@@ -99,10 +99,9 @@ extern CTextEditWindow textEditWindow;
class CMirrorRotateDialog;
class CAttributesDialog;
class CStretchSkewDialog;
+class CFontsDialog;
extern CMirrorRotateDialog mirrorRotateDialog;
extern CAttributesDialog attributesDialog;
extern CStretchSkewDialog stretchSkewDialog;
-
-/* VARIABLES declared in mouse.cpp **********************************/
-
+extern CFontsDialog fontsDialog;
diff --git a/base/applications/mspaint/icons/fontstoolbar.bmp
b/base/applications/mspaint/icons/fontstoolbar.bmp
new file mode 100644
index 00000000000..340a1896c77
Binary files /dev/null and b/base/applications/mspaint/icons/fontstoolbar.bmp differ
diff --git a/base/applications/mspaint/imgarea.cpp
b/base/applications/mspaint/imgarea.cpp
index 69a6de62984..6c117591dc6 100644
--- a/base/applications/mspaint/imgarea.cpp
+++ b/base/applications/mspaint/imgarea.cpp
@@ -12,8 +12,6 @@
#include "precomp.h"
-#include "dialogs.h"
-
/* FUNCTIONS ********************************************************/
void
@@ -102,10 +100,28 @@ LRESULT CImgAreaWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM
lParam, BOOL& bH
return 0;
}
+LRESULT CImgAreaWindow::OnEraseBkGnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ HDC hdc = (HDC)wParam;
+
+ if (toolsModel.GetActiveTool() == TOOL_TEXT &&
!toolsModel.IsBackgroundTransparent() &&
+ textEditWindow.IsWindowVisible())
+ {
+ // Do clipping
+ HWND hChild = textEditWindow;
+ RECT rcChild;
+ ::GetWindowRect(hChild, &rcChild);
+ ::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&rcChild, 2);
+ ExcludeClipRect(hdc, rcChild.left, rcChild.top, rcChild.right, rcChild.bottom);
+ }
+
+ return DefWindowProc(nMsg, wParam, lParam);
+}
+
LRESULT CImgAreaWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
{
- DefWindowProc(WM_PAINT, wParam, lParam);
- HDC hdc = GetDC();
+ PAINTSTRUCT ps;
+ HDC hdc = BeginPaint(&ps);
int imgXRes = imageModel.GetWidth();
int imgYRes = imageModel.GetHeight();
StretchBlt(hdc, 0, 0, Zoomed(imgXRes), Zoomed(imgYRes), imageModel.GetDC(), 0, 0,
imgXRes,
@@ -126,9 +142,11 @@ LRESULT CImgAreaWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM
lParam, BOOL& b
}
DeleteObject(SelectObject(hdc, oldPen));
}
- ReleaseDC(hdc);
+ EndPaint(&ps);
selectionWindow.Invalidate(FALSE);
miniature.Invalidate(FALSE);
+ if (textEditWindow.IsWindowVisible())
+ textEditWindow.Invalidate(FALSE);
return 0;
}
@@ -382,3 +400,10 @@ LRESULT CImgAreaWindow::OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM
lParam, BO
{
return ::SendMessage(GetParent(), nMsg, wParam, lParam);
}
+
+LRESULT CImgAreaWindow::OnCtlColorEdit(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ HDC hdc = (HDC)wParam;
+ SetBkMode(hdc, TRANSPARENT);
+ return (LRESULT)GetStockObject(NULL_BRUSH);
+}
diff --git a/base/applications/mspaint/imgarea.h b/base/applications/mspaint/imgarea.h
index 4c1a41ec27c..a898f1e893b 100644
--- a/base/applications/mspaint/imgarea.h
+++ b/base/applications/mspaint/imgarea.h
@@ -21,6 +21,7 @@ public:
BEGIN_MSG_MAP(CImgAreaWindow)
MESSAGE_HANDLER(WM_SIZE, OnSize)
+ MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkGnd)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
@@ -36,12 +37,14 @@ public:
MESSAGE_HANDLER(WM_IMAGEMODELIMAGECHANGED, OnImageModelImageChanged)
MESSAGE_HANDLER(WM_CAPTURECHANGED, OnCaptureChanged)
MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown)
+ MESSAGE_HANDLER(WM_CTLCOLOREDIT, OnCtlColorEdit)
END_MSG_MAP()
BOOL drawing;
private:
LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnEraseBkGnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
@@ -57,6 +60,7 @@ private:
LRESULT OnImageModelImageChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled);
LRESULT OnCaptureChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled);
LRESULT OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnCtlColorEdit(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
void drawZoomFrame(int mouseX, int mouseY);
void cancelDrawing();
diff --git a/base/applications/mspaint/lang/bg-BG.rc
b/base/applications/mspaint/lang/bg-BG.rc
index 92c323ac436..c33087fcd48 100644
--- a/base/applications/mspaint/lang/bg-BG.rc
+++ b/base/applications/mspaint/lang/bg-BG.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-bg-BG.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Файл"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Отказ", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Рисуване"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "The angle must be between -89 and 89."
IDS_LOADERRORTEXT "The file %s could not be loaded."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/cs-CZ.rc
b/base/applications/mspaint/lang/cs-CZ.rc
index edec2e6e387..7de50c92181 100644
--- a/base/applications/mspaint/lang/cs-CZ.rc
+++ b/base/applications/mspaint/lang/cs-CZ.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-cs-CZ.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Soubor"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Storno", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Malování"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "Úhel musí být -89 a 89."
IDS_LOADERRORTEXT "Soubor %s nemohl být načten."
IDS_ENLARGEPROMPTTEXT "Obrázek ve schránce je větší než bitmapa.\nChcete bitmapu
zvětšit?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/de-DE.rc
b/base/applications/mspaint/lang/de-DE.rc
index e04703b521f..04af89c3585 100644
--- a/base/applications/mspaint/lang/de-DE.rc
+++ b/base/applications/mspaint/lang/de-DE.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-de-DE.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Datei"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Abbrechen", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "Der Winkel muss zwischen -89 und 89 liegen."
IDS_LOADERRORTEXT "Die Datei %s konnte nicht geladen werden."
IDS_ENLARGEPROMPTTEXT "Das Bild in der Zwischenablage ist größer als die
Bitmap.\nSoll die Bitmap vergrößert werden?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/en-GB.rc
b/base/applications/mspaint/lang/en-GB.rc
index dfd26d3fa3e..c350c34e23c 100644
--- a/base/applications/mspaint/lang/en-GB.rc
+++ b/base/applications/mspaint/lang/en-GB.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-en-GB.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&File"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Cancel", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "The angle must be between -89 and 89."
IDS_LOADERRORTEXT "The file %s could not be loaded."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/en-US.rc
b/base/applications/mspaint/lang/en-US.rc
index 28e99c10520..afe602a2ac6 100644
--- a/base/applications/mspaint/lang/en-US.rc
+++ b/base/applications/mspaint/lang/en-US.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&File"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Cancel", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "The angle must be between -89 and 89."
IDS_LOADERRORTEXT "The file %s could not be loaded."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/es-ES.rc
b/base/applications/mspaint/lang/es-ES.rc
index 1c625d8720e..106e0b616df 100644
--- a/base/applications/mspaint/lang/es-ES.rc
+++ b/base/applications/mspaint/lang/es-ES.rc
@@ -10,6 +10,8 @@
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-es-ES.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Archivo"
@@ -193,6 +195,17 @@ BEGIN
PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Tipografías"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -227,4 +240,8 @@ BEGIN
IDS_ANGLE "El ángulo debe de estar entre -89 y 89."
IDS_LOADERRORTEXT "No se pudo cargar el archivo %s."
IDS_ENLARGEPROMPTTEXT "La imagen en el Portapapeles es más grande que el
lienzo.\n¿Quieres adaptar las dimensiones del lienzo a su nuevo tamaño?"
+ IDS_BOLD "Negrita"
+ IDS_ITALIC "Cursiva"
+ IDS_UNDERLINE "Subrayado"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/et-EE.rc
b/base/applications/mspaint/lang/et-EE.rc
index 8c9a13f8a99..2268fc9edc6 100644
--- a/base/applications/mspaint/lang/et-EE.rc
+++ b/base/applications/mspaint/lang/et-EE.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_ESTONIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-et-EE.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Fail"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Tühista", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "Nurk peab -89 ja 89 vahemikus olema."
IDS_LOADERRORTEXT "Faili %s ei suudetud laadida."
IDS_ENLARGEPROMPTTEXT "Pilt lõikelaual on suurem kui digitaalkujutis.\nKas
soovid digitaalkujutist suurendada?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/eu-ES.rc
b/base/applications/mspaint/lang/eu-ES.rc
index 1229441af00..aeaabe181f4 100644
--- a/base/applications/mspaint/lang/eu-ES.rc
+++ b/base/applications/mspaint/lang/eu-ES.rc
@@ -1,5 +1,7 @@
LANGUAGE LANG_BASQUE, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-eu-ES.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Fitxategia"
@@ -183,6 +185,17 @@ BEGIN
PUSHBUTTON "Utzi", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -217,4 +230,8 @@ BEGIN
IDS_ANGLE "Angelu -89 eta 89 tartean izan behar da."
IDS_LOADERRORTEXT "%s artxiboaren karga ez ahal da."
IDS_ENLARGEPROMPTTEXT "Klipboard dagoen argazkia bitmap-a baino handiagoa
da.\nNahi duzu bitmap-a luzatu?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/fr-FR.rc
b/base/applications/mspaint/lang/fr-FR.rc
index 2be2fa59f89..a714bbd1a1a 100644
--- a/base/applications/mspaint/lang/fr-FR.rc
+++ b/base/applications/mspaint/lang/fr-FR.rc
@@ -1,5 +1,7 @@
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-fr-FR.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Fichier"
@@ -183,6 +185,17 @@ BEGIN
PUSHBUTTON "Annuler", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -217,4 +230,8 @@ BEGIN
IDS_ANGLE "L'angle doit être entre -89 et 89."
IDS_LOADERRORTEXT "Le fichier %s n'a pas pu être chargé."
IDS_ENLARGEPROMPTTEXT "L'image dans le presse-papier est plus grande que le
bitmap.\nSouhaitez-vous agrandir le bitmap ?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/he-IL.rc
b/base/applications/mspaint/lang/he-IL.rc
index 1e16cb261cb..3501d9163c2 100644
--- a/base/applications/mspaint/lang/he-IL.rc
+++ b/base/applications/mspaint/lang/he-IL.rc
@@ -1,5 +1,7 @@
LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-he-IL.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&קובץ"
@@ -186,6 +188,17 @@ BEGIN
PUSHBUTTON "ביטול", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "צייר"
@@ -220,4 +233,8 @@ BEGIN
IDS_ANGLE, "The angle must be between -89 and 89."
IDS_LOADERRORTEXT, ".%s לא היה ניתן לטעון את הקובץ"
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/hu-HU.rc
b/base/applications/mspaint/lang/hu-HU.rc
index dcdce5c35c2..d95cb65e542 100644
--- a/base/applications/mspaint/lang/hu-HU.rc
+++ b/base/applications/mspaint/lang/hu-HU.rc
@@ -1,5 +1,7 @@
LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-hu-HU.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Fájl"
@@ -183,6 +185,17 @@ BEGIN
PUSHBUTTON "Mégse", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -217,4 +230,8 @@ BEGIN
IDS_ANGLE "A szögnek -89 és 89 között kell lennie."
IDS_LOADERRORTEXT "A(z) %s fájlt nem sikerült betölteni."
IDS_ENLARGEPROMPTTEXT "A vágólapon lévő kép nagyobb mint a bitkép.\nSzeretné a
bitkép méretét megnövelni?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/id-ID.rc
b/base/applications/mspaint/lang/id-ID.rc
index 771ff0d1753..289ce396c9c 100644
--- a/base/applications/mspaint/lang/id-ID.rc
+++ b/base/applications/mspaint/lang/id-ID.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-id-ID.bmp"
+
ID_MENU MENU
BEGIN
POPUP "Be&rkas"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Batal", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "Sudut hanya tersedia antara -89 and 89."
IDS_LOADERRORTEXT "Berkas %s tidak bisa dimuat."
IDS_ENLARGEPROMPTTEXT "Gambar pada papan klip lebih besar dari kanvas.\nPerbesar
kanvas?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/it-IT.rc
b/base/applications/mspaint/lang/it-IT.rc
index d69c4253f4a..42605678968 100644
--- a/base/applications/mspaint/lang/it-IT.rc
+++ b/base/applications/mspaint/lang/it-IT.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-it-IT.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&File"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Annulla", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "L'angolo deve essere compreso tra -89 e 89."
IDS_LOADERRORTEXT "l file %s non può essere caricato."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/ja-JP.rc
b/base/applications/mspaint/lang/ja-JP.rc
index bd41821e3fb..02fa6324bd4 100644
--- a/base/applications/mspaint/lang/ja-JP.rc
+++ b/base/applications/mspaint/lang/ja-JP.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-ja-JP.bmp"
+
ID_MENU MENU
BEGIN
POPUP "ファイル(&F)"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "キャンセル", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "フォント"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 9, "MS UI Gothic"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "ペイント"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "角度は -89 から 89 の間でなければなりません。"
IDS_LOADERRORTEXT "ファイル %s は読み込めませんでした。"
IDS_ENLARGEPROMPTTEXT "クリップボードの画像はビットマップよりも大きいです。\nビットマップを拡張しますか?"
+ IDS_BOLD "太字"
+ IDS_ITALIC "斜体"
+ IDS_UNDERLINE "下線"
+ IDS_VERTICAL "縦書き"
END
diff --git a/base/applications/mspaint/lang/nl-NL.rc
b/base/applications/mspaint/lang/nl-NL.rc
index d6ad4ed0279..7b62d03e583 100644
--- a/base/applications/mspaint/lang/nl-NL.rc
+++ b/base/applications/mspaint/lang/nl-NL.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-nl-NL.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Bestand"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Annuleren", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "The angle must be between -89 and 89."
IDS_LOADERRORTEXT "The file %s could not be loaded."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/no-NO.rc
b/base/applications/mspaint/lang/no-NO.rc
index 2864a8c7099..c52129aaad9 100644
--- a/base/applications/mspaint/lang/no-NO.rc
+++ b/base/applications/mspaint/lang/no-NO.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-no-NO.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Fil"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Avbryt", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "The angle must be between -89 and 89."
IDS_LOADERRORTEXT "The file %s could not be loaded."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/pl-PL.rc
b/base/applications/mspaint/lang/pl-PL.rc
index f0ed2ece509..4fd8c7fe837 100644
--- a/base/applications/mspaint/lang/pl-PL.rc
+++ b/base/applications/mspaint/lang/pl-PL.rc
@@ -9,6 +9,8 @@
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-pl-PL.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Plik"
@@ -192,6 +194,17 @@ BEGIN
PUSHBUTTON "Anuluj", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -226,4 +239,8 @@ BEGIN
IDS_ANGLE "Wprowadź liczbę całkowitą z zakresu od -89 do 89."
IDS_LOADERRORTEXT "Plik %s nie może być załadowany."
IDS_ENLARGEPROMPTTEXT "Obraz w schowku jest większy niż bitmapa.\nChciałbyś
powiększyć bitmapę?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/pt-BR.rc
b/base/applications/mspaint/lang/pt-BR.rc
index 1a6dd890930..4c26c69e758 100644
--- a/base/applications/mspaint/lang/pt-BR.rc
+++ b/base/applications/mspaint/lang/pt-BR.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-pt-BR.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Arquivo"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "The angle must be between -89 and 89."
IDS_LOADERRORTEXT "The file %s could not be loaded."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/pt-PT.rc
b/base/applications/mspaint/lang/pt-PT.rc
index 9395d3deaba..c4ddb740e0f 100644
--- a/base/applications/mspaint/lang/pt-PT.rc
+++ b/base/applications/mspaint/lang/pt-PT.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-pt-PT.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Ficheiro"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "The angle must be between -89 and 89."
IDS_LOADERRORTEXT "The file %s could not be loaded."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/ro-RO.rc
b/base/applications/mspaint/lang/ro-RO.rc
index 2bd8bf0efe9..72ad71d22ed 100644
--- a/base/applications/mspaint/lang/ro-RO.rc
+++ b/base/applications/mspaint/lang/ro-RO.rc
@@ -9,6 +9,8 @@
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-ro-RO.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Fișier"
@@ -192,6 +194,17 @@ BEGIN
PUSHBUTTON "A&nulează", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Pictare"
@@ -226,4 +239,8 @@ BEGIN
IDS_ANGLE "Unghiul trebuie să fie între -89 și 89."
IDS_LOADERRORTEXT "Fișierul %s nu poate fi încărcat."
IDS_ENLARGEPROMPTTEXT "Imaginea din memorie este mai mare decât suprafața curent
disponibilă în aplicație.\nDoriți să redimensionați suprafața de desen disponibilă?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/ru-RU.rc
b/base/applications/mspaint/lang/ru-RU.rc
index 10910b337ed..492fd51b45b 100644
--- a/base/applications/mspaint/lang/ru-RU.rc
+++ b/base/applications/mspaint/lang/ru-RU.rc
@@ -1,5 +1,7 @@
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-ru-RU.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Файл"
@@ -183,6 +185,17 @@ BEGIN
PUSHBUTTON "Отмена", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -217,4 +230,8 @@ BEGIN
IDS_ANGLE, "Угол должен быть в интервале от -89 до 89."
IDS_LOADERRORTEXT, "Невозможно загрузить файл %s."
IDS_ENLARGEPROMPTTEXT "Изображения в буфере обмена больше растрового
изображения.\nХотите увеличить точечный рисунок?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/sk-SK.rc
b/base/applications/mspaint/lang/sk-SK.rc
index 4eadabc96c3..f513cf3e7da 100644
--- a/base/applications/mspaint/lang/sk-SK.rc
+++ b/base/applications/mspaint/lang/sk-SK.rc
@@ -9,6 +9,8 @@
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-sk-SK.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Súbor"
@@ -192,6 +194,17 @@ BEGIN
PUSHBUTTON "Zrušiť", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Skicár"
@@ -226,4 +239,8 @@ BEGIN
IDS_ANGLE "The angle must be between -89 and 89."
IDS_LOADERRORTEXT "The file %s could not be loaded."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/sq-AL.rc
b/base/applications/mspaint/lang/sq-AL.rc
index 25446b39bbc..f465274430c 100644
--- a/base/applications/mspaint/lang/sq-AL.rc
+++ b/base/applications/mspaint/lang/sq-AL.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-sq-AL.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&File"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Anulo", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "Këndi duhet të jetë në mes -89 dhe 89."
IDS_LOADERRORTEXT "Dokumenti %s nuk mund te ngarkohej."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/sv-SE.rc
b/base/applications/mspaint/lang/sv-SE.rc
index f883a7d9177..73c295551e7 100644
--- a/base/applications/mspaint/lang/sv-SE.rc
+++ b/base/applications/mspaint/lang/sv-SE.rc
@@ -1,5 +1,7 @@
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-sv-SE.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Arkiv"
@@ -183,6 +185,17 @@ BEGIN
PUSHBUTTON "Avbryt", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -217,4 +230,8 @@ BEGIN
IDS_ANGLE "The angle must be between -89 and 89."
IDS_LOADERRORTEXT "The file %s could not be loaded."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/tr-TR.rc
b/base/applications/mspaint/lang/tr-TR.rc
index 735894e6de8..9fbaf431b3b 100644
--- a/base/applications/mspaint/lang/tr-TR.rc
+++ b/base/applications/mspaint/lang/tr-TR.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-tr-TR.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Dosya"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "İptal", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "Açı -89 ile 89 arasında olmalıdır."
IDS_LOADERRORTEXT "%s dosyası yüklenemedi."
IDS_ENLARGEPROMPTTEXT "Panodaki resim bit eşleminden daha büyük.\nBit eşlemin
genişletilmişini ister misiniz?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/uk-UA.rc
b/base/applications/mspaint/lang/uk-UA.rc
index 08660706f12..2a75841f4ad 100644
--- a/base/applications/mspaint/lang/uk-UA.rc
+++ b/base/applications/mspaint/lang/uk-UA.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-uk-UA.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Файл"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Скасувати", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Paint"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "The angle must be between -89 and 89."
IDS_LOADERRORTEXT "The file %s could not be loaded."
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the
bitmap.\nWould you like the bitmap enlarged?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/vi-VN.rc
b/base/applications/mspaint/lang/vi-VN.rc
index 9a0d7d03290..db323137650 100644
--- a/base/applications/mspaint/lang/vi-VN.rc
+++ b/base/applications/mspaint/lang/vi-VN.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_VIETNAMESE, SUBLANG_VIETNAMESE_VIETNAM
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-vi-VN.bmp"
+
ID_MENU MENU
BEGIN
POPUP "&Tập tin"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "Hủy", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 8, "MS Shell Dlg"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "Vẽ"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "Giá trị của góc phải ở giữa -89 và 89."
IDS_LOADERRORTEXT "Không thể tải tập tin %s."
IDS_ENLARGEPROMPTTEXT "Hình ảnh bạn định dán lớn hơn hình bitmap này.\n Bạn có
muốn nới rộng hình bitmap?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/zh-CN.rc
b/base/applications/mspaint/lang/zh-CN.rc
index c991b85b5cf..0be67583349 100644
--- a/base/applications/mspaint/lang/zh-CN.rc
+++ b/base/applications/mspaint/lang/zh-CN.rc
@@ -9,6 +9,8 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-zh-CN.bmp"
+
ID_MENU MENU
BEGIN
POPUP "文件(&F)"
@@ -192,6 +194,17 @@ BEGIN
PUSHBUTTON "取消", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 9, "宋体"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "画图"
@@ -226,4 +239,8 @@ BEGIN
IDS_ANGLE "角度必须在 -89 与 89 之间。"
IDS_LOADERRORTEXT "文件 %s 无法加载。"
IDS_ENLARGEPROMPTTEXT "剪贴板中的图像比位图大。\n你想扩大位图吗?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/zh-HK.rc
b/base/applications/mspaint/lang/zh-HK.rc
index 28d939f47fb..ece47e9fff4 100644
--- a/base/applications/mspaint/lang/zh-HK.rc
+++ b/base/applications/mspaint/lang/zh-HK.rc
@@ -8,6 +8,8 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_HONGKONG
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-zh-HK.bmp"
+
ID_MENU MENU
BEGIN
POPUP "檔案(&F)"
@@ -191,6 +193,17 @@ BEGIN
PUSHBUTTON "取消", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 9, "新細明體"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "小畫家"
@@ -225,4 +238,8 @@ BEGIN
IDS_ANGLE "角度必須介乎 -89 至 89 之間。"
IDS_LOADERRORTEXT "無法載入檔案 %s。"
IDS_ENLARGEPROMPTTEXT "剪貼簿中的圖像比點陣圖大。\n你要擴大點陣圖嗎?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/lang/zh-TW.rc
b/base/applications/mspaint/lang/zh-TW.rc
index 8bc305e3159..d6011140db2 100644
--- a/base/applications/mspaint/lang/zh-TW.rc
+++ b/base/applications/mspaint/lang/zh-TW.rc
@@ -9,6 +9,8 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
+//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-zh-TW.bmp"
+
ID_MENU MENU
BEGIN
POPUP "檔案(&F)"
@@ -192,6 +194,17 @@ BEGIN
PUSHBUTTON "取消", IDCANCEL, 170, 24, 48, 14
END
+IDD_FONTS DIALOG 0, 0, 225, 25
+CAPTION "Fonts"
+STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+FONT 9, "新細明體"
+BEGIN
+ COMBOBOX IDD_FONTSNAMES, 5, 5, 110, 200, CBS_HASSTRINGS | CBS_DROPDOWN |
CBS_AUTOHSCROLL | CBS_SORT | CBS_OWNERDRAWFIXED | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDD_FONTSSIZES, 120, 5, 35, 250, CBS_HASSTRINGS | CBS_DROPDOWN | WS_VSCROLL
| WS_TABSTOP
+ CONTROL "", IDD_FONTSTOOLBAR, "ToolbarWindow32", TBSTYLE_TOOLTIPS
| CCS_NODIVIDER | CCS_NOPARENTALIGN | CCS_NOMOVEY, 160, 5, 60, 20
+END
+
STRINGTABLE
BEGIN
IDS_PROGRAMNAME "畫圖"
@@ -226,4 +239,8 @@ BEGIN
IDS_ANGLE "角度必須介於 -89 和 89 之間。"
IDS_LOADERRORTEXT "無法載入檔案 %s。"
IDS_ENLARGEPROMPTTEXT "剪貼簿中的圖像比點陣圖大。\n你想擴大點陣圖嗎?"
+ IDS_BOLD "Bold"
+ IDS_ITALIC "Italic"
+ IDS_UNDERLINE "Underline"
+ IDS_VERTICAL "Vertical"
END
diff --git a/base/applications/mspaint/main.cpp b/base/applications/mspaint/main.cpp
index b7e774a23f4..ab410537a69 100644
--- a/base/applications/mspaint/main.cpp
+++ b/base/applications/mspaint/main.cpp
@@ -171,7 +171,10 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR
lpszArgument
hProgInstance = hThisInstance;
/* initialize common controls library */
- InitCommonControls();
+ INITCOMMONCONTROLSEX iccx;
+ iccx.dwSize = sizeof(iccx);
+ iccx.dwICC = ICC_STANDARD_CLASSES | ICC_USEREX_CLASSES;
+ InitCommonControlsEx(&iccx);
LoadString(hThisInstance, IDS_DEFAULTFILENAME, filepathname,
_countof(filepathname));
CPath pathFileName(filepathname);
@@ -256,6 +259,8 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR
lpszArgument
DoLoadImageFile(mainWindow, __targv[1], TRUE);
}
+ imageModel.ClearHistory();
+
/* initializing the CHOOSECOLOR structure for use with ChooseColor */
ZeroMemory(&choosecolor, sizeof(choosecolor));
choosecolor.lStructSize = sizeof(CHOOSECOLOR);
@@ -327,10 +332,6 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR
lpszArgument
/* by moving the window, the things in WM_SIZE are done */
mainWindow.SetWindowPlacement(&(registrySettings.WindowPlacement));
- /* creating the text editor window for the text tool */
- RECT textEditWindowPos = {300, 0, 300 + 300, 0 + 200};
- textEditWindow.Create(hwnd, textEditWindowPos, NULL, WS_OVERLAPPEDWINDOW);
-
/* Make the window visible on the screen */
ShowWindow (hwnd, nFunsterStil);
@@ -340,6 +341,9 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR
lpszArgument
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage(&messages, NULL, 0, 0))
{
+ if (fontsDialog.IsWindow() && IsDialogMessage(fontsDialog,
&messages))
+ continue;
+
TranslateAccelerator(hwnd, haccel, &messages);
/* Translate virtual-key messages into character messages */
diff --git a/base/applications/mspaint/mouse.cpp b/base/applications/mspaint/mouse.cpp
index e5b50b617ad..16a6500e9d1 100644
--- a/base/applications/mspaint/mouse.cpp
+++ b/base/applications/mspaint/mouse.cpp
@@ -366,12 +366,7 @@ struct TextTool : ToolBase
{
}
- void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick)
- {
- imageModel.CopyPrevious();
- }
-
- void OnMouseMove(BOOL bLeftButton, LONG x, LONG y)
+ void UpdatePoint(LONG x, LONG y)
{
POINT temp;
imageModel.ResetToPrevious();
@@ -381,16 +376,78 @@ struct TextTool : ToolBase
RectSel(m_hdc, start.x, start.y, temp.x, temp.y);
}
+ void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick)
+ {
+ if (!textEditWindow.IsWindow())
+ textEditWindow.Create(imageArea);
+
+ imageModel.CopyPrevious();
+ UpdatePoint(x, y);
+ }
+
+ void OnMouseMove(BOOL bLeftButton, LONG x, LONG y)
+ {
+ UpdatePoint(x, y);
+ }
+
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y)
{
imageModel.ResetToPrevious();
- if (selectionModel.IsSrcRectSizeNonzero())
+
+ BOOL bTextBoxShown = textEditWindow.IsWindowVisible();
+ if (bTextBoxShown && textEditWindow.GetWindowTextLength() > 0)
{
- imageModel.CopyPrevious();
+ CString szText;
+ textEditWindow.GetWindowText(szText);
- placeSelWin();
- selectionWindow.ShowWindow(SW_SHOW);
- ForceRefreshSelectionContents();
+ RECT rc;
+ textEditWindow.InvalidateEditRect();
+ textEditWindow.GetEditRect(&rc);
+
+ INT style = (toolsModel.IsBackgroundTransparent() ? 0 : 1);
+ Text(m_hdc, rc.left, rc.top, rc.right, rc.bottom, m_fg, m_bg, szText,
+ textEditWindow.GetFont(), style);
+ }
+
+ if (registrySettings.ShowTextTool)
+ {
+ if (!fontsDialog.IsWindow())
+ fontsDialog.Create(mainWindow);
+
+ fontsDialog.ShowWindow(SW_SHOWNOACTIVATE);
+ }
+
+ if (!bTextBoxShown || selectionModel.IsSrcRectSizeNonzero())
+ {
+ RECT rc;
+ selectionModel.GetRect(&rc);
+
+ // Enlarge if tool small
+ INT cxMin = CX_MINTEXTEDIT, cyMin = CY_MINTEXTEDIT;
+ if (selectionModel.IsSrcRectSizeNonzero())
+ {
+ if (rc.right - rc.left < cxMin)
+ rc.right = rc.left + cxMin;
+ if (rc.bottom - rc.top < cyMin)
+ rc.bottom = rc.top + cyMin;
+ }
+ else
+ {
+ SetRect(&rc, x, y, x + cxMin, y + cyMin);
+ }
+
+ if (!textEditWindow.IsWindow())
+ textEditWindow.Create(imageArea);
+
+ textEditWindow.SetWindowText(NULL);
+ textEditWindow.ValidateEditRect(&rc);
+ textEditWindow.ShowWindow(SW_SHOWNOACTIVATE);
+ textEditWindow.SetFocus();
+ }
+ else
+ {
+ textEditWindow.ShowWindow(SW_HIDE);
+ textEditWindow.SetWindowText(NULL);
}
}
@@ -398,6 +455,8 @@ struct TextTool : ToolBase
{
imageModel.ResetToPrevious();
selectionModel.ResetPtStack();
+ textEditWindow.SetWindowText(NULL);
+ textEditWindow.ShowWindow(SW_HIDE);
ToolBase::OnCancelDraw();
}
};
diff --git a/base/applications/mspaint/palettemodel.cpp
b/base/applications/mspaint/palettemodel.cpp
index ffbde5706fd..1f5dd899be6 100644
--- a/base/applications/mspaint/palettemodel.cpp
+++ b/base/applications/mspaint/palettemodel.cpp
@@ -97,6 +97,8 @@ void PaletteModel::NotifyColorChanged()
{
paletteWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED);
selectionWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED);
+ if (textEditWindow.IsWindow())
+ textEditWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED);
}
void PaletteModel::NotifyPaletteChanged()
diff --git a/base/applications/mspaint/precomp.h b/base/applications/mspaint/precomp.h
index 5b5bfa8279d..5e2756b2fa1 100644
--- a/base/applications/mspaint/precomp.h
+++ b/base/applications/mspaint/precomp.h
@@ -50,6 +50,7 @@
#include "toolsettings.h"
#include "toolsmodel.h"
#include "winproc.h"
+#include "dialogs.h"
#include "common.h"
#endif /* _MSPAINT_H */
diff --git a/base/applications/mspaint/registry.cpp
b/base/applications/mspaint/registry.cpp
index eb257e0cf3b..fd83a4b3243 100644
--- a/base/applications/mspaint/registry.cpp
+++ b/base/applications/mspaint/registry.cpp
@@ -25,13 +25,18 @@ static DWORD ReadDWORD(CRegKey &key, LPCTSTR lpName, DWORD
&dwValue, BOOL bCheck
return dwPrev;
}
-static void ReadFileHistory(CRegKey &key, LPCTSTR lpName, CString &strFile)
+static void ReadString(CRegKey &key, LPCTSTR lpName, CString &strValue, LPCTSTR
lpDefault = TEXT(""))
{
+ CString strTemp;
ULONG nChars = MAX_PATH;
- LPTSTR szFile = strFile.GetBuffer(nChars);
- if (key.QueryStringValue(lpName, szFile, &nChars) != ERROR_SUCCESS)
- szFile[0] = '\0';
- strFile.ReleaseBuffer();
+ LPTSTR psz = strTemp.GetBuffer(nChars);
+ LONG error = key.QueryStringValue(lpName, psz, &nChars);
+ strTemp.ReleaseBuffer();
+
+ if (error == ERROR_SUCCESS)
+ strValue = strTemp;
+ else
+ strValue = lpDefault;
}
void RegistrySettings::SetWallpaper(LPCTSTR szFileName, RegistrySettings::WallpaperStyle
style)
@@ -61,15 +66,20 @@ void RegistrySettings::LoadPresets()
ThumbXPos = 180;
ThumbYPos = 200;
UnitSetting = 0;
- const WINDOWPLACEMENT DefaultWindowPlacement = {
- sizeof(WINDOWPLACEMENT),
- 0,
- SW_SHOWNORMAL,
- {0, 0},
- {-1, -1},
- {100, 100, 700, 550}
- };
- WindowPlacement = DefaultWindowPlacement;
+ Bold = FALSE;
+ Italic = FALSE;
+ Underline = FALSE;
+ CharSet = DEFAULT_CHARSET;
+ PointSize = 14;
+ FontsPositionX = 0;
+ FontsPositionY = 0;
+ ShowTextTool = TRUE;
+
+ LOGFONT lf;
+ GetObject(GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);
+ strFontName = lf.lfFaceName;
+
+ ZeroMemory(&WindowPlacement, sizeof(WindowPlacement));
}
void RegistrySettings::Load()
@@ -98,10 +108,24 @@ void RegistrySettings::Load()
CRegKey files;
if (files.Open(HKEY_CURRENT_USER,
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\Recent File
List"), KEY_READ) == ERROR_SUCCESS)
{
- ReadFileHistory(files, _T("File1"), strFile1);
- ReadFileHistory(files, _T("File2"), strFile2);
- ReadFileHistory(files, _T("File3"), strFile3);
- ReadFileHistory(files, _T("File4"), strFile4);
+ ReadString(files, _T("File1"), strFile1);
+ ReadString(files, _T("File2"), strFile2);
+ ReadString(files, _T("File3"), strFile3);
+ ReadString(files, _T("File4"), strFile4);
+ }
+
+ CRegKey text;
+ if (text.Open(HKEY_CURRENT_USER,
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\Text"),
KEY_READ) == ERROR_SUCCESS)
+ {
+ ReadDWORD(text, _T("Bold"), Bold, FALSE);
+ ReadDWORD(text, _T("Italic"), Italic, FALSE);
+ ReadDWORD(text, _T("Underline"), Underline, FALSE);
+ ReadDWORD(text, _T("CharSet"), CharSet, FALSE);
+ ReadDWORD(text, _T("PointSize"), PointSize, FALSE);
+ ReadDWORD(text, _T("PositionX"), FontsPositionX, FALSE);
+ ReadDWORD(text, _T("PositionY"), FontsPositionY, FALSE);
+ ReadDWORD(text, _T("ShowTextTool"), ShowTextTool, FALSE);
+ ReadString(text, _T("TypeFaceName"), strFontName, strFontName);
}
// Fix the bitmap size if too large
@@ -144,6 +168,20 @@ void RegistrySettings::Store()
if (!strFile4.IsEmpty())
files.SetStringValue(_T("File4"), strFile4);
}
+
+ CRegKey text;
+ if (text.Create(HKEY_CURRENT_USER,
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\Text")) ==
ERROR_SUCCESS)
+ {
+ text.SetDWORDValue(_T("Bold"), Bold);
+ text.SetDWORDValue(_T("Italic"), Italic);
+ text.SetDWORDValue(_T("Underline"), Underline);
+ text.SetDWORDValue(_T("CharSet"), CharSet);
+ text.SetDWORDValue(_T("PointSize"), PointSize);
+ text.SetDWORDValue(_T("PositionX"), FontsPositionX);
+ text.SetDWORDValue(_T("PositionY"), FontsPositionY);
+ text.SetDWORDValue(_T("ShowTextTool"), ShowTextTool);
+ text.SetStringValue(_T("TypeFaceName"), strFontName);
+ }
}
void RegistrySettings::SetMostRecentFile(LPCTSTR szPathName)
diff --git a/base/applications/mspaint/registry.h b/base/applications/mspaint/registry.h
index 98cd4072374..33c1be4054b 100644
--- a/base/applications/mspaint/registry.h
+++ b/base/applications/mspaint/registry.h
@@ -32,6 +32,16 @@ public:
CString strFile3;
CString strFile4;
+ CString strFontName;
+ DWORD PointSize;
+ DWORD Bold;
+ DWORD Italic;
+ DWORD Underline;
+ DWORD CharSet;
+ DWORD FontsPositionX;
+ DWORD FontsPositionY;
+ DWORD ShowTextTool;
+
enum WallpaperStyle {
TILED,
CENTERED,
diff --git a/base/applications/mspaint/resource.h b/base/applications/mspaint/resource.h
index fd3330a776b..3e563416309 100644
--- a/base/applications/mspaint/resource.h
+++ b/base/applications/mspaint/resource.h
@@ -13,6 +13,7 @@
#define IDI_APPICON 500
#define IDB_TOOLBARICONS 510
+#define IDB_FONTSTOOLBAR 511
#define IDI_TRANSPARENT 526
#define IDI_NONTRANSPARENT 527
@@ -96,6 +97,11 @@
#define IDM_HELPHELPTOPICS 270
#define IDM_HELPINFO 271
+#define IDM_BOLD 280
+#define IDM_ITALIC 281
+#define IDM_UNDERLINE 282
+#define IDM_VERTICAL 283
+
/* the following 16 numbers need to be in order, increasing by 1 */
#define ID_FREESEL 600
#define ID_RECTSEL 601
@@ -165,6 +171,11 @@
#define IDD_STRETCHSKEWEDITVSKEW 757
#define IDD_STRETCHSKEWTEXTVDEG 758
+#define IDD_FONTS 760
+#define IDD_FONTSNAMES 761
+#define IDD_FONTSSIZES 762
+#define IDD_FONTSTOOLBAR 764
+
#define IDS_PROGRAMNAME 900
#define IDS_WINDOWTITLE 901
#define IDS_INFOTITLE 902
@@ -202,3 +213,8 @@
#define IDS_LOADERRORTEXT 933
#define IDS_ENLARGEPROMPTTEXT 934
+
+#define IDS_BOLD 935
+#define IDS_ITALIC 936
+#define IDS_UNDERLINE 937
+#define IDS_VERTICAL 938
diff --git a/base/applications/mspaint/rsrc.rc b/base/applications/mspaint/rsrc.rc
index 8b85446cf71..49a6fb4ce2a 100644
--- a/base/applications/mspaint/rsrc.rc
+++ b/base/applications/mspaint/rsrc.rc
@@ -10,6 +10,7 @@
#include <windef.h>
#include <winuser.h>
+#include <commctrl.h>
#include "resource.h"
diff --git a/base/applications/mspaint/selectionmodel.cpp
b/base/applications/mspaint/selectionmodel.cpp
index aa6b8ef9f49..464b6bdca64 100644
--- a/base/applications/mspaint/selectionmodel.cpp
+++ b/base/applications/mspaint/selectionmodel.cpp
@@ -347,3 +347,8 @@ void SelectionModel::NotifyRefreshNeeded()
{
selectionWindow.SendMessage(WM_SELECTIONMODELREFRESHNEEDED);
}
+
+void SelectionModel::GetRect(LPRECT prc) const
+{
+ *prc = m_rcDest;
+}
diff --git a/base/applications/mspaint/selectionmodel.h
b/base/applications/mspaint/selectionmodel.h
index 9ed0f2faa46..523f22145fb 100644
--- a/base/applications/mspaint/selectionmodel.h
+++ b/base/applications/mspaint/selectionmodel.h
@@ -65,6 +65,7 @@ public:
LONG GetDestRectHeight() const;
LONG GetDestRectLeft() const;
LONG GetDestRectTop() const;
+ void GetRect(LPRECT prc) const;
void DrawTextToolText(HDC hDCImage, COLORREF crFg, COLORREF crBg, BOOL bBgTransparent
= FALSE);
private:
diff --git a/base/applications/mspaint/textedit.cpp
b/base/applications/mspaint/textedit.cpp
index 4c792c28d83..792633a55e7 100644
--- a/base/applications/mspaint/textedit.cpp
+++ b/base/applications/mspaint/textedit.cpp
@@ -10,50 +10,502 @@
#include "precomp.h"
+#define CXY_GRIP 3
+
/* FUNCTIONS ********************************************************/
-LRESULT CTextEditWindow::OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+
+CTextEditWindow::CTextEditWindow() : m_hFont(NULL), m_hFontZoomed(NULL),
m_nAppIsMovingOrSizing(0)
+{
+ SetRectEmpty(&m_rc);
+}
+
+#define X0 rc.left
+#define X1 ((rc.left + rc.right - CXY_GRIP) / 2)
+#define X2 (rc.right - CXY_GRIP)
+#define Y0 rc.top
+#define Y1 ((rc.top + rc.bottom - CXY_GRIP) / 2)
+#define Y2 (rc.bottom - CXY_GRIP)
+#define RECT0 X0, Y0, X0 + CXY_GRIP, Y0 + CXY_GRIP // Upper Left
+#define RECT1 X1, Y0, X1 + CXY_GRIP, Y0 + CXY_GRIP // Top
+#define RECT2 X2, Y0, X2 + CXY_GRIP, Y0 + CXY_GRIP // Upper Right
+#define RECT3 X0, Y1, X0 + CXY_GRIP, Y1 + CXY_GRIP // Left
+#define RECT4 X2, Y1, X2 + CXY_GRIP, Y1 + CXY_GRIP // Right
+#define RECT5 X0, Y2, X0 + CXY_GRIP, Y2 + CXY_GRIP // Lower Left
+#define RECT6 X1, Y2, X1 + CXY_GRIP, Y2 + CXY_GRIP // Bottom
+#define RECT7 X2, Y2, X2 + CXY_GRIP, Y2 + CXY_GRIP // Lower Right
+
+INT CTextEditWindow::DoHitTest(RECT& rc, POINT pt)
{
- /* creating the edit control within the editor window */
- RECT editControlPos = {0, 0, 0 + 100, 0 + 100};
- editControl.Create(_T("EDIT"), m_hWnd, editControlPos, NULL,
- WS_CHILD | WS_VISIBLE | WS_BORDER | WS_HSCROLL | WS_VSCROLL |
ES_MULTILINE | ES_NOHIDESEL | ES_AUTOHSCROLL | ES_AUTOVSCROLL,
- WS_EX_CLIENTEDGE);
+ RECT rcGrip;
+
+ SetRect(&rcGrip, RECT0);
+ if (PtInRect(&rcGrip, pt))
+ return HTTOPLEFT;
+ SetRect(&rcGrip, RECT1);
+ if (PtInRect(&rcGrip, pt))
+ return HTTOP;
+ SetRect(&rcGrip, RECT2);
+ if (PtInRect(&rcGrip, pt))
+ return HTTOPRIGHT;
+
+ SetRect(&rcGrip, RECT3);
+ if (PtInRect(&rcGrip, pt))
+ return HTLEFT;
+ SetRect(&rcGrip, RECT4);
+ if (PtInRect(&rcGrip, pt))
+ return HTRIGHT;
+
+ SetRect(&rcGrip, RECT5);
+ if (PtInRect(&rcGrip, pt))
+ return HTBOTTOMLEFT;
+ SetRect(&rcGrip, RECT6);
+ if (PtInRect(&rcGrip, pt))
+ return HTBOTTOM;
+ SetRect(&rcGrip, RECT7);
+ if (PtInRect(&rcGrip, pt))
+ return HTBOTTOMRIGHT;
+
+ // On border line?
+ RECT rcInner = rc;
+ InflateRect(&rcInner, -3, -3);
+ if (!PtInRect(&rcInner, pt) && PtInRect(&rc, pt))
+ return HTCAPTION;
+
+ return HTCLIENT;
+}
+
+void CTextEditWindow::DrawGrip(HDC hDC, RECT& rc)
+{
+ HGDIOBJ hbrOld = SelectObject(hDC, GetStockObject(NULL_BRUSH));
+ HPEN hPen = CreatePen(PS_DOT, 1, GetSysColor(COLOR_HIGHLIGHT));
+ HGDIOBJ hPenOld = SelectObject(hDC, hPen);
+ InflateRect(&rc, -1, -1);
+ Rectangle(hDC, rc.left, rc.top, rc.right, rc.bottom);
+ InflateRect(&rc, 1, 1);
+ SelectObject(hDC, hPenOld);
+ SelectObject(hDC, hbrOld);
+ DeleteObject(hPen);
+
+ RECT rcGrip;
+ HBRUSH hbrHighlight = GetSysColorBrush(COLOR_HIGHLIGHT);
+
+ SetRect(&rcGrip, RECT0);
+ FillRect(hDC, &rcGrip, hbrHighlight);
+ SetRect(&rcGrip, RECT1);
+ FillRect(hDC, &rcGrip, hbrHighlight);
+ SetRect(&rcGrip, RECT2);
+ FillRect(hDC, &rcGrip, hbrHighlight);
+
+ SetRect(&rcGrip, RECT3);
+ FillRect(hDC, &rcGrip, hbrHighlight);
+ SetRect(&rcGrip, RECT4);
+ FillRect(hDC, &rcGrip, hbrHighlight);
+
+ SetRect(&rcGrip, RECT5);
+ FillRect(hDC, &rcGrip, hbrHighlight);
+ SetRect(&rcGrip, RECT6);
+ FillRect(hDC, &rcGrip, hbrHighlight);
+ SetRect(&rcGrip, RECT7);
+ FillRect(hDC, &rcGrip, hbrHighlight);
+}
+
+void CTextEditWindow::FixEditPos(LPCTSTR pszOldText)
+{
+ CString szText;
+ GetWindowText(szText);
+
+ RECT rcParent;
+ ::GetWindowRect(m_hwndParent, &rcParent);
+
+ RECT rc, rcWnd, rcText;
+ GetWindowRect(&rcWnd);
+ rcText = rcWnd;
+
+ HDC hDC = GetDC();
+ if (hDC)
+ {
+ SelectObject(hDC, m_hFontZoomed);
+ TEXTMETRIC tm;
+ GetTextMetrics(hDC, &tm);
+ szText += TEXT("x"); // This is a trick to enable the last newlines
+ const UINT uFormat = DT_LEFT | DT_TOP | DT_EDITCONTROL | DT_NOPREFIX | DT_NOCLIP
|
+ DT_EXPANDTABS | DT_WORDBREAK;
+ DrawText(hDC, szText, -1, &rcText, uFormat | DT_CALCRECT);
+ if (tm.tmDescent > 0)
+ rcText.bottom += tm.tmDescent;
+ ReleaseDC(hDC);
+ }
+
+ UnionRect(&rc, &rcText, &rcWnd);
+ ::MapWindowPoints(NULL, m_hwndParent, (LPPOINT)&rc, 2);
+
+ rcWnd = rc;
+ ::GetClientRect(m_hwndParent, &rcParent);
+ IntersectRect(&rc, &rcParent, &rcWnd);
+
+ ++m_nAppIsMovingOrSizing;
+ MoveWindow(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, FALSE);
+ --m_nAppIsMovingOrSizing;
+
+ DefWindowProc(WM_HSCROLL, SB_LEFT, 0);
+ DefWindowProc(WM_VSCROLL, SB_TOP, 0);
+
+ ::InvalidateRect(m_hwndParent, &rc, TRUE);
+}
+
+LRESULT CTextEditWindow::OnChar(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ if (wParam == VK_TAB)
+ return 0; // FIXME: Tabs
+
+ CString szText;
+ GetWindowText(szText);
+
+ LRESULT ret = DefWindowProc(nMsg, wParam, lParam);
+ FixEditPos(szText);
+
+ return ret;
+}
+
+LRESULT CTextEditWindow::OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ if (wParam == VK_ESCAPE)
+ {
+ toolsModel.OnCancelDraw();
+ return 0;
+ }
+
+ CString szText;
+ GetWindowText(szText);
+
+ LRESULT ret = DefWindowProc(nMsg, wParam, lParam);
+ FixEditPos(szText);
+ return ret;
+}
+
+LRESULT CTextEditWindow::OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ LRESULT ret = DefWindowProc(nMsg, wParam, lParam);
+ DefWindowProc(WM_HSCROLL, SB_LEFT, 0);
+ DefWindowProc(WM_VSCROLL, SB_TOP, 0);
+ return ret;
+}
+
+LRESULT CTextEditWindow::OnEraseBkGnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ HDC hDC = (HDC)wParam;
+ if (!toolsModel.IsBackgroundTransparent())
+ {
+ RECT rc;
+ GetClientRect(&rc);
+ HBRUSH hbr = CreateSolidBrush(paletteModel.GetBgColor());
+ FillRect(hDC, &rc, hbr);
+ DeleteObject(hbr);
+ }
+ SetTextColor(hDC, paletteModel.GetFgColor());
+ return TRUE;
+}
+
+LRESULT CTextEditWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ RECT rc;
+ GetClientRect(&rc);
+
+ DefWindowProc(nMsg, wParam, lParam);
+
+ HDC hDC = GetDC();
+ if (hDC)
+ {
+ DrawGrip(hDC, rc);
+ ReleaseDC(hDC);
+ }
+
+ return 0;
+}
+
+LRESULT CTextEditWindow::OnNCPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ RECT rc;
+ GetWindowRect(&rc);
+
+ HDC hDC = GetDCEx(NULL, DCX_WINDOW | DCX_PARENTCLIP);
+ if (hDC)
+ {
+ OffsetRect(&rc, -rc.left, -rc.top);
+ DrawGrip(hDC, rc);
+ ReleaseDC(hDC);
+ }
+
return 0;
}
+LRESULT CTextEditWindow::OnNCCalcSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ return 0; // No frame.
+}
+
+LRESULT CTextEditWindow::OnNCHitTest(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
+ RECT rc;
+ GetWindowRect(&rc);
+ return DoHitTest(rc, pt);
+}
+
+LRESULT CTextEditWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ UINT nHitTest = LOWORD(lParam);
+ if (nHitTest == HTCAPTION)
+ {
+ SetCursor(LoadCursor(NULL, IDC_SIZEALL));
+ return FALSE;
+ }
+ return DefWindowProc(nMsg, wParam, lParam);
+}
+
+LRESULT CTextEditWindow::OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ LRESULT ret = DefWindowProc(nMsg, wParam, lParam);
+
+ if (m_nAppIsMovingOrSizing == 0)
+ {
+ Reposition();
+ InvalidateEditRect();
+ }
+ return ret;
+}
+
LRESULT CTextEditWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
{
- RECT clientRect;
- GetClientRect(&clientRect);
- editControl.MoveWindow(clientRect.left, clientRect.top, RECT_WIDTH(clientRect),
RECT_HEIGHT(clientRect), TRUE);
+ LRESULT ret = DefWindowProc(nMsg, wParam, lParam);
+
+ RECT rc;
+ GetClientRect(&rc);
+ SendMessage(EM_SETRECTNP, 0, (LPARAM)&rc);
+ SendMessage(EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(0, 0));
+
+ if (m_nAppIsMovingOrSizing == 0)
+ {
+ Reposition();
+ InvalidateEditRect();
+ }
+
+ return ret;
+}
+
+// Hack: Use DECLARE_WND_SUPERCLASS instead!
+HWND CTextEditWindow::Create(HWND hwndParent)
+{
+ m_hwndParent = hwndParent;
+
+ const DWORD style = ES_LEFT | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL |
+ WS_CHILD | WS_THICKFRAME;
+ m_hWnd = ::CreateWindowEx(0, WC_EDIT, NULL, style, 0, 0, 0, 0,
+ hwndParent, NULL, hProgInstance, NULL);
+ if (m_hWnd)
+ {
+#undef SubclassWindow // Don't use this macro
+ SubclassWindow(m_hWnd);
+
+ UpdateFont();
+
+ PostMessage(WM_SIZE, 0, 0);
+ }
+
+ return m_hWnd;
+}
+
+void CTextEditWindow::DoFillBack(HWND hwnd, HDC hDC)
+{
+ if (toolsModel.IsBackgroundTransparent())
+ return;
+
+ RECT rc;
+ SendMessage(EM_GETRECT, 0, (LPARAM)&rc);
+ MapWindowPoints(hwnd, (LPPOINT)&rc, 2);
+
+ HBRUSH hbr = CreateSolidBrush(paletteModel.GetBgColor());
+ FillRect(hDC, &rc, hbr);
+ DeleteObject(hbr);
+}
+
+LRESULT CTextEditWindow::OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ UpdateFont();
return 0;
}
LRESULT CTextEditWindow::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
{
ShowWindow(SW_HIDE);
+ if (m_hFont)
+ {
+ DeleteObject(m_hFont);
+ m_hFont = NULL;
+ }
+ if (m_hFontZoomed)
+ {
+ DeleteObject(m_hFontZoomed);
+ m_hFontZoomed = NULL;
+ }
return 0;
}
-LRESULT CTextEditWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+void CTextEditWindow::InvalidateEditRect()
{
- switch(HIWORD(wParam))
- {
- case EN_UPDATE:
- {
- HeapFree(GetProcessHeap(), 0, textToolText);
- textToolTextMaxLen = editControl.GetWindowTextLength() + 1;
- textToolText = (LPTSTR) HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS,
sizeof(TCHAR) * textToolTextMaxLen);
- editControl.GetWindowText(textToolText, textToolTextMaxLen);
- ForceRefreshSelectionContents();
- break;
- }
- }
+ RECT rc;
+ GetWindowRect(&rc);
+ ::MapWindowPoints(NULL, m_hwndParent, (LPPOINT)&rc, 2);
+ ::InvalidateRect(m_hwndParent, &rc, TRUE);
+
+ GetClientRect(&rc);
+ MapWindowPoints(imageArea, (LPPOINT)&rc, 2);
+ rc.left = UnZoomed(rc.left);
+ rc.top = UnZoomed(rc.top);
+ rc.right = UnZoomed(rc.right);
+ rc.bottom = UnZoomed(rc.bottom);
+ m_rc = rc;
+}
+
+LRESULT CTextEditWindow::OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM
lParam, BOOL& bHandled)
+{
+ UpdateFont();
+ return 0;
+}
+
+LRESULT CTextEditWindow::OnToolsModelSettingsChanged(UINT nMsg, WPARAM wParam, LPARAM
lParam, BOOL& bHandled)
+{
+ UpdateFont();
+ return 0;
+}
+
+LRESULT CTextEditWindow::OnToolsModelZoomChanged(UINT nMsg, WPARAM wParam, LPARAM lParam,
BOOL& bHandled)
+{
+ UpdateFont();
+ ValidateEditRect(NULL);
return 0;
}
LRESULT CTextEditWindow::OnToolsModelToolChanged(UINT nMsg, WPARAM wParam, LPARAM lParam,
BOOL& bHandled)
{
- ShowWindow((wParam == TOOL_TEXT) ? SW_SHOW : SW_HIDE);
+ if (wParam == TOOL_TEXT)
+ {
+ UpdateFont();
+ }
+ else
+ {
+ ShowWindow(SW_HIDE);
+ }
return 0;
}
+
+void CTextEditWindow::UpdateFont()
+{
+ if (m_hFont)
+ {
+ DeleteObject(m_hFont);
+ m_hFont = NULL;
+ }
+ if (m_hFontZoomed)
+ {
+ DeleteObject(m_hFontZoomed);
+ m_hFontZoomed = NULL;
+ }
+
+ LOGFONT lf;
+ ZeroMemory(&lf, sizeof(lf));
+ lf.lfCharSet = DEFAULT_CHARSET; // registrySettings.CharSet; // Ignore
+ lf.lfWeight = (registrySettings.Bold ? FW_BOLD : FW_NORMAL);
+ lf.lfItalic = registrySettings.Italic;
+ lf.lfUnderline = registrySettings.Underline;
+ lstrcpyn(lf.lfFaceName, registrySettings.strFontName, _countof(lf.lfFaceName));
+
+ HDC hdc = GetDC();
+ if (hdc)
+ {
+ INT nFontSize = registrySettings.PointSize;
+ lf.lfHeight = -MulDiv(nFontSize, GetDeviceCaps(hdc, LOGPIXELSY), 72);
+ ReleaseDC(hdc);
+ }
+
+ m_hFont = ::CreateFontIndirect(&lf);
+
+ lf.lfHeight = Zoomed(lf.lfHeight);
+ m_hFontZoomed = ::CreateFontIndirect(&lf);
+
+ SetWindowFont(m_hWnd, m_hFontZoomed, TRUE);
+ DefWindowProc(EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(0, 0));
+
+ FixEditPos(NULL);
+
+ Invalidate();
+}
+
+LRESULT CTextEditWindow::OnSetSel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ LRESULT ret = DefWindowProc(nMsg, wParam, lParam);
+ DefWindowProc(WM_HSCROLL, SB_LEFT, 0);
+ DefWindowProc(WM_VSCROLL, SB_TOP, 0);
+ InvalidateEditRect();
+ return ret;
+}
+
+BOOL CTextEditWindow::GetEditRect(LPRECT prc) const
+{
+ *prc = m_rc;
+ return TRUE;
+}
+
+void CTextEditWindow::ValidateEditRect(LPCRECT prc OPTIONAL)
+{
+ if (prc)
+ m_rc = *prc;
+ INT x0 = Zoomed(m_rc.left), y0 = Zoomed(m_rc.top);
+ INT x1 = Zoomed(m_rc.right), y1 = Zoomed(m_rc.bottom);
+
+ ++m_nAppIsMovingOrSizing;
+ MoveWindow(x0, y0, x1 - x0, y1 - y0, TRUE);
+ --m_nAppIsMovingOrSizing;
+}
+
+void CTextEditWindow::Reposition()
+{
+ RECT rc, rcImage;
+ GetWindowRect(&rc);
+
+ ::MapWindowPoints(NULL, imageArea, (LPPOINT)&rc, 2);
+ imageArea.GetClientRect(&rcImage);
+
+ if (rc.bottom > rcImage.bottom)
+ {
+ rc.top = rcImage.bottom - (rc.bottom - rc.top);
+ rc.bottom = rcImage.bottom;
+ }
+
+ if (rc.right > rcImage.right)
+ {
+ rc.left = rcImage.right - (rc.right - rc.left);
+ rc.right = rcImage.right;
+ }
+
+ if (rc.left < 0)
+ {
+ rc.right += -rc.left;
+ rc.left = 0;
+ }
+
+ if (rc.top < 0)
+ {
+ rc.bottom += -rc.top;
+ rc.top = 0;
+ }
+
+ ++m_nAppIsMovingOrSizing;
+ MoveWindow(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE);
+ --m_nAppIsMovingOrSizing;
+}
+
+LRESULT CTextEditWindow::OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled)
+{
+ return ::SendMessage(GetParent(), nMsg, wParam, lParam);
+}
diff --git a/base/applications/mspaint/textedit.h b/base/applications/mspaint/textedit.h
index 61eac3675a3..a227ce25714 100644
--- a/base/applications/mspaint/textedit.h
+++ b/base/applications/mspaint/textedit.h
@@ -8,24 +8,73 @@
#pragma once
+#define CX_MINTEXTEDIT 100
+#define CY_MINTEXTEDIT 24
+
class CTextEditWindow : public CWindowImpl<CTextEditWindow>
{
public:
- DECLARE_WND_CLASS_EX(_T("TextEdit"), CS_DBLCLKS, COLOR_BTNFACE)
+ CTextEditWindow();
+
+ HWND Create(HWND hwndParent);
+ void DoFillBack(HWND hwnd, HDC hDC);
+ void FixEditPos(LPCTSTR pszOldText);
+ void InvalidateEditRect();
+ void UpdateFont();
+ BOOL GetEditRect(LPRECT prc) const;
+ void ValidateEditRect(LPCRECT prc OPTIONAL);
+ HFONT GetFont() const { return m_hFont; }
BEGIN_MSG_MAP(CTextEditWindow)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
- MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_CLOSE, OnClose)
- MESSAGE_HANDLER(WM_COMMAND, OnCommand)
MESSAGE_HANDLER(WM_TOOLSMODELTOOLCHANGED, OnToolsModelToolChanged)
+ MESSAGE_HANDLER(WM_TOOLSMODELSETTINGSCHANGED, OnToolsModelSettingsChanged)
+ MESSAGE_HANDLER(WM_TOOLSMODELZOOMCHANGED, OnToolsModelZoomChanged)
+ MESSAGE_HANDLER(WM_PALETTEMODELCOLORCHANGED, OnPaletteModelColorChanged)
+ MESSAGE_HANDLER(WM_CHAR, OnChar)
+ MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown)
+ MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkGnd)
+ MESSAGE_HANDLER(WM_PAINT, OnPaint)
+ MESSAGE_HANDLER(WM_NCPAINT, OnNCPaint)
+ MESSAGE_HANDLER(WM_NCCALCSIZE, OnNCCalcSize);
+ MESSAGE_HANDLER(WM_NCHITTEST, OnNCHitTest);
+ MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor);
+ MESSAGE_HANDLER(WM_MOVE, OnMove);
+ MESSAGE_HANDLER(WM_SIZE, OnSize);
+ MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown);
+ MESSAGE_HANDLER(EM_SETSEL, OnSetSel);
+ MESSAGE_HANDLER(WM_MOUSEWHEEL, OnMouseWheel);
END_MSG_MAP()
- CWindow editControl;
-
LRESULT OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
- LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
- LRESULT OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnToolsModelToolChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled);
+ LRESULT OnToolsModelSettingsChanged(UINT nMsg, WPARAM wParam, LPARAM lParam,
BOOL& bHandled);
+ LRESULT OnToolsModelZoomChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled);
+ LRESULT OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
bHandled);
+ LRESULT OnChar(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnEraseBkGnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnNCPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnNCCalcSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnNCHitTest(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnSetSel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+ LRESULT OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
+
+protected:
+ HWND m_hwndParent;
+ HFONT m_hFont;
+ HFONT m_hFontZoomed;
+ LONG m_nAppIsMovingOrSizing;
+ RECT m_rc;
+
+ INT DoHitTest(RECT& rc, POINT pt);
+ void DrawGrip(HDC hDC, RECT& rc);
+ void Reposition();
};
diff --git a/base/applications/mspaint/toolsmodel.cpp
b/base/applications/mspaint/toolsmodel.cpp
index bedf12d4e9a..f5725207a1c 100644
--- a/base/applications/mspaint/toolsmodel.cpp
+++ b/base/applications/mspaint/toolsmodel.cpp
@@ -92,8 +92,17 @@ void ToolsModel::SetActiveTool(TOOLTYPE nActiveTool)
case TOOL_RUBBER:
case TOOL_COLOR:
case TOOL_ZOOM:
+ break;
+
case TOOL_TEXT:
+ if (nActiveTool != TOOL_TEXT)
+ {
+ // Finish the text
+ OnButtonDown(TRUE, -1, -1, TRUE);
+ OnButtonUp(TRUE, -1, -1);
+ }
break;
+
default:
m_oldActiveTool = m_activeTool;
break;
@@ -152,6 +161,10 @@ void ToolsModel::NotifyToolChanged()
{
toolBoxContainer.SendMessage(WM_TOOLSMODELTOOLCHANGED, m_activeTool);
toolSettingsWindow.SendMessage(WM_TOOLSMODELTOOLCHANGED, m_activeTool);
+
+ if (fontsDialog.IsWindow())
+ fontsDialog.SendMessage(WM_TOOLSMODELTOOLCHANGED, m_activeTool);
+
textEditWindow.SendMessage(WM_TOOLSMODELTOOLCHANGED, m_activeTool);
}
@@ -159,11 +172,15 @@ void ToolsModel::NotifyToolSettingsChanged()
{
toolSettingsWindow.SendMessage(WM_TOOLSMODELSETTINGSCHANGED);
selectionWindow.SendMessage(WM_TOOLSMODELSETTINGSCHANGED);
+ if (textEditWindow.IsWindow())
+ textEditWindow.SendMessage(WM_TOOLSMODELSETTINGSCHANGED);
}
void ToolsModel::NotifyZoomChanged()
{
toolSettingsWindow.SendMessage(WM_TOOLSMODELZOOMCHANGED);
+ if (textEditWindow.IsWindow())
+ textEditWindow.SendMessage(WM_TOOLSMODELZOOMCHANGED);
}
void ToolsModel::OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick)
diff --git a/base/applications/mspaint/toolsmodel.h
b/base/applications/mspaint/toolsmodel.h
index b8a70dce4a7..f6d4496d985 100644
--- a/base/applications/mspaint/toolsmodel.h
+++ b/base/applications/mspaint/toolsmodel.h
@@ -85,10 +85,6 @@ private:
ToolBase *GetOrCreateTool(TOOLTYPE nTool);
- void NotifyToolChanged();
- void NotifyToolSettingsChanged();
- void NotifyZoomChanged();
-
public:
ToolsModel();
~ToolsModel();
@@ -117,4 +113,8 @@ public:
void resetTool();
void selectAll();
+
+ void NotifyToolChanged();
+ void NotifyToolSettingsChanged();
+ void NotifyZoomChanged();
};
diff --git a/base/applications/mspaint/winproc.cpp
b/base/applications/mspaint/winproc.cpp
index 643a914309c..7a739f76cca 100644
--- a/base/applications/mspaint/winproc.cpp
+++ b/base/applications/mspaint/winproc.cpp
@@ -13,8 +13,6 @@
#include "precomp.h"
-#include "dialogs.h"
-
/* FUNCTIONS ********************************************************/
BOOL
@@ -326,7 +324,7 @@ LRESULT CMainWindow::OnInitMenuPopup(UINT nMsg, WPARAM wParam, LPARAM
lParam, BO
CheckMenuItem(menu, IDM_VIEWTOOLBOX,
CHECKED_IF(toolBoxContainer.IsWindowVisible()));
CheckMenuItem(menu, IDM_VIEWCOLORPALETTE,
CHECKED_IF(paletteWindow.IsWindowVisible()));
CheckMenuItem(menu, IDM_VIEWSTATUSBAR,
CHECKED_IF(::IsWindowVisible(hStatusBar)));
- CheckMenuItem(menu, IDM_FORMATICONBAR,
CHECKED_IF(textEditWindow.IsWindowVisible()));
+ CheckMenuItem(menu, IDM_FORMATICONBAR,
CHECKED_IF(fontsDialog.IsWindowVisible()));
EnableMenuItem(menu, IDM_FORMATICONBAR,
ENABLED_IF(toolsModel.GetActiveTool() == TOOL_TEXT));
CheckMenuItem(menu, IDM_VIEWSHOWGRID, CHECKED_IF(showGrid));
@@ -522,10 +520,14 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM
lParam, BOOL& bH
break;
}
case IDM_EDITUNDO:
+ if (toolsModel.GetActiveTool() == TOOL_TEXT &&
textEditWindow.IsWindowVisible())
+ break;
imageModel.Undo();
imageArea.Invalidate(FALSE);
break;
case IDM_EDITREDO:
+ if (toolsModel.GetActiveTool() == TOOL_TEXT &&
textEditWindow.IsWindowVisible())
+ break;
imageModel.Redo();
imageArea.Invalidate(FALSE);
break;
@@ -557,6 +559,11 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM
lParam, BOOL& bH
}
case IDM_EDITSELECTALL:
{
+ if (toolsModel.GetActiveTool() == TOOL_TEXT &&
textEditWindow.IsWindowVisible())
+ {
+ textEditWindow.SendMessage(EM_SETSEL, 0, -1);
+ break;
+ }
HWND hToolbar = FindWindowEx(toolBoxContainer.m_hWnd, NULL, TOOLBARCLASSNAME,
NULL);
SendMessage(hToolbar, TB_CHECKBUTTON, ID_RECTSEL, MAKELPARAM(TRUE, 0));
toolsModel.selectAll();
@@ -662,7 +669,16 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM
lParam, BOOL& bH
alignChildrenToMainWindow();
break;
case IDM_FORMATICONBAR:
- textEditWindow.ShowWindow(textEditWindow.IsWindowVisible() ? SW_HIDE :
SW_SHOW);
+ if (toolsModel.GetActiveTool() == TOOL_TEXT)
+ {
+ if (!fontsDialog.IsWindow())
+ {
+ fontsDialog.Create(mainWindow);
+ }
+ registrySettings.ShowTextTool = !fontsDialog.IsWindowVisible();
+ fontsDialog.ShowWindow(registrySettings.ShowTextTool ? SW_SHOW :
SW_HIDE);
+ fontsDialog.SendMessage(DM_REPOSITION, 0, 0);
+ }
break;
case IDM_VIEWSHOWGRID:
showGrid = !showGrid;