new option to open explorer subfolders in separate windows
authorMartin Fuchs <fuchs.martin@gmail.com>
Sun, 2 Oct 2005 11:40:41 +0000 (11:40 +0000)
committerMartin Fuchs <fuchs.martin@gmail.com>
Sun, 2 Oct 2005 11:40:41 +0000 (11:40 +0000)
svn path=/trunk/; revision=18209

reactos/subsys/system/explorer/dialogs/settings.cpp
reactos/subsys/system/explorer/explorer-cfg-template.xml
reactos/subsys/system/explorer/explorer-cz.rc
reactos/subsys/system/explorer/explorer-en.rc
reactos/subsys/system/explorer/explorer-es.rc
reactos/subsys/system/explorer/explorer-ru.rc
reactos/subsys/system/explorer/explorer-sv.rc
reactos/subsys/system/explorer/resource.h
reactos/subsys/system/explorer/shell/mainframe.cpp
reactos/subsys/system/explorer/shell/mainframe.h

index 77ba39a..0b80458 100644 (file)
@@ -238,10 +238,13 @@ MdiSdiDlg::MdiSdiDlg(HWND hwnd)
 
        XMLPos explorer_options = g_Globals.get_cfg("general/explorer");
        bool mdi = XMLBool(explorer_options, "mdi", true);
+       bool separateFolders = XMLBool(explorer_options, "separate-folders", true);
 
        int id = mdi? IDC_MDI: IDC_SDI;
        CheckDlgButton(hwnd, id, BST_CHECKED);
        SetFocus(GetDlgItem(hwnd, id));
+
+       CheckDlgButton(hwnd, IDC_SEPARATE_SUBFOLDERS, separateFolders?BST_CHECKED:BST_UNCHECKED);
 }
 
 int    MdiSdiDlg::Command(int id, int code)
@@ -250,8 +253,12 @@ int        MdiSdiDlg::Command(int id, int code)
                switch(id) {
                  case IDOK: {
                        bool mdi = IsDlgButtonChecked(_hwnd, IDC_MDI)==BST_CHECKED;
+                       bool separateFolders = IsDlgButtonChecked(_hwnd, IDC_SEPARATE_SUBFOLDERS)==BST_CHECKED;
+
                        XMLPos explorer_options = g_Globals.get_cfg("general/explorer");
+
                        XMLBoolRef(explorer_options, "mdi") = mdi;
+                       XMLBoolRef(explorer_options, "separate-folders") = separateFolders;
                  } // fall through
 
                  case IDCANCEL:
index c60a058..9597e12 100644 (file)
@@ -2,14 +2,13 @@
 <explorer-cfg>
   <general>
     <look-and-feel name="classic"/>
-       <explorer mdi="true"/>
+       <explorer mdi="true" separate-folders="true"/>
        <language name="EN"/>
   </general>
 
   <desktop>
     <icon-alignment algorithm="simple" start="left-top" direction="horizontal"/>
   </desktop>
-
   <desktopbar>
     <options show-clock="true"/>
     <positions>
index ecc187c..05dc623 100644 (file)
@@ -362,7 +362,7 @@ BEGIN
     PUSHBUTTON      "&Zru\9ait",IDCANCEL,151,153,50,14\r
 END\r
 \r
-IDD_MDI_SDI DIALOGEX 0, 0, 194, 138\r
+IDD_MDI_SDI DIALOGEX 0, 0, 194, 157\r
 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
 EXSTYLE WS_EX_APPWINDOW\r
 CAPTION "Volba MDI / SDI módu"\r
@@ -371,15 +371,18 @@ BEGIN
     LTEXT           "Prosím zvolte si Vámi upøednostòovaný zpùsob zobrazení oken prùzkumníka:",\r
                     IDC_STATIC,7,7,160,8\r
     CONTROL         "&MDI (Mnoho dokumentový interface)",IDC_MDI,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,121,10\r
-    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13\r
+                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,121,10\r
     CONTROL         "&SDI (Jedno dokumentový interface)",IDC_SDI,"Button",\r
-                    BS_AUTORADIOBUTTON,7,53,115,10\r
+                    BS_AUTORADIOBUTTON,7,62,115,10\r
+    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13\r
     CONTROL         171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13\r
+    CONTROL         "Open Subfolders in s&eparate windows",\r
+                    IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX | \r
+                    WS_TABSTOP,7,90,135,10\r
     LTEXT           "Toto nastavení bude pou\9eito jako implicitní pro v\9aechny okna prùzkumníka.",\r
-                    IDC_STATIC,7,76,174,22\r
-    DEFPUSHBUTTON   "&Nastavit",IDOK,29,105,50,14,WS_GROUP\r
-    PUSHBUTTON      "&Zru\9ait",IDCANCEL,106,105,50,14\r
+                    IDC_STATIC,7,111,174,22\r
+    DEFPUSHBUTTON   "&Nastavit",IDOK,29,136,50,14,WS_GROUP\r
+    PUSHBUTTON      "&Zru\9ait",IDCANCEL,106,136,50,14\r
 END\r
 \r
 \r
index ed532bd..3a863d1 100644 (file)
@@ -360,24 +360,27 @@ BEGIN
     PUSHBUTTON      "&Cancel",IDCANCEL,151,153,50,14\r
 END\r
 \r
-IDD_MDI_SDI DIALOGEX 0, 0, 194, 138\r
+IDD_MDI_SDI DIALOGEX 0, 0, 194, 157\r
 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
 EXSTYLE WS_EX_APPWINDOW\r
 CAPTION "Choose MDI / SDI mode"\r
-FONT 8, "MS Sans Serif", 0, 0, 0x1\r
+FONT 8, "MS Sans Serif"\r
 BEGIN\r
     LTEXT           "Please select your prefered explorer user interface:",\r
                     IDC_STATIC,7,7,160,8\r
     CONTROL         "&MDI (multiple document interface)",IDC_MDI,"Button",\r
                     BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,121,10\r
-    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13\r
     CONTROL         "&SDI (single document interface)",IDC_SDI,"Button",\r
                     BS_AUTORADIOBUTTON,7,62,115,10\r
+    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13\r
     CONTROL         171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13\r
+    CONTROL         "Open Subfolders in s&eparate windows",\r
+                    IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX | \r
+                    WS_TABSTOP,7,90,135,10\r
     LTEXT           "This setting will be used as default for all explorer windows in the future.",\r
-                    IDC_STATIC,7,91,174,22\r
-    DEFPUSHBUTTON   "&OK",IDOK,29,117,50,14,WS_GROUP\r
-    PUSHBUTTON      "&Cancel",IDCANCEL,106,117,50,14\r
+                    IDC_STATIC,7,111,174,22\r
+    DEFPUSHBUTTON   "&OK",IDOK,29,136,50,14,WS_GROUP\r
+    PUSHBUTTON      "&Cancel",IDCANCEL,106,136,50,14\r
 END\r
 \r
 \r
index 81b5b79..9546cbb 100644 (file)
@@ -360,22 +360,27 @@ BEGIN
     PUSHBUTTON      "&Cancelar",IDCANCEL,151,153,50,14\r
 END\r
 \r
-IDD_MDI_SDI DIALOGEX 0, 0, 194, 138\r
+IDD_MDI_SDI DIALOGEX 0, 0, 194, 157\r
 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
 EXSTYLE WS_EX_APPWINDOW\r
 CAPTION "Elegir modo MDI / SDI"\r
-FONT 8, "MS Sans Serif", 0, 0, 0x1\r
+FONT 8, "MS Sans Serif"\r
 BEGIN\r
     LTEXT           "Por favor, seleccione su interfaz de usuario preferida para el explorador:",\r
                     IDC_STATIC,7,7,170,18\r
     CONTROL         "&MDI (Multiple Document Interface)",IDC_MDI,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,123,10\r
+                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,123,10\r
     CONTROL         "&SDI (Single Document Interface)",IDC_SDI,"Button",\r
-                    BS_AUTORADIOBUTTON,7,53,116,10\r
+                    BS_AUTORADIOBUTTON,7,62,116,10\r
+    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13\r
+    CONTROL         171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13\r
+    CONTROL         "Open Subfolders in s&eparate windows",\r
+                    IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX | \r
+                    WS_TABSTOP,7,90,135,10\r
     LTEXT           "Esta configuración se usará por defecto y apartir de ahora para todas las ventanas del explorador.",\r
-                    IDC_STATIC,7,76,174,22\r
-    DEFPUSHBUTTON   "&Aceptar",IDOK,29,105,50,14,WS_GROUP\r
-    PUSHBUTTON      "&Cancelar",IDCANCEL,106,105,50,14\r
+                    IDC_STATIC,7,111,174,22\r
+    DEFPUSHBUTTON   "&Aceptar",IDOK,29,136,50,14,WS_GROUP\r
+    PUSHBUTTON      "&Cancelar",IDCANCEL,106,136,50,14\r
 END\r
 \r
 \r
index 54c2e97..615ada8 100644 (file)
@@ -330,7 +330,7 @@ BEGIN
     PUSHBUTTON      "&Ñïðàâêà",254,158,42,47,14\r
 END\r
 \r
-IDD_MDI_SDI DIALOGEX 0, 0, 194, 138\r
+IDD_MDI_SDI DIALOGEX 0, 0, 194, 157\r
 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
 EXSTYLE WS_EX_APPWINDOW\r
 CAPTION "Âûáåðèòå ðåæèì MDI / SDI"\r
@@ -339,15 +339,18 @@ BEGIN
     LTEXT           "Âûáåðèòå íàèáîëåå ïðåäïî÷òèòåëüíûé äëÿ âàñ\nâèä ïðîâîäíèêà:",\r
                     IDC_STATIC,7,7,171,17\r
     CONTROL         "&MDI (ìíîãîäîêóìåíòíûé íòåðôåéñ)",IDC_MDI,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,136,10\r
-    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13\r
+                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,136,10\r
     CONTROL         "&SDI (îäíîäîêóìåíòíûé èíòåðôåéñ)",IDC_SDI,"Button",\r
-                    BS_AUTORADIOBUTTON,7,53,134,10\r
+                    BS_AUTORADIOBUTTON,7,62,134,10\r
+    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13\r
     CONTROL         171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13\r
+    CONTROL         "Open Subfolders in s&eparate windows",\r
+                    IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX | \r
+                    WS_TABSTOP,7,90,135,10\r
     LTEXT           "Ýòè íàñòðîéêè áóäóò èñïîëüçîâàííû, êàê çíà÷åíèå ïî óìîë÷àíèþ äëÿ âñåõ îêîí ïðîâîäíèêà â áóäóùåì.",\r
-                    IDC_STATIC,7,76,174,26\r
-    DEFPUSHBUTTON   "&OK",IDOK,29,105,50,14,WS_GROUP\r
-    PUSHBUTTON      "&Cancel",IDCANCEL,106,105,50,14\r
+                    IDC_STATIC,7,107,174,26\r
+    DEFPUSHBUTTON   "&OK",IDOK,29,136,50,14,WS_GROUP\r
+    PUSHBUTTON      "&Cancel",IDCANCEL,106,136,50,14\r
 END\r
 \r
 IDD_NOTIFYAREA DIALOGEX 0, 0, 208, 174\r
index 4013ea4..7bb152a 100644 (file)
@@ -397,23 +397,26 @@ BEGIN
     PUSHBUTTON      "&Avbryt",IDCANCEL,151,153,50,14\r
 END\r
 \r
-IDD_MDI_SDI DIALOGEX 0, 0, 194, 138\r
+IDD_MDI_SDI DIALOGEX 0, 0, 194, 157\r
 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
 EXSTYLE WS_EX_APPWINDOW\r
 CAPTION "Välj MDI / SDI Läge"\r
-FONT 8, "MS Sans Serif", 0, 0, 0x1\r
+FONT 8, "MS Sans Serif"\r
 BEGIN\r
     LTEXT           "Välj det gränssnitt du föredrar:",IDC_STATIC,7,7,160,8\r
     CONTROL         "&MDI (multiple document interface)",IDC_MDI,"Button",\r
-                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,121,10\r
-    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13\r
+                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,121,10\r
     CONTROL         "&SDI (single document interface)",IDC_SDI,"Button",\r
-                    BS_AUTORADIOBUTTON,7,53,115,10\r
+                    BS_AUTORADIOBUTTON,7,62,115,10\r
+    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13\r
     CONTROL         171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13\r
+    CONTROL         "Open Subfolders in s&eparate windows",\r
+                    IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX | \r
+                    WS_TABSTOP,7,90,135,10\r
     LTEXT           "Den här inställningen kommer att gälla som standard i alla nya explorer-fönster.",\r
-                    IDC_STATIC,7,76,174,22\r
-    DEFPUSHBUTTON   "&OK",IDOK,29,105,50,14,WS_GROUP\r
-    PUSHBUTTON      "&Avbryt",IDCANCEL,106,105,50,14\r
+                    IDC_STATIC,7,107,174,22\r
+    DEFPUSHBUTTON   "&OK",IDOK,29,136,50,14,WS_GROUP\r
+    PUSHBUTTON      "&Avbryt",IDCANCEL,106,136,50,14\r
 END\r
 \r
 \r
index 4ad7b4d..60396cd 100644 (file)
 #define IDC_WIN_VERSION                 1030
 #define IDC_MDI                         1030
 #define IDC_SDI                         1031
+#define IDC_SEPARATE_SUBFOLDERS         1034
 #define ID_REFRESH                      1704
 #define ID_ABOUT_WINEFILE               1705
 #define IDS_VERSION_STR                 5000
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        169
 #define _APS_NEXT_COMMAND_VALUE         40024
-#define _APS_NEXT_CONTROL_VALUE         1034
+#define _APS_NEXT_CONTROL_VALUE         1035
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif
index 86a305a..54b8471 100644 (file)
@@ -103,17 +103,24 @@ int MainFrameBase::OpenShellFolders(LPIDA pida, HWND hFrameWnd)
                if (SUCCEEDED(hr))
                        if (attribs & SFGAO_FOLDER) {
                                try {
+                                       XMLPos explorer_options = g_Globals.get_cfg("general/explorer");
+
+                                       bool mdi = XMLBool(explorer_options, "mdi", true);
+                                       bool separateFolders = XMLBool(explorer_options, "separate-folders", true);
+
                                        ShellPath pidl_abs = ShellPath(pidl).create_absolute_pidl(parent_pidl);
 
-                                       if (hFrameWnd) {
-                                               if (SendMessage(hFrameWnd, PM_OPEN_WINDOW, OWM_PIDL, (LPARAM)(LPCITEMIDLIST)pidl_abs))
+                                       if (hFrameWnd && (mdi || !separateFolders)) {
+                                               int flags = OWM_PIDL;
+
+                                               if (separateFolders)
+                                                       flags |= OWM_SEPARATE;
+
+                                               if (SendMessage(hFrameWnd, PM_OPEN_WINDOW, flags, (LPARAM)(LPCITEMIDLIST)pidl_abs))
                                                        ++cnt;
                                        } else {
                                                HWND hwnd;
 #ifndef _NO_MDI
-                                               XMLPos explorer_options = g_Globals.get_cfg("general/explorer");
-                                               bool mdi = XMLBool(explorer_options, "mdi", true);
-
                                                if (mdi)
                                                        hwnd = MDIMainFrame::Create(pidl_abs, 0);
                                                else
@@ -900,7 +907,9 @@ BOOL MDIMainFrame::TranslateMsg(MSG* pmsg)
 LRESULT MDIMainFrame::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
 {
        switch(nmsg) {
-         case PM_OPEN_WINDOW: {CONTEXT("MDIMainFrame PM_OPEN_WINDOW");
+         case PM_OPEN_WINDOW: {
+               CONTEXT("MDIMainFrame PM_OPEN_WINDOW");
+
                TCHAR buffer[MAX_PATH];
                LPCTSTR path;
                ShellPath shell_path = DesktopFolderPath();
@@ -940,11 +949,11 @@ LRESULT MDIMainFrame::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
                         // Shell Namespace as default view
                        ShellChildWndInfo create_info(_hmdiclient, path, shell_path);
 
-                       create_info._pos.showCmd = SW_SHOWMAXIMIZED;
-                       create_info._pos.rcNormalPosition.left = 0;
-                       create_info._pos.rcNormalPosition.top = 0;
-                       create_info._pos.rcNormalPosition.right = 600;
-                       create_info._pos.rcNormalPosition.bottom = 280;
+                       create_info._pos.showCmd = wparam&OWM_SEPARATE? SW_SHOWNORMAL: SW_SHOWMAXIMIZED;
+                       create_info._pos.rcNormalPosition.left = CW_USEDEFAULT;
+                       create_info._pos.rcNormalPosition.top = CW_USEDEFAULT;
+                       create_info._pos.rcNormalPosition.right = CW_USEDEFAULT;
+                       create_info._pos.rcNormalPosition.bottom = CW_USEDEFAULT;
 
                        create_info._open_mode = (OPEN_WINDOW_MODE)wparam;
 
@@ -1421,7 +1430,9 @@ LRESULT SDIMainFrame::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
                }
                break;
 
-         case PM_OPEN_WINDOW: {CONTEXT("SDIMainFrame PM_OPEN_WINDOW");
+         case PM_OPEN_WINDOW: {
+               CONTEXT("SDIMainFrame PM_OPEN_WINDOW");
+
                TCHAR buffer[MAX_PATH];
                LPCTSTR path;
                ShellPath shell_path = DesktopFolderPath();
@@ -1449,9 +1460,10 @@ LRESULT SDIMainFrame::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
                                *buffer = '\0';
 
                        path = buffer;
+                       shell_path = path;
                }
 
-               jump_to(shell_path, (OPEN_WINDOW_MODE)wparam);
+               jump_to(shell_path, (OPEN_WINDOW_MODE)wparam);  //@todo content of 'path' not used any more
                return TRUE;}   // success
 
          default: def:
index cc20fa5..e31a42b 100644 (file)
@@ -27,7 +27,7 @@
 
 
 #define        PM_OPEN_WINDOW                  (WM_APP+0x07)
-enum OPEN_WINDOW_MODE {OWM_EXPLORE=1, OWM_DETAILS=2, OWM_PIDL=4};
+enum OPEN_WINDOW_MODE {OWM_EXPLORE=1, OWM_DETAILS=2, OWM_PIDL=4, OWM_SEPARATE=8};
 
 
  /// Explorer frame window base class