BrushPalettePanel::BrushPalettePanel(wxWindow* parent, const TilesetContainer& tilesets, TilesetCategoryType category, wxWindowID id) : PalettePanel(parent, id), palette_type(category), choicebook(nullptr), size_panel(nullptr) { wxSizer* topsizer = newd wxBoxSizer(wxVERTICAL); // Create the tileset panel wxSizer* ts_sizer = newd wxStaticBoxSizer(wxVERTICAL, this, wxT("Tileset")); wxChoicebook* tmp_choicebook = newd wxChoicebook(this, wxID_ANY, wxDefaultPosition, wxSize(180,250)); ts_sizer->Add(tmp_choicebook, 1, wxEXPAND); topsizer->Add(ts_sizer, 1, wxEXPAND); for(TilesetContainer::const_iterator iter = tilesets.begin(); iter != tilesets.end(); ++iter) { const TilesetCategory* tcg = iter->second->getCategory(category); if(tcg && tcg->size() > 0) { BrushPanel* panel = newd BrushPanel(tmp_choicebook); panel->AssignTileset(tcg); tmp_choicebook->AddPage(panel, wxstr(iter->second->name)); } } SetSizerAndFit(topsizer); choicebook = tmp_choicebook; }
void BrushPalettePanel::SelectFirstBrush() { if(!choicebook) return; wxWindow* page = choicebook->GetCurrentPage(); BrushPanel* panel = dynamic_cast<BrushPanel*>(page); panel->SelectFirstBrush(); }
void BrushPalettePanel::OnSwitchingPage(wxChoicebookEvent& event) { event.Skip(); if(!choicebook) { return; } BrushPanel* old_panel = dynamic_cast<BrushPanel*>(choicebook->GetCurrentPage()); if(old_panel) { old_panel->OnSwitchOut(); for(ToolBarList::iterator iter = tool_bars.begin(); iter != tool_bars.end(); ++iter) { Brush* tmp = (*iter)->GetSelectedBrush(); if(tmp) { remembered_brushes[old_panel] = tmp; } } } wxWindow* page = choicebook->GetPage(event.GetSelection()); BrushPanel* panel = dynamic_cast<BrushPanel*>(page); if(panel) { panel->OnSwitchIn(); for(ToolBarList::iterator iter = tool_bars.begin(); iter != tool_bars.end(); ++iter) { (*iter)->SelectBrush(remembered_brushes[panel]); } } }
void BrushPalettePanel::SetListType(wxString ltype) { if(!choicebook) return; for(size_t iz = 0; iz < choicebook->GetPageCount(); ++iz) { BrushPanel* panel = dynamic_cast<BrushPanel*>(choicebook->GetPage(iz)); panel->SetListType(ltype); } }
void BrushPalettePanel::LoadAllContents() { for(size_t iz = 0; iz < choicebook->GetPageCount(); ++iz) { BrushPanel* panel = dynamic_cast<BrushPanel*>(choicebook->GetPage(iz)); panel->LoadContents(); } PalettePanel::LoadAllContents(); }
void BrushPalettePanel::LoadCurrentContents() { wxWindow* page = choicebook->GetCurrentPage(); BrushPanel* panel = dynamic_cast<BrushPanel*>(page); if(panel) { panel->OnSwitchIn(); } PalettePanel::LoadCurrentContents(); }
Brush* BrushPalettePanel::GetSelectedBrush() const { if(!choicebook) return nullptr; wxWindow* page = choicebook->GetCurrentPage(); BrushPanel* panel = dynamic_cast<BrushPanel*>(page); Brush* res = nullptr; if(panel) { for(ToolBarList::const_iterator iter = tool_bars.begin(); iter != tool_bars.end(); ++iter) { res = (*iter)->GetSelectedBrush(); if(res) return res; } res = panel->GetSelectedBrush(); } return res; }
bool BrushPalettePanel::SelectBrush(const Brush* whatbrush) { if(!choicebook) { return false; } BrushPanel* panel = dynamic_cast<BrushPanel*>(choicebook->GetCurrentPage()); if(!panel) { return false; } for(PalettePanel* toolBar : tool_bars) { if(toolBar->SelectBrush(whatbrush)) { panel->SelectBrush(nullptr); return true; } } if(panel->SelectBrush(whatbrush)) { for(PalettePanel* toolBar : tool_bars) { toolBar->SelectBrush(nullptr); } return true; } for(size_t iz = 0; iz < choicebook->GetPageCount(); ++iz) { if((int)iz == choicebook->GetSelection()) { continue; } panel = dynamic_cast<BrushPanel*>(choicebook->GetPage(iz)); if(panel && panel->SelectBrush(whatbrush)) { choicebook->ChangeSelection(iz); for(PalettePanel* toolBar : tool_bars) { toolBar->SelectBrush(nullptr); } return true; } } return false; }