- PCHify notepad and add missing header from regedit.
[reactos.git] / reactos / subsys / system / notepad / dialog.c
index d1dc2dd..1a2076c 100644 (file)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#define UNICODE
-#define _UNICODE
-
-#include <assert.h>
-#include <stdio.h>
-#include <windows.h>
-#include <commdlg.h>
-#include <tchar.h>
-
-#include "main.h"
-#include "license.h"
-#include "dialog.h"
+#include <notepad.h>
 
 static const WCHAR helpfileW[] = { 'n','o','t','e','p','a','d','.','h','l','p',0 };
 
@@ -137,6 +126,17 @@ BOOL FileExists(LPCWSTR szFilename)
 }
 
 
+BOOL HasFileExtension(LPCWSTR szFilename)
+{
+    LPCWSTR s;
+
+    s = wcsrchr(szFilename, '\\');
+    if (s)
+        szFilename = s;
+    return wcsrchr(szFilename, '.') != NULL;
+}
+
+
 static VOID DoSaveFile(VOID)
 {
     HANDLE hFile;
@@ -263,7 +263,7 @@ VOID DIALOG_FileNew(VOID)
 {
     static const WCHAR empty_strW[] = { 0 };
 
-    /* Close any files and promt to save changes */
+    /* Close any files and prompt to save changes */
     if (DoCloseFile()) {
         SetWindowText(Globals.hEdit, empty_strW);
         SendMessage(Globals.hEdit, EM_EMPTYUNDOBUFFER, 0, 0);
@@ -624,6 +624,8 @@ VOID DIALOG_EditWrap(VOID)
     DWORD size;
     LPWSTR pTemp;
 
+    Globals.bWrapLongLines = !Globals.bWrapLongLines;
+
     size = GetWindowTextLength(Globals.hEdit) + 1;
     pTemp = HeapAlloc(GetProcessHeap(), 0, size * sizeof(WCHAR));
     if (!pTemp)
@@ -639,13 +641,10 @@ VOID DIALOG_EditWrap(VOID)
                          0, 0, rc.right, rc.bottom, Globals.hMainWnd,
                          NULL, Globals.hInstance, NULL);
     SendMessage(Globals.hEdit, WM_SETFONT, (WPARAM)Globals.hFont, (LPARAM)FALSE);
+    SendMessage(Globals.hEdit, EM_LIMITTEXT, 0, 0);
     SetWindowTextW(Globals.hEdit, pTemp);
     SetFocus(Globals.hEdit);
     HeapFree(GetProcessHeap(), 0, pTemp);
-    
-    Globals.bWrapLongLines = !Globals.bWrapLongLines;
-    CheckMenuItem(GetMenu(Globals.hMainWnd), CMD_WRAP,
-        MF_BYCOMMAND | (Globals.bWrapLongLines ? MF_CHECKED : MF_UNCHECKED));
 }
 
 VOID DIALOG_SelectFont(VOID)
@@ -671,7 +670,7 @@ VOID DIALOG_SelectFont(VOID)
     }
 }
 
-typedef HWND (STDCALL *FINDPROC)(LPFINDREPLACE lpfr);
+typedef HWND (WINAPI *FINDPROC)(LPFINDREPLACE lpfr);
 
 static VOID DIALOG_SearchDialog(FINDPROC pfnProc)
 {
@@ -770,12 +769,13 @@ VOID DIALOG_GoTo(VOID)
 
     if (nLine >= 1)
        {
-        for (i = 0; pszText[i] && (nLine > 1) && (i < dwStart - 1); i++)
+        for (i = 0; pszText[i] && (nLine > 1) && (i < nLength - 1); i++)
         {
             if (pszText[i] == '\n')
                 nLine--;
         }
         SendMessage(Globals.hEdit, EM_SETSEL, i, i);
+        SendMessage(Globals.hEdit, EM_SCROLLCARET, 0, 0);
        }
        HeapFree(GetProcessHeap(), 0, pszText);
 }
@@ -834,51 +834,54 @@ VOID DIALOG_FilePageSetup(void)
 static INT_PTR WINAPI DIALOG_PAGESETUP_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
 
-   switch (msg)
+    switch (msg)
     {
     case WM_COMMAND:
-      switch (wParam)
-        {
-        case IDOK:
-          /* save user input and close dialog */
-          GetDlgItemText(hDlg, 0x141, Globals.szHeader, SIZEOF(Globals.szHeader));
-          GetDlgItemText(hDlg, 0x143, Globals.szFooter, SIZEOF(Globals.szFooter));
-          GetDlgItemText(hDlg, 0x14A, Globals.szMarginTop, SIZEOF(Globals.szMarginTop));
-          GetDlgItemText(hDlg, 0x150, Globals.szMarginBottom, SIZEOF(Globals.szMarginBottom));
-          GetDlgItemText(hDlg, 0x147, Globals.szMarginLeft, SIZEOF(Globals.szMarginLeft));
-          GetDlgItemText(hDlg, 0x14D, Globals.szMarginRight, SIZEOF(Globals.szMarginRight));
-          EndDialog(hDlg, IDOK);
-          return TRUE;
-
-        case IDCANCEL:
-          /* discard user input and close dialog */
-          EndDialog(hDlg, IDCANCEL);
-          return TRUE;
-
-        case IDHELP:
+        if (HIWORD(wParam) == BN_CLICKED)
         {
-          /* FIXME: Bring this to work */
-          static const WCHAR sorryW[] = { 'S','o','r','r','y',',',' ','n','o',' ','h','e','l','p',' ','a','v','a','i','l','a','b','l','e',0 };
-          static const WCHAR helpW[] = { 'H','e','l','p',0 };
-          MessageBox(Globals.hMainWnd, sorryW, helpW, MB_ICONEXCLAMATION);
-          return TRUE;
-        }
+            switch (LOWORD(wParam))
+            {
+            case IDOK:
+                /* save user input and close dialog */
+                GetDlgItemText(hDlg, 0x141, Globals.szHeader, SIZEOF(Globals.szHeader));
+                GetDlgItemText(hDlg, 0x143, Globals.szFooter, SIZEOF(Globals.szFooter));
+                GetDlgItemText(hDlg, 0x14A, Globals.szMarginTop, SIZEOF(Globals.szMarginTop));
+                GetDlgItemText(hDlg, 0x150, Globals.szMarginBottom, SIZEOF(Globals.szMarginBottom));
+                GetDlgItemText(hDlg, 0x147, Globals.szMarginLeft, SIZEOF(Globals.szMarginLeft));
+                GetDlgItemText(hDlg, 0x14D, Globals.szMarginRight, SIZEOF(Globals.szMarginRight));
+                EndDialog(hDlg, IDOK);
+                return TRUE;
+
+            case IDCANCEL:
+                /* discard user input and close dialog */
+                EndDialog(hDlg, IDCANCEL);
+                return TRUE;
+
+            case IDHELP:
+                {
+                    /* FIXME: Bring this to work */
+                    static const WCHAR sorryW[] = { 'S','o','r','r','y',',',' ','n','o',' ','h','e','l','p',' ','a','v','a','i','l','a','b','l','e',0 };
+                    static const WCHAR helpW[] = { 'H','e','l','p',0 };
+                    MessageBox(Globals.hMainWnd, sorryW, helpW, MB_ICONEXCLAMATION);
+                    return TRUE;
+                }
 
-        default:
-          break;
+            default:
+                break;
+            }
         }
-      break;
+        break;
 
     case WM_INITDIALOG:
-       /* fetch last user input prior to display dialog */
-       SetDlgItemText(hDlg, 0x141, Globals.szHeader);
-       SetDlgItemText(hDlg, 0x143, Globals.szFooter);
-       SetDlgItemText(hDlg, 0x14A, Globals.szMarginTop);
-       SetDlgItemText(hDlg, 0x150, Globals.szMarginBottom);
-       SetDlgItemText(hDlg, 0x147, Globals.szMarginLeft);
-       SetDlgItemText(hDlg, 0x14D, Globals.szMarginRight);
-       break;
+        /* fetch last user input prior to display dialog */
+        SetDlgItemText(hDlg, 0x141, Globals.szHeader);
+        SetDlgItemText(hDlg, 0x143, Globals.szFooter);
+        SetDlgItemText(hDlg, 0x14A, Globals.szMarginTop);
+        SetDlgItemText(hDlg, 0x150, Globals.szMarginBottom);
+        SetDlgItemText(hDlg, 0x147, Globals.szMarginLeft);
+        SetDlgItemText(hDlg, 0x14D, Globals.szMarginRight);
+        break;
     }
 
-  return FALSE;
+    return FALSE;
 }