]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gtk/dirdlg.h
make wxTmemchr() return (and take) char* instead of void* in ANSI build too
[wxWidgets.git] / include / wx / gtk / dirdlg.h
index b6aa471ac4573da6bc77ee361abf5c797cb461ea..35d6085c211fa32334954002cf2353c85aad683a 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 // Name:        dirdlg.h
 // Purpose:     wxDirDialog
-// Author:      Harm van der Heijden and Robert Roebling
-// Modified by:
-// Created:     12/12/98
-// Copyright:   (c) Harm van der Heijden and Robert Roebling
-// Licence:    wxWindows licence
-//
-// Notes:       wxDirDialog class written by Harm van der Heijden, 
-//              uses wxDirCtrl class written by Robert Roebling for the
-//              wxFile application, modified by Harm van der Heijden
-//
-// Description: This generic dirdialog implementation defines three classes:
-//              1) wxDirItemData(public wxTreeItemData) stores pathname and
-//              displayed name for each item in the directory tree
-//              2) wxDirCtrl(public wxTreeCtrl) is a tree widget that 
-//              displays a directory tree. It is possible to define sections
-//              for fast access to parts of the file system (such as the 
-//              user's homedir, /usr/local, /tmp ...etc), similar to
-//              Win95 Explorer's shortcuts to 'My Computer', 'Desktop', etc.
-//              3) wxDirDialog is the dialog box itself. The user can choose
-//              a directory by navigating the tree, or by typing a dir
-//              in an inputbox. The inputbox displays paths selected in the
-//              tree. It is possible to create new directories. The user
-//              will automatically be prompted for dir creation if he 
-//              enters a non-existing dir.
-//
-// TODO/BUGS:   - standard sections only have reasonable defaults for Unix
-//                (but others are easily added in wxDirCtrl::SetupSections)
-//              - No direct support for "show hidden" toggle. Partly due
-//                to laziness on my part and partly because 
-//                wxFindFirst/NextFile never seems to find hidden dirs
-//                anyway.
-//              - No automatic update of the tree (branch) after directory
-//                creation.
-//              - I call wxBeginBusyCursor while expanding items (creating
-//                a new branch might take a few seconds, especially if a
-//                CDROM drive or something is involved) but that doesn't
-//                seem to do anything. Need to look into that.
-//              - Am still looking for an efficient way to delete wxTreeCtrl
-//                branches. DeleteChildren has disappeared and 
-//                CollapseAndReset( parent ) deletes the parent as well.
-//              - The dialog window layout is done using wxConstraints. It
-//                works, but it's not as simple as I'd like it to be (see 
-//                comments in wxDirDialog::doSize)
-//
+// Author:      Francesco Montorsi
+// Id:          $Id$
+// Copyright:   (c) 2006 Francesco Montorsi
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef __GTKDIRDLGH__
 #define __GTKDIRDLGH__
 
-#ifdef __GNUG__
-#pragma interface "dirdlg.h"
-#endif
+#include "wx/generic/dirdlgg.h"
 
-#include "wx/dialog.h"
-//#include "wx/checkbox.h"
-#include "wx/treectrl.h"
-
-WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr;
-
-//-----------------------------------------------------------------------------
-// wxDirItemData
-//-----------------------------------------------------------------------------
+//-------------------------------------------------------------------------
+// wxDirDialog
+//-------------------------------------------------------------------------
 
-class wxDirItemData : public wxTreeItemData
+class WXDLLIMPEXP_CORE wxDirDialog : public wxGenericDirDialog
 {
 public:
-  wxDirItemData(wxString& path, wxString& name);
-  ~wxDirItemData();
-  bool HasSubDirs();
-  wxString *m_path, *m_name;
-  bool m_isHidden;
-  bool m_hasSubDirs;
-};
+    wxDirDialog() { }
 
-//-----------------------------------------------------------------------------
-// wxDirCtrl
-//-----------------------------------------------------------------------------
+    wxDirDialog(wxWindow *parent,
+                const wxString& message = wxDirSelectorPromptStr,
+                const wxString& defaultPath = wxEmptyString,
+                long style = wxDD_DEFAULT_STYLE,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                const wxString& name = wxDirDialogNameStr);
 
-class wxDirCtrl: public wxTreeCtrl
-{
-  DECLARE_DYNAMIC_CLASS(wxDirCtrl)
-  
-  public:
-    bool   m_showHidden;
-    wxTreeItemId   m_rootId;
-  
-    wxDirCtrl(void);
-    wxDirCtrl(wxWindow *parent, const wxWindowID id = -1, 
-             const wxString &dir = "/",
-             const wxPoint& pos = wxDefaultPosition,
-             const wxSize& size = wxDefaultSize,
-             const long style = wxTR_HAS_BUTTONS,
-             const wxString& name = "wxTreeCtrl" );
-    void OnExpandItem( const wxTreeEvent &event );
-    void OnCollapseItem( const wxTreeEvent &event );
-    void ShowHidden( const bool yesno );
-    DECLARE_EVENT_TABLE()
- protected:
-    void CreateItems(const wxTreeItemId &parent);
-    void SetupSections(void);
-    wxArrayString m_paths, m_names;
-};
+    virtual ~wxDirDialog() { }
 
-//-----------------------------------------------------------------------------
-// wxDirDialog
-//-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDirDialog: public wxDialog
-{
-  DECLARE_DYNAMIC_CLASS(wxDirDialog)
- public:
-    wxDirDialog(wxWindow *parent, 
-               const wxString& message = wxFileSelectorPromptStr,
-               const wxString& defaultPath = "",
-               long style = 0, const wxPoint& pos = wxDefaultPosition);
-    inline void SetMessage(const wxString& message) { m_message = message; }
-    inline void SetPath(const wxString& path) { m_path = path; }
-    inline void SetStyle(long style) { m_dialogStyle = style; }
+public:     // overrides from wxGenericDirDialog
 
-    inline wxString GetMessage() const { return m_message; }
-    inline wxString GetPath() const { return m_path; }
-    inline long GetStyle() const { return m_dialogStyle; }
+    wxString GetPath() const;
+    void SetPath(const wxString& path);
 
-    int ShowModal();
+    virtual int ShowModal();
+    virtual bool Show( bool show = true );
 
-    void OnTreeSelected( wxTreeEvent &event );
-    void OnTreeKeyDown( wxKeyEvent &event );
-    void OnSize(wxSizeEvent& event);
-    void OnOK(wxCommandEvent& event);
-    void OnCancel(wxCommandEvent& event); 
-    void OnNew(wxCommandEvent& event);
-    // void OnCheck(wxCommandEvent& event);
-    DECLARE_EVENT_TABLE()
 
- protected:
-    // implementation
-    wxString    m_message;
-    long        m_dialogStyle;
-    wxWindow *  m_parent;
-    wxString    m_path;
-    wxDirCtrl  *m_dir;
-    wxTextCtrl *m_input;
-    // wxCheckBox *m_check;
-    wxButton   *m_ok, *m_cancel, *m_new;
-    void doSize();
+protected:
+    // override this from wxTLW since the native
+    // form doesn't have any m_wxwindow
+    virtual void DoSetSize(int x, int y,
+                           int width, int height,
+                           int sizeFlags = wxSIZE_AUTO);
+
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxDirDialog)
+    DECLARE_EVENT_TABLE()
+    void OnFakeOk( wxCommandEvent &event );
 };
 
-#endif
-    // __GTKDIRDLGH__
+#endif // __GTKDIRDLGH__