new option to open explorer subfolders in separate windows

svn path=/trunk/; revision=18209
This commit is contained in:
Martin Fuchs 2005-10-02 11:40:41 +00:00
parent 5ffe4c4880
commit 63935e005c
10 changed files with 88 additions and 52 deletions

View 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:

View 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>

View file

@ -362,7 +362,7 @@ BEGIN
PUSHBUTTON "&Zrušit",IDCANCEL,151,153,50,14
END
IDD_MDI_SDI DIALOGEX 0, 0, 194, 138
IDD_MDI_SDI DIALOGEX 0, 0, 194, 157
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Volba MDI / SDI módu"
@ -371,15 +371,18 @@ BEGIN
LTEXT "Prosím zvolte si Vámi upøednostòovaný zpùsob zobrazení oken prùzkumníka:",
IDC_STATIC,7,7,160,8
CONTROL "&MDI (Mnoho dokumentový interface)",IDC_MDI,"Button",
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,121,10
CONTROL 170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,121,10
CONTROL "&SDI (Jedno dokumentový interface)",IDC_SDI,"Button",
BS_AUTORADIOBUTTON,7,53,115,10
BS_AUTORADIOBUTTON,7,62,115,10
CONTROL 170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
CONTROL 171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13
CONTROL "Open Subfolders in s&eparate windows",
IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,7,90,135,10
LTEXT "Toto nastavení bude použito jako implicitní pro všechny okna prùzkumníka.",
IDC_STATIC,7,76,174,22
DEFPUSHBUTTON "&Nastavit",IDOK,29,105,50,14,WS_GROUP
PUSHBUTTON "&Zrušit",IDCANCEL,106,105,50,14
IDC_STATIC,7,111,174,22
DEFPUSHBUTTON "&Nastavit",IDOK,29,136,50,14,WS_GROUP
PUSHBUTTON "&Zrušit",IDCANCEL,106,136,50,14
END

View file

@ -360,24 +360,27 @@ BEGIN
PUSHBUTTON "&Cancel",IDCANCEL,151,153,50,14
END
IDD_MDI_SDI DIALOGEX 0, 0, 194, 138
IDD_MDI_SDI DIALOGEX 0, 0, 194, 157
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Choose MDI / SDI mode"
FONT 8, "MS Sans Serif", 0, 0, 0x1
FONT 8, "MS Sans Serif"
BEGIN
LTEXT "Please select your prefered explorer user interface:",
IDC_STATIC,7,7,160,8
CONTROL "&MDI (multiple document interface)",IDC_MDI,"Button",
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,121,10
CONTROL 170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
CONTROL "&SDI (single document interface)",IDC_SDI,"Button",
BS_AUTORADIOBUTTON,7,62,115,10
CONTROL 170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
CONTROL 171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13
CONTROL "Open Subfolders in s&eparate windows",
IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,7,90,135,10
LTEXT "This setting will be used as default for all explorer windows in the future.",
IDC_STATIC,7,91,174,22
DEFPUSHBUTTON "&OK",IDOK,29,117,50,14,WS_GROUP
PUSHBUTTON "&Cancel",IDCANCEL,106,117,50,14
IDC_STATIC,7,111,174,22
DEFPUSHBUTTON "&OK",IDOK,29,136,50,14,WS_GROUP
PUSHBUTTON "&Cancel",IDCANCEL,106,136,50,14
END

View file

@ -360,22 +360,27 @@ BEGIN
PUSHBUTTON "&Cancelar",IDCANCEL,151,153,50,14
END
IDD_MDI_SDI DIALOGEX 0, 0, 194, 138
IDD_MDI_SDI DIALOGEX 0, 0, 194, 157
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Elegir modo MDI / SDI"
FONT 8, "MS Sans Serif", 0, 0, 0x1
FONT 8, "MS Sans Serif"
BEGIN
LTEXT "Por favor, seleccione su interfaz de usuario preferida para el explorador:",
IDC_STATIC,7,7,170,18
CONTROL "&MDI (Multiple Document Interface)",IDC_MDI,"Button",
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,123,10
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,123,10
CONTROL "&SDI (Single Document Interface)",IDC_SDI,"Button",
BS_AUTORADIOBUTTON,7,53,116,10
BS_AUTORADIOBUTTON,7,62,116,10
CONTROL 170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
CONTROL 171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13
CONTROL "Open Subfolders in s&eparate windows",
IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,7,90,135,10
LTEXT "Esta configuración se usará por defecto y apartir de ahora para todas las ventanas del explorador.",
IDC_STATIC,7,76,174,22
DEFPUSHBUTTON "&Aceptar",IDOK,29,105,50,14,WS_GROUP
PUSHBUTTON "&Cancelar",IDCANCEL,106,105,50,14
IDC_STATIC,7,111,174,22
DEFPUSHBUTTON "&Aceptar",IDOK,29,136,50,14,WS_GROUP
PUSHBUTTON "&Cancelar",IDCANCEL,106,136,50,14
END

View file

@ -330,7 +330,7 @@ BEGIN
PUSHBUTTON "&Ñïðàâêà",254,158,42,47,14
END
IDD_MDI_SDI DIALOGEX 0, 0, 194, 138
IDD_MDI_SDI DIALOGEX 0, 0, 194, 157
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Âûáåðèòå ðåæèì MDI / SDI"
@ -339,15 +339,18 @@ BEGIN
LTEXT "Âûáåðèòå íàèáîëåå ïðåäïî÷òèòåëüíûé äëÿ âàñ\nâèä ïðîâîäíèêà:",
IDC_STATIC,7,7,171,17
CONTROL "&MDI (ìíîãîäîêóìåíòíûé íòåðôåéñ)",IDC_MDI,"Button",
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,136,10
CONTROL 170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,136,10
CONTROL "&SDI (îäíîäîêóìåíòíûé èíòåðôåéñ)",IDC_SDI,"Button",
BS_AUTORADIOBUTTON,7,53,134,10
BS_AUTORADIOBUTTON,7,62,134,10
CONTROL 170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
CONTROL 171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13
CONTROL "Open Subfolders in s&eparate windows",
IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,7,90,135,10
LTEXT "Ýòè íàñòðîéêè áóäóò èñïîëüçîâàííû, êàê çíà÷åíèå ïî óìîë÷àíèþ äëÿ âñåõ îêîí ïðîâîäíèêà â áóäóùåì.",
IDC_STATIC,7,76,174,26
DEFPUSHBUTTON "&OK",IDOK,29,105,50,14,WS_GROUP
PUSHBUTTON "&Cancel",IDCANCEL,106,105,50,14
IDC_STATIC,7,107,174,26
DEFPUSHBUTTON "&OK",IDOK,29,136,50,14,WS_GROUP
PUSHBUTTON "&Cancel",IDCANCEL,106,136,50,14
END
IDD_NOTIFYAREA DIALOGEX 0, 0, 208, 174

View file

@ -397,23 +397,26 @@ BEGIN
PUSHBUTTON "&Avbryt",IDCANCEL,151,153,50,14
END
IDD_MDI_SDI DIALOGEX 0, 0, 194, 138
IDD_MDI_SDI DIALOGEX 0, 0, 194, 157
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Välj MDI / SDI Läge"
FONT 8, "MS Sans Serif", 0, 0, 0x1
FONT 8, "MS Sans Serif"
BEGIN
LTEXT "Välj det gränssnitt du föredrar:",IDC_STATIC,7,7,160,8
CONTROL "&MDI (multiple document interface)",IDC_MDI,"Button",
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,121,10
CONTROL 170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,121,10
CONTROL "&SDI (single document interface)",IDC_SDI,"Button",
BS_AUTORADIOBUTTON,7,53,115,10
BS_AUTORADIOBUTTON,7,62,115,10
CONTROL 170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
CONTROL 171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13
CONTROL "Open Subfolders in s&eparate windows",
IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,7,90,135,10
LTEXT "Den här inställningen kommer att gälla som standard i alla nya explorer-fönster.",
IDC_STATIC,7,76,174,22
DEFPUSHBUTTON "&OK",IDOK,29,105,50,14,WS_GROUP
PUSHBUTTON "&Avbryt",IDCANCEL,106,105,50,14
IDC_STATIC,7,107,174,22
DEFPUSHBUTTON "&OK",IDOK,29,136,50,14,WS_GROUP
PUSHBUTTON "&Avbryt",IDCANCEL,106,136,50,14
END

View file

@ -164,6 +164,7 @@
#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
@ -221,7 +222,7 @@
#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

View 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:

View 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