void styled_widget::update_canvas() { const int max_width = get_text_maximum_width(); const int max_height = get_text_maximum_height(); // set label in canvases for(auto & canvas : canvas_) { canvas.set_variable("text", variant(label_)); canvas.set_variable("text_markup", variant(use_markup_)); canvas.set_variable("text_link_aware", variant(get_link_aware())); // Possible TODO: Consider making a formula_callable for colours color_t link_color = get_link_color(); std::vector<variant> link_color_as_list{variant(link_color.r), variant(link_color.g), variant(link_color.b), variant(link_color.a)}; canvas.set_variable("text_link_color", variant(&link_color_as_list)); canvas.set_variable("text_alignment", variant(encode_text_alignment(text_alignment_))); canvas.set_variable("text_maximum_width", variant(max_width)); canvas.set_variable("text_maximum_height", variant(max_height)); canvas.set_variable("text_wrap_mode", variant(can_wrap() ? PANGO_ELLIPSIZE_NONE : PANGO_ELLIPSIZE_END)); canvas.set_variable("text_characters_per_line", variant(get_characters_per_line())); } }
void tcontrol::calculate_integrate() { if (!text_editable_) { return; } if (integrate_) { delete integrate_; } int max = get_text_maximum_width(); if (max > 0) { // before place, w_ = 0. it indicate not ready. integrate_ = new tintegrate(label_, get_text_maximum_width(), -1, config()->text_font_size, font::BLACK_COLOR, text_editable_); if (!locator_.empty()) { integrate_->fill_locator_rect(locator_, true); } } }
void ttext_box::place(const tpoint& origin, const tpoint& size) { // Inherited. tcontrol::place(origin, size); set_maximum_width(get_text_maximum_width()); set_maximum_height(get_text_maximum_height()); update_offsets(); }
void ttext_box::update_canvas() { /***** Gather the info *****/ // Set the cursor info. const unsigned start = get_selection_start(); const int length = get_selection_length(); set_maximum_length(max_input_length_); PangoEllipsizeMode ellipse_mode = PANGO_ELLIPSIZE_NONE; if(!can_wrap()) { if((start + length) > (get_length() / 2)) { ellipse_mode = PANGO_ELLIPSIZE_START; } else { ellipse_mode = PANGO_ELLIPSIZE_END; } } set_ellipse_mode(ellipse_mode); // Set the selection info unsigned start_offset = 0; unsigned end_offset = 0; if(length == 0) { // No nothing. } else if(length > 0) { start_offset = get_cursor_position(start).x; end_offset = get_cursor_position(start + length).x; } else { start_offset = get_cursor_position(start + length).x; end_offset = get_cursor_position(start).x; } /***** Set in all canvases *****/ const int max_width = get_text_maximum_width(); const int max_height = get_text_maximum_height(); for(auto & tmp : canvas()) { tmp.set_variable("text", variant(get_value())); tmp.set_variable("text_x_offset", variant(text_x_offset_)); tmp.set_variable("text_y_offset", variant(text_y_offset_)); tmp.set_variable("text_maximum_width", variant(max_width)); tmp.set_variable("text_maximum_height", variant(max_height)); tmp.set_variable("cursor_offset", variant(get_cursor_position(start + length).x)); tmp.set_variable("selection_offset", variant(start_offset)); tmp.set_variable("selection_width", variant(end_offset - start_offset)); tmp.set_variable("text_wrap_mode", variant(ellipse_mode)); } }
void tcontrol::update_canvas() { const int max_width = get_text_maximum_width(); const int max_height = get_text_maximum_height(); // set label in canvases for(auto & canvas : canvas_) { canvas.set_variable("text", variant(label_)); canvas.set_variable("text_markup", variant(use_markup_)); canvas.set_variable("text_link_aware", variant(get_link_aware())); canvas.set_variable("text_link_color", variant(get_link_color())); canvas.set_variable("text_alignment", variant(encode_text_alignment(text_alignment_))); canvas.set_variable("text_maximum_width", variant(max_width)); canvas.set_variable("text_maximum_height", variant(max_height)); canvas.set_variable("text_wrap_mode", variant(can_wrap() ? PANGO_ELLIPSIZE_NONE : PANGO_ELLIPSIZE_END)); canvas.set_variable("text_characters_per_line", variant(get_characters_per_line())); } }