void tlistbox::set_row_shown(const unsigned row, const bool shown) { assert(generator_); twindow *window = get_window(); assert(window); const int selected_row = get_selected_row(); bool resize_needed; { twindow::tinvalidate_layout_blocker invalidate_layout_blocker(*window); generator_->set_item_shown(row, shown); generator_->place(generator_->get_origin() , generator_->calculate_best_size()); resize_needed = !content_resize_request(); } if(resize_needed) { window->invalidate_layout(); } else { content_grid_->set_visible_area(content_visible_area()); set_dirty(); } if(selected_row != get_selected_row() && callback_value_changed_) { callback_value_changed_(this); } }
void tlistbox::resize_content( const int width_modification , const int height_modification) { DBG_GUI_L << LOG_HEADER << " current size " << content_grid()->get_size() << " width_modification " << width_modification << " height_modification " << height_modification << ".\n"; if(content_resize_request(width_modification, height_modification)) { // Calculate new size. tpoint size = content_grid()->get_size(); size.x += width_modification; size.y += height_modification; // Set new size. content_grid()->set_size(size); // Set status. need_layout_ = true; // If the content grows assume it "overwrites" the old content. if(width_modification < 0 || height_modification < 0) { set_dirty(); } DBG_GUI_L << LOG_HEADER << " succeeded.\n"; } else { DBG_GUI_L << LOG_HEADER << " failed.\n"; } }
void tlistbox::set_row_shown(const std::vector<bool>& shown) { assert(generator_); assert(shown.size() == get_item_count()); twindow *window = get_window(); assert(window); const int selected_row = get_selected_row(); bool resize_needed; { twindow::tinvalidate_layout_blocker invalidate_layout_blocker(*window); for(size_t i = 0; i < shown.size(); ++i) { generator_->set_item_shown(i, shown[i]); } generator_->place(generator_->get_origin() , generator_->calculate_best_size()); resize_needed = !content_resize_request(); } if(resize_needed) { window->invalidate_layout(); } else { content_grid_->set_visible_area(content_visible_area()); set_dirty(); } if(selected_row != get_selected_row() && callback_value_changed_) { callback_value_changed_(this); } }
void listbox::set_row_shown(const unsigned row, const bool shown) { assert(generator_); window* window = get_window(); assert(window); const int selected_row = get_selected_row(); bool resize_needed = false; // Local scope for invalidate_layout_blocker { window::invalidate_layout_blocker invalidate_layout_blocker(*window); generator_->set_item_shown(row, shown); point best_size = generator_->calculate_best_size(); generator_->place(generator_->get_origin(), {std::max(best_size.x, content_visible_area().w), best_size.y}); resize_needed = !content_resize_request(); } if(resize_needed) { window->invalidate_layout(); } else { content_grid_->set_visible_rectangle(content_visible_area()); set_is_dirty(true); } if(selected_row != get_selected_row()) { fire(event::NOTIFY_MODIFIED, *this, nullptr); } }
void tscroll_label::set_label(const t_string& label) { // Inherit. tcontrol::set_label(label); if(content_grid()) { tlabel* widget = find_widget<tlabel>(content_grid(), "_label", false, true); widget->set_label(label); content_resize_request(); } }
void scroll_label::set_label(const t_string& lbl) { // Inherit. styled_widget::set_label(lbl); if(label* widget = get_internal_label()) { widget->set_label(lbl); bool resize_needed = !content_resize_request(); if(resize_needed && get_size() != point()) { place(get_origin(), get_size()); } } }
void tscroll_label::set_label(const t_string& label) { // Inherit. tcontrol::set_label(label); if(content_grid()) { tlabel* widget = find_widget<tlabel>(content_grid(), "_label", false, true); widget->set_label(label); // We want the width to stay cosistent widget->request_reduce_width(widget->get_size().x); content_resize_request(); } }
bool tlistbox::update_content_size() { if(get_visible() == twidget::INVISIBLE) { return true; } if(get_size() == tpoint(0, 0)) { return false; } if(content_resize_request(true)) { content_grid_->set_visible_area(content_visible_area()); set_dirty(); return true; } return false; }
bool tlistbox::update_content_size() { if(get_visible() == twidget::tvisible::invisible) { return true; } if(get_size() == tpoint(0, 0)) { return false; } if(content_resize_request(true)) { content_grid_->set_visible_rectangle(content_visible_area()); set_is_dirty(true); return true; } return false; }
void listbox::set_row_shown(const boost::dynamic_bitset<>& shown) { assert(generator_); assert(shown.size() == get_item_count()); if(generator_->get_items_shown() == shown) { LOG_GUI_G << LOG_HEADER << " returning early" << std::endl; return; } window* window = get_window(); assert(window); const int selected_row = get_selected_row(); bool resize_needed = false; // Local scope for invalidate_layout_blocker { window::invalidate_layout_blocker invalidate_layout_blocker(*window); for(size_t i = 0; i < shown.size(); ++i) { generator_->set_item_shown(i, shown[i]); } point best_size = generator_->calculate_best_size(); generator_->place(generator_->get_origin(), {std::max(best_size.x, content_visible_area().w), best_size.y}); resize_needed = !content_resize_request(); } if(resize_needed) { window->invalidate_layout(); } else { content_grid_->set_visible_rectangle(content_visible_area()); set_is_dirty(true); } if(selected_row != get_selected_row()) { fire(event::NOTIFY_MODIFIED, *this, nullptr); } }
void tlistbox::set_row_shown(const boost::dynamic_bitset<>& shown) { assert(generator_); assert(shown.size() == get_item_count()); if (generator_->get_items_shown() == shown) { LOG_GUI_G << LOG_HEADER << " returning early" << std::endl; return; } twindow* window = get_window(); assert(window); const int selected_row = get_selected_row(); bool resize_needed; { twindow::tinvalidate_layout_blocker invalidate_layout_blocker(*window); for(size_t i = 0; i < shown.size(); ++i) { generator_->set_item_shown(i, shown[i]); } tpoint best_size = generator_->calculate_best_size(); generator_->place(generator_->get_origin(), { std::max(best_size.x, content_visible_area().w), best_size.y }); resize_needed = !content_resize_request(); } if(resize_needed) { window->invalidate_layout(); } else { content_grid_->set_visible_rectangle(content_visible_area()); set_is_dirty(true); } if(selected_row != get_selected_row() && callback_value_changed_) { callback_value_changed_(*this); } }