merge ROS Shell without integrated explorer part into trunk
authorMartin Fuchs <fuchs.martin@gmail.com>
Sun, 1 May 2005 21:22:13 +0000 (21:22 +0000)
committerMartin Fuchs <fuchs.martin@gmail.com>
Sun, 1 May 2005 21:22:13 +0000 (21:22 +0000)
svn path=/trunk/; revision=14932

15 files changed:
1  2 
reactos/subsys/system/explorer/Make-rosshell.MinGW
reactos/subsys/system/explorer/Make-rosshell.mak
reactos/subsys/system/explorer/Makefile.MinGW
reactos/subsys/system/explorer/Makefile.PCH
reactos/subsys/system/explorer/desktop/desktop.cpp
reactos/subsys/system/explorer/explorer.cpp
reactos/subsys/system/explorer/explorer.h
reactos/subsys/system/explorer/explorer_intres.rc
reactos/subsys/system/explorer/globals.h
reactos/subsys/system/explorer/make_rosshell.dsp
reactos/subsys/system/explorer/rosshell.dsp
reactos/subsys/system/explorer/rosshell.dsw
reactos/subsys/system/explorer/shell/entries.cpp
reactos/subsys/system/explorer/taskbar/startmenu.cpp
reactos/subsys/system/explorer/utility/utility.h

index 0000000,9b6da9c..73ed02d
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,83 +1,92 @@@
 -#  ReactOS lean shell\r
+ #\r
 -#  Make-rosshell.MinGW\r
++#  ReactOS shell\r
+ #\r
 -CFLAGS        = -DWIN32 -DROSSHELL -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I.\r
++#  Makefile.PCH\r
+ #\r
+ #  MinGW Makefile with precompiled header support\r
+ #\r
\r
+ CC = gcc\r
+ CXX = g++\r
+ LINK = g++\r
\r
 -CFLAGS        += -DNDEBUG -Os -D_NO_CONTEXT\r
++CFLAGS        = -DWIN32 -DROSSHELL -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -DWINVER=0x0500 -fexceptions -Wall -I. -I$(EXPAT_INC)\r
+ RCFLAGS       = -DWIN32 -DROSSHELL -D__WINDRES__\r
+ LFLAGS        = -Wl,--subsystem,windows\r
\r
+ ifdef DEBUG\r
+ CFLAGS        += -D_DEBUG -g\r
+ RCFLAGS       += -D_DEBUG\r
+ LFLAGS        += -g\r
+ else\r
 -VPATH = shell utility taskbar desktop dialogs\r
++CFLAGS        += -DNDEBUG -Os -march=pentium4\r
+ RCFLAGS       += -DNDEBUG\r
+ LFLAGS        += -s\r
+ endif\r
\r
+ ifndef UNICODE\r
+ UNICODE = 1\r
+ endif\r
\r
+ ifeq ($(UNICODE),1)\r
+ CFLAGS        += -DUNICODE\r
+ # LFLAGS+= -Wl,--entry,_wWinMain@16\r
++RCFLAGS += -DUNICODE\r
+ endif\r
\r
+ CXXFLAGS = $(CFLAGS)\r
\r
+ EXEC_SUFFIX = .exe\r
+ RES_SUFFIX = .coff\r
\r
 -      settings.o\r
++VPATH = shell utility taskbar desktop dialogs services\r
\r
+ PROGRAM = rosshell\r
\r
+ TARGET = $(PROGRAM)$(EXEC_SUFFIX)\r
\r
+ OBJECTS = \\r
+       startup.o \\r
+       shellclasses.o \\r
+       utility.o \\r
+       window.o \\r
+       dragdropimpl.o \\r
+       shellbrowserimpl.o \\r
+       explorer.o \\r
+       entries.o \\r
+       winfs.o \\r
+       shellfs.o \\r
++      pane.o \\r
+       desktop.o \\r
+       desktopbar.o \\r
+       taskbar.o \\r
+       startmenu.o \\r
++      shellservices.o \\r
+       traynotify.o \\r
+       quicklaunch.o \\r
 -LIBS = gdi32 comctl32 ole32 uuid\r
++      favorites.o \\r
++      searchprogram.o \\r
++      settings.o \\r
++      i386-stub-win32.o \\r
++      xmlstorage.o\r
\r
 -$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)\r
 -      $(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))\r
++LIBS = gdi32 comctl32 msimg32 ole32 uuid\r
++DELAYIMPORTS = oleaut32 wsock32\r
\r
+ all: precomp.h.gch $(TARGET)\r
\r
+ precomp.h.gch: *.h utility/*.h shell/*.h desktop/*.h\r
+       $(CXX) $(CFLAGS) precomp.h\r
\r
 -\r
 -ever:\r
++$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) notifyhook.dll libexpat.dll\r
++      $(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS)) $(addprefix -l,$(DELAYIMPORTS))\r
\r
+ $(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico\r
+       windres $(RCFLAGS) -o $@ explorer_intres.rc\r
\r
++notifyhook.dll: notifyhook/notifyhook.c notifyhook/notifyhook.h\r
++      $(CC) -D_WIN32_IE=0x0600 -Wall -D_NOTIFYHOOK_IMPL -Os -s notifyhook/notifyhook.c -shared -o $@\r
++\r
+ clean:\r
+       rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) precomp.h.gch \\r
+       desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o\r
index 0000000,4a54acf..fa428b1
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,148 +1,68 @@@
 -#  ReactOS lean shell\r
+ #\r
 -# Windows is default host environment\r
 -ifeq ($(HOST),)\r
 -HOST = mingw32-windows\r
 -endif\r
 -\r
 -ifeq ($(HOST),mingw32-linux)\r
 -CC = mingw32-gcc\r
 -CXX = mingw32-g++\r
 -LINK = mingw32-g++\r
 -RC = mingw32-windres\r
 -CD_PREFIX := ./\r
 -PREFIX = mingw32-\r
 -EXE_POSTFIX :=\r
 -EXE_PREFIX := ./\r
 -endif\r
 -\r
 -ifeq ($(HOST),mingw32-windows)\r
 -CC = gcc\r
 -CXX = g++\r
 -LINK = g++\r
 -RC = windres\r
 -CD_PREFIX := \r
 -PREFIX =\r
 -EXE_PREFIX :=\r
 -EXE_POSTFIX := .exe\r
 -endif\r
 -\r
 -PATH_TO_TOP = ../../..\r
 -TOOLS_PATH = $(PATH_TO_TOP)/tools\r
 -\r
 -ifndef UNICODE\r
 -UNICODE = 1\r
 -endif\r
 -\r
 -CFLAGS        = -I./ -DWIN32 -D_ROS_ -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall\r
 -RCFLAGS       = -DWIN32 -D_ROS_ -D__WINDRES__\r
 -LFLAGS        = -Wl,--subsystem,windows\r
 -\r
 -ifdef DEBUG\r
 -CFLAGS        += -D_DEBUG -g\r
 -RCFLAGS       += -D_DEBUG\r
 -LFLAGS        += -g\r
 -else\r
 -CFLAGS        += -DNDEBUG -Os -D_NO_CONTEXT\r
 -RCFLAGS       += -DNDEBUG\r
 -LFLAGS        += -s\r
 -endif\r
 -\r
 -ifeq ($(UNICODE),1)\r
 -CFLAGS        += -DUNICODE\r
 -# LFLAGS+= -Wl,--entry,_wWinMain@16\r
 -RCFLAGS += -DUNICODE\r
 -endif\r
 -\r
 -CXXFLAGS = $(CFLAGS)\r
 -\r
 -EXEC_SUFFIX = .exe\r
 -RES_SUFFIX = .coff\r
 -\r
 -VPATH = shell utility taskbar desktop dialogs\r
 -\r
 -PROGRAM = rosshell\r
 -\r
 -TARGET = $(PROGRAM)$(EXEC_SUFFIX)\r
 -\r
 -OBJECTS = \\r
 -      startup.o \\r
 -      shellclasses.o \\r
 -      utility.o \\r
 -      window.o \\r
 -      dragdropimpl.o \\r
 -      shellbrowserimpl.o \\r
 -      explorer.o \\r
 -      entries.o \\r
 -      winfs.o \\r
 -      shellfs.o \\r
 -      desktop.o \\r
 -      desktopbar.o \\r
 -      taskbar.o \\r
 -      startmenu.o \\r
 -      traynotify.o \\r
 -      quicklaunch.o \\r
 -      settings.o\r
 -\r
 -LIBS = gdi32 comctl32 ole32 uuid\r
 -\r
 -.PHONY: all depends implib clean install dist bootcd depends\r
 -\r
 -all: $(TARGET)\r
 -\r
 -ever:\r
 -\r
 -$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)\r
 -      $(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))\r
++#  ReactOS shell\r
+ #\r
+ #  Makefile\r
+ #\r
\r
 -$(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico\r
 -      $(RC) $(RCFLAGS) -o $@ explorer_intres.rc\r
++PATH_TO_TOP := ../../..\r
\r
 -clean:\r
 -      $(TOOLS_PATH)/rdel $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \\r
 -      desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o\r
++TARGET_TYPE := program\r
\r
 -# Use environment var ROS_INSTALL to override default install dir\r
 -ifneq ($(ROS_INSTALL),)\r
 -INSTALL_DIR = $(ROS_INSTALL)\r
 -else\r
 -ifeq ($(HOST),mingw32-windows)\r
 -INSTALL_DIR = C:/reactos\r
 -else\r
 -INSTALL_DIR = $(PATH_TO_TOP)/reactos\r
 -endif\r
 -endif\r
++TARGET_APPTYPE := windows\r
\r
 -implib:\r
++TARGET_NAME := rosshell\r
\r
 -install:\r
 -      -$(TOOLS_PATH)/rcopy $(TARGET) $(INSTALL_DIR)/$(TARGET)\r
++TARGET_INSTALLDIR := .\r
\r
 -bootcd:\r
++TARGET_CFLAGS := \\r
++      -D__USE_W32API -DWIN32 -D_ROS_ \\r
++      -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -DWINVER=0x0500 \\r
++      -DUNICODE -fexceptions -Wall -g \\r
++      -I../../../include/expat\r
\r
 -# dependency scanning\r
++TARGET_CPPFLAGS := $(TARGET_CFLAGS)\r
\r
++TARGET_RCFLAGS := -D__USE_W32API -DWIN32 -D_ROS_ -D__WINDRES__\r
\r
 -DEP_FILTERED := $(filter-out $(DEP_EXCLUDE_FILTER), $(OBJECTS:.o=.d))\r
 -DEP_FILES := $(join $(dir $(DEP_FILTERED)), $(addprefix ., $(notdir $(DEP_FILTERED))))\r
 -\r
 -ifneq ($(MAKECMDGOALS),clean)\r
 --include $(DEP_FILES)\r
 -endif\r
 -\r
 -ifeq ($(HOST),mingw32-windows)\r
 -DEPENDS_EXE := ..\..\..\tools\depends\r
 -else\r
 -DEPENDS_EXE := $(TOOLS_PATH)/depends\r
 -endif\r
 -\r
 -.%.d: %.c $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)\r
 -      $(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@\r
 -\r
 -.%.d: %.cpp $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)\r
 -      $(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@\r
++TARGET_SDKLIBS := \\r
++      gdi32.a user32.a comctl32.a ole32.a oleaut32.a shell32.a expat.a \\r
++      notifyhook.a ws2_32.a msimg32.a\r
\r
++TARGET_GCCLIBS := stdc++ uuid\r
\r
++TARGET_OBJECTS := \\r
++      explorer.o \\r
++      i386-stub-win32.o \\r
++      desktop/desktop.o \\r
++      dialogs/searchprogram.o \\r
++      dialogs/settings.o \\r
++      shell/entries.o \\r
++      shell/shellfs.o \\r
++      shell/pane.o \\r
++      shell/winfs.o \\r
++      services/startup.o \\r
++      services/shellservices.o \\r
++      taskbar/desktopbar.o \\r
++      taskbar/taskbar.o \\r
++      taskbar/startmenu.o \\r
++      taskbar/traynotify.o \\r
++      taskbar/quicklaunch.o \\r
++      taskbar/favorites.o \\r
++      utility/shellclasses.o \\r
++      utility/utility.o \\r
++      utility/window.o \\r
++      utility/dragdropimpl.o \\r
++      utility/shellbrowserimpl.o \\r
++      utility/xmlstorage.o\r
++\r
++TARGET_CPPAPP := yes\r
++\r
++TARGET_PCH := precomp.h\r
++\r
++SUBDIRS := notifyhook\r
++\r
++DEP_OBJECTS := $(TARGET_OBJECTS)\r
++\r
++include $(PATH_TO_TOP)/rules.mak\r
++include $(TOOLS_PATH)/helper.mk\r
++include $(TOOLS_PATH)/depend.mk\r
@@@ -82,15 -68,12 +82,15 @@@ DELAYIMPORTS = oleaut32 wsock3
  
  all: $(TARGET)
  
 -$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
 -      $(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
 +$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) notifyhook.dll libexpat.dll
 +      $(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS)) $(addprefix -l,$(DELAYIMPORTS))
  
explorer$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico
$(PROGRAM)$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico
        windres $(RCFLAGS) -o $@ $(PROGRAM)_intres.rc
  
 +notifyhook.dll: notifyhook/notifyhook.c notifyhook/notifyhook.h
 +      $(CC) -D_WIN32_IE=0x0600 -Wall -D_NOTIFYHOOK_IMPL -Os -s notifyhook/notifyhook.c -shared -o $@
 +
  clean:
        rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \
        desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
@@@ -86,15 -72,12 +86,15 @@@ all: precomp.h.gch $(TARGET
  precomp.h.gch: *.h utility/*.h shell/*.h desktop/*.h
        $(CXX) $(CFLAGS) precomp.h
  
 -$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
 -      $(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
 +$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) notifyhook.dll libexpat.dll
 +      $(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS)) $(addprefix -l,$(DELAYIMPORTS))
  
explorer$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico
-       windres $(RCFLAGS) -o $@ $(PROGRAM)_intres.rc
$(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
+       windres $(RCFLAGS) -o $@ explorer_intres.rc
  
 +notifyhook.dll: notifyhook/notifyhook.c notifyhook/notifyhook.h
 +      $(CC) -D_WIN32_IE=0x0600 -Wall -D_NOTIFYHOOK_IMPL -Os -s notifyhook/notifyhook.c -shared -o $@
 +
  clean:
        rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) precomp.h.gch \
        desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
@@@ -467,8 -382,10 +467,10 @@@ LRESULT DesktopWindow::WndProc(UINT nms
  
  HRESULT DesktopWindow::OnDefaultCommand(LPIDA pida)
  {
 -      if (MainFrame::OpenShellFolders(pida, 0))
+ #ifndef ROSSHELL      // in shell-only-mode fall through and let shell32 handle the command
 +      if (MainFrameBase::OpenShellFolders(pida, 0))
                return S_OK;
+ #endif
  
        return E_NOTIMPL;
  }
@@@ -541,18 -432,46 +547,30 @@@ void explorer_show_frame(int cmdshow, L
  
        g_Globals._prescan_nodes = false;
  
 -       // create main window
 -      HWND hMainFrame = MainFrame::Create();
 -
 -      if (hMainFrame) {
 -              g_Globals._hMainWnd = hMainFrame;
 -
 -              ShowWindow(hMainFrame, cmdshow);
 -              UpdateWindow(hMainFrame);
 +      XMLPos explorer_options = g_Globals.get_cfg("general/explorer");
 +      XS_String mdiStr = XMLString(explorer_options, "mdi");
  
 -              bool valid_dir = false;
 +      if (mdiStr.empty())
 +              Dialog::DoModal(IDD_MDI_SDI, WINDOW_CREATOR(MdiSdiDlg), g_Globals._hwndDesktop);
  
 -              if (lpCmdLine) {
 -                      DWORD attribs = GetFileAttributes(lpCmdLine);
 +      bool mdi = XMLBool(explorer_options, "mdi", true);
  
 -                      if (attribs!=INVALID_FILE_ATTRIBUTES && (attribs&FILE_ATTRIBUTE_DIRECTORY))
 -                              valid_dir = true;
 -                      else if (*lpCmdLine==':' || *lpCmdLine=='"')
 -                              valid_dir = true;
 -              }
 -
 -               // Open the first child window after initializing the application
 -              if (valid_dir)
 -                      PostMessage(hMainFrame, PM_OPEN_WINDOW, 0, (LPARAM)lpCmdLine);
 -              else
 -                      PostMessage(hMainFrame, PM_OPEN_WINDOW, 0/*OWM_EXPLORE|OWM_DETAILS*/, 0);
 -      }
 +       // create main window
 +      MainFrameBase::Create(lpCmdLine, mdi, cmdshow);
  }
  
+ #else
+ void explorer_show_frame(int cmdshow, LPTSTR lpCmdLine)
+ {
+       if (!lpCmdLine)
+               lpCmdLine = TEXT("explorer.exe");
+       launch_file(GetDesktopWindow(), lpCmdLine, cmdshow);
+ }
+ #endif
  
  PopupMenu::PopupMenu(UINT nid)
  {
@@@ -640,11 -556,12 +659,12 @@@ static void InitInstance(HINSTANCE hIns
         // register frame window class
        g_Globals._hframeClass = IconWindowClass(CLASSNAME_FRAME,IDI_EXPLORER);
  
 -       // register child windows class
 +       // register child window class
        WindowClass(CLASSNAME_CHILDWND, CS_CLASSDC|CS_DBLCLKS|CS_VREDRAW).Register();
  
 -       // register tree windows class
 +       // register tree window class
        WindowClass(CLASSNAME_WINEFILETREE, CS_CLASSDC|CS_DBLCLKS|CS_VREDRAW).Register();
+ #endif
  
        g_Globals._cfStrFName = RegisterClipboardFormat(CFSTR_FILENAME);
  }
@@@ -831,9 -723,7 +855,14 @@@ int WINAPI _tWinMain(HINSTANCE hInstanc
                 // another undocumented event: "Global\\msgina: ReturnToWelcome"
                if (!SetShellReadyEvent(TEXT("msgina: ShellReadyEvent")))
                        SetShellReadyEvent(TEXT("Global\\msgina: ShellReadyEvent"));
 +      }
++#ifdef ROSSHELL
++      else
++              return 0;       // no shell to launch, so exit immediatelly
++#endif
 +
 +      if (!any_desktop_running) {
                 // launch the shell DDE server
                if (g_SHDOCVW_ShellDDEInit)
                        (*g_SHDOCVW_ShellDDEInit)(TRUE);
                g_Globals._desktops.init();
  
                g_Globals._hwndDesktop = DesktopWindow::Create();
 +#ifdef _USE_HDESK
 +              g_Globals._desktops.get_current_Desktop()->_hwndDesktop = g_Globals._hwndDesktop;
 +#endif
 +      }
  
-       if (g_Globals._hwndDesktop)
-               g_Globals._desktop_mode = true;
 -              /**TODO launching autostart programs can be moved into a background thread. */
 -              if (autostart) {
 -                      char* argv[] = {"", "s"};       // call startup routine in SESSION_START mode
 -                      startup(2, argv);
 -              }
 +      Thread* pSSOThread = NULL;
 +
 +      if (startup_desktop) {
 +               // launch SSO thread to allow message processing independent from the explorer main thread
 +              pSSOThread = new SSOThread;
 +              pSSOThread->Start();
 +      }
 +
 +      /**TODO launching autostart programs can be moved into a background thread. */
 +      if (autostart) {
 +              char* argv[] = {"", "s"};       // call startup routine in SESSION_START mode
 +              startup(2, argv);
        }
  
+ #ifndef ROSSHELL
++      if (g_Globals._hwndDesktop)
++              g_Globals._desktop_mode = true;
++
        /**TODO fix command line handling */
        if (*lpCmdLine=='"' && lpCmdLine[_tcslen(lpCmdLine)-1]=='"') {
                ++lpCmdLine;
                lpCmdLine[_tcslen(lpCmdLine)-1] = '\0';
        }
 -
 -      if (g_Globals._hwndDesktop)
 -              g_Globals._desktop_mode = true;
+ #endif
 +
        int ret = explorer_main(hInstance, lpCmdLine, nShowCmd);
  
 -       // shutdown the shell DDE server
 -      if (g_SHDOCVW_ShellDDEInit)
 -              (*g_SHDOCVW_ShellDDEInit)(FALSE);
 +       // write configuration file
 +      g_Globals.write_persistent();
 +
 +      if (pSSOThread) {
 +              pSSOThread->Stop();
 +              delete pSSOThread;
 +      }
 +
 +      if (!any_desktop_running) {
 +               // shutdown the shell DDE server
 +              if (g_SHDOCVW_ShellDDEInit)
 +                      (*g_SHDOCVW_ShellDDEInit)(FALSE);
 +      }
  
        return ret;
  }
  #include "shell/entries.h"
  
  #include "shell/winfs.h"
- #include "shell/unixfs.h"
  #include "shell/shellfs.h"
  
++#ifndef ROSSHELL
++#include "shell/unixfs.h"
++#endif
++
  #include "utility/window.h"
  
  
  #define       CLASSNAME_WINEFILETREE  TEXT("WFS_Tree")
  
  
 +#include "shell/pane.h"
 +#include "shell/filechild.h"
  #include "shell/shellbrowser.h"
+ #ifndef ROSSHELL
  #include "shell/mainframe.h"
+ #endif
@@@ -197,9 -141,6 +197,7 @@@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRA
  // Bitmap
  //
  
- IDB_IMAGES              BITMAP  DISCARDABLE     "res/images.bmp"
- IDB_TOOLBAR             BITMAP  DISCARDABLE     "res/toolbar.bmp"
 +IDB_DRIVEBAR            BITMAP  DISCARDABLE     "res/drivebar.bmp"
  IDB_LOGOV               BITMAP  DISCARDABLE     "res/logov.bmp"
  IDB_LOGOV256            BITMAP  DISCARDABLE     "res/logov256.bmp"
  IDB_LOGOV16             BITMAP  DISCARDABLE     "res/logov16.bmp"
@@@ -494,6 -258,7 +492,10 @@@ EN
  
  3 TEXTINCLUDE DISCARDABLE 
  BEGIN
 -    "IDB_TOOLBAR BITMAP DISCARDABLE ""res/toolbar.bmp""\r\n"
++    "#ifndef ROSSHELL\r\n"
++    "IDB_IMAGES               BITMAP DISCARDABLE ""res/images.bmp""\r\n"
++    "IDB_TOOLBAR      BITMAP DISCARDABLE ""res/toolbar.bmp""\r\n"
++    "#endif\r\n"
      "#ifndef _ROS_\r\n"
      "LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL\r\n"
      "STRINGTABLE DISCARDABLE \r\n"
@@@ -230,20 -175,17 +230,23 @@@ extern struct ExplorerGlobal
  {
        ExplorerGlobals();
  
 -      void            init(HINSTANCE hInstance);
 +      void    init(HINSTANCE hInstance);
 +
 +      void    read_persistent();
 +      void    write_persistent();
 +
 +      XMLPos  get_cfg();
 +      XMLPos  get_cfg(const char* path);
  
        HINSTANCE       _hInstance;
-       ATOM            _hframeClass;
        UINT            _cfStrFName;
+ #ifndef ROSSHELL
+       ATOM            _hframeClass;
        HWND            _hMainWnd;
-       bool            _prescan_nodes;
        bool            _desktop_mode;
+       bool            _prescan_nodes;
+ #endif
  
        FILE*           _log;
  
index 0000000,db83b8d..b6787e3
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,143 +1,155 @@@
 -# PROP Target_File "explorer.exe"\r
+ # Microsoft Developer Studio Project File - Name="make_rosshell" - Package Owner=<4>\r
+ # Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+ # ** DO NOT EDIT **\r
\r
+ # TARGTYPE "Win32 (x86) External Target" 0x0106\r
\r
+ CFG=make_rosshell - Win32 Release\r
+ !MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+ !MESSAGE use the Export Makefile command and run\r
+ !MESSAGE \r
+ !MESSAGE NMAKE /f "make_rosshell.mak".\r
+ !MESSAGE \r
+ !MESSAGE You can specify a configuration when running NMAKE\r
+ !MESSAGE by defining the macro CFG on the command line. For example:\r
+ !MESSAGE \r
+ !MESSAGE NMAKE /f "make_rosshell.mak" CFG="make_rosshell - Win32 Release"\r
+ !MESSAGE \r
+ !MESSAGE Possible choices for configuration are:\r
+ !MESSAGE \r
+ !MESSAGE "make_rosshell - Win32 Release" (based on "Win32 (x86) External Target")\r
+ !MESSAGE "make_rosshell - Win32 Debug" (based on "Win32 (x86) External Target")\r
+ !MESSAGE "make_rosshell - Win32 Unicode Debug" (based on "Win32 (x86) External Target")\r
+ !MESSAGE "make_rosshell - Win32 Unicode Release" (based on "Win32 (x86) External Target")\r
+ !MESSAGE \r
\r
+ # Begin Project\r
+ # PROP AllowPerConfigDependencies 0\r
+ # PROP Scc_ProjName ""\r
+ # PROP Scc_LocalPath ""\r
\r
+ !IF  "$(CFG)" == "make_rosshell - Win32 Release"\r
\r
+ # PROP BASE Use_MFC 0\r
+ # PROP BASE Use_Debug_Libraries 0\r
+ # PROP BASE Output_Dir "Release"\r
+ # PROP BASE Intermediate_Dir "Release"\r
+ # PROP BASE Cmd_Line "NMAKE /f make_rosshell.mak"\r
+ # PROP BASE Rebuild_Opt "/a"\r
+ # PROP BASE Target_File "make_rosshell.exe"\r
+ # PROP BASE Bsc_Name "make_rosshell.bsc"\r
+ # PROP BASE Target_Dir ""\r
+ # PROP Use_MFC 0\r
+ # PROP Use_Debug_Libraries 0\r
+ # PROP Output_Dir "Release"\r
+ # PROP Intermediate_Dir "Release"\r
+ # PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Make-rosshell.MinGW UNICODE=0"\r
+ # PROP Rebuild_Opt "clean all"\r
 -# PROP Target_File "explorer.exe"\r
++# PROP Target_File "rosshell.exe"\r
+ # PROP Bsc_Name ""\r
+ # PROP Target_Dir ""\r
\r
+ !ELSEIF  "$(CFG)" == "make_rosshell - Win32 Debug"\r
\r
+ # PROP BASE Use_MFC 0\r
+ # PROP BASE Use_Debug_Libraries 1\r
+ # PROP BASE Output_Dir "Debug"\r
+ # PROP BASE Intermediate_Dir "Debug"\r
+ # PROP BASE Cmd_Line "NMAKE /f make_rosshell.mak"\r
+ # PROP BASE Rebuild_Opt "/a"\r
+ # PROP BASE Target_File "make_rosshell.exe"\r
+ # PROP BASE Bsc_Name "make_rosshell.bsc"\r
+ # PROP BASE Target_Dir ""\r
+ # PROP Use_MFC 0\r
+ # PROP Use_Debug_Libraries 1\r
+ # PROP Output_Dir "Debug"\r
+ # PROP Intermediate_Dir "Debug"\r
+ # PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Make-rosshell.MinGW UNICODE=0 DEBUG=1"\r
+ # PROP Rebuild_Opt "clean all"\r
 -# PROP BASE Target_File "explorer.exe"\r
++# PROP Target_File "rosshell.exe"\r
+ # PROP Bsc_Name "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile.MinGW UNICODE=0 DEBUG=1"\r
+ # PROP Target_Dir ""\r
\r
+ !ELSEIF  "$(CFG)" == "make_rosshell - Win32 Unicode Debug"\r
\r
+ # PROP BASE Use_MFC 0\r
+ # PROP BASE Use_Debug_Libraries 1\r
+ # PROP BASE Output_Dir "UDebug"\r
+ # PROP BASE Intermediate_Dir "UDebug"\r
+ # PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile.MinGW UNICODE=1 DEBUG=1"\r
+ # PROP BASE Rebuild_Opt "clean all"\r
 -# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Make-rosshell.MinGW UNICODE=1 DEBUG=1"\r
++# PROP BASE Target_File "rosshell.exe"\r
+ # PROP BASE Bsc_Name ""\r
+ # PROP BASE Target_Dir ""\r
+ # PROP Use_MFC 0\r
+ # PROP Use_Debug_Libraries 1\r
+ # PROP Output_Dir "UDebug"\r
+ # PROP Intermediate_Dir "UDebug"\r
 -# PROP Target_File "explorer.exe"\r
++# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile.MinGW UNICODE=1 DEBUG=1"\r
+ # PROP Rebuild_Opt "clean all"\r
 -# PROP BASE Target_File "explorer.exe"\r
++# PROP Target_File "rosshell.exe"\r
+ # PROP Bsc_Name ""\r
+ # PROP Target_Dir ""\r
\r
+ !ELSEIF  "$(CFG)" == "make_rosshell - Win32 Unicode Release"\r
\r
+ # PROP BASE Use_MFC 0\r
+ # PROP BASE Use_Debug_Libraries 0\r
+ # PROP BASE Output_Dir "URelease"\r
+ # PROP BASE Intermediate_Dir "URelease"\r
+ # PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile.MinGW UNICODE=1"\r
+ # PROP BASE Rebuild_Opt "clean all"\r
 -# PROP Cmd_Line "make -f Make-rosshell.MinGW UNICODE=1"\r
++# PROP BASE Target_File "rosshell.exe"\r
+ # PROP BASE Bsc_Name ""\r
+ # PROP BASE Target_Dir ""\r
+ # PROP Use_MFC 0\r
+ # PROP Use_Debug_Libraries 0\r
+ # PROP Output_Dir "URelease"\r
+ # PROP Intermediate_Dir "URelease"\r
 -# PROP Target_File "explorer.exe"\r
++# PROP Cmd_Line "msdevfilt -gcc make -f Make-rosshell.MinGW UNICODE=1"\r
+ # PROP Rebuild_Opt "clean all"\r
 -SOURCE=".\Make-rosshell.mak"\r
++# PROP Target_File "rosshell.exe"\r
+ # PROP Bsc_Name ""\r
+ # PROP Target_Dir ""\r
\r
+ !ENDIF \r
\r
+ # Begin Target\r
\r
+ # Name "make_rosshell - Win32 Release"\r
+ # Name "make_rosshell - Win32 Debug"\r
+ # Name "make_rosshell - Win32 Unicode Debug"\r
+ # Name "make_rosshell - Win32 Unicode Release"\r
\r
+ !IF  "$(CFG)" == "make_rosshell - Win32 Release"\r
\r
+ !ELSEIF  "$(CFG)" == "make_rosshell - Win32 Debug"\r
\r
+ !ELSEIF  "$(CFG)" == "make_rosshell - Win32 Unicode Debug"\r
\r
+ !ELSEIF  "$(CFG)" == "make_rosshell - Win32 Unicode Release"\r
\r
+ !ENDIF \r
\r
+ # Begin Source File\r
\r
++SOURCE=.\Jamfile\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=".\Make-rosshell.MinGW"\r
+ # End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\Makefile\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\Makefile.MinGW\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\Makefile.Wine\r
++# End Source File\r
+ # End Target\r
+ # End Project\r
index 0000000,244e8a3..1e2f959
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,459 +1,608 @@@
 -CFG=rosshell - Win32 Release\r
+ # Microsoft Developer Studio Project File - Name="rosshell" - Package Owner=<4>\r
+ # Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+ # ** DO NOT EDIT **\r
\r
+ # TARGTYPE "Win32 (x86) Console Application" 0x0103\r
\r
 -!MESSAGE NMAKE /f "rosshell.mak" CFG="rosshell - Win32 Release"\r
++CFG=rosshell - Win32 Debug\r
+ !MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+ !MESSAGE use the Export Makefile command and run\r
+ !MESSAGE \r
+ !MESSAGE NMAKE /f "rosshell.mak".\r
+ !MESSAGE \r
+ !MESSAGE You can specify a configuration when running NMAKE\r
+ !MESSAGE by defining the macro CFG on the command line. For example:\r
+ !MESSAGE \r
 -# ADD CPP /nologo /MD /W3 /GR /GX /O1 /D "NDEBUG" /D "_NO_CONTEXT" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /Yu"precomp.h" /FD /c\r
++!MESSAGE NMAKE /f "rosshell.mak" CFG="rosshell - Win32 Debug"\r
+ !MESSAGE \r
+ !MESSAGE Possible choices for configuration are:\r
+ !MESSAGE \r
+ !MESSAGE "rosshell - Win32 Release" (based on "Win32 (x86) Console Application")\r
+ !MESSAGE "rosshell - Win32 Debug" (based on "Win32 (x86) Console Application")\r
++!MESSAGE "rosshell - Win32 Debug Release" (based on "Win32 (x86) Console Application")\r
+ !MESSAGE "rosshell - Win32 Unicode Release" (based on "Win32 (x86) Console Application")\r
+ !MESSAGE "rosshell - Win32 Unicode Debug" (based on "Win32 (x86) Console Application")\r
+ !MESSAGE \r
\r
+ # Begin Project\r
+ # PROP AllowPerConfigDependencies 0\r
+ # PROP Scc_ProjName ""\r
+ # PROP Scc_LocalPath ""\r
+ CPP=cl.exe\r
+ RSC=rc.exe\r
\r
+ !IF  "$(CFG)" == "rosshell - Win32 Release"\r
\r
+ # PROP BASE Use_MFC 0\r
+ # PROP BASE Use_Debug_Libraries 0\r
+ # PROP BASE Output_Dir "Release"\r
+ # PROP BASE Intermediate_Dir "Release"\r
+ # PROP BASE Target_Dir ""\r
+ # PROP Use_MFC 0\r
+ # PROP Use_Debug_Libraries 0\r
+ # PROP Output_Dir "Release"\r
+ # PROP Intermediate_Dir "Release"\r
+ # PROP Ignore_Export_Lib 0\r
+ # PROP Target_Dir ""\r
+ # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
 -# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /machine:I386\r
 -# SUBTRACT LINK32 /pdb:none /force\r
++# ADD CPP /nologo /MD /W3 /GR /GX /O1 /D "NDEBUG" /D "WIN32" /D _WIN32_IE=0x0600 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /Yu"precomp.h" /FD /c\r
+ # ADD BASE RSC /l 0x407 /d "NDEBUG"\r
+ # ADD RSC /l 0x407 /d "NDEBUG"\r
+ BSC32=bscmake.exe\r
+ # ADD BASE BSC32 /nologo\r
+ # ADD BSC32 /nologo\r
+ LINK32=link.exe\r
+ # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
 -# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /FR /Yu"precomp.h" /FD /GZ /c\r
++# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib delayimp.lib /nologo /subsystem:windows /machine:I386 /libpath:"Release" /delayload:oleaut32.dll /delayload:wsock32.dll\r
++# SUBTRACT LINK32 /pdb:none\r
\r
+ !ELSEIF  "$(CFG)" == "rosshell - Win32 Debug"\r
\r
+ # PROP BASE Use_MFC 0\r
+ # PROP BASE Use_Debug_Libraries 1\r
+ # PROP BASE Output_Dir "Debug"\r
+ # PROP BASE Intermediate_Dir "Debug"\r
+ # PROP BASE Target_Dir ""\r
+ # PROP Use_MFC 0\r
+ # PROP Use_Debug_Libraries 1\r
+ # PROP Output_Dir "Debug"\r
+ # PROP Intermediate_Dir "Debug"\r
+ # PROP Ignore_Export_Lib 0\r
+ # PROP Target_Dir ""\r
+ # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c\r
 -# ADD LINK32 kernel32.lib shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
 -# SUBTRACT LINK32 /pdb:none /force\r
++# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D _WIN32_IE=0x0600 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /FR /Yu"precomp.h" /FD /GZ /c\r
+ # ADD BASE RSC /l 0x407 /d "_DEBUG"\r
+ # ADD RSC /l 0x407 /d "_DEBUG"\r
+ BSC32=bscmake.exe\r
+ # ADD BASE BSC32 /nologo\r
+ # ADD BSC32 /nologo\r
+ LINK32=link.exe\r
+ # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
 -# ADD CPP /nologo /MD /W3 /GR /GX /O2 /D "NDEBUG" /D "UNICODE" /D "_NO_CONTEXT" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /Yu"precomp.h" /FD /c\r
++# ADD LINK32 kernel32.lib shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib delayimp.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"Debug" /delayload:oleaut32.dll /delayload:wsock32.dll\r
++# SUBTRACT LINK32 /pdb:none\r
++\r
++!ELSEIF  "$(CFG)" == "rosshell - Win32 Debug Release"\r
++\r
++# PROP BASE Use_MFC 0\r
++# PROP BASE Use_Debug_Libraries 0\r
++# PROP BASE Output_Dir "DRelease"\r
++# PROP BASE Intermediate_Dir "DRelease"\r
++# PROP BASE Ignore_Export_Lib 0\r
++# PROP BASE Target_Dir ""\r
++# PROP Use_MFC 0\r
++# PROP Use_Debug_Libraries 0\r
++# PROP Output_Dir "DRelease"\r
++# PROP Intermediate_Dir "DRelease"\r
++# PROP Ignore_Export_Lib 0\r
++# PROP Target_Dir ""\r
++# ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_ROS_" /YX /FD /c\r
++# ADD CPP /nologo /MD /W3 /GR /GX /Zi /O2 /D "NDEBUG" /D "WIN32" /D _WIN32_IE=0x0600 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /FR /Yu"precomp.h" /FD /c\r
++# ADD BASE RSC /l 0x407 /d "NDEBUG"\r
++# ADD RSC /l 0x407 /d "NDEBUG"\r
++BSC32=bscmake.exe\r
++# ADD BASE BSC32 /nologo\r
++# ADD BSC32 /nologo\r
++LINK32=link.exe\r
++# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib comctl32.lib shell32.lib /nologo /subsystem:console /machine:I386\r
++# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib delayimp.lib /nologo /subsystem:windows /debug /machine:I386 /delayload:oleaut32.dll /delayload:wsock32.dll\r
++# SUBTRACT LINK32 /pdb:none\r
\r
+ !ELSEIF  "$(CFG)" == "rosshell - Win32 Unicode Release"\r
\r
+ # PROP BASE Use_MFC 0\r
+ # PROP BASE Use_Debug_Libraries 0\r
+ # PROP BASE Output_Dir "URelease"\r
+ # PROP BASE Intermediate_Dir "URelease"\r
+ # PROP BASE Ignore_Export_Lib 0\r
+ # PROP BASE Target_Dir ""\r
+ # PROP Use_MFC 0\r
+ # PROP Use_Debug_Libraries 0\r
+ # PROP Output_Dir "URelease"\r
+ # PROP Intermediate_Dir "URelease"\r
+ # PROP Ignore_Export_Lib 0\r
+ # PROP Target_Dir ""\r
+ # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /YX /FD /c\r
 -# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /machine:I386\r
 -# SUBTRACT LINK32 /pdb:none /force\r
++# ADD CPP /nologo /MD /W3 /GR /GX /O2 /D "NDEBUG" /D "UNICODE" /D "WIN32" /D _WIN32_IE=0x0600 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /Yu"precomp.h" /FD /c\r
+ # ADD BASE RSC /l 0x407 /d "NDEBUG"\r
+ # ADD RSC /l 0x407 /d "NDEBUG"\r
+ BSC32=bscmake.exe\r
+ # ADD BASE BSC32 /nologo\r
+ # ADD BSC32 /nologo\r
+ LINK32=link.exe\r
+ # ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib comctl32.lib shell32.lib /nologo /subsystem:console /machine:I386\r
 -# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "UNICODE" /D "WIN32" /D _WIN32_IE=0x0501 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /FR /Yu"precomp.h" /FD /GZ /c\r
++# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib delayimp.lib /nologo /subsystem:windows /machine:I386 /libpath:"Release" /delayload:oleaut32.dll /delayload:wsock32.dll\r
++# SUBTRACT LINK32 /pdb:none\r
\r
+ !ELSEIF  "$(CFG)" == "rosshell - Win32 Unicode Debug"\r
\r
+ # PROP BASE Use_MFC 0\r
+ # PROP BASE Use_Debug_Libraries 1\r
+ # PROP BASE Output_Dir "UDebug"\r
+ # PROP BASE Intermediate_Dir "UDebug"\r
+ # PROP BASE Ignore_Export_Lib 0\r
+ # PROP BASE Target_Dir ""\r
+ # PROP Use_MFC 0\r
+ # PROP Use_Debug_Libraries 1\r
+ # PROP Output_Dir "UDebug"\r
+ # PROP Intermediate_Dir "UDebug"\r
+ # PROP Ignore_Export_Lib 0\r
+ # PROP Target_Dir ""\r
+ # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /FR /YX /FD /GZ /c\r
 -# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
 -# SUBTRACT LINK32 /pdb:none /force\r
++# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "UNICODE" /D "WIN32" /D _WIN32_IE=0x0600 /D _WIN32_WINNT=0x0501 /D "ROSSHELL" /FR /Yu"precomp.h" /FD /GZ /c\r
+ # ADD BASE RSC /l 0x407 /d "_DEBUG"\r
+ # ADD RSC /l 0x407 /d "_DEBUG"\r
+ BSC32=bscmake.exe\r
+ # ADD BASE BSC32 /nologo\r
+ # ADD BSC32 /nologo\r
+ LINK32=link.exe\r
+ # ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib comctl32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
 -SOURCE=.\res\printer.ico\r
++# ADD LINK32 shell32.lib comctl32.lib gdi32.lib user32.lib advapi32.lib ole32.lib delayimp.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"Debug" /delayload:oleaut32.dll /delayload:wsock32.dll\r
++# SUBTRACT LINK32 /pdb:none\r
\r
+ !ENDIF \r
\r
+ # Begin Target\r
\r
+ # Name "rosshell - Win32 Release"\r
+ # Name "rosshell - Win32 Debug"\r
++# Name "rosshell - Win32 Debug Release"\r
+ # Name "rosshell - Win32 Unicode Release"\r
+ # Name "rosshell - Win32 Unicode Debug"\r
+ # Begin Group "utility"\r
\r
+ # PROP Default_Filter ""\r
+ # Begin Source File\r
\r
+ SOURCE=.\utility\dragdropimpl.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\utility\dragdropimpl.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\utility\shellbrowserimpl.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\utility\shellbrowserimpl.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\utility\shellclasses.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\utility\shellclasses.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\utility\treedroptarget.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\utility\utility.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\utility\utility.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\utility\window.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\utility\window.h\r
+ # End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\utility\xmlstorage.cpp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\utility\xmlstorage.h\r
++# End Source File\r
+ # End Group\r
+ # Begin Group "resources"\r
\r
+ # PROP Default_Filter "bmp,ico"\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\action.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\appicon.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\apps.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\arrow.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\arrow_dwn.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\arrow_up.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\arrowsel.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\computer.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\config.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\documents.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
++SOURCE=.\res\dot.ico\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\dot_red.ico\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\dot_trans.ico\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\drivebar.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=".\explorer-jp.rc"\r
++# PROP Exclude_From_Build 1\r
++# End Source File\r
++# Begin Source File\r
++\r
+ SOURCE=.\res\explorer.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\explorer_intres.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\explorer_intres.rc\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\favorites.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\floating.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\folder.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
++SOURCE=.\res\icoali10.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\icoalig0.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\icoalig1.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\icoalig2.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\icoalig3.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\icoalig4.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\icoalig5.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\icoalig6.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\icoalig7.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\icoalig8.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\res\icoalig9.bmp\r
++# End Source File\r
++# Begin Source File\r
++\r
+ SOURCE=.\res\images.bmp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\info.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\logoff.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\logov.bmp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\logov16.bmp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\logov256.bmp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\network.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
 -SOURCE=.\res\reactos.ico\r
++SOURCE=.\res\notify_l.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
 -SOURCE=".\res\ros-big.ico"\r
++SOURCE=.\res\notify_r.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
 -SOURCE=".\rosshell-jp.rc"\r
 -# PROP Exclude_From_Build 1\r
++SOURCE=.\res\printer.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
 -SOURCE=.\res\rosshell.ico\r
++SOURCE=.\res\reactos.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
 -SOURCE=.\res\startmenu.ico\r
++SOURCE=".\res\ros-big.ico"\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=".\res\search-doc.ico"\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\res\search.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
 -SOURCE=.\res\toolbar.bmp\r
++SOURCE=.\res\speaker.ico\r
+ # End Source File\r
+ # Begin Source File\r
\r
 -SOURCE=.\shell\shellbrowser.h\r
++SOURCE=.\res\startmenu.ico\r
+ # End Source File\r
+ # End Group\r
+ # Begin Group "taskbar"\r
\r
+ # PROP Default_Filter ""\r
+ # Begin Source File\r
\r
+ SOURCE=.\taskbar\desktopbar.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\taskbar\desktopbar.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
++SOURCE=.\taskbar\favorites.cpp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\taskbar\favorites.h\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\notifyhook\notifyhook.h\r
++# End Source File\r
++# Begin Source File\r
++\r
+ SOURCE=.\taskbar\quicklaunch.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\taskbar\quicklaunch.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\taskbar\startmenu.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\taskbar\startmenu.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\taskbar\taskbar.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\taskbar\taskbar.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\taskbar\traynotify.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\taskbar\traynotify.h\r
+ # End Source File\r
+ # End Group\r
+ # Begin Group "desktop"\r
\r
+ # PROP Default_Filter ""\r
+ # Begin Source File\r
\r
+ SOURCE=.\desktop\desktop.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\desktop\desktop.h\r
+ # End Source File\r
+ # End Group\r
+ # Begin Group "shell"\r
\r
+ # PROP Default_Filter ""\r
+ # Begin Source File\r
\r
+ SOURCE=.\shell\entries.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\shell\entries.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
 -SOURCE=.\shell\shellfs.cpp\r
++SOURCE=.\shell\filechild.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
 -SOURCE=.\shell\shellfs.h\r
++SOURCE=.\shell\pane.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
 -SOURCE=.\shell\startup.c\r
 -# SUBTRACT CPP /YX /Yc /Yu\r
++SOURCE=.\shell\pane.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
++SOURCE=.\shell\shellbrowser.h\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\shell\shellfs.cpp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\shell\shellfs.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\shell\winfs.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\shell\winfs.h\r
+ # End Source File\r
+ # End Group\r
+ # Begin Group "dialogs"\r
\r
+ # PROP Default_Filter ""\r
+ # Begin Source File\r
\r
++SOURCE=.\dialogs\searchprogram.cpp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\dialogs\searchprogram.h\r
++# End Source File\r
++# Begin Source File\r
++\r
+ SOURCE=.\dialogs\settings.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\dialogs\settings.h\r
+ # End Source File\r
+ # End Group\r
+ # Begin Group "main"\r
\r
+ # PROP Default_Filter ""\r
+ # Begin Source File\r
\r
+ SOURCE=.\explorer.cpp\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\explorer.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\externals.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\globals.h\r
+ # End Source File\r
+ # Begin Source File\r
\r
++SOURCE=".\i386-stub-win32.c"\r
++# SUBTRACT CPP /YX /Yc /Yu\r
++# End Source File\r
++# Begin Source File\r
++\r
+ SOURCE=.\precomp.cpp\r
+ # ADD CPP /Yc"precomp.h"\r
+ # End Source File\r
+ # Begin Source File\r
\r
+ SOURCE=.\precomp.h\r
+ # End Source File\r
+ # End Group\r
++# Begin Group "services"\r
++\r
++# PROP Default_Filter ""\r
++# Begin Source File\r
++\r
++SOURCE=.\services\shellservices.cpp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\services\shellservices.h\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\services\startup.c\r
++# SUBTRACT CPP /YX /Yc /Yu\r
++# End Source File\r
++# End Group\r
+ # End Target\r
+ # End Project\r
index 0000000,a350783..a4b2104
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,41 +1,56 @@@
+ Microsoft Developer Studio Workspace File, Format Version 6.00\r
+ # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
\r
+ ###############################################################################\r
\r
+ Project: "rosshell"=.\rosshell.dsp - Package Owner=<4>\r
\r
+ Package=<5>\r
+ {{{\r
+ }}}\r
\r
+ Package=<4>\r
+ {{{\r
++    Begin Project Dependency\r
++    Project_Dep_Name notifyhook\r
++    End Project Dependency\r
+ }}}\r
\r
+ ###############################################################################\r
\r
+ Project: "make_rosshell"=.\make_rosshell.dsp - Package Owner=<4>\r
\r
+ Package=<5>\r
+ {{{\r
+ }}}\r
\r
+ Package=<4>\r
+ {{{\r
+ }}}\r
\r
+ ###############################################################################\r
\r
++Project: "notifyhook"=.\notifyhook\notifyhook.dsp - Package Owner=<4>\r
++\r
++Package=<5>\r
++{{{\r
++}}}\r
++\r
++Package=<4>\r
++{{{\r
++}}}\r
++\r
++###############################################################################\r
++\r
+ Global:\r
\r
+ Package=<5>\r
+ {{{\r
+ }}}\r
\r
+ Package=<3>\r
+ {{{\r
+ }}}\r
\r
+ ###############################################################################\r
\r
@@@ -1854,61 -1822,30 +1859,82 @@@ int StartMenuHandler::Command(int id, i
                ExplorerPropertySheet(g_Globals._hwndDesktopBar);
                break;
  
 -        case IDC_CONTROL_PANEL:
 +        case IDC_CONTROL_PANEL: {
                CloseStartMenu(id);
 -              MainFrame::Create(SHELLPATH_CONTROL_PANEL, 0);
+ #ifndef ROSSHELL
 +#ifndef _NO_MDI
 +              XMLPos explorer_options = g_Globals.get_cfg("general/explorer");
 +              bool mdi = XMLBool(explorer_options, "mdi", true);
 +
 +              if (mdi)
 +                      MDIMainFrame::Create(TEXT("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}"), 0);
 +              else
 +#endif
 +                      SDIMainFrame::Create(TEXT("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}"), 0);
+ #else
+               launch_file(_hwnd, SHELLPATH_CONTROL_PANEL);
+ #endif
 +              break;}
 +
 +        case IDC_SETTINGS_MENU:
 +              CreateSubmenu(id, CSIDL_CONTROLS, ResString(IDS_SETTINGS_MENU));
                break;
  
 -        case IDC_PRINTERS:
 +        case IDC_PRINTERS: {
                CloseStartMenu(id);
 -              MainFrame::Create(SpecialFolderPath(CSIDL_PRINTERS, _hwnd), OWM_PIDL);
++
+ #ifndef ROSSHELL
 +#ifdef _ROS_  // to be removed when printer folder will be implemented
 +              MessageBox(0, TEXT("printer folder not yet implemented in SHELL32"), ResString(IDS_TITLE), MB_OK);
 +#else
 +#ifndef _NO_MDI
 +              XMLPos explorer_options = g_Globals.get_cfg("general/explorer");
 +              bool mdi = XMLBool(explorer_options, "mdi", true);
 +
 +              if (mdi)
 +                      MDIMainFrame::Create(TEXT("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\\::{2227A280-3AEA-1069-A2DE-08002B30309D}"), 0);
 +              else
 +#endif
 +                      SDIMainFrame::Create(TEXT("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\\::{2227A280-3AEA-1069-A2DE-08002B30309D}"), 0);
++#endif
+ #else
+               launch_file(_hwnd, SHELLPATH_PRINTERS);
 +#endif
 +              break;}
 +
 +        case IDC_PRINTERS_MENU:
 +              CreateSubmenu(id, CSIDL_PRINTERS, CSIDL_PRINTHOOD, ResString(IDS_PRINTERS));
 +/*            StartMenuFolders new_folders;
 +
 +              try {
 +                      new_folders.push_back(ShellPath(TEXT("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\\::{2227A280-3AEA-1069-A2DE-08002B30309D}")));
 +              } catch(COMException&) {
 +              }
 +
 +              CreateSubmenu(id, new_folders, ResString(IDS_PRINTERS));*/
 +              break;
 +
 +        case IDC_ADMIN:
++#ifndef ROSSHELL
 +              CreateSubmenu(id, CSIDL_COMMON_ADMINTOOLS, CSIDL_ADMINTOOLS, ResString(IDS_ADMIN));
++              //CloseStartMenu(id);
++              //MainFrame::Create(SpecialFolderPath(CSIDL_COMMON_ADMINTOOLS, _hwnd), OWM_PIDL);
++#else
++              launch_file(_hwnd, SpecialFolderFSPath(CSIDL_COMMON_ADMINTOOLS, _hwnd));
+ #endif
                break;
  
          case IDC_CONNECTIONS:
 -              CloseStartMenu(id);
+ #ifndef ROSSHELL
 -              MainFrame::Create(SpecialFolderPath(CSIDL_CONNECTIONS, _hwnd), OWM_PIDL);
 +#ifdef _ROS_  // to be removed when RAS will be implemented
 +              MessageBox(0, TEXT("RAS folder not yet implemented in SHELL32"), ResString(IDS_TITLE), MB_OK);
 +#else
 +              CreateSubmenu(id, CSIDL_CONNECTIONS, ResString(IDS_CONNECTIONS));
++              //CloseStartMenu(id);
++              //MainFrame::Create(SpecialFolderPath(CSIDL_CONNECTIONS, _hwnd), OWM_PIDL);
++#endif
+ #else
+               launch_file(_hwnd, SHELLPATH_NET_CONNECTIONS);
  #endif
                break;
  
@@@ -198,21 -189,6 +198,21 @@@ using namespace _com_util
  #endif        // _MSC_VER && !_NO_COMUTIL
  
  
- extern BOOL launch_file(HWND hwnd, LPCTSTR cmd, UINT nCmdShow, LPCTSTR parameters=NULL);
 + // launch a program or document file
- extern BOOL launch_fileA(HWND hwnd, LPSTR cmd, UINT nCmdShow, LPCSTR parameters=NULL);
++extern BOOL launch_file(HWND hwnd, LPCTSTR cmd, UINT nCmdShow=SW_SHOWNORMAL, LPCTSTR parameters=NULL);
 +#ifdef UNICODE
++extern BOOL launch_fileA(HWND hwnd, LPSTR cmd, UINT nCmdShow=SW_SHOWNORMAL, LPCSTR parameters=NULL);
 +#else
 +#define       launch_fileA launch_file
 +#endif
 +
 + // call an DLL export like rundll32
 +extern BOOL RunDLL(HWND hwnd, LPCTSTR dllname, LPCSTR procname, LPCTSTR cmdline, UINT nCmdShow);
 +
 + // launch control panel applet
 +extern BOOL launch_cpanel(HWND hwnd, LPCTSTR applet);
 +
 +
   /// initialization of windows common controls
  struct CommonControlInit
  {