enum
{
Id_MultiSelect = 100,
+ Id_FlatList,
Id_Checkboxes_Start,
Id_NoCheckboxes = Id_Checkboxes_Start,
private:
// Event handlers for the menu and wxTreeListCtrl events.
void OnMultiSelect(wxCommandEvent& event);
+ void OnFlatList(wxCommandEvent& event);
void OnCheckboxes(wxCommandEvent& event);
void OnDumpSelection(wxCommandEvent& event);
void OnCheckHTMLDocs(wxCommandEvent& event);
wxLog* m_oldLogTarget;
+ bool m_isFlat;
+
wxDECLARE_EVENT_TABLE();
};
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Id_MultiSelect, MyFrame::OnMultiSelect)
+ EVT_MENU(Id_FlatList, MyFrame::OnFlatList)
EVT_MENU_RANGE(Id_Checkboxes_Start, Id_Checkboxes_End,
MyFrame::OnCheckboxes)
: wxFrame(NULL, wxID_ANY, "wxWidgets tree/list control sample",
wxDefaultPosition, wxSize(600, 450))
{
+ m_isFlat = false;
+
// Create menus and status bar.
SetIcon(wxICON(sample));
"&3-state checkboxes\tCtrl-3");
treeStyle->AppendRadioItem(Id_CheckboxesUser3State,
"&User-settable 3-state checkboxes\tCtrl-4");
+ treeStyle->AppendSeparator();
+ treeStyle->AppendCheckItem(Id_FlatList, "&Flat list");
wxMenu* treeOper = new wxMenu;
treeOper->Append(Id_DumpSelection, "&Dump selection\tCtrl-D");
// Define a shortcut to save on typing here.
#define ADD_ITEM(item, parent, files, size) \
- wxTreeListItem item = tree->AppendItem(parent, #item, \
+ wxTreeListItem item = tree->AppendItem(m_isFlat ? root : parent, \
+ #item, \
Icon_FolderClosed, \
Icon_FolderOpened); \
tree->SetItemText(item, Col_Files, files); \
RecreateTreeListCtrl(style);
}
+void MyFrame::OnFlatList(wxCommandEvent& event)
+{
+ m_isFlat = event.IsChecked();
+
+ RecreateTreeListCtrl(m_treelist->GetWindowStyle());
+}
+
void MyFrame::OnCheckboxes(wxCommandEvent& event)
{
long style = m_treelist->GetWindowStyle();
virtual bool HasContainerColumns(const wxDataViewItem& item) const;
virtual unsigned GetChildren(const wxDataViewItem& item,
wxDataViewItemArray& children) const;
+ virtual bool IsListModel() const { return m_isFlat; }
private:
// The control we're associated with.
// Number of columns we maintain.
unsigned m_numColumns;
+
+ // Set to false as soon as we have more than one level, i.e. as soon as any
+ // items with non-root item as parent are added (and currently never reset
+ // after this).
+ bool m_isFlat;
};
// ============================================================================
m_root(new Node(NULL))
{
m_numColumns = 0;
+ m_isFlat = true;
}
wxTreeListModel::~wxTreeListModel()
wxCHECK_MSG( previous, NULL,
"Must have a valid previous item (maybe wxTLI_FIRST/LAST?)" );
+ if ( m_isFlat && parent != m_root )
+ {
+ // Not flat any more, this is a second level child.
+ m_isFlat = false;
+ }
+
wxScopedPtr<Node>
newItem(new Node(parent, text, imageClosed, imageOpened, data));