Advertisement
Vultraz

Untitled

Sep 4th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. template<typename W>
  2. void bind_status_label(twindow& window, const std::string& id, std::function<std::string(W&)>* value_getter = nullptr)
  3. {
  4.     W& source = find_widget<W>(&window, id, false);
  5.     tcontrol& label = find_widget<tlabel>(&window, id + "_label", false);
  6.  
  7.     const auto update_label = [&]() {
  8.         //const std::string value = value_getter ? value_getter(source) : source.get_value();
  9.         std::string value;
  10.  
  11.         if(value_getter) {
  12.             value = value_getter(source);
  13.         } else {
  14.             value = std::to_string(source.get_value());
  15.         }
  16.  
  17.         label.set_label(value);
  18.     };
  19.  
  20.     source.connect_signal<event::NOTIFY_MODIFIED>(std::bind(update_label));
  21.  
  22.     update_label();
  23. }
  24.  
  25.  
  26.     gui2::bind_status_label<tslider>(window, "players");
  27.     gui2::bind_status_label<tslider>(window, "width");
  28.     gui2::bind_status_label<tslider>(window, "height");
  29.     gui2::bind_status_label<tslider>(window, "villages", [](tslider& s) { return formatter() << s.get_value << _("/1000 tiles"); });
  30.     gui2::bind_status_label<tslider>(window, "castle_size");
  31.     gui2::bind_status_label<tslider>(window, "landform", [](tslider& s) { return landform_label(s); });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement