regedit[2/3]: add option to export only a specified branch

Mikołaj Zalewski mikolaj at zalewski.pl
Tue Oct 3 03:07:34 CDT 2006


I've also renamed the IDD_DIALOG1 to IDD_EXPORT_TEMPALTE and removed it 
from other languages so that they use the English version (instead of 
the empty template) until the resource is translated
-------------- next part --------------
diff --git a/programs/regedit/Bg.rc b/programs/regedit/Bg.rc
index f7ae2a5..73d3fad 100644
--- a/programs/regedit/Bg.rc
+++ b/programs/regedit/Bg.rc
@@ -292,13 +292,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialog"
diff --git a/programs/regedit/Cs.rc b/programs/regedit/Cs.rc
index 3a46c6a..54bf5da 100644
--- a/programs/regedit/Cs.rc
+++ b/programs/regedit/Cs.rc
@@ -254,13 +254,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialog"
diff --git a/programs/regedit/De.rc b/programs/regedit/De.rc
index fe80da8..030ab2c 100644
--- a/programs/regedit/De.rc
+++ b/programs/regedit/De.rc
@@ -308,13 +308,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialog"
diff --git a/programs/regedit/En.rc b/programs/regedit/En.rc
index ba07a8f..3908ce8 100644
--- a/programs/regedit/En.rc
+++ b/programs/regedit/En.rc
@@ -207,6 +207,17 @@ BEGIN
     DEFPUSHBUTTON   "OK",IDOK,195,6,30,11,WS_GROUP
 END
 
+IDD_EXPORT_TEMPLATE DIALOG DISCARDABLE  50, 50, 278, 54
+STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
+    WS_BORDER
+FONT 8, "MS Shell Dlg"
+BEGIN
+    GROUPBOX "&Export registry", IDC_EXPORT_BASE, 6, 6, 266, 42, WS_GROUP
+    AUTORADIOBUTTON "&All", IDC_EXPORT_ALL, 12, 15, 244, 12
+    AUTORADIOBUTTON "&Selected branch:", IDC_EXPORT_SELECTED, 12, 30, 70, 12
+    EDITTEXT IDC_EXPORT_PATH, 82, 30, 184, 12
+END
+
 IDD_FIND DIALOG DISCARDABLE  22, 17, 210, 85
 STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
 CAPTION "Find"
@@ -386,13 +397,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialog"
diff --git a/programs/regedit/Es.rc b/programs/regedit/Es.rc
index 61e2e76..bd8e0aa 100644
--- a/programs/regedit/Es.rc
+++ b/programs/regedit/Es.rc
@@ -249,13 +249,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Diálogo"
diff --git a/programs/regedit/Fr.rc b/programs/regedit/Fr.rc
index 81b12b4..24b1376 100644
--- a/programs/regedit/Fr.rc
+++ b/programs/regedit/Fr.rc
@@ -319,13 +319,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Boîte de dialogue"
diff --git a/programs/regedit/Hu.rc b/programs/regedit/Hu.rc
index 611a7da..c35f629 100644
--- a/programs/regedit/Hu.rc
+++ b/programs/regedit/Hu.rc
@@ -257,13 +257,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialógus"
diff --git a/programs/regedit/It.rc b/programs/regedit/It.rc
index d4ff631..d7d1542 100644
--- a/programs/regedit/It.rc
+++ b/programs/regedit/It.rc
@@ -302,13 +302,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialogo"
diff --git a/programs/regedit/Ja.rc b/programs/regedit/Ja.rc
index 22b5153..4a38d3b 100644
--- a/programs/regedit/Ja.rc
+++ b/programs/regedit/Ja.rc
@@ -250,13 +250,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 9, "MS UI Gothic"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "ƒ_ƒCƒAƒƒO"
diff --git a/programs/regedit/Ko.rc b/programs/regedit/Ko.rc
index 2ca2f2c..494cda0 100644
--- a/programs/regedit/Ko.rc
+++ b/programs/regedit/Ko.rc
@@ -324,13 +324,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "´ëÈ­»óÀÚ"
diff --git a/programs/regedit/Nl.rc b/programs/regedit/Nl.rc
index 738be48..969c2b6 100644
--- a/programs/regedit/Nl.rc
+++ b/programs/regedit/Nl.rc
@@ -302,13 +302,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialog"
diff --git a/programs/regedit/No.rc b/programs/regedit/No.rc
index 0028256..66c306d 100644
--- a/programs/regedit/No.rc
+++ b/programs/regedit/No.rc
@@ -318,13 +318,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialog"
diff --git a/programs/regedit/Pl.rc b/programs/regedit/Pl.rc
index 5f98953..1b87bdd 100644
--- a/programs/regedit/Pl.rc
+++ b/programs/regedit/Pl.rc
@@ -318,13 +318,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialog"
diff --git a/programs/regedit/Pt.rc b/programs/regedit/Pt.rc
index 938f05d..1ac5422 100644
--- a/programs/regedit/Pt.rc
+++ b/programs/regedit/Pt.rc
@@ -431,16 +431,6 @@ END
 
 LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
-
-LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialog"
diff --git a/programs/regedit/Ru.rc b/programs/regedit/Ru.rc
index e1fb4b5..704f0d5 100644
--- a/programs/regedit/Ru.rc
+++ b/programs/regedit/Ru.rc
@@ -178,13 +178,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Äèàëîã"
diff --git a/programs/regedit/Si.rc b/programs/regedit/Si.rc
index 0654eb7..bd12835 100644
--- a/programs/regedit/Si.rc
+++ b/programs/regedit/Si.rc
@@ -178,13 +178,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Dialog"
diff --git a/programs/regedit/Tr.rc b/programs/regedit/Tr.rc
index 6ba6896..ed90d8f 100644
--- a/programs/regedit/Tr.rc
+++ b/programs/regedit/Tr.rc
@@ -302,13 +302,6 @@ END
  * Dialog
  */
 
-IDD_DIALOG1 DIALOG DISCARDABLE  50, 50, 268, 98
-STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
-    WS_BORDER
-FONT 8, "MS Shell Dlg"
-BEGIN
-END
-
 IDD_DIALOG2 DIALOG DISCARDABLE  0, 0, 187, 95
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Ýletiþim Kutusu"
diff --git a/programs/regedit/framewnd.c b/programs/regedit/framewnd.c
index f4b3c39..bb05ea4 100644
--- a/programs/regedit/framewnd.c
+++ b/programs/regedit/framewnd.c
@@ -239,18 +239,46 @@ static BOOL CheckCommDlgError(HWND hWnd)
     return TRUE;
 }
 
+static void ExportRegistryFile_StoreSelection(HWND hdlg, OPENFILENAME *pOpenFileName)
+{
+    if (IsDlgButtonChecked(hdlg, IDC_EXPORT_SELECTED))
+    {
+        INT len = SendDlgItemMessage(hdlg, IDC_EXPORT_PATH, WM_GETTEXTLENGTH, 0, 0);
+        pOpenFileName->lCustData = (LPARAM)HeapAlloc(GetProcessHeap(), 0, (len+1)*sizeof(TCHAR));
+        SendDlgItemMessage(hdlg, IDC_EXPORT_PATH, WM_GETTEXT, len+1, pOpenFileName->lCustData);
+    }
+    else
+        pOpenFileName->lCustData = (LPARAM)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(TCHAR));
+}
+
 static UINT_PTR CALLBACK ExportRegistryFile_OFNHookProc(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam)
 {
-    OPENFILENAME* pOpenFileName;
-    OFNOTIFY* pOfNotify;
+    static OPENFILENAME* pOpenFileName;
+    OFNOTIFY *pOfNotify;
+    LPTSTR path;
 
     switch (uiMsg) {
     case WM_INITDIALOG:
         pOpenFileName = (OPENFILENAME*)lParam;
         break;
+    case WM_COMMAND:
+        if (LOWORD(wParam) == IDC_EXPORT_PATH && HIWORD(wParam) == EN_UPDATE)
+            CheckRadioButton(hdlg, IDC_EXPORT_ALL, IDC_EXPORT_SELECTED, IDC_EXPORT_SELECTED);
+        break;
     case WM_NOTIFY:
         pOfNotify = (OFNOTIFY*)lParam;
-    if (pOfNotify->hdr.code == CDN_INITDONE) {}
+        switch (pOfNotify->hdr.code)
+        {
+            case CDN_INITDONE:
+                path = GetItemFullPath(g_pChildWnd->hTreeWnd, NULL, FALSE);
+                SendDlgItemMessage(hdlg, IDC_EXPORT_PATH, WM_SETTEXT, 0, (LPARAM)path);
+                HeapFree(GetProcessHeap(), 0, path);
+                CheckRadioButton(hdlg, IDC_EXPORT_ALL, IDC_EXPORT_SELECTED, IDC_EXPORT_ALL);
+                break;
+            case CDN_FILEOK:
+                ExportRegistryFile_StoreSelection(hdlg, pOpenFileName);
+                break;
+        }
         break;
     default:
         break;
@@ -312,13 +340,13 @@ static BOOL ExportRegistryFile(HWND hWnd
     InitOpenFileName(hWnd, &ofn);
     LoadString(hInst, IDS_FILEDIALOG_EXPORT_TITLE, title, COUNT_OF(title));
     ofn.lpstrTitle = title;
-    /*    ofn.lCustData = ;*/
-    ofn.Flags = OFN_ENABLETEMPLATE | OFN_EXPLORER | OFN_HIDEREADONLY;
+    ofn.lCustData = 0; 
+    ofn.Flags = OFN_ENABLETEMPLATE | OFN_ENABLEHOOK | OFN_EXPLORER | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
     ofn.lpfnHook = ExportRegistryFile_OFNHookProc;
-    ofn.lpTemplateName = MAKEINTRESOURCE(IDD_DIALOG1);
+    ofn.lpTemplateName = MAKEINTRESOURCE(IDD_EXPORT_TEMPLATE);
     if (GetSaveFileName(&ofn)) {
         BOOL result;
-        result = export_registry_key(ofn.lpstrFile, ExportKeyPath);
+        result = export_registry_key(ofn.lpstrFile, (LPTSTR)ofn.lCustData);
         if (!result) {
             /*printf("Can't open file \"%s\"\n", ofn.lpstrFile);*/
             return FALSE;
diff --git a/programs/regedit/resource.h b/programs/regedit/resource.h
index 80a11e7..a563297 100644
--- a/programs/regedit/resource.h
+++ b/programs/regedit/resource.h
@@ -36,7 +36,7 @@ #define IDI_SMALL                       
 #define IDC_REGEDIT                     109
 #define IDC_REGEDIT_FRAME               110
 #define IDR_REGEDIT_MENU                130
-#define IDD_DIALOG1                     131
+#define IDD_EXPORT_TEMPLATE             131
 #define IDI_OPEN_FILE                   132
 #define IDD_DIALOG2                     132
 #define IDI_CLOSED_FILE                 133
@@ -145,4 +145,9 @@ #define IDC_FIND_VALUES                 
 #define IDC_FIND_CONTENT                2007
 #define IDC_FIND_WHOLE                  2008
 
+#define IDC_EXPORT_BASE                 100
+#define IDC_EXPORT_ALL                  101
+#define IDC_EXPORT_SELECTED             102
+#define IDC_EXPORT_PATH                 103
+
 #define IDC_STATIC                      -1
-- 
1.4.2.1


More information about the wine-patches mailing list