WinHugs, fix module manager add button
Neil Mitchell <[email protected]>
| Newsgroups | gmane.comp.lang.haskell.cvs.hugs |
|---|---|
| Message-ID | <[email protected]> |
Hi, This fixes the module manager add button. Before it didn't work, now it does. It also abstracts out the showing of an open dialog box between the two places, and deletes the legacy code that made it all break. Thanks Neil _______________________________________________ Cvs-hugs mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-hugs
module_manager_add.patch
(application/octet-stream, 5.7 KB)
Index: src/winhugs/DlgMain.c
===================================================================
RCS file: /cvs/hugs98/src/winhugs/DlgMain.c,v
retrieving revision 1.11
diff -u -r1.11 DlgMain.c
--- src/winhugs/DlgMain.c 14 Sep 2005 10:15:35 -0000 1.11
+++ src/winhugs/DlgMain.c 7 Oct 2005 11:23:27 -0000
@@ -217,25 +217,9 @@
{
CHAR FileName[MAX_PATH];
CHAR Command[2048];
- OPENFILENAME ofn;
- FileName[0] = 0;
-
- memset(&ofn, 0, sizeof(ofn));
- ofn.lStructSize = sizeof(OPENFILENAME);
- ofn.hInstance = hThisInstance;
- ofn.hwndOwner = hWnd;
- ofn.lpstrFilter = "Haskell Files (*.hs;*.lhs)\0*.hs;*.lhs\0All Files (*.*)\0*.*\0";
- ofn.nFilterIndex = 1;
- ofn.lpstrFile= FileName;
- ofn.nMaxFile = MAX_PATH;
- ofn.lpstrFileTitle = NULL;
- ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_EXPLORER;
- ofn.lpfnHook = NULL;
- ofn.lpstrInitialDir = NULL;
-
- if (!GetOpenFileName(&ofn))
- return;
+ if (!ShowOpenFileDialog(hWnd, FileName))
+ return;
wsprintf(Command, ":load %s\n", ExpandFileName((String)FileName));
FireCommand(Command);
Index: src/winhugs/General.c
===================================================================
RCS file: /cvs/hugs98/src/winhugs/General.c,v
retrieving revision 1.2
diff -u -r1.2 General.c
--- src/winhugs/General.c 4 Oct 2005 15:26:38 -0000 1.2
+++ src/winhugs/General.c 7 Oct 2005 11:23:05 -0000
@@ -172,3 +172,24 @@
}
return Expanded;
}
+
+BOOL ShowOpenFileDialog(HWND hParent, LPSTR FileName)
+{
+ OPENFILENAME ofn;
+
+ FileName[0] = 0;
+ memset(&ofn, 0, sizeof(ofn));
+ ofn.lStructSize = sizeof(OPENFILENAME);
+ ofn.hInstance = hThisInstance;
+ ofn.hwndOwner = hParent;
+ ofn.lpstrFilter = "Haskell Files (*.hs;*.lhs)\0*.hs;*.lhs\0All Files (*.*)\0*.*\0";
+ ofn.nFilterIndex = 1;
+ ofn.lpstrFile= FileName;
+ ofn.nMaxFile = MAX_PATH;
+ ofn.lpstrFileTitle = NULL;
+ ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_EXPLORER;
+ ofn.lpfnHook = NULL;
+ ofn.lpstrInitialDir = NULL;
+
+ return GetOpenFileName(&ofn);
+}
\ No newline at end of file
Index: src/winhugs/Header.h
===================================================================
RCS file: /cvs/hugs98/src/winhugs/Header.h,v
retrieving revision 1.5
diff -u -r1.5 Header.h
--- src/winhugs/Header.h 16 Sep 2005 16:51:25 -0000 1.5
+++ src/winhugs/Header.h 7 Oct 2005 11:23:13 -0000
@@ -16,6 +16,8 @@
void ExecuteFile(LPSTR FileName);
void CenterDialogInParent(HWND hDlg);
void ExecuteFileDocs(LPSTR FileName);
+BOOL ShowOpenFileDialog(HWND hParent, LPSTR FileName);
+
// Exported from Registry.c
void RegistryReadFont(CHARFORMAT* cf);
Index: src/winhugs/Legacy.c
===================================================================
RCS file: /cvs/hugs98/src/winhugs/Legacy.c,v
retrieving revision 1.4
diff -u -r1.4 Legacy.c
--- src/winhugs/Legacy.c 8 Sep 2005 16:04:41 -0000 1.4
+++ src/winhugs/Legacy.c 7 Oct 2005 11:26:21 -0000
@@ -2359,85 +2359,6 @@
smUpto++;
}
-/* Used to get a file name using a common dialog box. Returns a pointer to */
-/* a static string where the file name is, or NULL if cancel button is pushed */
-/* Mask is the identificator of a string defined in Hugs.Rc where the type */
-/* of files and their masks are */
-static CHAR *local GetaFileName(HWND hWnd, UINT Mask)
-{
-#define MAXEXTENSIONS 15
-
- static CHAR Extensions[MAXEXTENSIONS][_MAX_EXT + 1];
- static OPENFILENAME ofn;
- static CHAR szFileName[_MAX_PATH];
- CHAR szFile[_MAX_PATH], szFileTitle[_MAX_PATH];
- UINT i, j, cbString, n;
- CHAR chReplace; /* Separator between different filters in szFilter */
- CHAR szFilter[300];
- char currentDir[_MAX_PATH];
-
- szFile[0] = '\0';
-
- if ((cbString = LoadString(hThisInstance, Mask,
- szFilter, sizeof(szFilter))) == 0) {
- /* Error */
- return NULL;
- }
- chReplace = szFilter[cbString - 1]; /* Get separator */
-
- /* Get valid extensions for files */
- for (n = 0, i = 0; szFilter[i];) {
- while (szFilter[i] != chReplace)
- i++;
- i++;
- do {
- while (szFilter[i] != '.')
- i++;
- i++;
- j = 0;
- while ((szFilter[i] != ';')
- && (szFilter[i] != chReplace)) {
- Extensions[n][j++] = szFilter[i++];
- }
- Extensions[n++][j] = (CHAR) 0;
- } while (szFilter[i] == ';');
- i++;
- }
- for (; n < MAXEXTENSIONS; n++)
- Extensions[n][0] = (CHAR) 0;
-
- /* Replace separator with NULL */
- for (i = 0; szFilter[i] != '\0'; i++) {
- if (szFilter[i] == chReplace)
- szFilter[i] = '\0';
- }
-
- memset(&ofn, 0, sizeof(OPENFILENAME));
-
- ofn.lStructSize = sizeof(OPENFILENAME);
- ofn.hInstance = hThisInstance;
- ofn.hwndOwner = hWnd;
- ofn.lpstrFilter = szFilter;
- ofn.nFilterIndex = 1;
- ofn.lpstrFile = szFile;
- ofn.nMaxFile = sizeof(szFile);
- ofn.lpstrFileTitle = szFileTitle;
- ofn.nMaxFileTitle = sizeof(szFileTitle);
- ofn.Flags =
- OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY |
- OFN_EXPLORER;;
- ofn.lpfnHook = NULL;
- GetCurrentDirectory(_MAX_PATH, currentDir);
- ofn.lpstrInitialDir = currentDir;
-
- if (GetOpenFileName(&ofn)) {
- strcpy(szFileName, ofn.lpstrFile);
- return szFileName;
- } else {
- return NULL;
- }
-}
-
INT_PTR CALLBACK ScriptManDlgProc(HWND hDlg, UINT msg,
WPARAM wParam, LPARAM lParam)
{
@@ -2504,11 +2425,10 @@
"Add script",
MB_ICONEXCLAMATION | MB_OK);
else {
- String s =
- GetaFileName(hDlg, IDS_FILTERFILE);
- if (s)
- SmAddScr(hDlg, s);
- }
+ CHAR Buffer[MAX_PATH];
+ if (ShowOpenFileDialog(hDlg, Buffer))
+ SmAddScr(hDlg, Buffer);
+ }
return TRUE;
case ID_DELSCRIPT: