00001 /* 00002 * Copyright 2003, 2004 Martin Fuchs 00003 * 00004 * This library is free software; you can redistribute it and/or 00005 * modify it under the terms of the GNU Lesser General Public 00006 * License as published by the Free Software Foundation; either 00007 * version 2.1 of the License, or (at your option) any later version. 00008 * 00009 * This library is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 * Lesser General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU Lesser General Public 00015 * License along with this library; if not, write to the Free Software 00016 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00017 */ 00018 00019 00020 // 00021 // Explorer clone 00022 // 00023 // filechild.h 00024 // 00025 // Martin Fuchs, 23.07.2003 00026 // 00027 00028 00029 /// information structure for creation of FileChildWindow 00030 struct FileChildWndInfo : public ChildWndInfo 00031 { 00032 typedef ChildWndInfo super; 00033 00034 FileChildWndInfo(HWND hmdiclient, LPCTSTR path, ENTRY_TYPE etype=ET_UNKNOWN); 00035 00036 ENTRY_TYPE _etype; 00037 LPCTSTR _path; 00038 00039 WINDOWPLACEMENT _pos; 00040 int _open_mode; //OPEN_WINDOW_MODE 00041 }; 00042 00043 /// information structure for creation of MDIShellBrowserChild 00044 struct ShellChildWndInfo : public FileChildWndInfo 00045 { 00046 typedef FileChildWndInfo super; 00047 00048 ShellChildWndInfo(HWND hmdiclient, LPCTSTR path, const ShellPath& root_shell_path); 00049 00050 ShellPath _shell_path; 00051 ShellPath _root_shell_path; 00052 }; 00053 00054 /// information structure for creation of FileChildWindow for NT object namespace 00055 struct NtObjChildWndInfo : public FileChildWndInfo 00056 { 00057 typedef FileChildWndInfo super; 00058 00059 NtObjChildWndInfo(HWND hmdiclient, LPCTSTR path); 00060 }; 00061 00062 /// information structure for creation of FileChildWindow for the Registry 00063 struct RegistryChildWndInfo : public FileChildWndInfo 00064 { 00065 typedef FileChildWndInfo super; 00066 00067 RegistryChildWndInfo(HWND hmdiclient, LPCTSTR path); 00068 }; 00069 00070 /// information structure for creation of FileChildWindow 00071 struct FATChildWndInfo : public FileChildWndInfo 00072 { 00073 typedef FileChildWndInfo super; 00074 00075 FATChildWndInfo(HWND hmdiclient, LPCTSTR path); 00076 }; 00077 00078 /// information structure for creation of WebChildWindow 00079 struct WebChildWndInfo : public FileChildWndInfo 00080 { 00081 typedef FileChildWndInfo super; 00082 00083 WebChildWndInfo(HWND hmdiclient, LPCTSTR url); 00084 }; 00085 00086 00087 /// MDI child window displaying file lists 00088 struct FileChildWindow : public ExtContextMenuHandlerT<ChildWindow> 00089 { 00090 typedef ExtContextMenuHandlerT<ChildWindow> super; 00091 00092 FileChildWindow(HWND hwnd, const FileChildWndInfo& info); 00093 00094 static FileChildWindow* create(const FileChildWndInfo& info); 00095 00096 protected: 00097 LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam); 00098 int Command(int id, int code); 00099 int Notify(int id, NMHDR* pnmh); 00100 00101 virtual void resize_children(int cx, int cy); 00102 virtual String jump_to_int(LPCTSTR url); 00103 00104 void scan_entry(Entry* entry); 00105 00106 bool expand_entry(Entry* dir); 00107 static void collapse_entry(Pane* pane, Entry* dir); 00108 00109 void set_curdir(Entry* entry); 00110 void activate_entry(Pane* pane); 00111 00112 void refresh(); 00113 00114 protected: 00115 Root _root; 00116 Pane* _left; 00117 Pane* _right; 00118 TCHAR _path[MAX_PATH]; 00119 bool _header_wdths_ok; 00120 00121 public: 00122 const Root& get_root() const {return _root;} 00123 00124 void set_focus_pane(Pane* pane) 00125 {_focus_pane = pane==_right? 1: 0;} 00126 00127 void switch_focus_pane() 00128 {SetFocus(_focus_pane? *_left: *_right);} 00129 }; 00130 00131 00132 /// The "Execute..."-dialog lets the user enter a command line to launch. 00133 struct ExecuteDialog { ///@todo use class Dialog 00134 TCHAR cmd[MAX_PATH]; 00135 int cmdshow; 00136 00137 static INT_PTR CALLBACK WndProc(HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam); 00138 };
ROS Explorer Source Code Documentation
generated on 02.01.2013 by ![]() |