filechild.h

Go to the documentation of this file.
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 doxygen

ROS Explorer Homepage