-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Way back in july, jeremey of sourcegear posted a patch to improve file
type handling on Win32.  [1]  This has never been committed, or even
discussed.  I have attached it here fo your convenience.  It applies
cleanly, but as it is Win32 specific, I can't test it.  Could someone take
a look at this? 

Thanks

           
                                sam th               
                                [EMAIL PROTECTED]
                                http://www.abisource.com/~sam/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE5tx7at+kM0Mq9M/wRAnAbAKDD5oZlivzG4XPC4rVqSZA73WeB5ACdGEV2
FBLJ20il+2vcA/3YATmz7Pk=
=DgFK
-----END PGP SIGNATURE-----
Index: src/af/xap/win/xap_Win32Resources.rc2
===================================================================
RCS file: /cvsroot/abi/src/af/xap/win/xap_Win32Resources.rc2,v
retrieving revision 1.6
diff -u -r1.6 xap_Win32Resources.rc2
--- src/af/xap/win/xap_Win32Resources.rc2       2000/07/09 22:04:29     1.6
+++ src/af/xap/win/xap_Win32Resources.rc2       2000/07/24 20:26:52
@@ -27,12 +27,14 @@
 //
 //////////////////////////////////////////////////////////////////
 
-#define XAP_RID_DIALOG_WINDOWMORE                                      100
-#define XAP_RID_DIALOG_ZOOM                                                    101
+#define XAP_RID_DIALOG_WINDOWMORE                              100
+#define XAP_RID_DIALOG_ZOOM                                    101
 #define XAP_RID_DIALOG_INSERT_SYMBOL                           102
 #define XAP_RID_DIALOG_INSERT_PICTURE                          103
+#define XAP_RID_DIALOG_FILETYPEPROMPT                          104
 
 #include "xap_Win32Res_DlgWindowMore.rc2"
 #include "xap_Win32Res_DlgZoom.rc2"
 #include "xap_Win32Res_DlgInsertSymbol.rc2"
 #include "xap_Win32Res_DlgInsertPicture.rc2"
+#include "xap_Win32Res_DlgFiletypePrompt.rc2"
Index: src/af/xap/win/xap_Win32Slurp.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/xap/win/xap_Win32Slurp.cpp,v
retrieving revision 1.10
diff -u -r1.10 xap_Win32Slurp.cpp
--- src/af/xap/win/xap_Win32Slurp.cpp   2000/05/26 21:24:49     1.10
+++ src/af/xap/win/xap_Win32Slurp.cpp   2000/07/24 20:26:52
@@ -31,6 +31,7 @@
 #include "xap_Win32App.h"
 #include "xap_Win32Slurp.h"
 #include "xap_Prefs.h"
+#include "xap_Win32Resources.rc2"
 
 //////////////////////////////////////////////////////////////////
 // "Slurp" (aka "Leech") refers to the ability of an application
@@ -479,7 +480,7 @@
                        else
                        {
                                
-                               if (!_askForUpdateExePathname())
+                               if (!_askForUpdateExePathname(buf, szExePathname, 
+szContentType))
                                        goto CleanupMess;
                        }
                }
@@ -663,16 +664,41 @@
        return bResult;
 }
 
-UT_Bool XAP_Win32Slurp::_askForUpdateExePathname(void) const
-{
-       // TODO install a real dialog that asks the user if
-       // TODO we want to change the pathname of the exe in
-       // TODO the association and to set preference values
-       // TODO to never asking again or always set it or
-       // TODO whatever...
-
-       UT_DEBUGMSG(("Registry: Need to update EXE pathname...\n"));
-       UT_Bool bResult = UT_FALSE;
+BOOL CALLBACK dialogCallback(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM 
+lParam)
+{      
+  switch (message) 
+    { 
+    case WM_INITDIALOG: 
+      {        
+       SetDlgItemText(hwndDlg,  XAP_RID_DIALOG_FILETYPEPROMPT_TEXT_EXPLANATION, 
+(const char *)lParam);
+      }
+    case WM_COMMAND: 
+      switch (LOWORD(wParam)) 
+       { 
+       case IDYES: 
+         EndDialog(hwndDlg, wParam);
+         return TRUE; 
+       case IDNO: 
+         if (IsDlgButtonChecked(hwndDlg, XAP_RID_DIALOG_FILETYPEPROMPT_CHECKBOX))
+           UT_DEBUGMSG(("The Never Ask checkbox was checked.\n"));
+         else
+           UT_DEBUGMSG(("The Never Ask checkbox was not checked.\n"));
+           
+         EndDialog(hwndDlg, wParam);
+         return FALSE; 
+       }            
+    } 
+  return FALSE;
+}
+
+UT_Bool XAP_Win32Slurp::_askForUpdateExePathname(const char * oldpath, const char * 
+newpath, const char* contenttype) const
+{
+  char tmpstring[500];
+  sprintf(tmpstring, "The file type \"%s\" is registered to be opened by the 
+program\n%s,\n but you are running the program\n%s\nWould you like to change the 
+default handler?", contenttype, oldpath, newpath);
+  DialogBoxParam(NULL, MAKEINTRESOURCE(XAP_RID_DIALOG_FILETYPEPROMPT), NULL, 
+(DLGPROC)dialogCallback, (LPARAM)tmpstring);
+  
+  UT_DEBUGMSG(("Registry: Need to update EXE pathname...\n"));
+  UT_Bool bResult = UT_FALSE;
 
        return bResult;
 }
Index: src/af/xap/win/xap_Win32Slurp.h
===================================================================
RCS file: /cvsroot/abi/src/af/xap/win/xap_Win32Slurp.h,v
retrieving revision 1.3
diff -u -r1.3 xap_Win32Slurp.h
--- src/af/xap/win/xap_Win32Slurp.h     1999/05/14 17:14:40     1.3
+++ src/af/xap/win/xap_Win32Slurp.h     2000/07/24 20:26:52
@@ -40,7 +40,7 @@
 
 protected:
        UT_Bool                                 
_askForStealFromAnotherApplication(void) const;
-       UT_Bool                                 _askForUpdateExePathname(void) const;
+       UT_Bool                                 _askForUpdateExePathname(const char * 
+oldpath, const char * newpath, const char * contenttype) const;
        UT_Bool                                 
_askForStealMimeFromAnotherApplication(void) const;
        
        XAP_Win32App *                  m_pApp;

Reply via email to