Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / reactos / base / applications / mspaint / winproc.cpp
diff --git a/reactos/base/applications/mspaint/winproc.cpp b/reactos/base/applications/mspaint/winproc.cpp
deleted file mode 100644 (file)
index ace8c96..0000000
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
- * PROJECT:     PAINT for ReactOS
- * LICENSE:     LGPL
- * FILE:        base/applications/mspaint/winproc.cpp
- * PURPOSE:     Window procedure of the main window and all children apart from
- *              hPalWin, hToolSettings and hSelection
- * PROGRAMMERS: Benedikt Freisen
- *              Katayama Hirofumi MZ
- */
-
-/* INCLUDES *********************************************************/
-
-#include "precomp.h"
-
-#include "dialogs.h"
-
-/* FUNCTIONS ********************************************************/
-
-void
-zoomTo(int newZoom, int mouseX, int mouseY)
-{
-    RECT clientRectScrollbox;
-    RECT clientRectImageArea;
-    int x, y, w, h;
-    scrollboxWindow.GetClientRect(&clientRectScrollbox);
-    imageArea.GetClientRect(&clientRectImageArea);
-    w = clientRectImageArea.right * clientRectScrollbox.right / (clientRectImageArea.right * newZoom / toolsModel.GetZoom());
-    h = clientRectImageArea.bottom * clientRectScrollbox.bottom / (clientRectImageArea.bottom * newZoom / toolsModel.GetZoom());
-    x = max(0, min(clientRectImageArea.right - w, mouseX - w / 2)) * newZoom / toolsModel.GetZoom();
-    y = max(0, min(clientRectImageArea.bottom - h, mouseY - h / 2)) * newZoom / toolsModel.GetZoom();
-
-    toolsModel.SetZoom(newZoom);
-
-    selectionWindow.ShowWindow(SW_HIDE);
-    imageArea.MoveWindow(3, 3, imageModel.GetWidth() * toolsModel.GetZoom() / 1000, imageModel.GetHeight() * toolsModel.GetZoom() / 1000, FALSE);
-    scrollboxWindow.Invalidate(TRUE);
-    imageArea.Invalidate(FALSE);
-
-    scrollboxWindow.SendMessage(WM_HSCROLL, MAKEWPARAM(SB_THUMBPOSITION, x), 0);
-    scrollboxWindow.SendMessage(WM_VSCROLL, MAKEWPARAM(SB_THUMBPOSITION, y), 0);
-}
-
-void CMainWindow::alignChildrenToMainWindow()
-{
-    int x, y, w, h;
-    RECT clientRect;
-    GetClientRect(&clientRect);
-
-    if (toolBoxContainer.IsWindowVisible())
-    {
-        x = 56;
-        w = clientRect.right - 56;
-    }
-    else
-    {
-        x = 0;
-        w = clientRect.right;
-    }
-    if (paletteWindow.IsWindowVisible())
-    {
-        y = 49;
-        h = clientRect.bottom - 49;
-    }
-    else
-    {
-        y = 3;
-        h = clientRect.bottom - 3;
-    }
-
-    RECT statusBarRect0;
-    SendMessage(hStatusBar, SB_GETRECT, 0, (LPARAM)&statusBarRect0);
-    int statusBarBorders[3];
-    SendMessage(hStatusBar, SB_GETBORDERS, 0, (LPARAM)&statusBarBorders);
-    int statusBarHeight = statusBarRect0.bottom - statusBarRect0.top + statusBarBorders[1];
-
-    scrollboxWindow.MoveWindow(x, y, w, ::IsWindowVisible(hStatusBar) ? h - statusBarHeight : h, TRUE);
-    paletteWindow.MoveWindow(x, 9, 255, 32, TRUE);
-}
-
-void CMainWindow::saveImage(BOOL overwrite)
-{
-    if (isAFile && overwrite)
-    {
-        imageModel.SaveImage(filepathname);
-    }
-    else if (GetSaveFileName(&sfn) != 0)
-    {
-        imageModel.SaveImage(sfn.lpstrFile);
-        CString strTitle;
-        strTitle.Format(IDS_WINDOWTITLE, (LPCTSTR)sfn.lpstrFileTitle);
-        SetWindowText(strTitle);
-        isAFile = TRUE;
-    }
-}
-
-void CMainWindow::UpdateApplicationProperties(HBITMAP bitmap, LPCTSTR newfilepathname)
-{
-    imageModel.Insert(bitmap);
-    CopyMemory(filepathname, newfilepathname, sizeof(filepathname));
-    CPath pathFileName(newfilepathname);
-    pathFileName.StripPath();
-    CString strTitle;
-    strTitle.Format(IDS_WINDOWTITLE, (LPCTSTR)pathFileName);
-    SetWindowText(strTitle);
-    imageModel.ClearHistory();
-    isAFile = TRUE;
-
-    registrySettings.SetMostRecentFile(newfilepathname);
-}
-
-void CMainWindow::InsertSelectionFromHBITMAP(HBITMAP bitmap, HWND window)
-{
-    int width = GetDIBWidth(bitmap); 
-    int height = GetDIBHeight(bitmap); 
-    int curWidth = imageModel.GetWidth();
-    int curHeight = imageModel.GetHeight();
-
-    if (width > curWidth || height > curHeight)
-    {
-        BOOL shouldEnlarge = TRUE;
-
-        if (askBeforeEnlarging)
-        {
-            TCHAR programname[20];
-            TCHAR shouldEnlargePromptText[100];
-
-            LoadString(hProgInstance, IDS_PROGRAMNAME, programname, SIZEOF(programname));
-            LoadString(hProgInstance, IDS_ENLARGEPROMPTTEXT, shouldEnlargePromptText, SIZEOF(shouldEnlargePromptText));
-
-            switch (MessageBox(shouldEnlargePromptText, programname, MB_YESNOCANCEL | MB_ICONQUESTION))
-            {
-                case IDYES:
-                    break;
-                case IDNO:
-                    shouldEnlarge = FALSE;
-                    break;
-                case IDCANCEL:
-                    return; 
-            }
-        }
-
-        if (shouldEnlarge)
-        {
-            if (width > curWidth)
-                curWidth = width;
-
-            if (height > curHeight)
-                curHeight = height;
-
-            imageModel.Crop(curWidth, curHeight, 0, 0);
-        }
-    }
-
-    HWND hToolbar = FindWindowEx(toolBoxContainer.m_hWnd, NULL, TOOLBARCLASSNAME, NULL);
-    SendMessage(hToolbar, TB_CHECKBUTTON, ID_RECTSEL, MAKELPARAM(TRUE, 0));
-    toolBoxContainer.SendMessage(WM_COMMAND, ID_RECTSEL);
-
-    imageModel.CopyPrevious();
-    selectionModel.InsertFromHBITMAP(bitmap);
-
-    placeSelWin();
-    selectionWindow.ShowWindow(SW_SHOW);
-    ForceRefreshSelectionContents();
-}
-
-LRESULT CMainWindow::OnDropFiles(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    HDROP drophandle;
-    TCHAR droppedfile[MAX_PATH];
-    HBITMAP bmNew = NULL;
-    drophandle = (HDROP)wParam;
-    DragQueryFile(drophandle, 0, droppedfile, SIZEOF(droppedfile));
-    DragFinish(drophandle);
-    LoadDIBFromFile(&bmNew, droppedfile, &fileTime, &fileSize, &fileHPPM, &fileVPPM);
-    if (bmNew != NULL)
-    {
-        UpdateApplicationProperties(bmNew, droppedfile);
-    }
-    return 0;
-}
-
-LRESULT CMainWindow::OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    SendMessage(WM_SETICON, ICON_BIG, (LPARAM) LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)));
-    SendMessage(WM_SETICON, ICON_SMALL, (LPARAM) LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)));
-    return 0;
-}
-
-LRESULT CMainWindow::OnDestroy(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    GetWindowPlacement(&(registrySettings.WindowPlacement));
-    PostQuitMessage(0); /* send a WM_QUIT to the message queue */
-    return 0;
-}
-
-LRESULT CMainWindow::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    if (!imageModel.IsImageSaved())
-    {
-        CString strProgramName;
-        strProgramName.LoadString(IDS_PROGRAMNAME);
-        CPath pathFileName(filepathname);
-        pathFileName.StripPath();
-        CString strSavePromptText;
-        strSavePromptText.Format(IDS_SAVEPROMPTTEXT, (LPCTSTR)pathFileName);
-        switch (MessageBox(strSavePromptText, strProgramName, MB_YESNOCANCEL | MB_ICONQUESTION))
-        {
-            case IDNO:
-                DestroyWindow();
-                break;
-            case IDYES:
-                saveImage(FALSE);
-                if (imageModel.IsImageSaved())
-                    DestroyWindow();
-                break;
-        }
-    }
-    else
-    {
-        DestroyWindow();
-    }
-    return 0;
-}
-
-LRESULT CMainWindow::OnInitMenuPopup(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    HMENU menu = GetMenu();
-    BOOL trueSelection = (selectionWindow.IsWindowVisible() && ((toolsModel.GetActiveTool() == TOOL_FREESEL) || (toolsModel.GetActiveTool() == TOOL_RECTSEL)));
-    switch (lParam)
-    {
-        case 0: /* File menu */
-            if ((HMENU)wParam != GetSubMenu(menu, 0))
-                break;
-            EnableMenuItem(menu, IDM_FILEASWALLPAPERPLANE,     ENABLED_IF(isAFile));
-            EnableMenuItem(menu, IDM_FILEASWALLPAPERCENTERED,  ENABLED_IF(isAFile));
-            EnableMenuItem(menu, IDM_FILEASWALLPAPERSTRETCHED, ENABLED_IF(isAFile));
-            RemoveMenu(menu, IDM_FILE1, MF_BYCOMMAND);
-            RemoveMenu(menu, IDM_FILE2, MF_BYCOMMAND);
-            RemoveMenu(menu, IDM_FILE3, MF_BYCOMMAND);
-            RemoveMenu(menu, IDM_FILE4, MF_BYCOMMAND);
-            if (!registrySettings.strFile1.IsEmpty())
-            {
-                RemoveMenu(menu, IDM_FILEMOSTRECENTLYUSEDFILE, MF_BYCOMMAND);
-                CPath pathFile1(registrySettings.strFile1);
-                pathFile1.CompactPathEx(30);
-                if (!registrySettings.strFile2.IsEmpty())
-                {
-                    CPath pathFile2(registrySettings.strFile2);
-                    pathFile2.CompactPathEx(30);
-                    if (!registrySettings.strFile3.IsEmpty())
-                    {
-                        CPath pathFile3(registrySettings.strFile3);
-                        pathFile3.CompactPathEx(30);
-                        if (!registrySettings.strFile4.IsEmpty())
-                        {
-                            CPath pathFile4(registrySettings.strFile4);
-                            pathFile4.CompactPathEx(30);
-                            InsertMenu((HMENU)wParam, 17, MF_BYPOSITION | MF_STRING, IDM_FILE4, _T("4 ") + pathFile4);
-                        }
-                        InsertMenu((HMENU)wParam, 17, MF_BYPOSITION | MF_STRING, IDM_FILE3, _T("3 ") + pathFile3);
-                    }
-                    InsertMenu((HMENU)wParam, 17, MF_BYPOSITION | MF_STRING, IDM_FILE2, _T("2 ") + pathFile2);
-                }
-                InsertMenu((HMENU)wParam, 17, MF_BYPOSITION | MF_STRING, IDM_FILE1, _T("1 ") + pathFile1);
-            }
-            break;
-        case 1: /* Edit menu */
-            EnableMenuItem(menu, IDM_EDITUNDO, ENABLED_IF(imageModel.HasUndoSteps()));
-            EnableMenuItem(menu, IDM_EDITREDO, ENABLED_IF(imageModel.HasRedoSteps()));
-            EnableMenuItem(menu, IDM_EDITCUT,  ENABLED_IF(trueSelection));
-            EnableMenuItem(menu, IDM_EDITCOPY, ENABLED_IF(trueSelection));
-            EnableMenuItem(menu, IDM_EDITDELETESELECTION, ENABLED_IF(trueSelection));
-            EnableMenuItem(menu, IDM_EDITINVERTSELECTION, ENABLED_IF(trueSelection));
-            EnableMenuItem(menu, IDM_EDITCOPYTO, ENABLED_IF(trueSelection));
-            OpenClipboard();
-            EnableMenuItem(menu, IDM_EDITPASTE, ENABLED_IF(GetClipboardData(CF_BITMAP) != NULL));
-            CloseClipboard();
-            break;
-        case 2: /* View menu */
-                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()));
-                EnableMenuItem(menu, IDM_FORMATICONBAR, ENABLED_IF(toolsModel.GetActiveTool() == TOOL_TEXT));
-
-                CheckMenuItem(menu, IDM_VIEWSHOWGRID,      CHECKED_IF(showGrid));
-                CheckMenuItem(menu, IDM_VIEWSHOWMINIATURE, CHECKED_IF(showMiniature));
-            break;
-        case 3: /* Image menu */
-            EnableMenuItem(menu, IDM_IMAGECROP, ENABLED_IF(selectionWindow.IsWindowVisible()));
-            CheckMenuItem(menu, IDM_IMAGEDRAWOPAQUE, CHECKED_IF(!toolsModel.IsBackgroundTransparent()));
-            break;
-    }
-
-    CheckMenuItem(menu, IDM_VIEWZOOM125, CHECKED_IF(toolsModel.GetZoom() == 125));
-    CheckMenuItem(menu, IDM_VIEWZOOM25,  CHECKED_IF(toolsModel.GetZoom() == 250));
-    CheckMenuItem(menu, IDM_VIEWZOOM50,  CHECKED_IF(toolsModel.GetZoom() == 500));
-    CheckMenuItem(menu, IDM_VIEWZOOM100, CHECKED_IF(toolsModel.GetZoom() == 1000));
-    CheckMenuItem(menu, IDM_VIEWZOOM200, CHECKED_IF(toolsModel.GetZoom() == 2000));
-    CheckMenuItem(menu, IDM_VIEWZOOM400, CHECKED_IF(toolsModel.GetZoom() == 4000));
-    CheckMenuItem(menu, IDM_VIEWZOOM800, CHECKED_IF(toolsModel.GetZoom() == 8000));
-
-    CheckMenuItem(menu, IDM_COLORSMODERNPALETTE, CHECKED_IF(paletteModel.SelectedPalette() == 1));
-    CheckMenuItem(menu, IDM_COLORSOLDPALETTE,    CHECKED_IF(paletteModel.SelectedPalette() == 2));
-    return 0;
-}
-
-LRESULT CMainWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    int test[] = { LOWORD(lParam) - 260, LOWORD(lParam) - 140, LOWORD(lParam) - 20 };
-    SendMessage(hStatusBar, WM_SIZE, wParam, lParam);
-    SendMessage(hStatusBar, SB_SETPARTS, 3, (LPARAM)&test);
-    alignChildrenToMainWindow();
-    Invalidate(TRUE);
-    return 0;
-}
-
-LRESULT CMainWindow::OnGetMinMaxInfo(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    MINMAXINFO *mm = (LPMINMAXINFO) lParam;
-    mm->ptMinTrackSize.x = 330;
-    mm->ptMinTrackSize.y = 430;
-    return 0;
-}
-
-LRESULT CMainWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    SetCursor(LoadCursor(NULL, IDC_ARROW));
-    bHandled = FALSE;
-    return 0;
-}
-
-LRESULT CMainWindow::OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    if (wParam == VK_ESCAPE)
-    {
-        HWND hwndCapture = GetCapture();
-        if (hwndCapture)
-        {
-            if (selectionWindow.m_hWnd == hwndCapture ||
-                imageArea.m_hWnd == hwndCapture ||
-                fullscreenWindow.m_hWnd == hwndCapture ||
-                sizeboxLeftTop.m_hWnd == hwndCapture ||
-                sizeboxCenterTop.m_hWnd == hwndCapture ||
-                sizeboxRightTop.m_hWnd == hwndCapture ||
-                sizeboxLeftCenter.m_hWnd == hwndCapture ||
-                sizeboxRightCenter.m_hWnd == hwndCapture ||
-                sizeboxLeftBottom.m_hWnd == hwndCapture ||
-                sizeboxCenterBottom.m_hWnd == hwndCapture ||
-                sizeboxRightBottom.m_hWnd == hwndCapture)
-            {
-                SendMessage(hwndCapture, nMsg, wParam, lParam);
-            }
-        }
-        else
-        {
-            switch (toolsModel.GetActiveTool())
-            {
-                case TOOL_SHAPE: case TOOL_BEZIER:
-                    imageArea.SendMessage(nMsg, wParam, lParam);
-                    break;
-            }
-        }
-    }
-    return 0;
-}
-
-LRESULT CMainWindow::OnSysColorChange(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    /* Redirect message to common controls */
-    HWND hToolbar = FindWindowEx(toolBoxContainer.m_hWnd, NULL, TOOLBARCLASSNAME, NULL);
-    SendMessage(hToolbar, WM_SYSCOLORCHANGE, 0, 0);
-    return 0;
-}
-
-LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
-{
-    switch (LOWORD(wParam))
-    {
-        case IDM_HELPINFO:
-        {
-            HICON paintIcon = LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON));
-            TCHAR infotitle[100];
-            TCHAR infotext[200];
-            LoadString(hProgInstance, IDS_INFOTITLE, infotitle, SIZEOF(infotitle));
-            LoadString(hProgInstance, IDS_INFOTEXT, infotext, SIZEOF(infotext));
-            ShellAbout(m_hWnd, infotitle, infotext, paintIcon);
-            DeleteObject(paintIcon);
-            break;
-        }
-        case IDM_HELPHELPTOPICS:
-            HtmlHelp(m_hWnd, _T("help\\Paint.chm"), 0, 0);
-            break;
-        case IDM_FILEEXIT:
-            SendMessage(WM_CLOSE, wParam, lParam);
-            break;
-        case IDM_FILENEW:
-        {
-            BOOL reset = TRUE;
-            if (!imageModel.IsImageSaved())
-            {
-                CString strProgramName;
-                strProgramName.LoadString(IDS_PROGRAMNAME);
-                CPath pathFileName(filepathname);
-                pathFileName.StripPath();
-                CString strSavePromptText;
-                strSavePromptText.Format(IDS_SAVEPROMPTTEXT, (LPCTSTR)pathFileName);
-                switch (MessageBox(strSavePromptText, strProgramName, MB_YESNOCANCEL | MB_ICONQUESTION))
-                {
-                    case IDNO:
-                        imageModel.imageSaved = TRUE; //TODO: move to ImageModel
-                        break;
-                    case IDYES:
-                        saveImage(FALSE);
-                        break;
-                    case IDCANCEL:
-                        reset = FALSE;
-                        break;
-                }
-            }
-            if (reset && imageModel.IsImageSaved()) //TODO: move to ImageModel
-            {
-                imageModel.Clear();
-                imageModel.ClearHistory();
-            }
-            break;
-        }
-        case IDM_FILEOPEN:
-            if (GetOpenFileName(&ofn) != 0)
-            {
-                HBITMAP bmNew = NULL;
-                LoadDIBFromFile(&bmNew, ofn.lpstrFile, &fileTime, &fileSize, &fileHPPM, &fileVPPM);
-                if (bmNew != NULL)
-                {
-                    UpdateApplicationProperties(bmNew, ofn.lpstrFile);
-                }
-            }
-            break;
-        case IDM_FILESAVE:
-            saveImage(TRUE);
-            break;
-        case IDM_FILESAVEAS:
-            saveImage(FALSE);
-            break;
-        case IDM_FILEPAGESETUP:
-            // DUMMY: Shows the dialog only, no functionality
-            PAGESETUPDLG psd;
-            ZeroMemory(&psd, sizeof(psd));
-            psd.lStructSize = sizeof(psd);
-            psd.hwndOwner = m_hWnd;
-            PageSetupDlg(&psd);
-            break;
-        case IDM_FILEPRINT:
-            // TODO: Test whether it actually works
-            PRINTDLG pd;
-            ZeroMemory(&pd, sizeof(pd));
-            pd.lStructSize = sizeof(pd);
-            pd.hwndOwner = m_hWnd;
-            pd.hDevMode = NULL;  // freed by user
-            pd.hDevNames = NULL;  // freed by user
-            pd.Flags = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC;
-            pd.nCopies = 1;
-            pd.nFromPage = 0xffff;
-            pd.nToPage = 0xffff;
-            pd.nMinPage = 1;
-            pd.nMaxPage = 0xffff;
-            if (PrintDlg(&pd) == TRUE)
-            {
-                BitBlt(pd.hDC, 0, 0, imageModel.GetWidth(), imageModel.GetHeight(), imageModel.GetDC(), 0, 0, SRCCOPY);
-                DeleteDC(pd.hDC);
-            }
-            if (pd.hDevMode)
-                GlobalFree(pd.hDevMode);
-            if (pd.hDevNames)
-                GlobalFree(pd.hDevNames);
-            break;
-        case IDM_FILEASWALLPAPERPLANE:
-            RegistrySettings::SetWallpaper(filepathname, RegistrySettings::TILED);
-            break;
-        case IDM_FILEASWALLPAPERCENTERED:
-            RegistrySettings::SetWallpaper(filepathname, RegistrySettings::CENTERED);
-            break;
-        case IDM_FILEASWALLPAPERSTRETCHED:
-            RegistrySettings::SetWallpaper(filepathname, RegistrySettings::STRETCHED);
-            break;
-        case IDM_FILE1:
-        {
-            HBITMAP bmNew = NULL;
-            LoadDIBFromFile(&bmNew, registrySettings.strFile1, &fileTime, &fileSize, &fileHPPM, &fileVPPM);
-            if (bmNew != NULL)
-            {
-                UpdateApplicationProperties(bmNew, registrySettings.strFile1);
-            }
-            break;
-        }
-        case IDM_FILE2:
-        {
-            HBITMAP bmNew = NULL;
-            LoadDIBFromFile(&bmNew, registrySettings.strFile2, &fileTime, &fileSize, &fileHPPM, &fileVPPM);
-            if (bmNew != NULL)
-            {
-                UpdateApplicationProperties(bmNew, registrySettings.strFile2);
-            }
-            break;
-        }
-        case IDM_FILE3:
-        {
-            HBITMAP bmNew = NULL;
-            LoadDIBFromFile(&bmNew, registrySettings.strFile3, &fileTime, &fileSize, &fileHPPM, &fileVPPM);
-            if (bmNew != NULL)
-            {
-                UpdateApplicationProperties(bmNew, registrySettings.strFile3);
-            }
-            break;
-        }
-        case IDM_FILE4:
-        {
-            HBITMAP bmNew = NULL;
-            LoadDIBFromFile(&bmNew, registrySettings.strFile4, &fileTime, &fileSize, &fileHPPM, &fileVPPM);
-            if (bmNew != NULL)
-            {
-                UpdateApplicationProperties(bmNew, registrySettings.strFile4);
-            }
-            break;
-        }
-        case IDM_EDITUNDO:
-            imageModel.Undo();
-            imageArea.Invalidate(FALSE);
-            break;
-        case IDM_EDITREDO:
-            imageModel.Redo();
-            imageArea.Invalidate(FALSE);
-            break;
-        case IDM_EDITCOPY:
-            OpenClipboard();
-            EmptyClipboard();
-            SetClipboardData(CF_BITMAP, CopyImage(selectionModel.GetBitmap(), IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG));
-            CloseClipboard();
-            break;
-        case IDM_EDITCUT:
-            /* Copy */
-            SendMessage(WM_COMMAND, IDM_EDITCOPY, 0);
-            /* Delete selection */
-            SendMessage(WM_COMMAND, IDM_EDITDELETESELECTION, 0);
-            break;
-        case IDM_EDITPASTE:
-            OpenClipboard();
-            if (GetClipboardData(CF_BITMAP) != NULL)
-            {
-                InsertSelectionFromHBITMAP((HBITMAP) GetClipboardData(CF_BITMAP), m_hWnd);
-            }
-            CloseClipboard();
-            break;
-        case IDM_EDITDELETESELECTION:
-        {
-            /* remove selection window and already painted content using undo */
-            imageModel.Undo();
-            break;
-        }
-        case IDM_EDITSELECTALL:
-        {
-            HWND hToolbar = FindWindowEx(toolBoxContainer.m_hWnd, NULL, TOOLBARCLASSNAME, NULL);
-            SendMessage(hToolbar, TB_CHECKBUTTON, ID_RECTSEL, MAKELPARAM(TRUE, 0));
-            toolBoxContainer.SendMessage(WM_COMMAND, ID_RECTSEL);
-            //TODO: do this properly
-            startPaintingL(imageModel.GetDC(), 0, 0, paletteModel.GetFgColor(), paletteModel.GetBgColor());
-            whilePaintingL(imageModel.GetDC(), imageModel.GetWidth(), imageModel.GetHeight(), paletteModel.GetFgColor(), paletteModel.GetBgColor());
-            endPaintingL(imageModel.GetDC(), imageModel.GetWidth(), imageModel.GetHeight(), paletteModel.GetFgColor(), paletteModel.GetBgColor());
-            break;
-        }
-        case IDM_EDITCOPYTO:
-            if (GetSaveFileName(&ofn) != 0)
-                SaveDIBToFile(selectionModel.GetBitmap(), ofn.lpstrFile, imageModel.GetDC(), NULL, NULL, fileHPPM, fileVPPM);
-            break;
-        case IDM_EDITPASTEFROM:
-            if (GetOpenFileName(&ofn) != 0)
-            {
-                HBITMAP bmNew = NULL;
-                LoadDIBFromFile(&bmNew, ofn.lpstrFile, &fileTime, &fileSize, &fileHPPM, &fileVPPM);
-                if (bmNew != NULL)
-                {
-                    InsertSelectionFromHBITMAP(bmNew, m_hWnd);
-                    DeleteObject(bmNew);
-                }
-            }
-            break;
-        case IDM_COLORSEDITPALETTE:
-            if (ChooseColor(&choosecolor))
-                paletteModel.SetFgColor(choosecolor.rgbResult);
-            break;
-        case IDM_COLORSMODERNPALETTE:
-            paletteModel.SelectPalette(1);
-            break;
-        case IDM_COLORSOLDPALETTE:
-            paletteModel.SelectPalette(2);
-            break;
-        case IDM_IMAGEINVERTCOLORS:
-        {
-            imageModel.InvertColors();
-            break;
-        }
-        case IDM_IMAGEDELETEIMAGE:
-            imageModel.CopyPrevious();
-            Rect(imageModel.GetDC(), 0, 0, imageModel.GetWidth(), imageModel.GetHeight(), paletteModel.GetBgColor(), paletteModel.GetBgColor(), 0, TRUE);
-            imageArea.Invalidate(FALSE);
-            break;
-        case IDM_IMAGEROTATEMIRROR:
-            switch (mirrorRotateDlg())
-            {
-                case 1: /* flip horizontally */
-                    if (selectionWindow.IsWindowVisible())
-                        selectionModel.FlipHorizontally();
-                    else
-                        imageModel.FlipHorizontally();
-                    break;
-                case 2: /* flip vertically */
-                    if (selectionWindow.IsWindowVisible())
-                        selectionModel.FlipVertically();
-                    else
-                        imageModel.FlipVertically();
-                    break;
-                case 3: /* rotate 90 degrees */
-                    break;
-                case 4: /* rotate 180 degrees */
-                    if (selectionWindow.IsWindowVisible())
-                        selectionModel.RotateNTimes90Degrees(2);
-                    else
-                        imageModel.RotateNTimes90Degrees(2);
-                    break;
-                case 5: /* rotate 270 degrees */
-                    break;
-            }
-            break;
-        case IDM_IMAGEATTRIBUTES:
-        {
-            if (attributesDlg())
-            {
-                imageModel.Crop(widthSetInDlg, heightSetInDlg, 0, 0);
-            }
-            break;
-        }
-        case IDM_IMAGESTRETCHSKEW:
-        {
-            if (changeSizeDlg())
-            {
-                imageModel.StretchSkew(stretchSkew.percentage.x, stretchSkew.percentage.y,
-                                       stretchSkew.angle.x, stretchSkew.angle.y);
-            }
-            break;
-        }
-        case IDM_IMAGEDRAWOPAQUE:
-            toolsModel.SetBackgroundTransparent(!toolsModel.IsBackgroundTransparent());
-            break;
-        case IDM_IMAGECROP:
-            imageModel.Insert((HBITMAP) CopyImage(selectionModel.GetBitmap(), IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG));
-            break;
-
-        case IDM_VIEWTOOLBOX:
-            toolBoxContainer.ShowWindow(toolBoxContainer.IsWindowVisible() ? SW_HIDE : SW_SHOW);
-            alignChildrenToMainWindow();
-            break;
-        case IDM_VIEWCOLORPALETTE:
-            paletteWindow.ShowWindow(paletteWindow.IsWindowVisible() ? SW_HIDE : SW_SHOW);
-            alignChildrenToMainWindow();
-            break;
-        case IDM_VIEWSTATUSBAR:
-            ::ShowWindow(hStatusBar, ::IsWindowVisible(hStatusBar) ? SW_HIDE : SW_SHOW);
-            alignChildrenToMainWindow();
-            break;
-        case IDM_FORMATICONBAR:
-            textEditWindow.ShowWindow(textEditWindow.IsWindowVisible() ? SW_HIDE : SW_SHOW);
-            break;
-        case IDM_VIEWSHOWGRID:
-            showGrid = !showGrid;
-            imageArea.Invalidate(FALSE);
-            break;
-        case IDM_VIEWSHOWMINIATURE:
-            showMiniature = !showMiniature;
-            miniature.ShowWindow(showMiniature ? SW_SHOW : SW_HIDE);
-            break;
-
-        case IDM_VIEWZOOM125:
-            zoomTo(125, 0, 0);
-            break;
-        case IDM_VIEWZOOM25:
-            zoomTo(250, 0, 0);
-            break;
-        case IDM_VIEWZOOM50:
-            zoomTo(500, 0, 0);
-            break;
-        case IDM_VIEWZOOM100:
-            zoomTo(1000, 0, 0);
-            break;
-        case IDM_VIEWZOOM200:
-            zoomTo(2000, 0, 0);
-            break;
-        case IDM_VIEWZOOM400:
-            zoomTo(4000, 0, 0);
-            break;
-        case IDM_VIEWZOOM800:
-            zoomTo(8000, 0, 0);
-            break;
-
-        case IDM_VIEWFULLSCREEN:
-            fullscreenWindow.ShowWindow(SW_SHOW);
-            ShowWindow(SW_HIDE);
-            break;
-    }
-    return 0;
-}