Added and corrected a few more html makefiles,
Corrected wrong buffer size in menu code, Turned wxDirDlgg from functional to cool, Found a few esoteric bugs in wxListCtrl and wxTreeCtrl on the way git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3387 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
28
Makefile.in
28
Makefile.in
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# This file was automatically generated by tmake at 11:55, 1999/08/14
|
# This file was automatically generated by tmake at 20:13, 1999/08/14
|
||||||
# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE UNX.T!
|
# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE UNX.T!
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -1197,19 +1197,19 @@ REQUIRED_DIRS = ./lib ./src ./src/common ./src/gtk ./src/motif ./src/msw \
|
|||||||
all: $(REQUIRED_DIRS) $(OBJECTS) @WX_TARGET_LIBRARY@ @WX_CREATE_LINKS@
|
all: $(REQUIRED_DIRS) $(OBJECTS) @WX_TARGET_LIBRARY@ @WX_CREATE_LINKS@
|
||||||
|
|
||||||
$(REQUIRED_DIRS): $(WXDIR)/include/wx/defs.h $(WXDIR)/include/wx/object.h $(WXDIR)/include/wx/setup.h
|
$(REQUIRED_DIRS): $(WXDIR)/include/wx/defs.h $(WXDIR)/include/wx/object.h $(WXDIR)/include/wx/setup.h
|
||||||
mkdir -p ./lib
|
@mkdir -p ./lib
|
||||||
mkdir -p ./src
|
@mkdir -p ./src
|
||||||
mkdir -p ./src/common
|
@mkdir -p ./src/common
|
||||||
mkdir -p ./src/msw
|
@mkdir -p ./src/msw
|
||||||
mkdir -p ./src/gtk
|
@mkdir -p ./src/gtk
|
||||||
mkdir -p ./src/motif
|
@mkdir -p ./src/motif
|
||||||
mkdir -p ./src/motif/xmcombo
|
@mkdir -p ./src/motif/xmcombo
|
||||||
mkdir -p ./src/generic
|
@mkdir -p ./src/generic
|
||||||
mkdir -p ./src/unix
|
@mkdir -p ./src/unix
|
||||||
mkdir -p ./src/html
|
@mkdir -p ./src/html
|
||||||
mkdir -p ./src/png
|
@mkdir -p ./src/png
|
||||||
mkdir -p ./src/jpeg
|
@mkdir -p ./src/jpeg
|
||||||
mkdir -p ./src/zlib
|
@mkdir -p ./src/zlib
|
||||||
|
|
||||||
@WX_LIBRARY_NAME_STATIC@: $(OBJECTS)
|
@WX_LIBRARY_NAME_STATIC@: $(OBJECTS)
|
||||||
$(AR) $(AROPTIONS) ./lib/$@ $(OBJECTS)
|
$(AR) $(AROPTIONS) ./lib/$@ $(OBJECTS)
|
||||||
|
@@ -2733,6 +2733,9 @@ AC_OUTPUT([
|
|||||||
samples/html/help/Makefile
|
samples/html/help/Makefile
|
||||||
samples/html/printing/Makefile
|
samples/html/printing/Makefile
|
||||||
samples/html/test/Makefile
|
samples/html/test/Makefile
|
||||||
|
samples/html/zip/Makefile
|
||||||
|
samples/html/virtual/Makefile
|
||||||
|
samples/html/widget/Makefile
|
||||||
utils/Makefile
|
utils/Makefile
|
||||||
utils/wxMMedia2/Makefile
|
utils/wxMMedia2/Makefile
|
||||||
utils/wxMMedia2/lib/Makefile
|
utils/wxMMedia2/lib/Makefile
|
||||||
|
@@ -403,19 +403,19 @@ REQUIRED_DIRS = ./lib ./src ./src/common ./src/gtk ./src/motif ./src/msw \
|
|||||||
all: $(REQUIRED_DIRS) $(OBJECTS) @WX_TARGET_LIBRARY@ @WX_CREATE_LINKS@
|
all: $(REQUIRED_DIRS) $(OBJECTS) @WX_TARGET_LIBRARY@ @WX_CREATE_LINKS@
|
||||||
|
|
||||||
$(REQUIRED_DIRS): $(WXDIR)/include/wx/defs.h $(WXDIR)/include/wx/object.h $(WXDIR)/include/wx/setup.h
|
$(REQUIRED_DIRS): $(WXDIR)/include/wx/defs.h $(WXDIR)/include/wx/object.h $(WXDIR)/include/wx/setup.h
|
||||||
mkdir -p ./lib
|
@mkdir -p ./lib
|
||||||
mkdir -p ./src
|
@mkdir -p ./src
|
||||||
mkdir -p ./src/common
|
@mkdir -p ./src/common
|
||||||
mkdir -p ./src/msw
|
@mkdir -p ./src/msw
|
||||||
mkdir -p ./src/gtk
|
@mkdir -p ./src/gtk
|
||||||
mkdir -p ./src/motif
|
@mkdir -p ./src/motif
|
||||||
mkdir -p ./src/motif/xmcombo
|
@mkdir -p ./src/motif/xmcombo
|
||||||
mkdir -p ./src/generic
|
@mkdir -p ./src/generic
|
||||||
mkdir -p ./src/unix
|
@mkdir -p ./src/unix
|
||||||
mkdir -p ./src/html
|
@mkdir -p ./src/html
|
||||||
mkdir -p ./src/png
|
@mkdir -p ./src/png
|
||||||
mkdir -p ./src/jpeg
|
@mkdir -p ./src/jpeg
|
||||||
mkdir -p ./src/zlib
|
@mkdir -p ./src/zlib
|
||||||
|
|
||||||
@WX_LIBRARY_NAME_STATIC@: $(OBJECTS)
|
@WX_LIBRARY_NAME_STATIC@: $(OBJECTS)
|
||||||
$(AR) $(AROPTIONS) ./lib/$@ $(OBJECTS)
|
$(AR) $(AROPTIONS) ./lib/$@ $(OBJECTS)
|
||||||
|
@@ -76,14 +76,62 @@ class wxDirItemData;
|
|||||||
class wxDirCtrl;
|
class wxDirCtrl;
|
||||||
class wxDirDialog;
|
class wxDirDialog;
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// wxDirItemData
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxDirItemData : public wxTreeItemData
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxDirItemData(wxString& path, wxString& name);
|
||||||
|
~wxDirItemData();
|
||||||
|
bool HasSubDirs();
|
||||||
|
void SetNewDirName( wxString path );
|
||||||
|
wxString m_path, m_name;
|
||||||
|
bool m_isHidden;
|
||||||
|
bool m_hasSubDirs;
|
||||||
|
};
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// wxDirCtrl
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxDirCtrl: public wxTreeCtrl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool m_showHidden;
|
||||||
|
wxTreeItemId m_rootId;
|
||||||
|
|
||||||
|
wxDirCtrl();
|
||||||
|
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 ShowHidden( const bool yesno );
|
||||||
|
void OnExpandItem(wxTreeEvent &event );
|
||||||
|
void OnCollapseItem(wxTreeEvent &event );
|
||||||
|
void OnBeginEditItem(wxTreeEvent &event );
|
||||||
|
void OnEndEditItem(wxTreeEvent &event );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void CreateItems(const wxTreeItemId &parent);
|
||||||
|
void SetupSections();
|
||||||
|
wxArrayString m_paths, m_names;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxDirCtrl)
|
||||||
|
};
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// wxDirDialog
|
// wxDirDialog
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
class WXDLLEXPORT wxDirDialog: public wxDialog
|
class WXDLLEXPORT wxDirDialog: public wxDialog
|
||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS(wxDirDialog)
|
public:
|
||||||
public:
|
|
||||||
wxDirDialog(wxWindow *parent,
|
wxDirDialog(wxWindow *parent,
|
||||||
const wxString& message = wxFileSelectorPromptStr,
|
const wxString& message = wxFileSelectorPromptStr,
|
||||||
const wxString& defaultPath = wxEmptyString,
|
const wxString& defaultPath = wxEmptyString,
|
||||||
@@ -100,24 +148,24 @@ class WXDLLEXPORT wxDirDialog: public wxDialog
|
|||||||
|
|
||||||
void OnTreeSelected( wxTreeEvent &event );
|
void OnTreeSelected( wxTreeEvent &event );
|
||||||
void OnTreeKeyDown( wxTreeEvent &event );
|
void OnTreeKeyDown( wxTreeEvent &event );
|
||||||
void OnSize(wxSizeEvent& event);
|
|
||||||
void OnOK(wxCommandEvent& event);
|
void OnOK(wxCommandEvent& event);
|
||||||
void OnCancel(wxCommandEvent& event);
|
void OnCancel(wxCommandEvent& event);
|
||||||
void OnNew(wxCommandEvent& event);
|
void OnNew(wxCommandEvent& event);
|
||||||
// void OnCheck(wxCommandEvent& event);
|
// void OnCheck(wxCommandEvent& event);
|
||||||
DECLARE_EVENT_TABLE()
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// implementation
|
// implementation
|
||||||
wxString m_message;
|
wxString m_message;
|
||||||
long m_dialogStyle;
|
long m_dialogStyle;
|
||||||
wxWindow * m_parent;
|
wxString m_path;
|
||||||
wxString m_path;
|
wxDirCtrl *m_dir;
|
||||||
wxDirCtrl *m_dir;
|
wxTextCtrl *m_input;
|
||||||
wxTextCtrl *m_input;
|
wxCheckBox *m_check; // not yet used
|
||||||
// wxCheckBox *m_check;
|
wxButton *m_ok, *m_cancel, *m_new;
|
||||||
wxButton *m_ok, *m_cancel, *m_new;
|
|
||||||
void doSize();
|
private:
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxDirDialog)
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
top_builddir = ../..
|
top_builddir = ../..
|
||||||
program_dir = samples/samples/dialogs
|
program_dir = samples/dialogs
|
||||||
|
|
||||||
PROGRAM=dialogs
|
PROGRAM=dialogs
|
||||||
|
|
||||||
|
@@ -11,8 +11,9 @@
|
|||||||
|
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
top_builddir = ../../..
|
top_builddir = ../../..
|
||||||
|
program_dir = samples/html/printing
|
||||||
|
|
||||||
VPATH = :$(top_srcdir)/samples/html/printing
|
DATAFILES = test.htm pic.png
|
||||||
|
|
||||||
PROGRAM=printing
|
PROGRAM=printing
|
||||||
|
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
Makefile.in
|
|
||||||
|
@@ -1,9 +0,0 @@
|
|||||||
AUTOMAKE_OPTIONS = 1.3 no-dependencies
|
|
||||||
|
|
||||||
SUFFIXES = .cpp
|
|
||||||
|
|
||||||
DEFS = @DEFS@ $(TOOLKIT_DEF) $(WXDEBUG_DEFINE)
|
|
||||||
|
|
||||||
noinst_PROGRAMS = virtual
|
|
||||||
|
|
||||||
virtual_SOURCES = virtual.cpp
|
|
23
samples/html/virtual/Makefile.in
Normal file
23
samples/html/virtual/Makefile.in
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#
|
||||||
|
# File: Makefile.in
|
||||||
|
# Author: Julian Smart
|
||||||
|
# Created: 1998
|
||||||
|
# Updated:
|
||||||
|
# Copyright: (c) 1998 Julian Smart
|
||||||
|
#
|
||||||
|
# "%W% %G%"
|
||||||
|
#
|
||||||
|
# Makefile for html virtual example (UNIX).
|
||||||
|
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
top_builddir = ../../..
|
||||||
|
program_dir = samples/html/virtual
|
||||||
|
|
||||||
|
PROGRAM=virtual
|
||||||
|
|
||||||
|
OBJECTS=$(PROGRAM).o
|
||||||
|
|
||||||
|
DATAFILES=start.htm
|
||||||
|
|
||||||
|
include ../../../src/makeprog.env
|
||||||
|
|
@@ -1 +0,0 @@
|
|||||||
Makefile.in
|
|
||||||
|
@@ -1,9 +0,0 @@
|
|||||||
AUTOMAKE_OPTIONS = 1.3 no-dependencies
|
|
||||||
|
|
||||||
SUFFIXES = .cpp
|
|
||||||
|
|
||||||
DEFS = @DEFS@ $(TOOLKIT_DEF) $(WXDEBUG_DEFINE)
|
|
||||||
|
|
||||||
noinst_PROGRAMS = widget
|
|
||||||
|
|
||||||
widget_SOURCES = widget.cpp
|
|
23
samples/html/widget/Makefile.in
Normal file
23
samples/html/widget/Makefile.in
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#
|
||||||
|
# File: Makefile.in
|
||||||
|
# Author: Julian Smart
|
||||||
|
# Created: 1998
|
||||||
|
# Updated:
|
||||||
|
# Copyright: (c) 1998 Julian Smart
|
||||||
|
#
|
||||||
|
# "%W% %G%"
|
||||||
|
#
|
||||||
|
# Makefile for html widget example (UNIX).
|
||||||
|
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
top_builddir = ../../..
|
||||||
|
program_dir = samples/html/widget
|
||||||
|
|
||||||
|
PROGRAM=widget
|
||||||
|
|
||||||
|
OBJECTS=$(PROGRAM).o
|
||||||
|
|
||||||
|
DATAFILES=start.htm
|
||||||
|
|
||||||
|
include ../../../src/makeprog.env
|
||||||
|
|
@@ -1 +0,0 @@
|
|||||||
Makefile.in
|
|
||||||
|
@@ -1,9 +0,0 @@
|
|||||||
AUTOMAKE_OPTIONS = 1.3 no-dependencies
|
|
||||||
|
|
||||||
SUFFIXES = .cpp
|
|
||||||
|
|
||||||
DEFS = @DEFS@ $(TOOLKIT_DEF) $(WXDEBUG_DEFINE)
|
|
||||||
|
|
||||||
noinst_PROGRAMS = zip
|
|
||||||
|
|
||||||
zip_SOURCES = zip.cpp
|
|
23
samples/html/zip/Makefile.in
Normal file
23
samples/html/zip/Makefile.in
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#
|
||||||
|
# File: Makefile.in
|
||||||
|
# Author: Julian Smart
|
||||||
|
# Created: 1998
|
||||||
|
# Updated:
|
||||||
|
# Copyright: (c) 1998 Julian Smart
|
||||||
|
#
|
||||||
|
# "%W% %G%"
|
||||||
|
#
|
||||||
|
# Makefile for html zip example (UNIX).
|
||||||
|
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
top_builddir = ../../..
|
||||||
|
program_dir = samples/html/zip
|
||||||
|
|
||||||
|
PROGRAM=zip
|
||||||
|
|
||||||
|
OBJECTS=$(PROGRAM).o
|
||||||
|
|
||||||
|
DATAFILES=pages.zip start.htm
|
||||||
|
|
||||||
|
include ../../../src/makeprog.env
|
||||||
|
|
@@ -264,10 +264,11 @@ bool wxSingleChoiceDialog::Create( wxWindow *WXUNUSED(parent),
|
|||||||
// 4) buttons
|
// 4) buttons
|
||||||
topsizer->Add( CreateButtonSizer( wxOK|wxCANCEL ), 0, wxCENTRE | wxALL, 10 );
|
topsizer->Add( CreateButtonSizer( wxOK|wxCANCEL ), 0, wxCENTRE | wxALL, 10 );
|
||||||
|
|
||||||
|
SetAutoLayout( TRUE );
|
||||||
|
SetSizer( topsizer );
|
||||||
|
|
||||||
topsizer->SetSizeHints( this );
|
topsizer->SetSizeHints( this );
|
||||||
topsizer->Fit( this );
|
topsizer->Fit( this );
|
||||||
SetSizer( topsizer );
|
|
||||||
SetAutoLayout( TRUE );
|
|
||||||
|
|
||||||
Centre( wxBOTH );
|
Centre( wxBOTH );
|
||||||
|
|
||||||
|
@@ -35,6 +35,12 @@
|
|||||||
#include "wx/intl.h"
|
#include "wx/intl.h"
|
||||||
#include "wx/imaglist.h"
|
#include "wx/imaglist.h"
|
||||||
#include "wx/icon.h"
|
#include "wx/icon.h"
|
||||||
|
#include "wx/log.h"
|
||||||
|
#include "wx/sizer.h"
|
||||||
|
|
||||||
|
#if wxUSE_STATLINE
|
||||||
|
#include "wx/statline.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "wx/generic/dirdlgg.h"
|
#include "wx/generic/dirdlgg.h"
|
||||||
|
|
||||||
@@ -112,73 +118,34 @@ static const int ID_NEW = 1004;
|
|||||||
// wxDirItemData
|
// wxDirItemData
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
class wxDirItemData : public wxTreeItemData
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
wxDirItemData(wxString& path, wxString& name);
|
|
||||||
~wxDirItemData();
|
|
||||||
bool HasSubDirs();
|
|
||||||
wxString *m_path, *m_name;
|
|
||||||
bool m_isHidden;
|
|
||||||
bool m_hasSubDirs;
|
|
||||||
};
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// wxDirCtrl
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
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(wxTreeEvent &event );
|
|
||||||
void OnCollapseItem(wxTreeEvent &event );
|
|
||||||
void ShowHidden( const bool yesno );
|
|
||||||
DECLARE_EVENT_TABLE()
|
|
||||||
protected:
|
|
||||||
void CreateItems(const wxTreeItemId &parent);
|
|
||||||
void SetupSections(void);
|
|
||||||
wxArrayString m_paths, m_names;
|
|
||||||
};
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// wxDirItemData
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
wxDirItemData::wxDirItemData(wxString& path, wxString& name)
|
wxDirItemData::wxDirItemData(wxString& path, wxString& name)
|
||||||
{
|
{
|
||||||
m_path = new wxString(path);
|
m_path = path;
|
||||||
m_name = new wxString(name);
|
m_name = name;
|
||||||
/* Insert logic to detect hidden files here
|
/* Insert logic to detect hidden files here
|
||||||
* In UnixLand we just check whether the first char is a dot
|
* In UnixLand we just check whether the first char is a dot
|
||||||
* For FileNameFromPath read LastDirNameInThisPath ;-) */
|
* For FileNameFromPath read LastDirNameInThisPath ;-) */
|
||||||
// m_isHidden = (bool)(wxFileNameFromPath(*m_path)[0] == '.');
|
// m_isHidden = (bool)(wxFileNameFromPath(*m_path)[0] == '.');
|
||||||
m_isHidden = FALSE;
|
m_isHidden = FALSE;
|
||||||
m_hasSubDirs = HasSubDirs();
|
m_hasSubDirs = HasSubDirs();
|
||||||
}
|
}
|
||||||
|
|
||||||
wxDirItemData:: ~wxDirItemData()
|
wxDirItemData::~wxDirItemData()
|
||||||
{
|
{
|
||||||
delete m_path;
|
}
|
||||||
delete m_name;
|
|
||||||
|
void wxDirItemData::SetNewDirName( wxString path )
|
||||||
|
{
|
||||||
|
m_path = path;
|
||||||
|
m_name = wxFileNameFromPath( path );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxDirItemData::HasSubDirs()
|
bool wxDirItemData::HasSubDirs()
|
||||||
{
|
{
|
||||||
wxString search = *m_path + "/*";
|
wxString search = m_path + "/*";
|
||||||
wxString path = wxFindFirstFile( search, wxDIR );
|
wxLogNull log;
|
||||||
return (bool)(!path.IsNull());
|
wxString path = wxFindFirstFile( search, wxDIR );
|
||||||
|
return (bool)(!path.IsNull());
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -190,12 +157,14 @@ IMPLEMENT_DYNAMIC_CLASS(wxDirCtrl,wxTreeCtrl)
|
|||||||
BEGIN_EVENT_TABLE(wxDirCtrl,wxTreeCtrl)
|
BEGIN_EVENT_TABLE(wxDirCtrl,wxTreeCtrl)
|
||||||
EVT_TREE_ITEM_EXPANDING (-1, wxDirCtrl::OnExpandItem)
|
EVT_TREE_ITEM_EXPANDING (-1, wxDirCtrl::OnExpandItem)
|
||||||
EVT_TREE_ITEM_COLLAPSED (-1, wxDirCtrl::OnCollapseItem)
|
EVT_TREE_ITEM_COLLAPSED (-1, wxDirCtrl::OnCollapseItem)
|
||||||
|
EVT_TREE_BEGIN_LABEL_EDIT (-1, wxDirCtrl::OnBeginEditItem)
|
||||||
|
EVT_TREE_END_LABEL_EDIT (-1, wxDirCtrl::OnEndEditItem)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
wxDirCtrl::wxDirCtrl(void)
|
wxDirCtrl::wxDirCtrl(void)
|
||||||
{
|
{
|
||||||
m_showHidden = FALSE;
|
m_showHidden = FALSE;
|
||||||
};
|
}
|
||||||
|
|
||||||
wxDirCtrl::wxDirCtrl(wxWindow *parent, const wxWindowID id, const wxString &WXUNUSED(dir),
|
wxDirCtrl::wxDirCtrl(wxWindow *parent, const wxWindowID id, const wxString &WXUNUSED(dir),
|
||||||
const wxPoint& pos, const wxSize& size,
|
const wxPoint& pos, const wxSize& size,
|
||||||
@@ -203,16 +172,16 @@ wxDirCtrl::wxDirCtrl(wxWindow *parent, const wxWindowID id, const wxString &WXUN
|
|||||||
:
|
:
|
||||||
wxTreeCtrl( parent, id, pos, size, style, wxDefaultValidator, name )
|
wxTreeCtrl( parent, id, pos, size, style, wxDefaultValidator, name )
|
||||||
{
|
{
|
||||||
m_imageListNormal = new wxImageList(16, 16, TRUE);
|
m_imageListNormal = new wxImageList(16, 16, TRUE);
|
||||||
m_imageListNormal->Add(wxICON(icon1));
|
m_imageListNormal->Add(wxICON(icon1));
|
||||||
m_imageListNormal->Add(wxICON(icon2));
|
m_imageListNormal->Add(wxICON(icon2));
|
||||||
SetImageList(m_imageListNormal);
|
SetImageList(m_imageListNormal);
|
||||||
|
|
||||||
m_showHidden = FALSE;
|
m_showHidden = FALSE;
|
||||||
m_rootId = AddRoot("Sections");
|
m_rootId = AddRoot( _("Sections") );
|
||||||
SetItemHasChildren(m_rootId);
|
SetItemHasChildren(m_rootId);
|
||||||
Expand(m_rootId); // automatically expand first level
|
Expand(m_rootId); // automatically expand first level
|
||||||
};
|
}
|
||||||
|
|
||||||
/* Quick macro. Don't worry, I'll #undef it later */
|
/* Quick macro. Don't worry, I'll #undef it later */
|
||||||
#define ADD_SECTION(a,b) \
|
#define ADD_SECTION(a,b) \
|
||||||
@@ -238,71 +207,133 @@ void wxDirCtrl::SetupSections()
|
|||||||
|
|
||||||
void wxDirCtrl::CreateItems(const wxTreeItemId &parent)
|
void wxDirCtrl::CreateItems(const wxTreeItemId &parent)
|
||||||
{
|
{
|
||||||
wxTreeItemId id;
|
wxTreeItemId id;
|
||||||
wxDirItemData *dir_item;
|
wxDirItemData *dir_item;
|
||||||
|
|
||||||
// wxASSERT(m_paths.Count() == m_names.Count()); ?
|
// wxASSERT(m_paths.Count() == m_names.Count()); ?
|
||||||
|
|
||||||
for (unsigned int i=0; i<m_paths.Count(); i++)
|
for (unsigned int i=0; i<m_paths.Count(); i++)
|
||||||
{
|
{
|
||||||
dir_item = new wxDirItemData(m_paths[i],m_names[i]);
|
dir_item = new wxDirItemData(m_paths[i],m_names[i]);
|
||||||
id = AppendItem( parent, m_names[i], 0, 1, dir_item);
|
id = AppendItem( parent, m_names[i], 0, 1, dir_item);
|
||||||
if (dir_item->m_hasSubDirs) SetItemHasChildren(id);
|
if (dir_item->m_hasSubDirs) SetItemHasChildren(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxDirCtrl::OnExpandItem(wxTreeEvent &event )
|
void wxDirCtrl::OnBeginEditItem(wxTreeEvent &event)
|
||||||
{
|
{
|
||||||
if (event.GetItem() == m_rootId)
|
// don't rename the main entry "Sections"
|
||||||
{
|
if (event.GetItem() == m_rootId)
|
||||||
SetupSections();
|
{
|
||||||
CreateItems(m_rootId);
|
event.Veto();
|
||||||
return;
|
return;
|
||||||
};
|
|
||||||
|
|
||||||
// This may take a longish time. Go to busy cursor
|
|
||||||
wxBeginBusyCursor();
|
|
||||||
|
|
||||||
wxDirItemData *data = (wxDirItemData *)GetItemData(event.GetItem());
|
|
||||||
wxASSERT(data);
|
|
||||||
|
|
||||||
wxString search,path,filename;
|
|
||||||
|
|
||||||
m_paths.Clear();
|
|
||||||
m_names.Clear();
|
|
||||||
search = *(data->m_path) + "/*";
|
|
||||||
for (path = wxFindFirstFile( search, wxDIR ); !path.IsNull();
|
|
||||||
path=wxFindNextFile() ) {
|
|
||||||
filename = wxFileNameFromPath( path );
|
|
||||||
/* Don't add "." and ".." to the tree. I think wxFindNextFile
|
|
||||||
* also checks this, but I don't quite understand what happens
|
|
||||||
* there. Also wxFindNextFile seems to swallow hidden dirs */
|
|
||||||
if ((filename != ".") && (filename != "..")) {
|
|
||||||
m_paths.Add(path);
|
|
||||||
m_names.Add(filename);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
CreateItems(event.GetItem());
|
// don't rename the individual sections
|
||||||
wxEndBusyCursor();
|
if (GetParent( event.GetItem() ) == m_rootId)
|
||||||
|
{
|
||||||
SortChildren( event.GetItem() );
|
event.Veto();
|
||||||
};
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxDirCtrl::OnEndEditItem(wxTreeEvent &event)
|
||||||
|
{
|
||||||
|
if ((event.GetLabel().IsEmpty()) ||
|
||||||
|
(event.GetLabel() == _(".")) ||
|
||||||
|
(event.GetLabel() == _("..")) ||
|
||||||
|
(event.GetLabel().First( _T("/") ) != wxNOT_FOUND))
|
||||||
|
{
|
||||||
|
wxMessageDialog dialog(this, _("Illegal directory name."), _("Error"), wxOK | wxICON_ERROR );
|
||||||
|
dialog.ShowModal();
|
||||||
|
event.Veto();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxTreeItemId id = event.GetItem();
|
||||||
|
wxDirItemData *data = (wxDirItemData*)GetItemData( id );
|
||||||
|
wxASSERT( data );
|
||||||
|
|
||||||
|
wxString new_name( wxPathOnly( data->m_path ) );
|
||||||
|
new_name += _T("/");
|
||||||
|
new_name += event.GetLabel();
|
||||||
|
|
||||||
|
wxLogNull log;
|
||||||
|
|
||||||
|
if (wxFileExists(new_name))
|
||||||
|
{
|
||||||
|
wxMessageDialog dialog(this, _("File name exists already."), _("Error"), wxOK | wxICON_ERROR );
|
||||||
|
dialog.ShowModal();
|
||||||
|
event.Veto();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wxRenameFile(data->m_path,new_name))
|
||||||
|
{
|
||||||
|
data->SetNewDirName( new_name );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wxMessageDialog dialog(this, _("Operation not permitted."), _("Error"), wxOK | wxICON_ERROR );
|
||||||
|
dialog.ShowModal();
|
||||||
|
event.Veto();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxDirCtrl::OnExpandItem(wxTreeEvent &event)
|
||||||
|
{
|
||||||
|
if (event.GetItem() == m_rootId)
|
||||||
|
{
|
||||||
|
SetupSections();
|
||||||
|
CreateItems(m_rootId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This may take a longish time. Go to busy cursor
|
||||||
|
wxBeginBusyCursor();
|
||||||
|
|
||||||
|
wxDirItemData *data = (wxDirItemData *)GetItemData(event.GetItem());
|
||||||
|
wxASSERT(data);
|
||||||
|
|
||||||
|
wxString search,path,filename;
|
||||||
|
|
||||||
|
m_paths.Clear();
|
||||||
|
m_names.Clear();
|
||||||
|
search = data->m_path + "/*";
|
||||||
|
for (path = wxFindFirstFile( search, wxDIR ); !path.IsNull();
|
||||||
|
path=wxFindNextFile() )
|
||||||
|
{
|
||||||
|
filename = wxFileNameFromPath( path );
|
||||||
|
/* Don't add "." and ".." to the tree. I think wxFindNextFile
|
||||||
|
* also checks this, but I don't quite understand what happens
|
||||||
|
* there. Also wxFindNextFile seems to swallow hidden dirs */
|
||||||
|
if ((filename != ".") && (filename != ".."))
|
||||||
|
{
|
||||||
|
m_paths.Add(path);
|
||||||
|
m_names.Add(filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CreateItems( event.GetItem() );
|
||||||
|
SortChildren( event.GetItem() );
|
||||||
|
|
||||||
|
wxEndBusyCursor();
|
||||||
|
}
|
||||||
|
|
||||||
void wxDirCtrl::OnCollapseItem(wxTreeEvent &event )
|
void wxDirCtrl::OnCollapseItem(wxTreeEvent &event )
|
||||||
{
|
{
|
||||||
wxTreeItemId child, parent = event.GetItem();
|
wxTreeItemId child, parent = event.GetItem();
|
||||||
long cookie;
|
long cookie;
|
||||||
/* Workaround because DeleteChildren has disapeared (why?) and
|
/* Workaround because DeleteChildren has disapeared (why?) and
|
||||||
* CollapseAndReset doesn't work as advertised (deletes parent too) */
|
* CollapseAndReset doesn't work as advertised (deletes parent too) */
|
||||||
child = GetFirstChild(parent, cookie);
|
|
||||||
while (child.IsOk()) {
|
|
||||||
Delete(child);
|
|
||||||
/* Not GetNextChild below, because the cookie mechanism can't
|
|
||||||
* handle disappearing children! */
|
|
||||||
child = GetFirstChild(parent, cookie);
|
child = GetFirstChild(parent, cookie);
|
||||||
}
|
while (child.IsOk())
|
||||||
};
|
{
|
||||||
|
Delete(child);
|
||||||
|
/* Not GetNextChild below, because the cookie mechanism can't
|
||||||
|
* handle disappearing children! */
|
||||||
|
child = GetFirstChild(parent, cookie);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// wxDirDialog
|
// wxDirDialog
|
||||||
@@ -332,110 +363,76 @@ wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
|
|||||||
wxDialog(parent, -1, message, pos, wxSize(300,300),
|
wxDialog(parent, -1, message, pos, wxSize(300,300),
|
||||||
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
||||||
{
|
{
|
||||||
m_message = message;
|
m_message = message;
|
||||||
m_dialogStyle = style;
|
m_dialogStyle = style;
|
||||||
m_parent = parent;
|
m_parent = parent;
|
||||||
|
|
||||||
m_path = defaultPath;
|
m_path = defaultPath;
|
||||||
|
|
||||||
|
wxBeginBusyCursor();
|
||||||
|
|
||||||
|
wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
m_dir = new wxDirCtrl( this, ID_DIRCTRL, "/", wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS | wxSUNKEN_BORDER );
|
// 1) dir ctrl
|
||||||
m_input = new wxTextCtrl( this, ID_TEXTCTRL, m_path, wxDefaultPosition );
|
m_dir = new wxDirCtrl( this, ID_DIRCTRL, "/", wxDefaultPosition, wxSize(200,200),
|
||||||
// m_check = new wxCheckBox( this, ID_CHECK, _("Show hidden") );
|
wxTR_HAS_BUTTONS | wxSUNKEN_BORDER | wxTR_EDIT_LABELS);
|
||||||
m_ok = new wxButton( this, ID_OK, _("OK") );
|
topsizer->Add( m_dir, 1, wxTOP|wxLEFT|wxRIGHT | wxEXPAND, 10 );
|
||||||
m_cancel = new wxButton( this, ID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize(75,-1) );
|
|
||||||
m_new = new wxButton( this, ID_NEW, _("New...") );
|
// 2) text ctrl
|
||||||
|
m_input = new wxTextCtrl( this, ID_TEXTCTRL, m_path, wxDefaultPosition );
|
||||||
|
topsizer->Add( m_input, 0, wxTOP|wxLEFT|wxRIGHT | wxEXPAND, 10 );
|
||||||
|
|
||||||
|
// m_check = new wxCheckBox( this, ID_CHECK, _("Show hidden") );
|
||||||
|
// m_check->SetValue(TRUE);
|
||||||
|
|
||||||
|
#if wxUSE_STATLINE
|
||||||
|
// 3) static line
|
||||||
|
topsizer->Add( new wxStaticLine( this, -1 ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 );
|
||||||
|
#endif
|
||||||
|
|
||||||
// m_check->SetValue(TRUE);
|
// 4) buttons
|
||||||
m_ok->SetDefault();
|
wxSizer* buttonsizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
m_dir->SetFocus();
|
m_ok = new wxButton( this, ID_OK, _("OK") );
|
||||||
|
buttonsizer->Add( m_ok, 0, wxLEFT|wxRIGHT, 10 );
|
||||||
|
m_cancel = new wxButton( this, ID_CANCEL, _("Cancel") );
|
||||||
|
buttonsizer->Add( m_cancel, 0, wxLEFT|wxRIGHT, 10 );
|
||||||
|
m_new = new wxButton( this, ID_NEW, _("New...") );
|
||||||
|
buttonsizer->Add( m_new, 0, wxLEFT|wxRIGHT, 10 );
|
||||||
|
|
||||||
|
topsizer->Add( buttonsizer, 0, wxALL | wxCENTER, 10 );
|
||||||
|
|
||||||
doSize();
|
m_ok->SetDefault();
|
||||||
}
|
m_dir->SetFocus();
|
||||||
|
|
||||||
|
SetAutoLayout( TRUE );
|
||||||
|
SetSizer( topsizer );
|
||||||
|
|
||||||
|
topsizer->SetSizeHints( this );
|
||||||
|
topsizer->Fit( this );
|
||||||
|
|
||||||
void wxDirDialog::OnSize(wxSizeEvent& WXUNUSED(event))
|
Centre( wxBOTH );
|
||||||
{
|
|
||||||
doSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
void wxDirDialog::doSize()
|
wxEndBusyCursor();
|
||||||
{
|
|
||||||
/* Figure out height of DirCtrl, which is what is left over by
|
|
||||||
* the textctrl and the buttons. Manually, because I can't seem
|
|
||||||
* to get the constraints stuff to do this */
|
|
||||||
int w,h,h2;
|
|
||||||
|
|
||||||
GetClientSize(&w, &h);
|
|
||||||
m_input->GetSize(&w,&h2); h -= h2;
|
|
||||||
m_ok->GetSize(&w, &h2); h -= h2;
|
|
||||||
//m_check->GetSize(&w, &h2); h -= h2;
|
|
||||||
h -= 30;
|
|
||||||
|
|
||||||
wxLayoutConstraints *c = new wxLayoutConstraints;
|
|
||||||
c->left.SameAs (this, wxLeft,5);
|
|
||||||
c->right.SameAs (this, wxRight,5);
|
|
||||||
c->height.Absolute (h);
|
|
||||||
c->top.SameAs (this, wxTop,5);
|
|
||||||
m_dir->SetConstraints(c);
|
|
||||||
|
|
||||||
c = new wxLayoutConstraints;
|
|
||||||
c->left.SameAs (this, wxLeft,5);
|
|
||||||
c->right.SameAs (this, wxRight,5);
|
|
||||||
c->height.AsIs ();
|
|
||||||
c->top.Below (m_dir,5);
|
|
||||||
m_input->SetConstraints(c);
|
|
||||||
|
|
||||||
/* c = new wxLayoutConstraints;
|
|
||||||
c->left.SameAs (this, wxLeft,5);
|
|
||||||
c->right.SameAs (this, wxRight,5);
|
|
||||||
c->height.AsIs ();
|
|
||||||
c->top.Below (m_input,5);
|
|
||||||
m_check->SetConstraints(c); */
|
|
||||||
|
|
||||||
c = new wxLayoutConstraints;
|
|
||||||
c->width.SameAs (m_cancel, wxWidth);
|
|
||||||
c->height.AsIs ();
|
|
||||||
c->top.Below (m_input,10);
|
|
||||||
c->centreX.PercentOf (this, wxWidth, 20);
|
|
||||||
m_ok->SetConstraints(c);
|
|
||||||
|
|
||||||
c = new wxLayoutConstraints;
|
|
||||||
c->width.SameAs (m_cancel, wxWidth);
|
|
||||||
c->height.AsIs ();
|
|
||||||
c->top.Below (m_input,10);
|
|
||||||
c->bottom.SameAs (this, wxBottom, 5);
|
|
||||||
c->centreX.PercentOf (this, wxWidth, 50);
|
|
||||||
m_new->SetConstraints(c);
|
|
||||||
|
|
||||||
c = new wxLayoutConstraints;
|
|
||||||
c->width.AsIs ();
|
|
||||||
c->height.AsIs ();
|
|
||||||
c->top.Below (m_input,10);
|
|
||||||
c->centreX.PercentOf (this, wxWidth, 80);
|
|
||||||
m_cancel->SetConstraints(c);
|
|
||||||
|
|
||||||
Layout();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxDirDialog::ShowModal()
|
int wxDirDialog::ShowModal()
|
||||||
{
|
{
|
||||||
m_input->SetValue( m_path );
|
m_input->SetValue( m_path );
|
||||||
return wxDialog::ShowModal();
|
return wxDialog::ShowModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxDirDialog::OnTreeSelected( wxTreeEvent &event )
|
void wxDirDialog::OnTreeSelected( wxTreeEvent &event )
|
||||||
{
|
{
|
||||||
wxDirItemData *data =
|
wxDirItemData *data = (wxDirItemData*)m_dir->GetItemData(event.GetItem());
|
||||||
(wxDirItemData*)m_dir->GetItemData(event.GetItem());
|
if (data)
|
||||||
if (data)
|
m_input->SetValue( data->m_path );
|
||||||
m_input->SetValue( *(data->m_path) );
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void wxDirDialog::OnTreeKeyDown( wxTreeEvent &WXUNUSED(event) )
|
void wxDirDialog::OnTreeKeyDown( wxTreeEvent &WXUNUSED(event) )
|
||||||
{
|
{
|
||||||
wxDirItemData *data =
|
wxDirItemData *data = (wxDirItemData*)m_dir->GetItemData(m_dir->GetSelection());
|
||||||
(wxDirItemData*)m_dir->GetItemData(m_dir->GetSelection());
|
if (data)
|
||||||
if (data)
|
m_input->SetValue( data->m_path );
|
||||||
m_input->SetValue( *(data->m_path) );
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void wxDirDialog::OnOK( wxCommandEvent& WXUNUSED(event) )
|
void wxDirDialog::OnOK( wxCommandEvent& WXUNUSED(event) )
|
||||||
@@ -451,9 +448,10 @@ void wxDirDialog::OnOK( wxCommandEvent& WXUNUSED(event) )
|
|||||||
wxString msg( _("The directory ") );
|
wxString msg( _("The directory ") );
|
||||||
msg = msg + m_path;
|
msg = msg + m_path;
|
||||||
msg = msg + _("\ndoes not exist\nCreate it now?") ;
|
msg = msg + _("\ndoes not exist\nCreate it now?") ;
|
||||||
wxMessageDialog dialog(this, msg, _("Directory does not exist"), wxYES_NO);
|
wxMessageDialog dialog(this, msg, _("Directory does not exist"), wxYES_NO | wxICON_WARNING );
|
||||||
if ( dialog.ShowModal() == wxID_YES ) {
|
if ( dialog.ShowModal() == wxID_YES ) {
|
||||||
// Okay, let's make it
|
// Okay, let's make it
|
||||||
|
wxLogNull log;
|
||||||
if (wxMkdir(m_path)) {
|
if (wxMkdir(m_path)) {
|
||||||
// The new dir was created okay.
|
// The new dir was created okay.
|
||||||
EndModal(wxID_OK);
|
EndModal(wxID_OK);
|
||||||
@@ -463,7 +461,7 @@ void wxDirDialog::OnOK( wxCommandEvent& WXUNUSED(event) )
|
|||||||
// Trouble...
|
// Trouble...
|
||||||
msg = _("Failed to create directory ")+m_path+
|
msg = _("Failed to create directory ")+m_path+
|
||||||
_("\n(Do you have the required permissions?)");
|
_("\n(Do you have the required permissions?)");
|
||||||
wxMessageDialog errmsg(this, msg, _("Error creating directory"), wxOK);
|
wxMessageDialog errmsg(this, msg, _("Error creating directory"), wxOK | wxICON_ERROR);
|
||||||
errmsg.ShowModal();
|
errmsg.ShowModal();
|
||||||
// We still don't have a valid dir. Back to the main dialog.
|
// We still don't have a valid dir. Back to the main dialog.
|
||||||
}
|
}
|
||||||
@@ -478,24 +476,53 @@ void wxDirDialog::OnCancel( wxCommandEvent& WXUNUSED(event) )
|
|||||||
|
|
||||||
void wxDirDialog::OnNew( wxCommandEvent& WXUNUSED(event) )
|
void wxDirDialog::OnNew( wxCommandEvent& WXUNUSED(event) )
|
||||||
{
|
{
|
||||||
wxTextEntryDialog dialog(this, _("Enter the name of the directory to create"),
|
wxTreeItemId id = m_dir->GetSelection();
|
||||||
_("Create New Directory"), m_input->GetValue(), wxOK|wxCANCEL);
|
if ((id == m_dir->GetRootItem()) ||
|
||||||
|
(m_dir->GetParent(id) == m_dir->GetRootItem()))
|
||||||
while (dialog.ShowModal() == wxID_OK)
|
{
|
||||||
{
|
wxMessageDialog msg(this, _("You cannot add a new directory to this section."),
|
||||||
// Okay, let's make it
|
_("Create directory"), wxOK | wxICON_INFORMATION );
|
||||||
if (wxMkdir(dialog.GetValue())) {
|
msg.ShowModal();
|
||||||
// The new dir was created okay.
|
return;
|
||||||
m_path = dialog.GetValue();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
wxString msg = _("Failed to create directory ")+dialog.GetValue()+
|
|
||||||
_("\n(Do you have the required permissions?)") ;
|
wxTreeItemId parent = m_dir->GetParent( id );
|
||||||
wxMessageDialog errmsg(this, msg, _("Error creating directory"), wxOK);
|
wxDirItemData *data = (wxDirItemData*)m_dir->GetItemData( parent );
|
||||||
errmsg.ShowModal();
|
wxASSERT( data );
|
||||||
// Show the create dialog again, until user clicks cancel or enters
|
|
||||||
// a valid dir.
|
wxString new_name( _T("NewName") );
|
||||||
}
|
wxString path( data->m_path );
|
||||||
|
path += _T( "/" );
|
||||||
|
path += new_name;
|
||||||
|
if (wxFileExists(path))
|
||||||
|
{
|
||||||
|
// try NewName0, NewName1 etc.
|
||||||
|
int i = 0;
|
||||||
|
do {
|
||||||
|
new_name = _T("NewName");
|
||||||
|
wxString num;
|
||||||
|
num.Printf( "%d", i );
|
||||||
|
new_name += num;
|
||||||
|
|
||||||
|
path = data->m_path;
|
||||||
|
path += _T( "/" );
|
||||||
|
path += new_name;
|
||||||
|
i++;
|
||||||
|
} while (wxFileExists(path));
|
||||||
|
}
|
||||||
|
|
||||||
|
wxLogNull log;
|
||||||
|
if (!wxMkdir(path))
|
||||||
|
{
|
||||||
|
wxMessageDialog dialog(this, _("Operation not permitted."), _("Error"), wxOK | wxICON_ERROR );
|
||||||
|
dialog.ShowModal();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxDirItemData *new_data = new wxDirItemData( path, new_name );
|
||||||
|
wxTreeItemId new_id = m_dir->AppendItem( parent, new_name, 0, 1, new_data );
|
||||||
|
m_dir->EnsureVisible( new_id );
|
||||||
|
m_dir->EditLabel( new_id );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -1159,6 +1159,11 @@ void wxListMainWindow::EditLabel( long item )
|
|||||||
if (!le.IsAllowed())
|
if (!le.IsAllowed())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// We have to call this here because the label in
|
||||||
|
// question might just have been added and no screen
|
||||||
|
// update taken place.
|
||||||
|
if (m_dirty) wxYield();
|
||||||
|
|
||||||
wxString s;
|
wxString s;
|
||||||
m_currentEdit->GetText( 0, s );
|
m_currentEdit->GetText( 0, s );
|
||||||
int x = 0;
|
int x = 0;
|
||||||
@@ -2189,6 +2194,11 @@ void wxListMainWindow::DeleteEverything( void )
|
|||||||
|
|
||||||
void wxListMainWindow::EnsureVisible( long index )
|
void wxListMainWindow::EnsureVisible( long index )
|
||||||
{
|
{
|
||||||
|
// We have to call this here because the label in
|
||||||
|
// question might just have been added and no screen
|
||||||
|
// update taken place.
|
||||||
|
if (m_dirty) wxYield();
|
||||||
|
|
||||||
wxListLineData *oldCurrent = m_current;
|
wxListLineData *oldCurrent = m_current;
|
||||||
m_current = (wxListLineData *) NULL;
|
m_current = (wxListLineData *) NULL;
|
||||||
int i = index;
|
int i = index;
|
||||||
|
@@ -1196,11 +1196,16 @@ void wxTreeCtrl::ScrollTo(const wxTreeItemId &item)
|
|||||||
{
|
{
|
||||||
if (!item.IsOk()) return;
|
if (!item.IsOk()) return;
|
||||||
|
|
||||||
|
// We have to call this here because the label in
|
||||||
|
// question might just have been added and no screen
|
||||||
|
// update taken place.
|
||||||
|
if (m_dirty) wxYield();
|
||||||
|
|
||||||
wxGenericTreeItem *gitem = item.m_pItem;
|
wxGenericTreeItem *gitem = item.m_pItem;
|
||||||
|
|
||||||
// now scroll to the item
|
// now scroll to the item
|
||||||
int item_y = gitem->GetY();
|
int item_y = gitem->GetY();
|
||||||
|
|
||||||
int start_x = 0;
|
int start_x = 0;
|
||||||
int start_y = 0;
|
int start_y = 0;
|
||||||
ViewStart( &start_x, &start_y );
|
ViewStart( &start_x, &start_y );
|
||||||
@@ -1339,10 +1344,10 @@ void wxTreeCtrl::AdjustMyScrollbars()
|
|||||||
|
|
||||||
int wxTreeCtrl::GetLineHeight(wxGenericTreeItem *item) const
|
int wxTreeCtrl::GetLineHeight(wxGenericTreeItem *item) const
|
||||||
{
|
{
|
||||||
if (GetWindowStyleFlag() & wxTR_HAS_VARIABLE_ROW_HEIGHT)
|
if (GetWindowStyleFlag() & wxTR_HAS_VARIABLE_ROW_HEIGHT)
|
||||||
return item->GetHeight();
|
return item->GetHeight();
|
||||||
else
|
else
|
||||||
return m_lineHeight;
|
return m_lineHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
||||||
@@ -1778,6 +1783,11 @@ void wxTreeCtrl::OnChar( wxKeyEvent &event )
|
|||||||
|
|
||||||
wxTreeItemId wxTreeCtrl::HitTest(const wxPoint& point, int& flags)
|
wxTreeItemId wxTreeCtrl::HitTest(const wxPoint& point, int& flags)
|
||||||
{
|
{
|
||||||
|
// We have to call this here because the label in
|
||||||
|
// question might just have been added and no screen
|
||||||
|
// update taken place.
|
||||||
|
if (m_dirty) wxYield();
|
||||||
|
|
||||||
wxClientDC dc(this);
|
wxClientDC dc(this);
|
||||||
PrepareDC(dc);
|
PrepareDC(dc);
|
||||||
long x = dc.DeviceToLogicalX( (long)point.x );
|
long x = dc.DeviceToLogicalX( (long)point.x );
|
||||||
@@ -1808,6 +1818,11 @@ void wxTreeCtrl::Edit( const wxTreeItemId& item )
|
|||||||
GetEventHandler()->ProcessEvent( te );
|
GetEventHandler()->ProcessEvent( te );
|
||||||
|
|
||||||
if (!te.IsAllowed()) return;
|
if (!te.IsAllowed()) return;
|
||||||
|
|
||||||
|
// We have to call this here because the label in
|
||||||
|
// question might just have been added and no screen
|
||||||
|
// update taken place.
|
||||||
|
if (m_dirty) wxYield();
|
||||||
|
|
||||||
wxString s = m_currentEdit->GetText();
|
wxString s = m_currentEdit->GetText();
|
||||||
int x = m_currentEdit->GetX();
|
int x = m_currentEdit->GetX();
|
||||||
|
@@ -224,7 +224,7 @@ void wxMenuBar::Append( wxMenu *menu, const wxString &title )
|
|||||||
wxString buf;
|
wxString buf;
|
||||||
buf << _T('/') << str.c_str();
|
buf << _T('/') << str.c_str();
|
||||||
|
|
||||||
char *cbuf = new char[buf.Length()];
|
char *cbuf = new char[buf.Length()+1];
|
||||||
strcpy(cbuf, buf.mbc_str());
|
strcpy(cbuf, buf.mbc_str());
|
||||||
|
|
||||||
GtkItemFactoryEntry entry;
|
GtkItemFactoryEntry entry;
|
||||||
|
@@ -224,7 +224,7 @@ void wxMenuBar::Append( wxMenu *menu, const wxString &title )
|
|||||||
wxString buf;
|
wxString buf;
|
||||||
buf << _T('/') << str.c_str();
|
buf << _T('/') << str.c_str();
|
||||||
|
|
||||||
char *cbuf = new char[buf.Length()];
|
char *cbuf = new char[buf.Length()+1];
|
||||||
strcpy(cbuf, buf.mbc_str());
|
strcpy(cbuf, buf.mbc_str());
|
||||||
|
|
||||||
GtkItemFactoryEntry entry;
|
GtkItemFactoryEntry entry;
|
||||||
|
Reference in New Issue
Block a user