CollapsiblePanes are putted to ScrolledWindow
This commit is contained in:
parent
db549e8609
commit
c07f347ff6
@ -809,17 +809,25 @@ wxString from_u8(const std::string &str)
|
||||
|
||||
void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer)
|
||||
{
|
||||
sizer->SetMinSize(-1, 300);
|
||||
auto main_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
auto main_page = new wxScrolledWindow(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
main_page->SetSizer(main_sizer);
|
||||
main_page->SetScrollbars(1, 1, 1, 1);
|
||||
sizer->Add(main_page, 1, wxEXPAND | wxALL, 1);
|
||||
|
||||
// Experiments with new UI
|
||||
wxCollapsiblePane *collpane = new wxCollapsiblePane(parent, wxID_ANY, "Print settings:");
|
||||
collpane->Bind(wxEVT_COLLAPSIBLEPANE_CHANGED, ([parent, collpane](wxCommandEvent e){
|
||||
wxCollapsiblePane *collpane = new wxCollapsiblePane(main_page, wxID_ANY, "Frequently Changing Parameters:");
|
||||
collpane->Bind(wxEVT_COLLAPSIBLEPANE_CHANGED, ([parent, main_page, collpane](wxCommandEvent e){
|
||||
wxWindowUpdateLocker noUpdates_cp(collpane);
|
||||
wxWindowUpdateLocker noUpdates(parent);
|
||||
parent->Layout();
|
||||
wxWindowUpdateLocker noUpdates(main_page);
|
||||
parent->Layout();
|
||||
main_page->Layout();
|
||||
collpane->Refresh();
|
||||
}));
|
||||
|
||||
// add the pane with a zero proportion value to the sizer which contains it
|
||||
sizer->Add(collpane, 0, wxGROW | wxALL, 0);
|
||||
main_sizer->Add(collpane, 0, wxGROW | wxALL, 0);
|
||||
|
||||
wxWindow *win = collpane->GetPane();
|
||||
#ifdef __WXMSW__
|
||||
@ -943,8 +951,36 @@ void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFl
|
||||
};
|
||||
m_optgroup->append_line(line);
|
||||
|
||||
auto common_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
common_sizer->Add(m_optgroup->sizer);
|
||||
wxSizer *paneSz = new wxBoxSizer(wxVERTICAL);
|
||||
paneSz->Add(m_optgroup->sizer, 1, wxGROW | wxEXPAND | /*wxBOTTOM*/wxALL, /*2*/5);
|
||||
win->SetSizer(paneSz);
|
||||
paneSz->SetSizeHints(win);
|
||||
|
||||
|
||||
|
||||
|
||||
wxCollapsiblePane *collpane_objects = new wxCollapsiblePane(main_page, wxID_ANY, "Objects List:");
|
||||
collpane_objects->Bind(wxEVT_COLLAPSIBLEPANE_CHANGED, ([parent, main_page, collpane_objects](wxCommandEvent e){
|
||||
wxWindowUpdateLocker noUpdates_cp(collpane_objects);
|
||||
wxWindowUpdateLocker noUpdates(main_page);
|
||||
parent->Layout();
|
||||
main_page->Layout();
|
||||
collpane_objects->Refresh();
|
||||
}));
|
||||
|
||||
// add the pane with a zero proportion value to the sizer which contains it
|
||||
main_sizer->Add(collpane_objects, 0, wxGROW | wxALL, 0);
|
||||
|
||||
wxWindow *win_objects = collpane_objects->GetPane();
|
||||
#ifdef __WXMSW__
|
||||
collpane_objects->GetControlWidget()->SetWindowStyleFlag(wxNO_BORDER);
|
||||
collpane_objects->GetControlWidget()->SetBackgroundColour(clr);
|
||||
collpane_objects->SetBackgroundColour(clr);
|
||||
win_objects->SetBackgroundColour(clr);
|
||||
#endif //__WXMSW__
|
||||
|
||||
// auto common_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
// common_sizer->Add(m_optgroup->sizer);
|
||||
|
||||
// auto listctrl = new wxDataViewListCtrl(win, wxID_ANY, wxDefaultPosition, wxSize(-1, 100));
|
||||
// listctrl->AppendToggleColumn("Toggle");
|
||||
@ -964,9 +1000,10 @@ void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFl
|
||||
// common_sizer->Add(listctrl, 0, wxEXPAND | wxALL, 1);
|
||||
|
||||
// **********************************************************************************************
|
||||
auto objects_ctrl = new wxDataViewCtrl(win, wxID_ANY, wxDefaultPosition, wxDefaultSize);
|
||||
auto objects_ctrl = new wxDataViewCtrl(win_objects, wxID_ANY, wxDefaultPosition, wxDefaultSize);
|
||||
wxSizer *objects_sz = new wxBoxSizer(wxVERTICAL);
|
||||
objects_ctrl->SetMinSize(wxSize(-1, 200));
|
||||
objects_ctrl->SetBestFittingSize(wxSize(-1, 200));
|
||||
// objects_ctrl->SetMinSize(wxSize(-1, 200));
|
||||
objects_sz->Add(objects_ctrl, 1, wxGROW | wxALL, 5);
|
||||
|
||||
auto objects_model = new MyObjectTreeModel;
|
||||
@ -979,108 +1016,31 @@ void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFl
|
||||
// column 0 of the view control:
|
||||
|
||||
wxDataViewTextRenderer *tr = new wxDataViewTextRenderer("string", wxDATAVIEW_CELL_INERT);
|
||||
wxDataViewColumn *column00 = new wxDataViewColumn("Name", tr, 0, 150, wxALIGN_LEFT,
|
||||
wxDataViewColumn *column00 = new wxDataViewColumn("Name", tr, 0, 140, wxALIGN_LEFT,
|
||||
wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_RESIZABLE);
|
||||
objects_ctrl->AppendColumn(column00);
|
||||
|
||||
// column 1 of the view control:
|
||||
|
||||
tr = new wxDataViewTextRenderer("string", wxDATAVIEW_CELL_INERT);
|
||||
wxDataViewColumn *column01 = new wxDataViewColumn("Copy", tr, 1, 95, wxALIGN_CENTER_HORIZONTAL,
|
||||
wxDataViewColumn *column01 = new wxDataViewColumn("Copy", tr, 1, 75, wxALIGN_CENTER_HORIZONTAL,
|
||||
wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_RESIZABLE);
|
||||
objects_ctrl->AppendColumn(column01);
|
||||
|
||||
// column 2 of the view control:
|
||||
|
||||
tr = new wxDataViewTextRenderer("string", wxDATAVIEW_CELL_INERT);
|
||||
wxDataViewColumn *column02 = new wxDataViewColumn("Scale", tr, 2, 95, wxALIGN_CENTER_HORIZONTAL,
|
||||
wxDataViewColumn *column02 = new wxDataViewColumn("Scale", tr, 2, 80, wxALIGN_CENTER_HORIZONTAL,
|
||||
wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_RESIZABLE);
|
||||
objects_ctrl->AppendColumn(column02);
|
||||
|
||||
common_sizer->Add(objects_sz, 0, wxEXPAND | wxALL, 1);
|
||||
// common_sizer->Add(objects_sz, 0, wxEXPAND | wxALL, 1);
|
||||
|
||||
// **********************************************************************************************
|
||||
/* auto view_ctrl = new wxDataViewCtrl(win, wxID_ANY, wxDefaultPosition, wxDefaultSize);
|
||||
wxSizer *PanelSz = new wxBoxSizer(wxVERTICAL);
|
||||
view_ctrl->SetMinSize(wxSize(-1, 200));
|
||||
PanelSz->Add(view_ctrl, 1, wxGROW | wxALL, 5);
|
||||
PanelSz->Add( new wxStaticText(win, wxID_ANY, "Most of the cells above are editable!"), 0, wxGROW | wxALL, 5);
|
||||
|
||||
auto m_music_model = new MyMusicTreeModel;
|
||||
view_ctrl->AssociateModel(m_music_model);
|
||||
wxSizer *paneSz_objects = new wxBoxSizer(wxVERTICAL);
|
||||
paneSz_objects->Add(objects_sz, 1, wxGROW | wxEXPAND | wxBOTTOM, 2);
|
||||
win_objects->SetSizer(paneSz_objects);
|
||||
paneSz_objects->SetSizeHints(win_objects);
|
||||
|
||||
#if wxUSE_DRAG_AND_DROP && wxUSE_UNICODE
|
||||
view_ctrl->EnableDragSource(wxDF_UNICODETEXT);
|
||||
view_ctrl->EnableDropTarget(wxDF_UNICODETEXT);
|
||||
#endif // wxUSE_DRAG_AND_DROP && wxUSE_UNICODE
|
||||
|
||||
// column 0 of the view control:
|
||||
|
||||
tr = new wxDataViewTextRenderer("string", wxDATAVIEW_CELL_INERT);
|
||||
wxDataViewColumn *column0 =
|
||||
new wxDataViewColumn("title", tr, 0, 150, wxALIGN_LEFT,
|
||||
wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_RESIZABLE);
|
||||
view_ctrl->AppendColumn(column0);
|
||||
#if 0
|
||||
// Call this and sorting is enabled
|
||||
// immediately upon start up.
|
||||
column0->SetAsSortKey();
|
||||
#endif
|
||||
|
||||
// column 1 of the view control:
|
||||
|
||||
tr = new wxDataViewTextRenderer("string", wxDATAVIEW_CELL_EDITABLE);
|
||||
wxDataViewColumn *column1 =
|
||||
new wxDataViewColumn("artist", tr, 1, 150, wxALIGN_LEFT,
|
||||
wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_REORDERABLE |
|
||||
wxDATAVIEW_COL_RESIZABLE);
|
||||
column1->SetMinWidth(100); // this column can't be resized to be smaller
|
||||
view_ctrl->AppendColumn(column1);
|
||||
|
||||
// column 2 of the view control:
|
||||
|
||||
wxDataViewSpinRenderer *sr =
|
||||
new wxDataViewSpinRenderer(0, 2010, wxDATAVIEW_CELL_EDITABLE,
|
||||
wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
|
||||
wxDataViewColumn *column2 =
|
||||
new wxDataViewColumn("year", sr, 2, 60, wxALIGN_LEFT,
|
||||
wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_REORDERABLE);
|
||||
view_ctrl->AppendColumn(column2);
|
||||
|
||||
// column 3 of the view control:
|
||||
|
||||
wxArrayString choices;
|
||||
choices.Add("good");
|
||||
choices.Add("bad");
|
||||
choices.Add("lousy");
|
||||
wxDataViewChoiceRenderer *c =
|
||||
new wxDataViewChoiceRenderer(choices, wxDATAVIEW_CELL_EDITABLE,
|
||||
wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
|
||||
wxDataViewColumn *column3 =
|
||||
new wxDataViewColumn("rating", c, 3, 100, wxALIGN_LEFT,
|
||||
wxDATAVIEW_COL_REORDERABLE | wxDATAVIEW_COL_RESIZABLE);
|
||||
view_ctrl->AppendColumn(column3);
|
||||
|
||||
// column 4 of the view control:
|
||||
|
||||
view_ctrl->AppendProgressColumn("popularity", 4, wxDATAVIEW_CELL_INERT, 80);
|
||||
|
||||
// column 5 of the view control:
|
||||
|
||||
MyCustomRenderer *cr = new MyCustomRenderer(wxDATAVIEW_CELL_ACTIVATABLE);
|
||||
wxDataViewColumn *column5 =
|
||||
new wxDataViewColumn("custom", cr, 5, -1, wxALIGN_LEFT,
|
||||
wxDATAVIEW_COL_RESIZABLE);
|
||||
view_ctrl->AppendColumn(column5);
|
||||
|
||||
// **********************************************************************************************
|
||||
common_sizer->Add(PanelSz, 0, wxEXPAND | wxALL, 1);
|
||||
*/
|
||||
|
||||
wxSizer *paneSz = new wxBoxSizer(wxVERTICAL);
|
||||
paneSz->Add(common_sizer/*m_optgroup->sizer*/, 1, wxGROW | wxEXPAND | wxBOTTOM, 2);
|
||||
win->SetSizer(paneSz);
|
||||
paneSz->SetSizeHints(win);
|
||||
}
|
||||
|
||||
ConfigOptionsGroup* get_optgroup()
|
||||
|
@ -186,9 +186,9 @@ MyObjectTreeModel::MyObjectTreeModel()
|
||||
m_objects.emplace(root3);
|
||||
auto root4 = new MyObjectTreeModelNode("Object4");
|
||||
m_objects.emplace(root4);
|
||||
root4->Append(new MyObjectTreeModelNode(root2, "SubObject1"));
|
||||
root4->Append(new MyObjectTreeModelNode(root2, "SubObject2"));
|
||||
root4->Append(new MyObjectTreeModelNode(root2, "SubObject3"));
|
||||
root4->Append(new MyObjectTreeModelNode(root4, "SubObject1"));
|
||||
root4->Append(new MyObjectTreeModelNode(root4, "SubObject2"));
|
||||
root4->Append(new MyObjectTreeModelNode(root4, "SubObject3"));
|
||||
}
|
||||
|
||||
wxString MyObjectTreeModel::GetName(const wxDataViewItem &item) const
|
||||
@ -200,7 +200,7 @@ wxString MyObjectTreeModel::GetName(const wxDataViewItem &item) const
|
||||
return node->m_name;
|
||||
}
|
||||
|
||||
wxString MyObjectTreeModel::GetCopyCnt(const wxDataViewItem &item) const
|
||||
wxString MyObjectTreeModel::GetCopy(const wxDataViewItem &item) const
|
||||
{
|
||||
MyObjectTreeModelNode *node = (MyObjectTreeModelNode*)item.GetID();
|
||||
if (!node) // happens if item.IsOk()==false
|
||||
@ -302,8 +302,8 @@ unsigned int MyObjectTreeModel::GetChildren(const wxDataViewItem &parent, wxData
|
||||
MyObjectTreeModelNode *node = (MyObjectTreeModelNode*)parent.GetID();
|
||||
if (!node)
|
||||
{
|
||||
for (auto object: m_objects)
|
||||
array.Add(wxDataViewItem((void*)object));
|
||||
for (auto object : m_objects)
|
||||
array.Add(wxDataViewItem((void*)object));
|
||||
return m_objects.size();
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,7 @@ public:
|
||||
// helper method for wxLog
|
||||
|
||||
wxString GetName(const wxDataViewItem &item) const;
|
||||
wxString GetCopyCnt(const wxDataViewItem &item) const;
|
||||
wxString GetCopy(const wxDataViewItem &item) const;
|
||||
wxString GetScale(const wxDataViewItem &item) const;
|
||||
|
||||
// helper methods to change the model
|
||||
@ -172,6 +172,10 @@ public:
|
||||
virtual bool IsContainer(const wxDataViewItem &item) const override;
|
||||
virtual unsigned int GetChildren(const wxDataViewItem &parent,
|
||||
wxDataViewItemArray &array) const override;
|
||||
|
||||
// Is the container just a header or an item with all columns
|
||||
// In our case it is an item with all columns
|
||||
virtual bool HasContainerColumns(const wxDataViewItem& WXUNUSED(item)) const override { return true; }
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user