The Battle for Wesnoth  1.15.1+dev
widget_helpers.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2008 - 2018 by Mark de Wever <koraq@xs4all.nl>
3  Part of the Battle for Wesnoth Project https://www.wesnoth.org/
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY.
11 
12  See the COPYING file for more details.
13 */
14 
16 
18 #include "gui/widgets/grid.hpp"
19 #include "gui/widgets/widget.hpp"
20 
21 #include <cassert>
22 
23 namespace gui2
24 {
25 void swap_grid(grid* g, grid* content_grid, widget* widget, const std::string& id)
26 {
27  assert(content_grid);
28  assert(widget);
29 
30  // Make sure the new child has same id.
31  widget->set_id(id);
32 
33  // Get the container containing the wanted widget.
34  grid* parent_grid = nullptr;
35  if(g) {
36  parent_grid = find_widget<grid>(g, id, false, false);
37  }
38 
39  if(!parent_grid) {
40  parent_grid = find_widget<grid>(content_grid, id, true, false);
41  }
42 
43  parent_grid = dynamic_cast<grid*>(parent_grid->parent());
44  assert(parent_grid);
45 
46  // Replace the child.
47  auto old = parent_grid->swap_child(id, widget, false);
48  assert(old);
49 }
50 }
Base class for all widgets.
Definition: widget.hpp:47
void swap_grid(grid *g, grid *content_grid, widget *widget, const std::string &id)
Swaps an item in a grid for another one.
Generic file dialog.
Definition: field-fwd.hpp:22
Base container class.
Definition: grid.hpp:30
double g
Definition: astarsearch.cpp:64
void set_id(const std::string &id)
Definition: widget.cpp:95